r4619 - in branches/nexuiz-2.0: . Docs Docs/server data data/env/blackbox data/env/desert data/env/green_dark data/env/green_storm data/env/strale_grey data/env/stralenex5 data/env/stralenex8 data/gfx data/gfx/menu/default data/gfx/menu/silver data/gfx/menu/wickedblack data/gfx/menu/wickedblue data/gfx/menu/wickedgreen data/gfx/menu/wickedred data/gfx/menu/wickedwhite data/gfx/menu/wickedyellow data/maps data/models data/models/mapobjects/morphed_tele data/models/sprites data/particles data/qcsrc/client data/qcsrc/common data/qcsrc/menu data/qcsrc/menu/nexuiz data/qcsrc/server data/qcsrc/server/tturrets/include data/qcsrc/server/tturrets/system data/qcsrc/server/tturrets/units data/scripts data/sound data/textures data/textures/Reaptxt data/textures/cmp1-dm8 data/textures/e7 data/textures/e8 data/textures/eX data/textures/evil1_floors data/textures/evil1_grates data/textures/evil1_metals data/textures/evil1_misc data/textures/evil1_trims data/textures/evil1_walls data/textures/evil1_woods data/textures/evil2_basefloor data/textures/evil2_basemetal data/textures/evil2_basewall data/textures/evil3_floors data/textures/evil3_metals data/textures/evil3_misc data/textures/evil3_roofs data/textures/evil3_support data/textures/evil3_walls data/textures/evil4_d_techwalls data/textures/evil4_metals data/textures/evil4_techwalls data/textures/evil4_walls data/textures/evil5_metal data/textures/evil6_floors data/textures/evil6_support data/textures/evil6_walls data/textures/evil8_base data/textures/evil8_floor data/textures/evil8_fx data/textures/evil8_lights data/textures/evil8_trim data/textures/evil8_wall data/textures/evil_trim data/textures/final_rage data/textures/harlequin_sky/env data/textures/kaznexctf2 data/textures/liquids data/textures/morphed data/textures/rustymetal_tex data/textures/savdm6ish data/textures/straledm6 data/textures/stralenex1 data/textures/strength data/textures/terrain_data data/textures/terrain_dotproduct2 data/textures/terrain_dotproduct2projected data/textures/tznex01 data/textures/water misc misc/gtkradiant

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Oct 3 14:32:31 EDT 2008


Author: div0
Date: 2008-10-03 14:32:25 -0400 (Fri, 03 Oct 2008)
New Revision: 4619

Added:
   branches/nexuiz-2.0/data/ctfscoring-ai.cfg
   branches/nexuiz-2.0/data/ctfscoring-alien.cfg
   branches/nexuiz-2.0/data/ctfscoring-alpha.cfg
   branches/nexuiz-2.0/data/ctfscoring-nex242.cfg
   branches/nexuiz-2.0/data/ctfscoring-z.cfg
   branches/nexuiz-2.0/data/cvars.txt
   branches/nexuiz-2.0/data/cvars.txt.pl
   branches/nexuiz-2.0/data/gfx/aggressor_mini.tga
   branches/nexuiz-2.0/data/gfx/aneurysm_mini.tga
   branches/nexuiz-2.0/data/gfx/basementctf_mini.tga
   branches/nexuiz-2.0/data/gfx/bleach_mini.tga
   branches/nexuiz-2.0/data/gfx/bloodprison_mini.tga
   branches/nexuiz-2.0/data/gfx/bloodprisonctf_mini.tga
   branches/nexuiz-2.0/data/gfx/bluesky_mini.tga
   branches/nexuiz-2.0/data/gfx/dieselpower_mini.tga
   branches/nexuiz-2.0/data/gfx/dismal_mini.tga
   branches/nexuiz-2.0/data/gfx/final_rage_mini.tga
   branches/nexuiz-2.0/data/gfx/ons-reborn_mini.tga
   branches/nexuiz-2.0/data/gfx/reslimed_mini.tga
   branches/nexuiz-2.0/data/gfx/runningman_1on1remix_mini.tga
   branches/nexuiz-2.0/data/gfx/runningman_mini.tga
   branches/nexuiz-2.0/data/gfx/runningmanctf_mini.tga
   branches/nexuiz-2.0/data/gfx/silvercity_mini.tga
   branches/nexuiz-2.0/data/gfx/soylent_mini.tga
   branches/nexuiz-2.0/data/gfx/stormkeep_mini.tga
   branches/nexuiz-2.0/data/gfx/strength_mini.tga
   branches/nexuiz-2.0/data/gfx/teamradar_icon_1.tga
   branches/nexuiz-2.0/data/gfx/teamradar_icon_2.tga
   branches/nexuiz-2.0/data/gfx/teamradar_ping.tga
   branches/nexuiz-2.0/data/gfx/toxic_mini.tga
   branches/nexuiz-2.0/data/gfx/warfare_mini.tga
   branches/nexuiz-2.0/data/maps/aggressor/
   branches/nexuiz-2.0/data/maps/aneurysm/
   branches/nexuiz-2.0/data/maps/basement/
   branches/nexuiz-2.0/data/maps/basementctf/
   branches/nexuiz-2.0/data/maps/bleach/
   branches/nexuiz-2.0/data/maps/bloodprison/
   branches/nexuiz-2.0/data/maps/bloodprisonctf/
   branches/nexuiz-2.0/data/maps/bluesky/
   branches/nexuiz-2.0/data/maps/darkzone/
   branches/nexuiz-2.0/data/maps/dieselpower/
   branches/nexuiz-2.0/data/maps/dismal/
   branches/nexuiz-2.0/data/maps/downer/
   branches/nexuiz-2.0/data/maps/evilspace/
   branches/nexuiz-2.0/data/maps/farewell/
   branches/nexuiz-2.0/data/maps/final_rage/
   branches/nexuiz-2.0/data/maps/ons-reborn/
   branches/nexuiz-2.0/data/maps/ons-reborn_mini.tga
   branches/nexuiz-2.0/data/maps/reslimed/
   branches/nexuiz-2.0/data/maps/ruiner/
   branches/nexuiz-2.0/data/maps/runningman/
   branches/nexuiz-2.0/data/maps/runningman_1on1remix/
   branches/nexuiz-2.0/data/maps/runningmanctf/
   branches/nexuiz-2.0/data/maps/silvercity/
   branches/nexuiz-2.0/data/maps/skyway/
   branches/nexuiz-2.0/data/maps/slimepit/
   branches/nexuiz-2.0/data/maps/soylent/
   branches/nexuiz-2.0/data/maps/starship/
   branches/nexuiz-2.0/data/maps/stormkeep/
   branches/nexuiz-2.0/data/maps/strength/
   branches/nexuiz-2.0/data/maps/toxic/
   branches/nexuiz-2.0/data/maps/warfare/
   branches/nexuiz-2.0/data/models/sprites/bluebase.tga
   branches/nexuiz-2.0/data/models/sprites/danger.tga
   branches/nexuiz-2.0/data/models/sprites/flagcarrier.tga
   branches/nexuiz-2.0/data/models/sprites/helpme.tga
   branches/nexuiz-2.0/data/models/sprites/here.tga
   branches/nexuiz-2.0/data/models/sprites/key-dropped.tga
   branches/nexuiz-2.0/data/models/sprites/keycarrier-blue.tga
   branches/nexuiz-2.0/data/models/sprites/keycarrier-finish.tga
   branches/nexuiz-2.0/data/models/sprites/keycarrier-friend.tga
   branches/nexuiz-2.0/data/models/sprites/keycarrier-pink.tga
   branches/nexuiz-2.0/data/models/sprites/keycarrier-red.tga
   branches/nexuiz-2.0/data/models/sprites/keycarrier-yellow.tga
   branches/nexuiz-2.0/data/models/sprites/ons-cp-atck-blue.tga
   branches/nexuiz-2.0/data/models/sprites/ons-cp-atck-neut.tga
   branches/nexuiz-2.0/data/models/sprites/ons-cp-atck-red.tga
   branches/nexuiz-2.0/data/models/sprites/ons-cp-blue.tga
   branches/nexuiz-2.0/data/models/sprites/ons-cp-dfnd-blue.tga
   branches/nexuiz-2.0/data/models/sprites/ons-cp-dfnd-red.tga
   branches/nexuiz-2.0/data/models/sprites/ons-cp-neut.tga
   branches/nexuiz-2.0/data/models/sprites/ons-cp-red.tga
   branches/nexuiz-2.0/data/models/sprites/ons-gen-blue.tga
   branches/nexuiz-2.0/data/models/sprites/ons-gen-red.tga
   branches/nexuiz-2.0/data/models/sprites/ons-gen-shielded.tga
   branches/nexuiz-2.0/data/models/sprites/race-checkpoint.tga
   branches/nexuiz-2.0/data/models/sprites/race-finish.tga
   branches/nexuiz-2.0/data/models/sprites/redbase.tga
   branches/nexuiz-2.0/data/models/sprites/waypoint.tga
   branches/nexuiz-2.0/data/qcsrc/client/interpolate.qc
   branches/nexuiz-2.0/data/qcsrc/client/interpolate.qh
   branches/nexuiz-2.0/data/qcsrc/client/teamradar.qc
   branches/nexuiz-2.0/data/qcsrc/client/teamradar.qh
   branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qc
   branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qh
   branches/nexuiz-2.0/data/sound/porto/
Removed:
   branches/nexuiz-2.0/data/game_reset.cfg
   branches/nexuiz-2.0/data/gfx/ons-reborn_mini.tga
   branches/nexuiz-2.0/data/maps/ons-reborn.info
   branches/nexuiz-2.0/data/models/grass02.MD3
   branches/nexuiz-2.0/data/models/grass03.MD3
   branches/nexuiz-2.0/data/models/mtree01.MD3
   branches/nexuiz-2.0/data/models/mtree02.MD3
   branches/nexuiz-2.0/data/models/mtree03.MD3
Modified:
   branches/nexuiz-2.0/.patchsets
   branches/nexuiz-2.0/Docs/mapping.txt
   branches/nexuiz-2.0/Docs/server/server.cfg
   branches/nexuiz-2.0/data/
   branches/nexuiz-2.0/data/defaultNexuiz.cfg
   branches/nexuiz-2.0/data/effectinfo.txt
   branches/nexuiz-2.0/data/env/blackbox/blackbox_bk.jpg
   branches/nexuiz-2.0/data/env/blackbox/blackbox_dn.jpg
   branches/nexuiz-2.0/data/env/blackbox/blackbox_ft.jpg
   branches/nexuiz-2.0/data/env/blackbox/blackbox_lf.jpg
   branches/nexuiz-2.0/data/env/blackbox/blackbox_rt.jpg
   branches/nexuiz-2.0/data/env/blackbox/blackbox_up.jpg
   branches/nexuiz-2.0/data/env/desert/desert_bk.jpg
   branches/nexuiz-2.0/data/env/desert/desert_dn.jpg
   branches/nexuiz-2.0/data/env/desert/desert_ft.jpg
   branches/nexuiz-2.0/data/env/desert/desert_lf.jpg
   branches/nexuiz-2.0/data/env/desert/desert_rt.jpg
   branches/nexuiz-2.0/data/env/desert/desert_up.jpg
   branches/nexuiz-2.0/data/env/green_dark/green_dark_bk.jpg
   branches/nexuiz-2.0/data/env/green_dark/green_dark_dn.jpg
   branches/nexuiz-2.0/data/env/green_dark/green_dark_ft.jpg
   branches/nexuiz-2.0/data/env/green_dark/green_dark_lf.jpg
   branches/nexuiz-2.0/data/env/green_dark/green_dark_rt.jpg
   branches/nexuiz-2.0/data/env/green_dark/green_dark_up.jpg
   branches/nexuiz-2.0/data/env/green_storm/green_storm_bk.jpg
   branches/nexuiz-2.0/data/env/green_storm/green_storm_dn.jpg
   branches/nexuiz-2.0/data/env/green_storm/green_storm_ft.jpg
   branches/nexuiz-2.0/data/env/green_storm/green_storm_lf.jpg
   branches/nexuiz-2.0/data/env/green_storm/green_storm_rt.jpg
   branches/nexuiz-2.0/data/env/green_storm/green_storm_up.jpg
   branches/nexuiz-2.0/data/env/strale_grey/ygrey_bk.jpg
   branches/nexuiz-2.0/data/env/strale_grey/ygrey_dn.jpg
   branches/nexuiz-2.0/data/env/strale_grey/ygrey_ft.jpg
   branches/nexuiz-2.0/data/env/strale_grey/ygrey_lf.jpg
   branches/nexuiz-2.0/data/env/strale_grey/ygrey_rt.jpg
   branches/nexuiz-2.0/data/env/strale_grey/ygrey_up.jpg
   branches/nexuiz-2.0/data/env/stralenex5/greennebula_bk.jpg
   branches/nexuiz-2.0/data/env/stralenex5/greennebula_dn.jpg
   branches/nexuiz-2.0/data/env/stralenex5/greennebula_ft.jpg
   branches/nexuiz-2.0/data/env/stralenex5/greennebula_lf.jpg
   branches/nexuiz-2.0/data/env/stralenex5/greennebula_rt.jpg
   branches/nexuiz-2.0/data/env/stralenex5/greennebula_up.jpg
   branches/nexuiz-2.0/data/env/stralenex5/stralenex5_bk.jpg
   branches/nexuiz-2.0/data/env/stralenex5/stralenex5_dn.jpg
   branches/nexuiz-2.0/data/env/stralenex5/stralenex5_ft.jpg
   branches/nexuiz-2.0/data/env/stralenex5/stralenex5_lf.jpg
   branches/nexuiz-2.0/data/env/stralenex5/stralenex5_rt.jpg
   branches/nexuiz-2.0/data/env/stralenex5/stralenex5_up.jpg
   branches/nexuiz-2.0/data/env/stralenex8/darkblue_bk.jpg
   branches/nexuiz-2.0/data/env/stralenex8/darkblue_dn.jpg
   branches/nexuiz-2.0/data/env/stralenex8/darkblue_ft.jpg
   branches/nexuiz-2.0/data/env/stralenex8/darkblue_lf.jpg
   branches/nexuiz-2.0/data/env/stralenex8/darkblue_rt.jpg
   branches/nexuiz-2.0/data/env/stralenex8/darkblue_up.jpg
   branches/nexuiz-2.0/data/gfx/conback.tga
   branches/nexuiz-2.0/data/gfx/crosshair10.tga
   branches/nexuiz-2.0/data/gfx/crosshair9.tga
   branches/nexuiz-2.0/data/gfx/m_nomap.jpg
   branches/nexuiz-2.0/data/gfx/menu/default/background.tga
   branches/nexuiz-2.0/data/gfx/menu/silver/background.tga
   branches/nexuiz-2.0/data/gfx/menu/wickedblack/background_ingame.tga
   branches/nexuiz-2.0/data/gfx/menu/wickedblue/background.tga
   branches/nexuiz-2.0/data/gfx/menu/wickedblue/background_ingame.tga
   branches/nexuiz-2.0/data/gfx/menu/wickedgreen/background_ingame.tga
   branches/nexuiz-2.0/data/gfx/menu/wickedred/background_ingame.tga
   branches/nexuiz-2.0/data/gfx/menu/wickedwhite/background.tga
   branches/nexuiz-2.0/data/gfx/menu/wickedwhite/background_ingame.tga
   branches/nexuiz-2.0/data/gfx/menu/wickedyellow/background.tga
   branches/nexuiz-2.0/data/gfx/menu/wickedyellow/background_ingame.tga
   branches/nexuiz-2.0/data/maps/aggressor.bsp
   branches/nexuiz-2.0/data/maps/aggressor.jpg
   branches/nexuiz-2.0/data/maps/aggressor.map
   branches/nexuiz-2.0/data/maps/aneurysm.bsp
   branches/nexuiz-2.0/data/maps/basement.bsp
   branches/nexuiz-2.0/data/maps/basement.jpg
   branches/nexuiz-2.0/data/maps/basementctf.bsp
   branches/nexuiz-2.0/data/maps/bleach.bsp
   branches/nexuiz-2.0/data/maps/bleach.jpg
   branches/nexuiz-2.0/data/maps/bloodprison.bsp
   branches/nexuiz-2.0/data/maps/bloodprison.jpg
   branches/nexuiz-2.0/data/maps/bloodprisonctf.bsp
   branches/nexuiz-2.0/data/maps/bluesky.bsp
   branches/nexuiz-2.0/data/maps/bluesky.jpg
   branches/nexuiz-2.0/data/maps/darkzone.bsp
   branches/nexuiz-2.0/data/maps/dieselpower.bsp
   branches/nexuiz-2.0/data/maps/dieselpower.jpg
   branches/nexuiz-2.0/data/maps/dismal.bsp
   branches/nexuiz-2.0/data/maps/dismal.jpg
   branches/nexuiz-2.0/data/maps/downer.bsp
   branches/nexuiz-2.0/data/maps/downer.jpg
   branches/nexuiz-2.0/data/maps/evilspace.bsp
   branches/nexuiz-2.0/data/maps/evilspace.jpg
   branches/nexuiz-2.0/data/maps/farewell.bsp
   branches/nexuiz-2.0/data/maps/farewell.jpg
   branches/nexuiz-2.0/data/maps/final_rage.bsp
   branches/nexuiz-2.0/data/maps/final_rage.jpg
   branches/nexuiz-2.0/data/maps/ons-reborn.bsp
   branches/nexuiz-2.0/data/maps/ons-reborn.jpg
   branches/nexuiz-2.0/data/maps/ons-reborn.map
   branches/nexuiz-2.0/data/maps/ons-reborn.mapinfo
   branches/nexuiz-2.0/data/maps/reslimed.bsp
   branches/nexuiz-2.0/data/maps/reslimed.jpg
   branches/nexuiz-2.0/data/maps/ruiner.bsp
   branches/nexuiz-2.0/data/maps/ruiner.jpg
   branches/nexuiz-2.0/data/maps/runningman.bsp
   branches/nexuiz-2.0/data/maps/runningman.jpg
   branches/nexuiz-2.0/data/maps/runningman_1on1remix.bsp
   branches/nexuiz-2.0/data/maps/runningman_1on1remix.jpg
   branches/nexuiz-2.0/data/maps/runningmanctf.bsp
   branches/nexuiz-2.0/data/maps/silvercity.bsp
   branches/nexuiz-2.0/data/maps/silvercity.jpg
   branches/nexuiz-2.0/data/maps/skyway.bsp
   branches/nexuiz-2.0/data/maps/slimepit.bsp
   branches/nexuiz-2.0/data/maps/soylent.bsp
   branches/nexuiz-2.0/data/maps/soylent.jpg
   branches/nexuiz-2.0/data/maps/starship.bsp
   branches/nexuiz-2.0/data/maps/starship.jpg
   branches/nexuiz-2.0/data/maps/stormkeep.bsp
   branches/nexuiz-2.0/data/maps/strength.bsp
   branches/nexuiz-2.0/data/maps/strength.jpg
   branches/nexuiz-2.0/data/maps/toxic.bsp
   branches/nexuiz-2.0/data/maps/toxic.jpg
   branches/nexuiz-2.0/data/maps/warfare.bsp
   branches/nexuiz-2.0/data/maps/warfare.jpg
   branches/nexuiz-2.0/data/models/mapobjects/morphed_tele/teledevice_bump.tga
   branches/nexuiz-2.0/data/models/mapobjects/morphed_tele/teledevice_gloss.tga
   branches/nexuiz-2.0/data/models/mapobjects/morphed_tele/telepad_bump.tga
   branches/nexuiz-2.0/data/nexuiz-credits.txt
   branches/nexuiz-2.0/data/particles/particlefont.tga
   branches/nexuiz-2.0/data/qcsrc/client/Defs.qc
   branches/nexuiz-2.0/data/qcsrc/client/Main.qc
   branches/nexuiz-2.0/data/qcsrc/client/View.qc
   branches/nexuiz-2.0/data/qcsrc/client/csqc_builtins.qc
   branches/nexuiz-2.0/data/qcsrc/client/hook.qc
   branches/nexuiz-2.0/data/qcsrc/client/laser.qc
   branches/nexuiz-2.0/data/qcsrc/client/main.qh
   branches/nexuiz-2.0/data/qcsrc/client/mapvoting.qc
   branches/nexuiz-2.0/data/qcsrc/client/miscfunctions.qc
   branches/nexuiz-2.0/data/qcsrc/client/particles.qc
   branches/nexuiz-2.0/data/qcsrc/client/progs.src
   branches/nexuiz-2.0/data/qcsrc/client/sbar.qc
   branches/nexuiz-2.0/data/qcsrc/common/constants.qh
   branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qc
   branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qh
   branches/nexuiz-2.0/data/qcsrc/common/util.qc
   branches/nexuiz-2.0/data/qcsrc/common/util.qh
   branches/nexuiz-2.0/data/qcsrc/menu/mbuiltin.qh
   branches/nexuiz-2.0/data/qcsrc/menu/menu.qc
   branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mutators.c
   branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c
   branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup.c
   branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_settings_misc.c
   branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/inputbox.c
   branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/serverlist.c
   branches/nexuiz-2.0/data/qcsrc/menu/progs.src
   branches/nexuiz-2.0/data/qcsrc/menu/skin-customizables.inc
   branches/nexuiz-2.0/data/qcsrc/server/arena.qc
   branches/nexuiz-2.0/data/qcsrc/server/assault.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_physics.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc
   branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc
   branches/nexuiz-2.0/data/qcsrc/server/constants.qh
   branches/nexuiz-2.0/data/qcsrc/server/ctf.qc
   branches/nexuiz-2.0/data/qcsrc/server/defs.qh
   branches/nexuiz-2.0/data/qcsrc/server/ent_cs.qc
   branches/nexuiz-2.0/data/qcsrc/server/extensions.qh
   branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc
   branches/nexuiz-2.0/data/qcsrc/server/g_hook.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/g_world.qc
   branches/nexuiz-2.0/data/qcsrc/server/gamecommand.qc
   branches/nexuiz-2.0/data/qcsrc/server/ipban.qc
   branches/nexuiz-2.0/data/qcsrc/server/ipban.qh
   branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qc
   branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qh
   branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
   branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.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/race.qh
   branches/nexuiz-2.0/data/qcsrc/server/scores.qc
   branches/nexuiz-2.0/data/qcsrc/server/scores_rules.qc
   branches/nexuiz-2.0/data/qcsrc/server/sv_main.qc
   branches/nexuiz-2.0/data/qcsrc/server/t_items.qc
   branches/nexuiz-2.0/data/qcsrc/server/t_teleporters.qc
   branches/nexuiz-2.0/data/qcsrc/server/teamplay.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_aimprocs.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_damage.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_main.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_misc.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_scoreprocs.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_flac.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_fusionreactor.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_hk.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_targettrigger.qc
   branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_tessla.qc
   branches/nexuiz-2.0/data/qcsrc/server/vote.qc
   branches/nexuiz-2.0/data/qcsrc/server/vote.qh
   branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_minstanex.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc
   branches/nexuiz-2.0/data/qcsrc/server/waypointsprites.qc
   branches/nexuiz-2.0/data/scripts/entities.def
   branches/nexuiz-2.0/data/textures/50hpskin_gloss.tga
   branches/nexuiz-2.0/data/textures/Reaptxt/lud_beam.tga
   branches/nexuiz-2.0/data/textures/carni.tga
   branches/nexuiz-2.0/data/textures/carni_glow.tga
   branches/nexuiz-2.0/data/textures/carni_pants.tga
   branches/nexuiz-2.0/data/textures/carni_shirt.tga
   branches/nexuiz-2.0/data/textures/carniarmor_bump.tga
   branches/nexuiz-2.0/data/textures/carniarmor_gloss.tga
   branches/nexuiz-2.0/data/textures/carniarmor_pants.tga
   branches/nexuiz-2.0/data/textures/carniarmor_shirt.tga
   branches/nexuiz-2.0/data/textures/cellammoskin_glow.jpg
   branches/nexuiz-2.0/data/textures/cmp1-dm8/ame7jp.jpg
   branches/nexuiz-2.0/data/textures/cmp1-dm8/e8crete03.jpg
   branches/nexuiz-2.0/data/textures/cmp1-dm8/e8crete03c.jpg
   branches/nexuiz-2.0/data/textures/cmp1-dm8/e8mtltrim1.jpg
   branches/nexuiz-2.0/data/textures/crylink_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7beam01_bump.jpg
   branches/nexuiz-2.0/data/textures/e7/e7beam02_bump.jpg
   branches/nexuiz-2.0/data/textures/e7/e7bmtrim2_bump.jpg
   branches/nexuiz-2.0/data/textures/e7/e7bmtrim2_gloss.jpg
   branches/nexuiz-2.0/data/textures/e7/e7bmtrim_bump.jpg
   branches/nexuiz-2.0/data/textures/e7/e7brickfloor01_bump.jpg
   branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-1_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-2_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-3_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-4_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-5_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-6_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-7_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7bricks01_bump.jpg
   branches/nexuiz-2.0/data/textures/e7/e7brnmetal_bump.jpg
   branches/nexuiz-2.0/data/textures/e7/e7brnmetal_gloss.jpg
   branches/nexuiz-2.0/data/textures/e7/e7panelwood2_bump.jpg
   branches/nexuiz-2.0/data/textures/e7/e7panelwood_bump.jpg
   branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_bump.jpg
   branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-1_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-2_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-3_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-4_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-5_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-6_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-7_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7slight_glow.jpg
   branches/nexuiz-2.0/data/textures/e7/e7trim01_bump.jpg
   branches/nexuiz-2.0/data/textures/e7/e7trimlight_gloss.jpg
   branches/nexuiz-2.0/data/textures/e8/e8_base1broke_bump.jpg
   branches/nexuiz-2.0/data/textures/e8/e8_launchpad1_bump.tga
   branches/nexuiz-2.0/data/textures/e8/e8bolttrim_bump.jpg
   branches/nexuiz-2.0/data/textures/e8/e8clangfloor05_bump.jpg
   branches/nexuiz-2.0/data/textures/e8/e8evilspacetxt_bump.tga
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b-1_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b-2_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b-3_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b-4_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b-5_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b-6_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c-1_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c-2_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c-3_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c-4_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c-5_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c-6_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c_glow.jpg
   branches/nexuiz-2.0/data/textures/e8/e8lighttrim_bump.tga
   branches/nexuiz-2.0/data/textures/e8/e8lighttrim_glow.tga
   branches/nexuiz-2.0/data/textures/e8/e8mtltrim1b_bump.jpg
   branches/nexuiz-2.0/data/textures/e8/e8mtltrimb_bump.jpg
   branches/nexuiz-2.0/data/textures/e8/e8trimlight2_bump.jpg
   branches/nexuiz-2.0/data/textures/e8/e8trimlight_bump.jpg
   branches/nexuiz-2.0/data/textures/e8/e8warning2_bump.jpg
   branches/nexuiz-2.0/data/textures/e8/e8warning2_gloss.jpg
   branches/nexuiz-2.0/data/textures/e8/e8xgirder_small_bump.tga
   branches/nexuiz-2.0/data/textures/e8/e8yarrow_bump.tga
   branches/nexuiz-2.0/data/textures/eX/eX_cretebase_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_cretefloor_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_cretefloor_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_cretefloor_01b_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_cretewall_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_cretewall_02_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_cretewall_02_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_cretewall_03_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_cretewall_03_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_cretewall_03b_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_cretewall_03b_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_deswall_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_deswall_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_floor_grate03_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_floor_grate03_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_floor_grate_03_128_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_floor_grate_03_128_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_floor_grate_03_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_floor_grate_03_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_floor_mtl_grate_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_floor_mtl_grate_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_floor_mtl_wrn_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_floor_mtl_wrn_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_floor_simple_05_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_floor_simple_05_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_floor_simplines_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_floor_tile_03_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_floor_tile_03_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_floor_tread_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_floor_tread_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_floorpanel_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_floorpanel_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_light_u201_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_light_u201_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_lightpanel_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_metalSupp01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_metalSupp01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_metalplate_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_metalwall02_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_mtl_bigplate_04_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_mtl_bigplate_04b_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_mtl_panel_02_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_mtl_panel_02_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_mtl_panel_03_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_mtl_panel_03_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_mtl_panel_04_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_mtl_panel_04_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_q2_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_q2_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_q2_01b_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_q2_01b_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_q2_01c_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_q2_01c_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_q2_01d_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_q2_01d_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_q2_01e_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_q2_01e_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_rndfloor_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_rndfloor_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_rndfloor_02_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_rndfloor_02_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_rplates_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_rplates_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_steptop_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_steptop_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_trim_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_trim_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_trim_baseboard_02_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_trim_baseboard_02_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_trim_baseboard_03_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_trim_baseboard_03_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_trim_baseboard_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_trim_baseboard_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_trim_psimple_04_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_trim_psimple_04_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_trim_psimple_05_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_trim_psimple_05_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_trim_simple03_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_trim_simple03_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_trim_simple_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_trim_simple_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_trim_support_03_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_trim_support_03_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_trim_vert_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_trim_vert_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_wall_01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_wall_01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_wall_01b_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_wall_b01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_wall_b01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_wall_bigrib_02_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_wall_bigrib_02_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_wall_bplate_06_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_wall_bplate_06_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_wall_panel_05_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_wall_panels_08_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_wall_panels_08_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_wall_panels_08b_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_wall_panels_08b_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_wall_pipe_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_wall_pipe_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eX_wall_u207_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eX_wall_u207_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eXmetalBase01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eXmetalBase01_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eXmetalBase02_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eXmetalBase02_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eXmetalBase03_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eXmetalBase03_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eXmetalBase05Rust_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eXmetalBase05Rust_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eXmetalFloor02_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eXmetalFloor02_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eXmetal_plate01B_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eXmetal_plate01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eXmetal_plate01c_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eXmetal_plate01c_gloss.tga
   branches/nexuiz-2.0/data/textures/eX/eXmetalrib01_bump.jpg
   branches/nexuiz-2.0/data/textures/eX/eXmetalrib01_gloss.tga
   branches/nexuiz-2.0/data/textures/electroskin_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_floors/asphalt_1_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/asphalt_2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/asphalt_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/asphalt_side_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/br_tiles_blood_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/br_tiles_brkblood_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/br_tiles_broke2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/br_tiles_broke_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/br_tiles_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/carpet_drty_blood2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/carpet_drty_blood_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/carpet_drty_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/floortech1_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/floortile1_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/floortile1b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/floortile1bbrown.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/floortile1bbrown_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/floortilebig1b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/floortilebig2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/floortilebig_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/floortilebig_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/flr_grts_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/flr_grts_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/flr_grtswrn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/flr_grtswrn_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/metalflr1_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/metalflr1b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/metalflr1c_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/mtl_flooring_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/stile_cln_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/stile_drty_brk2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/stile_drty_brk_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/stile_drty_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/tile_brn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_floors/tile_brn_lite_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_grates/flr_grt_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_grates/flrgrt_h_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_grates/grt_ow_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_grates/grt_rst1_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_grates/smlgrt_rnd2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_grates/smlgrt_rnd_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_grates/smlgrt_sqr_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_grates/smllgrt_h_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_metals/de-r_mtl_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_metals/de-r_mtl_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_metals/doormtl2_cln_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/doormtl2_drty2_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/doormtl2_drty_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/doormtl2_rusty_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_cln_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_cln_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_cmbo_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_drty2_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_drty2_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_drty_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_drty_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_rusty_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_rusty_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst2_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst2_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst3_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst3_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst4_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst4_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst5_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst5_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/rmetal1_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/rmetal1b_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2b_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2b_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2c_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2c_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2d_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2d_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2e_bump.tga
   branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2e_gloss.tga
   branches/nexuiz-2.0/data/textures/evil1_misc/mtl_support_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_misc/mtl_support_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_misc/mtl_support_wrn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_misc/mtl_support_wrn_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_misc/wrn_big2b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_trims/brdmtl_rst_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_trims/brdmtl_rst_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_trims/smllwrnbrd_mr_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_trims/smllwrnbrd_mr_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_trims/trm_rivetmtlgrt_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_trims/trm_rivetmtlgrt_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_trims/trm_rivetmtlpipes_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_trims/trm_rivetmtlpipes_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/anc_wll2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/anc_wll2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/ancient3_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/ancient3_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm2wrn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm2wrn_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm_jericho_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm_jericho_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm_ow_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm_ow_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btmmtl_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btmmtl_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btmwrn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btmwrn_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_jericho_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_jericho_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_top_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_top_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/crude_2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/crude_2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/stonewall_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_walls/stonewall_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil1_woods/wood_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_woods/wood_pnl_drty_bump.jpg
   branches/nexuiz-2.0/data/textures/evil1_woods/wood_rot_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basefloor/flr_tmtl_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basefloor/flr_tmtl_drk_bld_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basefloor/flr_tmtl_drk_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basefloor/flr_tmtl_drkwrn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basemetal/mtl_rstb_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basemetal/mtl_rstb_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil2_basemetal/p_mtl_brn_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/cementwall_btm_gore_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/dirtybrick_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/dirtybrick_faded_btm_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/dirtybrick_faded_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/dirtybrick_faded_stn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/dirtybrick_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_btmwrnblah_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_chn_grt_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_fnce2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_fnce3_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_fnce4_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_fnce_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray3_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_ow_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_sec1_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_sec2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_sec3_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_sec4_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_sec5_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_grtmdl_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_grtodd2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_grtodd3_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_grtodd_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_midwrn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/t_wll_fnctrm2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/t_wll_fnctrm_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/t_wll_fnctrm_ow_bump.jpg
   branches/nexuiz-2.0/data/textures/evil2_basewall/t_wll_fnctrm_sign_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/bdirt2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/bdirt_blood_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/bdirt_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_mhole_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_big2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_big2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_big2b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_big2b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_big_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_big_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_bld_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_bld_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_bldb_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_bldb_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_crkd2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_crkd2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_crked_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_crked_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_ot2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk3_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk4_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk5_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk5_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk_mhbrk_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/woodvfloor3_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/woodvfloor3_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_floors/woodvfloor_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_pipeswll_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_pipeswll_drk_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_pipeswll_drk_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_pipeswll_drkc-b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_pipeswll_drkc-b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_pipeswll_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2-yellow_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2_wrn2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2_wrn2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2_wrn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2_wrn_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt_wrn2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt_wrn2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt_wrn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt_wrn_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtldrk0_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_metals/mtldrk1_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_misc/b_rock.jpg
   branches/nexuiz-2.0/data/textures/evil3_roofs/s_roof2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupgrt2_light_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupgrt2_light_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt3wrn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt3wrn_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt3wrnb_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt3wrnb_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt4_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt4_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt4b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt4b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt4s_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt4s_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grts_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grts_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grtwrn-d_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grtwrn-d_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grtwrn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grtwrn_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_pipes_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_pipes_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_wrn-d_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_wrn-d_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_wrn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_wrn_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn1_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn1_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty-yellow_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty-yellow_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty_grt_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty_grt_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty_pipes_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty_pipes_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drtyhfx_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drtyhfx_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drty-yellow_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drty-yellow_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drty_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drty_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drtygrt_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drtypipes_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drtypipes_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_d_techwalls/d_tech_dw2_glow.jpg
   branches/nexuiz-2.0/data/textures/evil4_d_techwalls/d_tech_dw2g_glow.jpg
   branches/nexuiz-2.0/data/textures/evil4_d_techwalls/d_tech_dwb_light_glow.jpg
   branches/nexuiz-2.0/data/textures/evil4_metals/hexametal_drk_bump.jpg
   branches/nexuiz-2.0/data/textures/evil4_metals/hexametal_drk_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_metals/mtlb_bump.jpg
   branches/nexuiz-2.0/data/textures/evil4_metals/mtlb_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_metals/mtloverlaprwll_bump.jpg
   branches/nexuiz-2.0/data/textures/evil4_metals/mtloverlaprwll_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_metals/tekwallmulti_wrnlights2_glow.jpg
   branches/nexuiz-2.0/data/textures/evil4_metals/tekwallmulti_wrnlights_glow.jpg
   branches/nexuiz-2.0/data/textures/evil4_metals/trim_wrnrivets_bump.jpg
   branches/nexuiz-2.0/data/textures/evil4_metals/trim_wrnrivets_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_techwalls/mechanical_old_bump.jpg
   branches/nexuiz-2.0/data/textures/evil4_techwalls/mechanical_old_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/d_stnwll_mossbtm_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/d_stone_fourthwll_bump.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/d_stone_fourthwll_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/d_stone_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/d_stone_halfwll_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/d_stonewll_bump.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/d_stonewll_drk2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/d_stonewll_drk3_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/d_stonewll_drk_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/d_stonewll_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/drk_brnbrick_bump.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/drk_brnbrick_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/rbrick_bttmcem_bump.jpg
   branches/nexuiz-2.0/data/textures/evil4_walls/rbrick_bttmcem_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil5_metal/rstmtl_smllpnls_bump.jpg
   branches/nexuiz-2.0/data/textures/evil5_metal/rstmtl_smllpnls_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6c_floor_b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6c_floor_b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6c_floor_bump.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6c_floor_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6c_floordented_bump.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6c_floordented_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6l_floor_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6l_stepedge_bump.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-1_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-2_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-3_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-4_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-5_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-6_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-7_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-1_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-1_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-2_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-3_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-3_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-4_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-4_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-5_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-5_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-6_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-6_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-7_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-7_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-1_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-2_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-3_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-4_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-5_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-6_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-7_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor_glow.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6tekmtlrflr_bump.jpg
   branches/nexuiz-2.0/data/textures/evil6_floors/e6tekmtlrflr_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_support/e6wallsupprt_bump.tga
   branches/nexuiz-2.0/data/textures/evil6_walls/e6cyb0rpipes_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_walls/e6girdergrate2b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_walls/e6girdergrate_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_walls/e6girdersupport_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_walls/e6gridergrtwll_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_walls/e6simpwallsupp_bump.jpg
   branches/nexuiz-2.0/data/textures/evil6_walls/e6simpwallsupp_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil6_walls/e6simpwallsupp_rst_bump.jpg
   branches/nexuiz-2.0/data/textures/evil6_walls/e6simpwallsupp_rst_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8_base1_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8_base1b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8_base1c_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8_base1c_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8base_blue_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8base_blue_norm.tga
   branches/nexuiz-2.0/data/textures/evil8_base/e8base_red_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8crete01_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8crete03_blue_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8crete03_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8crete03_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8crete03_red_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8crete_blue_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8creteold_blue_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8creteold_red_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8metal01_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8metal01_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8metal03b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8metal03c_blue_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8metal03c_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8metal03c_red_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8metal_blue_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_base/e8metal_red_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor01_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor01_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor03_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor03_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04_red_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04_red_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04warn2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04warn2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04warn2red.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04warn_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04warn_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05c_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05c_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05step_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05step_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangwarnmix_b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangwarnmix_b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangwarnmix_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangwarnmix_c_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangwarnmix_c_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8clangwarnmix_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8crete01stair1_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8crete01stair1_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8cretefloor01_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8cretefloor01b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8cretefloor01c_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8cretefloor_tile_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8spacecrete_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8warn2steplight_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_floor/e8warn2steplight_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8_jumppad02_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8_jumppad02r_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8_jumppad02w_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8beam_blue.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-1.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-1_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-2.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-2_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-3_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-4.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-4_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-5.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-5_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-6.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-6_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-1.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-1_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-2.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-2_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-3_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-4.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-4_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-5.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-5_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-6.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-6_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red-1_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red-2_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red-3_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red-4_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red-5_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red-6_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_lights/e8_rlight_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_lights/e8_rlightb2.jpg
   branches/nexuiz-2.0/data/textures/evil8_lights/e8_rlighty.jpg
   branches/nexuiz-2.0/data/textures/evil8_lights/e8_rlighty_glow.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8_btrim01_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8_btrim01_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8_btrim04b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8_btrim05_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8beam01_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8beam01b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8bolttrim_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8bolttrim_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8cretesupport_blue_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8cretesupport_red_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8mtltrim1b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8mtltrim1b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8smlltrim1_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8smlltrim1_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8smlltrim1b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8smlltrim1b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8support01b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8support01c_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8support02_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8support02b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8support02c_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8support05_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8support05_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8trimlight_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8wrntrim_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_trim/e8wrntrim_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall1_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall1_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall1b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall1b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall2_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall2_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall3_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall3_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall3b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall3b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall4_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall4_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03b_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03b_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03c_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03c_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03cc_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03cc_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03d_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03d_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03e_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03e_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03e_neu.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03f_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03f_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03g_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03g_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete_pillar_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete_pillar_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete_pillarb_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete_pillarb_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete_pillarc_bump.jpg
   branches/nexuiz-2.0/data/textures/evil8_wall/e8crete_pillarc_gloss.jpg
   branches/nexuiz-2.0/data/textures/evil_trim/trimwrn_rstmtl_bump.jpg
   branches/nexuiz-2.0/data/textures/evil_trim/trimwrn_rstmtl_gloss.jpg
   branches/nexuiz-2.0/data/textures/fbcolored_shirt.tga
   branches/nexuiz-2.0/data/textures/final_rage/drkmtl_default.jpg
   branches/nexuiz-2.0/data/textures/final_rage/drkmtl_default_bump.jpg
   branches/nexuiz-2.0/data/textures/final_rage/drkmtl_default_gloss.jpg
   branches/nexuiz-2.0/data/textures/final_rage/drkmtl_oddtrim.jpg
   branches/nexuiz-2.0/data/textures/final_rage/drkmtl_oddtrim_bump.jpg
   branches/nexuiz-2.0/data/textures/final_rage/drkmtl_oddtrim_gloss.jpg
   branches/nexuiz-2.0/data/textures/final_rage/dwtrim_grill_bump.jpg
   branches/nexuiz-2.0/data/textures/final_rage/dwtrim_grill_gloss.jpg
   branches/nexuiz-2.0/data/textures/final_rage/lamp2_bump.tga
   branches/nexuiz-2.0/data/textures/final_rage/lava.jpg
   branches/nexuiz-2.0/data/textures/final_rage/lava_glow.jpg
   branches/nexuiz-2.0/data/textures/final_rage/mtltekfloor_bump.jpg
   branches/nexuiz-2.0/data/textures/final_rage/mtltekfloor_gloss.jpg
   branches/nexuiz-2.0/data/textures/final_rage/mtltekfloor_glow.jpg
   branches/nexuiz-2.0/data/textures/final_rage/nd-lava.jpg
   branches/nexuiz-2.0/data/textures/fricka_pants.tga
   branches/nexuiz-2.0/data/textures/fricka_shirt.tga
   branches/nexuiz-2.0/data/textures/glaunch_shirt.tga
   branches/nexuiz-2.0/data/textures/grenademodelskin_glow.jpg
   branches/nexuiz-2.0/data/textures/harlequin_sky/env/nebular_bk.jpg
   branches/nexuiz-2.0/data/textures/harlequin_sky/env/nebular_dn.jpg
   branches/nexuiz-2.0/data/textures/harlequin_sky/env/nebular_ft.jpg
   branches/nexuiz-2.0/data/textures/harlequin_sky/env/nebular_lf.jpg
   branches/nexuiz-2.0/data/textures/harlequin_sky/env/nebular_rt.jpg
   branches/nexuiz-2.0/data/textures/harlequin_sky/env/nebular_up.jpg
   branches/nexuiz-2.0/data/textures/headhunter_glow.tga
   branches/nexuiz-2.0/data/textures/headhunter_shirt.tga
   branches/nexuiz-2.0/data/textures/heroine_pants.tga
   branches/nexuiz-2.0/data/textures/heroine_shirt.tga
   branches/nexuiz-2.0/data/textures/hook_gloss.tga
   branches/nexuiz-2.0/data/textures/insurrectionist_pants.tga
   branches/nexuiz-2.0/data/textures/invincible.jpg
   branches/nexuiz-2.0/data/textures/invincible_glow.jpg
   branches/nexuiz-2.0/data/textures/jumppad_bump.jpg
   branches/nexuiz-2.0/data/textures/kaznexctf2/large_blue.jpg
   branches/nexuiz-2.0/data/textures/kaznexctf2/large_blue_glow.jpg
   branches/nexuiz-2.0/data/textures/kaznexctf2/small_blue.jpg
   branches/nexuiz-2.0/data/textures/kaznexctf2/small_blue_glow.jpg
   branches/nexuiz-2.0/data/textures/laser_bump.tga
   branches/nexuiz-2.0/data/textures/laser_shirt.tga
   branches/nexuiz-2.0/data/textures/ldarl.jpg
   branches/nexuiz-2.0/data/textures/liquids/e7sfx_lava.jpg
   branches/nexuiz-2.0/data/textures/liquids/protolava_glow.jpg
   branches/nexuiz-2.0/data/textures/liquids/slime1.jpg
   branches/nexuiz-2.0/data/textures/liquids/slime2.jpg
   branches/nexuiz-2.0/data/textures/liquids/slime2_glow.jpg
   branches/nexuiz-2.0/data/textures/liquids/slime2_norm.jpg
   branches/nexuiz-2.0/data/textures/lurk_bump.tga
   branches/nexuiz-2.0/data/textures/lurk_pants.tga
   branches/nexuiz-2.0/data/textures/lurk_shirt.tga
   branches/nexuiz-2.0/data/textures/meat_gloss.tga
   branches/nexuiz-2.0/data/textures/mhskin_gloss.tga
   branches/nexuiz-2.0/data/textures/morphed/e8support02c_gloss.jpg
   branches/nexuiz-2.0/data/textures/morphed/gelslime_bright.jpg
   branches/nexuiz-2.0/data/textures/morphed/gelslime_glow.jpg
   branches/nexuiz-2.0/data/textures/mulder_pants.tga
   branches/nexuiz-2.0/data/textures/mulder_shirt.tga
   branches/nexuiz-2.0/data/textures/nexus_pants.tga
   branches/nexuiz-2.0/data/textures/nexus_shirt.tga
   branches/nexuiz-2.0/data/textures/portalgun_gloss.tga
   branches/nexuiz-2.0/data/textures/pyria_pants.tga
   branches/nexuiz-2.0/data/textures/pyria_shirt.tga
   branches/nexuiz-2.0/data/textures/quark.tga
   branches/nexuiz-2.0/data/textures/quark_pants.tga
   branches/nexuiz-2.0/data/textures/quark_shirt.tga
   branches/nexuiz-2.0/data/textures/reactor_shirt.tga
   branches/nexuiz-2.0/data/textures/rl_gloss.jpg
   branches/nexuiz-2.0/data/textures/rocketam_bump.jpg
   branches/nexuiz-2.0/data/textures/rrclip_d.jpg
   branches/nexuiz-2.0/data/textures/rrclip_d_bump.jpg
   branches/nexuiz-2.0/data/textures/rrfx_d.jpg
   branches/nexuiz-2.0/data/textures/rrock_d.jpg
   branches/nexuiz-2.0/data/textures/rustymetal_tex/wall01_gloss.jpg
   branches/nexuiz-2.0/data/textures/rustymetal_tex/wall02_gloss.jpg
   branches/nexuiz-2.0/data/textures/rustymetal_tex/wall03_gloss.jpg
   branches/nexuiz-2.0/data/textures/rustymetal_tex/wall04_gloss.jpg
   branches/nexuiz-2.0/data/textures/rustymetal_tex/wall05_gloss.jpg
   branches/nexuiz-2.0/data/textures/saskin_gloss.tga
   branches/nexuiz-2.0/data/textures/savdm6ish/floor01_5_bump.jpg
   branches/nexuiz-2.0/data/textures/savdm6ish/floor01_5_gloss.jpg
   branches/nexuiz-2.0/data/textures/savdm6ish/mmetal_1_6_bump.jpg
   branches/nexuiz-2.0/data/textures/savdm6ish/mmetal_1_6_gloss.jpg
   branches/nexuiz-2.0/data/textures/savdm6ish/sfloor1_2_bump.jpg
   branches/nexuiz-2.0/data/textures/savdm6ish/sfloor1_2_gloss.jpg
   branches/nexuiz-2.0/data/textures/savdm6ish/wall14_5_bump.jpg
   branches/nexuiz-2.0/data/textures/savdm6ish/wall14_5_gloss.jpg
   branches/nexuiz-2.0/data/textures/savdm6ish/wiz1_4_bump.jpg
   branches/nexuiz-2.0/data/textures/savdm6ish/wiz1_4_gloss.jpg
   branches/nexuiz-2.0/data/textures/shard_gloss.tga
   branches/nexuiz-2.0/data/textures/shield_seamless(2nd texture)_gloss.tga
   branches/nexuiz-2.0/data/textures/shock_shirt.tga
   branches/nexuiz-2.0/data/textures/shotgun_bump.tga
   branches/nexuiz-2.0/data/textures/shskin_gloss.tga
   branches/nexuiz-2.0/data/textures/skadi_pants.tga
   branches/nexuiz-2.0/data/textures/skadi_shirt.tga
   branches/nexuiz-2.0/data/textures/specop_bump.tga
   branches/nexuiz-2.0/data/textures/specop_pants.tga
   branches/nexuiz-2.0/data/textures/specop_shirt.tga
   branches/nexuiz-2.0/data/textures/straledm6/creteshorter_y.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/e8_btrim04c.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/jumppad.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/jumppad_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/light_tube_green.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/light_tube_green_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/newstrip_grey.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/newstrip_grey_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/newstrip_red.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/newstrip_red_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slime_rev-1.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slime_rev-1_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slime_rev-2.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slime_rev-2_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slime_rev-3.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slime_rev-3_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slime_rev.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slime_rev_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-1.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-10.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-10_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-11.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-11_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-1_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-2.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-2_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-3.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-3_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-4.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-4_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-5.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-5_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-6.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-6_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-7.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-7_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-8.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-8_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-9.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-9_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/stepside_mtllight_glow.tga
   branches/nexuiz-2.0/data/textures/stralenex1/stralenex5_fakesky.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/stralenex5_water.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/stralenex_roundlight.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/stralenex_roundlight_glow.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/stralenex_trimlight.jpg
   branches/nexuiz-2.0/data/textures/stralenex1/stralenex_trimlight_glow.jpg
   branches/nexuiz-2.0/data/textures/strength.jpg
   branches/nexuiz-2.0/data/textures/strength/e6redmtl_light.jpg
   branches/nexuiz-2.0/data/textures/strength/e6redmtl_light_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/e8beam_yellow.jpg
   branches/nexuiz-2.0/data/textures/strength/e8circle_yellow.jpg
   branches/nexuiz-2.0/data/textures/strength/eX_cretefloor_01glow_bump.jpg
   branches/nexuiz-2.0/data/textures/strength/eX_cretefloor_01glow_gloss.jpg
   branches/nexuiz-2.0/data/textures/strength/eX_cretefloor_01glow_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/eX_trim_simple_01b.jpg
   branches/nexuiz-2.0/data/textures/strength/eX_trim_simple_01b_gloss.jpg
   branches/nexuiz-2.0/data/textures/strength/light-liney-1.jpg
   branches/nexuiz-2.0/data/textures/strength/light-liney-1_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/light-liney-2.jpg
   branches/nexuiz-2.0/data/textures/strength/light-liney-2_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/light-liney-3.jpg
   branches/nexuiz-2.0/data/textures/strength/light-liney-3_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/light-liney-4.jpg
   branches/nexuiz-2.0/data/textures/strength/light-liney-4_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/light-liney-5.jpg
   branches/nexuiz-2.0/data/textures/strength/light-liney-5_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/light-liney.jpg
   branches/nexuiz-2.0/data/textures/strength/light-liney_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/light-lineya.jpg
   branches/nexuiz-2.0/data/textures/strength/light_slots-1.jpg
   branches/nexuiz-2.0/data/textures/strength/light_slots-1_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/light_slots-2.jpg
   branches/nexuiz-2.0/data/textures/strength/light_slots-2_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/light_slots-3.jpg
   branches/nexuiz-2.0/data/textures/strength/light_slots-3_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/light_slots-4.jpg
   branches/nexuiz-2.0/data/textures/strength/light_slots-4_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/light_slots.jpg
   branches/nexuiz-2.0/data/textures/strength/light_slots_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/sand_bump.jpg
   branches/nexuiz-2.0/data/textures/strength/sand_gloss.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp-1.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp-1_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp-2.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp-2_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp-3.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp-3_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp-4.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp-4_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp-5.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp-5_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp-6.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp-6_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_jp_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_rlight.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_rlight_glow.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_ylight.jpg
   branches/nexuiz-2.0/data/textures/strength/strength_ylight_glow.jpg
   branches/nexuiz-2.0/data/textures/strength_glow.jpg
   branches/nexuiz-2.0/data/textures/terrain_data/frozenground_gloss.tga
   branches/nexuiz-2.0/data/textures/terrain_data/mudground01_bump.tga
   branches/nexuiz-2.0/data/textures/terrain_data/snow01_gloss.tga
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2/grass01-rock05.jpg
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2/leafs01-rock02.jpg
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2/mossrock02-mudground04.jpg
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2/mudground01_rock01.jpg
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2/mudground02-rock06.jpg
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2/sand-rock07.jpg
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2/snow-rock05.jpg
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/grass01-rock05.jpg
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/leafs01-rock02.jpg
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/mossrock02-mudground04.jpg
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/mudground01_rock01.jpg
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/mudground02-rock06.jpg
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/sand-rock07.jpg
   branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/snow-rock05.jpg
   branches/nexuiz-2.0/data/textures/tznex01/stained_glass_nexlogo_blue.tga
   branches/nexuiz-2.0/data/textures/tznex01/stained_glass_nexlogo_red.tga
   branches/nexuiz-2.0/data/textures/water/pool3d_5e.jpg
   branches/nexuiz-2.0/data/textures/water/ruiner_water.jpg
   branches/nexuiz-2.0/data/textures/water/slime1.tga
   branches/nexuiz-2.0/data/textures/water/slime2.tga
   branches/nexuiz-2.0/data/textures/water/tzorkwater-blue.jpg
   branches/nexuiz-2.0/data/textures/water/water0.tga
   branches/nexuiz-2.0/data/textures/water/water1.tga
   branches/nexuiz-2.0/data/textures/water/water2.tga
   branches/nexuiz-2.0/data/textures/xolar_gloss.tga
   branches/nexuiz-2.0/data/textures/xolar_pants.tga
   branches/nexuiz-2.0/data/textures/xolar_shirt.tga
   branches/nexuiz-2.0/data/weapons.cfg
   branches/nexuiz-2.0/misc/demotc-race-record-extractor.sh
   branches/nexuiz-2.0/misc/demotc.pl
   branches/nexuiz-2.0/misc/gtkradiant/gtkradiant-nexuiz-patchset.diff
   branches/nexuiz-2.0/misc/nexuiz-map-compiler
Log:
- portal fixes
- weapon replace fixes
- clientstate zoom fixes
- sounds by Tenshihan for the Port-O-Launch
- motd fixes
- new warmup/vote/ready nagger
- CTF: fix portal exploit by adding a flag drop penalty of the same score as pickup if you drop the flag when going through a portal or suiciding
- demotc: put the cut marks slightly different; allow removing them again using an "uncut" operation
- added sv_status_privacy and mention kick/kickban as addition to the vote commands
- support race_place -1 to mark a qualifying-only finish spawn point
- check ip ban in say/teamsay too as to make banned people less annoying (they no longer can say something during the short time from connect till being kicked by the ban system)
- server favorites
- handle sv_foginterval on the client now (TESTING)
- external lightmaps
- lots of new particle fx, explosions, blood, shotgun/mg gun impact, electo impact, nexgun beam and much more, too much to write them all here
- workaround for subdivisions (needs an engine fix still)
- g_ctf_win_mode 3: frags do not count
- add "sv_cmd roughmap" writing a XPM with a rough version of the map layout
- add voice to need help, enemy seen, flag seen
- LOD for misc_models and similar entities
- more CTF scoring modes
- add a SND_WEAPON2 channel for anything except actual weapon fire. Limits cutting off of weapon sounds a bit.
- experimental feature (sv_)cmd cvar_changes, should list all changed cvars of the server
- fix black grate on toxic by using current q3map2
- fixed strength and dieselpower deluxemaps
- get rid of .info files; make interpolation generic
- experimental team radar (try: cl_teamradar 1)
- support cl_hidewaypoints 2 (hide all)
- turrets by tZork
- Update crosshair 9 & 10. Making the circle rounder.
- func_static, misc_gamemodel (better radiant support by splitting misc_models up)


Modified: branches/nexuiz-2.0/.patchsets
===================================================================
--- branches/nexuiz-2.0/.patchsets	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/.patchsets	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,2 +1,2 @@
 master = svn://svn.icculus.org/nexuiz/trunk
-revisions_applied = 1-4441
+revisions_applied = 1-4618

Modified: branches/nexuiz-2.0/Docs/mapping.txt
===================================================================
--- branches/nexuiz-2.0/Docs/mapping.txt	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/Docs/mapping.txt	2008-10-03 18:32:25 UTC (rev 4619)
@@ -385,7 +385,13 @@
 
     clientsettemp_for_type all r_shadow_glossexponent 96
 
+Another possibility is to specify fog settings in the mapinfo, for convenience
+in case you set sv_foginterval by it too (to force the fog on the clients):
 
+    fog 0.2 0.25 0.3 0.3 1 1500
+    settemp_for_type all sv_foginterval 5
+
+
 =============================
 =Appendix B - Helpful Extras=
 =============================

Modified: branches/nexuiz-2.0/Docs/server/server.cfg
===================================================================
--- branches/nexuiz-2.0/Docs/server/server.cfg	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/Docs/server/server.cfg	2008-10-03 18:32:25 UTC (rev 4619)
@@ -10,6 +10,7 @@
 // change them to your liking.
 
 //sv_public 1               // 0 if the server should not be on the public servers list
+//sv_status_privacy 1       // 1 hides IP addresses from "status" replies shown to clients, 0 shows them. Enables players to identify wellknown punks on your server OR is a thread to anonymity.. depending on your point of view :)
 //hostname "Nexuiz Server"  // this name will appear on the server list
 //sv_motd ""                // this message (unless "") is displayed to players on connect
 //maxplayers 8              // number of players allowed on the server
@@ -75,7 +76,7 @@
 //g_maplist_votable_abstain 0 // when 1, people get a "don't care" selection in the vote screen
 //g_maplist_votable_nodetail 1 // when 1, people can't see how many voted for what (to thwart abusive "influential" first votes)
 
-//sv_vote_commands "restart timelimit fraglimit chmap gotomap g_grappling_hook sv_defaultplayer_fbskin_green sv_defaultplayer_fbskin_red sv_defaultplayer_fbskin_orange sv_defaultplayer_fbskin_off endmatch reducematchtime extendmatchtime allready" // players can vote for those commands or use them if they are masters
+//sv_vote_commands "restart timelimit fraglimit chmap gotomap g_grappling_hook sv_defaultplayer_fbskin_green sv_defaultplayer_fbskin_red sv_defaultplayer_fbskin_orange sv_defaultplayer_fbskin_off endmatch reducematchtime extendmatchtime allready" // players can vote for those commands or use them if they are masters.  You can also add 'kick kickban' to allow players to remove punks with a vote.  In that case it also helps to disable sv_status_privacy
 //sv_vote_call 1 // 0 will disable the normal voting
 //sv_vote_master 1 // 0 will disable voting to become masters
 //sv_vote_master_password "" // when set, vdo login master will allow you to run votable commands directly using vdo


Property changes on: branches/nexuiz-2.0/data
___________________________________________________________________
Name: svn:ignore
   - menu.dat
menu.lno
progs.dat
progs.lno

   + menu.dat
menu.lno
progs.dat
progs.lno
csprogs.dat
csprogs.lno


Copied: branches/nexuiz-2.0/data/ctfscoring-ai.cfg (from rev 4618, trunk/data/ctfscoring-ai.cfg)
===================================================================
--- branches/nexuiz-2.0/data/ctfscoring-ai.cfg	                        (rev 0)
+++ branches/nexuiz-2.0/data/ctfscoring-ai.cfg	2008-10-03 18:32:25 UTC (rev 4619)
@@ -0,0 +1,17 @@
+set g_ctf_flagscore_pickup_base                   0
+set g_ctf_flagscore_pickup_dropped_early          0
+set g_ctf_flagscore_pickup_dropped_late           0
+set g_ctf_flagscore_capture                      20
+set g_ctf_flagscore_kill                          0
+set g_ctf_flagpenalty_drop                        0
+set g_ctf_flagpenalty_suicidedrop                 0
+set g_ctf_flagpenalty_returned                    5
+set g_ctf_flagscore_return                        0
+set g_ctf_flagscore_return_rogue                 10
+set g_ctf_flagscore_return_by_killer              0
+set g_ctf_flagscore_return_rogue_by_killer       10
+// succeeded capture (pickup capture)            20 (0 for enemy)
+// failed capture (pickup kill drop return)      -5 (0 for enemy)
+// failed (shot into void) (pickup kill drop)     0 (0 for enemy)
+// capture retry (kill drop pickup)               0 (0 for enemy)
+// suicide, then retake (suicidedrop pickup)      0 (0 for enemy)

Copied: branches/nexuiz-2.0/data/ctfscoring-alien.cfg (from rev 4618, trunk/data/ctfscoring-alien.cfg)
===================================================================
--- branches/nexuiz-2.0/data/ctfscoring-alien.cfg	                        (rev 0)
+++ branches/nexuiz-2.0/data/ctfscoring-alien.cfg	2008-10-03 18:32:25 UTC (rev 4619)
@@ -0,0 +1,17 @@
+set g_ctf_flagscore_pickup_base                   1
+set g_ctf_flagscore_pickup_dropped_early          1
+set g_ctf_flagscore_pickup_dropped_late           1
+set g_ctf_flagscore_capture                      30
+set g_ctf_flagscore_kill                          1
+set g_ctf_flagpenalty_drop                        2
+set g_ctf_flagpenalty_suicidedrop                 2
+set g_ctf_flagpenalty_returned                    0
+set g_ctf_flagscore_return                        5
+set g_ctf_flagscore_return_rogue                 10
+set g_ctf_flagscore_return_by_killer              6
+set g_ctf_flagscore_return_rogue_by_killer       11
+// succeeded capture (pickup capture)            31 (0 for enemy)
+// failed capture (pickup kill drop return)      -1 (6 or 7 for enemy)
+// failed (shot into void) (pickup kill drop)     1 (1 for enemy)
+// capture retry (kill drop pickup)              -1 (1 for enemy)
+// suicide, then retake (suicidedrop pickup)     -1 (0 for enemy)

Copied: branches/nexuiz-2.0/data/ctfscoring-alpha.cfg (from rev 4618, trunk/data/ctfscoring-alpha.cfg)
===================================================================
--- branches/nexuiz-2.0/data/ctfscoring-alpha.cfg	                        (rev 0)
+++ branches/nexuiz-2.0/data/ctfscoring-alpha.cfg	2008-10-03 18:32:25 UTC (rev 4619)
@@ -0,0 +1,17 @@
+set g_ctf_flagscore_pickup_base                   0
+set g_ctf_flagscore_pickup_dropped_early          0
+set g_ctf_flagscore_pickup_dropped_late           0
+set g_ctf_flagscore_capture                      20
+set g_ctf_flagscore_kill                          0
+set g_ctf_flagpenalty_drop                        0
+set g_ctf_flagpenalty_suicidedrop                 0
+set g_ctf_flagpenalty_returned                    0
+set g_ctf_flagscore_return                        5
+set g_ctf_flagscore_return_rogue                 10
+set g_ctf_flagscore_return_by_killer              5
+set g_ctf_flagscore_return_rogue_by_killer       10
+// succeeded capture (pickup capture)            20 (0 for enemy)
+// failed capture (pickup kill drop return)       0 (5 for enemy)
+// failed (shot into void) (pickup kill drop)     0 (0 for enemy)
+// capture retry (kill drop pickup)               0 (0 for enemy)
+// suicide, then retake (suicidedrop pickup)      0 (0 for enemy)

Copied: branches/nexuiz-2.0/data/ctfscoring-nex242.cfg (from rev 4618, trunk/data/ctfscoring-nex242.cfg)
===================================================================
--- branches/nexuiz-2.0/data/ctfscoring-nex242.cfg	                        (rev 0)
+++ branches/nexuiz-2.0/data/ctfscoring-nex242.cfg	2008-10-03 18:32:25 UTC (rev 4619)
@@ -0,0 +1,17 @@
+set g_ctf_flagscore_pickup_base                   1
+set g_ctf_flagscore_pickup_dropped_early          1
+set g_ctf_flagscore_pickup_dropped_late           5
+set g_ctf_flagscore_capture                      20
+set g_ctf_flagscore_kill                          1
+set g_ctf_flagpenalty_drop                        0
+set g_ctf_flagpenalty_suicidedrop                 1
+set g_ctf_flagpenalty_returned                    0
+set g_ctf_flagscore_return                        5
+set g_ctf_flagscore_return_rogue                 10
+set g_ctf_flagscore_return_by_killer              5
+set g_ctf_flagscore_return_rogue_by_killer       10
+// succeeded capture (pickup capture)            21 (0 for enemy)
+// failed capture (pickup kill drop return)       1 (6 for enemy)
+// failed (shot into void) (pickup kill drop)     1 (1 for enemy)
+// capture retry (kill drop pickup)               1 (1 for enemy)
+// suicide, then retake (suicidedrop pickup)      0 (0 for enemy)

Copied: branches/nexuiz-2.0/data/ctfscoring-z.cfg (from rev 4618, trunk/data/ctfscoring-z.cfg)
===================================================================
--- branches/nexuiz-2.0/data/ctfscoring-z.cfg	                        (rev 0)
+++ branches/nexuiz-2.0/data/ctfscoring-z.cfg	2008-10-03 18:32:25 UTC (rev 4619)
@@ -0,0 +1,17 @@
+set g_ctf_flagscore_pickup_base                  -5
+set g_ctf_flagscore_pickup_dropped_early          1
+set g_ctf_flagscore_pickup_dropped_late           5
+set g_ctf_flagscore_capture                      30
+set g_ctf_flagscore_kill                          5
+set g_ctf_flagpenalty_drop                        5
+set g_ctf_flagpenalty_suicidedrop                 5
+set g_ctf_flagpenalty_returned                    0
+set g_ctf_flagscore_return                        3
+set g_ctf_flagscore_return_rogue                 10
+set g_ctf_flagscore_return_by_killer              3
+set g_ctf_flagscore_return_rogue_by_killer       10
+// succeeded capture (pickup capture)            25 (0 for enemy)
+// failed capture (pickup kill drop return)     -10 (8 for enemy)
+// failed (shot into void) (pickup kill drop)   -10 (5 for enemy)
+// capture retry (kill drop pickup)          -1..-4 (5 for enemy)
+// suicide, then retake (suicidedrop pickup) -1..-4 (0 for enemy)

Copied: branches/nexuiz-2.0/data/cvars.txt (from rev 4618, trunk/data/cvars.txt)
===================================================================
--- branches/nexuiz-2.0/data/cvars.txt	                        (rev 0)
+++ branches/nexuiz-2.0/data/cvars.txt	2008-10-03 18:32:25 UTC (rev 4619)
@@ -0,0 +1,737 @@
+"bot_ai_aimskill_blendrate" "TODO: describe me"
+"bot_ai_aimskill_firetolerance_distdegrees" "TODO: describe me"
+"bot_ai_aimskill_firetolerance_maxdegrees" "TODO: describe me"
+"bot_ai_aimskill_firetolerance_mindegrees" "TODO: describe me"
+"bot_ai_aimskill_fixedrate" "TODO: describe me"
+"bot_ai_aimskill_mouse" "TODO: describe me"
+"bot_ai_aimskill_offset" "TODO: describe me"
+"bot_ai_aimskill_order_filter_1st" "TODO: describe me"
+"bot_ai_aimskill_order_filter_2nd" "TODO: describe me"
+"bot_ai_aimskill_order_filter_3th" "TODO: describe me"
+"bot_ai_aimskill_order_filter_4th" "TODO: describe me"
+"bot_ai_aimskill_order_filter_5th" "TODO: describe me"
+"bot_ai_aimskill_order_mix_1st" "TODO: describe me"
+"bot_ai_aimskill_order_mix_2nd" "TODO: describe me"
+"bot_ai_aimskill_order_mix_3th" "TODO: describe me"
+"bot_ai_aimskill_order_mix_4th" "TODO: describe me"
+"bot_ai_aimskill_order_mix_5th" "TODO: describe me"
+"bot_ai_aimskill_think" "TODO: describe me"
+"bot_ai_chooseweaponinterval" "TODO: describe me"
+"bot_ai_dangerdetectioninterval" "TODO: describe me"
+"bot_ai_dangerdetectionupdates" "TODO: describe me"
+"bot_ai_dodgeupdateinterval" "TODO: describe me"
+"bot_ai_enemydetectioninterval" "TODO: describe me"
+"bot_ai_keyboard_distance" "TODO: describe me"
+"bot_ai_keyboard_treshold" "TODO: describe me"
+"bot_ai_strategyinterval" "TODO: describe me"
+"bot_ai_thinkinterval" "TODO: describe me"
+"bot_ignore_bots" "TODO: describe me"
+"bot_join_empty" "TODO: describe me"
+"bot_nofire" "TODO: describe me"
+"bot_number" "TODO: describe me"
+"bot_prefix" "TODO: describe me"
+"bot_suffix" "TODO: describe me"
+"bot_usemodelnames" "TODO: describe me"
+"bot_vs_human" "TODO: describe me"
+"capturelimit_override" "TODO: describe me"
+"cmdline"
+"collision_endnudge"
+"collision_enternudge"
+"collision_impactnudge"
+"collision_leavenudge"
+"collision_prefernudgedfraction"
+"collision_startnudge"
+"coop"
+"cutscene"
+"deathmatch"
+"deathmatch_force_teamplay" "TODO: describe me"
+"developer"
+"developer_entityparsing"
+"developer_loadfile"
+"developer_loading"
+"developer_memory"
+"developer_memorydebug"
+"developer_networking"
+"edgefriction"
+"ekg" "TODO: describe me"
+"fraglimit_override" "TODO: describe me"
+"fs_empty_files_in_pack_mark_deletions"
+"g_antilag" "TODO: describe me"
+"g_arena_maxspawned" "TODO: describe me"
+"g_arena_powerups" "TODO: describe me"
+"g_arena_roundbased" "TODO: describe me"
+"g_arena_warmup" "TODO: describe me"
+"g_balance_armor_blockpercent" "TODO: describe me"
+"g_balance_armor_limit" "TODO: describe me"
+"g_balance_armor_regen" "TODO: describe me"
+"g_balance_armor_regenlinear" "TODO: describe me"
+"g_balance_armor_rot" "TODO: describe me"
+"g_balance_armor_rotlinear" "TODO: describe me"
+"g_balance_armor_stable" "TODO: describe me"
+"g_balance_armor_start" "TODO: describe me"
+"g_balance_cloaked_alpha" "TODO: describe me"
+"g_balance_crylink_primary_ammo" "TODO: describe me"
+"g_balance_crylink_primary_animtime" "TODO: describe me"
+"g_balance_crylink_primary_bouncedamagefactor" "TODO: describe me"
+"g_balance_crylink_primary_bounces" "TODO: describe me"
+"g_balance_crylink_primary_damage" "TODO: describe me"
+"g_balance_crylink_primary_edgedamage" "TODO: describe me"
+"g_balance_crylink_primary_force" "TODO: describe me"
+"g_balance_crylink_primary_middle_fadetime" "TODO: describe me"
+"g_balance_crylink_primary_middle_lifetime" "TODO: describe me"
+"g_balance_crylink_primary_other_fadetime" "TODO: describe me"
+"g_balance_crylink_primary_other_lifetime" "TODO: describe me"
+"g_balance_crylink_primary_radius" "TODO: describe me"
+"g_balance_crylink_primary_refire" "TODO: describe me"
+"g_balance_crylink_primary_shots" "TODO: describe me"
+"g_balance_crylink_primary_speed" "TODO: describe me"
+"g_balance_crylink_primary_spread" "TODO: describe me"
+"g_balance_crylink_primary_star_fadetime" "TODO: describe me"
+"g_balance_crylink_primary_star_lifetime" "TODO: describe me"
+"g_balance_crylink_secondary_ammo" "TODO: describe me"
+"g_balance_crylink_secondary_animtime" "TODO: describe me"
+"g_balance_crylink_secondary_bouncedamagefactor" "TODO: describe me"
+"g_balance_crylink_secondary_bounces" "TODO: describe me"
+"g_balance_crylink_secondary_damage" "TODO: describe me"
+"g_balance_crylink_secondary_edgedamage" "TODO: describe me"
+"g_balance_crylink_secondary_force" "TODO: describe me"
+"g_balance_crylink_secondary_line_fadetime" "TODO: describe me"
+"g_balance_crylink_secondary_line_lifetime" "TODO: describe me"
+"g_balance_crylink_secondary_middle_fadetime" "TODO: describe me"
+"g_balance_crylink_secondary_middle_lifetime" "TODO: describe me"
+"g_balance_crylink_secondary_radius" "TODO: describe me"
+"g_balance_crylink_secondary_refire" "TODO: describe me"
+"g_balance_crylink_secondary_shots" "TODO: describe me"
+"g_balance_crylink_secondary_speed" "TODO: describe me"
+"g_balance_crylink_secondary_spread" "TODO: describe me"
+"g_balance_curse_empathy_minhealth" "TODO: describe me"
+"g_balance_curse_empathy_takedamage" "TODO: describe me"
+"g_balance_curse_slow_atkrate" "TODO: describe me"
+"g_balance_curse_slow_jumpheight" "TODO: describe me"
+"g_balance_curse_slow_moverate" "TODO: describe me"
+"g_balance_curse_venom_hpmod" "TODO: describe me"
+"g_balance_curse_venom_limitmod" "TODO: describe me"
+"g_balance_curse_venom_rotrate" "TODO: describe me"
+"g_balance_curse_vulner_takedamage" "TODO: describe me"
+"g_balance_curse_weak_damage" "TODO: describe me"
+"g_balance_curse_weak_force" "TODO: describe me"
+"g_balance_electro_combo_damage" "TODO: describe me"
+"g_balance_electro_combo_edgedamage" "TODO: describe me"
+"g_balance_electro_combo_force" "TODO: describe me"
+"g_balance_electro_combo_radius" "TODO: describe me"
+"g_balance_electro_primary_ammo" "TODO: describe me"
+"g_balance_electro_primary_animtime" "TODO: describe me"
+"g_balance_electro_primary_damage" "TODO: describe me"
+"g_balance_electro_primary_edgedamage" "TODO: describe me"
+"g_balance_electro_primary_force" "TODO: describe me"
+"g_balance_electro_primary_lifetime" "TODO: describe me"
+"g_balance_electro_primary_radius" "TODO: describe me"
+"g_balance_electro_primary_refire" "TODO: describe me"
+"g_balance_electro_primary_speed" "TODO: describe me"
+"g_balance_electro_secondary_ammo" "TODO: describe me"
+"g_balance_electro_secondary_animtime" "TODO: describe me"
+"g_balance_electro_secondary_damage" "TODO: describe me"
+"g_balance_electro_secondary_edgedamage" "TODO: describe me"
+"g_balance_electro_secondary_force" "TODO: describe me"
+"g_balance_electro_secondary_health" "TODO: describe me"
+"g_balance_electro_secondary_lifetime" "TODO: describe me"
+"g_balance_electro_secondary_radius" "TODO: describe me"
+"g_balance_electro_secondary_refire" "TODO: describe me"
+"g_balance_electro_secondary_speed" "TODO: describe me"
+"g_balance_electro_secondary_speed_up" "TODO: describe me"
+"g_balance_electro_secondary_spread" "TODO: describe me"
+"g_balance_falldamage_deadminspeed" "TODO: describe me"
+"g_balance_falldamage_factor" "TODO: describe me"
+"g_balance_falldamage_maxdamage" "TODO: describe me"
+"g_balance_falldamage_minspeed" "TODO: describe me"
+"g_balance_grapplehook_airfriction" "TODO: describe me"
+"g_balance_grapplehook_force_rubber" "TODO: describe me"
+"g_balance_grapplehook_force_rubber_overstretch" "TODO: describe me"
+"g_balance_grapplehook_health" "TODO: describe me"
+"g_balance_grapplehook_length_min" "TODO: describe me"
+"g_balance_grapplehook_speed_fly" "TODO: describe me"
+"g_balance_grapplehook_speed_pull" "TODO: describe me"
+"g_balance_grapplehook_stretch" "TODO: describe me"
+"g_balance_grenadelauncher_primary_ammo" "TODO: describe me"
+"g_balance_grenadelauncher_primary_animtime" "TODO: describe me"
+"g_balance_grenadelauncher_primary_damage" "TODO: describe me"
+"g_balance_grenadelauncher_primary_edgedamage" "TODO: describe me"
+"g_balance_grenadelauncher_primary_force" "TODO: describe me"
+"g_balance_grenadelauncher_primary_lifetime" "TODO: describe me"
+"g_balance_grenadelauncher_primary_radius" "TODO: describe me"
+"g_balance_grenadelauncher_primary_refire" "TODO: describe me"
+"g_balance_grenadelauncher_primary_speed" "TODO: describe me"
+"g_balance_grenadelauncher_primary_speed_up" "TODO: describe me"
+"g_balance_grenadelauncher_secondary_ammo" "TODO: describe me"
+"g_balance_grenadelauncher_secondary_animtime" "TODO: describe me"
+"g_balance_grenadelauncher_secondary_damage" "TODO: describe me"
+"g_balance_grenadelauncher_secondary_edgedamage" "TODO: describe me"
+"g_balance_grenadelauncher_secondary_force" "TODO: describe me"
+"g_balance_grenadelauncher_secondary_health" "TODO: describe me"
+"g_balance_grenadelauncher_secondary_lifetime" "TODO: describe me"
+"g_balance_grenadelauncher_secondary_radius" "TODO: describe me"
+"g_balance_grenadelauncher_secondary_refire" "TODO: describe me"
+"g_balance_grenadelauncher_secondary_speed" "TODO: describe me"
+"g_balance_grenadelauncher_secondary_speed_up" "TODO: describe me"
+"g_balance_hagar_primary_ammo" "TODO: describe me"
+"g_balance_hagar_primary_damage" "TODO: describe me"
+"g_balance_hagar_primary_edgedamage" "TODO: describe me"
+"g_balance_hagar_primary_force" "TODO: describe me"
+"g_balance_hagar_primary_lifetime" "TODO: describe me"
+"g_balance_hagar_primary_radius" "TODO: describe me"
+"g_balance_hagar_primary_refire" "TODO: describe me"
+"g_balance_hagar_primary_speed" "TODO: describe me"
+"g_balance_hagar_primary_spread" "TODO: describe me"
+"g_balance_hagar_secondary_ammo" "TODO: describe me"
+"g_balance_hagar_secondary_damage" "TODO: describe me"
+"g_balance_hagar_secondary_edgedamage" "TODO: describe me"
+"g_balance_hagar_secondary_force" "TODO: describe me"
+"g_balance_hagar_secondary_lifetime" "TODO: describe me"
+"g_balance_hagar_secondary_radius" "TODO: describe me"
+"g_balance_hagar_secondary_refire" "TODO: describe me"
+"g_balance_hagar_secondary_speed" "TODO: describe me"
+"g_balance_hagar_secondary_spread" "TODO: describe me"
+"g_balance_health_limit" "TODO: describe me"
+"g_balance_health_regen" "TODO: describe me"
+"g_balance_health_regenlinear" "TODO: describe me"
+"g_balance_health_rot" "TODO: describe me"
+"g_balance_health_rotlinear" "TODO: describe me"
+"g_balance_health_stable" "TODO: describe me"
+"g_balance_health_start" "TODO: describe me"
+"g_balance_keyhunt_damageforcescale" "TODO: describe me"
+"g_balance_keyhunt_delay_collect" "TODO: describe me"
+"g_balance_keyhunt_delay_drop" "TODO: describe me"
+"g_balance_keyhunt_delay_fadeout" "TODO: describe me"
+"g_balance_keyhunt_delay_return" "TODO: describe me"
+"g_balance_keyhunt_delay_round" "TODO: describe me"
+"g_balance_keyhunt_delay_tracking" "TODO: describe me"
+"g_balance_keyhunt_dropvelocity" "TODO: describe me"
+"g_balance_keyhunt_maxdist" "TODO: describe me"
+"g_balance_keyhunt_protecttime" "TODO: describe me"
+"g_balance_keyhunt_score_capture" "TODO: describe me"
+"g_balance_keyhunt_score_carrierfrag" "TODO: describe me"
+"g_balance_keyhunt_score_collect" "TODO: describe me"
+"g_balance_keyhunt_score_destroyed" "TODO: describe me"
+"g_balance_keyhunt_score_destroyed_ownfactor" "TODO: describe me"
+"g_balance_keyhunt_score_push" "TODO: describe me"
+"g_balance_keyhunt_throwvelocity" "TODO: describe me"
+"g_balance_kill_delay" "TODO: describe me"
+"g_balance_laser_primary_animtime" "TODO: describe me"
+"g_balance_laser_primary_damage" "TODO: describe me"
+"g_balance_laser_primary_edgedamage" "TODO: describe me"
+"g_balance_laser_primary_force" "TODO: describe me"
+"g_balance_laser_primary_lifetime" "TODO: describe me"
+"g_balance_laser_primary_radius" "TODO: describe me"
+"g_balance_laser_primary_refire" "TODO: describe me"
+"g_balance_laser_primary_speed" "TODO: describe me"
+"g_balance_laser_secondary" "TODO: describe me"
+"g_balance_laser_secondary_animtime" "TODO: describe me"
+"g_balance_laser_secondary_damage" "TODO: describe me"
+"g_balance_laser_secondary_edgedamage" "TODO: describe me"
+"g_balance_laser_secondary_force" "TODO: describe me"
+"g_balance_laser_secondary_lifetime" "TODO: describe me"
+"g_balance_laser_secondary_radius" "TODO: describe me"
+"g_balance_laser_secondary_refire" "TODO: describe me"
+"g_balance_laser_secondary_speed" "TODO: describe me"
+"g_balance_minstanex_ammo" "TODO: describe me"
+"g_balance_minstanex_animtime" "TODO: describe me"
+"g_balance_minstanex_refire" "TODO: describe me"
+"g_balance_nex_ammo" "TODO: describe me"
+"g_balance_nex_animtime" "TODO: describe me"
+"g_balance_nex_damage" "TODO: describe me"
+"g_balance_nex_force" "TODO: describe me"
+"g_balance_nex_refire" "TODO: describe me"
+"g_balance_nixnex_ammo_cells" "TODO: describe me"
+"g_balance_nixnex_ammo_nails" "TODO: describe me"
+"g_balance_nixnex_ammo_rockets" "TODO: describe me"
+"g_balance_nixnex_ammo_shells" "TODO: describe me"
+"g_balance_nixnex_ammoincr_cells" "TODO: describe me"
+"g_balance_nixnex_ammoincr_nails" "TODO: describe me"
+"g_balance_nixnex_ammoincr_rockets" "TODO: describe me"
+"g_balance_nixnex_ammoincr_shells" "TODO: describe me"
+"g_balance_nixnex_incrtime" "TODO: describe me"
+"g_balance_nixnex_roundtime" "TODO: describe me"
+"g_balance_pause_armor_rot" "TODO: describe me"
+"g_balance_pause_armor_rot_spawn" "TODO: describe me"
+"g_balance_pause_health_regen" "TODO: describe me"
+"g_balance_pause_health_regen_spawn" "TODO: describe me"
+"g_balance_pause_health_rot" "TODO: describe me"
+"g_balance_pause_health_rot_spawn" "TODO: describe me"
+"g_balance_porto_primary_ammo" "TODO: describe me"
+"g_balance_porto_primary_lifetime" "TODO: describe me"
+"g_balance_porto_primary_refire" "TODO: describe me"
+"g_balance_porto_primary_speed" "TODO: describe me"
+"g_balance_powerup_invincible_takedamage" "TODO: describe me"
+"g_balance_powerup_invincible_time" "TODO: describe me"
+"g_balance_powerup_strength_damage" "TODO: describe me"
+"g_balance_powerup_strength_force" "TODO: describe me"
+"g_balance_powerup_strength_selfdamage" "TODO: describe me"
+"g_balance_powerup_strength_selfforce" "TODO: describe me"
+"g_balance_powerup_strength_time" "TODO: describe me"
+"g_balance_rocketlauncher_ammo" "TODO: describe me"
+"g_balance_rocketlauncher_animtime" "TODO: describe me"
+"g_balance_rocketlauncher_damage" "TODO: describe me"
+"g_balance_rocketlauncher_detonatedelay" "TODO: describe me"
+"g_balance_rocketlauncher_edgedamage" "TODO: describe me"
+"g_balance_rocketlauncher_force" "TODO: describe me"
+"g_balance_rocketlauncher_health" "TODO: describe me"
+"g_balance_rocketlauncher_laserguided_allow_steal" "TODO: describe me"
+"g_balance_rocketlauncher_laserguided_speed" "TODO: describe me"
+"g_balance_rocketlauncher_laserguided_speedaccel" "TODO: describe me"
+"g_balance_rocketlauncher_laserguided_speedstart" "TODO: describe me"
+"g_balance_rocketlauncher_laserguided_turnrate" "TODO: describe me"
+"g_balance_rocketlauncher_lifetime" "TODO: describe me"
+"g_balance_rocketlauncher_radius" "TODO: describe me"
+"g_balance_rocketlauncher_refire" "TODO: describe me"
+"g_balance_rocketlauncher_speed" "TODO: describe me"
+"g_balance_rocketlauncher_speedaccel" "TODO: describe me"
+"g_balance_rocketlauncher_speedstart" "TODO: describe me"
+"g_balance_rune_defense_combo_takedamage" "TODO: describe me"
+"g_balance_rune_defense_takedamage" "TODO: describe me"
+"g_balance_rune_regen_combo_hpmod" "TODO: describe me"
+"g_balance_rune_regen_combo_limitmod" "TODO: describe me"
+"g_balance_rune_regen_combo_regenrate" "TODO: describe me"
+"g_balance_rune_regen_combo_rotrate" "TODO: describe me"
+"g_balance_rune_regen_hpmod" "TODO: describe me"
+"g_balance_rune_regen_limitmod" "TODO: describe me"
+"g_balance_rune_regen_regenrate" "TODO: describe me"
+"g_balance_rune_speed_atkrate" "TODO: describe me"
+"g_balance_rune_speed_combo_atkrate" "TODO: describe me"
+"g_balance_rune_speed_combo_jumpheight" "TODO: describe me"
+"g_balance_rune_speed_combo_moverate" "TODO: describe me"
+"g_balance_rune_speed_jumpheight" "TODO: describe me"
+"g_balance_rune_speed_moverate" "TODO: describe me"
+"g_balance_rune_strength_combo_damage" "TODO: describe me"
+"g_balance_rune_strength_combo_force" "TODO: describe me"
+"g_balance_rune_strength_damage" "TODO: describe me"
+"g_balance_rune_strength_force" "TODO: describe me"
+"g_balance_rune_vampire_absorb" "TODO: describe me"
+"g_balance_rune_vampire_combo_absorb" "TODO: describe me"
+"g_balance_rune_vampire_combo_minhealth" "TODO: describe me"
+"g_balance_rune_vampire_maxhealth" "TODO: describe me"
+"g_balance_selfdamagepercent" "TODO: describe me"
+"g_balance_shotgun_primary_ammo" "TODO: describe me"
+"g_balance_shotgun_primary_animtime" "TODO: describe me"
+"g_balance_shotgun_primary_bullets" "TODO: describe me"
+"g_balance_shotgun_primary_damage" "TODO: describe me"
+"g_balance_shotgun_primary_force" "TODO: describe me"
+"g_balance_shotgun_primary_refire" "TODO: describe me"
+"g_balance_shotgun_primary_spread" "TODO: describe me"
+"g_balance_shotgun_secondary_ammo" "TODO: describe me"
+"g_balance_shotgun_secondary_animtime" "TODO: describe me"
+"g_balance_shotgun_secondary_bullets" "TODO: describe me"
+"g_balance_shotgun_secondary_damage" "TODO: describe me"
+"g_balance_shotgun_secondary_force" "TODO: describe me"
+"g_balance_shotgun_secondary_refire" "TODO: describe me"
+"g_balance_shotgun_secondary_spread" "TODO: describe me"
+"g_balance_teams" "TODO: describe me"
+"g_balance_teams_complain" "TODO: describe me"
+"g_balance_teams_force" "TODO: describe me"
+"g_balance_teams_prevent_imbalance" "TODO: describe me"
+"g_balance_uzi_first_ammo" "TODO: describe me"
+"g_balance_uzi_first_damage" "TODO: describe me"
+"g_balance_uzi_first_force" "TODO: describe me"
+"g_balance_uzi_first_refire" "TODO: describe me"
+"g_balance_uzi_first_spread" "TODO: describe me"
+"g_balance_uzi_sustained_ammo" "TODO: describe me"
+"g_balance_uzi_sustained_damage" "TODO: describe me"
+"g_balance_uzi_sustained_force" "TODO: describe me"
+"g_balance_uzi_sustained_refire" "TODO: describe me"
+"g_balance_uzi_sustained_spread" "TODO: describe me"
+"g_balance_weaponswitchdelay" "TODO: describe me"
+"g_ban_default_bantime" "TODO: describe me"
+"g_ban_default_masksize" "TODO: describe me"
+"g_casings" "TODO: describe me"
+"g_changeteam_banned" "TODO: describe me"
+"g_changeteam_fragtransfer" "TODO: describe me"
+"g_chat_flood_burst" "TODO: describe me"
+"g_chat_flood_burst_team" "TODO: describe me"
+"g_chat_flood_lmax" "TODO: describe me"
+"g_chat_flood_lmax_team" "TODO: describe me"
+"g_chat_flood_notify_flooder" "TODO: describe me"
+"g_chat_flood_spl" "TODO: describe me"
+"g_chat_flood_spl_team" "TODO: describe me"
+"g_chat_nospectators" "TODO: describe me"
+"g_chat_teamcolors" "TODO: describe me"
+"g_cloaked" "TODO: describe me"
+"g_ctf_capture_limit" "TODO: describe me"
+"g_ctf_flag_returntime" "TODO: describe me"
+"g_ctf_flagcarrier_selfdamage" "TODO: describe me"
+"g_ctf_flagcarrier_selfforce" "TODO: describe me"
+"g_ctf_flagpenalty_drop" "TODO: describe me"
+"g_ctf_flagpenalty_suicidedrop" "TODO: describe me"
+"g_ctf_flagscore_capture" "TODO: describe me"
+"g_ctf_flagscore_kill" "TODO: describe me"
+"g_ctf_flagscore_pickup_base" "TODO: describe me"
+"g_ctf_flagscore_pickup_dropped_early" "TODO: describe me"
+"g_ctf_flagscore_pickup_dropped_late" "TODO: describe me"
+"g_ctf_flagscore_return" "TODO: describe me"
+"g_ctf_flagscore_return_by_killer" "TODO: describe me"
+"g_ctf_flagscore_return_rogue" "TODO: describe me"
+"g_ctf_flagscore_return_rogue_by_killer" "TODO: describe me"
+"g_ctf_respawn_delay" "TODO: describe me"
+"g_ctf_respawn_waves" "TODO: describe me"
+"g_ctf_win_mode" "TODO: describe me"
+"g_dm_respawn_delay" "TODO: describe me"
+"g_dm_respawn_waves" "TODO: describe me"
+"g_dom_respawn_delay" "TODO: describe me"
+"g_dom_respawn_waves" "TODO: describe me"
+"g_domination_default_teams" "TODO: describe me"
+"g_domination_disable_frags" "TODO: describe me"
+"g_domination_point_amt" "TODO: describe me"
+"g_domination_point_capturetime" "TODO: describe me"
+"g_domination_point_glow" "TODO: describe me"
+"g_domination_point_limit" "TODO: describe me"
+"g_domination_point_rate" "TODO: describe me"
+"g_footsteps" "TODO: describe me"
+"g_forced_respawn" "TODO: describe me"
+"g_friendlyfire" "TODO: describe me"
+"g_fullbrightitems" "TODO: describe me"
+"g_fullbrightplayers" "TODO: describe me"
+"g_grappling_hook" "TODO: describe me"
+"g_grappling_hook_tarzan" "TODO: describe me"
+"g_jump_grunt" "TODO: describe me"
+"g_keyhunt_point_limit" "TODO: describe me"
+"g_keyhunt_teams_override" "TODO: describe me"
+"g_laserguided_missile" "TODO: describe me"
+"g_lms" "TODO: describe me"
+"g_lms_campcheck_damage" "TODO: describe me"
+"g_lms_campcheck_distance" "TODO: describe me"
+"g_lms_campcheck_interval" "TODO: describe me"
+"g_lms_campcheck_message" "TODO: describe me"
+"g_lms_join_anytime" "TODO: describe me"
+"g_lms_last_join" "TODO: describe me"
+"g_lms_lives_override" "TODO: describe me"
+"g_lms_regenerate" "TODO: describe me"
+"g_lms_respawn_delay" "TODO: describe me"
+"g_lms_respawn_waves" "TODO: describe me"
+"g_lms_start_ammo_cells" "TODO: describe me"
+"g_lms_start_ammo_nails" "TODO: describe me"
+"g_lms_start_ammo_rockets" "TODO: describe me"
+"g_lms_start_ammo_shells" "TODO: describe me"
+"g_lms_start_armor" "TODO: describe me"
+"g_lms_start_health" "TODO: describe me"
+"g_maplist_check_waypoints" "TODO: describe me"
+"g_maplist_mostrecent_count" "TODO: describe me"
+"g_maplist_selectrandom" "TODO: describe me"
+"g_maplist_shuffle" "TODO: describe me"
+"g_maplist_textonly" "TODO: describe me"
+"g_maplist_votable" "TODO: describe me"
+"g_maplist_votable_abstain" "TODO: describe me"
+"g_maplist_votable_keeptwotime" "TODO: describe me"
+"g_maplist_votable_nodetail" "TODO: describe me"
+"g_maplist_votable_screenshot_dir" "TODO: describe me"
+"g_maplist_votable_suggestions" "TODO: describe me"
+"g_maplist_votable_suggestions_override_mostrecent" "TODO: describe me"
+"g_maplist_votable_timeout" "TODO: describe me"
+"g_maxplayers" "TODO: describe me"
+"g_maxplayers_spectator_blocktime" "TODO: describe me"
+"g_maxpushtime" "TODO: describe me"
+"g_midair" "TODO: describe me"
+"g_midair_shieldtime" "TODO: describe me"
+"g_minstagib" "TODO: describe me"
+"g_minstagib_ammo_drop" "TODO: describe me"
+"g_minstagib_ammo_start" "TODO: describe me"
+"g_minstagib_extralives" "TODO: describe me"
+"g_minstagib_invis_alpha" "TODO: describe me"
+"g_minstagib_speed_jumpheight" "TODO: describe me"
+"g_minstagib_speed_moverate" "TODO: describe me"
+"g_mirrordamage" "TODO: describe me"
+"g_nexuizversion" "TODO: describe me"
+"g_nixnex" "TODO: describe me"
+"g_nixnex_with_laser" "TODO: describe me"
+"g_norecoil" "TODO: describe me"
+"g_onslaught_cp_health" "TODO: describe me"
+"g_onslaught_gen_health" "TODO: describe me"
+"g_pickup_armorlarge" "TODO: describe me"
+"g_pickup_armorlarge_max" "TODO: describe me"
+"g_pickup_armormedium" "TODO: describe me"
+"g_pickup_armormedium_max" "TODO: describe me"
+"g_pickup_armorsmall" "TODO: describe me"
+"g_pickup_armorsmall_max" "TODO: describe me"
+"g_pickup_cells" "TODO: describe me"
+"g_pickup_cells_max" "TODO: describe me"
+"g_pickup_healthlarge" "TODO: describe me"
+"g_pickup_healthlarge_max" "TODO: describe me"
+"g_pickup_healthmedium" "TODO: describe me"
+"g_pickup_healthmedium_max" "TODO: describe me"
+"g_pickup_healthmega" "TODO: describe me"
+"g_pickup_healthmega_max" "TODO: describe me"
+"g_pickup_healthsmall" "TODO: describe me"
+"g_pickup_healthsmall_max" "TODO: describe me"
+"g_pickup_items" "TODO: describe me"
+"g_pickup_nails" "TODO: describe me"
+"g_pickup_nails_max" "TODO: describe me"
+"g_pickup_respawntime_long" "TODO: describe me"
+"g_pickup_respawntime_medium" "TODO: describe me"
+"g_pickup_respawntime_powerup" "TODO: describe me"
+"g_pickup_respawntime_short" "TODO: describe me"
+"g_pickup_rockets" "TODO: describe me"
+"g_pickup_rockets_max" "TODO: describe me"
+"g_pickup_shells" "TODO: describe me"
+"g_pickup_shells_max" "TODO: describe me"
+"g_player_alpha" "TODO: describe me"
+"g_player_brightness" "TODO: describe me"
+"g_powerup_shield" "TODO: describe me"
+"g_powerup_strength" "TODO: describe me"
+"g_powerup_superhealth" "TODO: describe me"
+"g_projectiles_newton_style" "TODO: describe me"
+"g_race_laps_limit" "TODO: describe me"
+"g_race_qualifying" "TODO: describe me"
+"g_race_teams" "TODO: describe me"
+"g_respawn_delay" "TODO: describe me"
+"g_respawn_mapsettings" "TODO: describe me"
+"g_respawn_waves" "TODO: describe me"
+"g_rocketarena" "TODO: describe me"
+"g_rune_respawn_delay" "TODO: describe me"
+"g_rune_respawn_waves" "TODO: describe me"
+"g_runematch_allow_same" "TODO: describe me"
+"g_runematch_drop_runes_max" "TODO: describe me"
+"g_runematch_frags_killed_runeholder" "TODO: describe me"
+"g_runematch_frags_killedby_runeholder" "TODO: describe me"
+"g_runematch_frags_norune" "TODO: describe me"
+"g_runematch_point_limit" "TODO: describe me"
+"g_runematch_pointamt" "TODO: describe me"
+"g_runematch_pointrate" "TODO: describe me"
+"g_runematch_respawntime" "TODO: describe me"
+"g_runematch_rune_alpha" "TODO: describe me"
+"g_runematch_rune_color_strength" "TODO: describe me"
+"g_runematch_rune_effects" "TODO: describe me"
+"g_runematch_rune_glow_color" "TODO: describe me"
+"g_runematch_rune_glow_size" "TODO: describe me"
+"g_runematch_shuffletime" "TODO: describe me"
+"g_shocknex" "TODO: describe me"
+"g_shootfromcenter" "TODO: describe me"
+"g_shootfromeye" "TODO: describe me"
+"g_spawn_furthest" "TODO: describe me"
+"g_spawnpoints_auto_move_out_of_solid" "TODO: describe me"
+"g_spawnpoints_autodrop" "TODO: describe me"
+"g_spawnshieldtime" "TODO: describe me"
+"g_spawnsound" "TODO: describe me"
+"g_start_ammo_cells" "TODO: describe me"
+"g_start_ammo_nails" "TODO: describe me"
+"g_start_ammo_rockets" "TODO: describe me"
+"g_start_ammo_shells" "TODO: describe me"
+"g_start_weapon_crylink" "TODO: describe me"
+"g_start_weapon_electro" "TODO: describe me"
+"g_start_weapon_grenadelauncher" "TODO: describe me"
+"g_start_weapon_hagar" "TODO: describe me"
+"g_start_weapon_laser" "TODO: describe me"
+"g_start_weapon_minstanex" "TODO: describe me"
+"g_start_weapon_nex" "TODO: describe me"
+"g_start_weapon_porto" "TODO: describe me"
+"g_start_weapon_rocketlauncher" "TODO: describe me"
+"g_start_weapon_shotgun" "TODO: describe me"
+"g_start_weapon_uzi" "TODO: describe me"
+"g_tdm_respawn_delay" "TODO: describe me"
+"g_tdm_respawn_waves" "TODO: describe me"
+"g_tdm_teams" "TODO: describe me"
+"g_throughfloor" "TODO: describe me"
+"g_use_ammunition" "TODO: describe me"
+"g_vampire" "TODO: describe me"
+"g_warmup" "TODO: describe me"
+"g_warmup_allguns" "TODO: describe me"
+"g_warmup_allow_timeout" "TODO: describe me"
+"g_warmup_limit" "TODO: describe me"
+"g_warmup_start_ammo_cells" "TODO: describe me"
+"g_warmup_start_ammo_nails" "TODO: describe me"
+"g_warmup_start_ammo_rockets" "TODO: describe me"
+"g_warmup_start_ammo_shells" "TODO: describe me"
+"g_warmup_start_armor" "TODO: describe me"
+"g_warmup_start_health" "TODO: describe me"
+"g_waypointeditor" "TODO: describe me"
+"g_waypoints_for_items" "TODO: describe me"
+"g_waypointsprite_deadlifetime" "TODO: describe me"
+"g_waypointsprite_deployed_lifetime" "TODO: describe me"
+"g_waypointsprite_distancealphaexponent" "TODO: describe me"
+"g_waypointsprite_limitedrange" "TODO: describe me"
+"g_waypointsprite_minalpha" "TODO: describe me"
+"g_waypointsprite_minscale" "TODO: describe me"
+"g_waypointsprite_normdistance" "TODO: describe me"
+"g_waypointsprite_stuffbinds" "TODO: describe me"
+"g_waypointsprite_timealphaexponent" "TODO: describe me"
+"g_weapon_stay" "TODO: describe me"
+"g_weaponreplace_1" "TODO: describe me"
+"g_weaponreplace_10" "TODO: describe me"
+"g_weaponreplace_11" "TODO: describe me"
+"g_weaponreplace_2" "TODO: describe me"
+"g_weaponreplace_3" "TODO: describe me"
+"g_weaponreplace_4" "TODO: describe me"
+"g_weaponreplace_5" "TODO: describe me"
+"g_weaponreplace_6" "TODO: describe me"
+"g_weaponreplace_7" "TODO: describe me"
+"g_weaponreplace_8" "TODO: describe me"
+"g_weaponreplace_9" "TODO: describe me"
+"gameversion"
+"host_framerate"
+"host_speeds"
+"lastlevel" "TODO: describe me"
+"minplayers" "TODO: describe me"
+"mod_q3bsp_curves_collisions"
+"mod_q3bsp_debugtracebrush"
+"mod_q3bsp_optimizedtraceline"
+"net_connectfloodblockingtimeout"
+"net_connecttimeout"
+"net_messagetimeout"
+"nextmap" "TODO: describe me"
+"noaim"
+"noexit"
+"nomonsters"
+"pausable"
+"pr_checkextension"
+"prvm_backtraceforwarnings"
+"prvm_errordump"
+"prvm_leaktest"
+"prvm_leaktest_ignore_classnames"
+"prvm_statementprofiling"
+"prvm_traceqc"
+"quit_and_redirect" "TODO: describe me"
+"quit_when_empty" "TODO: describe me"
+"registered"
+"samelevel"
+"saved1"
+"saved2"
+"saved3"
+"saved4"
+"scratch1"
+"scratch2"
+"scratch3"
+"scratch4"
+"skill"
+"skill_auto" "TODO: describe me"
+"skin"
+"slowmo"
+"sv_accelerate"
+"sv_adminnick"
+"sv_aim"
+"sv_airaccel_qw"
+"sv_airaccel_sideways_friction"
+"sv_airaccelerate"
+"sv_allow_shownames" "TODO: describe me"
+"sv_allowdownloads"
+"sv_areagrid_mingridsize"
+"sv_autoscreenshot" "TODO: describe me"
+"sv_cheats"
+"sv_checkforpacketsduringsleep"
+"sv_clmovement_enable"
+"sv_clmovement_minping"
+"sv_clmovement_minping_disabletime"
+"sv_clmovement_waitforinput"
+"sv_cullentities_nevercullbmodels"
+"sv_cullentities_pvs"
+"sv_cullentities_stats"
+"sv_cullentities_trace"
+"sv_cullentities_trace_delay"
+"sv_cullentities_trace_delay_players"
+"sv_cullentities_trace_enlarge"
+"sv_cullentities_trace_prediction"
+"sv_cullentities_trace_samples"
+"sv_cullentities_trace_samples_extra"
+"sv_cullentities_trace_samples_players"
+"sv_debugmove"
+"sv_defaultcharacter" "TODO: describe me"
+"sv_defaultplayercolors" "TODO: describe me"
+"sv_defaultplayermodel" "TODO: describe me"
+"sv_defaultplayermodel_blue" "TODO: describe me"
+"sv_defaultplayermodel_pink" "TODO: describe me"
+"sv_defaultplayermodel_red" "TODO: describe me"
+"sv_defaultplayermodel_yellow" "TODO: describe me"
+"sv_defaultplayerskin" "TODO: describe me"
+"sv_defaultplayerskin_blue" "TODO: describe me"
+"sv_defaultplayerskin_pink" "TODO: describe me"
+"sv_defaultplayerskin_red" "TODO: describe me"
+"sv_defaultplayerskin_yellow" "TODO: describe me"
+"sv_doublejump" "TODO: describe me"
+"sv_echobprint"
+"sv_entpatch"
+"sv_fixedframeratesingleplayer"
+"sv_foginterval" "TODO: describe me"
+"sv_freezenonclients"
+"sv_friction"
+"sv_friction_on_land" "TODO: describe me"
+"sv_gameplayfix_blowupfallenzombies"
+"sv_gameplayfix_delayprojectiles"
+"sv_gameplayfix_droptofloorstartsolid"
+"sv_gameplayfix_droptofloorstartsolid_nudgetocorrect"
+"sv_gameplayfix_easierwaterjump"
+"sv_gameplayfix_findradiusdistancetobox"
+"sv_gameplayfix_grenadebouncedownslopes"
+"sv_gameplayfix_multiplethinksperframe"
+"sv_gameplayfix_noairborncorpse"
+"sv_gameplayfix_setmodelrealbox"
+"sv_gameplayfix_stepdown"
+"sv_gameplayfix_stepwhilejumping"
+"sv_gameplayfix_swiminbmodels"
+"sv_gameplayfix_upwardvelocityclearsongroundflag"
+"sv_gravity"
+"sv_heartbeatperiod"
+"sv_idealpitchscale"
+"sv_intermission_cdtrack" "TODO: describe me"
+"sv_jumpstep"
+"sv_jumpvelocity"
+"sv_mapchange_delay" "TODO: describe me"
+"sv_maxairspeed"
+"sv_maxidle" "TODO: describe me"
+"sv_maxidle_spectatorsareidle" "TODO: describe me"
+"sv_maxrate"
+"sv_maxspeed"
+"sv_maxvelocity"
+"sv_newflymove"
+"sv_nostep"
+"sv_playerphysicsqc"
+"sv_pogostick" "TODO: describe me"
+"sv_precacheitems" "TODO: describe me"
+"sv_precacheplayermodels" "TODO: describe me"
+"sv_precacheweapons" "TODO: describe me"
+"sv_progs"
+"sv_protocolname"
+"sv_public"
+"sv_q3acompat_machineshotgunswap" "TODO: describe me"
+"sv_random_seed"
+"sv_ratelimitlocalplayer"
+"sv_ready_restart" "TODO: describe me"
+"sv_ready_restart_after_countdown" "TODO: describe me"
+"sv_ready_restart_repeatable" "TODO: describe me"
+"sv_servermodelsonly" "TODO: describe me"
+"sv_sound_land"
+"sv_sound_watersplash"
+"sv_spectate" "TODO: describe me"
+"sv_spectator_speed_multiplier" "TODO: describe me"
+"sv_status_privacy"
+"sv_stepheight"
+"sv_stopspeed"
+"sv_timeout" "TODO: describe me"
+"sv_timeout_leadtime" "TODO: describe me"
+"sv_timeout_length" "TODO: describe me"
+"sv_timeout_number" "TODO: describe me"
+"sv_timeout_resumetime" "TODO: describe me"
+"sv_vote_call" "TODO: describe me"
+"sv_vote_change" "TODO: describe me"
+"sv_vote_commands" "TODO: describe me"
+"sv_vote_majority_factor" "TODO: describe me"
+"sv_vote_master" "TODO: describe me"
+"sv_vote_nospectators" "TODO: describe me"
+"sv_vote_override_mostrecent" "TODO: describe me"
+"sv_vote_simple_majority" "TODO: describe me"
+"sv_vote_singlecount" "TODO: describe me"
+"sv_vote_timeout" "TODO: describe me"
+"sv_vote_wait" "TODO: describe me"
+"sv_wallfriction"
+"sv_wateraccelerate"
+"sv_waterfriction"
+"sv_writepicture_quality"
+"sys_ticrate"
+"sys_useclockgettime"
+"sys_usenoclockbutbenchmark"
+"team"
+"teamplay_default" "TODO: describe me"
+"teamplay_lockonrestart" "TODO: describe me"
+"temp1"
+"timeformat"
+"timelimit_decrement" "TODO: describe me"
+"timelimit_increment" "TODO: describe me"
+"timelimit_max" "TODO: describe me"
+"timelimit_maxovertime" "TODO: describe me"
+"timelimit_min" "TODO: describe me"
+"timelimit_override" "TODO: describe me"
+"welcome_message_time" "TODO: describe me"

Copied: branches/nexuiz-2.0/data/cvars.txt.pl (from rev 4618, trunk/data/cvars.txt.pl)
===================================================================
--- branches/nexuiz-2.0/data/cvars.txt.pl	                        (rev 0)
+++ branches/nexuiz-2.0/data/cvars.txt.pl	2008-10-03 18:32:25 UTC (rev 4619)
@@ -0,0 +1,1136 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+my $ignore_re = qr{
+|	_.*                              # temp cvars
+
+|	csqc_.*                          # internal
+|	gamecfg                          # internal
+|	g_configversion                  # internal
+|	g_maplist_index                  # internal
+|	halflifebsp                      # internal
+
+|	cl_.*	                         # client
+|	con_.*	                         # client
+|	g_campaign.*                     # client
+|	gl_.*	                         # client
+|	joy.*	                         # client
+|	menu_.*	                         # client
+|	mod_q3bsp_lightmapmergepower     # client
+|	net_slist_.*	                 # client
+|	r_.*                             # client
+|	sbar_.*	                         # client
+|	scr_.*	                         # client
+|	userbind.*                       # client
+|	v_.*                             # client
+|	vid_.*                           # client
+
+|	g_banned_list                    # private
+|	log_dest_udp                     # private
+|	log_file                         # private
+|	net_address                      # private
+|	port                             # private
+|	rcon_.*                          # private
+|	savedgamecfg                     # private
+|	settemp_.*                       # private
+|	sv_allowdownloads_.*             # private
+|	sv_autodemo.*                    # private
+|	sv_curl_.*                       # private
+|	sv_eventlog.*                    # private
+|	sv_heartbeatperoid               # private
+|	sv_logscores_.*                  # private
+|	sv_master.*                      # private
+|	sv_vote_master_password          # private
+|	sys_colortranslation             # private
+|	sys_specialcharactertranslation  # private
+|	timestamps                       # private
+
+|	capturelimit                     # mapinfo
+|	timelimit                        # mapinfo
+|	fraglimit                        # mapinfo
+|	g_arena                          # mapinfo
+|	g_assault                        # mapinfo
+|	g_ctf                            # mapinfo
+|	g_dm                             # mapinfo
+|	g_domination                     # mapinfo
+|	g_keyhunt                        # mapinfo
+|	g_keyhunt_teams                  # mapinfo
+|	g_onslaught                      # mapinfo
+|	g_race                           # mapinfo
+|	g_runematch                      # mapinfo
+|	g_tdm                            # mapinfo
+|	teamplay                         # mapinfo
+
+|	hostname                         # shown already
+|	g_maplist                        # too long
+|	g_maplist_mostrecent             # too long
+|	sv_motd                          # too long
+}x;
+
+while(<DATA>)
+{
+	chomp;
+	if(/^\^7([a-z0-9_]*) is "(.*?)" \["(.*?)"\] (.*)$/)
+	{
+		my ($cvar, $value, $default, $description) = ($1, $2, $3, $4);
+		if($cvar =~ /^$ignore_re$/)
+		{
+			next;
+		}
+		if($default ne $value)
+		{
+			die "Run this on a DEFAULT config ($cvar has been changed from $default to $value)";
+		}
+		if($description eq 'custom cvar')
+		{
+			print "\"$cvar\" \"TODO: describe me\"\n";
+		}
+		else
+		{
+			print "\"$cvar\"\n";
+		}
+	}
+}
+
+__DATA__
+====== Log started (Mon Sep 29 13:10:47 2008) ======
+^7_alientrap_net_banlist is "" [""] custom cvar
+^7_backup_con_chatvars_set is "0" ["0"] custom cvar
+^7_cl_color is "102" ["102"] internal storage cvar for current player colors (changed by color command)
+^7_cl_name is "Player" ["Player"] internal storage cvar for current player name (changed by name command)
+^7_cl_playermodel is "models/player/marine.zym" ["models/player/marine.zym"] internal storage cvar for current player model in Nexuiz (changed by playermodel command)
+^7_cl_playerskin is "0" ["0"] internal storage cvar for current player skin in Nexuiz (changed by playerskin command)
+^7_cl_rate is "20000" ["20000"] internal storage cvar for current rate (changed by rate command)
+^7_supports_weaponpriority is "0" ["0"] custom cvar
+^7_sv_init is "0" ["1"] custom cvar
+^7_update_0_have_r_glsl_cb is "1" ["1"] custom cvar
+^7bot_ai_aimskill_blendrate is "2" ["2"] custom cvar
+^7bot_ai_aimskill_firetolerance_distdegrees is "180" ["180"] custom cvar
+^7bot_ai_aimskill_firetolerance_maxdegrees is "45" ["45"] custom cvar
+^7bot_ai_aimskill_firetolerance_mindegrees is "2" ["2"] custom cvar
+^7bot_ai_aimskill_fixedrate is "15" ["15"] custom cvar
+^7bot_ai_aimskill_mouse is "1" ["1"] custom cvar
+^7bot_ai_aimskill_offset is "1" ["1"] custom cvar
+^7bot_ai_aimskill_order_filter_1st is "0.2" ["0.2"] custom cvar
+^7bot_ai_aimskill_order_filter_2nd is "0.2" ["0.2"] custom cvar
+^7bot_ai_aimskill_order_filter_3th is "0.05" ["0.05"] custom cvar
+^7bot_ai_aimskill_order_filter_4th is "0.25" ["0.25"] custom cvar
+^7bot_ai_aimskill_order_filter_5th is "0.3" ["0.3"] custom cvar
+^7bot_ai_aimskill_order_mix_1st is "0.01" ["0.01"] custom cvar
+^7bot_ai_aimskill_order_mix_2nd is "0.1" ["0.1"] custom cvar
+^7bot_ai_aimskill_order_mix_3th is "0.01" ["0.01"] custom cvar
+^7bot_ai_aimskill_order_mix_4th is "0.05" ["0.05"] custom cvar
+^7bot_ai_aimskill_order_mix_5th is "0.01" ["0.01"] custom cvar
+^7bot_ai_aimskill_think is "1" ["1"] custom cvar
+^7bot_ai_chooseweaponinterval is "0.3" ["0.3"] custom cvar
+^7bot_ai_dangerdetectioninterval is "0.1" ["0.1"] custom cvar
+^7bot_ai_dangerdetectionupdates is "64" ["64"] custom cvar
+^7bot_ai_dodgeupdateinterval is "0.1" ["0.1"] custom cvar
+^7bot_ai_enemydetectioninterval is "0.5" ["0.5"] custom cvar
+^7bot_ai_keyboard_distance is "250" ["250"] custom cvar
+^7bot_ai_keyboard_treshold is "0.57" ["0.57"] custom cvar
+^7bot_ai_strategyinterval is "2" ["2"] custom cvar
+^7bot_ai_thinkinterval is "0.05" ["0.05"] custom cvar
+^7bot_ignore_bots is "0" ["0"] custom cvar
+^7bot_join_empty is "0" ["0"] custom cvar
+^7bot_nofire is "0" ["0"] custom cvar
+^7bot_number is "0" ["0"] custom cvar
+^7bot_prefix is "[BOT]" ["[BOT]"] custom cvar
+^7bot_suffix is "" [""] custom cvar
+^7bot_usemodelnames is "0" ["0"] custom cvar
+^7bot_vs_human is "0" ["0"] custom cvar
+^7capturelimit is "0" ["0"] custom cvar
+^7capturelimit_override is "-1" ["-1"] custom cvar
+^7cl_autoswitch is "1" ["1"] custom cvar
+^7cl_curl_enabled is "1" ["1"] whether client's download support is enabled
+^7cl_curl_maxdownloads is "1" ["1"] maximum number of concurrent HTTP/FTP downloads
+^7cl_curl_maxspeed is "300" ["300"] maximum download speed (KiB/s)
+^7cl_gravity is "800" ["800"] custom cvar
+^7cl_hidewaypoints is "0" ["0"] custom cvar
+^7cl_maxfps is "0" ["0"] maximum fps cap, 0 = unlimited, if game is running faster than this it will wait before running another frame (useful to make cpu time available to other programs)
+^7cl_maxidlefps is "20" ["20"] maximum fps cap when the game is not the active window (makes cpu time available to other programs
+^7cl_minfps is "40" ["40"] minimum fps target - while the rendering performance is below this, it will drift toward lower quality
+^7cl_minfps_fade is "0.2" ["0.2"] how fast the quality adapts to varying framerate
+^7cl_minfps_qualitymax is "1" ["1"] highest allowed drawdistance multiplier
+^7cl_minfps_qualitymin is "0.25" ["0.25"] lowest allowed drawdistance multiplier
+^7cl_minfps_qualitypower is "4" ["4"] raises quality value to a power of itself, higher values make quality drop more sharply in relation to framerate
+^7cl_minfps_qualityscale is "0.5" ["0.5"] multiplier for quality
+^7cl_netlocalping is "0" ["0"] lags local loopback connection by this much ping time (useful to play more fairly on your own server with people with higher pings)
+^7cl_netpacketloss_receive is "0" ["0"] drops this percentage of incoming packets, useful for testing network protocol robustness (jerky movement, effects failing to start, sounds failing to play, etc)
+^7cl_netpacketloss_send is "0" ["0"] drops this percentage of outgoing packets, useful for testing network protocol robustness (jerky movement, prediction errors, etc)
+^7cl_nogibs is "0" ["0"] custom cvar
+^7cl_playerdetailreduction is "0" ["0"] custom cvar
+^7cl_port is "0" ["0"] forces client to use chosen port number if not 0
+^7cl_shownames is "1" ["1"] custom cvar
+^7cl_weaponpriority is "10 9 8 11 7 6 5 4 3 2 1" ["10 9 8 11 7 6 5 4 3 2 1"] custom cvar
+^7cl_weaponpriority0 is "9 8 4" ["9 8 4"] custom cvar
+^7cl_weaponpriority1 is "7 6 5 1" ["7 6 5 1"] custom cvar
+^7cl_weaponpriority2 is "7 3" ["7 3"] custom cvar
+^7cl_weaponpriority3 is "7 3 2" ["7 3 2"] custom cvar
+^7cl_weaponpriority4 is "8 6 5 2" ["8 6 5 2"] custom cvar
+^7cl_weaponpriority5 is "" [""] custom cvar
+^7cl_weaponpriority6 is "" [""] custom cvar
+^7cl_weaponpriority7 is "" [""] custom cvar
+^7cl_weaponpriority8 is "" [""] custom cvar
+^7cl_weaponpriority9 is "" [""] custom cvar
+^7cl_weaponpriority_useforcycling is "0" ["0"] custom cvar
+^7cl_zoomfactor is "5" ["5"] custom cvar
+^7cl_zoomsensitivity is "0" ["0"] custom cvar
+^7cl_zoomspeed is "3.5" ["3.5"] custom cvar
+^7cmdline is "/nexuiz/haggerCTF/Nexuiz/darkplaces/nexuiz-dedicated " ["/nexuiz/haggerCTF/Nexuiz/darkplaces/nexuiz-dedicated "] contains commandline the engine was launched with
+^7collision_endnudge is "0" ["0"] how much to bias collision trace end
+^7collision_enternudge is "0" ["0"] how much to bias collision entry fraction
+^7collision_impactnudge is "0.03125" ["0.03125"] how much to back off from the impact
+^7collision_leavenudge is "0" ["0"] how much to bias collision exit fraction
+^7collision_prefernudgedfraction is "1" ["1"] whether to sort collision events by nudged fraction (1) or real fraction (0)
+^7collision_startnudge is "0" ["0"] how much to bias collision trace start
+^7con_chat is "5" ["5"] how many chat lines to show in a dedicated chat area
+^7con_chatpos is "-7" ["-7"] where to put chat (negative: lines from bottom of screen, positive: lines below notify, 0: at top)
+^7con_chatsize is "10" ["10"] chat text size in virtual 2D pixels (if con_chat is enabled)
+^7con_chattime is "30" ["30"] how long chat lines last, in seconds
+^7con_chatwidth is "0.6" ["0.6"] relative chat window width
+^7con_completion_chmap is "map" ["map"] custom cvar
+^7con_completion_exec is "*.cfg" ["*.cfg"] (null)
+^7con_completion_gotomap is "map" ["map"] custom cvar
+^7con_completion_playdemo is "*.dem" ["*.dem"] (null)
+^7con_completion_ply is "*.dem" ["*.dem"] custom cvar
+^7con_completion_tdem is "*.dem" ["*.dem"] custom cvar
+^7con_completion_timedemo is "*.dem" ["*.dem"] (null)
+^7con_completion_vdomap is "map" ["map"] custom cvar
+^7con_completion_vmap is "map" ["map"] custom cvar
+^7con_nickcompletion is "1" ["1"] tab-complete nicks in console and message input
+^7con_nickcompletion_flags is "11" ["11"] Bitfield: 0: add nothing after completion. 1: add the last color after completion. 2: add a quote when starting a quote instead of the color. 4: will replace 1, will force color, even after a quote. 8: ignore non-alphanumerics. 16: ignore spaces. 
+^7con_notify is "4" ["4"] how many notify lines to show
+^7con_notifyalign is "" [""] how to align notify lines: 0 = left, 0.5 = center, 1 = right, empty string = game default)
+^7con_notifysize is "10" ["10"] notify text size in virtual 2D pixels
+^7con_notifytime is "3" ["3"] how long notify lines last, in seconds
+^7con_textsize is "8" ["8"] console text size in virtual 2D pixels
+^7coop is "0" ["0"] coop mode, 0 = no coop, 1 = coop mode, multiple players playing through the singleplayer game (coop mode also shuts off deathmatch)
+^7csqc_progcrc is "-1" ["-1"] CRC of csprogs.dat file to load (-1 is none), only used during level changes and then reset to -1
+^7csqc_progname is "csprogs.dat" ["csprogs.dat"] name of csprogs.dat file to load
+^7csqc_progsize is "-1" ["-1"] file size of csprogs.dat file to load (-1 is none), only used during level changes and then reset to -1
+^7cutscene is "1" ["1"] enables cutscenes in nehahra, can be used by other mods
+^7deathmatch is "1" ["1"] deathmatch mode, values depend on mod but typically 0 = no deathmatch, 1 = normal deathmatch with respawning weapons, 2 = weapons stay (players can only pick up new weapons)
+^7deathmatch_force_teamplay is "0" ["0"] custom cvar
+^7developer is "0" ["0"] prints additional debugging messages and information (recommended for modders and level designers)
+^7developer_entityparsing is "0" ["0"] prints detailed network entities information each time a packet is received
+^7developer_loadfile is "0" ["0"] prints name and size of every file loaded via the FS_LoadFile function (which is almost everything)
+^7developer_loading is "0" ["0"] prints information about files as they are loaded or unloaded successfully
+^7developer_memory is "0" ["0"] prints debugging information about memory allocations
+^7developer_memorydebug is "0" ["0"] enables memory corruption checks (very slow)
+^7developer_networking is "0" ["0"] prints all received and sent packets (recommended only for debugging)
+^7edgefriction is "1" ["1"] how much you slow down when nearing a ledge you might fall off
+^7ekg is "0" ["0"] custom cvar
+^7fraglimit is "30" ["0"] ends level if this many frags is reached by any player
+^7fraglimit_override is "-1" ["-1"] custom cvar
+^7fs_empty_files_in_pack_mark_deletions is "1" ["1"] if enabled, empty files in a pak/pk3 count as not existing but cancel the search in further packs, effectively allowing patch pak/pk3 files to 'delete' files
+^7g_antilag is "1" ["1"] custom cvar
+^7g_arena is "0" ["0"] custom cvar
+^7g_arena_maxspawned is "2" ["2"] custom cvar
+^7g_arena_powerups is "0" ["0"] custom cvar
+^7g_arena_roundbased is "1" ["1"] custom cvar
+^7g_arena_warmup is "5" ["5"] custom cvar
+^7g_assault is "0" ["0"] custom cvar
+^7g_balance_armor_blockpercent is "0.6" ["0.6"] custom cvar
+^7g_balance_armor_limit is "999" ["999"] custom cvar
+^7g_balance_armor_regen is "0" ["0"] custom cvar
+^7g_balance_armor_regenlinear is "0" ["0"] custom cvar
+^7g_balance_armor_rot is "0.1" ["0.1"] custom cvar
+^7g_balance_armor_rotlinear is "0" ["0"] custom cvar
+^7g_balance_armor_stable is "100" ["100"] custom cvar
+^7g_balance_armor_start is "0" ["0"] custom cvar
+^7g_balance_cloaked_alpha is "0.25" ["0.25"] custom cvar
+^7g_balance_crylink_primary_ammo is "2" ["2"] custom cvar
+^7g_balance_crylink_primary_animtime is "0.3" ["0.3"] custom cvar
+^7g_balance_crylink_primary_bouncedamagefactor is "0.5" ["0.5"] custom cvar
+^7g_balance_crylink_primary_bounces is "1" ["1"] custom cvar
+^7g_balance_crylink_primary_damage is "20" ["20"] custom cvar
+^7g_balance_crylink_primary_edgedamage is "0" ["0"] custom cvar
+^7g_balance_crylink_primary_force is "-55" ["-55"] custom cvar
+^7g_balance_crylink_primary_middle_fadetime is "5" ["5"] custom cvar
+^7g_balance_crylink_primary_middle_lifetime is "5" ["5"] custom cvar
+^7g_balance_crylink_primary_other_fadetime is "0.2" ["0.2"] custom cvar
+^7g_balance_crylink_primary_other_lifetime is "0.1" ["0.1"] custom cvar
+^7g_balance_crylink_primary_radius is "80" ["80"] custom cvar
+^7g_balance_crylink_primary_refire is "0.4" ["0.4"] custom cvar
+^7g_balance_crylink_primary_shots is "4" ["4"] custom cvar
+^7g_balance_crylink_primary_speed is "7000" ["7000"] custom cvar
+^7g_balance_crylink_primary_spread is "0.03" ["0.03"] custom cvar
+^7g_balance_crylink_primary_star_fadetime is "0.2" ["0.2"] custom cvar
+^7g_balance_crylink_primary_star_lifetime is "0.1" ["0.1"] custom cvar
+^7g_balance_crylink_secondary_ammo is "2" ["2"] custom cvar
+^7g_balance_crylink_secondary_animtime is "0.3" ["0.3"] custom cvar
+^7g_balance_crylink_secondary_bouncedamagefactor is "0.5" ["0.5"] custom cvar
+^7g_balance_crylink_secondary_bounces is "0" ["0"] custom cvar
+^7g_balance_crylink_secondary_damage is "20" ["20"] custom cvar
+^7g_balance_crylink_secondary_edgedamage is "0" ["0"] custom cvar
+^7g_balance_crylink_secondary_force is "-55" ["-55"] custom cvar
+^7g_balance_crylink_secondary_line_fadetime is "2" ["2"] custom cvar
+^7g_balance_crylink_secondary_line_lifetime is "2" ["2"] custom cvar
+^7g_balance_crylink_secondary_middle_fadetime is "5" ["5"] custom cvar
+^7g_balance_crylink_secondary_middle_lifetime is "5" ["5"] custom cvar
+^7g_balance_crylink_secondary_radius is "3" ["3"] custom cvar
+^7g_balance_crylink_secondary_refire is "0.5" ["0.5"] custom cvar
+^7g_balance_crylink_secondary_shots is "7" ["7"] custom cvar
+^7g_balance_crylink_secondary_speed is "7000" ["7000"] custom cvar
+^7g_balance_crylink_secondary_spread is "0.08" ["0.08"] custom cvar
+^7g_balance_curse_empathy_minhealth is "20" ["20"] custom cvar
+^7g_balance_curse_empathy_takedamage is "-0.4" ["-0.4"] custom cvar
+^7g_balance_curse_slow_atkrate is "1.5" ["1.5"] custom cvar
+^7g_balance_curse_slow_jumpheight is "1.0" ["1.0"] custom cvar
+^7g_balance_curse_slow_moverate is "0.8" ["0.8"] custom cvar
+^7g_balance_curse_venom_hpmod is "0.6" ["0.6"] custom cvar
+^7g_balance_curse_venom_limitmod is "1" ["1"] custom cvar
+^7g_balance_curse_venom_rotrate is "3.0" ["3.0"] custom cvar
+^7g_balance_curse_vulner_takedamage is "2.0" ["2.0"] custom cvar
+^7g_balance_curse_weak_damage is "0.5" ["0.5"] custom cvar
+^7g_balance_curse_weak_force is "0.6" ["0.6"] custom cvar
+^7g_balance_electro_combo_damage is "70" ["70"] custom cvar
+^7g_balance_electro_combo_edgedamage is "0" ["0"] custom cvar
+^7g_balance_electro_combo_force is "200" ["200"] custom cvar
+^7g_balance_electro_combo_radius is "250" ["250"] custom cvar
+^7g_balance_electro_primary_ammo is "2" ["2"] custom cvar
+^7g_balance_electro_primary_animtime is "0.3" ["0.3"] custom cvar
+^7g_balance_electro_primary_damage is "80" ["80"] custom cvar
+^7g_balance_electro_primary_edgedamage is "0" ["0"] custom cvar
+^7g_balance_electro_primary_force is "200" ["200"] custom cvar
+^7g_balance_electro_primary_lifetime is "30" ["30"] custom cvar
+^7g_balance_electro_primary_radius is "150" ["150"] custom cvar
+^7g_balance_electro_primary_refire is "0.6" ["0.6"] custom cvar
+^7g_balance_electro_primary_speed is "2000" ["2000"] custom cvar
+^7g_balance_electro_secondary_ammo is "2" ["2"] custom cvar
+^7g_balance_electro_secondary_animtime is "0.3" ["0.3"] custom cvar
+^7g_balance_electro_secondary_damage is "60" ["60"] custom cvar
+^7g_balance_electro_secondary_edgedamage is "0" ["0"] custom cvar
+^7g_balance_electro_secondary_force is "200" ["200"] custom cvar
+^7g_balance_electro_secondary_health is "5" ["5"] custom cvar
+^7g_balance_electro_secondary_lifetime is "5" ["5"] custom cvar
+^7g_balance_electro_secondary_radius is "150" ["150"] custom cvar
+^7g_balance_electro_secondary_refire is "0.3" ["0.3"] custom cvar
+^7g_balance_electro_secondary_speed is "900" ["900"] custom cvar
+^7g_balance_electro_secondary_speed_up is "200" ["200"] custom cvar
+^7g_balance_electro_secondary_spread is "0.05" ["0.05"] custom cvar
+^7g_balance_falldamage_deadminspeed is "150" ["150"] custom cvar
+^7g_balance_falldamage_factor is "0.15" ["0.15"] custom cvar
+^7g_balance_falldamage_maxdamage is "25" ["25"] custom cvar
+^7g_balance_falldamage_minspeed is "1400" ["1400"] custom cvar
+^7g_balance_grapplehook_airfriction is "0.2" ["0.2"] custom cvar
+^7g_balance_grapplehook_force_rubber is "2000" ["2000"] custom cvar
+^7g_balance_grapplehook_force_rubber_overstretch is "1000" ["1000"] custom cvar
+^7g_balance_grapplehook_health is "130" ["130"] custom cvar
+^7g_balance_grapplehook_length_min is "50" ["50"] custom cvar
+^7g_balance_grapplehook_speed_fly is "1800" ["1800"] custom cvar
+^7g_balance_grapplehook_speed_pull is "2000" ["2000"] custom cvar
+^7g_balance_grapplehook_stretch is "50" ["50"] custom cvar
+^7g_balance_grenadelauncher_primary_ammo is "2" ["2"] custom cvar
+^7g_balance_grenadelauncher_primary_animtime is "0.3" ["0.3"] custom cvar
+^7g_balance_grenadelauncher_primary_damage is "65" ["65"] custom cvar
+^7g_balance_grenadelauncher_primary_edgedamage is "35" ["35"] custom cvar
+^7g_balance_grenadelauncher_primary_force is "400" ["400"] custom cvar
+^7g_balance_grenadelauncher_primary_lifetime is "30" ["30"] custom cvar
+^7g_balance_grenadelauncher_primary_radius is "140" ["140"] custom cvar
+^7g_balance_grenadelauncher_primary_refire is "0.7" ["0.7"] custom cvar
+^7g_balance_grenadelauncher_primary_speed is "2000" ["2000"] custom cvar
+^7g_balance_grenadelauncher_primary_speed_up is "200" ["200"] custom cvar
+^7g_balance_grenadelauncher_secondary_ammo is "2" ["2"] custom cvar
+^7g_balance_grenadelauncher_secondary_animtime is "0.3" ["0.3"] custom cvar
+^7g_balance_grenadelauncher_secondary_damage is "65" ["65"] custom cvar
+^7g_balance_grenadelauncher_secondary_edgedamage is "35" ["35"] custom cvar
+^7g_balance_grenadelauncher_secondary_force is "400" ["400"] custom cvar
+^7g_balance_grenadelauncher_secondary_health is "10" ["10"] custom cvar
+^7g_balance_grenadelauncher_secondary_lifetime is "2.5" ["2.5"] custom cvar
+^7g_balance_grenadelauncher_secondary_radius is "140" ["140"] custom cvar
+^7g_balance_grenadelauncher_secondary_refire is "0.6" ["0.6"] custom cvar
+^7g_balance_grenadelauncher_secondary_speed is "1400" ["1400"] custom cvar
+^7g_balance_grenadelauncher_secondary_speed_up is "200" ["200"] custom cvar
+^7g_balance_hagar_primary_ammo is "1" ["1"] custom cvar
+^7g_balance_hagar_primary_damage is "40" ["40"] custom cvar
+^7g_balance_hagar_primary_edgedamage is "15" ["15"] custom cvar
+^7g_balance_hagar_primary_force is "100" ["100"] custom cvar
+^7g_balance_hagar_primary_lifetime is "30" ["30"] custom cvar
+^7g_balance_hagar_primary_radius is "70" ["70"] custom cvar
+^7g_balance_hagar_primary_refire is "0.15" ["0.15"] custom cvar
+^7g_balance_hagar_primary_speed is "3000" ["3000"] custom cvar
+^7g_balance_hagar_primary_spread is "0.010" ["0.010"] custom cvar
+^7g_balance_hagar_secondary_ammo is "1" ["1"] custom cvar
+^7g_balance_hagar_secondary_damage is "40" ["40"] custom cvar
+^7g_balance_hagar_secondary_edgedamage is "15" ["15"] custom cvar
+^7g_balance_hagar_secondary_force is "100" ["100"] custom cvar
+^7g_balance_hagar_secondary_lifetime is "30" ["30"] custom cvar
+^7g_balance_hagar_secondary_radius is "70" ["70"] custom cvar
+^7g_balance_hagar_secondary_refire is "0.15" ["0.15"] custom cvar
+^7g_balance_hagar_secondary_speed is "1400" ["1400"] custom cvar
+^7g_balance_hagar_secondary_spread is "0.015" ["0.015"] custom cvar
+^7g_balance_health_limit is "999" ["999"] custom cvar
+^7g_balance_health_regen is "0.1" ["0.1"] custom cvar
+^7g_balance_health_regenlinear is "0" ["0"] custom cvar
+^7g_balance_health_rot is "0.1" ["0.1"] custom cvar
+^7g_balance_health_rotlinear is "0" ["0"] custom cvar
+^7g_balance_health_stable is "100" ["100"] custom cvar
+^7g_balance_health_start is "150" ["150"] custom cvar
+^7g_balance_keyhunt_damageforcescale is "1" ["1"] custom cvar
+^7g_balance_keyhunt_delay_collect is "1.5" ["1.5"] custom cvar
+^7g_balance_keyhunt_delay_drop is "0.4" ["0.4"] custom cvar
+^7g_balance_keyhunt_delay_fadeout is "2" ["2"] custom cvar
+^7g_balance_keyhunt_delay_return is "60" ["60"] custom cvar
+^7g_balance_keyhunt_delay_round is "5" ["5"] custom cvar
+^7g_balance_keyhunt_delay_tracking is "10" ["10"] custom cvar
+^7g_balance_keyhunt_dropvelocity is "300" ["300"] custom cvar
+^7g_balance_keyhunt_maxdist is "150" ["150"] custom cvar
+^7g_balance_keyhunt_protecttime is "0.8" ["0.8"] custom cvar
+^7g_balance_keyhunt_score_capture is "100" ["100"] custom cvar
+^7g_balance_keyhunt_score_carrierfrag is "2" ["2"] custom cvar
+^7g_balance_keyhunt_score_collect is "3" ["3"] custom cvar
+^7g_balance_keyhunt_score_destroyed is "50" ["50"] custom cvar
+^7g_balance_keyhunt_score_destroyed_ownfactor is "1" ["1"] custom cvar
+^7g_balance_keyhunt_score_push is "60" ["60"] custom cvar
+^7g_balance_keyhunt_throwvelocity is "400" ["400"] custom cvar
+^7g_balance_kill_delay is "5" ["5"] custom cvar
+^7g_balance_laser_primary_animtime is "0.3" ["0.3"] custom cvar
+^7g_balance_laser_primary_damage is "35" ["35"] custom cvar
+^7g_balance_laser_primary_edgedamage is "10" ["10"] custom cvar
+^7g_balance_laser_primary_force is "400" ["400"] custom cvar
+^7g_balance_laser_primary_lifetime is "30" ["30"] custom cvar
+^7g_balance_laser_primary_radius is "70" ["70"] custom cvar
+^7g_balance_laser_primary_refire is "0.7" ["0.7"] custom cvar
+^7g_balance_laser_primary_speed is "9000" ["9000"] custom cvar
+^7g_balance_laser_secondary is "0" ["0"] custom cvar
+^7g_balance_laser_secondary_animtime is "0.3" ["0.3"] custom cvar
+^7g_balance_laser_secondary_damage is "35" ["35"] custom cvar
+^7g_balance_laser_secondary_edgedamage is "10" ["10"] custom cvar
+^7g_balance_laser_secondary_force is "400" ["400"] custom cvar
+^7g_balance_laser_secondary_lifetime is "30" ["30"] custom cvar
+^7g_balance_laser_secondary_radius is "70" ["70"] custom cvar
+^7g_balance_laser_secondary_refire is "0.7" ["0.7"] custom cvar
+^7g_balance_laser_secondary_speed is "9000" ["9000"] custom cvar
+^7g_balance_minstanex_ammo is "10" ["10"] custom cvar
+^7g_balance_minstanex_animtime is "0.3" ["0.3"] custom cvar
+^7g_balance_minstanex_refire is "1" ["1"] custom cvar
+^7g_balance_nex_ammo is "5" ["5"] custom cvar
+^7g_balance_nex_animtime is "0.3" ["0.3"] custom cvar
+^7g_balance_nex_damage is "140" ["140"] custom cvar
+^7g_balance_nex_force is "600" ["600"] custom cvar
+^7g_balance_nex_refire is "1.5" ["1.5"] custom cvar
+^7g_balance_nixnex_ammo_cells is "15" ["15"] custom cvar
+^7g_balance_nixnex_ammo_nails is "45" ["45"] custom cvar
+^7g_balance_nixnex_ammo_rockets is "15" ["15"] custom cvar
+^7g_balance_nixnex_ammo_shells is "15" ["15"] custom cvar
+^7g_balance_nixnex_ammoincr_cells is "2" ["2"] custom cvar
+^7g_balance_nixnex_ammoincr_nails is "6" ["6"] custom cvar
+^7g_balance_nixnex_ammoincr_rockets is "2" ["2"] custom cvar
+^7g_balance_nixnex_ammoincr_shells is "2" ["2"] custom cvar
+^7g_balance_nixnex_incrtime is "1.6" ["1.6"] custom cvar
+^7g_balance_nixnex_roundtime is "25" ["25"] custom cvar
+^7g_balance_pause_armor_rot is "5" ["5"] custom cvar
+^7g_balance_pause_armor_rot_spawn is "10" ["10"] custom cvar
+^7g_balance_pause_health_regen is "5" ["5"] custom cvar
+^7g_balance_pause_health_regen_spawn is "0" ["0"] custom cvar
+^7g_balance_pause_health_rot is "5" ["5"] custom cvar
+^7g_balance_pause_health_rot_spawn is "10" ["10"] custom cvar
+^7g_balance_porto_primary_ammo is "25" ["25"] custom cvar
+^7g_balance_porto_primary_lifetime is "30" ["30"] custom cvar
+^7g_balance_porto_primary_refire is "1.5" ["1.5"] custom cvar
+^7g_balance_porto_primary_speed is "2000" ["2000"] custom cvar
+^7g_balance_powerup_invincible_takedamage is "0.2" ["0.2"] custom cvar
+^7g_balance_powerup_invincible_time is "30" ["30"] custom cvar
+^7g_balance_powerup_strength_damage is "3" ["3"] custom cvar
+^7g_balance_powerup_strength_force is "4" ["4"] custom cvar
+^7g_balance_powerup_strength_selfdamage is "1.5" ["1.5"] custom cvar
+^7g_balance_powerup_strength_selfforce is "1.5" ["1.5"] custom cvar
+^7g_balance_powerup_strength_time is "30" ["30"] custom cvar
+^7g_balance_rocketlauncher_ammo is "3" ["3"] custom cvar
+^7g_balance_rocketlauncher_animtime is "0.3" ["0.3"] custom cvar
+^7g_balance_rocketlauncher_damage is "130" ["130"] custom cvar
+^7g_balance_rocketlauncher_detonatedelay is "0.2" ["0.2"] custom cvar
+^7g_balance_rocketlauncher_edgedamage is "50" ["50"] custom cvar
+^7g_balance_rocketlauncher_force is "600" ["600"] custom cvar
+^7g_balance_rocketlauncher_health is "30" ["30"] custom cvar
+^7g_balance_rocketlauncher_laserguided_allow_steal is "1" ["1"] custom cvar
+^7g_balance_rocketlauncher_laserguided_speed is "1000" ["1000"] custom cvar
+^7g_balance_rocketlauncher_laserguided_speedaccel is "0" ["0"] custom cvar
+^7g_balance_rocketlauncher_laserguided_speedstart is "1000" ["1000"] custom cvar
+^7g_balance_rocketlauncher_laserguided_turnrate is "0.75" ["0.75"] custom cvar
+^7g_balance_rocketlauncher_lifetime is "30" ["30"] custom cvar
+^7g_balance_rocketlauncher_radius is "170" ["170"] custom cvar
+^7g_balance_rocketlauncher_refire is "1" ["1"] custom cvar
+^7g_balance_rocketlauncher_speed is "850" ["850"] custom cvar
+^7g_balance_rocketlauncher_speedaccel is "0" ["0"] custom cvar
+^7g_balance_rocketlauncher_speedstart is "850" ["850"] custom cvar
+^7g_balance_rune_defense_combo_takedamage is "1.0" ["1.0"] custom cvar
+^7g_balance_rune_defense_takedamage is "0.5" ["0.5"] custom cvar
+^7g_balance_rune_regen_combo_hpmod is "0.9" ["0.9"] custom cvar
+^7g_balance_rune_regen_combo_limitmod is "1" ["1"] custom cvar
+^7g_balance_rune_regen_combo_regenrate is "0.5" ["0.5"] custom cvar
+^7g_balance_rune_regen_combo_rotrate is "1.5" ["1.5"] custom cvar
+^7g_balance_rune_regen_hpmod is "1.75" ["1.75"] custom cvar
+^7g_balance_rune_regen_limitmod is "1" ["1"] custom cvar
+^7g_balance_rune_regen_regenrate is "3.0" ["3.0"] custom cvar
+^7g_balance_rune_speed_atkrate is "0.66" ["0.66"] custom cvar
+^7g_balance_rune_speed_combo_atkrate is "1.2" ["1.2"] custom cvar
+^7g_balance_rune_speed_combo_jumpheight is "1.0" ["1.0"] custom cvar
+^7g_balance_rune_speed_combo_moverate is "0.9" ["0.9"] custom cvar
+^7g_balance_rune_speed_jumpheight is "1.4" ["1.4"] custom cvar
+^7g_balance_rune_speed_moverate is "1.25" ["1.25"] custom cvar
+^7g_balance_rune_strength_combo_damage is "0.9" ["0.9"] custom cvar
+^7g_balance_rune_strength_combo_force is "1.0" ["1.0"] custom cvar
+^7g_balance_rune_strength_damage is "2.0" ["2.0"] custom cvar
+^7g_balance_rune_strength_force is "1.5" ["1.5"] custom cvar
+^7g_balance_rune_vampire_absorb is "0.4" ["0.4"] custom cvar
+^7g_balance_rune_vampire_combo_absorb is "-0.1" ["-0.1"] custom cvar
+^7g_balance_rune_vampire_combo_minhealth is "40" ["40"] custom cvar
+^7g_balance_rune_vampire_maxhealth is "500" ["500"] custom cvar
+^7g_balance_selfdamagepercent is "0.6" ["0.6"] custom cvar
+^7g_balance_shotgun_primary_ammo is "1" ["1"] custom cvar
+^7g_balance_shotgun_primary_animtime is "0.2" ["0.2"] custom cvar
+^7g_balance_shotgun_primary_bullets is "5" ["5"] custom cvar
+^7g_balance_shotgun_primary_damage is "12" ["12"] custom cvar
+^7g_balance_shotgun_primary_force is "60" ["60"] custom cvar
+^7g_balance_shotgun_primary_refire is "0.5" ["0.5"] custom cvar
+^7g_balance_shotgun_primary_spread is "0.08" ["0.08"] custom cvar
+^7g_balance_shotgun_secondary_ammo is "1" ["1"] custom cvar
+^7g_balance_shotgun_secondary_animtime is "0.2" ["0.2"] custom cvar
+^7g_balance_shotgun_secondary_bullets is "5" ["5"] custom cvar
+^7g_balance_shotgun_secondary_damage is "12" ["12"] custom cvar
+^7g_balance_shotgun_secondary_force is "60" ["60"] custom cvar
+^7g_balance_shotgun_secondary_refire is "1.35" ["1.35"] custom cvar
+^7g_balance_shotgun_secondary_spread is "0.12" ["0.12"] custom cvar
+^7g_balance_teams is "0" ["0"] custom cvar
+^7g_balance_teams_complain is "0" ["0"] custom cvar
+^7g_balance_teams_force is "0" ["0"] custom cvar
+^7g_balance_teams_prevent_imbalance is "0" ["0"] custom cvar
+^7g_balance_uzi_first_ammo is "1" ["1"] custom cvar
+^7g_balance_uzi_first_damage is "30" ["30"] custom cvar
+^7g_balance_uzi_first_force is "50" ["50"] custom cvar
+^7g_balance_uzi_first_refire is "0.2" ["0.2"] custom cvar
+^7g_balance_uzi_first_spread is "0.01" ["0.01"] custom cvar
+^7g_balance_uzi_sustained_ammo is "1" ["1"] custom cvar
+^7g_balance_uzi_sustained_damage is "16" ["16"] custom cvar
+^7g_balance_uzi_sustained_force is "27" ["27"] custom cvar
+^7g_balance_uzi_sustained_refire is "0.1" ["0.1"] custom cvar
+^7g_balance_uzi_sustained_spread is "0.05" ["0.05"] custom cvar
+^7g_balance_weaponswitchdelay is "0.15" ["0.15"] custom cvar
+^7g_ban_default_bantime is "5400" ["5400"] custom cvar
+^7g_ban_default_masksize is "3" ["3"] custom cvar
+^7g_banned_list is "" [""] custom cvar
+^7g_campaign is "0" ["0"] custom cvar
+^7g_campaign_index is "0" ["0"] custom cvar
+^7g_campaign_name is "" [""] custom cvar
+^7g_campaign_skill is "0" ["0"] custom cvar
+^7g_casings is "0" ["0"] custom cvar
+^7g_changeteam_banned is "0" ["0"] custom cvar
+^7g_changeteam_fragtransfer is "0" ["0"] custom cvar
+^7g_chat_flood_burst is "2" ["2"] custom cvar
+^7g_chat_flood_burst_team is "2" ["2"] custom cvar
+^7g_chat_flood_lmax is "2" ["2"] custom cvar
+^7g_chat_flood_lmax_team is "2" ["2"] custom cvar
+^7g_chat_flood_notify_flooder is "1" ["1"] custom cvar
+^7g_chat_flood_spl is "3" ["3"] custom cvar
+^7g_chat_flood_spl_team is "1" ["1"] custom cvar
+^7g_chat_nospectators is "0" ["0"] custom cvar
+^7g_chat_teamcolors is "0" ["0"] custom cvar
+^7g_cloaked is "0" ["0"] custom cvar
+^7g_configversion is "1" ["0"] custom cvar
+^7g_ctf is "0" ["0"] custom cvar
+^7g_ctf_capture_limit is "-1" ["-1"] custom cvar
+^7g_ctf_flag_returntime is "30" ["30"] custom cvar
+^7g_ctf_flagcarrier_selfdamage is "1" ["1"] custom cvar
+^7g_ctf_flagcarrier_selfforce is "1" ["1"] custom cvar
+^7g_ctf_flagpenalty_drop is "0" ["0"] custom cvar
+^7g_ctf_flagpenalty_suicidedrop is "1" ["1"] custom cvar
+^7g_ctf_flagscore_capture is "20" ["20"] custom cvar
+^7g_ctf_flagscore_kill is "1" ["1"] custom cvar
+^7g_ctf_flagscore_pickup_base is "1" ["1"] custom cvar
+^7g_ctf_flagscore_pickup_dropped_early is "1" ["1"] custom cvar
+^7g_ctf_flagscore_pickup_dropped_late is "5" ["5"] custom cvar
+^7g_ctf_flagscore_return is "5" ["5"] custom cvar
+^7g_ctf_flagscore_return_by_killer is "5" ["5"] custom cvar
+^7g_ctf_flagscore_return_rogue is "10" ["10"] custom cvar
+^7g_ctf_flagscore_return_rogue_by_killer is "10" ["10"] custom cvar
+^7g_ctf_respawn_delay is "0" ["0"] custom cvar
+^7g_ctf_respawn_waves is "0" ["0"] custom cvar
+^7g_ctf_win_mode is "2" ["2"] custom cvar
+^7g_dm is "1" ["1"] custom cvar
+^7g_dm_respawn_delay is "0" ["0"] custom cvar
+^7g_dm_respawn_waves is "0" ["0"] custom cvar
+^7g_dom_respawn_delay is "0" ["0"] custom cvar
+^7g_dom_respawn_waves is "0" ["0"] custom cvar
+^7g_domination is "0" ["0"] custom cvar
+^7g_domination_default_teams is "2" ["2"] custom cvar
+^7g_domination_disable_frags is "0" ["0"] custom cvar
+^7g_domination_point_amt is "0" ["0"] custom cvar
+^7g_domination_point_capturetime is "0.1" ["0.1"] custom cvar
+^7g_domination_point_glow is "0" ["0"] custom cvar
+^7g_domination_point_limit is "-1" ["-1"] custom cvar
+^7g_domination_point_rate is "0" ["0"] custom cvar
+^7g_footsteps is "0" ["0"] custom cvar
+^7g_forced_respawn is "0" ["0"] custom cvar
+^7g_friendlyfire is "0.0" ["0.0"] custom cvar
+^7g_fullbrightitems is "0" ["0"] custom cvar
+^7g_fullbrightplayers is "0" ["0"] custom cvar
+^7g_grappling_hook is "0" ["0"] custom cvar
+^7g_grappling_hook_tarzan is "2" ["2"] custom cvar
+^7g_jump_grunt is "0" ["0"] custom cvar
+^7g_keyhunt is "0" ["0"] custom cvar
+^7g_keyhunt_point_limit is "-1" ["-1"] custom cvar
+^7g_keyhunt_teams is "0" ["0"] custom cvar
+^7g_keyhunt_teams_override is "0" ["0"] custom cvar
+^7g_laserguided_missile is "0" ["0"] custom cvar
+^7g_lms is "0" ["0"] custom cvar
+^7g_lms_campcheck_damage is "100" ["100"] custom cvar
+^7g_lms_campcheck_distance is "1800" ["1800"] custom cvar
+^7g_lms_campcheck_interval is "10" ["10"] custom cvar
+^7g_lms_campcheck_message is "^1Don't camp!" ["^1Don't camp!"] custom cvar
+^7g_lms_join_anytime is "1" ["1"] custom cvar
+^7g_lms_last_join is "3" ["3"] custom cvar
+^7g_lms_lives_override is "-1" ["-1"] custom cvar
+^7g_lms_regenerate is "0" ["0"] custom cvar
+^7g_lms_respawn_delay is "0" ["0"] custom cvar
+^7g_lms_respawn_waves is "0" ["0"] custom cvar
+^7g_lms_start_ammo_cells is "50" ["50"] custom cvar
+^7g_lms_start_ammo_nails is "150" ["150"] custom cvar
+^7g_lms_start_ammo_rockets is "50" ["50"] custom cvar
+^7g_lms_start_ammo_shells is "50" ["50"] custom cvar
+^7g_lms_start_armor is "100" ["100"] custom cvar
+^7g_lms_start_health is "250" ["250"] custom cvar
+^7g_maplist is "silvercity soylent basement basementctf toxic skyway slimepit ruiner starship runningman bloodprison farewell darkzone strength aneurysm final_rage bloodprisonctf warfare dismal reslimed runningman_1on1remix stormkeep bluesky aggressor bleach dieselpower evilspace runningmanctf downer" ["aggressor aneurysm basement basementctf bleach bloodprison bloodprisonctf bluesky darkzone dieselpower dismal downer evilspace farewell final_rage reslimed ruiner runningman_1on1remix runningman runningmanctf silvercity skyway slimepit soylent starship stormkeep strength toxic warfare"] custom cvar
+^7g_maplist_check_waypoints is "0" ["0"] custom cvar
+^7g_maplist_index is "0" ["0"] custom cvar
+^7g_maplist_mostrecent is "silvercity " [""] custom cvar
+^7g_maplist_mostrecent_count is "3" ["3"] custom cvar
+^7g_maplist_selectrandom is "0" ["0"] custom cvar
+^7g_maplist_shuffle is "1" ["1"] custom cvar
+^7g_maplist_textonly is "0" ["0"] custom cvar
+^7g_maplist_votable is "5" ["5"] custom cvar
+^7g_maplist_votable_abstain is "0" ["0"] custom cvar
+^7g_maplist_votable_keeptwotime is "15" ["15"] custom cvar
+^7g_maplist_votable_nodetail is "1" ["1"] custom cvar
+^7g_maplist_votable_screenshot_dir is "maps" ["maps"] custom cvar
+^7g_maplist_votable_suggestions is "2" ["2"] custom cvar
+^7g_maplist_votable_suggestions_override_mostrecent is "0" ["0"] custom cvar
+^7g_maplist_votable_timeout is "30" ["30"] custom cvar
+^7g_maxplayers is "0" ["0"] custom cvar
+^7g_maxplayers_spectator_blocktime is "5" ["5"] custom cvar
+^7g_maxpushtime is "8.0" ["8.0"] custom cvar
+^7g_midair is "0" ["0"] custom cvar
+^7g_midair_shieldtime is "0.3" ["0.3"] custom cvar
+^7g_minstagib is "0" ["0"] custom cvar
+^7g_minstagib_ammo_drop is "5" ["5"] custom cvar
+^7g_minstagib_ammo_start is "10" ["10"] custom cvar
+^7g_minstagib_extralives is "2" ["2"] custom cvar
+^7g_minstagib_invis_alpha is "0.05" ["0.05"] custom cvar
+^7g_minstagib_speed_jumpheight is "1.8" ["1.8"] custom cvar
+^7g_minstagib_speed_moverate is "1.25" ["1.25"] custom cvar
+^7g_mirrordamage is "0.2" ["0.2"] custom cvar
+^7g_nexuizversion is "2.4svn" ["2.4svn"] custom cvar
+^7g_nixnex is "0" ["0"] custom cvar
+^7g_nixnex_with_laser is "0" ["0"] custom cvar
+^7g_norecoil is "0" ["0"] custom cvar
+^7g_onslaught is "0" ["0"] custom cvar
+^7g_onslaught_cp_health is "1000" ["1000"] custom cvar
+^7g_onslaught_gen_health is "10000" ["10000"] custom cvar
+^7g_pickup_armorlarge is "100" ["100"] custom cvar
+^7g_pickup_armorlarge_max is "999" ["999"] custom cvar
+^7g_pickup_armormedium is "25" ["25"] custom cvar
+^7g_pickup_armormedium_max is "999" ["999"] custom cvar
+^7g_pickup_armorsmall is "5" ["5"] custom cvar
+^7g_pickup_armorsmall_max is "999" ["999"] custom cvar
+^7g_pickup_cells is "25" ["25"] custom cvar
+^7g_pickup_cells_max is "999" ["999"] custom cvar
+^7g_pickup_healthlarge is "50" ["50"] custom cvar
+^7g_pickup_healthlarge_max is "999" ["999"] custom cvar
+^7g_pickup_healthmedium is "25" ["25"] custom cvar
+^7g_pickup_healthmedium_max is "999" ["999"] custom cvar
+^7g_pickup_healthmega is "100" ["100"] custom cvar
+^7g_pickup_healthmega_max is "999" ["999"] custom cvar
+^7g_pickup_healthsmall is "5" ["5"] custom cvar
+^7g_pickup_healthsmall_max is "999" ["999"] custom cvar
+^7g_pickup_items is "1" ["1"] custom cvar
+^7g_pickup_nails is "120" ["120"] custom cvar
+^7g_pickup_nails_max is "999" ["999"] custom cvar
+^7g_pickup_respawntime_long is "30" ["30"] custom cvar
+^7g_pickup_respawntime_medium is "20" ["20"] custom cvar
+^7g_pickup_respawntime_powerup is "120" ["120"] custom cvar
+^7g_pickup_respawntime_short is "15" ["15"] custom cvar
+^7g_pickup_rockets is "15" ["15"] custom cvar
+^7g_pickup_rockets_max is "999" ["999"] custom cvar
+^7g_pickup_shells is "15" ["15"] custom cvar
+^7g_pickup_shells_max is "999" ["999"] custom cvar
+^7g_player_alpha is "1" ["1"] custom cvar
+^7g_player_brightness is "0" ["0"] custom cvar
+^7g_powerup_shield is "1" ["1"] custom cvar
+^7g_powerup_strength is "1" ["1"] custom cvar
+^7g_powerup_superhealth is "1" ["1"] custom cvar
+^7g_projectiles_newton_style is "2" ["2"] custom cvar
+^7g_race is "0" ["0"] custom cvar
+^7g_race_laps_limit is "-1" ["-1"] custom cvar
+^7g_race_qualifying is "1" ["1"] custom cvar
+^7g_race_teams is "0" ["0"] custom cvar
+^7g_respawn_delay is "2" ["2"] custom cvar
+^7g_respawn_mapsettings is "1" ["1"] custom cvar
+^7g_respawn_waves is "0" ["0"] custom cvar
+^7g_rocketarena is "0" ["0"] custom cvar
+^7g_rune_respawn_delay is "0" ["0"] custom cvar
+^7g_rune_respawn_waves is "0" ["0"] custom cvar
+^7g_runematch is "0" ["0"] custom cvar
+^7g_runematch_allow_same is "0" ["0"] custom cvar
+^7g_runematch_drop_runes_max is "2" ["2"] custom cvar
+^7g_runematch_frags_killed_runeholder is "5" ["5"] custom cvar
+^7g_runematch_frags_killedby_runeholder is "4" ["4"] custom cvar
+^7g_runematch_frags_norune is "0" ["0"] custom cvar
+^7g_runematch_point_limit is "-1" ["-1"] custom cvar
+^7g_runematch_pointamt is "1" ["1"] custom cvar
+^7g_runematch_pointrate is "5" ["5"] custom cvar
+^7g_runematch_respawntime is "15" ["15"] custom cvar
+^7g_runematch_rune_alpha is "0.78" ["0.78"] custom cvar
+^7g_runematch_rune_color_strength is "1.0" ["1.0"] custom cvar
+^7g_runematch_rune_effects is "544" ["544"] custom cvar
+^7g_runematch_rune_glow_color is "0" ["0"] custom cvar
+^7g_runematch_rune_glow_size is "0" ["0"] custom cvar
+^7g_runematch_shuffletime is "30" ["30"] custom cvar
+^7g_shocknex is "0" ["0"] custom cvar
+^7g_shootfromcenter is "0" ["0"] custom cvar
+^7g_shootfromeye is "0" ["0"] custom cvar
+^7g_spawn_furthest is "0.5" ["0.5"] custom cvar
+^7g_spawnpoints_auto_move_out_of_solid is "0" ["0"] custom cvar
+^7g_spawnpoints_autodrop is "0" ["0"] custom cvar
+^7g_spawnshieldtime is "0" ["0"] custom cvar
+^7g_spawnsound is "1" ["1"] custom cvar
+^7g_start_ammo_cells is "0" ["0"] custom cvar
+^7g_start_ammo_nails is "0" ["0"] custom cvar
+^7g_start_ammo_rockets is "0" ["0"] custom cvar
+^7g_start_ammo_shells is "50" ["50"] custom cvar
+^7g_start_weapon_crylink is "0" ["0"] custom cvar
+^7g_start_weapon_electro is "0" ["0"] custom cvar
+^7g_start_weapon_grenadelauncher is "0" ["0"] custom cvar
+^7g_start_weapon_hagar is "0" ["0"] custom cvar
+^7g_start_weapon_laser is "1" ["1"] custom cvar
+^7g_start_weapon_minstanex is "0" ["0"] custom cvar
+^7g_start_weapon_nex is "0" ["0"] custom cvar
+^7g_start_weapon_porto is "0" ["0"] custom cvar
+^7g_start_weapon_rocketlauncher is "0" ["0"] custom cvar
+^7g_start_weapon_shotgun is "1" ["1"] custom cvar
+^7g_start_weapon_uzi is "0" ["0"] custom cvar
+^7g_tdm is "0" ["0"] custom cvar
+^7g_tdm_respawn_delay is "0" ["0"] custom cvar
+^7g_tdm_respawn_waves is "0" ["0"] custom cvar
+^7g_tdm_teams is "2" ["2"] custom cvar
+^7g_throughfloor is "1" ["1"] custom cvar
+^7g_use_ammunition is "1" ["1"] custom cvar
+^7g_vampire is "0" ["0"] custom cvar
+^7g_warmup is "1" ["1"] custom cvar
+^7g_warmup_allguns is "0" ["0"] custom cvar
+^7g_warmup_allow_timeout is "0" ["0"] custom cvar
+^7g_warmup_limit is "60" ["60"] custom cvar
+^7g_warmup_start_ammo_cells is "50" ["50"] custom cvar
+^7g_warmup_start_ammo_nails is "150" ["150"] custom cvar
+^7g_warmup_start_ammo_rockets is "50" ["50"] custom cvar
+^7g_warmup_start_ammo_shells is "50" ["50"] custom cvar
+^7g_warmup_start_armor is "100" ["100"] custom cvar
+^7g_warmup_start_health is "250" ["250"] custom cvar
+^7g_waypointeditor is "0" ["0"] custom cvar
+^7g_waypoints_for_items is "1" ["1"] custom cvar
+^7g_waypointsprite_deadlifetime is "1" ["1"] custom cvar
+^7g_waypointsprite_deployed_lifetime is "10" ["10"] custom cvar
+^7g_waypointsprite_distancealphaexponent is "2" ["2"] custom cvar
+^7g_waypointsprite_limitedrange is "5120" ["5120"] custom cvar
+^7g_waypointsprite_minalpha is "0.4" ["0.4"] custom cvar
+^7g_waypointsprite_minscale is "1" ["1"] custom cvar
+^7g_waypointsprite_normdistance is "512" ["512"] custom cvar
+^7g_waypointsprite_stuffbinds is "0" ["0"] custom cvar
+^7g_waypointsprite_timealphaexponent is "1" ["1"] custom cvar
+^7g_weapon_stay is "0" ["0"] custom cvar
+^7g_weaponreplace_1 is "" [""] custom cvar
+^7g_weaponreplace_10 is "" [""] custom cvar
+^7g_weaponreplace_11 is "" [""] custom cvar
+^7g_weaponreplace_2 is "" [""] custom cvar
+^7g_weaponreplace_3 is "" [""] custom cvar
+^7g_weaponreplace_4 is "" [""] custom cvar
+^7g_weaponreplace_5 is "" [""] custom cvar
+^7g_weaponreplace_6 is "" [""] custom cvar
+^7g_weaponreplace_7 is "" [""] custom cvar
+^7g_weaponreplace_8 is "" [""] custom cvar
+^7g_weaponreplace_9 is "" [""] custom cvar
+^7gamecfg is "1" ["1"] unused cvar in quake, can be used by mods
+^7gameversion is "20000" ["20000"] version of game data (mod-specific), when client and server gameversion mismatch in the server browser the server is shown as incompatible
+^7gl_finish is "$gl_finish" ["$gl_finish"] custom cvar
+^7halflifebsp is "0" ["0"] indicates the current map is hlbsp format (useful to know because of different bounding box sizes)
+^7host_framerate is "0" ["0"] locks frame timing to this value in seconds, 0.05 is 20fps for example, note that this can easily run too fast, use cl_maxfps if you want to limit your framerate instead, or sys_ticrate to limit server speed
+^7host_speeds is "0" ["0"] reports how much time is used in server/graphics/sound
+^7hostname is "Nexuiz Server" ["Nexuiz Server"] server message to show in server browser
+^7joy_deadzoneforward is "0.05" ["0.05"] custom cvar
+^7joy_deadzonepitch is "0.05" ["0.05"] custom cvar
+^7joy_deadzoneside is "0.05" ["0.05"] custom cvar
+^7joy_deadzoneup is "0.05" ["0.05"] custom cvar
+^7joy_deadzoneyaw is "0.05" ["0.05"] custom cvar
+^7joy_sensitivitypitch is "0.9" ["0.9"] custom cvar
+^7joy_sensitivityyaw is "-1.8" ["-1.8"] custom cvar
+^7joyadvanced is "1" ["1"] custom cvar
+^7joyadvaxisr is "2" ["2"] custom cvar
+^7joyadvaxisx is "3" ["3"] custom cvar
+^7joyadvaxisy is "1" ["1"] custom cvar
+^7joyadvaxisz is "4" ["4"] custom cvar
+^7joypitchsensitivity is "0.9" ["0.9"] custom cvar
+^7joysidesensitivity is "1.0" ["1.0"] custom cvar
+^7joyyawsensitivity is "-1.8" ["-1.8"] custom cvar
+^7lastlevel is "" [""] custom cvar
+^7log_dest_udp is "" [""] UDP address to log messages to (in QW rcon compatible format); multiple destinations can be separated by spaces; DO NOT SPECIFY DNS NAMES HERE
+^7log_file is "x" [""] filename to log messages to
+^7menu_cdtrack is "digital-pursuit" ["digital-pursuit"] custom cvar
+^7menu_maxplayers is "8" ["8"] custom cvar
+^7menu_mouse_absolute is "0" ["0"] custom cvar
+^7menu_mouse_speed is "1" ["1"] custom cvar
+^7menu_skin is "wickedblack" ["wickedblack"] custom cvar
+^7menu_slist_showempty is "1" ["1"] custom cvar
+^7menu_slist_showfull is "1" ["1"] custom cvar
+^7menu_slowmo is "1" ["1"] custom cvar
+^7minplayers is "0" ["0"] custom cvar
+^7mod_q3bsp_curves_collisions is "1" ["1"] enables collisions with curves (SLOW)
+^7mod_q3bsp_debugtracebrush is "0" ["0"] selects different tracebrush bsp recursion algorithms (for debugging purposes only)
+^7mod_q3bsp_lightmapmergepower is "3" ["3"] merges the quake3 128x128 lightmap textures into larger lightmap group textures to speed up rendering, 1 = 256x256, 2 = 512x512, 3 = 1024x1024, 4 = 2048x2048, 5 = 4096x4096, ...
+^7mod_q3bsp_optimizedtraceline is "1" ["1"] whether to use optimized traceline code for line traces (as opposed to tracebox code)
+^7net_address is "0.0.0.0" ["0.0.0.0"] network address to open ports on
+^7net_connectfloodblockingtimeout is "5" ["5"] when a connection packet is received, it will block all future connect packets from that IP address for this many seconds (cuts down on connect floods)
+^7net_connecttimeout is "30" ["30"] after requesting a connection, the client must reply within this many seconds or be dropped (cuts down on connect floods)
+^7net_messagetimeout is "300" ["300"] drops players who have not sent any packets for this many seconds
+^7net_slist_favorites is "" [""] contains a list of IP addresses and ports to always query explicitly
+^7net_slist_maxtries is "3" ["3"] how many times to ask the same server for information (more times gives better ping reports but takes longer)
+^7net_slist_pause is "0" ["0"] when set to 1, the server list won't update until it is set back to 0
+^7net_slist_queriesperframe is "4" ["4"] maximum number of server information requests to send each rendered frame (guards against low framerates causing problems)
+^7net_slist_queriespersecond is "20" ["20"] how many server information requests to send per second
+^7net_slist_timeout is "4" ["4"] how long to listen for a server information response before giving up
+^7nextmap is "" [""] custom cvar
+^7noaim is "1" ["1"] QW option to disable vertical autoaim
+^7noexit is "0" ["0"] kills anyone attempting to use an exit
+^7nomonsters is "0" ["0"] unused cvar in quake, can be used by mods
+^7pausable is "0" ["0"] allow players to pause or not
+^7port is "26000" ["26000"] server port for players to connect to
+^7pr_checkextension is "1" ["1"] indicates to QuakeC that the standard quakec extensions system is available (if 0, quakec should not attempt to use extensions)
+^7prvm_backtraceforwarnings is "0" ["0"] print a backtrace for warnings too
+^7prvm_errordump is "0" ["0"] write a savegame on crash to crash-server.dmp
+^7prvm_leaktest is "0" ["0"] try to detect memory leaks in strings or entities
+^7prvm_leaktest_ignore_classnames is "ctf_team dom_team tdm_team" ["ctf_team dom_team tdm_team"] classnames of entities to NOT leak check because they are found by find(world, classname, ...) but are actually spawned by QC code (NOT map entities)
+^7prvm_statementprofiling is "0" ["0"] counts how many times each QuakeC statement has been executed, these counts are displayed in prvm_printfunction output (if enabled)
+^7prvm_traceqc is "0" ["0"] prints every QuakeC statement as it is executed (only for really thorough debugging!)
+^7quit_and_redirect is "" [""] custom cvar
+^7quit_when_empty is "0" ["0"] custom cvar
+^7r_ambient is "4" ["4"] custom cvar
+^7r_fixtrans_auto is "0" ["0"] automatically fixtrans textures (when set to 2, it also saves the fixed versions to a fixtrans directory)
+^7r_labelsprites_roundtopixels is "1" ["1"] try to make label sprites sharper by rounding their size to 0.5x or 1x and by rounding their position to whole pixels if possible
+^7r_labelsprites_scale is "0.40625" ["0.40625"] global scale to apply to label sprites before conversion to HUD coordinates
+^7r_mipskins is "1" ["1"] mipmaps model skins so they render faster in the distance and do not display noise artifacts, can cause discoloration of skins if they contain undesirable border colors
+^7r_mipsprites is "1" ["1"] mipmaps sprites so they render faster in the distance and do not display noise artifacts
+^7r_nosurftextures is "0" ["0"] pretends there was no texture lump found in the q1bsp/hlbsp loading (useful for debugging this rare case)
+^7r_novis is "0" ["0"] draws whole level, see also sv_cullentities_pvs 0
+^7r_picmipsprites is "0" ["0"] make gl_picmip affect sprites too (saves some graphics memory in sprite heavy games)
+^7r_picmipworld is "0" ["0"] whether gl_picmip shall apply to world textures too
+^7r_showsurfaces is "$r_showsurfaces" ["$r_showsurfaces"] custom cvar
+^7r_skeletal_debugbone is "-1" ["-1"] development cvar for testing skeletal model code
+^7r_skeletal_debugbonecomponent is "3" ["3"] development cvar for testing skeletal model code
+^7r_skeletal_debugbonevalue is "100" ["100"] development cvar for testing skeletal model code
+^7r_skeletal_debugtranslatex is "1" ["1"] development cvar for testing skeletal model code
+^7r_skeletal_debugtranslatey is "1" ["1"] development cvar for testing skeletal model code
+^7r_skeletal_debugtranslatez is "1" ["1"] development cvar for testing skeletal model code
+^7r_subdivisions_collision_maxtess is "1024" ["1024"] maximum number of subdivisions (prevents curves beyond a certain detail level, limits smoothing)
+^7r_subdivisions_collision_maxvertices is "4225" ["4225"] maximum vertices allowed per subdivided curve
+^7r_subdivisions_collision_mintess is "1" ["1"] minimum number of subdivisions (values above 1 will smooth curves that don't need it)
+^7r_subdivisions_collision_tolerance is "15" ["15"] maximum error tolerance on curve subdivision for collision purposes (usually a larger error tolerance than for rendering)
+^7r_subdivisions_maxtess is "3" ["3"] maximum number of subdivisions (prevents curves beyond a certain detail level, limits smoothing)
+^7r_subdivisions_maxvertices is "65536" ["65536"] maximum vertices allowed per subdivided curve
+^7r_subdivisions_mintess is "3" ["3"] minimum number of subdivisions (values above 1 will smooth curves that don't need it)
+^7r_subdivisions_tolerance is "1000000" ["1000000"] maximum error tolerance on curve subdivision for rendering purposes (in other words, the curves will be given as many polygons as necessary to represent curves at this quality)
+^7rcon_address is "" [""] server address to send rcon commands to (when not connected to a server)
+^7rcon_password is "" [""] password to authenticate rcon commands
+^7rcon_restricted_commands is "" [""] allowed commands for rcon when the restricted mode password was used
+^7rcon_restricted_password is "" [""] password to authenticate rcon commands in restricted mode
+^7registered is "1" ["1"] indicates if this is running registered quake (whether gfx/pop.lmp was found)
+^7samelevel is "0" ["0"] repeats same level if level ends (due to timelimit or someone hitting an exit)
+^7saved1 is "0" ["0"] unused cvar in quake that is saved to config.cfg on exit, can be used by mods
+^7saved2 is "0" ["0"] unused cvar in quake that is saved to config.cfg on exit, can be used by mods
+^7saved3 is "0" ["0"] unused cvar in quake that is saved to config.cfg on exit, can be used by mods
+^7saved4 is "0" ["0"] unused cvar in quake that is saved to config.cfg on exit, can be used by mods
+^7savedgamecfg is "0" ["0"] unused cvar in quake that is saved to config.cfg on exit, can be used by mods
+^7sbar_columns is "default" ["default"] custom cvar
+^7sbar_fontsize is "11" ["11"] custom cvar
+^7sbar_hudselector is "0" ["0"] custom cvar
+^7sbar_showbinds is "1" ["1"] custom cvar
+^7sbar_showbinds_limit is "2" ["2"] custom cvar
+^7sbar_width is "480" ["480"] custom cvar
+^7scr_screenshot_name is "nexuiz" ["nexuiz"] prefix name for saved screenshots (changes based on -game commandline, as well as which game mode is running)
+^7scratch1 is "0" ["0"] unused cvar in quake, can be used by mods
+^7scratch2 is "0" ["0"] unused cvar in quake, can be used by mods
+^7scratch3 is "0" ["0"] unused cvar in quake, can be used by mods
+^7scratch4 is "0" ["0"] unused cvar in quake, can be used by mods
+^7settemp_list is "0" ["0"] custom cvar
+^7settemp_var is "_settemp_x" ["_settemp_x"] custom cvar
+^7skill is "1" ["1"] difficulty level of game, affects monster layouts in levels, 0 = easy, 1 = normal, 2 = hard, 3 = nightmare (same layout as hard but monsters fire twice)
+^7skill_auto is "0" ["0"] custom cvar
+^7skin is "" [""] QW player skin name (example: base)
+^7slowmo is "1.0" ["1.0"] controls game speed, 0.5 is half speed, 2 is double speed
+^7sv_accelerate is "5.5" ["5.5"] rate at which a player accelerates to sv_maxspeed
+^7sv_adminnick is "" [""] nick name to use for admin messages instead of host name
+^7sv_aim is "2" ["2"] maximum cosine angle for quake's vertical autoaim, a value above 1 completely disables the autoaim, quake used 0.93
+^7sv_airaccel_qw is "0.93" ["0.93"] ratio of QW-style air control as opposed to simple acceleration
+^7sv_airaccel_sideways_friction is "0.3" ["0.3"] anti-sideways movement stabilization (reduces speed gain when zigzagging)
+^7sv_airaccelerate is "5.5" ["5.5"] rate at which a player accelerates to sv_maxairspeed while in the air, if less than 0 the sv_accelerate variable is used instead
+^7sv_allow_shownames is "1" ["1"] custom cvar
+^7sv_allowdownloads is "1" ["1"] whether to allow clients to download files from the server (does not affect http downloads)
+^7sv_allowdownloads_archive is "0" ["0"] whether to allow downloads of archives (pak/pk3)
+^7sv_allowdownloads_config is "0" ["0"] whether to allow downloads of config files (cfg)
+^7sv_allowdownloads_dlcache is "0" ["0"] whether to allow downloads of dlcache files (dlcache/)
+^7sv_allowdownloads_inarchive is "1" ["1"] whether to allow downloads from archives (pak/pk3)
+^7sv_areagrid_mingridsize is "64" ["64"] minimum areagrid cell size, smaller values work better for lots of small objects, higher values for large objects
+^7sv_autodemo_perclient is "0" ["0"] set to 1 to enable autorecorded per-client demos (they'll start to record at the beginning of a match); set it to 2 to also record client->server packets (for debugging)
+^7sv_autodemo_perclient_nameformat is "sv_autodemos/%Y-%m-%d_%H-%M" ["sv_autodemos/%Y-%m-%d_%H-%M"] The format of the sv_autodemo_perclient filename, followed by the map name, the client number and the IP address + port number, separated by underscores
+^7sv_autoscreenshot is "0" ["0"] custom cvar
+^7sv_cheats is "0" ["0"] enables cheat commands in any game, and cheat impulses in dpmod
+^7sv_checkforpacketsduringsleep is "0" ["0"] uses select() function to wait between frames which can be interrupted by packets being received, instead of Sleep()/usleep()/SDL_Sleep() functions which do not check for packets
+^7sv_clmovement_enable is "1" ["1"] whether to allow clients to use cl_movement prediction, which can cause choppy movement on the server which may annoy other players
+^7sv_clmovement_minping is "0" ["0"] if client ping is below this time in milliseconds, then their ability to use cl_movement prediction is disabled for a while (as they don't need it)
+^7sv_clmovement_minping_disabletime is "1000" ["1000"] when client falls below minping, disable their prediction for this many milliseconds (should be at least 1000 or else their prediction may turn on/off frequently)
+^7sv_clmovement_waitforinput is "4" ["4"] when a client does not send input for this many frames, force them to move anyway (unlike QuakeWorld)
+^7sv_cullentities_nevercullbmodels is "0" ["0"] if enabled the clients are always notified of moving doors and lifts and other submodels of world (warning: eats a lot of network bandwidth on some levels!)
+^7sv_cullentities_pvs is "1" ["1"] fast but loose culling of hidden entities
+^7sv_cullentities_stats is "0" ["0"] displays stats on network entities culled by various methods for each client
+^7sv_cullentities_trace is "1" ["1"] somewhat slow but very tight culling of hidden entities, minimizes network traffic and makes wallhack cheats useless
+^7sv_cullentities_trace_delay is "1" ["1"] number of seconds until the entity gets actually culled
+^7sv_cullentities_trace_delay_players is "0.2" ["0.2"] number of seconds until the entity gets actually culled if it is a player entity
+^7sv_cullentities_trace_enlarge is "0" ["0"] box enlargement for entity culling
+^7sv_cullentities_trace_prediction is "1" ["1"] also trace from the predicted player position
+^7sv_cullentities_trace_samples is "1" ["1"] number of samples to test for entity culling
+^7sv_cullentities_trace_samples_extra is "2" ["2"] number of samples to test for entity culling when the entity affects its surroundings by e.g. dlight
+^7sv_cullentities_trace_samples_players is "8" ["8"] number of samples to test for entity culling when the entity is a player entity
+^7sv_curl_defaulturl is "http://www.nexuiz.com/contentdownload/getmap.php?file=" ["http://www.nexuiz.com/contentdownload/getmap.php?file="] default autodownload source URL
+^7sv_curl_serverpackages is "" [""] list of required files for the clients, separated by spaces
+^7sv_debugmove is "0" ["0"] disables collision detection optimizations for debugging purposes
+^7sv_defaultcharacter is "0" ["0"] custom cvar
+^7sv_defaultplayercolors is "" [""] custom cvar
+^7sv_defaultplayermodel is "models/player/nexus.zym" ["models/player/nexus.zym"] custom cvar
+^7sv_defaultplayermodel_blue is "" [""] custom cvar
+^7sv_defaultplayermodel_pink is "" [""] custom cvar
+^7sv_defaultplayermodel_red is "" [""] custom cvar
+^7sv_defaultplayermodel_yellow is "" [""] custom cvar
+^7sv_defaultplayerskin is "0" ["0"] custom cvar
+^7sv_defaultplayerskin_blue is "0" ["0"] custom cvar
+^7sv_defaultplayerskin_pink is "0" ["0"] custom cvar
+^7sv_defaultplayerskin_red is "0" ["0"] custom cvar
+^7sv_defaultplayerskin_yellow is "0" ["0"] custom cvar
+^7sv_doublejump is "0" ["0"] custom cvar
+^7sv_echobprint is "1" ["1"] prints gamecode bprint() calls to server console
+^7sv_entpatch is "1" ["1"] enables loading of .ent files to override entities in the bsp (for example Threewave CTF server pack contains .ent patch files enabling play of CTF on id1 maps)
+^7sv_eventlog is "0" ["0"] custom cvar
+^7sv_eventlog_console is "1" ["1"] custom cvar
+^7sv_eventlog_files is "0" ["0"] custom cvar
+^7sv_eventlog_files_counter is "0" ["0"] custom cvar
+^7sv_eventlog_files_nameprefix is "nexuiz" ["nexuiz"] custom cvar
+^7sv_eventlog_files_namesuffix is ".log" [".log"] custom cvar
+^7sv_eventlog_files_timestamps is "1" ["1"] custom cvar
+^7sv_fixedframeratesingleplayer is "1" ["1"] allows you to use server-style timing system in singleplayer (don't run faster than sys_ticrate)
+^7sv_foginterval is "0" ["0"] custom cvar
+^7sv_freezenonclients is "0" ["0"] freezes time, except for players, allowing you to walk around and take screenshots of explosions
+^7sv_friction is "5" ["5"] how fast you slow down
+^7sv_friction_on_land is "0" ["0"] custom cvar
+^7sv_gameplayfix_blowupfallenzombies is "1" ["1"] causes findradius to detect SOLID_NOT entities such as zombies and corpses on the floor, allowing splash damage to apply to them
+^7sv_gameplayfix_delayprojectiles is "1" ["1"] causes entities to not move on the same frame they are spawned, meaning that projectiles wait until the next frame to perform their first move, giving proper interpolation and rocket trails, but making weapons harder to use at low framerates
+^7sv_gameplayfix_droptofloorstartsolid is "0" ["0"] prevents items and monsters that start in a solid area from falling out of the level (makes droptofloor treat trace_startsolid as an acceptable outcome)
+^7sv_gameplayfix_droptofloorstartsolid_nudgetocorrect is "1" ["1"] tries to nudge stuck items and monsters out of walls before droptofloor is performed
+^7sv_gameplayfix_easierwaterjump is "1" ["1"] changes water jumping to make it easier to get out of water (exactly like in QuakeWorld)
+^7sv_gameplayfix_findradiusdistancetobox is "1" ["1"] causes findradius to check the distance to the corner of a box rather than the center of the box, makes findradius detect bmodels such as very large doors that would otherwise be unaffected by splash damage
+^7sv_gameplayfix_grenadebouncedownslopes is "1" ["1"] prevents MOVETYPE_BOUNCE (grenades) from getting stuck when fired down a downward sloping surface
+^7sv_gameplayfix_multiplethinksperframe is "1" ["1"] allows entities to think more often than the server framerate, primarily useful for very high fire rate weapons
+^7sv_gameplayfix_noairborncorpse is "1" ["1"] causes entities (corpses) sitting ontop of moving entities (players) to fall when the moving entity (player) is no longer supporting them
+^7sv_gameplayfix_setmodelrealbox is "1" ["1"] fixes a bug in Quake that made setmodel always set the entity box to ('-16 -16 -16', '16 16 16') rather than properly checking the model box, breaks some poorly coded mods
+^7sv_gameplayfix_stepdown is "0" ["0"] attempts to step down stairs, not just up them (prevents the familiar thud..thud..thud.. when running down stairs and slopes)
+^7sv_gameplayfix_stepwhilejumping is "1" ["1"] applies step-up onto a ledge even while airborn, useful if you would otherwise just-miss the floor when running across small areas with gaps (for instance running across the moving platforms in dm2, or jumping to the megahealth and red armor in dm2 rather than using the bridge)
+^7sv_gameplayfix_swiminbmodels is "1" ["1"] causes pointcontents (used to determine if you are in a liquid) to check bmodel entities as well as the world model, so you can swim around in (possibly moving) water bmodel entities
+^7sv_gameplayfix_upwardvelocityclearsongroundflag is "1" ["1"] prevents monsters, items, and most other objects from being stuck to the floor when pushed around by damage, and other situations in mods
+^7sv_gravity is "800" ["800"] how fast you fall (512 = roughly earth gravity)
+^7sv_heartbeatperiod is "120" ["120"] how often to send heartbeat in seconds (only used if sv_public is 1)
+^7sv_idealpitchscale is "0.8" ["0.8"] how much to look up/down slopes and stairs when not using freelook
+^7sv_intermission_cdtrack is "brainsukker" ["brainsukker"] custom cvar
+^7sv_jumpstep is "1" ["1"] whether you can step up while jumping (sv_gameplayfix_stepwhilejumping must also be 1)
+^7sv_jumpvelocity is "300" ["300"] cvar that can be used by QuakeC code for jump velocity
+^7sv_logscores_bots is "0" ["0"] custom cvar
+^7sv_logscores_console is "0" ["0"] custom cvar
+^7sv_logscores_file is "0" ["0"] custom cvar
+^7sv_logscores_filename is "scores.log" ["scores.log"] custom cvar
+^7sv_mapchange_delay is "5" ["5"] custom cvar
+^7sv_master1 is "" [""] user-chosen master server 1
+^7sv_master2 is "" [""] user-chosen master server 2
+^7sv_master3 is "" [""] user-chosen master server 3
+^7sv_master4 is "" [""] user-chosen master server 4
+^7sv_masterextra1 is "ghdigital.com" ["ghdigital.com"] default master server 1 (admin: LordHavoc)
+^7sv_masterextra2 is "dpmaster.deathmask.net" ["dpmaster.deathmask.net"] default master server 2 (admin: Willis)
+^7sv_masterextra3 is "dpmaster.tchr.no" ["dpmaster.tchr.no"] default master server 3 (admin: tChr)
+^7sv_maxairspeed is "220" ["220"] maximum speed a player can accelerate to when airborn (note that it is possible to completely stop by moving the opposite direction)
+^7sv_maxidle is "0" ["0"] custom cvar
+^7sv_maxidle_spectatorsareidle is "0" ["0"] custom cvar
+^7sv_maxrate is "1000000" ["1000000"] upper limit on client rate cvar, should reflect your network connection quality
+^7sv_maxspeed is "400" ["400"] maximum speed a player can accelerate to when on ground (can be exceeded by tricks)
+^7sv_maxvelocity is "1000000000" ["1000000000"] universal speed limit on all entities
+^7sv_motd is "" [""] custom cvar
+^7sv_newflymove is "0" ["0"] enables simpler/buggier player physics (not recommended)
+^7sv_nostep is "0" ["0"] prevents MOVETYPE_STEP entities (monsters) from moving
+^7sv_playerphysicsqc is "1" ["1"] enables QuakeC function to override player physics
+^7sv_pogostick is "0" ["0"] custom cvar
+^7sv_precacheitems is "0" ["0"] custom cvar
+^7sv_precacheplayermodels is "1" ["1"] custom cvar
+^7sv_precacheweapons is "0" ["0"] custom cvar
+^7sv_progs is "progs.dat" ["progs.dat"] selects which quakec progs.dat file to run
+^7sv_protocolname is "DP7" ["DP7"] selects network protocol to host for (values include QUAKE, QUAKEDP, NEHAHRAMOVIE, DP1 and up)
+^7sv_public is "1" ["1"] 1: advertises this server on the master server (so that players can find it in the server browser); 0: allow direct queries only; -1: do not respond to direct queries; -2: do not allow anyone to connect
+^7sv_q3acompat_machineshotgunswap is "0" ["0"] custom cvar
+^7sv_random_seed is "" [""] random seed; when set, on every map start this random seed is used to initialize the random number generator. Don't touch it unless for benchmarking or debugging
+^7sv_ratelimitlocalplayer is "0" ["0"] whether to apply rate limiting to the local player in a listen server (only useful for testing)
+^7sv_ready_restart is "0" ["0"] custom cvar
+^7sv_ready_restart_after_countdown is "0" ["0"] custom cvar
+^7sv_ready_restart_repeatable is "0" ["0"] custom cvar
+^7sv_servermodelsonly is "1" ["1"] custom cvar
+^7sv_sound_land is "" [""] sound to play when MOVETYPE_STEP entity hits the ground at high speed (empty cvar disables the sound)
+^7sv_sound_watersplash is "" [""] sound to play when MOVETYPE_FLY/TOSS/BOUNCE/STEP entity enters or leaves water (empty cvar disables the sound)
+^7sv_spectate is "1" ["1"] custom cvar
+^7sv_spectator_speed_multiplier is "1.5" ["1.5"] custom cvar
+^7sv_status_privacy is "1" ["1"] do not show IP addresses in 'status' replies to clients
+^7sv_stepheight is "34" ["34"] how high you can step up (TW_SV_STEPCONTROL extension)
+^7sv_stopspeed is "100" ["100"] how fast you come to a complete stop
+^7sv_timeout is "0" ["0"] custom cvar
+^7sv_timeout_leadtime is "4" ["4"] custom cvar
+^7sv_timeout_length is "120" ["120"] custom cvar
+^7sv_timeout_number is "2" ["2"] custom cvar
+^7sv_timeout_resumetime is "3" ["3"] custom cvar
+^7sv_vote_call is "1" ["1"] custom cvar
+^7sv_vote_change is "0" ["0"] custom cvar
+^7sv_vote_commands is "restart timelimit fraglimit chmap gotomap g_grappling_hook sv_defaultplayer_fbskin_green sv_defaultplayer_fbskin_red sv_defaultplayer_fbskin_orange sv_defaultplayer_fbskin_off endmatch reducematchtime extendmatchtime allready" ["restart timelimit fraglimit chmap gotomap g_grappling_hook sv_defaultplayer_fbskin_green sv_defaultplayer_fbskin_red sv_defaultplayer_fbskin_orange sv_defaultplayer_fbskin_off endmatch reducematchtime extendmatchtime allready"] custom cvar
+^7sv_vote_majority_factor is "0.5" ["0.5"] custom cvar
+^7sv_vote_master is "1" ["1"] custom cvar
+^7sv_vote_master_password is "" [""] custom cvar
+^7sv_vote_nospectators is "0" ["0"] custom cvar
+^7sv_vote_override_mostrecent is "0" ["0"] custom cvar
+^7sv_vote_simple_majority is "0" ["0"] custom cvar
+^7sv_vote_singlecount is "0" ["0"] custom cvar
+^7sv_vote_timeout is "60" ["60"] custom cvar
+^7sv_vote_wait is "120" ["120"] custom cvar
+^7sv_wallfriction is "1" ["1"] how much you slow down when sliding along a wall
+^7sv_wateraccelerate is "-1" ["-1"] rate at which a player accelerates to sv_maxspeed while in the air, if less than 0 the sv_accelerate variable is used instead
+^7sv_waterfriction is "-1" ["-1"] how fast you slow down, if less than 0 the sv_friction variable is used instead
+^7sv_writepicture_quality is "10" ["10"] WritePicture quality offset (higher means better quality, but slower)
+^7sys_colortranslation is "1" ["1"] terminal console color translation (supported values: 0 = strip color codes, 1 = translate to ANSI codes, 2 = no translation)
+^7sys_specialcharactertranslation is "1" ["1"] terminal console conchars to ASCII translation (set to 0 if your conchars.tga is for an 8bit character set or if you want raw output)
+^7sys_ticrate is "0.05" ["0.05"] how long a server frame is in seconds, 0.05 is 20fps server rate, 0.1 is 10fps (can not be set higher than 0.1), 0 runs as many server frames as possible (makes games against bots a little smoother, overwhelms network players), 0.0138889 matches QuakeWorld physics
+^7sys_useclockgettime is "0" ["0"] use POSIX clock_gettime function (which has issues if the system clock speed is far off, as it can't get fixed by NTP) for timing rather than gettimeofday (which has issues if the system time is stepped by ntpdate, or apparently on some Xen installations)
+^7sys_usenoclockbutbenchmark is "0" ["0"] don't use ANY real timing, and simulate a clock (for benchmarking); the game then runs as fast as possible. Run a QC mod with bots that does some stuff, then does a quit at the end, to benchmark a server. NEVER do this on a public server.
+^7team is "none" ["none"] QW team (4 character limit, example: blue)
+^7teamplay is "0" ["0"] teamplay mode, values depend on mod but typically 0 = no teams, 1 = no team damage no self damage, 2 = team damage and self damage, some mods support 3 = no team damage but can damage self
+^7teamplay_default is "4" ["4"] custom cvar
+^7teamplay_lockonrestart is "0" ["0"] custom cvar
+^7temp1 is "0" ["0"] general cvar for mods to use, in stock id1 this selects which death animation to use on players (0 = random death, other values select specific death scenes)
+^7timeformat is "[%Y-%m-%d %H:%M:%S] " ["[%Y-%m-%d %H:%M:%S] "] time format to use on timestamped console messages
+^7timelimit is "0" ["0"] ends level at this time (in minutes)
+^7timelimit_decrement is "5" ["5"] custom cvar
+^7timelimit_increment is "5" ["5"] custom cvar
+^7timelimit_max is "60" ["60"] custom cvar
+^7timelimit_maxovertime is "5" ["5"] custom cvar
+^7timelimit_min is "5" ["5"] custom cvar
+^7timelimit_override is "-1" ["-1"] custom cvar
+^7timestamps is "0" ["0"] prints timestamps on console messages
+^7userbind10_description is "team: roaming, icon" ["team: roaming, icon"] custom cvar
+^7userbind10_press is "say_team roaming (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_here" ["say_team roaming (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_here"] custom cvar
+^7userbind10_release is "" [""] custom cvar
+^7userbind11_description is "team: attacking, icon" ["team: attacking, icon"] custom cvar
+^7userbind11_press is "say_team attacking (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_here" ["say_team attacking (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_here"] custom cvar
+^7userbind11_release is "" [""] custom cvar
+^7userbind12_description is "team: killed flag, icon" ["team: killed flag, icon"] custom cvar
+^7userbind12_press is "say_team killed flagcarrier (l:%y^7); g_waypointsprite_team_p" ["say_team killed flagcarrier (l:%y^7); g_waypointsprite_team_p"] custom cvar
+^7userbind12_release is "" [""] custom cvar
+^7userbind13_description is "team: dropped flag, icon" ["team: dropped flag, icon"] custom cvar
+^7userbind13_press is "say_team dropped flag (l:%d^7); g_waypointsprite_team_here_d" ["say_team dropped flag (l:%d^7); g_waypointsprite_team_here_d"] custom cvar
+^7userbind13_release is "" [""] custom cvar
+^7userbind14_description is "team: drop, icon" ["team: drop, icon"] custom cvar
+^7userbind14_press is "say_team dropped gun %w (l:%l^7); g_waypointsprite_team_here; wait; dropweapon" ["say_team dropped gun %w (l:%l^7); g_waypointsprite_team_here; wait; dropweapon"] custom cvar
+^7userbind14_release is "" [""] custom cvar
+^7userbind15_description is "chat: nice one" ["chat: nice one"] custom cvar
+^7userbind15_press is "say :-) / nice one" ["say :-) / nice one"] custom cvar
+^7userbind15_release is "" [""] custom cvar
+^7userbind16_description is "chat: good game" ["chat: good game"] custom cvar
+^7userbind16_press is "say good game" ["say good game"] custom cvar
+^7userbind16_release is "" [""] custom cvar
+^7userbind17_description is "chat: hi / good luck" ["chat: hi / good luck"] custom cvar
+^7userbind17_press is "say hi / good luck and have fun" ["say hi / good luck and have fun"] custom cvar
+^7userbind17_release is "" [""] custom cvar
+^7userbind18_description is "scoreboard / chat history" ["scoreboard / chat history"] custom cvar
+^7userbind18_press is "+showscores; +con_chat_maximize" ["+showscores; +con_chat_maximize"] custom cvar
+^7userbind18_release is "-showscores; -con_chat_maximize" ["-showscores; -con_chat_maximize"] custom cvar
+^7userbind19_description is "toggle recording .avi" ["toggle recording .avi"] custom cvar
+^7userbind19_press is "toggle cl_capturevideo" ["toggle cl_capturevideo"] custom cvar
+^7userbind19_release is "" [""] custom cvar
+^7userbind1_description is "team: quad soon" ["team: quad soon"] custom cvar
+^7userbind1_press is "say_team quad soon" ["say_team quad soon"] custom cvar
+^7userbind1_release is "" [""] custom cvar
+^7userbind20_description is "toggle fullscreen" ["toggle fullscreen"] custom cvar
+^7userbind20_press is "toggle vid_fullscreen; vid_restart" ["toggle vid_fullscreen; vid_restart"] custom cvar
+^7userbind20_release is "" [""] custom cvar
+^7userbind21_description is "" [""] custom cvar
+^7userbind21_press is "" [""] custom cvar
+^7userbind21_release is "" [""] custom cvar
+^7userbind22_description is "" [""] custom cvar
+^7userbind22_press is "" [""] custom cvar
+^7userbind22_release is "" [""] custom cvar
+^7userbind23_description is "" [""] custom cvar
+^7userbind23_press is "" [""] custom cvar
+^7userbind23_release is "" [""] custom cvar
+^7userbind24_description is "" [""] custom cvar
+^7userbind24_press is "" [""] custom cvar
+^7userbind24_release is "" [""] custom cvar
+^7userbind25_description is "" [""] custom cvar
+^7userbind25_press is "" [""] custom cvar
+^7userbind25_release is "" [""] custom cvar
+^7userbind26_description is "" [""] custom cvar
+^7userbind26_press is "" [""] custom cvar
+^7userbind26_release is "" [""] custom cvar
+^7userbind27_description is "" [""] custom cvar
+^7userbind27_press is "" [""] custom cvar
+^7userbind27_release is "" [""] custom cvar
+^7userbind28_description is "" [""] custom cvar
+^7userbind28_press is "" [""] custom cvar
+^7userbind28_release is "" [""] custom cvar
+^7userbind29_description is "" [""] custom cvar
+^7userbind29_press is "" [""] custom cvar
+^7userbind29_release is "" [""] custom cvar
+^7userbind2_description is "team: free item, icon" ["team: free item, icon"] custom cvar
+^7userbind2_press is "say_team free item %x^7 (l:%y^7); g_waypointsprite_team_here_p" ["say_team free item %x^7 (l:%y^7); g_waypointsprite_team_here_p"] custom cvar
+^7userbind2_release is "" [""] custom cvar
+^7userbind30_description is "" [""] custom cvar
+^7userbind30_press is "" [""] custom cvar
+^7userbind30_release is "" [""] custom cvar
+^7userbind31_description is "" [""] custom cvar
+^7userbind31_press is "" [""] custom cvar
+^7userbind31_release is "" [""] custom cvar
+^7userbind32_description is "" [""] custom cvar
+^7userbind32_press is "" [""] custom cvar
+^7userbind32_release is "" [""] custom cvar
+^7userbind3_description is "team: took item, icon" ["team: took item, icon"] custom cvar
+^7userbind3_press is "say_team took item (l:%l^7); g_waypointsprite_team_here" ["say_team took item (l:%l^7); g_waypointsprite_team_here"] custom cvar
+^7userbind3_release is "" [""] custom cvar
+^7userbind4_description is "team: negative" ["team: negative"] custom cvar
+^7userbind4_press is "say_team negative" ["say_team negative"] custom cvar
+^7userbind4_release is "" [""] custom cvar
+^7userbind5_description is "team: positive" ["team: positive"] custom cvar
+^7userbind5_press is "say_team positive" ["say_team positive"] custom cvar
+^7userbind5_release is "" [""] custom cvar
+^7userbind6_description is "team: need help, icon" ["team: need help, icon"] custom cvar
+^7userbind6_press is "say_team need help (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_helpme; cmd voice needhelp" ["say_team need help (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_helpme; cmd voice needhelp"] custom cvar
+^7userbind6_release is "" [""] custom cvar
+^7userbind7_description is "team: enemy seen, icon" ["team: enemy seen, icon"] custom cvar
+^7userbind7_press is "say_team enemy seen (l:%y^7); g_waypointsprite_team_danger_p; cmd voice incoming" ["say_team enemy seen (l:%y^7); g_waypointsprite_team_danger_p; cmd voice incoming"] custom cvar
+^7userbind7_release is "" [""] custom cvar
+^7userbind8_description is "team: flag seen, icon" ["team: flag seen, icon"] custom cvar
+^7userbind8_press is "say_team flag seen (l:%y^7); g_waypointsprite_team_here_p; cmd voice seenflag" ["say_team flag seen (l:%y^7); g_waypointsprite_team_here_p; cmd voice seenflag"] custom cvar
+^7userbind8_release is "" [""] custom cvar
+^7userbind9_description is "team: defending, icon" ["team: defending, icon"] custom cvar
+^7userbind9_press is "say_team defending (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_here" ["say_team defending (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_here"] custom cvar
+^7userbind9_release is "" [""] custom cvar
+^7v_kicktime is "$v_kicktime" ["$v_kicktime"] custom cvar
+^7vid_x11_display is "" [""] custom cvar
+^7welcome_message_time is "8" ["8"] custom cvar
+^71038 cvar(s)
+====== Log stopped (Mon Sep 29 13:10:51 2008) ======

Modified: branches/nexuiz-2.0/data/defaultNexuiz.cfg
===================================================================
--- branches/nexuiz-2.0/data/defaultNexuiz.cfg	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/defaultNexuiz.cfg	2008-10-03 18:32:25 UTC (rev 4619)
@@ -3,7 +3,7 @@
 
 // changes a cvar and reports it to the server (for the menu to notify the
 // server about changes)
-alias setreport "set $1 $2 ; sendcvar $1"
+alias setreport "set \"$1\" \"$2\" ; sendcvar \"$1\""
 
 // detect dedicated server
 alias "_detect_dedicated_$qport" "$*"
@@ -49,7 +49,6 @@
 alias bsp "ls maps/*.bsp"
 alias chmap "changelevel $*"
 alias gotomap "sv_cmd gotomap \"$1\""
-alias reset "exec game_reset.cfg"
 
 alias rec "record demos/$1"
 alias ply "playdemo $1"
@@ -131,9 +130,6 @@
 set sv_ready_restart 0
 set sv_ready_restart_after_countdown 0 //if set to 1 the players and map items are reset after the countdown ended, otherwise they're reset already at the beginning of the countdown
 set sv_ready_restart_repeatable 0 //allows the players to restart the game as often as needed
-set sv_ready_restart_nag 0 //whether to nag players who are not ready yet, the message is shown in intervals
-set sv_ready_restart_nag_duration 6 //how long to show the ready-nag, in seconds
-set sv_ready_restart_nag_interval 10 //how long the pause between the ready-nags is, in seconds
 
 //nifreks lockonrestart feature, used in team-based game modes, if set to 1 and all players readied up no other player can then join the game anymore, useful to block spectators from joining
 set teamplay_lockonrestart 0
@@ -197,7 +193,6 @@
 set ekg 0
 
 cl_movement 1
-cl_netinputpacketlosstolerance 0
 cl_stairsmoothspeed 200
 cl_forwardspeed $sv_maxspeed
 cl_backspeed $sv_maxspeed
@@ -322,8 +317,7 @@
 
 set welcome_message_time		8
 
-set exit_cfg empty.cfg
-alias clearmap	"disconnect; exec $exit_cfg"
+alias clearmap	"disconnect"
 
 seta g_grappling_hook 0
 set g_balance_grapplehook_health 130
@@ -339,7 +333,7 @@
 seta g_keyhunt_point_limit -1
 seta g_race_laps_limit -1
 
-seta g_ctf_win_mode 2 // 0: captures only, 1: captures, then points, 2: points only
+seta g_ctf_win_mode 2 // 0: captures only, 1: captures, then points, 2: points only, 3: points only, but no frags included
 
 // 50% of the spawns shall be far away from any players
 set g_spawn_furthest 0.5
@@ -391,13 +385,12 @@
 set gamecfg 1 // deathmatch
 
 // ctf
-set g_ctf				0
-set g_ctf_flag_returntime		30
-set g_ctf_flagscore_capture		20
-set g_ctf_flagscore_capture_team	0
-set g_ctf_flagscore_pickup		1
-set g_ctf_flagscore_return		5
-set g_ctf_flagscore_return_rogue	10
+set g_ctf 0
+set g_ctf_flag_returntime 30
+set g_ctf_flagcarrier_selfdamage 1
+set g_ctf_flagcarrier_selfforce 1
+                                               
+exec ctfscoring-nex242.cfg
 
 // runematch
 set g_runematch						0
@@ -530,6 +523,8 @@
 set g_balance_powerup_strength_damage 3
 set g_balance_powerup_strength_force 4
 set g_balance_powerup_strength_time 30
+set g_balance_powerup_strength_selfdamage 1.5
+set g_balance_powerup_strength_selfforce 1.5
 
 // weapon balance settings follow
 exec weapons.cfg
@@ -558,7 +553,7 @@
 cl_decals_time 2
 seta cl_nogibs 0
 cl_stainmaps 0
-cl_particles_explosions_smokes 1
+cl_particles_smoke 1
 r_glsl 1
 r_glsl_deluxemapping 1
 r_glsl_offsetmapping 0
@@ -951,9 +946,9 @@
 seta "userbind3_press" "say_team took item (l:%l^7); g_waypointsprite_team_here";  seta "userbind3_release" "";  seta "userbind3_description" "team: took item, icon"
 seta "userbind4_press" "say_team negative";  seta "userbind4_release" "";  seta "userbind4_description" "team: negative"
 seta "userbind5_press" "say_team positive";  seta "userbind5_release" "";  seta "userbind5_description" "team: positive"
-seta "userbind6_press" "say_team need help (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_helpme";  seta "userbind6_release" "";  seta "userbind6_description" "team: need help, icon"
-seta "userbind7_press" "say_team enemy seen (l:%y^7); g_waypointsprite_team_danger_p";  seta "userbind7_release" "";  seta "userbind7_description" "team: enemy seen, icon"
-seta "userbind8_press" "say_team flag seen (l:%y^7); g_waypointsprite_team_here_p";  seta "userbind8_release" "";  seta "userbind8_description" "team: flag seen, icon"
+seta "userbind6_press" "say_team need help (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_helpme; cmd voice needhelp";  seta "userbind6_release" "";  seta "userbind6_description" "team: need help, icon"
+seta "userbind7_press" "say_team enemy seen (l:%y^7); g_waypointsprite_team_danger_p; cmd voice incoming";  seta "userbind7_release" "";  seta "userbind7_description" "team: enemy seen, icon"
+seta "userbind8_press" "say_team flag seen (l:%y^7); g_waypointsprite_team_here_p; cmd voice seenflag";  seta "userbind8_release" "";  seta "userbind8_description" "team: flag seen, icon"
 seta "userbind9_press" "say_team defending (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_here";  seta "userbind9_release" "";  seta "userbind9_description" "team: defending, icon"
 seta "userbind10_press" "say_team roaming (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_here";  seta "userbind10_release" "";  seta "userbind10_description" "team: roaming, icon"
 seta "userbind11_press" "say_team attacking (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_here";  seta "userbind11_release" "";  seta "userbind11_description" "team: attacking, icon"
@@ -1090,10 +1085,13 @@
 set capturelimit 0
 
 // sbar: font size
-set sbar_fontsize 11
+seta sbar_fontsize 11
+seta sbar_width 480
 alias sbar_font "loadfont user1 $*; loadfont user2 ${*}-big; sbar_columns_set"
 seta sbar_columns default
 sbar_font gfx/vera-sans
+seta sbar_showbinds 1 // 0 disables display of keybinds, 1 enables it, 2 displays longer strings
+seta sbar_showbinds_limit 2 // display so many found keybinds, 0 for unlimited
 
 // these entities are not referenced by anything directly, they just represent
 // teams and are found by find() when needed
@@ -1124,6 +1122,7 @@
 // NOTE: this only replaces weapons on the map
 // use g_start_weapon_* to also replace the on-startup weapons!
 // example: g_weaponreplace_7 "7 11", then Nexes become MinstaNexes 50% of the times
+// set the cvars to 0 to totally disable a weapon
 set g_weaponreplace_1 ""
 set g_weaponreplace_2 ""
 set g_weaponreplace_3 ""
@@ -1137,3 +1136,15 @@
 set g_weaponreplace_11 ""
 
 seta sv_status_privacy 1 // hide IP addresses from "status" replies shown to clients
+
+// workaround for broken subdivisions in DP
+// remove this once DP can subdivide nearby/touching patches the same way
+r_subdivisions_mintess 3
+r_subdivisions_maxtess 3
+r_subdivisions_tolerance 1000000
+
+seta cl_teamradar 1
+seta cl_teamradar_background_alpha 0.75 // set to -1 to disable
+seta cl_teamradar_scale 4096
+seta cl_teamradar_rotation 0 // rotation mode: you set what points up. 0 = player, 1 = west, 2 = south, 3 = east, 4 = north
+alias cl_teamradar_rotate "toggle cl_teamradar_rotation 0 1 2 3 4"

Modified: branches/nexuiz-2.0/data/effectinfo.txt
===================================================================
--- branches/nexuiz-2.0/data/effectinfo.txt	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/effectinfo.txt	2008-10-03 18:32:25 UTC (rev 4619)
@@ -602,9 +602,10 @@
 effect TE_SPARK
 count 1
 type spark
+tex 40 40
 color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 0 256 768
+size 0.4 0.6
+alpha 64 256 768
 gravity 1
 bounce -1
 velocityoffset 0 0 80
@@ -951,7 +952,6 @@
 //lightcolor 0.4 0.9 0.9
 
 
-
 // flare particle and light
 effect item_respawn
 countabsolute 1
@@ -1054,17 +1054,20 @@
 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 0xFFFDD9
+color 0xFFFDD9 0xff5a00
 size 2 2
 alpha 0 128 1024
 originjitter 1 1 1
-velocityjitter 200 200 200
-velocitymultiplier 0.5
-airfriction 12
+velocityjitter 444 444 444
+velocitymultiplier 1.7
+gravity 0.3
+airfriction 5
 
 
 
@@ -1084,24 +1087,25 @@
 effect shotgun_impact
 count 5
 type smoke
-tex 48 55
-color 0xFFFFFF 0xFFFFFF
+tex 0 8
+color 0xFFFFFF 0xA37443
 size 7 7
 alpha 0 64 32
 originjitter 1 1 1
 airfriction 7
 liquidfriction 16
-velocityjitter 85 85 85
-sizeincrease 3
+velocityjitter 100 100 100
+sizeincrease 12
+velocitymultiplier 0.25
 // dust/smoke staying at the impact
 effect shotgun_impact
 count 1
 type smoke
-tex 48 55
+tex 0 8
 color 0xFFFFFF 0xFFFFFF
-size 7 7
+size 17 17
 alpha 64 64 32
-sizeincrease 3
+sizeincrease 4
 // sparks
 effect shotgun_impact
 notunderwater
@@ -1122,17 +1126,18 @@
 
 effect uzi_muzzleflash
 count 2
-type smoke
+type static
 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
+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
@@ -1144,9 +1149,18 @@
 velocityjitter 300 300 300
 velocitymultiplier 0.5
 airfriction 12
+/*
+// explosion
+effect uzi_muzzleflash
+count 3
+type smoke
+tex 48 55
+size 20 5
+alpha 255 255 2024
+color 0xFF9600 0x0090ff
+*/
 
 
-
 // decal
 effect machinegun_impact
 countabsolute 1
@@ -1162,24 +1176,25 @@
 effect machinegun_impact
 count 5
 type smoke
-tex 48 55
-color 0xFFFFFF 0xFFFFFF
+tex 0 8
+color 0xFFFFFF 0xA37443
 size 7 7
 alpha 0 64 32
 originjitter 1 1 1
 airfriction 7
 liquidfriction 16
-velocityjitter 85 85 85
-sizeincrease 3
+velocityjitter 100 100 100
+sizeincrease 12
+velocitymultiplier 0.25
 // dust/smoke staying at the impact
 effect machinegun_impact
 count 1
 type smoke
-tex 48 55
+tex 0 8
 color 0xFFFFFF 0xFFFFFF
-size 7 7
+size 17 17
 alpha 64 64 32
-sizeincrease 3
+sizeincrease 4
 // sparks
 effect machinegun_impact
 notunderwater
@@ -1187,7 +1202,7 @@
 type spark
 tex 40 40
 color 0xFDFFD9 0xFDFFD9
-size 0.6 0.6
+size 0.3 0.3
 alpha 256 256 768
 gravity 1
 bounce 1
@@ -1230,12 +1245,27 @@
 // smoke
 effect TR_GRENADE
 notunderwater
-trailspacing 3
-type smoke
-color 0x303030 0x606060
+trailspacing 5
+type alphastatic
+color 0x303030 0x000000
 tex 0 8
 size 3 3
-alpha 64 64 64
+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_GRENADE
+type alphastatic
+color 0xFF0000 0xFF0000
+tex 62 62
+size 1 1 
+sizeincrease -0.1
+trailspacing 1
+alpha 256 256 720
 // bubbles
 effect TR_GRENADE
 underwater
@@ -1263,28 +1293,49 @@
 lightradius 250
 lightradiusfade 400
 lightcolor 8 4 1
-// flare effect
+// fire effect which expands then slows
 effect grenade_explode
-countabsolute 1
+notunderwater
+count 80
 type static
-tex 35 37
-color 0x404040 0x404040
-size 48 48
-alpha 192 192 64
-// fire effect which expands then slows
+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 128
+count 30
 type static
 tex 48 55
-color 0x902010 0xFFD080
-size 16 16
-alpha 128 128 256
-bounce 1.5
-airfriction 4
-liquidfriction 4
+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
@@ -1302,10 +1353,11 @@
 // bouncing sparks
 effect grenade_explode
 notunderwater
-count 32
+count 16
 type spark
 color 0x903010 0xFFD030
 size 2 2
+tex 40 40
 alpha 256 256 384
 gravity 1
 airfriction 0.2
@@ -1332,7 +1384,7 @@
 effect electro_muzzleflash
 count 30
 type spark
-tex 41 41
+tex 31 31
 color 0xD9FDFF 0xD9FDFF
 size 3 3
 alpha 0 128 1024
@@ -1346,12 +1398,13 @@
 // electro trail
 // glowing vapor trail
 effect TR_NEXUIZPLASMA
-trailspacing 4
+trailspacing 2
 type static
 color 0x283880 0x283880
-size 4 4
-alpha 256 256 768
-velocityjitter 16 16 16
+size 3 3
+tex 62 62
+alpha 256 256 968
+//velocityjitter 16 16 16
 lightradius 90
 lighttime 0
 lightcolor 1.5 3 6
@@ -1360,17 +1413,17 @@
 effect TR_NEXUIZPLASMA
 trailspacing 6
 count 3
-type spark
-tex 41 41
-color 0xFDFFD9 0xFDFFD9
-size 2 2
+type snow
+tex 42 42
+color 0x629dff 0x0018ff
+size 2 4
+sizeincrease -20
 alpha 444 512 1866
-gravity 1
 bounce 1
 velocityoffset 0 0 15
 airfriction 12
 originjitter 1 1 1
-velocityjitter 200 200 200
+velocityjitter 50 50 50
 
 
 
@@ -1391,30 +1444,34 @@
 type static
 tex 38 38
 color 0x80C0FF 0x80C0FF
-size 32 32
+size 12 32
 alpha 256 256 512
 // cloud of bouncing sparks
 effect electro_impact
-count 128
-type spark
-tex 41 41
-color 0xFDFFD9 0xFDFFD9
-size 16 16
+count 60
+type smoke
+tex 42 42
+color 0x629dff 0x0018ff
+size 36 36
+sizeincrease -50
 alpha 256 256 1024
 bounce 2
-//airfriction 2
+gravity -0.3
+airfriction 6
 originjitter 1 1 1
 velocityjitter 512 512 512
 // inner cloud of smoke
 effect electro_impact
-count 16
+count 60
 type smoke
-color 0x202020 0x404040
+color 0x629dff 0x0018ff
 tex 0 8
-size 24 24
-alpha 256 256 512
+size 20 24
+sizeincrease 50
+alpha 200 256 512
+airfriction 30
 originjitter 20 20 20
-velocityjitter 32 32 32
+velocityjitter 320 320 320
 
 // decal
 effect electro_ballexplode
@@ -1640,11 +1697,11 @@
 effect nex_beam
 trailspacing 6
 color 0x5080A0 0x5080A0
-size 4 4
-tex 48 55
+size 1 1
+tex 0 8
 alpha 32 64 32
 airfriction 9
-sizeincrease 4
+sizeincrease 8
 velocityjitter 64 64 64
 type static
 // nex beam: bright core
@@ -1655,6 +1712,16 @@
 //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
@@ -1668,6 +1735,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
@@ -1763,34 +1840,57 @@
 countabsolute 1
 type decal
 tex 8 16
-size 48 48
+size 28 38
 alpha 256 256 0
 originjitter 40 40 40
 lightradius 250
 lightradiusfade 400
 lightcolor 8 4 1
-// flare effect
+// fire effect which make bright dot inside
 effect hagar_explode
-countabsolute 1
-type static
-tex 35 37
-color 0x404040 0x404040
-size 48 48
-alpha 192 192 64
+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 128
+count 24
 type static
 tex 48 55
-color 0x902010 0xFFD080
-size 16 16
-alpha 128 128 256
+color 0x8f0d00 0xff5a00
+size 20 26
+sizeincrease 15
+alpha 128 256 456
 bounce 1.5
-airfriction 4
-liquidfriction 4
+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
@@ -1808,10 +1908,11 @@
 // bouncing sparks
 effect hagar_explode
 notunderwater
-count 32
+count 16
 type spark
 color 0x903010 0xFFD030
 size 2 2
+tex 40 40
 alpha 256 256 384
 gravity 1
 airfriction 0.2
@@ -1823,16 +1924,17 @@
 
 
 effect rocketlauncher_muzzleflash
-count 5
+count 20
 type smoke
 color 0x202020 0x404040
 tex 0 8
-size 5 5
+size 1 1
+sizeincrease 20
 alpha 256 256 256
-airfriction 6
+airfriction 2
 originjitter 1.5 1.5 1.5
 velocityjitter 40 40 40
-velocitymultiplier 0.03
+velocitymultiplier -0.13
 //lightradius 200
 //lightradiusfade 2000
 //lightcolor 2 1.5 0.2
@@ -1853,27 +1955,34 @@
 // rocket trail
 // smoke
 effect TR_ROCKET
-trailspacing 6
-type smoke
-color 0x303030 0x606060
+trailspacing 5
+type alphastatic
+color 0x303030 0x000000
 tex 0 8
-size 7 7
-alpha 32 32 32
+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 6
+trailspacing 2
 type static
-color 0x805010 0xFFA020
-tex 0 8
-size 6 6
-alpha 144 144 288
+color 0xffdf72 0x811200
+tex 48 55
+size 7 7
+sizeincrease -30
+alpha 100 144 588
 airfriction 8
 velocityjitter 32 32 32
-velocitymultiplier -0.5
+velocitymultiplier -1.5
 // bubbles
 effect TR_ROCKET
 underwater
@@ -1893,18 +2002,16 @@
 type spark
 tex 40 40
 color 0xFFFDD9 0xFFFDD9
-size 2 2
+size 1 1
 alpha 444 512 1866
-gravity 1
+//gravity 1
 bounce 1
-velocityoffset 0 0 15
-airfriction 12
+//velocityoffset 0 0 15
+airfriction 5
 originjitter 1 1 1
-velocityjitter 200 200 200
-velocitymultiplier -0.5
+velocityjitter 100 100 100
+velocitymultiplier -0.31
 
-
-
 // rocket explosion (bigger than mortar and hagar)
 // decal
 effect rocket_explode
@@ -1915,30 +2022,51 @@
 alpha 256 256 0
 originjitter 40 40 40
 lightradius 400
-lightradiusfade 400
+lightradiusfade 750
 lightcolor 8 4 1
-// flare effect
-effect rocket_explode
-countabsolute 1
-type static
-tex 35 37
-color 0x404040 0x404040
-size 72 72
-alpha 192 192 64
 // fire effect
 effect rocket_explode
 notunderwater
-count 256
+count 64
 type static
 tex 48 55
-color 0x902010 0xFFD080
-size 16 16
-alpha 128 128 256
+color 0x8f0d00 0xff5a00
+size 33 44
+sizeincrease 45
+alpha 200 256 512
 bounce 1.5
-airfriction 4
-liquidfriction 4
+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 0x8f0d00 0xfffde4
+size 33 44
+sizeincrease 45
+alpha 200 256 612
+bounce 1.5
+airfriction 19
+liquidfriction 19
+originjitter 8 8 8
+velocityjitter 812 812 812
+// 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
@@ -1956,17 +2084,20 @@
 // bouncing sparks
 effect rocket_explode
 notunderwater
-count 128
+count 64
 type spark
+tex 40 40
 color 0x903010 0xFFD030
 size 2 2
-alpha 256 256 384
+sizeincrease 5
+alpha 44 256 384
 gravity 1
-airfriction 0.2
+airfriction -1
 bounce 1.5
 liquidfriction 0.8
 velocityoffset 0 0 80
-velocityjitter 384 384 384
+originjitter 16 16 16
+velocityjitter 284 284 384
 
 
 
@@ -2325,3 +2456,49 @@
 originjitter 1 1 1
 velocityjitter 100 100 100
 velocitymultiplier 100
+
+
+//torch
+//fire
+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
+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

Modified: branches/nexuiz-2.0/data/env/blackbox/blackbox_bk.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/blackbox/blackbox_dn.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/blackbox/blackbox_ft.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/blackbox/blackbox_lf.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/blackbox/blackbox_rt.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/blackbox/blackbox_up.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/desert/desert_bk.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/desert/desert_dn.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/desert/desert_ft.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/desert/desert_lf.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/desert/desert_rt.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/desert/desert_up.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/green_dark/green_dark_bk.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/green_dark/green_dark_dn.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/green_dark/green_dark_ft.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/green_dark/green_dark_lf.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/green_dark/green_dark_rt.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/green_dark/green_dark_up.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/green_storm/green_storm_bk.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/green_storm/green_storm_dn.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/green_storm/green_storm_ft.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/green_storm/green_storm_lf.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/green_storm/green_storm_rt.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/green_storm/green_storm_up.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/strale_grey/ygrey_bk.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/strale_grey/ygrey_dn.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/strale_grey/ygrey_ft.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/strale_grey/ygrey_lf.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/strale_grey/ygrey_rt.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/strale_grey/ygrey_up.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex5/greennebula_bk.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex5/greennebula_dn.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex5/greennebula_ft.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex5/greennebula_lf.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex5/greennebula_rt.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex5/greennebula_up.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex5/stralenex5_bk.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex5/stralenex5_dn.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex5/stralenex5_ft.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex5/stralenex5_lf.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex5/stralenex5_rt.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex5/stralenex5_up.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex8/darkblue_bk.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex8/darkblue_dn.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex8/darkblue_ft.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex8/darkblue_lf.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex8/darkblue_rt.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/env/stralenex8/darkblue_up.jpg
===================================================================
(Binary files differ)

Deleted: branches/nexuiz-2.0/data/game_reset.cfg
===================================================================
--- branches/nexuiz-2.0/data/game_reset.cfg	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/game_reset.cfg	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,32 +0,0 @@
-// we're starting a server, but if a map is already running, we have to
-// reset any pre-existing configurations so that capture the flag for example
-// won't stick around when the user starts a new dm map.
-
-// clean up campaign stuff
-settemp_restore
-
-alias _mutator_reset_0 ""
-alias _mutator_reset_1 "exec mutator_reset.cfg"
-_mutator_reset_$g_campaign
-
-set g_tdm 0
-set g_ctf 0
-set g_domination 0
-set g_runematch 0
-set g_lms 0
-set g_arena 0
-set g_campaign 0
-set g_keyhunt 0
-set g_assault 0
-set g_onslaught 0
-set gamecfg 0
-
-set g_respawn_mapsettings_delay 0
-set g_respawn_mapsettings_waves 0
-
-// prepare for loading a mapcfg
-set timelimit 0
-set fraglimit 0
-set g_keyhunt_teams 0
-
-set exit_cfg empty.cfg

Copied: branches/nexuiz-2.0/data/gfx/aggressor_mini.tga (from rev 4618, trunk/data/gfx/aggressor_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/aneurysm_mini.tga (from rev 4618, trunk/data/gfx/aneurysm_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/basementctf_mini.tga (from rev 4618, trunk/data/gfx/basementctf_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/bleach_mini.tga (from rev 4618, trunk/data/gfx/bleach_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/bloodprison_mini.tga (from rev 4618, trunk/data/gfx/bloodprison_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/bloodprisonctf_mini.tga (from rev 4618, trunk/data/gfx/bloodprisonctf_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/bluesky_mini.tga (from rev 4618, trunk/data/gfx/bluesky_mini.tga)
===================================================================
(Binary files differ)

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

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

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

Copied: branches/nexuiz-2.0/data/gfx/dieselpower_mini.tga (from rev 4618, trunk/data/gfx/dieselpower_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/dismal_mini.tga (from rev 4618, trunk/data/gfx/dismal_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/final_rage_mini.tga (from rev 4618, trunk/data/gfx/final_rage_mini.tga)
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/gfx/m_nomap.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/gfx/menu/default/background.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/gfx/menu/silver/background.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblack/background_ingame.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/background.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedblue/background_ingame.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedgreen/background_ingame.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedred/background_ingame.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/background.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedwhite/background_ingame.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/background.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/gfx/menu/wickedyellow/background_ingame.tga
===================================================================
(Binary files differ)

Deleted: branches/nexuiz-2.0/data/gfx/ons-reborn_mini.tga
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/ons-reborn_mini.tga (from rev 4618, trunk/data/gfx/ons-reborn_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/reslimed_mini.tga (from rev 4618, trunk/data/gfx/reslimed_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/runningman_1on1remix_mini.tga (from rev 4618, trunk/data/gfx/runningman_1on1remix_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/runningman_mini.tga (from rev 4618, trunk/data/gfx/runningman_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/runningmanctf_mini.tga (from rev 4618, trunk/data/gfx/runningmanctf_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/silvercity_mini.tga (from rev 4618, trunk/data/gfx/silvercity_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/soylent_mini.tga (from rev 4618, trunk/data/gfx/soylent_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/stormkeep_mini.tga (from rev 4618, trunk/data/gfx/stormkeep_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/strength_mini.tga (from rev 4618, trunk/data/gfx/strength_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/teamradar_icon_1.tga (from rev 4618, trunk/data/gfx/teamradar_icon_1.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/teamradar_icon_2.tga (from rev 4618, trunk/data/gfx/teamradar_icon_2.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/teamradar_ping.tga (from rev 4618, trunk/data/gfx/teamradar_ping.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/toxic_mini.tga (from rev 4618, trunk/data/gfx/toxic_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/gfx/warfare_mini.tga (from rev 4618, trunk/data/gfx/warfare_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/aggressor (from rev 4618, trunk/data/maps/aggressor)

Modified: branches/nexuiz-2.0/data/maps/aggressor.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/aggressor.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/aggressor.map
===================================================================
--- branches/nexuiz-2.0/data/maps/aggressor.map	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/maps/aggressor.map	2008-10-03 18:32:25 UTC (rev 4619)
@@ -3,6 +3,7 @@
 {
 "classname" "worldspawn"
 "message" "Aggressor - by Tyrann"
+"_keeplights" "1"
 // brush 0
 {
 ( -32 -192 288 ) ( -32 -192 304 ) ( -64 -224 304 ) e7/e7panelwood2 448 -21 -270 0.5 0.5 0 0 0

Copied: branches/nexuiz-2.0/data/maps/aneurysm (from rev 4618, trunk/data/maps/aneurysm)

Modified: branches/nexuiz-2.0/data/maps/aneurysm.bsp
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/basement (from rev 4618, trunk/data/maps/basement)

Modified: branches/nexuiz-2.0/data/maps/basement.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/basement.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/basementctf (from rev 4618, trunk/data/maps/basementctf)

Modified: branches/nexuiz-2.0/data/maps/basementctf.bsp
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/bleach (from rev 4618, trunk/data/maps/bleach)

Modified: branches/nexuiz-2.0/data/maps/bleach.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/bleach.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/bloodprison (from rev 4618, trunk/data/maps/bloodprison)

Modified: branches/nexuiz-2.0/data/maps/bloodprison.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/bloodprison.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/bloodprisonctf (from rev 4618, trunk/data/maps/bloodprisonctf)

Modified: branches/nexuiz-2.0/data/maps/bloodprisonctf.bsp
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/bluesky (from rev 4618, trunk/data/maps/bluesky)

Modified: branches/nexuiz-2.0/data/maps/bluesky.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/bluesky.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/darkzone (from rev 4618, trunk/data/maps/darkzone)

Modified: branches/nexuiz-2.0/data/maps/darkzone.bsp
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/dieselpower (from rev 4618, trunk/data/maps/dieselpower)

Modified: branches/nexuiz-2.0/data/maps/dieselpower.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/dieselpower.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/dismal (from rev 4618, trunk/data/maps/dismal)

Modified: branches/nexuiz-2.0/data/maps/dismal.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/dismal.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/downer (from rev 4618, trunk/data/maps/downer)

Modified: branches/nexuiz-2.0/data/maps/downer.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/downer.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/evilspace (from rev 4618, trunk/data/maps/evilspace)

Modified: branches/nexuiz-2.0/data/maps/evilspace.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/evilspace.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/farewell (from rev 4618, trunk/data/maps/farewell)

Modified: branches/nexuiz-2.0/data/maps/farewell.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/farewell.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/final_rage (from rev 4618, trunk/data/maps/final_rage)

Modified: branches/nexuiz-2.0/data/maps/final_rage.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/final_rage.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/ons-reborn (from rev 4618, trunk/data/maps/ons-reborn)

Modified: branches/nexuiz-2.0/data/maps/ons-reborn.bsp
===================================================================
(Binary files differ)

Deleted: branches/nexuiz-2.0/data/maps/ons-reborn.info
===================================================================
--- branches/nexuiz-2.0/data/maps/ons-reborn.info	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/maps/ons-reborn.info	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,8 +0,0 @@
-// This file is necessary if world.mins/maxs is wrong.
-// It happens when q3map2 fucks up, or you put entities far outside the map,
-// like ons-reborn the trains.
-// Every unrecognized line in this file will be printed to the console
-// unless it begins with double slashes
-// This is a sample file =)
-mins -8224.0 -8224.0 -96.0
-maxs 8224.0 8224.0 6496.0

Modified: branches/nexuiz-2.0/data/maps/ons-reborn.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/ons-reborn.map
===================================================================
--- branches/nexuiz-2.0/data/maps/ons-reborn.map	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/maps/ons-reborn.map	2008-10-03 18:32:25 UTC (rev 4619)
@@ -17741,7 +17741,7 @@
 "terrain" "1"
 "layers" "6"
 "shader" "test3/terrain"
-"alphamap" "test3.pcx"
+"alphamap" "maps/ons-reborn-terrain.pcx"
 // brush 0
 {
 ( -8192 -8010 3989 ) ( -8010 -8192 4164 ) ( -8192 -8192 4203 ) common/terrain 0 0 0 0.5 0.5 134217728 0 0
@@ -154127,7 +154127,7 @@
 "terrain" "1"
 "layers" "6"
 "shader" "test3/terrain"
-"alphamap" "test3.pcx"
+"alphamap" "maps/ons-reborn-terrain.pcx"
 // brush 0
 {
 ( 6852 -6252 2479 ) ( 6852 -6070 2489 ) ( 7034 -6070 2522 ) common/terrain 16 16 180 0.5 0.5 134217728 0 0

Modified: branches/nexuiz-2.0/data/maps/ons-reborn.mapinfo
===================================================================
--- branches/nexuiz-2.0/data/maps/ons-reborn.mapinfo	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/maps/ons-reborn.mapinfo	2008-10-03 18:32:25 UTC (rev 4619)
@@ -6,3 +6,4 @@
 has weapons
 type ons 20
 cdtrack 8
+size -8224.0 -8224.0 -96.0 8224.0 8224.0 6496.0

Copied: branches/nexuiz-2.0/data/maps/ons-reborn_mini.tga (from rev 4618, trunk/data/maps/ons-reborn_mini.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/reslimed (from rev 4618, trunk/data/maps/reslimed)

Modified: branches/nexuiz-2.0/data/maps/reslimed.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/reslimed.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/ruiner (from rev 4618, trunk/data/maps/ruiner)

Modified: branches/nexuiz-2.0/data/maps/ruiner.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/ruiner.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/runningman (from rev 4618, trunk/data/maps/runningman)

Modified: branches/nexuiz-2.0/data/maps/runningman.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/runningman.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/runningman_1on1remix (from rev 4618, trunk/data/maps/runningman_1on1remix)

Modified: branches/nexuiz-2.0/data/maps/runningman_1on1remix.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/runningman_1on1remix.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/runningmanctf (from rev 4618, trunk/data/maps/runningmanctf)

Modified: branches/nexuiz-2.0/data/maps/runningmanctf.bsp
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/silvercity (from rev 4618, trunk/data/maps/silvercity)

Modified: branches/nexuiz-2.0/data/maps/silvercity.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/silvercity.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/skyway (from rev 4618, trunk/data/maps/skyway)

Modified: branches/nexuiz-2.0/data/maps/skyway.bsp
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/slimepit (from rev 4618, trunk/data/maps/slimepit)

Modified: branches/nexuiz-2.0/data/maps/slimepit.bsp
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/soylent (from rev 4618, trunk/data/maps/soylent)

Modified: branches/nexuiz-2.0/data/maps/soylent.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/soylent.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/starship (from rev 4618, trunk/data/maps/starship)

Modified: branches/nexuiz-2.0/data/maps/starship.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/starship.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/stormkeep (from rev 4618, trunk/data/maps/stormkeep)

Modified: branches/nexuiz-2.0/data/maps/stormkeep.bsp
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/strength (from rev 4618, trunk/data/maps/strength)

Modified: branches/nexuiz-2.0/data/maps/strength.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/strength.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/toxic (from rev 4618, trunk/data/maps/toxic)

Modified: branches/nexuiz-2.0/data/maps/toxic.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/toxic.jpg
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/maps/warfare (from rev 4618, trunk/data/maps/warfare)

Modified: branches/nexuiz-2.0/data/maps/warfare.bsp
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/maps/warfare.jpg
===================================================================
(Binary files differ)

Deleted: branches/nexuiz-2.0/data/models/grass02.MD3
===================================================================
(Binary files differ)

Deleted: branches/nexuiz-2.0/data/models/grass03.MD3
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/models/mapobjects/morphed_tele/teledevice_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/models/mapobjects/morphed_tele/teledevice_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/models/mapobjects/morphed_tele/telepad_bump.tga
===================================================================
(Binary files differ)

Deleted: branches/nexuiz-2.0/data/models/mtree01.MD3
===================================================================
(Binary files differ)

Deleted: branches/nexuiz-2.0/data/models/mtree02.MD3
===================================================================
(Binary files differ)

Deleted: branches/nexuiz-2.0/data/models/mtree03.MD3
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/bluebase.tga (from rev 4618, trunk/data/models/sprites/bluebase.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/danger.tga (from rev 4618, trunk/data/models/sprites/danger.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/flagcarrier.tga (from rev 4618, trunk/data/models/sprites/flagcarrier.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/helpme.tga (from rev 4618, trunk/data/models/sprites/helpme.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/here.tga (from rev 4618, trunk/data/models/sprites/here.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/key-dropped.tga (from rev 4618, trunk/data/models/sprites/key-dropped.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/keycarrier-blue.tga (from rev 4618, trunk/data/models/sprites/keycarrier-blue.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/keycarrier-finish.tga (from rev 4618, trunk/data/models/sprites/keycarrier-finish.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/keycarrier-friend.tga (from rev 4618, trunk/data/models/sprites/keycarrier-friend.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/keycarrier-pink.tga (from rev 4618, trunk/data/models/sprites/keycarrier-pink.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/keycarrier-red.tga (from rev 4618, trunk/data/models/sprites/keycarrier-red.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/keycarrier-yellow.tga (from rev 4618, trunk/data/models/sprites/keycarrier-yellow.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/ons-cp-atck-blue.tga (from rev 4618, trunk/data/models/sprites/ons-cp-atck-blue.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/ons-cp-atck-neut.tga (from rev 4618, trunk/data/models/sprites/ons-cp-atck-neut.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/ons-cp-atck-red.tga (from rev 4618, trunk/data/models/sprites/ons-cp-atck-red.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/ons-cp-blue.tga (from rev 4618, trunk/data/models/sprites/ons-cp-blue.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/ons-cp-dfnd-blue.tga (from rev 4618, trunk/data/models/sprites/ons-cp-dfnd-blue.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/ons-cp-dfnd-red.tga (from rev 4618, trunk/data/models/sprites/ons-cp-dfnd-red.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/ons-cp-neut.tga (from rev 4618, trunk/data/models/sprites/ons-cp-neut.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/ons-cp-red.tga (from rev 4618, trunk/data/models/sprites/ons-cp-red.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/ons-gen-blue.tga (from rev 4618, trunk/data/models/sprites/ons-gen-blue.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/ons-gen-red.tga (from rev 4618, trunk/data/models/sprites/ons-gen-red.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/ons-gen-shielded.tga (from rev 4618, trunk/data/models/sprites/ons-gen-shielded.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/race-checkpoint.tga (from rev 4618, trunk/data/models/sprites/race-checkpoint.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/race-finish.tga (from rev 4618, trunk/data/models/sprites/race-finish.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/redbase.tga (from rev 4618, trunk/data/models/sprites/redbase.tga)
===================================================================
(Binary files differ)

Copied: branches/nexuiz-2.0/data/models/sprites/waypoint.tga (from rev 4618, trunk/data/models/sprites/waypoint.tga)
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/nexuiz-credits.txt
===================================================================
--- branches/nexuiz-2.0/data/nexuiz-credits.txt	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/nexuiz-credits.txt	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,126 +1,129 @@
-**Team Leaders:
-
-Lee Vermeulen
-*Project Founder and Co-Designer
-
-Forest "LordHavoc" Hale
-*Lead Programmer and Co-Designer
-
-SavageX
-*Project Maintainer
-
-Rudolf "div0" Polzer
-* Programmer
-
-
-
-**Development Team
-
-Andreas "Black" Kirsch
-*Programmer
-
-Stephan "esteel" Stahl
-*Programmer
-
-Peter "Morphed" Pielak
-*Artist
-
-Paul "Strahlemann" Evers
-*Level Designer
-
-
-
-**Past Team Members
-*In alphabetical order
-*(nickname or surname)
-
-Kurt Dereli
-*Artist
-
-Yves "EviLair" Allaire
-*Artist
-
-Fabien "H. Reaper" Tschirhart
-*Level Designer
-
-"Innovati"
-*Artist
-
-KadaverJack
-*Programmer
-
-MauveBib
-*Bot Programmer
-
-Rick "Rat" Kelley
-*Lead Animator, Skinner
-
-Gottfried "Toddd" Hofmann
-*Sound FX
-
-Marko "Urre" Permanto
-*Bot Programmer
-
-Dan "Wazat" Hale
-*Programmer
-
-Garth "Zombie" Hendy
-*Level Designer
-
-
-
-**Thanks:
-
-Gerd "Elysis" Raudenbusch - Music
-Braden "meoblast001" Walters - Music
-Amos "torus" Dudley - Announcer voices
-William "Willis" Weilep - Master server host
-Tyler "-z-" Mulligan - Site Design
+**Team Leaders:
+
+Lee Vermeulen
+*Project Founder and Co-Designer
+
+Forest "LordHavoc" Hale
+*Lead Programmer and Co-Designer
+
+SavageX
+*Project Maintainer
+
+Rudolf "div0" Polzer
+* Programmer
+
+
+
+**Development Team
+
+Andreas "Black" Kirsch
+*Programmer
+
+Stephan "esteel" Stahl
+*Programmer
+
+Peter "Morphed" Pielak
+*Artist
+
+Paul "Strahlemann" Evers
+*Level Designer
+
+
+
+**Past Team Members
+*In alphabetical order
+*(nickname or surname)
+
+Kurt Dereli
+*Artist
+
+Yves "EviLair" Allaire
+*Artist
+
+Fabien "H. Reaper" Tschirhart
+*Level Designer
+
+"Innovati"
+*Artist
+
+KadaverJack
+*Programmer
+
+MauveBib
+*Bot Programmer
+
+Rick "Rat" Kelley
+*Lead Animator, Skinner
+
+Gottfried "Toddd" Hofmann
+*Sound FX
+
+Tenshihan
+*Sound FX
+
+Marko "Urre" Permanto
+*Bot Programmer
+
+Dan "Wazat" Hale
+*Programmer
+
+Garth "Zombie" Hendy
+*Level Designer
+
+
+
+**Thanks:
+
+Gerd "Elysis" Raudenbusch - Music
+Braden "meoblast001" Walters - Music
+Amos "torus" Dudley - Announcer voices
+William "Willis" Weilep - Master server host
+Tyler "-z-" Mulligan - Site Design
 "sev" - "Wicked" menu skins
-
-Qantourisc
-Tymo
-Spirit
-Attila "WW3" Houtkooper
-GreEn`mArine
-Dan "Digger" Korostelev
-Kristian "morfar" Johansson
-leileilol
-Jody Gallagher
-Donkey
-Vortex
-Juergen "LowDragon" Timm
-Sajt
-Supajoe
-lcatlnx
-Zenex
-Q1 Retexturing Project
-Tomaz
-Jitspoe
-"Parapraxis"
-NoelCower
-Brain Younds
-Spike
-Petithomme
-Tei
-Munyul
-Mathieu "Elric" Olivier
-SomeGuy
-Lee David Ash
-Shank
-FrikaC
-Dustin Geeraert
-Steve Vermeulen
-Edgenetwork
-Clinton "Kaziganthe" Freeman
-Jakob "tZork" Markstrom Grohn
-BigMac
-Mephisto
-michaelb
-dstrek
-Netzwerg
-Ulrich Galbraith
-Christian Ice
-Wolfgang "Blub\0" Bumiller
-FruitieX
-Edward "Ed" Holness
+
+Qantourisc
+Tymo
+Spirit
+Attila "WW3" Houtkooper
+GreEn`mArine
+Dan "Digger" Korostelev
+Kristian "morfar" Johansson
+leileilol
+Jody Gallagher
+Donkey
+Vortex
+Juergen "LowDragon" Timm
+Sajt
+Supajoe
+lcatlnx
+Zenex
+Q1 Retexturing Project
+Tomaz
+Jitspoe
+"Parapraxis"
+NoelCower
+Brain Younds
+Spike
+Petithomme
+Tei
+Munyul
+Mathieu "Elric" Olivier
+SomeGuy
+Lee David Ash
+Shank
+FrikaC
+Dustin Geeraert
+Steve Vermeulen
+Edgenetwork
+Clinton "Kaziganthe" Freeman
+Jakob "tZork" Markstrom Grohn
+BigMac
+Mephisto
+michaelb
+dstrek
+Netzwerg
+Ulrich Galbraith
+Christian Ice
+Wolfgang "Blub\0" Bumiller
+FruitieX
+Edward "Ed" Holness

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

Modified: branches/nexuiz-2.0/data/qcsrc/client/Defs.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/Defs.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/client/Defs.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -174,7 +174,7 @@
 
 float vid_conwidth, vid_conheight;
 float configdb;
-string shortmapname;
+float binddb;
 
 // QUALIFYING
 float race_checkpoint;
@@ -202,3 +202,6 @@
 
 // Spectating
 float spectatee_status;
+
+// short mapname
+string shortmapname;

Modified: branches/nexuiz-2.0/data/qcsrc/client/Main.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/Main.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/client/Main.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -4,21 +4,21 @@
 
 #define DP_CSQC_ENTITY_REMOVE_IS_B0RKED
 
-void cvar_settemp(string cvar, string val)
+void cvar_clientsettemp(string cv, string val)
 {
 	entity e;
 	for(e = world; (e = find(e, classname, "saved_cvar_value")); )
-		if(e.netname == cvar)
+		if(e.netname == cv)
 			goto saved;
 	e = spawn();
 	e.classname = "saved_cvar_value";
-	e.netname = strzone(cvar);
-	e.message = strzone(cvar_string(cvar));
+	e.netname = strzone(cv);
+	e.message = strzone(cvar_string(cv));
 :saved
-	cvar_set(cvar, val);
+	cvar_set(cv, val);
 }
 
-void cvar_settemp_restore()
+void cvar_clientsettemp_restore()
 {
 	entity e;
 	for(e = world; (e = find(e, classname, "saved_cvar_value")); )
@@ -54,6 +54,8 @@
 		return db_get(configdb, strcat("/v/", key));
 }
 
+string forcefog;
+void WaypointSprite_Init();
 void CSQC_Init(void)
 {
 #ifdef USE_FTE
@@ -70,8 +72,10 @@
 	
 	float i;
 	CSQC_CheckEngine();
+	dprint_load();
 
 	configdb = db_create();
+	binddb = db_create();
 	compressShortVector_init();
 
 	drawfont = 0;
@@ -111,7 +115,27 @@
 	
 	GetTeam(COLOR_SPECTATOR, true); // add specs first
 
-	cvar_settemp("_supports_weaponpriority", "1");
+	cvar_clientsettemp("_supports_weaponpriority", "1");
+
+
+
+
+	cs_project_is_b0rked = TRUE;
+	R_SetView(VF_VIEWPORT, '0 0 0', '640 480 0');
+	R_SetView(VF_FOV, '90 90 0');
+	R_SetView(VF_ORIGIN, '0 0 0');
+	R_SetView(VF_ANGLES, '0 0 0');
+	R_SetView(VF_PERSPECTIVE, 1);
+	makevectors('0 0 0');
+	vector v;
+	v = cs_project(v_forward);
+	if(v_x - 320 < +1)
+	if(v_x - 320 > -1)
+	if(v_y - 240 < +1)
+	if(v_y - 240 > -1)
+		cs_project_is_b0rked = FALSE;
+
+	WaypointSprite_Init();
 }
 
 // CSQC_Shutdown : Called every time the CSQC code is shutdown (changing maps, quitting, etc)
@@ -127,8 +151,9 @@
 	remove(teams);
 	remove(players);
 	db_close(configdb);
+	db_close(binddb);
 
-	cvar_settemp_restore();
+	cvar_clientsettemp_restore();
 }
 
 .float has_team;
@@ -294,7 +319,7 @@
 		return true;
 	}
 	else if(cmd == "settemp") {
-		cvar_settemp(argv(1), argv(2));
+		cvar_clientsettemp(argv(1), argv(2));
 	}
 	
 	return false;
@@ -322,16 +347,21 @@
 
 // --------------------------------------------------------------------------
 // BEGIN OPTIONAL CSQC FUNCTIONS
-void Ent_ReadONS()
+void Ent_ReadEntCS()
 {
 	entity gps;
 	using_gps = true;
 
-	self.origin_x = ReadCoord();
-	self.origin_y = ReadCoord();
-	self.angles_y = ReadCoord();
+	InterpolateOrigin_Undo();
+
+	self.origin_x = ReadShort();
+	self.origin_y = ReadShort();
+	self.origin_z = ReadShort();
+	self.angles_y = ReadByte() * 360.0 / 256;
 	self.origin_z = self.angles_x = self.angles_z = 0;
 
+	InterpolateOrigin_Note();
+
 	for(gps = gps_start; gps; gps = gps.chain)
 	{
 		if(gps == self)
@@ -441,6 +471,25 @@
 	Sbar_UpdateTeamPos(o);
 }
 
+void Ent_Nagger()
+{
+	float nags;
+
+	nags = ReadByte();
+
+	if(nags & 128)
+	{
+		if(vote_called_vote)
+			strunzone(vote_called_vote);
+		vote_called_vote = strzone(ReadString());
+	}
+
+	ready_waiting = (nags & 1);
+	ready_waiting_for_me = (nags & 2);
+	vote_waiting = (nags & 4);
+	vote_waiting_for_me = (nags & 8);
+}
+
 // CSQC_Ent_Update : Called every frame that the server has indicated an update to the SSQC / CSQC entity has occured.
 // The only parameter reflects if the entity is "new" to the client, meaning it just came into the client's PVS.
 void(float bIsNewEntity) CSQC_Ent_Update =
@@ -464,7 +513,7 @@
 		{
 			switch(msg)
 			{
-			case ENTCS_MSG_ONS_GPS: Ent_ReadONS(); break;
+			case ENTCS_MSG_ONS_GPS: Ent_ReadEntCS(); break;
 			case ENTCS_MSG_ONS_REMOVE: Ent_RemoveONS(); break;
 			default:
 				error("unknown ENTCS_MSG type\n");
@@ -481,8 +530,12 @@
 		Ent_RainOrSnow();
 	else if(self.enttype == ENT_CLIENT_LASER)
 		Ent_Laser();
+	else if(self.enttype == ENT_CLIENT_NAGGER)
+		Ent_Nagger();
+	else if(self.enttype == ENT_CLIENT_WAYPOINT)
+		Ent_WaypointSprite();
 	else
-		error("unknown entity type in CSQC_Ent_Update\n");
+		error(strcat("unknown entity type in CSQC_Ent_Update: ", ftos(self.enttype), "\n"));
 	
 };
 // Destructor, but does NOT deallocate the entity by calling remove(). Also
@@ -528,6 +581,8 @@
 	{
 		Ent_PointParticles_Remove();
 	}
+	else if(self.enttype == ENT_CLIENT_WAYPOINT)
+		Ent_RemoveWaypointSprite();
 
 	self.enttype = 0;
 	self.classname = "";
@@ -544,49 +599,13 @@
 
 void Gamemode_Init()
 {
-	local string mapinfo, infoline;
-	local float len;
-	local float file;
-	local vector mi_min, mi_max;
+	get_mi_min_max();
+	mi_center = (mi_min + mi_max) * 0.5;
+	mi_scale = mi_max - mi_min;
+	minimapname = strzone(strcat("gfx/", mi_shortname, "_mini.tga"));
+	shortmapname = mi_shortname;
 
-	if(!strcasecmp(substring(mapname, 0, 5), "maps/"))
-		shortmapname = substring(mapname, 5, 999);
-	else
-		shortmapname = mapname;
-	len = strlen(shortmapname);
-	if(!strcasecmp(substring(shortmapname, len-4, 4), ".bsp"))
-		shortmapname = substring(shortmapname, 0, len-4);
-	shortmapname = strzone(shortmapname);
-
 	if(gametype == GAME_ONSLAUGHT) {
-		mapinfo = strcat("maps/", minimapname, ".info");
-		minimapname = strzone(strcat("gfx/", shortmapname, "_mini.tga"));
-
-		mi_min = world.mins;
-		mi_max = world.maxs;
-		
-		file = fopen(mapinfo, FILE_READ);
-		if(file >= 0) {
-			while((infoline = fgets(file))) {
-				if(!strncasecmp(infoline, "mins", 4)) {
-					mi_min = stov(substring(infoline, 5, 999));
-				} else if(!strncasecmp(infoline, "maxs", 4)) {
-					mi_max = stov(substring(infoline, 5, 999));
-				} else if(strncasecmp(infoline, "//", 2)) { // don't print comment-style lines
-					print(strcat("mapinfo: ", infoline, "\n"));
-				}
-			}
-		} else {
-			print(strcat("Map has no .info file (", mapinfo, ").\n"));
-		}
-		fclose(file);
-
-		print(strcat("Mins: ", vtos(mi_min), "    Maxs: ", vtos(mi_max), "\n"));
-		
-		mi_center = (mi_min + mi_max) * 0.5;
-		mi_scale = mi_max - mi_min;
-		
-		
 		print(strcat("Using ", minimapname, " as minimap.\n"));
 		precache_pic(minimapname);
 		precache_pic("gfx/ons-cp-neutral.tga");
@@ -617,6 +636,22 @@
 
 void CSQC_CheckRevision();
 
+void Fog_Force()
+{
+	// TODO somehow thwart prvm_globalset client ...
+
+	if(forcefog != "")
+		localcmd(strcat("\nfog ", forcefog, "\nr_fog_exp2 0\nr_drawfog 1\n"));
+}
+
+void Net_ReadFog()
+{
+	if(forcefog)
+		strunzone(forcefog);
+	ReadCoord(); // ignore fog interval
+	forcefog = strzone(ReadString());
+}
+
 void Gamemode_Init();
 void Net_ReadScoresInfo()
 {
@@ -847,6 +882,10 @@
 			Net_ReadWarmupStage();
 			bHandled = true;
 			break;
+		case TE_CSQC_FOG:
+			Net_ReadFog();
+			bHandled = true;
+			break;
 		default:
 			// No special logic for this temporary entity; return 0 so the engine can handle it
 			bHandled = false;
@@ -872,3 +911,48 @@
 		print("^1Please update to a newer version.\n");
 	}
 }
+
+string getcommandkey(string text, string command)
+{
+	string keys;
+	float n, j, k, l;
+
+	if (!sbar_showbinds)
+		return text;
+
+	keys = db_get(binddb, command);
+	if(csqc_flags & CSQC_FLAG_READPICTURE)
+	{
+		if (!keys) 
+		{
+			n = tokenize(findkeysforcommand(command));
+			for(j = 0; j < n; ++j)
+			{
+				k = stof(argv(j));
+				if(k != -1) 
+				{
+					if ("" == keys)
+						keys = keynumtostring(k);
+					else
+						keys = strcat(keys, ", ", keynumtostring(k));
+
+					++l;
+					if (sbar_showbinds_limit > 0 && sbar_showbinds_limit >= l) break;
+				}
+			
+			}
+			db_put(binddb, command, keys);
+		}
+	}
+	
+	if ("" == keys) {
+		if (sbar_showbinds > 1)
+			return strcat(text, " (not bound)");
+		else
+			return text;
+	}
+	else if (sbar_showbinds > 1)
+		return strcat(text, " (", keys, ")");
+	else
+		return keys;
+}

Modified: branches/nexuiz-2.0/data/qcsrc/client/View.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/View.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/client/View.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -17,7 +17,9 @@
 
 entity porto;
 vector polyline[16];
+float trace_dphitcontents;
 float Q3SURFACEFLAG_SLICK = 2; // low friction surface
+float DPCONTENTS_PLAYERCLIP = 256; // blocks player movement
 void Porto_Draw()
 {
 	vector p, dir, ang, q, nextdir;
@@ -53,10 +55,10 @@
 		++idx;
 		if(idx >= 16)
 			return;
-		if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_SLICK)
+		if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_SLICK || trace_dphitcontents & DPCONTENTS_PLAYERCLIP)
 			continue;
 		++portal_number;
-		ang = vectoangles(trace_plane_normal, dir);
+		ang = vectoangles2(trace_plane_normal, dir);
 		ang_x = -ang_x;
 		makevectors(ang);
 		if(!CheckWireframeBox(porto, p - 48 * v_right - 48 * v_up + 16 * v_forward, 96 * v_right, 96 * v_up, 96 * v_forward))
@@ -87,7 +89,6 @@
 
 float DPCONTENTS_SOLID = 1; // hit a bmodel, not a bounding box
 float DPCONTENTS_BODY = 32; // hit a bounding box, not a bmodel
-float DPCONTENTS_PLAYERCLIP = 256; // blocks player movement
 void Porto_Init()
 {
 	porto = spawn();
@@ -124,7 +125,7 @@
 			zoomspeed = 3.5;
 
 	zoomdir = button_zoom;
-	if(activeweapon == WEP_NEX)
+	if(getstati(STAT_ACTIVEWEAPON) == WEP_NEX) // do NOT use switchweapon here
 		zoomdir += button_attack2;
 	if(spectatee_status > 0 || isdemo())
 	{
@@ -160,6 +161,8 @@
 		}
 	}
 
+	current_zoomfraction = (current_viewzoom - 1) / (1/zoomfactor - 1);
+
 	if(zoomsensitivity < 1)
 		setsensitivityscale(pow(current_viewzoom, 1 - zoomsensitivity));
 	else
@@ -167,7 +170,7 @@
 
 	float frustumx, frustumy, fovx, fovy;
 	frustumy = tan(fov * 0.00872664625997164788) * 0.75 * current_viewzoom;
-	frustumx = frustumy * cvar("vid_width") / cvar("vid_height") / cvar("vid_pixelheight");
+	frustumx = frustumy * vid_width / vid_height / cvar("vid_pixelheight");
 	fovx = atan2(frustumx, 1) / 0.00872664625997164788;
 	fovy = atan2(frustumy, 1) / 0.00872664625997164788;
 
@@ -185,7 +188,36 @@
 {
 	entity e;
 	float fov;
+	dprint_load();
 
+	// Render the Scene
+	view_origin = pmove_org + '0 0 1' * getstati(STAT_VIEWHEIGHT);
+	view_angles = input_angles;
+	makevectors(view_angles);
+	view_forward = v_forward;
+	view_right = v_right;
+	view_up = v_up;
+
+#if 0
+	if(cs_project_is_b0rked)
+	{
+#endif
+		vid_width = cvar("vid_width");
+		vid_height = cvar("vid_height");
+#if 0
+	}
+	else
+	{
+		// THIS IS BROKEN if you had just shot (kicktime)
+		vector v;
+		v = cs_project(view_origin + 1024 * view_forward);
+		vid_width = floor(v_x * 2 + 0.5);
+		vid_height = floor(v_y * 2 + 0.5);
+	}
+#endif
+
+	Fog_Force();
+
 	drawframetime = max(0.000001, time - drawtime);
 	drawtime = time;
 
@@ -235,7 +267,9 @@
 	R_SetView(VF_FOV, GetCurrentFov(fov));
 	
 	// Draw the Crosshair
-	R_SetView(VF_DRAWCROSSHAIR, !Sbar_WouldDrawScoreboard());
+	float scoreboard_active;
+	scoreboard_active = Sbar_WouldDrawScoreboard();
+	R_SetView(VF_DRAWCROSSHAIR, !scoreboard_active);
 	
 	// Draw the Engine Status Bar (the default Quake HUD)
 	draw_enginesbar = !cvar("sbar_usecsqc");
@@ -245,6 +279,10 @@
 	vid_conwidth = cvar("vid_conwidth");
 	vid_conheight = cvar("vid_conheight");
 
+	// fetch this one only once per frame
+	sbar_showbinds = cvar("sbar_showbinds");
+	sbar_showbinds_limit = cvar("sbar_showbinds_limit");
+
 	// Update the mouse position
 	/*
 	mousepos_x = vid_conwidth;
@@ -254,15 +292,6 @@
 
 	R_AddEntities(MASK_NORMAL | MASK_ENGINE | MASK_ENGINEVIEWMODELS);
 
-	// Render the Scene
-	
-	view_origin = pmove_org + '0 0 1' * getstati(STAT_VIEWHEIGHT);
-	view_angles = input_angles;
-	makevectors(view_angles);
-	view_forward = v_forward;
-	view_right = v_right;
-	view_up = v_up;
-	
 	e = self;
 	for(self = world; (self = nextent(self)); )
 		if(self.draw)
@@ -287,16 +316,37 @@
 	} else */
 	if(!draw_enginesbar)
 	{
-		CSQC_common_hud();
+		if(cvar("r_letterbox") == 0)
+		if(cvar("viewsize") < 120)
+			CSQC_common_hud();
 	}
+
+	e = self;
+	for(self = world; (self = nextent(self)); )
+		if(self.draw2d)
+			self.draw2d();
+	self = e;
 	
 	if(gametype == GAME_ONSLAUGHT)
 	{
+		if(cvar("cl_teamradar") >= 2)
+		{
+			if(!scoreboard_active)
+				teamradar_view();
+		}
+		else
+			ons_view();
 		//drawstring('0 0', minimapname, '8 8 0', '1 1 1', 1, 0);
 		//drawsetcliparea(0,0,800,600);
-		ons_view();
 		//drawresetcliparea();
 	}
+	else if(teamplay)
+	{
+		//if(cvar("cl_teamradar") >= 1) // TODO change it back to this
+		if(cvar_string("cl_teamradar") != "0") // (so it is on by default)
+			if(!scoreboard_active)
+				teamradar_view();
+	}
 }
 
 void Sbar_Draw();

Modified: branches/nexuiz-2.0/data/qcsrc/client/csqc_builtins.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/csqc_builtins.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/client/csqc_builtins.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -39,7 +39,8 @@
 void (string s, ...)							localcmd = #46;
 entity (entity e)							nextent = #47;
 
-vector (vector v, ...)							vectoangles = #51;
+vector (vector v)							vectoangles = #51;
+vector (vector v, vector w)							vectoangles2 = #51;
 
 void (string var, string val)						cvar_set = #72;
 
@@ -146,7 +147,7 @@
 entity (.float fld, float match)					findchainflags = #450;
 entity (.entity fld, entity match)					findchainentity = #403;
 entity (.float fld, float match)					findchainfloat = #403;
-entity (entity start, .entity fld, float match)				findflags = #449;
+entity (entity start, .float fld, float match)				findflags = #449;
 
 float (string pattern, float caseinsensitive, float quiet)		search_begin = #444;
 void (float handle)							search_end = #445;
@@ -268,3 +269,6 @@
 string(string info, string key) infoget = #227;
 string(string info, string key, string value, ...) infoadd = #226;
 string(string in) uri_escape = #510;
+
+string	keynumtostring(float keynum) = #520;
+string	findkeysforcommand(string command) = #521;

Modified: branches/nexuiz-2.0/data/qcsrc/client/hook.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/hook.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/client/hook.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -31,7 +31,7 @@
 
 void Draw_GrapplingHook()
 {
-	vector a, b, o;
+	vector a, b;
 	string tex;
 	vector rgb;
 
@@ -67,7 +67,7 @@
 		tex = "particles/hook_green";
 		rgb = '.3 1 .3';
 	}
-	if(checkextension("DP_SV_WRITEPICTURE"))
+	if(csqc_flags & CSQC_FLAG_READPICTURE)
 		Draw_CylindricLine(b, a, 8, tex, 0.25, random(), '1 1 1', 1, DRAWFLAG_NORMAL);
 	else
 		Draw_CylindricLine(b, a, 1, "", 0.25, 0, rgb, 1, DRAWFLAG_NORMAL);

Copied: branches/nexuiz-2.0/data/qcsrc/client/interpolate.qc (from rev 4618, trunk/data/qcsrc/client/interpolate.qc)
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/interpolate.qc	                        (rev 0)
+++ branches/nexuiz-2.0/data/qcsrc/client/interpolate.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -0,0 +1,78 @@
+// FIXME make this generic code, to be used for other entities too?
+.vector iorigin1, iorigin2;
+.vector ivelocity1, ivelocity2;
+.vector iforward1, iforward2;
+.vector iright1, iright2;
+.float itime1, itime2;
+void InterpolateOrigin_Note()
+{
+	float dt;
+
+	dt = time - self.itime1;
+
+	self.iorigin1 = self.iorigin2;
+	self.iorigin2 = self.origin;
+
+	if(self.iflags & IFLAG_ANGLES)
+	{
+		fixedmakevectors(self.angles);
+		self.iforward1 = self.iforward2;
+		self.iright1 = self.iright2;
+		self.iforward2 = v_forward;
+		self.iright2 = v_right;
+	}
+
+	if(self.iflags & IFLAG_VELOCITY)
+	{
+		self.ivelocity1 = self.ivelocity2;
+		self.ivelocity2 = self.velocity;
+	}
+
+	if(vlen(self.iorigin2 - self.iorigin1) > 1000)
+	{
+		self.itime1 = self.itime2 = time; // don't lerp
+	}
+
+	if((self.iflags & IFLAG_VELOCITY) && (vlen(self.ivelocity2 - self.ivelocity1) > 1000))
+	{
+		self.itime1 = self.itime2 = time; // don't lerp
+	}
+
+	if(dt < 0.2)
+	{
+		self.itime1 = time;
+		self.itime2 = time + getstatf(STAT_SYS_TICRATE) * getstatf(STAT_MOVEVARS_TIMESCALE);
+	}
+	else
+	{
+		// don't lerp
+		self.itime1 = self.itime2 = time;
+	}
+}
+void InterpolateOrigin_Do()
+{
+	vector forward, right;
+	if(self.itime1 && self.itime2 && self.itime1 != self.itime2)
+	{
+		float f;
+		f = bound(0, (time - self.itime1) / (self.itime2 - self.itime1), 1);
+		self.origin = (1 - f) * self.iorigin1 + f * self.iorigin2;
+		if(self.iflags & IFLAG_ANGLES)
+		{
+			forward = (1 - f) * self.iforward1 + f * self.iforward2;
+			right = (1 - f) * self.iright1 + f * self.iright2;
+			self.angles = fixedvectoangles2(forward, right);
+		}
+		if(self.iflags & IFLAG_VELOCITY)
+			self.velocity = (1 - f) * self.ivelocity1 + f * self.ivelocity2;
+	}
+}
+void InterpolateOrigin_Undo()
+{
+	self.origin = self.iorigin2;
+	if(self.iflags & IFLAG_ANGLES)
+		self.angles = fixedvectoangles2(self.iforward2, self.iright2);
+	if(self.iflags & IFLAG_VELOCITY)
+		self.velocity = self.ivelocity2;
+}
+

Copied: branches/nexuiz-2.0/data/qcsrc/client/interpolate.qh (from rev 4618, trunk/data/qcsrc/client/interpolate.qh)
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/interpolate.qh	                        (rev 0)
+++ branches/nexuiz-2.0/data/qcsrc/client/interpolate.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -0,0 +1,12 @@
+.float iflags;
+#define IFLAG_VELOCITY 1
+#define IFLAG_ANGLES 2
+
+// call this BEFORE reading an entity update
+void InterpolateOrigin_Undo();
+
+// call this AFTER receiving an entity update
+void InterpolateOrigin_Note();
+
+// call this BEFORE drawing
+void InterpolateOrigin_Do();

Modified: branches/nexuiz-2.0/data/qcsrc/client/laser.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/laser.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/client/laser.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,75 +1,3 @@
-// FIXME make this generic code, to be used for other entities too?
-.vector iorigin1, iorigin2;
-.vector ivelocity1, ivelocity2;
-.vector iforward1, iforward2;
-.vector iright1, iright2;
-.float itime1, itime2;
-void InterpolateOrigin_Note()
-{
-	float dt;
-
-	makevectors(self.angles);
-
-	self.iorigin1 = self.iorigin2;
-	self.iforward1 = self.iforward2;
-	self.iright1 = self.iright2;
-	self.ivelocity1 = self.ivelocity2;
-
-	self.iorigin2 = self.origin;
-	self.iforward2 = v_forward;
-	self.iright2 = v_right;
-	self.ivelocity2 = self.velocity;
-
-	dt = time - self.itime1;
-
-	if(vlen(self.iorigin2 - self.iorigin1) > 1000)
-	{
-		self.iorigin1 = self.iorigin2;
-		self.iforward1 = self.iforward2;
-		self.iright1 = self.iright2;
-		self.ivelocity1 = self.ivelocity2;
-	}
-	else if(vlen(self.ivelocity2 - self.ivelocity1) > 1000)
-	{
-		self.iforward1 = self.iforward2;
-		self.iright1 = self.iright2;
-		self.ivelocity1 = self.ivelocity2;
-	}
-
-	if(dt < 0.2)
-	{
-		self.itime1 = time;
-		self.itime2 = time + getstatf(STAT_SYS_TICRATE) * getstatf(STAT_MOVEVARS_TIMESCALE);
-	}
-	else
-	{
-		// don't lerp
-		self.itime1 = self.itime2 = time;
-	}
-}
-void InterpolateOrigin_Do()
-{
-	vector forward, right;
-	if(self.itime1 && self.itime2 && self.itime1 != self.itime2)
-	{
-		float f;
-		f = bound(0, (time - self.itime1) / (self.itime2 - self.itime1), 1);
-		self.origin = (1 - f) * self.iorigin1 + f * self.iorigin2;
-		forward = (1 - f) * self.iforward1 + f * self.iforward2;
-		right = (1 - f) * self.iright1 + f * self.iright2;
-		self.angles = vectoangles(forward, right);
-		self.angles_x = -self.angles_x;
-		self.velocity = (1 - f) * self.ivelocity1 + f * self.ivelocity2;
-	}
-}
-void InterpolateOrigin_Undo()
-{
-	self.origin = self.iorigin2;
-	self.angles = vectoangles(self.iforward2, self.iright2);
-	self.angles_x = -self.angles_x;
-	self.velocity = self.ivelocity2;
-}
-
 // a laser goes from origin in direction angles
 // it has color 'colormod'
 // and stops when something is in the way
@@ -121,10 +49,17 @@
 void Ent_Laser()
 {
 	float f;
+	InterpolateOrigin_Undo();
+
 	// 30 bytes, or 13 bytes for just moving
 	f = ReadByte();
 	self.count = (f & 0xC0);
-	InterpolateOrigin_Undo();
+
+	if(self.count & 0x80)
+		self.iflags = IFLAG_VELOCITY;
+	else
+		self.iflags = IFLAG_ANGLES;
+
 	if(f & 1)
 	{
 		self.origin_x = ReadCoord();

Modified: branches/nexuiz-2.0/data/qcsrc/client/main.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/main.qh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/client/main.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -91,8 +91,8 @@
 float scores_flags[MAX_SCORE];
 string teamscores_label[MAX_SCORE];
 float teamscores_flags[MAX_SCORE];
-.float scores[MAX_SCORE];
-.float teamscores[MAX_TEAMSCORE];
+.float scores[MAX_SCORE]; FTEQCC_YOU_SUCK_THIS_IS_NOT_UNREFERENCED(scores);
+.float teamscores[MAX_TEAMSCORE]; FTEQCC_YOU_SUCK_THIS_IS_NOT_UNREFERENCED(teamscores);
 
 #define IS_INCREASING(x) ( (x)&SFL_LOWER_IS_BETTER )
 #define IS_DECREASING(x) ( !((x)&SFL_LOWER_IS_BETTER) )
@@ -111,6 +111,7 @@
 .entity owner;
 
 .void(void) draw;
+.void(void) draw2d;
 float drawframetime;
 vector view_origin, view_angles, view_forward, view_right, view_up;
 
@@ -126,3 +127,17 @@
 
 float weaponimpulse[24];
 float angles_held_status[24];
+string getcommandkey(string text, string command);
+float sbar_showbinds;
+float sbar_showbinds_limit;
+
+string vote_called_vote;
+float ready_waiting;
+float ready_waiting_for_me;
+float vote_waiting;
+float vote_waiting_for_me;
+
+float current_zoomfraction;
+
+float cs_project_is_b0rked;
+float vid_width, vid_height;

Modified: branches/nexuiz-2.0/data/qcsrc/client/mapvoting.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/mapvoting.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/client/mapvoting.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -34,7 +34,7 @@
 
 void MapVote_DrawMapItem(vector pos, float isize, float tsize, string map, string pic, float count, float id)
 {
-	vector img_size, a, b;
+	vector img_size;
 	vector rgb;
 	string label;
 	float text_size;
@@ -61,8 +61,6 @@
 
 	if(pic == "")
 	{
-		a_x = img_size_x; // for the lines
-		b_y = img_size_y;
 		drawfill(pos, img_size, '.5 .5 .5', .7, DRAWFLAG_NORMAL);
 	}
 	else
@@ -130,11 +128,7 @@
 		ymax = vid_conheight - ymin;
 
 	drawfont = sbar_bigfont;
-	sbar_fontsize = stov(cvar_string("sbar_fontsize"));
-	if(sbar_fontsize_x == 0)
-		sbar_fontsize = '8 8 0';
-	if(sbar_fontsize_y == 0)
-		sbar_fontsize_y = sbar_fontsize_x;
+	sbar_fontsize = Sbar_GetFontsize();
 
 	pos_y = ymin;
 	pos_z = 0;
@@ -242,7 +236,14 @@
 	pak.chain = mv_pk3list;
 	mv_pk3list = pak;
 	
-	localcmd(strcat("\ncurl --pak ", pk3, "; wait; cl_cmd mv_download ", ftos(id), "\n"));
+	if(pk3 != "" && pk3 != "don't care") // TODO make this less stupid, but I am lazy now
+	{
+		localcmd(strcat("\ncurl --pak ", pk3, "; wait; cl_cmd mv_download ", ftos(id), "\n"));
+	}
+	else
+	{
+		Cmd_MapVote_MapDownload(tokenize(strcat("mv_download ", ftos(id))));
+	}
 }
 
 void MapVote_CheckPic(string pic, string pk3, float id)

Modified: branches/nexuiz-2.0/data/qcsrc/client/miscfunctions.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/miscfunctions.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/client/miscfunctions.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -154,6 +154,23 @@
 	return '8 8 0' ;
 }
 
+float Sbar_GetWidth(float teamcolumnwidth)
+{
+	if(csqc_flags & CSQC_FLAG_READPICTURE)
+	{
+		float f;
+		f = stof(cvar_string("sbar_width"));
+		if(f == 0)
+			f = 640;
+		if(f < 320)
+			f = 320;
+		if(f > vid_conwidth - 2 * teamcolumnwidth)
+			f = vid_conwidth - 2 * teamcolumnwidth;
+		return f;
+	}
+	return 640;
+}
+
 float PreviewExists(string name)
 {
 	float f;
@@ -192,3 +209,14 @@
 	}
 	return false;
 }
+
+float PI      = 3.14159265359;
+float DEG2RAD = 0.01745329252;
+vector rotate(vector v, float a)
+{
+	vector w;
+	// FTEQCC SUCKS AGAIN
+	w_x =      v_x * cos(a) + v_y * sin(a);
+	w_y = -1 * v_x * sin(a) + v_y * cos(a);
+	return w;
+}

Modified: branches/nexuiz-2.0/data/qcsrc/client/particles.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/particles.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/client/particles.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,6 +1,5 @@
 vector PointInBrush_vec;
 entity PointInBrush_brush;
-entity PointInBrush_allmask;
 .float dphitcontentsmask;
 float PointInBrush_Recurse()
 {

Modified: branches/nexuiz-2.0/data/qcsrc/client/progs.src
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/progs.src	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/client/progs.src	2008-10-03 18:32:25 UTC (rev 4619)
@@ -7,7 +7,11 @@
 
 csqc_builtins.qc
 
+../common/mapinfo.qh
 ../common/util.qh
+interpolate.qh
+teamradar.qh
+waypointsprites.qh
 
 main.qh
 
@@ -27,6 +31,10 @@
 
 Main.qc
 View.qc
+interpolate.qc
+teamradar.qc
+waypointsprites.qc
 
 ../common/util.qc
 ../common/gamecommand.qc
+../common/mapinfo.qc

Modified: branches/nexuiz-2.0/data/qcsrc/client/sbar.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/sbar.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/client/sbar.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -346,7 +346,7 @@
 
 string Sbar_DefaultColumnLayout()
 {
-	return "ping pl name | -ctf,kh/kills -ctf,kh/deaths +lms/lives +lms/rank +kh,ctf/caps +kh/pushes +kh/destroyed -lms/score";
+	return "ping pl name | -ctf,kh/kills -ctf,kh/deaths +kh/caps +kh/pushes +kh/destroyed +ctf/caps +ctf/pickups +ctf/fckills +ctf/returns -lms/score";
 }
 
 void Cmd_Sbar_SetFields(float argc)
@@ -636,7 +636,7 @@
 		return strcat(substring(theText, 0, textLengthUpToWidth(theText, maxWidth - stringwidth("...", handleColors), handleColors)), "...");
 }
 
-float xmin, xmax, ymin, ymax, sbwidth, sbheight;
+float xmin, xmax, ymin, ymax, sbwidth;
 
 void Sbar_PrintScoreboardItem(vector pos, entity pl, float is_self)
 {
@@ -749,15 +749,14 @@
 		lastpingstime = time;
 	}
 
-	xmin = vid_conwidth / 5;
+	sbwidth = Sbar_GetWidth(6.5 * sbar_fontsize_y);
+
+	xmin = 0.5 * (vid_conwidth - sbwidth);
 	ymin = 20;
 
 	xmax = vid_conwidth - xmin;
-	ymax = vid_conheight - 0.2*vid_conheight;
+    ymax = vid_conheight - 0.2*vid_conheight;
 
-	sbwidth = xmax - xmin;
-	sbheight = ymax - ymin;
-
 	center_x = xmin + 0.5*sbwidth;
 
 	//Sbar_UpdateFields();
@@ -1323,6 +1322,19 @@
 	return 0;
 }
 
+vector Sbar_DrawNoteLine(vector offset, string s)
+{
+	dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
+	drawcolorcodedstring(
+		offset - sbar_fontsize_x * '1 0 0' * stringwidth(s, TRUE),
+		s,
+		sbar_fontsize,
+		sbar_alpha_fg,
+		0
+	);
+	return offset + sbar_fontsize_y * '0 1 0';
+}
+
 void Sbar_Draw (void)
 {
 	float i;
@@ -1333,63 +1345,25 @@
 
 	sbar_fontsize = Sbar_GetFontsize();
 	
-	if(warmup_stage) 
-	{
-		s = "^7Currently just ^1warmup^7 phase";
-		dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
-		drawcolorcodedstring(
-			o - sbar_fontsize_x * '1 0 0' * stringwidth(s, TRUE),
-			s,
-			sbar_fontsize,
-			sbar_alpha_fg,
-			0
-		);
-		o += sbar_fontsize_y * '0 1 0';
-	}
-
 	if(spectatee_status)
 	{
 		if(spectatee_status == -1)
 			s = "^1Observing";
 		else
 			s = strcat("^1Spectating ^7", getplayerkey(spectatee_status - 1, "name"));
-		dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
-		drawcolorcodedstring(
-			o - sbar_fontsize_x * '1 0 0' * stringwidth(s, TRUE),
-			s,
-			sbar_fontsize,
-			sbar_alpha_fg,
-			0
-		);
-		o += sbar_fontsize_y * '0 1 0';
+		o = Sbar_DrawNoteLine(o, s);
 
 		if(spectatee_status == -1)
-			s = "^1Press ^3primary fire^1 to spectate";
+			s = strcat("^1Press ^3", getcommandkey("primary fire", "+attack"), "^1 to spectate");
 		else
-			s = "^1Press ^3primary fire^1 for another player";
-		dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
-		drawcolorcodedstring(
-			o - sbar_fontsize_x * '1 0 0' * stringwidth(s, TRUE),
-			s,
-			sbar_fontsize,
-			sbar_alpha_fg,
-			0
-		);
-		o += sbar_fontsize_y * '0 1 0';
+			s = strcat("^1Press ^3", getcommandkey("primary fire", "+attack"), "^1 for another player");
+		o = Sbar_DrawNoteLine(o, s);
 
 		if(spectatee_status == -1)
-			s = "^1Use ^3weapon switching^1 to change the speed";
+			s = strcat("^1Use ^3", getcommandkey("next weapon", "weapnext"), "^1 or ^3", getcommandkey("previous weapon", "weapprev"), "^1 to change the speed");
 		else
-			s = "^1Press ^3secondary fire^1 to observe";
-		dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
-		drawcolorcodedstring(
-			o - sbar_fontsize_x * '1 0 0' * stringwidth(s, TRUE),
-			s,
-			sbar_fontsize,
-			sbar_alpha_fg,
-			0
-		);
-		o += sbar_fontsize_y * '0 1 0';
+			s = strcat("^1Press ^3", getcommandkey("secondary fire", "+altattack"), getcommandkey("", "weapprev"), "^1 to observe");
+		o = Sbar_DrawNoteLine(o, s);
 
 		if(gametype == GAME_ARENA)
 			s = "^1Wait for your turn to join";
@@ -1402,21 +1376,54 @@
 			else if(sk.(scores[ps_primary]) > 0)
 				s = "^1You have no more lives left";
 			else
-				s = "^1Press ^7jump^1 to join";
+				s = strcat("^1Press ^3", getcommandkey("jump", "+jump"), "^1 to join");
 		}
 		else
-			s = "^1Press ^7jump^1 to join";
-		dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
-		drawcolorcodedstring(
-			o - sbar_fontsize_x * '1 0 0' * stringwidth(s, TRUE),
-			s,
-			sbar_fontsize,
-			sbar_alpha_fg,
-			0
-		);
-		o += sbar_fontsize_y * '0 1 0';
+			s = strcat("^1Press ^3", getcommandkey("jump", "+jump"), "^1 to join");
+		o = Sbar_DrawNoteLine(o, s);
 	}
 		
+	if(ready_waiting)
+	{
+		if(ready_waiting_for_me)
+		{
+			if(warmup_stage) 
+				s = strcat("^2Press ^3", getcommandkey("ready", "ready"), "^2 to end warmup");
+			else
+				s = strcat("^2Press ^3", getcommandkey("ready", "ready"), "^2 once you are ready");
+		}
+		else
+		{
+			if(warmup_stage) 
+				s = strcat("^2Waiting for others to ready up to end warmup...");
+			else
+				s = strcat("^2Waiting for others to ready up...");
+		}
+		o = Sbar_DrawNoteLine(o, s);
+	}
+	if(vote_waiting)
+	{
+		s = strcat("^2A vote has been called for ^1", vote_called_vote);
+		o = Sbar_DrawNoteLine(o, s);
+
+		if(vote_waiting_for_me)
+		{
+			s = strcat("^2Press ^3", getcommandkey("vote yes", "vyes"), "^2 to accept");
+			o = Sbar_DrawNoteLine(o, s);
+
+			s = strcat("^2Press ^3", getcommandkey("vote no", "vno"), "^2 to reject");
+			o = Sbar_DrawNoteLine(o, s);
+
+			s = strcat("^2Press ^3", getcommandkey("vote abstain", "vabstain"), "^2 to abstain");
+			o = Sbar_DrawNoteLine(o, s);
+		}
+		else
+		{
+			s = strcat("^2Waiting for others to vote...");
+			o = Sbar_DrawNoteLine(o, s);
+		}
+	}
+
 	//Sbar_SortFrags();
 	Sbar_UpdatePlayerTeams();
 

Copied: branches/nexuiz-2.0/data/qcsrc/client/teamradar.qc (from rev 4618, trunk/data/qcsrc/client/teamradar.qc)
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/teamradar.qc	                        (rev 0)
+++ branches/nexuiz-2.0/data/qcsrc/client/teamradar.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -0,0 +1,170 @@
+float teamradar_angle; // player yaw angle
+vector teamradar_origin3d_in_texcoord; // player origin
+vector teamradar_origin2d; // 2D origin
+vector teamradar_size2d; // 2D size
+float teamradar_size; // 2D scale factor
+float teamradar_scale; // window size = ...qu
+
+vector teamradar_3dcoord_to_texcoord(vector in)
+{
+	vector out;
+	out_x = (in_x - mi_picmin_x) / (mi_picmax_x - mi_picmin_x);
+	out_y = (in_y - mi_picmin_y) / (mi_picmax_y - mi_picmin_y);
+	out_z = 0;
+	return out;
+}
+
+vector teamradar_texcoord_to_2dcoord(vector in)
+{
+	vector out;
+	in -= teamradar_origin3d_in_texcoord;
+
+	out = rotate(in, teamradar_angle * DEG2RAD);
+	out_y = - out_y; // screen space is reversed
+
+	out = out * teamradar_size;
+	out += teamradar_origin2d;
+	return out;
+}
+
+vector yinvert(vector v)
+{
+	v_y = 1 - v_y;
+	return v;
+}
+
+void draw_teamradar_background(float a)
+{
+	if(a <= 0)
+		return;
+
+	R_BeginPolygon(minimapname, 0);
+	R_PolygonVertex('1 0 0' * (teamradar_origin2d_x - teamradar_size2d_x * 0.5) + '0 1 0' * (teamradar_origin2d_y - teamradar_size2d_y * 0.5), '0 0 0', '0 0 0', a);
+	R_PolygonVertex('1 0 0' * (teamradar_origin2d_x + teamradar_size2d_x * 0.5) + '0 1 0' * (teamradar_origin2d_y - teamradar_size2d_y * 0.5), '0 0 0', '0 0 0', a);
+	R_PolygonVertex('1 0 0' * (teamradar_origin2d_x + teamradar_size2d_x * 0.5) + '0 1 0' * (teamradar_origin2d_y + teamradar_size2d_y * 0.5), '0 0 0', '0 0 0', a);
+	R_PolygonVertex('1 0 0' * (teamradar_origin2d_x - teamradar_size2d_x * 0.5) + '0 1 0' * (teamradar_origin2d_y + teamradar_size2d_y * 0.5), '0 0 0', '0 0 0', a);
+	R_EndPolygon();
+
+	R_BeginPolygon(minimapname, DRAWFLAG_ADDITIVE);
+	R_PolygonVertex(teamradar_texcoord_to_2dcoord(mi_pictexcoord0), yinvert(mi_pictexcoord0), '1 1 1', 1);
+	R_PolygonVertex(teamradar_texcoord_to_2dcoord(mi_pictexcoord1), yinvert(mi_pictexcoord1), '1 1 1', 1);
+	R_PolygonVertex(teamradar_texcoord_to_2dcoord(mi_pictexcoord2), yinvert(mi_pictexcoord2), '1 1 1', 1);
+	R_PolygonVertex(teamradar_texcoord_to_2dcoord(mi_pictexcoord3), yinvert(mi_pictexcoord3), '1 1 1', 1);
+	R_EndPolygon();
+}
+
+void(vector coord3d, vector pangles, vector rgb) draw_teamradar_player =
+{
+	vector coord, rgb2;
+
+	coord = teamradar_texcoord_to_2dcoord(teamradar_3dcoord_to_texcoord(coord3d));
+
+	makevectors(pangles - '0 1 0' * teamradar_angle);
+	v_forward_z = 0;
+	v_forward = normalize(v_forward);
+	v_forward_y *= -1.0;
+	v_right_x = -v_forward_y;
+	v_right_y = v_forward_x;
+
+	if(rgb == '1 1 1')
+		rgb2 = '0 0 0';
+	else
+		rgb2 = '1 1 1';
+
+	R_BeginPolygon("", 0);
+	R_PolygonVertex(coord+v_forward*3, '0 0 0', rgb2, 1);
+	R_PolygonVertex(coord+v_right*4-v_forward*2.5, '0 1 0', rgb2, 1);
+	R_PolygonVertex(coord-v_forward*2, '1 0 0', rgb2, 1);
+	R_PolygonVertex(coord-v_right*4-v_forward*2.5, '1 1 0', rgb2, 1);
+	R_EndPolygon();
+
+	R_BeginPolygon("", 0);
+	R_PolygonVertex(coord+v_forward*2, '0 0 0', rgb, 1);
+	R_PolygonVertex(coord+v_right*3-v_forward*2, '0 1 0', rgb, 1);
+	R_PolygonVertex(coord-v_forward, '1 0 0', rgb, 1);
+	R_PolygonVertex(coord-v_right*3-v_forward*2, '1 1 0', rgb, 1);
+	R_EndPolygon();
+};
+
+void draw_teamradar_icon(vector coord, float icon, float pingtime, vector rgb, float a)
+{
+	float dt;
+	vector v;
+
+	coord = teamradar_texcoord_to_2dcoord(teamradar_3dcoord_to_texcoord(coord));
+	drawpic(coord - '4 4 0', strcat("gfx/teamradar_icon_", ftos(icon)), '8 8 0', rgb, a, 0);
+	if(pingtime != 0)
+	{
+		dt = time - pingtime;
+		if(dt > 1)
+			return;
+		v = '2 2 0' * teamradar_size * dt;
+		drawpic(coord - 0.5 * v, "gfx/teamradar_ping", v, '1 1 1', 1 - dt, DRAWFLAG_ADDITIVE);
+	}
+}
+
+void() teamradar_view =
+{
+	local float color;
+	local vector rgb;
+	local entity tm;
+	float scale2d, normalsize, bigsize;
+	float a, f;
+
+	color = GetPlayerColor(player_localentnum-1);
+	rgb = GetTeamRGB(color);
+
+	scale2d = max(
+		mi_picmax_x - mi_picmin_x,
+		mi_picmax_y - mi_picmin_y
+	);
+
+	f = current_zoomfraction;
+	teamradar_scale = cvar("cl_teamradar_scale");
+	a = cvar("cl_teamradar_background_alpha");
+	teamradar_angle = cvar("cl_teamradar_rotation") * 90;
+
+	// fix undefined cvars first
+	if(!teamradar_scale)
+		teamradar_scale = 4096;
+	if(!a)
+		a = 0.75;
+
+	if(teamradar_scale < 0)
+	{
+		f = 1 - f;
+		teamradar_scale = -teamradar_scale;
+	}
+
+	if(!teamradar_angle)
+		teamradar_angle = input_angles_y - 90;
+	teamradar_origin2d = '64 64 0';
+	teamradar_size2d = '128 128 0';
+
+	normalsize = teamradar_size2d_x * scale2d / teamradar_scale;
+	bigsize = teamradar_size2d_x * scale2d / vlen(mi_min - mi_max);
+	if(bigsize > normalsize)
+		normalsize = bigsize;
+	teamradar_size =
+		  f * bigsize
+		+ (1 - f) * normalsize;
+	teamradar_origin3d_in_texcoord = teamradar_3dcoord_to_texcoord(
+		  f * (mi_min + mi_max) * 0.5
+		+ (1 - f) * pmove_org);
+
+	drawsetcliparea(
+		teamradar_origin2d_x - teamradar_size2d_x * 0.5,
+		teamradar_origin2d_y - teamradar_size2d_y * 0.5,
+		teamradar_size2d_x,
+		teamradar_size2d_y
+	);
+
+	draw_teamradar_background(a);
+	for(tm = world; (tm = findflags(tm, teamradar_icon, 0xFFFFFF)); )
+		draw_teamradar_icon(tm.origin, tm.teamradar_icon, tm.teamradar_time, tm.teamradar_color, tm.alpha);
+	for(tm = gps_start; tm != world; tm = tm.chain)
+		draw_teamradar_player(tm.origin, tm.angles, rgb);
+	draw_teamradar_player(pmove_org, input_angles, '1 1 1');
+
+	drawresetcliparea();
+};

Copied: branches/nexuiz-2.0/data/qcsrc/client/teamradar.qh (from rev 4618, trunk/data/qcsrc/client/teamradar.qh)
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/teamradar.qh	                        (rev 0)
+++ branches/nexuiz-2.0/data/qcsrc/client/teamradar.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -0,0 +1,6 @@
+void teamradar_view();
+
+// to make entities have dots on the team radar
+.float teamradar_icon;
+.float teamradar_time;
+.vector teamradar_color;

Copied: branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qc (from rev 4618, trunk/data/qcsrc/client/waypointsprites.qc)
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qc	                        (rev 0)
+++ branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -0,0 +1,256 @@
+vector project_3d_to_2d(vector vec)
+{ 
+	vec = cs_project(vec);
+	if(cs_project_is_b0rked)
+	{
+		vec_x += vid_width / 2;
+		vec_y += vid_height / 2;
+	}
+	vec_x *= vid_conwidth / vid_width;
+	vec_y *= vid_conheight / vid_height;
+	return vec;
+}
+
+float waypointsprite_fadedistance;
+float waypointsprite_normdistance;
+float waypointsprite_minscale;
+float waypointsprite_minalpha;
+float waypointsprite_distancealphaexponent;
+float waypointsprite_timealphaexponent;
+
+.float rule;
+.string netname; // primary picture
+.string netname2; // secondary picture
+.string netname3; // tertiary picture
+.float team; // team that gets netname2
+.float lifetime;
+.float fadetime;
+.float maxdistance;
+.float hideflags;
+
+vector SPRITE_SIZE = '128 32 0';
+vector SPRITE_HOTSPOT = '64 32 0';
+
+void drawrotpic(vector org, float rot, string pic, vector sz, vector hotspot, vector rgb, float a, float f)
+{
+	vector v1, v2, v3, v4;
+
+	hotspot = -1 * hotspot;
+
+	// hotspot-relative coordinates of the corners
+	v1 = hotspot;
+	v2 = hotspot + '1 0 0' * sz_x;
+	v3 = hotspot + '1 0 0' * sz_x + '0 1 0' * sz_y;
+	v4 = hotspot                  + '0 1 0' * sz_y;
+
+	// rotate them, and make them absolute
+	v1 = rotate(v1, rot) + org;
+	v2 = rotate(v2, rot) + org;
+	v3 = rotate(v3, rot) + org;
+	v4 = rotate(v4, rot) + org;
+
+	// draw them
+	R_BeginPolygon(pic, f);
+	R_PolygonVertex(v1, '0 0 0', rgb, a);
+	R_PolygonVertex(v2, '1 0 0', rgb, a);
+	R_PolygonVertex(v3, '1 1 0', rgb, a);
+	R_PolygonVertex(v4, '0 1 0', rgb, a);
+	R_EndPolygon();
+}
+
+void Draw_WaypointSprite()
+{
+	string spriteimage;
+	float t;
+
+	if(self.lifetime)
+		self.alpha = pow(bound(0, (self.fadetime - time) / self.lifetime, 1), waypointsprite_timealphaexponent);
+	else
+		self.alpha = 1;
+
+	if(self.hideflags & 2)
+		return; // radar only
+
+	if(cvar("cl_hidewaypoints") >= 2)
+		return;
+
+	if(self.hideflags & 1)
+		if(cvar("cl_hidewaypoints"))
+			return; // fixed waypoint
+
+	InterpolateOrigin_Do();
+
+	t = GetPlayerColor(player_localentnum - 1) + 1;
+
+	spriteimage = "";
+
+	// choose the sprite
+	switch(self.rule)
+	{
+		case SPRITERULE_DEFAULT:
+			spriteimage = self.netname;
+			break;
+		case SPRITERULE_TEAMPLAY:
+			if(self.team == t)
+				spriteimage = self.netname2;
+			else
+				spriteimage = self.netname;
+			break;
+		default:
+			error("Invalid waypointsprite rule!");
+			break;
+	}
+
+	if(spriteimage == "")
+		return;
+	
+	float dist;
+	dist = vlen(self.origin - view_origin);
+	
+	float a;
+	a = self.alpha;
+
+	if(self.maxdistance > waypointsprite_normdistance)
+		a *= pow(bound(0, (self.maxdistance - dist) / (self.maxdistance - waypointsprite_normdistance), 1), waypointsprite_distancealphaexponent);
+	else if(self.maxdistance > 0)
+		a *= pow(bound(0, (waypointsprite_fadedistance - dist) / (waypointsprite_fadedistance - waypointsprite_normdistance), 1), waypointsprite_distancealphaexponent) * (1 - waypointsprite_minalpha) + waypointsprite_minalpha;
+
+	if(a <= 0)
+		return;
+	
+	// draw the sprite image
+	vector o;
+	float rot;
+	o = project_3d_to_2d(self.origin);
+	rot = 0;
+
+	if(o_z < 0 || o_x < 0 || o_y < 0 || o_x > vid_conwidth || o_y > vid_conheight)
+	{
+		// scale it to be just in view
+		vector d;
+		float f1, f2;
+		d = o - '0.5 0 0' * vid_conwidth - '0 0.5 0' * vid_conheight;
+
+		f1 = d_x / vid_conwidth;
+		f2 = d_y / vid_conheight;
+
+		if(max(f1, -f1) > max(f2, -f2))
+		{
+			if(f1 > 0)
+			{
+				// RIGHT edge
+				d = d * (0.5 / f1);
+				rot = 1;
+			}
+			else
+			{
+				// LEFT edge
+				d = d * (-0.5 / f1);
+				rot = 3;
+			}
+		}
+		else
+		{
+			if(f2 > 0)
+			{
+				// BOTTOM edge
+				d = d * (0.5 / f2);
+				rot = 0;
+			}
+			else
+			{
+				// TOP edge
+				d = d * (-0.5 / f2);
+				rot = 2;
+			}
+		}
+
+		o = d + '0.5 0 0' * vid_conwidth + '0 0.5 0' * vid_conheight;
+	}
+	o_z = 0;
+
+	drawrotpic(o, rot * 90 * DEG2RAD, strcat("models/sprites/", spriteimage), SPRITE_SIZE, SPRITE_HOTSPOT, '1 1 1', a, 0);
+}
+
+void Ent_WaypointSprite()
+{
+	float sendflags, f;
+	sendflags = ReadByte();
+
+	self.draw2d = Draw_WaypointSprite;
+
+	InterpolateOrigin_Undo();
+
+	// unfortunately, this needs to be exact (for the 3D display)
+	self.origin_x = ReadCoord();
+	self.origin_y = ReadCoord();
+	self.origin_z = ReadCoord();
+
+	if(sendflags & 1)
+	{
+		self.team = ReadByte();
+		self.rule = ReadByte();
+	}
+
+	if(sendflags & 2)
+	{
+		if(self.netname)
+			strunzone(self.netname);
+		self.netname = strzone(ReadString());
+	}
+
+	if(sendflags & 4)
+	{
+		if(self.netname2)
+			strunzone(self.netname2);
+		self.netname2 = strzone(ReadString());
+	}
+
+	if(sendflags & 8)
+	{
+		if(self.netname3)
+			strunzone(self.netname3);
+		self.netname3 = strzone(ReadString());
+	}
+
+	if(sendflags & 16)
+	{
+		self.lifetime = ReadCoord();
+		self.fadetime = ReadCoord();
+		self.maxdistance = ReadShort();
+		self.hideflags = ReadByte();
+	}
+
+	if(sendflags & 32)
+	{
+		f = ReadByte();
+		self.teamradar_icon = (f & 0x7F);
+		if(f & 0x80)
+			self.teamradar_time = time;
+		self.teamradar_color_x = ReadByte() / 255.0;
+		self.teamradar_color_y = ReadByte() / 255.0;
+		self.teamradar_color_z = ReadByte() / 255.0;
+	}
+
+	InterpolateOrigin_Note();
+}
+
+void Ent_RemoveWaypointSprite()
+{
+	if(self.netname)
+		strunzone(self.netname);
+	if(self.netname2)
+		strunzone(self.netname2);
+	if(self.netname3)
+		strunzone(self.netname3);
+}
+
+void WaypointSprite_Init()
+{
+	waypointsprite_fadedistance = vlen(world.maxs - world.mins);
+	waypointsprite_normdistance = cvar("g_waypointsprite_normdistance");
+	waypointsprite_minscale = cvar("g_waypointsprite_minscale");
+	waypointsprite_minalpha = cvar("g_waypointsprite_minalpha");
+	waypointsprite_distancealphaexponent = cvar("g_waypointsprite_distancealphaexponent");
+	waypointsprite_timealphaexponent = cvar("g_waypointsprite_timealphaexponent");
+}

Copied: branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qh (from rev 4618, trunk/data/qcsrc/client/waypointsprites.qh)
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qh	                        (rev 0)
+++ branches/nexuiz-2.0/data/qcsrc/client/waypointsprites.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -0,0 +1,3 @@
+// they are drawn using a .draw function
+void Ent_WaypointSprite();
+void Ent_RemoveWaypointSprite();

Modified: branches/nexuiz-2.0/data/qcsrc/common/constants.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/constants.qh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/common/constants.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -17,7 +17,10 @@
 // Revision 16: multi-weapons
 // Revision 17: multi-weaponimpulses
 // Revision 18: warmup
-#define CSQC_REVISION 18
+// Revision 19: fog
+// Revision 20: naggers
+// Revision 21: entcs for players optimized (position data down from 12 to 7 bytes); waypointsprites in csqc for team radar
+#define CSQC_REVISION 21
 
 // probably put these in common/
 // so server/ and client/ can be synced better
@@ -47,7 +50,19 @@
 const float ENT_CLIENT_POINTPARTICLES = 6;
 const float ENT_CLIENT_RAINSNOW = 7;
 const float ENT_CLIENT_LASER = 8;
+const float ENT_CLIENT_NAGGER = 9; // flags [votecalledvote]
+const float ENT_CLIENT_WAYPOINT = 10; // flags origin [team displayrule] [spritename] [spritename2] [spritename3] [lifetime maxdistance hideable]
 
+	const float SPRITERULE_DEFAULT = 0;
+	const float SPRITERULE_TEAMPLAY = 1;
+
+	const float RADARICON_FLAG = 1;
+	const float RADARICON_FLAGCARRIER = 1;
+	const float RADARICON_HERE = 1; // TODO make these 3 and 4, and make images for them
+	const float RADARICON_DANGER = 1;
+	const float RADARICON_WAYPOINT = 1;
+	const float RADARICON_HELPME = 1;
+
 ///////////////////////////
 // key constants
 
@@ -205,6 +220,7 @@
 const float TE_CSQC_ZOOMNOTIFY = 113;
 const float TE_CSQC_HOLDANGLES = 114;
 const float TE_CSQC_WARMUP = 115;
+const float TE_CSQC_FOG = 116;
 
 const float STAT_KH_KEYS = 32;
 const float STAT_CTF_STATE = 33;

Modified: branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,32 +1,3 @@
-// internal toy
-void cvar_settemp(string pKey, string pValue)
-{
-	//localcmd(strcat("\nsettemp ", t, " \"", s, "\"\n"));
-	
-	// duplicate what this alias does:
-	// alias settemp "settemp_list \"1 $1 $settemp_var $settemp_list\"; set $settemp_var \"${$1}\"; settemp_var ${settemp_var}x; $1 \"$2\""
-	
-	cvar_set("settemp_list", strcat("1 ", pKey, " ", cvar_string("settemp_var"), " ", cvar_string("settemp_list")));
-#ifdef MENUQC
-	registercvar(cvar_string("settemp_var"), "", 0);
-#else
-	registercvar(cvar_string("settemp_var"), "");
-#endif
-	cvar_set(cvar_string("settemp_var"), cvar_string(pKey));
-	cvar_set("settemp_var", strcat(cvar_string("settemp_var"), "x"));
-	cvar_set(pKey, pValue);
-}
-
-void cvar_settemp_restore()
-{
-	// undo what cvar_settemp did
-	float n, i;
-	n = tokenize(cvar_string("settemp_list"));
-	for(i = 0; i < n - 3; i += 3)
-		cvar_set(argv(i + 1), cvar_string(argv(i + 2)));
-	cvar_set("settemp_list", "0");
-}
-
 #ifdef HSOI
 // HUGE SET - stored in a string
 string HugeSetOfIntegers_empty()
@@ -475,6 +446,9 @@
 	MapInfo_Map_supportedGametypes = 0;
 	MapInfo_Map_supportedFeatures = 0;
 	MapInfo_Map_clientstuff = "";
+	MapInfo_Map_fog = "";
+	MapInfo_Map_mins = '0 0 0';
+	MapInfo_Map_maxs = '0 0 0';
 }
 
 void _MapInfo_Map_ApplyGametype(string s, float pWantedType, float pThisType)
@@ -507,7 +481,7 @@
 	if(pWantedType == MAPINFO_TYPE_CTF)
 	{
 		sa = car(s); if(sa == "") sa = "10";
-		if(cvar("g_ctf_win_mode") != 2)
+		if(cvar("g_ctf_win_mode") < 2)
 			cvar_set("fraglimit", sa);
 		s = cdr(s);
 	}
@@ -538,23 +512,6 @@
 	else                  return 0;
 }
 
-float cvar_value_issafe(string s)
-{
-	if(strstrofs(s, "\"", 0) >= 0)
-		return 0;
-	if(strstrofs(s, "\\", 0) >= 0)
-		return 0;
-	if(strstrofs(s, ";", 0) >= 0)
-		return 0;
-	if(strstrofs(s, "$", 0) >= 0)
-		return 0;
-	if(strstrofs(s, "\r", 0) >= 0)
-		return 0;
-	if(strstrofs(s, "\n", 0) >= 0)
-		return 0;
-	return 1;
-}
-
 // load info about a map by name into the MapInfo_Map_* globals
 float MapInfo_Get_ByName(string pFilename, float pAllowGenerate, float pGametypeToSet)
 {
@@ -607,6 +564,11 @@
 			fputs(fh, "settemp_for_type all sv_q3acompat_machineshotgunswap 1\n");
 		}
 
+		fputs(fh, "// optional: fog density red green blue alpha mindist maxdist\n");
+		fputs(fh, "// optional: settemp_for_type (all|gametypename) cvarname value\n");
+		fputs(fh, "// optional: clientsettemp_for_type (all|gametypename) cvarname value\n");
+		fputs(fh, "// optional: size mins_x mins_y mins_z maxs_x maxs_y maxs_z (for team map)\n");
+
 		fclose(fh);
 		r = 2;
 		// return r;
@@ -654,6 +616,37 @@
 			else
 				dprint("Map ", pFilename, " supports unknown game type ", t, ", ignored\n");
 		}
+		else if(t == "size")
+		{
+			float a, b, c, d, e;
+			t = car(s); s = cdr(s); a = stof(t);
+			t = car(s); s = cdr(s); b = stof(t);
+			t = car(s); s = cdr(s); c = stof(t);
+			t = car(s); s = cdr(s); d = stof(t);
+			t = car(s); s = cdr(s); e = stof(t);
+			if(s == "")
+				print("Map ", pFilename, " contains an incorrect size line, syntax: size mins_x mins_y mins_z maxs_x maxs_y maxs_z\n");
+			else
+			{
+				t = car(s); s = cdr(s); f = stof(t);
+				if(s != "")
+					print("Map ", pFilename, " contains an incorrect size line, syntax: size mins_x mins_y mins_z maxs_x maxs_y maxs_z\n");
+				else
+				{
+					if(a >= d || b >= e || c >= f)
+						print("Map ", pFilename, " contains an incorrect size line, mins have to be < maxs\n");
+					else
+					{
+						MapInfo_Map_mins_x = a;
+						MapInfo_Map_mins_y = b;
+						MapInfo_Map_mins_z = c;
+						MapInfo_Map_maxs_x = d;
+						MapInfo_Map_maxs_y = e;
+						MapInfo_Map_maxs_z = f;
+					}
+				}
+			}
+		}
 		else if(t == "settemp_for_type")
 		{
 			t = car(s); s = cdr(s);
@@ -704,6 +697,13 @@
 				dprint("Map ", pFilename, " has a client setting for unknown game type ", t, ", ignored\n");
 			}
 		}
+		else if(t == "fog")
+		{
+			if not(cvar_value_issafe(t))
+				print("Map ", pFilename, " contains a potentially harmful fog setting, ignored\n");
+			else
+				MapInfo_Map_fog = s;
+		}
 		else if(t == "cdtrack")
 		{
 			if(pGametypeToSet)

Modified: branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/common/mapinfo.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -21,8 +21,11 @@
 string MapInfo_Map_description;
 string MapInfo_Map_author;
 string MapInfo_Map_clientstuff;
+string MapInfo_Map_fog;
 float MapInfo_Map_supportedGametypes;
 float MapInfo_Map_supportedFeatures;
+vector MapInfo_Map_mins; // these are '0 0 0' if not supported!
+vector MapInfo_Map_maxs; // these are '0 0 0' if not specified!
 
 // load MapInfo_count; generate mapinfo for maps that miss them, and clear the
 // cache; you need to call MapInfo_FilterGametype afterwards!

Modified: branches/nexuiz-2.0/data/qcsrc/common/util.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/util.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/common/util.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -322,7 +322,7 @@
 		{
 			n = tokenizebyseparator(l, "\\");
 			for(j = 2; j < n; j += 2)
-				db_put(db, uri_unescape(argv(j-1)), uri_unescape(argv(j)));
+				db_put(db, argv(j-1), uri_unescape(argv(j)));
 		}
 	}
 	fclose(fh);
@@ -440,18 +440,18 @@
 	return strcat(ftos(minutes), ":", substring(s, 1, 2), ".", substring(s, 3, 1));
 }
 
-string ScoreString(float vflags, float value)
+string ScoreString(float pFlags, float pValue)
 {
 	string valstr;
 	float l;
 
-	value = floor(value + 0.5); // round
+	pValue = floor(pValue + 0.5); // round
 
-	if((value == 0) && (vflags & (SFL_HIDE_ZERO | SFL_RANK | SFL_TIME)))
+	if((pValue == 0) && (pFlags & (SFL_HIDE_ZERO | SFL_RANK | SFL_TIME)))
 		valstr = "";
-	else if(vflags & SFL_RANK)
+	else if(pFlags & SFL_RANK)
 	{
-		valstr = ftos(value);
+		valstr = ftos(pValue);
 		l = strlen(valstr);
 		if((l >= 2) && (substring(valstr, l - 2, 1) == "1"))
 			valstr = strcat(valstr, "th");
@@ -464,10 +464,10 @@
 		else
 			valstr = strcat(valstr, "th");
 	}
-	else if(vflags & SFL_TIME)
-		valstr = mmsss(value);
+	else if(pFlags & SFL_TIME)
+		valstr = mmsss(pValue);
 	else
-		valstr = ftos(value);
+		valstr = ftos(pValue);
 	
 	return valstr;
 }
@@ -694,3 +694,114 @@
 	
 	return order;
 }
+
+float cvar_value_issafe(string s)
+{
+	if(strstrofs(s, "\"", 0) >= 0)
+		return 0;
+	if(strstrofs(s, "\\", 0) >= 0)
+		return 0;
+	if(strstrofs(s, ";", 0) >= 0)
+		return 0;
+	if(strstrofs(s, "$", 0) >= 0)
+		return 0;
+	if(strstrofs(s, "\r", 0) >= 0)
+		return 0;
+	if(strstrofs(s, "\n", 0) >= 0)
+		return 0;
+	return 1;
+}
+
+#ifndef MENUQC
+void get_mi_min_max()
+{
+	vector extend;
+
+	if(mi_shortname)
+		strunzone(mi_shortname);
+	mi_shortname = mapname;
+	if(!strcasecmp(substring(mi_shortname, 0, 5), "maps/"))
+		mi_shortname = substring(mi_shortname, 5, strlen(mi_shortname) - 5);
+	if(!strcasecmp(substring(mi_shortname, strlen(mi_shortname) - 4, 4), ".bsp"))
+		mi_shortname = substring(mi_shortname, 0, strlen(mi_shortname) - 4);
+	mi_shortname = strzone(mi_shortname);
+
+	mi_min = world.mins;
+	mi_max = world.maxs;
+	MapInfo_Get_ByName(mi_shortname, 0, 0);
+	if(MapInfo_Map_mins_x < MapInfo_Map_maxs_x)
+	{
+		mi_min = MapInfo_Map_mins;
+		mi_max = MapInfo_Map_maxs;
+	}
+
+	mi_picmin = mi_min;
+	mi_picmax = mi_max;
+
+	// extend mi_picmax to get a square aspect ratio
+	// center the map in that area
+	extend = mi_picmax - mi_picmin;
+	if(extend_y > extend_x)
+	{
+		mi_picmin_x -= (extend_y - extend_x) * 0.5;
+		mi_picmax_x += (extend_y - extend_x) * 0.5;
+	}
+	else
+	{
+		mi_picmin_y -= (extend_x - extend_y) * 0.5;
+		mi_picmax_y += (extend_x - extend_y) * 0.5;
+	}
+
+	// add another some percent
+	extend = (mi_picmax - mi_picmin) * (1 / 64.0);
+	mi_picmin -= extend;
+	mi_picmax += extend;
+
+	// calculate the texcoords
+	mi_pictexcoord0 = mi_pictexcoord1 = mi_pictexcoord2 = mi_pictexcoord3 = '0 0 0';
+	// first the two corners of the origin
+	mi_pictexcoord0_x = (mi_min_x - mi_picmin_x) / (mi_picmax_x - mi_picmin_x);
+	mi_pictexcoord0_y = (mi_min_y - mi_picmin_y) / (mi_picmax_y - mi_picmin_y);
+	mi_pictexcoord2_x = (mi_max_x - mi_picmin_x) / (mi_picmax_x - mi_picmin_x);
+	mi_pictexcoord2_y = (mi_max_y - mi_picmin_y) / (mi_picmax_y - mi_picmin_y);
+	// then the other corners
+	mi_pictexcoord1_x = mi_pictexcoord0_x;
+	mi_pictexcoord1_y = mi_pictexcoord2_y;
+	mi_pictexcoord3_x = mi_pictexcoord2_x;
+	mi_pictexcoord3_y = mi_pictexcoord0_y;
+}
+#endif
+
+#ifdef CSQC
+void cvar_settemp(string pKey, string pValue)
+{
+	error("cvar_settemp called from CSQC - use cvar_clientsettemp instead!");
+}
+void cvar_settemp_restore()
+{
+	error("cvar_settemp_restore called from CSQC - use cvar_clientsettemp instead!");
+}
+#else
+void cvar_settemp(string pKey, string pValue)
+{
+	cvar_set("settemp_list", strcat("1 ", pKey, " ", cvar_string("settemp_var"), " ", cvar_string("settemp_list")));
+#ifdef MENUQC
+	registercvar(cvar_string("settemp_var"), "", 0);
+#else
+	registercvar(cvar_string("settemp_var"), "");
+#endif
+	cvar_set(cvar_string("settemp_var"), cvar_string(pKey));
+	cvar_set("settemp_var", strcat(cvar_string("settemp_var"), "x"));
+	cvar_set(pKey, pValue);
+}
+
+void cvar_settemp_restore()
+{
+	// undo what cvar_settemp did
+	float n, i;
+	n = tokenize(cvar_string("settemp_list"));
+	for(i = 0; i < n - 3; i += 3)
+		cvar_set(argv(i + 1), cvar_string(argv(i + 2)));
+	cvar_set("settemp_list", "0");
+}
+#endif

Modified: branches/nexuiz-2.0/data/qcsrc/common/util.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/common/util.qh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/common/util.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -76,3 +76,23 @@
 
 string fixPriorityList(string pl, float from, float to, float complete);
 string swapInPriorityList(string order, float i, float j);
+
+float cvar_value_issafe(string s);
+
+void cvar_settemp(string pKey, string pValue);
+void cvar_settemp_restore();
+
+#ifndef MENUQC
+string mi_shortname;
+vector mi_min;
+vector mi_max;
+vector mi_picmin; // adjusted mins that map to the picture (square)
+vector mi_picmax; // adjusted maxs that map to the picture (square)
+vector mi_pictexcoord0; // texcoords of the image corners (after transforming, these are 2D coords too)
+vector mi_pictexcoord1; // texcoords of the image corners (after transforming, these are 2D coords too)
+vector mi_pictexcoord2; // texcoords of the image corners (after transforming, these are 2D coords too)
+vector mi_pictexcoord3; // texcoords of the image corners (after transforming, these are 2D coords too)
+void get_mi_min_max();
+#endif
+
+#define FTEQCC_YOU_SUCK_THIS_IS_NOT_UNREFERENCED(x) void reference_##x() { x = x; }

Modified: branches/nexuiz-2.0/data/qcsrc/menu/mbuiltin.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/mbuiltin.qh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/menu/mbuiltin.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -298,6 +298,7 @@
 string(string in) uri_escape = #510;
 string(string in) uri_unescape = #511;
 
+string(string, float) netaddress_resolve = #625;
 
 #ifdef FIXEDFOPEN
 float 	fopen( string filename, float mode ) =

Modified: branches/nexuiz-2.0/data/qcsrc/menu/menu.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/menu.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/menu/menu.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -150,13 +150,13 @@
 	else
 	{
 		draw_reset();
+		if(key >= K_MOUSE1 && key <= K_MOUSE3)
+			if(!mouseButtonsPressed)
+				main.mousePress(main, menuMousePos);
 		if(!main.keyDown(main, key, ascii, menuShiftState))
 			if(key == K_ESCAPE)
 				if(gamestatus & (GAME_ISSERVER | GAME_CONNECTED)) // don't back out to console only
 					m_hide(); // disable menu on unhandled ESC
-		if(key >= K_MOUSE1 && key <= K_MOUSE3)
-			if(!mouseButtonsPressed)
-				main.mousePress(main, menuMousePos);
 	}
 	if(key >= K_MOUSE1 && key <= K_MOUSE3)
 	{

Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mutators.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mutators.c	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mutators.c	2008-10-03 18:32:25 UTC (rev 4619)
@@ -39,7 +39,7 @@
 	if(cvar("g_laserguided_missile"))
 		s = strcat(s, ", LG missiles");
 	if(cvar("g_midair"))
-		s = strcat(s, ", Mid-air");
+		s = strcat(s, ", Midair");
 	if(cvar("g_vampire"))
 		s = strcat(s, ", Vampire");
 	if(s == "")
@@ -55,13 +55,13 @@
 	me.TR(me);
 		me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_cloaked", "Cloaked"));
 	me.TR(me);
-		me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_footsteps", "Foot steps"));
+		me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_footsteps", "Footsteps"));
 	me.TR(me);
 		me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_grappling_hook", "Grappling hook"));
 	me.TR(me);
 		me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_laserguided_missile", "Laser guided missiles"));
 	me.TR(me);
-		me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_midair", "Mid-air"));
+		me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_midair", "Midair"));
 	me.TR(me);
 		me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_vampire", "Vampire"));
 

Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_join.c	2008-10-03 18:32:25 UTC (rev 4619)
@@ -20,18 +20,18 @@
 }
 void fillNexuizServerListTab(entity me)
 {
-	entity e, slist, clearbtn;
+	entity e, slist, btn;
 
 	slist  = makeNexuizServerList();
 
 	me.TR(me);
 		me.TD(me, 1, 0.5, e = makeNexuizTextLabel(0, "Filter:"));
-		me.TD(me, 1, 0.5, clearbtn = makeNexuizButton("Clear", '0 0 0'));
-			clearbtn.onClick = InputBox_Clear_Click;
+		me.TD(me, 1, 0.5, btn = makeNexuizButton("Clear", '0 0 0'));
+			btn.onClick = InputBox_Clear_Click;
 		me.TD(me, 1, me.columns - 2.5, e = makeNexuizInputBox(0, string_null));
 			e.onChange = ServerList_Filter_Change;
 			e.onChangeEntity = slist;
-			clearbtn.onClickEntity = e;
+			btn.onClickEntity = e;
 			slist.controlledTextbox = e;
 		me.TD(me, 1, 0.5, e = makeNexuizCheckBox(0, "menu_slist_showempty", "Empty"));
 			slist.filterShowEmpty = e.checked;
@@ -51,11 +51,22 @@
 		me.TD(me, 1, 1, slist.sortButton5 = makeNexuizButton(string_null, '0 0 0'));
 	me.TR(me);
 		me.TD(me, me.rows - 3, me.columns, slist);
-		
+
 	me.gotoRC(me, me.rows - 1, 0);
-		me.TD(me, 1, me.columns, e = makeNexuizButton("Join!", '0 0 0'));
+		me.TD(me, 1, 0.6, e = makeNexuizTextLabel(0, "Address:"));
+		me.TD(me, 1, 1.5, e = makeNexuizInputBox(0, string_null));
+			e.onEnter = ServerList_Connect_Click;
+			e.onEnterEntity = slist;
+			slist.ipAddressBox = e;
+		me.TD(me, 1, 1, e = makeNexuizButton("", '0 0 0'));
+			e.onClick = ServerList_Favorite_Click;
+			e.onClickEntity = slist;
+			slist.favoriteButton = e;
+		me.TD(me, 1, me.columns - 0.6 - 1.5 - 1, e = makeNexuizButton("Join!", '0 0 0'));
 			e.onClick = ServerList_Connect_Click;
 			e.onClickEntity = slist;
 			slist.connectButton = e;
 }
 #endif
+
+

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-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup.c	2008-10-03 18:32:25 UTC (rev 4619)
@@ -118,6 +118,12 @@
 		me.TD(me, 1, 2.8, e = makeNexuizCheckBox(0, "sbar_hudselector", "Use alternate HUD layout"));
 			setDependent(e, "viewsize", 0, 110);
 	me.TR(me);
+		me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Show Binds:"));
+		me.TD(me, 1, 2, e = makeNexuizTextSlider("sbar_showbinds"));
+			e.addValue(e, "None", "0");
+			e.addValue(e, "Short", "1");
+			e.addValue(e, "Long", "2");
+			e.configureNexuizTextSliderValues(e);
 	me.TR(me);
 		me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Show names:"));
 		me.TD(me, 1, 2, e = makeNexuizTextSlider("cl_shownames"));

Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_settings_misc.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_settings_misc.c	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_settings_misc.c	2008-10-03 18:32:25 UTC (rev 4619)
@@ -41,6 +41,7 @@
 		me.TDempty(me, 0.2);
 		s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_staticvolume");
 		me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Ambient:"));
+		makeMulti(s, "snd_entchannel2volume");
 		me.TD(me, 1, 2, s);
 		setDependentStringNotEqual(e, "volume", "0");
 		setDependentStringNotEqual(s, "volume", "0");
@@ -92,6 +93,7 @@
 	me.TR(me);
 		me.TDempty(me, 0.2);
 		s = makeNexuizDecibelsSlider(-20, 0, 0.5, "snd_playerchannel1volume");
+		makeMulti(s, "snd_playerchannel5volume snd_entchannel1volume snd_entchannel5volume");
 		me.TD(me, 1, 0.8, e = makeNexuizSliderCheckBox(-1000000, 1, s, "Weapons:"));
 		me.TD(me, 1, 2, s);
 		setDependentStringNotEqual(e, "volume", "0");

Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/inputbox.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/inputbox.c	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/inputbox.c	2008-10-03 18:32:25 UTC (rev 4619)
@@ -7,6 +7,8 @@
 	ATTRIB(NexuizInputBox, image, string, SKINGFX_INPUTBOX)
 	ATTRIB(NexuizInputBox, onChange, void(entity, entity), SUB_Null)
 	ATTRIB(NexuizInputBox, onChangeEntity, entity, NULL)
+	ATTRIB(NexuizInputBox, onEnter, void(entity, entity), SUB_Null)
+	ATTRIB(NexuizInputBox, onEnterEntity, entity, NULL)
 	ATTRIB(NexuizInputBox, marginLeft, float, SKINMARGIN_INPUTBOX_CHARS)
 	ATTRIB(NexuizInputBox, marginRight, float, SKINMARGIN_INPUTBOX_CHARS)
 	ATTRIB(NexuizInputBox, color, vector, SKINCOLOR_INPUTBOX_N)
@@ -69,11 +71,14 @@
 	float r;
 	r = 0;
 	if(key == K_ENTER)
+	{
 		if(me.cvarName)
 		{
 			me.saveCvars(me);
 			r = 1;
 		}
+		me.onEnter(me, me.onEnterEntity);
+	}
 	if(keyDownInputBox(me, key, ascii, shift))
 		r = 1;
 	return r;

Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/serverlist.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/serverlist.c	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/serverlist.c	2008-10-03 18:32:25 UTC (rev 4619)
@@ -28,6 +28,8 @@
 	ATTRIB(NexuizServerList, filterShowFull, float, 1)
 	ATTRIB(NexuizServerList, filterString, string, string_null)
 	ATTRIB(NexuizServerList, controlledTextbox, entity, NULL)
+	ATTRIB(NexuizServerList, ipAddressBox, entity, NULL)
+	ATTRIB(NexuizServerList, favoriteButton, entity, NULL)
 	ATTRIB(NexuizServerList, nextRefreshTime, float, 0)
 	METHOD(NexuizServerList, refreshServerList, void(entity, float)) // refresh mode: 0 = just reparametrize, 1 = send new requests, 2 = clear
 	ATTRIB(NexuizServerList, needsRefresh, float, 1)
@@ -49,6 +51,7 @@
 void ServerList_ShowEmpty_Click(entity box, entity me);
 void ServerList_ShowFull_Click(entity box, entity me);
 void ServerList_Filter_Change(entity box, entity me);
+void ServerList_Favorite_Click(entity btn, entity me);
 #endif
 
 #ifdef IMPLEMENTATION
@@ -66,6 +69,7 @@
 float SLIST_FIELD_FREESLOTS;
 float SLIST_FIELD_PLAYERS;
 float SLIST_FIELD_QCSTATUS;
+float SLIST_FIELD_ISFAVORITE;
 void ServerList_UpdateFieldIDs()
 {
 	SLIST_FIELD_CNAME = gethostcacheindexforkey( "cname" );
@@ -82,8 +86,39 @@
 	SLIST_FIELD_FREESLOTS = gethostcacheindexforkey( "freeslots" );
 	SLIST_FIELD_PLAYERS = gethostcacheindexforkey( "players" );
 	SLIST_FIELD_QCSTATUS = gethostcacheindexforkey( "qcstatus" );
+	SLIST_FIELD_ISFAVORITE = gethostcacheindexforkey( "isfavorite" );
 }
 
+float IsFavorite(string srv)
+{
+	string s;
+	float o;
+	s = cvar_string("net_slist_favorites");
+	s = strcat(" ", s, " ");
+	srv = strcat(" ", srv, " ");
+	o = strstrofs(s, srv, 0);
+	return (o != -1);
+}
+
+void ToggleFavorite(string srv)
+{
+	string s;
+	float o;
+	s = cvar_string("net_slist_favorites");
+	o = strstrofs(strcat(" ", s, " "), strcat(" ", srv, " "), 0);
+	if(o == -1)
+	{
+		cvar_set("net_slist_favorites", strcat(s, " ", srv));
+	}
+	else
+	{
+		cvar_set("net_slist_favorites", strcat(
+					substring(s, 0, o - 1), substring(s, o + strlen(srv), strlen(s) - o - strlen(srv))
+					));
+	}
+	resorthostcache();
+}
+
 entity makeNexuizServerList()
 {
 	entity me;
@@ -112,9 +147,13 @@
 		return;
 	if(gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT) != me.nItems)
 		return; // sorry, it would be wrong
+
 	if(me.selectedServer)
 		strunzone(me.selectedServer);
 	me.selectedServer = strzone(gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem));
+
+	me.ipAddressBox.setText(me.ipAddressBox, me.selectedServer);
+	me.ipAddressBox.cursorPos = strlen(me.selectedServer);
 }
 void refreshServerListNexuizServerList(entity me, float mode)
 {
@@ -130,7 +169,7 @@
 	}
 	else */
 	{
-		float m;
+		float m, o;
 		string s, typestr;
 		s = me.filterString;
 
@@ -161,7 +200,10 @@
 			sethostcachemaskstring(++m, SLIST_FIELD_PLAYERS, s, SLIST_TEST_CONTAINS);
 			sethostcachemaskstring(++m, SLIST_FIELD_QCSTATUS, strcat(s, ":"), SLIST_TEST_STARTSWITH);
 		}
-		sethostcachesort(me.currentSortField, me.currentSortOrder < 0);
+		o = 2; // favorites first
+		if(me.currentSortOrder < 0)
+			o |= 1; // descending
+		sethostcachesort(me.currentSortField, o);
 		resorthostcache();
 		if(mode >= 1)
 			refreshhostcache();
@@ -179,7 +221,7 @@
 }
 void drawNexuizServerList(entity me)
 {
-	float i, found;
+	float i, found, owned;
 
 	if(me.currentSortField == -1)
 	{
@@ -196,6 +238,8 @@
 		me.refreshServerList(me, 0);
 	}
 
+	owned = (me.selectedServer == me.ipAddressBox.text);
+
 	me.nItems = gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT);
 	me.connectButton.disabled = (me.nItems == 0);
 
@@ -224,6 +268,17 @@
 			me.selectedServer = strzone(gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem));
 		}
 
+	if(owned)
+	{
+		me.ipAddressBox.setText(me.ipAddressBox, me.selectedServer);
+		me.ipAddressBox.cursorPos = strlen(me.selectedServer);
+	}
+
+	if(IsFavorite(me.ipAddressBox.text))
+		me.favoriteButton.setText(me.favoriteButton, "Remove");
+	else
+		me.favoriteButton.setText(me.favoriteButton, "Bookmark");
+
 	drawListBox(me);
 }
 void ServerList_PingSort_Click(entity btn, entity me)
@@ -377,9 +432,19 @@
 }
 void ServerList_Connect_Click(entity btn, entity me)
 {
-	if(me.nItems > 0)
-		localcmd("connect ", me.selectedServer, "\n");
+	localcmd("connect ", me.ipAddressBox.text, "\n");
 }
+void ServerList_Favorite_Click(entity btn, entity me)
+{
+	string ipstr;
+	ipstr = netaddress_resolve(me.ipAddressBox.text, 26000);
+	if(ipstr != "")
+	{
+		me.ipAddressBox.setText(me.ipAddressBox, ipstr);
+		me.ipAddressBox.cursorPos = strlen(ipstr);
+		ToggleFavorite(ipstr);
+	}
+}
 void clickListBoxItemNexuizServerList(entity me, float i, vector where)
 {
 	if(i == me.lastClickedServer)
@@ -428,6 +493,12 @@
 		theAlpha *= SKINALPHA_SERVERLIST_HIGHPING;
 	}
 
+	if(gethostcachenumber(SLIST_FIELD_ISFAVORITE, i))
+	{
+		theColor = theColor * (1 - SKINALPHA_SERVERLIST_FAVORITE) + SKINCOLOR_SERVERLIST_FAVORITE * SKINALPHA_SERVERLIST_FAVORITE;
+		theAlpha = theAlpha * (1 - SKINALPHA_SERVERLIST_FAVORITE) + SKINALPHA_SERVERLIST_FAVORITE;
+	}
+
 	s = ftos(p);
 	draw_Text(me.realUpperMargin * eY + (me.columnPingSize - draw_TextWidth(s, 0) * me.realFontSize_x) * eX, s, me.realFontSize, theColor, theAlpha, 0);
 	s = draw_TextShortenToWidth(gethostcachestring(SLIST_FIELD_NAME, i), me.columnNameSize / me.realFontSize_x, 0);
@@ -448,11 +519,19 @@
 
 float keyDownNexuizServerList(entity me, float scan, float ascii, float shift)
 {
+	float i;
+
 	if(scan == K_ENTER)
 	{
 		ServerList_Connect_Click(NULL, me);
 		return 1;
 	}
+	else if(scan == K_INS)
+	{
+		i = me.selectedItem;
+		if(i < me.nItems)
+			ToggleFavorite(me.selectedServer);
+	}
 	else if(keyDownListBox(me, scan, ascii, shift))
 		return 1;
 	else if(!me.controlledTextbox)

Modified: branches/nexuiz-2.0/data/qcsrc/menu/progs.src
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/progs.src	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/menu/progs.src	2008-10-03 18:32:25 UTC (rev 4619)
@@ -7,8 +7,8 @@
 oo/base.h
 
 ../common/constants.qh
+../common/mapinfo.qh
 ../common/util.qh
-../common/mapinfo.qh
 ../common/campaign_common.qh
 
 gamecommand.qh

Modified: branches/nexuiz-2.0/data/qcsrc/menu/skin-customizables.inc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/skin-customizables.inc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/menu/skin-customizables.inc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -184,6 +184,8 @@
 	SKINVECTOR(COLOR_SERVERLIST_MEDPING, '1 1 0');
 	SKINVECTOR(COLOR_SERVERLIST_HIGHPING, '1 0 0');
 	SKINFLOAT(ALPHA_SERVERLIST_HIGHPING, 0.4);
+	SKINFLOAT(ALPHA_SERVERLIST_FAVORITE, 0.8);
+	SKINVECTOR(COLOR_SERVERLIST_FAVORITE, '1 1 1');
 
 	// item: slider
 	SKINSTRING(GFX_SLIDER, "slider");

Modified: branches/nexuiz-2.0/data/qcsrc/server/arena.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/arena.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/arena.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -12,7 +12,6 @@
 
 void PutObserverInServer();
 void PutClientInServer();
-void(entity e) DropFlag;
 void(entity e) ReturnFlag;
 void(entity e) removedecor;
 void dom_controlpoint_setup();
@@ -55,7 +54,7 @@
 		}
 		else if(self.items & (IT_KEY1 | IT_KEY2))
 		{
-			DropFlag(self);
+			DropFlag(self, world, world);
 			ReturnFlag(self);
 		}
 		else if(self.classname == "rune")
@@ -76,8 +75,16 @@
 		}
 		else if(self.flags & FL_ITEM)			// reset items
 		{
-			self.model = self.mdl;
-			self.solid = SOLID_TRIGGER;
+			if(self.cnt == 1)
+			{
+				self.model = string_null;
+				self.solid = SOLID_NOT;
+			}
+			else
+			{
+				self.model = self.mdl;
+				self.solid = SOLID_TRIGGER;
+			}
 			setorigin (self, self.origin);
 			self.think = SUB_Null;
 			self.nextthink = 0;

Modified: branches/nexuiz-2.0/data/qcsrc/server/assault.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/assault.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/assault.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -322,7 +322,8 @@
         self = ent;
 
         // Dubbles as teamchange
-        ent.turret_spawnfunc();
+        turret_stdproc_respawn();
+        //ent.turret_spawnfunc();
 
 		ent = find(ent, classname, "turret_main");
 	}

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -63,14 +63,25 @@
 			{
 				if(self.classname == "player") // spectators may spawn everywhere
 				{
-					if(ent.race_checkpoint != race_PreviousCheckpoint(self.race_checkpoint))
-						return -1;
-					float pl;
-					pl = self.race_place;
-					if(pl > race_highest_place_spawn)
-						pl = 0;
-					if(spot.race_place != pl)
-						return -1;
+					if(g_race_qualifying)
+					{
+						// spawn at first
+						if(ent.race_checkpoint != 0)
+							return -1;
+						if(spot.race_place != race_lowest_place_spawn)
+							return -1;
+					}
+					else
+					{
+						if(ent.race_checkpoint != race_PreviousCheckpoint(self.race_checkpoint))
+							return -1;
+						float pl;
+						pl = self.race_place;
+						if(pl > race_highest_place_spawn)
+							pl = 0;
+						if(spot.race_place != pl)
+							return -1;
+					}
 				}
 				good = 1;
 			}
@@ -280,6 +291,8 @@
 		if(substring(plyermodel,strlen(plyermodel)-4,4) != ".md3")
 		if(substring(plyermodel,strlen(plyermodel)-4,4) != ".psk")
 			return FallbackPlayerModel;
+		if(plyermodel != strtolower(plyermodel))
+			return FallbackPlayerModel;
 		if(!fexists(plyermodel))
 			return FallbackPlayerModel;
 	}
@@ -404,7 +417,7 @@
 	Portal_ClearAll(self);
 
 	if(self.flagcarried)
-		DropFlag(self.flagcarried);
+		DropFlag(self.flagcarried, world, world);
 
 	WaypointSprite_PlayerDead();
 	
@@ -1034,6 +1047,31 @@
 	 */
 }
 
+.float fog_set;
+void SendFog()
+{
+	if(clienttype(self) == CLIENTTYPE_REAL)
+	if(world.fog) // NOT string_null!
+	{
+		if(!self.fog_set)
+		{
+			if(sv_foginterval)
+			{
+				msg_entity = self;
+				WriteByte(MSG_ONE, SVC_TEMPENTITY);
+				WriteByte(MSG_ONE, TE_CSQC_FOG);
+				WriteCoord(MSG_ONE, sv_foginterval);
+				WriteString(MSG_ONE, world.fog);
+			}
+			else
+				// set it once
+				stuffcmd(self, strcat("\nfog ", world.fog, "\nr_fog_exp2 0\nr_drawfog 1\n"));
+
+			self.fog_set = 1;
+		}
+	}
+}
+
 /*
 =============
 ClientConnect
@@ -1055,13 +1093,8 @@
 		return;
 	}
 
-	if(Ban_IsClientBanned(self))
-	{
-		s = strcat("^1NOTE:^7 banned client ", self.netaddress, " just tried to enter\n");
-		dropclient(self);
-		bprint(s);
+	if(Ban_MaybeEnforceBan(self))
 		return;
-	}
 
 	DecodeLevelParms();
 
@@ -1219,6 +1252,8 @@
 			self.frags = -666; // FIXME do we still need this?
 		}
 	}
+
+	SendFog();
 }
 
 /*
@@ -1228,7 +1263,6 @@
 Called when a client disconnects from the server
 =============
 */
-void(entity e) DropFlag;
 .entity chatbubbleentity;
 .entity teambubbleentity;
 void ReadyCount();
@@ -1271,16 +1305,16 @@
 		self.killindicator = world;
 	}
 
-	WaypointSprite_PlayerGone();
-
 	DropAllRunes(self);
 	kh_Key_DropAll(self, TRUE);
 
 	Portal_ClearAll(self);
 
 	if(self.flagcarried)
-		DropFlag(self.flagcarried);
+		DropFlag(self.flagcarried, world, world);
 
+	WaypointSprite_PlayerGone();
+
 	save = self.flags;
 	self.flags = self.flags - (self.flags & FL_CLIENT);
 	bot_relinkplayerlist();
@@ -1903,8 +1937,10 @@
 			self.flags = self.flags | FL_JUMPRELEASED;
 		}
 	}
+	/*
 	if(self.BUTTON_ZOOM)
 		self.wantswelcomemessage = 0;
+	*/
 	if(self.wantswelcomemessage)
 		PrintWelcomeMessage(self);
 }
@@ -1940,8 +1976,10 @@
 			self.flags = self.flags | FL_JUMPRELEASED;
 		}
 	}
+	/*
 	if(self.BUTTON_ZOOM)
 		self.wantswelcomemessage = 0;
+	*/
 	if(self.wantswelcomemessage)
 		PrintWelcomeMessage(self);
 	self.flags = self.flags | FL_CLIENT | FL_NOTARGET;
@@ -1955,7 +1993,6 @@
 =============
 */
 void() ctf_setstatus;
-.float vote_nagtime;
 .float spectatee_status;
 void PlayerPreThink (void)
 {
@@ -2005,14 +2042,6 @@
 				self.version_nagtime = 0;
 			}
 
-	// vote nagging
-	if(self.cvar_scr_centertime)
-		if(time > self.vote_nagtime)
-		{
-			VoteNag();
-			self.vote_nagtime = time + self.cvar_scr_centertime * 0.6;
-		}
-
 	// GOD MODE info
 	if(!(self.flags & FL_GODMODE)) if(self.max_armorvalue)
 	{
@@ -2021,8 +2050,12 @@
 	}
 
 	if(frametime)
+	{
 		antilag_record(self);
 
+		SendFog();
+	}
+
 	if(self.classname == "player") {
 //		if(self.netname == "Wazat")
 //			bprint(self.classname, "\n");

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_impulse.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -184,16 +184,27 @@
 	// deploy waypoints
 	else if (imp >= 30 && imp <= 49)
 	{
+		entity wp;
 		switch(imp)
 		{
 			case 30:
-				WaypointSprite_DeployPersonal("waypoint", self.origin);
+				wp = WaypointSprite_DeployPersonal("waypoint", self.origin);
+				if(wp)
+				{
+					WaypointSprite_UpdateTeamRadar(wp, RADARICON_WAYPOINT, '0 1 1');
+					WaypointSprite_Ping(wp);
+				}
 				self.personal_v_angle = self.v_angle;
 				self.personal_velocity = self.velocity;
 				sprint(self, "personal waypoint spawned at location\n");
 				break;
 			case 31:
-				WaypointSprite_DeployPersonal("waypoint", self.cursor_trace_endpos);
+				wp = WaypointSprite_DeployPersonal("waypoint", self.cursor_trace_endpos);
+				if(wp)
+				{
+					WaypointSprite_UpdateTeamRadar(wp, RADARICON_WAYPOINT, '0 1 1');
+					WaypointSprite_Ping(wp);
+				}
 				self.personal_v_angle = self.v_angle;
 				self.personal_velocity = '0 0 0';
 				sprint(self, "personal waypoint spawned at crosshair\n");
@@ -201,7 +212,12 @@
 			case 32:
 				if(vlen(self.death_origin))
 				{
-					WaypointSprite_DeployPersonal("waypoint", self.death_origin);
+					wp = WaypointSprite_DeployPersonal("waypoint", self.death_origin);
+					if(wp)
+					{
+						WaypointSprite_UpdateTeamRadar(wp, RADARICON_WAYPOINT, '0 1 1');
+						WaypointSprite_Ping(wp);
+					}
 					self.personal_v_angle = self.v_angle;
 					self.personal_velocity = '0 0 0';
 					sprint(self, "personal waypoint spawned at death location\n");
@@ -210,37 +226,73 @@
 			case 33:
 				if(self.deadflag == DEAD_NO && teams_matter)
 				{
-					WaypointSprite_Attach("helpme", TRUE);
+					wp = WaypointSprite_Attach("helpme", TRUE);
+					if(wp)
+						WaypointSprite_UpdateTeamRadar(wp, RADARICON_HELPME, '1 0.5 0'); // TODO choose better color
+					if(!wp)
+						wp = self.waypointsprite_attachedforcarrier; // flag sprite?
+					if(wp)
+						WaypointSprite_Ping(wp);
 					sprint(self, "HELP ME attached\n");
 				}
 				break;
 			case 34:
-				WaypointSprite_DeployFixed("here", FALSE, self.origin);
+				wp = WaypointSprite_DeployFixed("here", FALSE, self.origin);
+				if(wp)
+				{
+					WaypointSprite_UpdateTeamRadar(wp, RADARICON_HERE, '0 1 0');
+					WaypointSprite_Ping(wp);
+				}
 				sprint(self, "HERE spawned at location\n");
 				break;
 			case 35:
-				WaypointSprite_DeployFixed("here", FALSE, self.cursor_trace_endpos);
+				wp = WaypointSprite_DeployFixed("here", FALSE, self.cursor_trace_endpos);
+				if(wp)
+				{
+					WaypointSprite_UpdateTeamRadar(wp, RADARICON_HERE, '0 1 0');
+					WaypointSprite_Ping(wp);
+				}
 				sprint(self, "HERE spawned at crosshair\n");
 				break;
 			case 36:
 				if(vlen(self.death_origin))
 				{
-					WaypointSprite_DeployFixed("here", FALSE, self.death_origin);
+					wp = WaypointSprite_DeployFixed("here", FALSE, self.death_origin);
+					if(wp)
+					{
+						WaypointSprite_UpdateTeamRadar(wp, RADARICON_HERE, '0 1 0');
+						WaypointSprite_Ping(wp);
+					}
 					sprint(self, "HERE spawned at death location\n");
 				}
 				break;
 			case 37:
-				WaypointSprite_DeployFixed("danger", FALSE, self.origin);
+				wp = WaypointSprite_DeployFixed("danger", FALSE, self.origin);
+				if(wp)
+				{
+					WaypointSprite_UpdateTeamRadar(wp, RADARICON_DANGER, '1 0.5 0');
+					WaypointSprite_Ping(wp);
+				}
 				sprint(self, "DANGER spawned at location\n");
 				break;
 			case 38:
-				WaypointSprite_DeployFixed("danger", FALSE, self.cursor_trace_endpos);
+				wp = WaypointSprite_DeployFixed("danger", FALSE, self.cursor_trace_endpos);
+				if(wp)
+				{
+					WaypointSprite_UpdateTeamRadar(wp, RADARICON_DANGER, '1 0.5 0');
+					WaypointSprite_Ping(wp);
+				}
 				sprint(self, "DANGER spawned at crosshair\n");
 				break;
 			case 39:
 				if(vlen(self.death_origin))
 				{
-					WaypointSprite_DeployFixed("danger", FALSE, self.death_origin);
+					wp = WaypointSprite_DeployFixed("danger", FALSE, self.death_origin);
+					if(wp)
+					{
+						WaypointSprite_UpdateTeamRadar(wp, RADARICON_DANGER, '1 0.5 0');
+						WaypointSprite_Ping(wp);
+					}
 					sprint(self, "DANGER spawned at death location\n");
 				}
 				break;

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_physics.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_physics.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_physics.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -212,21 +212,20 @@
 		maxspd_mod = cvar("sv_spectator_speed_multiplier");
 		if(!self.spectatorspeed)
 			self.spectatorspeed = maxspd_mod;
-		if(self.impulse && self.impulse <= 12)
+		if(self.impulse && self.impulse <= 19)
 		{
 			if(self.lastflags & FL_NOTARGET)
 			{
-				if(self.impulse == 10)
+				if(self.impulse == 10 || self.impulse == 15 || self.impulse == 18)
 					self.spectatorspeed = bound(1, self.spectatorspeed + 0.5, 5);
 				else if(self.impulse == 11)
 					self.spectatorspeed = maxspd_mod;
-				else if(self.impulse == 12)
+				else if(self.impulse == 12 || self.impulse == 16  || self.impulse == 19)
 					self.spectatorspeed = bound(1, self.spectatorspeed - 0.5, 5);
 				else if(self.impulse >= 1 && self.impulse <= 9)
 					self.spectatorspeed = 1 + 0.5 * (self.impulse - 1);
 			} // otherwise just clear
 			self.impulse = 0;
-			print("impulse\n");
 		}
 		maxspd_mod = self.spectatorspeed;
 	}

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -497,6 +497,7 @@
 		SpawnThrownWeapon (self.origin + (self.mins + self.maxs) * 0.5, self.switchweapon);
 		// print an obituary message
 		Obituary (attacker, self, deathtype);
+		race_PreDie();
 		DropAllRunes(self);
 		if(self == attacker)
 			kh_Key_DropAll(self, TRUE);
@@ -505,7 +506,14 @@
 		else
 			kh_Key_DropAll(self, TRUE);
 		if(self.flagcarried)
-			DropFlag(self.flagcarried);
+		{
+			if(attacker.classname != "player" && attacker.classname != "gib")
+				DropFlag(self.flagcarried, self, attacker); // penalty for flag loss by suicide
+			else if(attacker.team == self.team)
+				DropFlag(self.flagcarried, attacker, attacker); // penalty for flag loss by suicide/teamkill
+			else
+				DropFlag(self.flagcarried, world, attacker);
+		}
 		Portal_ClearAllLater(self);
 		// clear waypoints
 		WaypointSprite_PlayerDead();

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_weapons.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -157,7 +157,7 @@
 float W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vector velo)
 {
 	entity oldself, wep;
-	float wa, ammo;
+	float wa, thisammo;
 	var .float ammofield;
 
 	wep = spawn();
@@ -194,9 +194,9 @@
 			return -1;
 		if(doreduce)
 		{
-			ammo = min(own.ammofield, wep.ammofield);
-			wep.ammofield = ammo;
-			own.ammofield -= ammo;
+			thisammo = min(own.ammofield, wep.ammofield);
+			wep.ammofield = thisammo;
+			own.ammofield -= thisammo;
 		}
 		wep.think = thrown_wep_think;
 		wep.nextthink = time + 0.5;
@@ -278,7 +278,8 @@
 			if(ATTACK_FINISHED(self) <= time + frametime * 0.5)
 			{
 #endif
-			sound (self, CHAN_WEAPON, "weapons/weapon_switch.wav", VOL_BASE, ATTN_NORM);
+			// UGLY WORKAROUND: play this on CHAN_WEAPON2 so it can't cut off fire sounds
+			sound (self, CHAN_WEAPON2, "weapons/weapon_switch.wav", VOL_BASE, ATTN_NORM);
 			self.weaponentity.state = WS_DROP;
 			// set up weapon switch think in the future, and start drop anim
 			weapon_thinkf(WFRAME_IDLE, cvar("g_balance_weaponswitchdelay"), w_clear);

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -125,7 +125,9 @@
 		self.punchangle_x = recoil * -1;
 
 	if (snd != "")
+	{
 		sound (self, CHAN_WEAPON, snd, VOL_BASE, ATTN_NORM);
+	}
 
 	if (self.items & IT_STRENGTH)
 	if (!g_minstagib)

Modified: branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/clientcommands.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,5 +1,61 @@
+entity nagger;
+float readycount;
+float Nagger_SendEntity(entity to, float sendflags)
+{
+	float nags;
+	WriteByte(MSG_ENTITY, ENT_CLIENT_NAGGER);
+
+	nags = 0;
+	if(readycount)
+	{
+		nags |= 1;
+		if(to.ready == 0)
+			nags |= 2;
+	}
+	if(votecalled)
+	{
+		nags |= 4;
+		if(to.vote_vote == 0)
+			nags |= 8;
+	}
+
+	if(sendflags & 128)
+	{
+		WriteByte(MSG_ENTITY, nags | 128);
+		if(votecalled)
+			WriteString(MSG_ENTITY, votecalledvote_display);
+		else
+			WriteString(MSG_ENTITY, "");
+	}
+	else
+		WriteByte(MSG_ENTITY, nags);
+
+	return TRUE;
+}
+void Nagger_Init()
+{
+	nagger = spawn();
+	Net_LinkEntity(nagger);
+	nagger.SendFlags = 128;
+	nagger.SendEntity = Nagger_SendEntity;
+}
+void Nagger_VoteChanged()
+{
+	if(nagger)
+		nagger.SendFlags = 128;
+}
+void Nagger_VoteCountChanged()
+{
+	if(nagger)
+		nagger.SendFlags = 1;
+}
+void Nagger_ReadyCounted()
+{
+	if(nagger)
+		nagger.SendFlags = 1;
+}
+
 void ReadyCount();
-void(entity e) DropFlag;
 string MapVote_Suggest(string m);
 
 .float floodcontrol_chat;
@@ -10,6 +66,9 @@
 	float flood;
 	entity head;
 
+	if(Ban_MaybeEnforceBan(source))
+		return;
+
 	if(!teamsay)
 		if(substring(msgin, 0, 1) == " ")
 			msgin = substring(msgin, 1, strlen(msgin) - 1); // work around DP say bug (say_team does not have this!)
@@ -122,6 +181,7 @@
 	}
 	else
 	{
+		// TODO invent a cvar name for allowing global chat by spectators during warmup anyway
 		if(cvar("g_chat_nospectators") && source.classname != "player") {
 			FOR_EACH_REALCLIENT(head) if(head.classname != "player") {
 				sprint(head, msgstr);
@@ -213,7 +273,7 @@
 			return; // don't allow spectating in lms, unless player runs out of lives
 		if(self.classname == "player" && cvar("sv_spectate") == 1) {
 			if(self.flagcarried)
-				DropFlag(self.flagcarried);
+				DropFlag(self.flagcarried, world, world);
 			kh_Key_DropAll(self, TRUE);
 			WaypointSprite_PlayerDead();
 			self.classname = "observer";
@@ -345,6 +405,8 @@
 		}
 	} else if(argv(0) == "teamstatus") {
 		Score_NicePrint(self);
+	} else if(argv(0) == "cvar_changes") {
+		sprint(self, cvar_changes);
 	} else {
 		//if(ctf_clientcommand())
 		//	return;
@@ -392,11 +454,6 @@
 	if(checkrules_overtimeend)
 		checkrules_overtimeend = 0;
 
-	if(readyNagActive) { //if every player is ready, remove the ready-nagger again
-		readyNagActive = 0;
-		remove(readyNagger);
-	}
-
 	restart_countdown = time + RESTART_COUNTDOWN;
 	restart_mapalreadyrestarted = 0; //reset this var, needed when cvar sv_ready_restart_repeatable is in use
 	if(0 < cvar("timelimit") || inWarmupStage)
@@ -477,60 +534,16 @@
 			r += 1;
 	}
 
-	if(!r)
-		return; // NOTE: this also excludes !p, as r <= p
+	readycount = r;
 
-	if(cvar("sv_ready_restart_nag")) {
-		if(!readyNagActive) {
-			readyNagger = spawn();
-			readyNagger.think = readyNagger_Think;
-			readyNagger.cnt = cvar("sv_ready_restart_nag_duration");
-			readyNagger.nextthink = time;
-			readyNagActive = 1;
-		}
-	}
+	if(r) // at least one is ready
+	if(r == p) // and, everyone is ready
+		ReadyRestart();
 
-	if(r < p)
-		return;
-	
-	ReadyRestart();
+	Nagger_ReadyCounted();
 }
 
 /**
- * Centerprints the information to all players who didn't ready up yet to do so.
- */
-void readyNagger_Think() {
-	local entity plr;
-	if(self.cnt <= 0) { //have a break showing the ready nag
-		//make sure that the old ready-nag-centerprint isn't shown too long:
-		FOR_EACH_REALCLIENT(plr) {
-			if(plr.classname == "player") {
-				if (!plr.ready)
-					centerprint_atprio(plr, CENTERPRIO_SPAM, "");
-			}
-		}
-		self.cnt = cvar("sv_ready_restart_nag_duration");
-		self.nextthink = time + cvar("sv_ready_restart_nag_interval");
-	}
-	else {
-		//show the ready nagging to all players who aren't ready yet
-		FOR_EACH_REALCLIENT(plr) {
-			if(plr.classname == "player") {
-				if (!plr.ready) {
-					centerprint_atprio(plr, CENTERPRIO_SPAM, "^2Please ready up (F4 by default)!");
-					//play reminder sound once the centerprint appears for the first time after the pause:
-					if (self.cnt == cvar("sv_ready_restart_nag_duration"))
-						play2(plr, "misc/talk2.wav");
-				}
-			}
-		}
-
-		self.nextthink = time + 1;
-		self.cnt -= 1;
-	}
-}
-
-/**
  * Shows the restart countdown for all players.
  * Plays the countdown sounds for the seconds 3, 2 1, begin for everyone.
  * Restarts the map after the countdown is over (and cvar sv_ready_restart_after_countdown

Modified: branches/nexuiz-2.0/data/qcsrc/server/constants.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/constants.qh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/constants.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -106,13 +106,39 @@
 float	TE_LAVASPLASH				= 10;
 float	TE_TELEPORT				= 11;
 
-float	CHAN_AUTO				= 0; // Announcer/Chat, on player: Triggers/Items
+// this assignment must match menu/nexuiz/dialog_settings_misc.c!
+float	CHAN_AUTO				= 0;
+	// on world: announcers, ...                     INFO
+	// on players: item pickup                       ITEMS
+	// on entities: UNUSED
 float	CHAN_WEAPON				= 1; // Weapon fire
+	// on world: UNUSED
+	// on players: weapon firing                     WEAPONS
+	// on entities: turret firing                    WEAPONS
 float	CHAN_VOICE				= 2; // Voice/Radio
+	// on world: UNUSED
+	// on players: voice                             VOICE
+	// on entities: ambient                          AMBIENT
 float	CHAN_TRIGGER			= 3; // Triggers/Items
+	// on world: UNUSED
+	// on players: item pickup                       ITEMS
+	// on entities: platforms moving etc.            ITEMS
 float	CHAN_PROJECTILE			= 4; // Projectiles
+	// on world: UNUSED
+	// on players: projectiles hitting player        SHOTS
+	// on entities: projectiles                      SHOTS
+float	CHAN_WEAPON2			= 5; // Nex fire (separated as it is a very long sound)
+	// on world: UNUSED
+	// on players: weapon firing                     WEAPONS
+	// on entities: turret firing                    WEAPONS
 float	CHAN_PAIN				= 6; // Pain
+	// on world: UNUSED
+	// on players: pain                              PAIN
+	// on entities: UNUSED
 float	CHAN_PLAYER				= 7; // Player body
+	// on world: UNUSED
+	// on players: player sounds                     PLAYER
+	// on entities: player sounds                    PLAYER
 
 float	ATTN_NONE				= 0;
 float	ATTN_NORM				= 0.5;

Modified: branches/nexuiz-2.0/data/qcsrc/server/ctf.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/ctf.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/ctf.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -8,7 +8,6 @@
 //float FLAGSCORE_RETURN        =  5; // returned by owner team
 //float FLAGSCORE_RETURNROGUE   = 10; // returned by rogue team
 //float FLAGSCORE_CAPTURE       =  5;
-//float FLAGSCORE_CAPTURE_TEAM  = 20;
 
 #define FLAG_CARRY_POS '-15 0 7'
 
@@ -107,7 +106,7 @@
 	RegenFlag(e);
 };
 
-void DropFlag(entity e)
+void DropFlag(entity e, entity penalty_receiver, entity attacker)
 {
 	local entity p;
 
@@ -130,13 +129,16 @@
 	}
 	bprint(p.netname, "^7 lost the ", e.netname, "\n");
 
-	if(cvar("g_ctf_flagpenalty_drop"))
+	if(penalty_receiver)
+		UpdateFrags(penalty_receiver, -cvar("g_ctf_flagpenalty_suicidedrop"));
+	else
 		UpdateFrags(p, -cvar("g_ctf_flagpenalty_drop"));
+	PlayerScore_Add(p, SP_CTF_DROPS, +1);
+	e.playerid = attacker.playerid;
 	
-	//if(e.enemy && e.enemy != e)
-	//UpdateFrags(e.enemy, cvar("g_ctf_flagscore_kill"));
+	WaypointSprite_Ping(p.waypointsprite_attachedforcarrier);
 	WaypointSprite_DetachCarrier(p);
-	LogCTF("dropped", p.team, p.flagcarried);
+	LogCTF("dropped", p.team, p);
 
 	setattachment(e, world, "");
 
@@ -225,7 +227,7 @@
 	if (e.classname != "player" || (e.deadflag) || (e.flagcarried != self))
 	{
 		dprint("CANNOT HAPPEN - player dead and STILL had a flag!\n");
-		DropFlag(self);
+		DropFlag(self, world, world);
 		return;
 	}
 };
@@ -235,7 +237,6 @@
 	if(gameover) return;
 
 	local float t;
-	local entity head;
 	local entity player;
 	local string s, s0, h0, h1;
 	if (other.classname != "player")
@@ -290,12 +291,6 @@
 		// give credit to the individual player
 		UpdateFrags(other, cvar("g_ctf_flagscore_capture"));
 
-		// give credit to all players of the team (rewards large teams)
-		// NOTE: this defaults to 0
-		FOR_EACH_PLAYER(head)
-			if (head.team == self.team)
-				UpdateFrags(head, cvar("g_ctf_flagscore_capture_team"));
-
 		sound (other, CHAN_AUTO, self.noise2, VOL_BASE, ATTN_NONE);
 		WaypointSprite_DetachCarrier(other);
 		if(self.speedrunning)
@@ -324,7 +319,7 @@
 		self.cnt = FLAG_CARRY;
 		self.angles = '0 0 0';
 		bprint(other.netname, "^7 got the ", self.netname, "\n");
-		UpdateFrags(other, cvar("g_ctf_flagscore_pickup"));
+		UpdateFrags(other, cvar("g_ctf_flagscore_pickup_base"));
 		PlayerScore_Add(other, SP_CTF_PICKUPS, 1);
 		LogCTF("steal", self.team, other);
 		sound (other, CHAN_AUTO, self.noise, VOL_BASE, ATTN_NONE);
@@ -337,6 +332,8 @@
 		setorigin(self, FLAG_CARRY_POS);
 		setattachment(self, other, "");
 		WaypointSprite_AttachCarrier("flagcarrier", other);
+		WaypointSprite_UpdateTeamRadar(other.waypointsprite_attachedforcarrier, RADARICON_FLAGCARRIER, '1 1 0');
+		WaypointSprite_Ping(self.sprite);
 
 		return;
 	}
@@ -348,10 +345,33 @@
 		{
 			// return flag
 			bprint(other.netname, "^7 returned the ", self.netname, "\n");
-			if (other.team == COLOR_TEAM1 || other.team == COLOR_TEAM2)
-				UpdateFrags(other, cvar("g_ctf_flagscore_return"));
+
+			// punish the player who last had it
+			FOR_EACH_PLAYER(player)
+				if(player.playerid == self.playerid)
+					PlayerScore_Add(player, SP_SCORE, -cvar("g_ctf_flagpenalty_returned"));
+
+			// punish the team who was last carrying it
+			if(self.team == COLOR_TEAM1)
+				TeamScore_AddToTeam(COLOR_TEAM2, ST_SCORE, -cvar("g_ctf_flagpenalty_returned"));
 			else
-				UpdateFrags(other, cvar("g_ctf_flagscore_return_rogue"));
+				TeamScore_AddToTeam(COLOR_TEAM1, ST_SCORE, -cvar("g_ctf_flagpenalty_returned"));
+
+			// reward the player who returned it
+			if(other.playerid == self.playerid) // is this the guy who killed the FC last?
+			{
+				if (other.team == COLOR_TEAM1 || other.team == COLOR_TEAM2)
+					UpdateFrags(other, cvar("g_ctf_flagscore_return_by_killer"));
+				else
+					UpdateFrags(other, cvar("g_ctf_flagscore_return_rogue_by_killer"));
+			}
+			else
+			{
+				if (other.team == COLOR_TEAM1 || other.team == COLOR_TEAM2)
+					UpdateFrags(other, cvar("g_ctf_flagscore_return"));
+				else
+					UpdateFrags(other, cvar("g_ctf_flagscore_return_rogue"));
+			}
 			PlayerScore_Add(other, SP_CTF_RETURNS, 1);
 			LogCTF("return", self.team, other);
 			sound (other, CHAN_AUTO, self.noise1, VOL_BASE, ATTN_NONE);
@@ -366,7 +386,17 @@
 			other.flagcarried = self;
 			self.cnt = FLAG_CARRY;
 			bprint(other.netname, "^7 picked up the ", self.netname, "\n");
-			UpdateFrags(other, cvar("g_ctf_flagscore_pickup"));
+
+			float f;
+			f = bound(0, (self.pain_finished - time) / cvar("g_ctf_flag_returntime"), 1);
+			//print("factor is ", ftos(f), "\n");
+			f = cvar("g_ctf_flagscore_pickup_dropped_late") * (1-f)
+			  + cvar("g_ctf_flagscore_pickup_dropped_early") * f;
+			f = floor(f + 0.5);
+			//print("score is ", ftos(f), "\n");
+
+			UpdateFrags(other, f);
+			PlayerScore_Add(other, SP_CTF_PICKUPS, 1);
 			LogCTF("pickup", self.team, other);
 			sound (other, CHAN_AUTO, self.noise, VOL_BASE, ATTN_NONE);
 
@@ -378,6 +408,7 @@
 			setorigin(self, FLAG_CARRY_POS);
 			setattachment(self, other, "");
 			WaypointSprite_AttachCarrier("flagcarrier", other);
+			WaypointSprite_UpdateTeamRadar(other.waypointsprite_attachedforcarrier, RADARICON_FLAGCARRIER, '1 1 0');
 		}
 	}
 };
@@ -525,6 +556,7 @@
 	waypoint_spawnforitem(self);
 
 	WaypointSprite_SpawnFixed("redbase", self.origin + '0 0 37', self, sprite);
+	WaypointSprite_UpdateTeamRadar(self.sprite, RADARICON_FLAG, '1 0 0');
 };
 
 /*QUAKED spawnfunc_item_flag_team2 (0 0.5 0.8) (-48 -48 -24) (48 48 64)
@@ -607,6 +639,7 @@
 	waypoint_spawnforitem(self);
 
 	WaypointSprite_SpawnFixed("bluebase", self.origin + '0 0 37', self, sprite);
+	WaypointSprite_UpdateTeamRadar(self.sprite, RADARICON_FLAG, '0 0 1');
 };
 
 

Modified: branches/nexuiz-2.0/data/qcsrc/server/defs.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/defs.qh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/defs.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -281,9 +281,6 @@
 float restart_mapalreadyrestarted; //bool, indicates whether reset_map() was already executed
 entity restartAnnouncer; //a temporary entity which will play the countdown sounds 3, 2, 1 for all clients, will also reset the map after the countdown
 void restartAnnouncer_Think();
-entity readyNagger; //manages printing the ready-nag to active players who are not ready yet
-void readyNagger_Think();
-float readyNagActive; //if set to 1, the readyNagger entity was already spawned (boolean)
 float blockSpectators; //if set, new or existing spectators or observers will be removed unless they become a player within g_maxplayers_spectator_blocktime seconds
 .float spectatortime; //point in time since the client is spectating or observing
 void checkSpectatorBlock();
@@ -362,7 +359,7 @@
 
 float startitem_failed;
 
-void DropFlag(entity flag);
+void DropFlag(entity flag, entity penalty_receiver, entity attacker);
 void DropAllRunes(entity pl);
 
 
@@ -491,3 +488,7 @@
 .float weapons;
 
 .float porto_forbidden;
+
+.string fog;
+
+string cvar_changes;

Modified: branches/nexuiz-2.0/data/qcsrc/server/ent_cs.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/ent_cs.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/ent_cs.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -34,50 +34,35 @@
 
 void entcs_ons(entity to)
 {
-	if(to == self.owner || self.team != to.team ||
-	   self.owner.classname == "observer" || to.classname == "observer")
+	if(to == self.owner || self.team != to.team || self.owner.classname != "player" || to.classname != "player" || self.owner.deadflag != DEAD_NO)
 	{
-		WriteByte(MSG_ENTITY, ENTCS_MSG_ONS_REMOVE);
+		WriteByte(MSG_ENTITY, ENTCS_MSG_ONS_REMOVE); // looks like a waste to me
 		return;
 	}
 	WriteByte(MSG_ENTITY, ENTCS_MSG_ONS_GPS);
-	WriteCoord(MSG_ENTITY, self.owner.origin_x);
-	WriteCoord(MSG_ENTITY, self.owner.origin_y);
-	WriteCoord(MSG_ENTITY, self.owner.angles_y);
+	WriteShort(MSG_ENTITY, self.owner.origin_x);
+	WriteShort(MSG_ENTITY, self.owner.origin_y);
+	WriteShort(MSG_ENTITY, self.owner.origin_z);
+	WriteByte(MSG_ENTITY, self.owner.angles_y * 256.0 / 360);
 }
 
 void entcs_common_self()
 {
-	/*
-	entity pl;
-	if(self.pingtime < time)
-	{
-		self.pingtime = time + 9; // keep it 1 below the non-ons update intervall
-		// just to be safe... (blah)
-		WriteByte(MSG_ENTITY, ENTCS_MSG_PING);
-		FOR_EACH_REALCLIENT(pl)
-		{
-			WriteByte(MSG_ENTITY, num_for_edict(pl));
-			WriteShort(MSG_ENTITY, pl.ping);
-		}
-		WriteByte(MSG_ENTITY, 0);
-	}
-	*/
 }
 
 float entcs_send(entity to)
 {
 	WriteByte(MSG_ENTITY, ENT_CLIENT_ENTCS);
 	WriteByte(MSG_ENTITY, self.health); // serves as entitynumber
-	
+
 	if(to == self.owner)
 	{
 		entcs_common_self();
 	}
-	
-	if(g_onslaught)
+
+	if(teams_matter)
 		entcs_ons(to);
-	
+
 	WriteByte(MSG_ENTITY, ENTCS_MSG_END);
 	return TRUE;
 };
@@ -87,10 +72,7 @@
 	self.team = self.owner.team;
 	self.Version++;
 	setorigin(self, self.owner.origin);
-	if(game == GAME_ONSLAUGHT)
-		self.nextthink = time + 0.1;
-	else
-		self.nextthink = time + 10; // update pings every 10 seconds
+	self.nextthink = time;
 };
 
 entity attach_entcs()
@@ -98,8 +80,6 @@
 	local float num;
 	local entity ent;
 
-	print("Attaching ENTCS entity\n");
-
 	num = num_for_edict(self);
 	ent = get_entcs_ent();
 
@@ -113,7 +93,7 @@
 	ent.model = "entcs_sender";
 	ent.modelindex = 1;
 	setsize(ent, '0 0 0', '0 0 0');
-		
+
 	ent.SendEntity = entcs_send;
 	return ent;
 };

Modified: branches/nexuiz-2.0/data/qcsrc/server/extensions.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/extensions.qh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/extensions.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -908,6 +908,18 @@
 string(string in) uri_escape = #510;
 string(string in) uri_unescape = #511;
 
+//DP_QC_URI_GET
+//idea: div0
+//darkplaces implementation: div0
+//loads text from an URL into a string
+//the following callback will receive the data and MUST exist!
+//  void(float id, float status, string data) URI_Get_Callback;
+//status is either
+//  negative for an internal error,
+//  0 for success, or
+//  the HTTP response code on server error (e.g. 404)
+float(string url, float id) uri_get = #513;
+
 //DP_SV_SPAWNFUNC_PREFIX
 //idea: div0
 //darkplaces implementation: div0

Modified: branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_damage.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -35,6 +35,7 @@
 	PlayerTeamScore_AddScore(player, f);
 }
 
+// NOTE: f=0 means still count as a (positive) kill, but count no frags for it
 void GiveFrags (entity attacker, entity targ, float f)
 {
 	// TODO route through PlayerScores instead
@@ -90,6 +91,11 @@
 		}
 		f = 0;
 	}
+	else if(g_ctf)
+	{
+		if(g_ctf_win_mode == 3)
+			f = 0;
+	}
 
 	attacker.totalfrags += f;
 
@@ -316,8 +322,10 @@
 				}
 				if(g_ctf && targ.flagcarried)
 				{
-					GiveFrags(attacker, targ, cvar("g_ctf_flagscore_kill"));
+					//GiveFrags(attacker, targ, cvar("g_ctf_flagscore_kill"));
+					UpdateFrags(attacker, cvar("g_ctf_flagscore_kill"));
 					PlayerScore_Add(attacker, SP_CTF_FCKILLS, 1);
+					GiveFrags(attacker, targ, 0);
 				}
 				else
 					GiveFrags(attacker, targ, 1);
@@ -495,6 +503,10 @@
 		targ.flags -= targ.flags & FL_GODMODE;
 		damage = 100000;
 	}
+	else if(deathtype == DEATH_MIRRORDAMAGE)
+	{
+		// no processing
+	}
 	else
 	{
 		if (targ.classname == "player")
@@ -605,14 +617,34 @@
 		// apply strength multiplier
 		if (attacker.items & IT_STRENGTH && !g_minstagib)
 		{
-			damage = damage * cvar("g_balance_powerup_strength_damage");
-			force = force * cvar("g_balance_powerup_strength_force");
+			if(targ == attacker)
+			{
+				damage = damage * cvar("g_balance_powerup_strength_selfdamage");
+				force = force * cvar("g_balance_powerup_strength_selfforce");
+			}
+			else
+			{
+				damage = damage * cvar("g_balance_powerup_strength_damage");
+				force = force * cvar("g_balance_powerup_strength_force");
+			}
 		}
+
 		// apply invincibility multiplier
 		if (targ.items & IT_INVINCIBLE && !g_minstagib)
 			damage = damage * cvar("g_balance_powerup_invincible_takedamage");
 
+		if (targ == attacker)
+			damage = damage * cvar("g_balance_selfdamagepercent");	// Partial damage if the attacker hits himself
 
+		// CTF: reduce damage/force
+		if(g_ctf)
+		if(targ == attacker)
+		if(targ.flagcarried)
+		{
+			damage = damage * cvar("g_ctf_flagcarrier_selfdamage");
+			force = force * cvar("g_ctf_flagcarrier_selfforce");
+		}
+
 		if(g_runematch)
 		{
 			// apply strength rune
@@ -782,8 +814,6 @@
 						if (targ.classname == "player")
 							center = targ.origin + targ.view_ofs;
 						force = normalize(center - blastorigin) * (finaldmg / coredamage) * forceintensity;
-						if (targ == attacker)
-							finaldmg = finaldmg * cvar("g_balance_selfdamagepercent");	// Partial damage if the attacker hits himself
 						// test line of sight to multiple positions on box,
 						// and do damage if any of them hit
 						local float c;

Modified: branches/nexuiz-2.0/data/qcsrc/server/g_hook.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_hook.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_hook.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -309,7 +309,8 @@
 
 	makevectors(self.v_angle);
 
-	sound (self, CHAN_WEAPON, "weapons/hook_fire.wav", VOL_BASE, ATTN_NORM);
+	// UGLY WORKAROUND: play this on CHAN_WEAPON2 so it can't cut off fire sounds
+	sound (self, CHAN_WEAPON2, "weapons/hook_fire.wav", VOL_BASE, ATTN_NORM);
 	org = self.origin + self.view_ofs + v_forward * 8 - v_right * 8 + '0 0 -12';
 	pointparticles(particleeffectnum("grapple_muzzleflash"), org, '0 0 0', 1);
 

Modified: branches/nexuiz-2.0/data/qcsrc/server/g_subs.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_subs.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_subs.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -344,13 +344,99 @@
 	return a;
 }
 
-void SetBrushEntityModel()
+.string lodtarget1;
+.string lodtarget2;
+.string lodmodel1;
+.string lodmodel2;
+.float lodmodelindex0;
+.float lodmodelindex1;
+.float lodmodelindex2;
+.float loddistance1;
+.float loddistance2;
+
+float LOD_customize()
 {
-	if(self.model != "")
+	float d;
+
+	// TODO csqc network this so it only gets sent once
+	d = vlen(self.origin - other.origin);
+	if(d < self.loddistance1)
+		self.modelindex = self.lodmodelindex0;
+	else if(!self.lodmodelindex2 || d < self.loddistance2)
+		self.modelindex = self.lodmodelindex1;
+	else
+		self.modelindex = self.lodmodelindex2;
+
+	return TRUE;
+}
+
+void LOD_uncustomize()
+{
+	self.modelindex = self.lodmodelindex0;
+}
+
+void LODmodel_attach()
+{
+	entity e;
+
+	if(!self.loddistance1)
+		self.loddistance1 = 1000;
+	if(!self.loddistance2)
+		self.loddistance2 = 2000;
+	self.lodmodelindex0 = self.modelindex;
+
+	if(self.lodtarget1 != "")
 	{
-		precache_model(self.model);
-		setmodel(self, self.model); // no precision needed
+		e = find(world, targetname, self.lodtarget1);
+		if(e)
+		{
+			self.lodmodel1 = e.model;
+			remove(e);
+		}
 	}
+	if(self.lodtarget2 != "")
+	{
+		e = find(world, targetname, self.lodtarget2);
+		if(e)
+		{
+			self.lodmodel2 = e.model;
+			remove(e);
+		}
+	}
+
+	if(self.lodmodel1 != "")
+	{
+		vector mi, ma;
+		mi = self.mins;
+		ma = self.maxs;
+
+		precache_model(self.lodmodel1);
+		setmodel(self, self.lodmodel1);
+		self.lodmodelindex1 = self.modelindex;
+
+		if(self.lodmodel2 != "")
+		{
+			precache_model(self.lodmodel2);
+			setmodel(self, self.lodmodel2);
+			self.lodmodelindex2 = self.modelindex;
+		}
+
+		self.modelindex = self.lodmodelindex0;
+		setsize(self, mi, ma);
+	}
+
+	if(self.lodmodelindex1)
+		SetCustomizer(self, LOD_customize, LOD_uncustomize);
+}
+
+void SetBrushEntityModel()
+{
+ 	if(self.model != "")
+ 	{
+ 		precache_model(self.model);
+ 		setmodel(self, self.model); // no precision needed
+		InitializeEntity(self, LODmodel_attach, INITPRIO_FINDTARGET);
+ 	}
 	setorigin(self, self.origin);
 	setsize(self, self.mins, self.maxs);
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -621,8 +621,9 @@
 	self.maxs = '0 0 0';
 	self.velocity = '0 0 -1';
 	self.mdl = "TE_SPARK";
-	self.impulse = 0.1 / self.wait;
+	self.impulse = 10 * self.wait; // by default 2.5/sec
 	self.wait = 0;
+	self.cnt = 0; // use mdl
 
 	spawnfunc_func_pointparticles();
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/g_world.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_world.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_world.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -8,8 +8,6 @@
 void ShuffleMaplist()
 float() DoNextMapOverride;
 
-.string fog;
-
 void SetDefaultAlpha()
 {
 	if(cvar("g_running_guns"))
@@ -156,8 +154,49 @@
 	return 0;
 }
 
+void cvar_changes_init()
+{
+	float fh;
+	string s, k, v, d;
+	float n;
+
+	if(cvar_changes)
+		strunzone(cvar_changes);
+	cvar_changes = string_null;
+	fh = fopen("cvars.txt", FILE_READ);
+	if(fh < 0)
+		return;
+	while((s = fgets(fh)))
+	{
+		n = tokenize(s);
+		if(n < 1)
+			continue;
+		if(argv(0) == "//")
+			continue;
+		k = argv(0);
+		v = cvar_string(k);
+		d = cvar_defstring(k);
+		if(v != d)
+		{
+			cvar_changes = strcat(cvar_changes, k, " \"", v, "\" // \"", d, "\"\n");
+			if(strlen(cvar_changes) > 16384)
+			{
+				cvar_changes = "// too many settings have been changed to show them here\n";
+				break;
+			}
+		}
+	}
+	fclose(fh);
+	if(cvar_changes == "")
+		cvar_changes = "// this server runs at default settings\n";
+	else
+		cvar_changes = strcat("// this server runs at modified settings:\n", cvar_changes);
+	cvar_changes = strzone(cvar_changes);
+}
+
 float world_already_spawned;
 void RegisterWeapons();
+void Nagger_Init();
 void spawnfunc_worldspawn (void)
 {
 	float fd, l;
@@ -359,9 +398,12 @@
 	addstat(STAT_SYS_TICRATE, AS_FLOAT, stat_sys_ticrate);
 	addstat(STAT_WEAPONS, AS_INT, weapons);
 	addstat(STAT_SWITCHWEAPON, AS_INT, switchweapon);
+	Nagger_Init();
 
 	next_pingtime = time + 5;
 	world_initialized = 1;
+
+	InitializeEntity(self, cvar_changes_init, INITPRIO_CVARS);
 }
 
 void spawnfunc_light (void)
@@ -905,6 +947,7 @@
 	}
 
 	s = strcat(":labels:player:", GetPlayerScoreString(world, 0));
+	if(to_console)
 		print(s, "\n");
 	if(to_eventlog)
 		GameLogEcho(s);
@@ -1078,7 +1121,6 @@
 Exit deathmatch games upon conditions
 ============
 */
-.float fogtime;
 void CheckRules_Player()
 {
 	if (gameover)	// someone else quit the game already
@@ -1087,14 +1129,6 @@
 	if(self.deadflag == DEAD_NO)
 		self.play_time += frametime;
 
-	if(sv_foginterval)
-	if(world.fog)
-	if(time > self.fogtime)
-	{
-		stuffcmd(self, strcat("\nfog ", world.fog, "\nr_fog_exp2 0\nr_drawfog 1\n"));
-		self.fogtime = time + sv_foginterval;
-	}
-
 	// fixme: don't check players; instead check spawnfunc_dom_team and spawnfunc_ctf_team entities
 	//   (div0: and that in CheckRules_World please)
 };
@@ -1404,9 +1438,6 @@
 	if(WinningConditionHelper_winnerteam >= 0)
 		SetWinners(team, WinningConditionHelper_winnerteam);
 
-	if(WinningConditionHelper_topscore == 0)
-		WinningConditionHelper_equality = 0;
-	
 	if(WinningConditionHelper_lowerisbetter)
 	{
 		WinningConditionHelper_topscore = -WinningConditionHelper_topscore;
@@ -1446,19 +1477,21 @@
 	{
 		float totalplayers;
 		float playerswithlaps;
+		float readyplayers;
 		entity head;
-		totalplayers = playerswithlaps = 0;
+		totalplayers = playerswithlaps = readyplayers = 0;
 		FOR_EACH_PLAYER(head)
 		{
 			++totalplayers;
 			if(PlayerScore_Add(head, SP_RACE_FASTEST, 0))
 				++playerswithlaps;
+			if(head.ready)
+				++readyplayers;
 		}
 
 		// at least 2/3 of the players have completed a lap: start the RACE
 		// otherwise, the players should end the qualifying on their own
-		if(totalplayers >= 3)
-		if(playerswithlaps >= totalplayers * 2 / 3)
+		if(readyplayers || ((totalplayers >= 3) && (playerswithlaps * 3 >= totalplayers * 2)))
 		{
 			checkrules_overtimeend = 0;
 			ReadyRestart();

Modified: branches/nexuiz-2.0/data/qcsrc/server/gamecommand.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/gamecommand.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/gamecommand.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,5 +1,258 @@
 string GotoMap(string m);
 
+#if 0
+// TODO make this algorithm work (no idea why it is failing), it would be much faster
+float FullTraceFraction(vector a, vector mi, vector ma, vector b)
+{
+	vector c;
+	float d;
+	if(a_z > b_z)
+		return 0;
+	tracebox(a, mi, ma, b, MOVE_WORLDONLY, world);
+	if(trace_startsolid)
+	{
+		// a leaves solid, then hits trace_endpos
+		// where does a leave solid?
+		c = trace_endpos;
+		tracebox(c, mi, ma, a, MOVE_WORLDONLY, world);
+		// a to trace_endpos is solid
+		// trace_endpos to c is not solid
+		d = trace_endpos_z - a_z;
+		return FullTraceFraction(c + '0 0 1', mi, ma, b) + d;
+	}
+	else
+	{
+		// a hits trace_endpos
+		return FullTraceFraction(trace_endpos + '0 0 1', mi, ma, b);
+	}
+}
+
+float RoughMapAtPoint(float x, float y, float w, float h)
+{
+	vector a, b, mi, ma;
+	mi = '0 0 0';
+	ma = '1 0 0' * w + '0 1 0' * h;
+	a = '1 0 0' * x + '0 1 0' * y + '0 0 1' * world.mins_z;
+	b = '1 0 0' * x + '0 1 0' * y + '0 0 1' * world.maxs_z;
+	return floor(FullTraceFraction(a, mi, ma, b) / (world.maxs_z - world.mins_z) * 255);
+}
+#else
+float RoughMapAtPoint(float x, float y, float w, float h, float zmin, float zsize)
+{
+	vector o, mi, ma;
+	float i, r;
+	vector dz;
+	mi = '0 0 0';
+	dz = (zsize / 256) * '0 0 1';
+	ma = '1 0 0' * w + '0 1 0' * h + dz;
+	o = '1 0 0' * x + '0 1 0' * y + '0 0 1' * zmin;
+
+	if(x < world.mins_x - w)
+		return 0;
+	if(y < world.mins_y - h)
+		return 0;
+	if(x > world.maxs_x)
+		return 0;
+	if(y > world.maxs_y)
+		return 0;
+	
+	r = 0;
+	for(i = 0; i < 255; ++i)
+	{
+		tracebox(o + dz * i, mi, ma, o + dz * i, MOVE_WORLDONLY, world);
+		if(trace_startsolid)
+			++r;
+	}
+	return r; // 0 .. 255
+}
+#endif
+
+string doublehex = "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF";
+
+entity roughmapper;
+// rough map entity
+//   cnt: current line
+//   size: pixel width/height
+//   maxs: cell width/height
+//   frame: counter
+void RoughMap_Think()
+{
+	float i, x, l;
+	string si;
+
+	if(self.frame == 0)
+	{
+		// initialize
+		get_mi_min_max();
+		self.size_x = 512;
+		self.size_y = 512;
+		self.mins = mi_picmin;
+		self.maxs_x = (mi_picmax_x - mi_picmin_x) / self.size_x;
+		self.maxs_y = (mi_picmax_y - mi_picmin_y) / self.size_y;
+		self.maxs_z = mi_max_z - mi_min_z;
+		print("Picture mins/maxs: ", ftos(self.maxs_x), " and ", ftos(self.maxs_y), " should match\n");
+		self.netname = strzone(strcat("gfx/", mi_shortname, "_mini.xpm"));
+		if(!(self.count & 1))
+		{
+			self.cnt = fopen(self.netname, FILE_READ);
+			if(self.cnt >= 0)
+			{
+				print(self.netname, " already exists, aborting (you may want to specify --force)\n");
+				if(self.count & 2)
+				{
+					if(self.count & 1)
+						localcmd("defer 1 \"sv_cmd roughmap --force --loop\"\n");
+					else
+						localcmd("defer 1 \"sv_cmd roughmap --loop\"\n");
+					GotoNextMap();
+				}
+				remove(self);
+				return;
+			}
+		}
+		self.cnt = fopen(self.netname, FILE_WRITE);
+		if(self.cnt < 0)
+		{
+			print("Error writing ", self.netname, "\n");
+			remove(self);
+			roughmapper = world;
+			return;
+		}
+		print("Writing to ", self.netname, "...\n");
+		fputs(self.cnt, "/* XPM */\n");
+		fputs(self.cnt, "static char *RoughMap[] = {\n");
+		fputs(self.cnt, "/* columns rows colors chars-per-pixel */\n");
+		fputs(self.cnt, strcat("\"", ftos(self.size_x), " ", ftos(self.size_y), " 256 2\",\n"));
+		for(i = 0; i < 256; ++i)
+		{
+			si = substring(doublehex, i*2, 2);
+			fputs(self.cnt, strcat("\"", si, " c #", si, si, si, "\",\n"));
+		}
+		self.frame += 1;
+		self.nextthink = time;
+	}
+	else if(self.frame <= self.size_y)
+	{
+		// write a pixel line
+		fputs(self.cnt, "\"");
+		for(x = 0; x < self.size_x; ++x)
+		{
+			l = RoughMapAtPoint(self.mins_x + x * self.maxs_x, self.mins_y + (self.size_y - self.frame) * self.maxs_y, self.maxs_x, self.maxs_y, self.mins_z, self.maxs_z);
+			fputs(self.cnt, substring(doublehex, 2 * l, 2));
+		}
+		if(self.frame == self.size_y)
+			fputs(self.cnt, "\"\n");
+		else
+		{
+			fputs(self.cnt, "\",\n");
+			print(ftos(self.size_y - self.frame), " lines left\n");
+		}
+		self.frame += 1;
+		self.nextthink = time;
+	}
+	else
+	{
+		// close the file
+		fputs(self.cnt, "};\n");
+		fclose(self.cnt);
+		print("Finished. Please edit data/", self.netname, " with an image editing application and place it in the TGA format in the gfx folder.\n");
+		if(self.count & 2)
+		{
+			if(self.count & 1)
+				localcmd("defer 1 \"sv_cmd roughmap --force --loop\"\n");
+			else
+				localcmd("defer 1 \"sv_cmd roughmap --loop\"\n");
+			GotoNextMap();
+		}
+		remove(self);
+		roughmapper = world;
+	}
+}
+
+void RoughMap(float argc)
+{
+	if(roughmapper)
+		return;
+	float i;
+	roughmapper = spawn();
+	roughmapper.classname = "roughmapper";
+	roughmapper.think = RoughMap_Think;
+	roughmapper.nextthink = time;
+	roughmapper.count = 0;
+
+	for(i = 1; i < argc; ++i)
+	{
+		if(argv(i) == "--force")
+			roughmapper.count |= 1;
+		if(argv(i) == "--loop")
+			roughmapper.count |= 2;
+	}
+}
+
+void EffectIndexDump()
+{
+	float d;
+	float fh;
+	string s;
+
+	d = db_create();
+
+	print("begin of effects list\n");
+	db_put(d, "TE_GUNSHOT", "1"); print("effect TE_GUNSHOT is ", ftos(particleeffectnum("TE_GUNSHOT")), "\n");
+	db_put(d, "TE_GUNSHOTQUAD", "1"); print("effect TE_GUNSHOTQUAD is ", ftos(particleeffectnum("TE_GUNSHOTQUAD")), "\n");
+	db_put(d, "TE_SPIKE", "1"); print("effect TE_SPIKE is ", ftos(particleeffectnum("TE_SPIKE")), "\n");
+	db_put(d, "TE_SPIKEQUAD", "1"); print("effect TE_SPIKEQUAD is ", ftos(particleeffectnum("TE_SPIKEQUAD")), "\n");
+	db_put(d, "TE_SUPERSPIKE", "1"); print("effect TE_SUPERSPIKE is ", ftos(particleeffectnum("TE_SUPERSPIKE")), "\n");
+	db_put(d, "TE_SUPERSPIKEQUAD", "1"); print("effect TE_SUPERSPIKEQUAD is ", ftos(particleeffectnum("TE_SUPERSPIKEQUAD")), "\n");
+	db_put(d, "TE_WIZSPIKE", "1"); print("effect TE_WIZSPIKE is ", ftos(particleeffectnum("TE_WIZSPIKE")), "\n");
+	db_put(d, "TE_KNIGHTSPIKE", "1"); print("effect TE_KNIGHTSPIKE is ", ftos(particleeffectnum("TE_KNIGHTSPIKE")), "\n");
+	db_put(d, "TE_EXPLOSION", "1"); print("effect TE_EXPLOSION is ", ftos(particleeffectnum("TE_EXPLOSION")), "\n");
+	db_put(d, "TE_EXPLOSIONQUAD", "1"); print("effect TE_EXPLOSIONQUAD is ", ftos(particleeffectnum("TE_EXPLOSIONQUAD")), "\n");
+	db_put(d, "TE_TAREXPLOSION", "1"); print("effect TE_TAREXPLOSION is ", ftos(particleeffectnum("TE_TAREXPLOSION")), "\n");
+	db_put(d, "TE_TELEPORT", "1"); print("effect TE_TELEPORT is ", ftos(particleeffectnum("TE_TELEPORT")), "\n");
+	db_put(d, "TE_LAVASPLASH", "1"); print("effect TE_LAVASPLASH is ", ftos(particleeffectnum("TE_LAVASPLASH")), "\n");
+	db_put(d, "TE_SMALLFLASH", "1"); print("effect TE_SMALLFLASH is ", ftos(particleeffectnum("TE_SMALLFLASH")), "\n");
+	db_put(d, "TE_FLAMEJET", "1"); print("effect TE_FLAMEJET is ", ftos(particleeffectnum("TE_FLAMEJET")), "\n");
+	db_put(d, "EF_FLAME", "1"); print("effect EF_FLAME is ", ftos(particleeffectnum("EF_FLAME")), "\n");
+	db_put(d, "TE_BLOOD", "1"); print("effect TE_BLOOD is ", ftos(particleeffectnum("TE_BLOOD")), "\n");
+	db_put(d, "TE_SPARK", "1"); print("effect TE_SPARK is ", ftos(particleeffectnum("TE_SPARK")), "\n");
+	db_put(d, "TE_PLASMABURN", "1"); print("effect TE_PLASMABURN is ", ftos(particleeffectnum("TE_PLASMABURN")), "\n");
+	db_put(d, "TE_TEI_G3", "1"); print("effect TE_TEI_G3 is ", ftos(particleeffectnum("TE_TEI_G3")), "\n");
+	db_put(d, "TE_TEI_SMOKE", "1"); print("effect TE_TEI_SMOKE is ", ftos(particleeffectnum("TE_TEI_SMOKE")), "\n");
+	db_put(d, "TE_TEI_BIGEXPLOSION", "1"); print("effect TE_TEI_BIGEXPLOSION is ", ftos(particleeffectnum("TE_TEI_BIGEXPLOSION")), "\n");
+	db_put(d, "TE_TEI_PLASMAHIT", "1"); print("effect TE_TEI_PLASMAHIT is ", ftos(particleeffectnum("TE_TEI_PLASMAHIT")), "\n");
+	db_put(d, "EF_STARDUST", "1"); print("effect EF_STARDUST is ", ftos(particleeffectnum("EF_STARDUST")), "\n");
+	db_put(d, "TR_ROCKET", "1"); print("effect TR_ROCKET is ", ftos(particleeffectnum("TR_ROCKET")), "\n");
+	db_put(d, "TR_GRENADE", "1"); print("effect TR_GRENADE is ", ftos(particleeffectnum("TR_GRENADE")), "\n");
+	db_put(d, "TR_BLOOD", "1"); print("effect TR_BLOOD is ", ftos(particleeffectnum("TR_BLOOD")), "\n");
+	db_put(d, "TR_WIZSPIKE", "1"); print("effect TR_WIZSPIKE is ", ftos(particleeffectnum("TR_WIZSPIKE")), "\n");
+	db_put(d, "TR_SLIGHTBLOOD", "1"); print("effect TR_SLIGHTBLOOD is ", ftos(particleeffectnum("TR_SLIGHTBLOOD")), "\n");
+	db_put(d, "TR_KNIGHTSPIKE", "1"); print("effect TR_KNIGHTSPIKE is ", ftos(particleeffectnum("TR_KNIGHTSPIKE")), "\n");
+	db_put(d, "TR_VORESPIKE", "1"); print("effect TR_VORESPIKE is ", ftos(particleeffectnum("TR_VORESPIKE")), "\n");
+	db_put(d, "TR_NEHAHRASMOKE", "1"); print("effect TR_NEHAHRASMOKE is ", ftos(particleeffectnum("TR_NEHAHRASMOKE")), "\n");
+	db_put(d, "TR_NEXUIZPLASMA", "1"); print("effect TR_NEXUIZPLASMA is ", ftos(particleeffectnum("TR_NEXUIZPLASMA")), "\n");
+	db_put(d, "TR_GLOWTRAIL", "1"); print("effect TR_GLOWTRAIL is ", ftos(particleeffectnum("TR_GLOWTRAIL")), "\n");
+	db_put(d, "SVC_PARTICLE", "1"); print("effect SVC_PARTICLE is ", ftos(particleeffectnum("SVC_PARTICLE")), "\n");
+
+	fh = fopen("effectinfo.txt", FILE_READ);
+	while((s = fgets(fh)))
+	{
+		tokenize(s);
+		if(argv(0) == "effect")
+		{
+			if(db_get(d, argv(1)) != "1")
+			{
+				if(particleeffectnum(argv(1)) >= 0)
+					print("effect ", argv(1), " is ", ftos(particleeffectnum(argv(1))), "\n");
+				db_put(d, argv(1), "1");
+			}
+		}
+	}
+	print("end of effects list\n");
+
+	db_close(d);
+}
+
 void make_mapinfo_Think()
 {
 	if(MapInfo_FilterGametype(MAPINFO_TYPE_ALL, 0, 1))
@@ -33,6 +286,9 @@
 		print("  savedb filename\n");
 		print("  dumpdb filename\n");
 		print("  loaddb filename\n");
+		print("  allready\n");
+		print("  effectindexdump\n");
+		print("  roughmap\n");
 		GameCommand_Vote("help", world);
 		GameCommand_Ban("help");
 		GameCommand_Generic("help");
@@ -210,6 +466,21 @@
 		ReadyRestart();
 		return;
 	}
+	if (argv(0) == "effectindexdump")
+	{
+		EffectIndexDump();
+		return;
+	}
+	if (argv(0) == "roughmap")
+	{
+		RoughMap(argc);
+		return;
+	}
+	if (argv(0) == "cvar_changes")
+	{
+		print(cvar_changes);
+		return;
+	}
 
 	print("Invalid command. For a list of supported commands, try sv_cmd help.\n");
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/ipban.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/ipban.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/ipban.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -116,6 +116,19 @@
 	return FALSE;
 }
 
+float Ban_MaybeEnforceBan(entity client)
+{
+	if(Ban_IsClientBanned(client))
+	{
+		string s;
+		s = strcat("^1NOTE:^7 banned client ", client.netaddress, " just tried to enter\n");
+		dropclient(client);
+		bprint(s);
+		return TRUE;
+	}
+	return FALSE;
+}
+
 float Ban_Insert(string ip, float bantime)
 {
 	float i;

Modified: branches/nexuiz-2.0/data/qcsrc/server/ipban.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/ipban.qh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/ipban.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,4 +1,5 @@
 void Ban_SaveBans();
 void Ban_LoadBans();
 float Ban_IsClientBanned(entity client);
+float Ban_MaybeEnforceBan(entity client);
 float GameCommand_Ban(string command);

Modified: branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -22,6 +22,7 @@
 float KH_KEY_BRIGHTNESS = 2;
 
 string kh_Controller_Waitmsg;
+float kh_no_radar_circles;
 
 // kh_state
 //     bits 0-7: player's key status
@@ -63,19 +64,8 @@
 string kh_sound_collect = "sound/kh/collect.wav";
 string kh_sound_alarm = "sound/kh/alarm.wav";  // the new siren/alarm
 
-float kh_sprite_dropped, kh_sprite_finish, kh_sprite_red, kh_sprite_blue, kh_sprite_pink, kh_sprite_yellow, kh_sprite_friend;
 float kh_key_dropped, kh_key_carried;
 
-float kh_GetCarrierSprite(float t, float e)  // runs all the time
-{
-	if(t == e)           return kh_sprite_friend;
-	if(t == COLOR_TEAM1) return kh_sprite_red;
-	if(t == COLOR_TEAM2) return kh_sprite_blue;
-	if(t == COLOR_TEAM3) return kh_sprite_yellow;
-	if(t == COLOR_TEAM4) return kh_sprite_pink;
-	return 0;
-}
-
 void kh_Controller_SetThink(float t, string msg, kh_Think_t func)  // runs occasionaly
 {
 	kh_Controller_Thinkfunc = func;
@@ -258,9 +248,13 @@
 
 void kh_Key_AssignTo(entity key, entity player)  // runs every time a key is picked up or assigned. Runs prior to kh_key_attach
 {
+	entity k;
+	float ownerteam0, ownerteam;
 	if(key.owner == player)
 		return;
 
+	ownerteam0 = kh_Key_AllOwnedByWhichTeam();
+
 	if(key.owner)
 	{
 		kh_Key_Detach(key);
@@ -275,6 +269,8 @@
 		if(key.owner.kh_next == world)
 		{
 			// No longer a key carrier
+			if(!kh_no_radar_circles)
+				WaypointSprite_Ping(key.owner.waypointsprite_attachedforcarrier);
 			WaypointSprite_DetachCarrier(key.owner);
 		}
 	}
@@ -308,8 +304,19 @@
 		{
 			// player is now a key carrier
 			WaypointSprite_AttachCarrier("", player);
-			player.waypointsprite_attachedforcarrier.waypointsprite_for_player = kh_KeyCarrier_waypointsprite_for_player;
-			player.waypointsprite_attachedforcarrier.team = player.team;
+			player.waypointsprite_attachedforcarrier.waypointsprite_visible_for_player = kh_KeyCarrier_waypointsprite_visible_for_player;
+			WaypointSprite_UpdateRule(player.waypointsprite_attachedforcarrier, player.team, SPRITERULE_TEAMPLAY);
+			if(player.team == COLOR_TEAM1)
+				WaypointSprite_UpdateSprites(player.waypointsprite_attachedforcarrier, "keycarrier-red", "keycarrier-friend", "");
+			else if(player.team == COLOR_TEAM2)
+				WaypointSprite_UpdateSprites(player.waypointsprite_attachedforcarrier, "keycarrier-blue", "keycarrier-friend", "");
+			else if(player.team == COLOR_TEAM3)
+				WaypointSprite_UpdateSprites(player.waypointsprite_attachedforcarrier, "keycarrier-yellow", "keycarrier-friend", "");
+			else if(player.team == COLOR_TEAM4)
+				WaypointSprite_UpdateSprites(player.waypointsprite_attachedforcarrier, "keycarrier-pink", "keycarrier-friend", "");
+			WaypointSprite_UpdateTeamRadar(player.waypointsprite_attachedforcarrier, RADARICON_FLAGCARRIER, colormapPaletteColor(player.team - 1, 0));
+			if(!kh_no_radar_circles)
+				WaypointSprite_Ping(player.waypointsprite_attachedforcarrier);
 		}
 	}
 	
@@ -319,6 +326,32 @@
 		key.owner.kh_state = (key.owner.kh_state | 255) - 255 + test[key.owner.playerid];
 		
 	key.pusher = world;
+
+	ownerteam = kh_Key_AllOwnedByWhichTeam();
+	if(ownerteam != ownerteam0)
+	{
+		if(ownerteam != -1)
+		{
+			kh_interferemsg_time = time + 0.2;
+			kh_interferemsg_team = player.team;
+
+			// audit all key carrier sprites, update them to RUN HERE
+			FOR_EACH_KH_KEY(k)
+			{
+				if(k.owner)
+					WaypointSprite_UpdateSprites(k.owner.waypointsprite_attachedforcarrier, k.owner.waypointsprite_attachedforcarrier.model, "keycarrier-finish", "");
+			}
+		}
+		else
+		{
+			// audit all key carrier sprites, update them to RUN HERE
+			FOR_EACH_KH_KEY(k)
+			{
+				if(k.owner)
+					WaypointSprite_UpdateSprites(k.owner.waypointsprite_attachedforcarrier, k.owner.waypointsprite_attachedforcarrier.model, "keycarrier-friend", "");
+			}
+		}
+	}
 }
 
 void kh_Key_Damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
@@ -377,8 +410,9 @@
 
 	centerprint(initial_owner, strcat("You are starting with the ", key.netname, "\n"));  // message to player at start of round
 
-	WaypointSprite_Spawn("", 0, 0, key, '0 0 1' * KH_KEY_WP_ZSHIFT, world, key.team, key, waypointsprite_attachedforcarrier, FALSE);
-	key.waypointsprite_attachedforcarrier.waypointsprite_for_player = kh_Key_waypointsprite_for_player;
+	WaypointSprite_Spawn("key-dropped", 0, 0, key, '0 0 1' * KH_KEY_WP_ZSHIFT, world, key.team, key, waypointsprite_attachedforcarrier, FALSE);
+	key.waypointsprite_attachedforcarrier.waypointsprite_visible_for_player = kh_Key_waypointsprite_visible_for_player;
+	WaypointSprite_UpdateTeamRadar(key.waypointsprite_attachedforcarrier, RADARICON_FLAG, '0 1 1');
 
 	kh_Key_AssignTo(key, initial_owner);
 }
@@ -445,12 +479,6 @@
 	bprint(player.netname, "^7 picked up the ", key.netname, "\n");
 
 	kh_Key_AssignTo(key, player); // this also updates .kh_state
-
-	if(kh_Key_AllOwnedByWhichTeam() != -1)
-	{
-		kh_interferemsg_time = time + 0.2;
-		kh_interferemsg_team = player.team;
-	}
 }
 
 void kh_Key_DropAll(entity player, float suicide) // runs whenever a player dies
@@ -746,8 +774,11 @@
 	// prepare next round
 	kh_interferemsg_time = 0;
 	entity key;
+
+	kh_no_radar_circles = TRUE;
 	FOR_EACH_KH_KEY(key)
 		kh_Key_Remove(key);
+	kh_no_radar_circles = FALSE;
 
 	kh_Controller_SetThink(cvar("g_balance_keyhunt_delay_round"), "Round starts in ", kh_StartRound);
 }
@@ -853,37 +884,24 @@
 	kh_tracking_enabled = TRUE;
 }
 
-float kh_Key_waypointsprite_for_player(entity e) // ??
+float kh_Key_waypointsprite_visible_for_player(entity e) // ??
 {
 	if(!kh_tracking_enabled)
-		return 0;
+		return FALSE;
 	if(!self.owner)
-		return kh_sprite_dropped;
+		return TRUE;
 	if(!self.owner.owner)
-		return kh_sprite_dropped;
-	return 0;  // draw only when key is not owned
+		return TRUE;
+	return FALSE;  // draw only when key is not owned
 }
 
-float kh_KeyCarrier_waypointsprite_for_player(entity e)  // runs all the time
+float kh_KeyCarrier_waypointsprite_visible_for_player(entity e)  // runs all the time
 {
 	if(e.classname != "player" || self.team != e.team)
 		if(!kh_tracking_enabled)
-			return 0;
+			return FALSE;
 
-	// e is spectator? That's no team mate...
-	if(e.classname != "player")
-		return kh_GetCarrierSprite(self.team, -1);
-
-	// e is no key carrier: simple case...
-	if(!e.kh_next)
-		return kh_GetCarrierSprite(self.team, e.team);
-
-	// e is a key carrier: if any key is dropped or owned by another team, show
-	// the carrier sprite; otherwise show run here
-	if(kh_Key_AllOwnedByWhichTeam() == e.team)
-		return kh_sprite_finish;
-
-	return kh_GetCarrierSprite(self.team, e.team);
+	return TRUE;
 }
 
 float kh_HandleFrags(entity attacker, entity targ, float f)  // adds to the player score
@@ -921,13 +939,6 @@
 	precache_sound(kh_sound_collect);
 	precache_sound(kh_sound_alarm);  // the new siren
 
-	precache_model("models/sprites/key-dropped.sp2");
-	precache_model("models/sprites/keycarrier-finish.sp2");
-	precache_model("models/sprites/keycarrier-friend.sp2");
-	precache_model("models/sprites/keycarrier-red.sp2");
-	precache_model("models/sprites/keycarrier-blue.sp2");
-	precache_model("models/sprites/keycarrier-yellow.sp2");
-	precache_model("models/sprites/keycarrier-pink.sp2");
 #ifdef KH_PLAYER_USE_CARRIEDMODEL
 	precache_model("models/keyhunt/key-carried.md3");
 #endif
@@ -957,21 +968,6 @@
 #else
 	kh_key_carried = kh_key_dropped;
 #endif
-	setmodel(kh_controller, "models/sprites/key-dropped.sp2");
-	kh_sprite_dropped = kh_controller.modelindex;
-	setmodel(kh_controller, "models/sprites/keycarrier-finish.sp2");
-	kh_sprite_finish = kh_controller.modelindex;
-	setmodel(kh_controller, "models/sprites/keycarrier-friend.sp2");
-	kh_sprite_friend = kh_controller.modelindex;
-	setmodel(kh_controller, "models/sprites/keycarrier-red.sp2");
-	kh_sprite_red = kh_controller.modelindex;
-	setmodel(kh_controller, "models/sprites/keycarrier-blue.sp2");
-	kh_sprite_blue = kh_controller.modelindex;
-	setmodel(kh_controller, "models/sprites/keycarrier-pink.sp2");
-	kh_sprite_pink = kh_controller.modelindex;
-	setmodel(kh_controller, "models/sprites/keycarrier-yellow.sp2");
-	kh_sprite_yellow = kh_controller.modelindex;
-	setmodel(kh_controller, "");
 
 	addstat(STAT_KH_KEYS, AS_INT, kh_state);
 

Modified: branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/keyhunt.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -19,8 +19,8 @@
 void kh_EnableTrackingDevice();
 void kh_init();
 void kh_finalize();
-float kh_KeyCarrier_waypointsprite_for_player(entity e);
-float kh_Key_waypointsprite_for_player(entity e);
+float kh_KeyCarrier_waypointsprite_visible_for_player(entity e);
+float kh_Key_waypointsprite_visible_for_player(entity e);
 void kh_setstatus();
 float kh_HandleFrags(entity attacker, entity targ, float f);
 float kh_Key_AllOwnedByWhichTeam();

Modified: branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -470,7 +470,7 @@
   0:  sends the request
   >0: receives a cvar from name=argv(f) value=argv(f+1)
 */
-void GetCvars_handleString(float f, .string field, string name)
+void GetCvars_handleString(string thisname, float f, .string field, string name)
 {
 	if(f < 0)
 	{
@@ -479,7 +479,7 @@
 	}
 	else if(f > 0)
 	{
-		if(argv(f) == name)
+		if(thisname == name)
 		{
 			if(self.field)
 				strunzone(self.field);
@@ -489,11 +489,11 @@
 	else
 		stuffcmd(self, strcat("sendcvar ", name, "\n"));
 }
-void GetCvars_handleString_Fixup(float f, .string field, string name, string(string) func)
+void GetCvars_handleString_Fixup(string thisname, float f, .string field, string name, string(string) func)
 {
-	GetCvars_handleString(f, field, name);
+	GetCvars_handleString(thisname, f, field, name);
 	if(f >= 0) // also initialize to the fitting value for "" when sending cvars out
-	if(argv(f) == name)
+	if(thisname == name)
 	{
 		string s;
 		s = func(strcat1(self.field));
@@ -504,14 +504,14 @@
 		}
 	}
 }
-void GetCvars_handleFloat(float f, .float field, string name)
+void GetCvars_handleFloat(string thisname, float f, .float field, string name)
 {
 	if(f < 0)
 	{
 	}
 	else if(f > 0)
 	{
-		if(argv(f) == name)
+		if(thisname == name)
 			self.field = stof(argv(f + 1));
 	}
 	else
@@ -519,27 +519,38 @@
 }
 string W_FixWeaponOrder_ForceComplete(string s);
 string W_FixWeaponOrder_AllowIncomplete(string s);
+float w_getbestweapon(entity e);
 void GetCvars(float f)
 {
-	GetCvars_handleFloat(f, autoswitch, "cl_autoswitch");
-	GetCvars_handleFloat(f, cvar_cl_hidewaypoints, "cl_hidewaypoints");
-	GetCvars_handleFloat(f, cvar_cl_playerdetailreduction, "cl_playerdetailreduction");
-	GetCvars_handleFloat(f, cvar_cl_nogibs, "cl_nogibs");
-	GetCvars_handleFloat(f, cvar_scr_centertime, "scr_centertime");
-	GetCvars_handleFloat(f, cvar_cl_shownames, "cl_shownames");
-	GetCvars_handleString(f, cvar_g_nexuizversion, "g_nexuizversion");
-	GetCvars_handleFloat(f, cvar_cl_handicap, "cl_handicap");
-	GetCvars_handleString_Fixup(f, cvar_cl_weaponpriority, "cl_weaponpriority", W_FixWeaponOrder_ForceComplete);
-	GetCvars_handleString_Fixup(f, cvar_cl_weaponpriorities[0], "cl_weaponpriority0", W_FixWeaponOrder_AllowIncomplete);
-	GetCvars_handleString_Fixup(f, cvar_cl_weaponpriorities[1], "cl_weaponpriority1", W_FixWeaponOrder_AllowIncomplete);
-	GetCvars_handleString_Fixup(f, cvar_cl_weaponpriorities[2], "cl_weaponpriority2", W_FixWeaponOrder_AllowIncomplete);
-	GetCvars_handleString_Fixup(f, cvar_cl_weaponpriorities[3], "cl_weaponpriority3", W_FixWeaponOrder_AllowIncomplete);
-	GetCvars_handleString_Fixup(f, cvar_cl_weaponpriorities[4], "cl_weaponpriority4", W_FixWeaponOrder_AllowIncomplete);
-	GetCvars_handleString_Fixup(f, cvar_cl_weaponpriorities[5], "cl_weaponpriority5", W_FixWeaponOrder_AllowIncomplete);
-	GetCvars_handleString_Fixup(f, cvar_cl_weaponpriorities[6], "cl_weaponpriority6", W_FixWeaponOrder_AllowIncomplete);
-	GetCvars_handleString_Fixup(f, cvar_cl_weaponpriorities[7], "cl_weaponpriority7", W_FixWeaponOrder_AllowIncomplete);
-	GetCvars_handleString_Fixup(f, cvar_cl_weaponpriorities[8], "cl_weaponpriority8", W_FixWeaponOrder_AllowIncomplete);
-	GetCvars_handleString_Fixup(f, cvar_cl_weaponpriorities[9], "cl_weaponpriority9", W_FixWeaponOrder_AllowIncomplete);
+	string s;
+	if(f > 0)
+		s = strcat1(argv(f));
+	GetCvars_handleFloat(s, f, autoswitch, "cl_autoswitch");
+	GetCvars_handleFloat(s, f, cvar_cl_hidewaypoints, "cl_hidewaypoints");
+	GetCvars_handleFloat(s, f, cvar_cl_playerdetailreduction, "cl_playerdetailreduction");
+	GetCvars_handleFloat(s, f, cvar_cl_nogibs, "cl_nogibs");
+	GetCvars_handleFloat(s, f, cvar_scr_centertime, "scr_centertime");
+	GetCvars_handleFloat(s, f, cvar_cl_shownames, "cl_shownames");
+	GetCvars_handleString(s, f, cvar_g_nexuizversion, "g_nexuizversion");
+	GetCvars_handleFloat(s, f, cvar_cl_handicap, "cl_handicap");
+	GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriority, "cl_weaponpriority", W_FixWeaponOrder_ForceComplete);
+	GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[0], "cl_weaponpriority0", W_FixWeaponOrder_AllowIncomplete);
+	GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[1], "cl_weaponpriority1", W_FixWeaponOrder_AllowIncomplete);
+	GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[2], "cl_weaponpriority2", W_FixWeaponOrder_AllowIncomplete);
+	GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[3], "cl_weaponpriority3", W_FixWeaponOrder_AllowIncomplete);
+	GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[4], "cl_weaponpriority4", W_FixWeaponOrder_AllowIncomplete);
+	GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[5], "cl_weaponpriority5", W_FixWeaponOrder_AllowIncomplete);
+	GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[6], "cl_weaponpriority6", W_FixWeaponOrder_AllowIncomplete);
+	GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[7], "cl_weaponpriority7", W_FixWeaponOrder_AllowIncomplete);
+	GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[8], "cl_weaponpriority8", W_FixWeaponOrder_AllowIncomplete);
+	GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[9], "cl_weaponpriority9", W_FixWeaponOrder_AllowIncomplete);
+
+	// fixup of switchweapon (needed for LMS or when spectating is disabled, as PutClientInServer comes too early)
+	if(f > 0)
+	{
+		if(s == "cl_weaponpriority")
+			self.switchweapon = w_getbestweapon(self);
+	}
 }
 
 float fexists(string f)
@@ -646,8 +657,6 @@
 	centerprint_atprio(e, CENTERPRIO_NORMAL, s);
 }
 
-void VoteNag();
-
 // decolorizes and team colors the player name when needed
 string playername(entity p)
 {
@@ -1200,6 +1209,7 @@
 #define INITPRIO_FIRST              0
 #define INITPRIO_GAMETYPE           0
 #define INITPRIO_GAMETYPE_FALLBACK  1
+#define INITPRIO_CVARS              5
 #define INITPRIO_FINDTARGET        10
 #define INITPRIO_SETLOCATION       90
 #define INITPRIO_LINKDOORS         91
@@ -1268,6 +1278,24 @@
 	initialize_entity_first = world;
 }
 
+.float uncustomizeentityforclient_set;
+.void(void) uncustomizeentityforclient;
+void(void) SUB_Nullpointer = #0;
+void UncustomizeEntitiesRun()
+{
+	entity oldself;
+	oldself = self;
+	for(self = world; (self = findfloat(self, uncustomizeentityforclient_set, 1)); )
+		self.uncustomizeentityforclient();
+	self = oldself;
+}
+void SetCustomizer(entity e, float(void) customizer, void(void) uncustomizer)
+{
+	e.customizeentityforclient = customizer;
+	e.uncustomizeentityforclient = uncustomizer;
+	e.uncustomizeentityforclient_set = (uncustomizer != SUB_Nullpointer);
+}
+
 .float nottargeted;
 #define IFTARGETED if(!self.nottargeted && self.targetname != "")
 
@@ -1443,3 +1471,11 @@
 	self.use = assault_destructible_use;	// shared use function, b/c they woudl do the same thing anyways
 	self.event_damage = func_breakable_damage;
 }
+
+void Net_LinkEntity(entity e)
+{
+	e.model = "net_entity";
+	e.modelindex = 1;
+	e.effects = EF_NODEPTHTEST | EF_LOWPRECISION;
+}
+

Modified: branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/mode_onslaught.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -9,10 +9,12 @@
 .float isshielded;
 .float lasthealth;
 
+#ifdef YOU_HAVE_FIXED_ONSLAUGHT_WAYPOINTS
 float ons_sprite_cp_red, ons_sprite_cp_blue, ons_sprite_cp_neut;
 float ons_sprite_cp_atck_red, ons_sprite_cp_atck_blue, ons_sprite_cp_atck_neut;
 float ons_sprite_cp_dfnd_red, ons_sprite_cp_dfnd_blue;
 float ons_sprite_gen_red, ons_sprite_gen_blue, ons_sprite_gen_shielded;
+#endif
 
 void onslaught_updatelinks()
 {
@@ -422,6 +424,7 @@
 	self.nextthink = time;
 };
 
+#ifdef YOU_HAVE_FIXED_ONSLAUGHT_WAYPOINTS
 float onslaught_generator_waypointsprite_for_player(entity e)
 {
 	if(e.classname == "player")
@@ -484,6 +487,7 @@
 	}
 	return 0;
 }
+#endif
 
 /*QUAKED spawnfunc_onslaught_generator (0 .5 .8) (-32 -32 -24) (32 32 64)
 Base generator.
@@ -502,6 +506,7 @@
 		return;
 	}
 
+#ifdef YOU_HAVE_FIXED_ONSLAUGHT_WAYPOINTS
 	if(!ons_sprite_cp_blue)
 	{
 		precache_model("models/sprites/ons-cp-blue.sp2");
@@ -538,6 +543,7 @@
 		setmodel(self, "models/sprites/ons-gen-shielded.sp2");
 		ons_sprite_gen_shielded = self.modelindex;
 	}
+#endif
 
 	local entity e;
 	precache_model("models/onslaught/generator.md3");
@@ -575,8 +581,10 @@
 	self.think = onslaught_generator_delayed;
 	self.nextthink = time + 0.2;
 
+#ifdef YOU_HAVE_FIXED_ONSLAUGHT_WAYPOINTS
 	WaypointSprite_SpawnFixed(string_null, e.origin + '0 0 1' * e.maxs_z, self, sprite);
 	self.sprite.waypointsprite_for_player = onslaught_generator_waypointsprite_for_player;
+#endif
 };
 
 void onslaught_generator_reset()
@@ -774,8 +782,10 @@
 
 	waypoint_spawnforitem(self);
 
+#ifdef YOU_HAVE_FIXED_ONSLAUGHT_WAYPOINTS
 	WaypointSprite_SpawnFixed(string_null, e.origin + '0 0 1' * e.maxs_z, self, sprite);
 	self.sprite.waypointsprite_for_player = onslaught_controlpoint_waypointsprite_for_player;
+#endif
 };
 
 void onslaught_controlpoint_reset()

Modified: branches/nexuiz-2.0/data/qcsrc/server/portals.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/portals.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/portals.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,4 +1,5 @@
-float portals_must_not_break; // debug code
+#define SAFENUDGE '1 1 1'
+#define SAFERNUDGE '8 8 8'
 
 .vector portal_transform;
 .vector portal_safe_origin;
@@ -86,10 +87,6 @@
 	vector old_yawforward;
 	float planeshift, s, t;
 
-	if(!portals_must_not_break)
-		error("Portal_TeleportPlayer called for unprotected portals");
-	print("Portalling using ", etos(teleporter), " to ", etos(teleporter.enemy), "\n");
-
 	from = teleporter.origin;
 	transform = teleporter.portal_transform;
 
@@ -120,18 +117,19 @@
 
 	safe = teleporter.enemy.portal_safe_origin; // a valid player origin
 	step = to + ((safe - to) * v_forward) * v_forward;
-	tracebox(safe, player.mins - '1 1 1', player.maxs + '1 1 1', step, MOVE_NOMONSTERS, player);
+	tracebox(safe, player.mins - SAFENUDGE, player.maxs + SAFENUDGE, step, MOVE_NOMONSTERS, player);
 	if(trace_startsolid)
 	{
 		print("'safe' teleport location is not safe!\n");
 		// FAIL TODO why does this happen?
 		return 0;
 	}
-	safe = trace_endpos;
-	tracebox(safe, player.mins - '1 1 1', player.maxs + '1 1 1', to, MOVE_NOMONSTERS, player);
+	safe = trace_endpos + normalize(safe - trace_endpos) * 0;
+	tracebox(safe, player.mins - SAFENUDGE, player.maxs + SAFENUDGE, to, MOVE_NOMONSTERS, player);
 	if(trace_startsolid)
 		error("trace_endpos in solid!");
-	to = trace_endpos;
+	to = trace_endpos + normalize(safe - trace_endpos) * 0;
+	//print(vtos(to), "\n");
 
 	// ang_x stuff works around weird quake angles
 	if(player.classname == "player")
@@ -195,13 +193,10 @@
 	player.right_vector = -1 * Portal_Transform_Apply(transform, player.right_vector);
 
 	if(player.flagcarried)
-		DropFlag(player.flagcarried);
+		DropFlag(player.flagcarried, player, world);
 	TeleportPlayer(teleporter, player, to, ang, newvel, teleporter.enemy.absmin, teleporter.enemy.absmax);
 
 	// reset fade counter
-	if(!portals_must_not_break)
-		error("Portal_TeleportPlayer ended with unprotected portals");
-	print("Portalled using ", etos(teleporter), " to ", etos(teleporter.enemy), "\n");
 	teleporter.portal_wants_to_vanish = 0;
 	teleporter.fade_time = time + 15;
 	teleporter.enemy.health = 300;
@@ -213,8 +208,8 @@
 {
 	vector o;
 	o = portal.origin;
-	portal.mins = PL_MIN - '8 8 8';
-	portal.maxs = PL_MAX + '8 8 8';
+	portal.mins = PL_MIN - SAFERNUDGE;
+	portal.maxs = PL_MAX + SAFERNUDGE;
 	fixedmakevectors(portal.angles);
 	portal.origin += 16 * v_forward;
 	if(!move_out_of_solid(portal))
@@ -271,23 +266,15 @@
 		return;
 	}
 
-	print("Portal ID ", etos(self), " verified working.\n");
-	portals_must_not_break = 1;
-
 	if(Portal_TeleportPlayer(self, other))
 		if(other.classname == "porto")
 			if(other.effects & EF_RED)
 				other.effects += EF_BLUE - EF_RED;
-
-	portals_must_not_break = 0;
 }
 
 void Portal_Think();
 void Portal_MakeBrokenPortal(entity portal)
 {
-	if(portals_must_not_break)
-		error("Trying to remove a portal during teleporting");
-
 	portal.solid = SOLID_NOT;
 	portal.touch = SUB_Null;
 	portal.think = SUB_Null;
@@ -385,9 +372,6 @@
 	entity e;
 	e = portal.enemy;
 
-	if(portals_must_not_break)
-		error("Trying to remove a portal during teleporting");
-
 	if(e)
 	{
 		Portal_Disconnect(portal, e);
@@ -404,12 +388,14 @@
 	if(killed)
 	{
 		fixedmakevectors(portal.angles);
+		sound(portal, CHAN_PROJECTILE, "porto/explode.ogg", VOL_BASE, ATTN_NORM);
 		pointparticles(particleeffectnum("rocket_explode"), portal.origin + v_forward * 16, v_forward * 1024, 4);
 		remove(portal);
 	}
 	else
 	{
 		Portal_MakeBrokenPortal(portal);
+		sound(portal, CHAN_PROJECTILE, "porto/expire.ogg", VOL_BASE, ATTN_NORM);
 		SUB_SetFade(portal, time, 0.5);
 	}
 }
@@ -437,12 +423,12 @@
 	if(!self.enemy)
 		error("Portal_Think called for a broken portal\n");
 
-	//print("Portal ID ", etos(self), " verified working.\n");
-	portals_must_not_break = 1;
-
 	o = self.owner;
 	self.solid = SOLID_BBOX;
 	self.owner = world;
+
+	fixedmakevectors(self.angles);
+
 	FOR_EACH_PLAYER(e)
 	{
 		if(time < self.portal_activatetime)
@@ -451,6 +437,9 @@
 		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);
@@ -460,8 +449,6 @@
 	self.solid = SOLID_TRIGGER;
 	self.owner = o;
 
-	portals_must_not_break = 0;
-
 	self.nextthink = time;
 
 	if(time > self.fade_time)

Modified: branches/nexuiz-2.0/data/qcsrc/server/progs.src
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/progs.src	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/progs.src	2008-10-03 18:32:25 UTC (rev 4619)
@@ -13,11 +13,10 @@
 
 campaign.qh
 ../common/campaign_common.qh
+../common/mapinfo.qh
 ../common/util.qh
 ../common/util.qc
 
-../common/mapinfo.qh
-
 portals.qh
 
 scores.qh

Modified: branches/nexuiz-2.0/data/qcsrc/server/race.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/race.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/race.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -12,7 +12,6 @@
 entity race_checkpoint_lastplayers[MAX_CHECKPOINTS];
 
 float race_highest_checkpoint;
-float race_highest_place_spawn;
 
 float race_NextCheckpoint(float f)
 {
@@ -79,6 +78,8 @@
 void race_SendTime(entity e, float cp, float t, float tvalid)
 {
 	float snew, l;
+	entity p;
+
 	t = floor(0.5 + 10 * t); // make integer
 
 	if(tvalid)
@@ -101,7 +102,12 @@
 
 			if(cvar("fraglimit"))
 				if(l >= cvar("fraglimit"))
+				{
 					race_completing = 1;
+					FOR_EACH_PLAYER(p)
+						if(p.deadflag != DEAD_NO)
+							race_AbandonRaceCheck(p);
+				}
 
 			if(race_completing)
 			{
@@ -175,7 +181,6 @@
 
 				if(g_race_qualifying)
 				{
-					entity p;
 					FOR_EACH_REALPLAYER(p)
 						if(p.race_checkpoint == cp)
 							race_SendNextCheckpoint(p, 0);
@@ -193,7 +198,7 @@
 		msg_entity = e;
 		if(g_race_qualifying)
 		{
-			WRITESPECTATABLE_MSG_ONE({
+			WRITESPECTATABLE_MSG_ONE_VARNAME(dummy1, {
 				WriteByte(MSG_ONE, SVC_TEMPENTITY);
 				WriteByte(MSG_ONE, TE_CSQC_RACE);
 				WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_HIT_QUALIFYING);
@@ -219,7 +224,7 @@
 			lself = lother = othtime = 0;
 
 		msg_entity = e;
-		WRITESPECTATABLE_MSG_ONE({
+		WRITESPECTATABLE_MSG_ONE_VARNAME(dummy2, {
 			WriteByte(MSG_ONE, SVC_TEMPENTITY);
 			WriteByte(MSG_ONE, TE_CSQC_RACE);
 			WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_HIT_RACE);
@@ -243,7 +248,7 @@
 		race_checkpoint_lastlaps[cp] = lself;
 
 		msg_entity = oth;
-		WRITESPECTATABLE_MSG_ONE({
+		WRITESPECTATABLE_MSG_ONE_VARNAME(dummy3, {
 			WriteByte(MSG_ONE, SVC_TEMPENTITY);
 			WriteByte(MSG_ONE, TE_CSQC_RACE);
 			WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_HIT_RACE_BY_OPPONENT);
@@ -301,13 +306,11 @@
 	}
 }
 
-void checkpoint_touch()
+void checkpoint_passed()
 {
 	string oldmsg;
 	entity oldself;
 
-	EXACTTRIGGER_TOUCH;
-
 	if(other.classname == "porto")
 	{
 		// do not allow portalling through checkpoints
@@ -381,18 +384,24 @@
 	}
 }
 
+void checkpoint_touch()
+{
+	EXACTTRIGGER_TOUCH;
+	checkpoint_passed();
+}
+
 void checkpoint_use()
 {
 	other = activator;
-	checkpoint_touch();
+	checkpoint_passed();
 }
 
-float race_waypointsprite_for_player(entity e)
+float race_waypointsprite_visible_for_player(entity e)
 {
 	if(e.race_checkpoint == -1)
-		return self.modelindex;
+		return TRUE;
 	else if(e.race_checkpoint == self.owner.race_checkpoint)
-		return self.modelindex;
+		return TRUE;
 	else
 		return FALSE;
 }
@@ -427,17 +436,34 @@
 
 	if(self.race_checkpoint)
 	{
-		precache_model("models/sprites/race-checkpoint.sp2");
 		WaypointSprite_SpawnFixed("race-checkpoint", o, self, sprite);
 	}
 	else
 	{
-		precache_model("models/sprites/race-finish.sp2");
 		WaypointSprite_SpawnFixed("race-finish", o, self, sprite);
 	}
-	self.sprite.waypointsprite_for_player = race_waypointsprite_for_player;
+	self.sprite.waypointsprite_visible_for_player = race_waypointsprite_visible_for_player;
 }
 
+void race_AbandonRaceCheck(entity p)
+{
+	if(race_completing && !p.race_completed)
+	{
+		p.race_completed = 1;
+		MAKE_INDEPENDENT_PLAYER(p);
+		bprint(p.netname, "^7 has abandoned the race.\n");
+		// TODO support spectators with this (e.g. set a flag for forced sbar)
+		if(clienttype(p) == CLIENTTYPE_REAL)
+		{
+			msg_entity = p;
+			WriteByte(MSG_ONE, SVC_TEMPENTITY);
+			WriteByte(MSG_ONE, TE_CSQC_FORCESCOREBOARD);
+			WriteByte(MSG_ONE, 1);
+			// he can still move, but will see the scoreboard now
+		}
+	}
+}
+
 void race_PreparePlayer()
 {
 	race_ClearTime(self);
@@ -456,6 +482,14 @@
 	}
 }
 
+void race_PreDie()
+{
+	if(!g_race)
+		return;
+
+	race_AbandonRaceCheck(self);
+}
+
 void race_PreSpawn()
 {
 	if(!g_race)
@@ -463,21 +497,7 @@
 	if(self.killcount == -666 || g_race_qualifying)
 		race_PreparePlayer();
 
-	if(race_completing)
-	{
-		self.race_completed = 1;
-		MAKE_INDEPENDENT_PLAYER(self);
-		bprint(self.netname, "^7 has abandoned the race.\n");
-		// TODO support spectators with this (e.g. set a flag for forced sbar)
-		if(clienttype(self) == CLIENTTYPE_REAL)
-		{
-			msg_entity = self;
-			WriteByte(MSG_ONE, SVC_TEMPENTITY);
-			WriteByte(MSG_ONE, TE_CSQC_FORCESCOREBOARD);
-			WriteByte(MSG_ONE, 1);
-			// he can still move, but will see the scoreboard now
-		}
-	}
+	race_AbandonRaceCheck(self);
 }
 
 void race_PostSpawn(entity spot)
@@ -518,6 +538,8 @@
 
 	if(self.race_place > race_highest_place_spawn)
 		race_highest_place_spawn = self.race_place;
+	if(self.race_place < race_lowest_place_spawn)
+		race_lowest_place_spawn = self.race_place;
 }
 
 void race_ClearRecords()

Modified: branches/nexuiz-2.0/data/qcsrc/server/race.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/race.qh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/race.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -2,12 +2,15 @@
 void race_PreSpawnObserver();
 void race_PreSpawn();
 void race_PostSpawn(entity spot);
+void race_PreDie();
 void race_ReadyRestart();
 float race_teams;
 float race_spawns;
 float race_PreviousCheckpoint(float f);
 float race_NextCheckpoint(float f);
-float race_highest_place_spawn;
+void race_AbandonRaceCheck(entity p);
+float race_highest_place_spawn; // number of places; a place higher gets spawned at 0
+float race_lowest_place_spawn; // where to spawn in qualifying
 float race_fraglimit;
 .float race_place;
 .float race_completed;

Modified: branches/nexuiz-2.0/data/qcsrc/server/scores.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/scores.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/scores.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -10,13 +10,6 @@
 float scores_flags_primary;
 float teamscores_flags_primary;
 
-void Net_LinkEntity(entity e)
-{
-	e.model = "net_entity";
-	e.modelindex = 1;
-	e.effects = EF_NODEPTHTEST | EF_LOWPRECISION;
-}
-
 vector ScoreField_Compare(entity t1, entity t2, .float field, float fieldflags, vector previous) // returns: cmp value, best prio
 {
 	if(!(fieldflags & SFL_SORT_PRIO_MASK)) // column does not sort
@@ -363,14 +356,30 @@
 		WinningConditionHelper_topscore = teamscorekeepers[WinningConditionHelper_winnerteam].teamscores_primary;
 		WinningConditionHelper_lowerisbetter = (teamscores_flags_primary & SFL_LOWER_IS_BETTER);
 		WinningConditionHelper_zeroisworst = (teamscores_flags_primary & SFL_ZERO_IS_WORST);
+
 		if(teamscores_flags_primary & SFL_TIME)
 			WinningConditionHelper_topscore /= 10;
 
+		if(WinningConditionHelper_equality)
+			WinningConditionHelper_winnerteam = -1;
+
 		WinningConditionHelper_winner = world;
 		if(WinningConditionHelper_equality)
 			WinningConditionHelper_winnerteam = -1;
 		else
 			++WinningConditionHelper_winnerteam; // map to Nexuiz team numbers (as opposed to colors)
+
+		if(WinningConditionHelper_topscore == 0)
+		{
+			if(scores_flags_primary & SFL_ZERO_IS_WORST)
+			{
+				if(WinningConditionHelper_lowerisbetter)
+					WinningConditionHelper_topscore = 999999999;
+				else
+					WinningConditionHelper_topscore = -999999999;
+			}
+			WinningConditionHelper_equality = 0;
+		}
 	}
 	else
 	{
@@ -390,20 +399,26 @@
 
 		WinningConditionHelper_topscore = WinningConditionHelper_winner.scorekeeper.scores_primary;
 		WinningConditionHelper_lowerisbetter = (scores_flags_primary & SFL_LOWER_IS_BETTER);
-		if(scores_flags_primary & SFL_ZERO_IS_WORST)
-			if(WinningConditionHelper_topscore == 0)
+		WinningConditionHelper_zeroisworst = (teamscores_flags_primary & SFL_ZERO_IS_WORST);
+
+		if(teamscores_flags_primary & SFL_TIME)
+			WinningConditionHelper_topscore /= 10;
+
+		WinningConditionHelper_winnerteam = -1;
+		if(WinningConditionHelper_equality)
+			WinningConditionHelper_winner = world;
+
+		if(WinningConditionHelper_topscore == 0)
+		{
+			if(scores_flags_primary & SFL_ZERO_IS_WORST)
 			{
 				if(WinningConditionHelper_lowerisbetter)
 					WinningConditionHelper_topscore = 999999999;
 				else
 					WinningConditionHelper_topscore = -999999999;
 			}
-		if(teamscores_flags_primary & SFL_TIME)
-			WinningConditionHelper_topscore /= 10;
-
-		if(WinningConditionHelper_equality)
-			WinningConditionHelper_winner = world;
-		WinningConditionHelper_winnerteam = -1;
+			WinningConditionHelper_equality = 0;
+		}
 	}
 
 	if(worldstatus)

Modified: branches/nexuiz-2.0/data/qcsrc/server/scores_rules.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/scores_rules.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/scores_rules.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -4,7 +4,7 @@
 // NOTE: SP_ constants may not be >= MAX_SCORE; ST_constants may not be >= MAX_TEAMSCORE
 // scores that should be in all modes:
 float ScoreRules_teams;
-void ScoreRules_basics(float teams, float sprio)
+void ScoreRules_basics(float teams, float sprio, float score_enabled)
 {
 	float i;
 	for(i = 0; i < MAX_SCORE; ++i)
@@ -14,7 +14,7 @@
 
 	ScoreRules_teams = teams;
 
-	if(sprio)
+	if(score_enabled)
 		ScoreInfo_SetLabel_TeamScore  (ST_SCORE,        "score",     sprio);
 
 	if not(independent_players)
@@ -25,7 +25,7 @@
 	if not(independent_players)
 		ScoreInfo_SetLabel_PlayerScore(SP_SUICIDES,     "suicides",  SFL_LOWER_IS_BETTER);
 
-	if(sprio)
+	if(score_enabled)
 		ScoreInfo_SetLabel_PlayerScore(SP_SCORE,        "score",     sprio);
 }
 void ScoreRules_basics_end()
@@ -38,10 +38,10 @@
 	if(teamplay)
 	{
 		CheckAllowedTeams(world);
-		ScoreRules_basics(((c4>=0) ? 4 : (c3>=0) ? 3 : 2), SFL_SORT_PRIO_PRIMARY);
+		ScoreRules_basics(((c4>=0) ? 4 : (c3>=0) ? 3 : 2), SFL_SORT_PRIO_PRIMARY, TRUE);
 	}
 	else
-		ScoreRules_basics(0, SFL_SORT_PRIO_PRIMARY);
+		ScoreRules_basics(0, SFL_SORT_PRIO_PRIMARY, TRUE);
 	ScoreRules_basics_end();
 }
 
@@ -49,8 +49,9 @@
 #define ST_CTF_CAPS 1
 #define SP_CTF_CAPS 4
 #define SP_CTF_PICKUPS 5
-#define SP_CTF_FCKILLS 6
-#define SP_CTF_RETURNS 7
+#define SP_CTF_DROPS 6
+#define SP_CTF_FCKILLS 7
+#define SP_CTF_RETURNS 8
 void ScoreRules_ctf()
 {
 	float sp_score, sp_caps;
@@ -65,6 +66,7 @@
 			sp_score = SFL_SORT_PRIO_SECONDARY;
 			break;
 		case 2: // score only
+		case 3: // score only, no frags
 		default:
 			sp_score = SFL_SORT_PRIO_PRIMARY;
 			sp_caps = SFL_SORT_PRIO_SECONDARY; // looks better ;)
@@ -72,12 +74,13 @@
 	}
 
 	CheckAllowedTeams(world);
-	ScoreRules_basics(2 + (c3>=0), sp_score); // NOTE this assumes that the rogue team is team 3
+	ScoreRules_basics(2 + (c3>=0), sp_score, TRUE); // NOTE this assumes that the rogue team is team 3
 	ScoreInfo_SetLabel_TeamScore  (ST_CTF_CAPS,     "caps",      sp_caps);
 	ScoreInfo_SetLabel_PlayerScore(SP_CTF_CAPS,     "caps",      sp_caps);
 	ScoreInfo_SetLabel_PlayerScore(SP_CTF_PICKUPS,  "pickups",   0);
 	ScoreInfo_SetLabel_PlayerScore(SP_CTF_FCKILLS,  "fckills",   0);
 	ScoreInfo_SetLabel_PlayerScore(SP_CTF_RETURNS,  "returns",   0);
+	ScoreInfo_SetLabel_PlayerScore(SP_CTF_DROPS,    "drops",     SFL_LOWER_IS_BETTER);
 	ScoreRules_basics_end();
 }
 
@@ -94,7 +97,7 @@
 	else
 		sp_score = SFL_SORT_PRIO_PRIMARY;
 	CheckAllowedTeams(world);
-	ScoreRules_basics(((c4>=0) ? 4 : (c3>=0) ? 3 : 2), sp_score);
+	ScoreRules_basics(((c4>=0) ? 4 : (c3>=0) ? 3 : 2), sp_score, TRUE);
 	ScoreInfo_SetLabel_TeamScore  (ST_DOM_TICKS,    "ticks",     sp_domticks);
 	ScoreInfo_SetLabel_PlayerScore(SP_DOM_TICKS,    "ticks",     sp_domticks);
 	ScoreInfo_SetLabel_PlayerScore(SP_DOM_TAKES,    "takes",     0);
@@ -106,7 +109,7 @@
 #define SP_LMS_RANK 5
 void ScoreRules_lms()
 {
-	ScoreRules_basics(0, 0);
+	ScoreRules_basics(0, 0, FALSE);
 	ScoreInfo_SetLabel_PlayerScore(SP_LMS_LIVES,    "lives",     SFL_SORT_PRIO_SECONDARY);
 	ScoreInfo_SetLabel_PlayerScore(SP_LMS_RANK,     "rank",      SFL_LOWER_IS_BETTER | SFL_RANK | SFL_SORT_PRIO_PRIMARY | SFL_ALLOW_HIDE);
 	ScoreRules_basics_end();
@@ -122,7 +125,7 @@
 #define SP_KH_LOSSES 9
 void ScoreRules_kh(float teams)
 {
-	ScoreRules_basics(teams, SFL_SORT_PRIO_PRIMARY);
+	ScoreRules_basics(teams, SFL_SORT_PRIO_PRIMARY, TRUE);
 	ScoreInfo_SetLabel_TeamScore  (ST_KH_CAPS,      "caps",      SFL_SORT_PRIO_SECONDARY);
 	ScoreInfo_SetLabel_PlayerScore(SP_KH_CAPS,      "caps",      SFL_SORT_PRIO_SECONDARY);
 	ScoreInfo_SetLabel_PlayerScore(SP_KH_PUSHES,    "pushes",    0);
@@ -140,7 +143,7 @@
 #define SP_RACE_TIME 5
 void ScoreRules_race()
 {
-	ScoreRules_basics(race_teams, 0);
+	ScoreRules_basics(race_teams, 0, FALSE);
 	if(race_teams)
 	{
 		ScoreInfo_SetLabel_TeamScore(  ST_RACE_LAPS,    "laps",      SFL_SORT_PRIO_PRIMARY);

Modified: branches/nexuiz-2.0/data/qcsrc/server/sv_main.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/sv_main.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/sv_main.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -98,10 +98,12 @@
 					self.nextstep = time + 0.3 + random() * 0.1;
 					trace_dphitq3surfaceflags = 0;
 					tracebox(self.origin, self.mins, self.maxs, self.origin - '0 0 1', MOVE_NOMONSTERS, self);
+					/*
 					if(trace_fraction == 1)
-						print("nohit\n");
+						dprint("nohit\n");
 					else
-						print(ftos(trace_dphitq3surfaceflags), "\n");
+						dprint(ftos(trace_dphitq3surfaceflags), "\n");
+					*/
 					if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
 					{
 						if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
@@ -136,6 +138,7 @@
 	if(RedirectionThink())
 		return;
 
+	UncustomizeEntitiesRun();
 	InitializeEntitiesRun();
 
 	sv_maxairspeed = cvar("sv_maxairspeed");

Modified: branches/nexuiz-2.0/data/qcsrc/server/t_items.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/t_items.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/t_items.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -270,6 +270,7 @@
 		for(head = world; (head = findfloat(head, team, self.team)); ) if(head.flags & FL_ITEM)
 			RandomSelection_Add(head, 0, 1, 0);
 		e = RandomSelection_chosen_ent;
+		e.cnt = 0;
 
 		for(head = world; (head = findfloat(head, team, self.team)); ) if(head.flags & FL_ITEM)
 		{
@@ -278,6 +279,7 @@
 				// make it a non-spawned item
 				head.solid = SOLID_NOT;
 				head.model = string_null;
+				head.cnt = 1; // cnt 1 = initially hidden item
 			}
 			head.effects = head.effects - (head.effects & EF_NODRAW);
 		}
@@ -596,6 +598,16 @@
 	entity oldself;
 	float i;
 
+	// set the respawntime in advance (so replaced weapons can copy it)
+	if(!self.respawntime)
+	{
+		e = get_weaponinfo(wpn);
+		if(e.items == IT_SUPERWEAPON)
+			self.respawntime = g_pickup_respawntime_powerup;
+		else
+			self.respawntime = g_pickup_respawntime_short;
+	}
+
 	if(self.classname != "droppedweapon" && self.classname != "replacedweapon")
 	{
 		s = cvar_string(strcat("g_weaponreplace_", ftos(wpn)));
@@ -611,11 +623,15 @@
 				self.classname = "replacedweapon";
 				weapon_defaultspawnfunc(stof(argv(i)));
 				self = oldself;
-				print("replaced by ", argv(i), "\n");
 			}
 		}
 		if(t >= 1)
 			wpn = stof(argv(0));
+		if(wpn == 0)
+		{
+			remove(self);
+			return;
+		}
 	}
 
 	e = get_weaponinfo(wpn);
@@ -627,11 +643,7 @@
 			self.ammofield = cvar(strcat("g_pickup_", Item_CounterFieldName(e.items)));
 	}
 
-	t = g_pickup_respawntime_short;
-	if(e.items == IT_SUPERWEAPON)
-		t = g_pickup_respawntime_powerup;
-
-	StartItem(e.model, "weapons/weaponpickup.wav", t, e.message, 0, e.weapons, FL_WEAPON, weapon_pickupevalfunc, e.bot_pickupbasevalue);
+	StartItem(e.model, "weapons/weaponpickup.wav", self.respawntime, e.message, 0, e.weapons, FL_WEAPON, weapon_pickupevalfunc, e.bot_pickupbasevalue);
 	if (self.modelindex) // don't precache if self was removed
 		weapon_action(e.weapon, WR_PRECACHE);
 }
@@ -857,11 +869,23 @@
 // compatibility:
 void spawnfunc_item_quad (void) {self.classname = "item_strength";spawnfunc_item_strength();}
 
+void spawnfunc_misc_gamemodel (void)
+{
+	SetBrushEntityModel();
+}
+
 void spawnfunc_misc_models (void)
 {
+	// exists as alias name for 2.4.2 compat
 	SetBrushEntityModel();
 }
 
+void spawnfunc_func_static (void)
+{
+	// exists as alias name for having it with brushes
+	SetBrushEntityModel();
+}
+
 void func_wall_use (void)
 {
 	if(teams_matter)

Modified: branches/nexuiz-2.0/data/qcsrc/server/t_teleporters.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/t_teleporters.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/t_teleporters.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -18,7 +18,7 @@
 
 	// Relocate the player
 	// assuming to allows PL_MIN to PL_MAX box and some more
-	setorigin (player, to + '0 0 1' * (1 - player.mins_z - 24));
+	setorigin (player, to);
 	player.angles = to_angles;
 	player.fixangle = TRUE;
 	player.velocity = to_velocity;

Modified: branches/nexuiz-2.0/data/qcsrc/server/teamplay.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/teamplay.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/teamplay.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -173,6 +173,16 @@
 	WriteGameCvars();
 
 	MapInfo_LoadMapSettings(mapname);
+	if not(cvar_value_issafe(world.fog))
+	{
+		print("The current map contains a potentially harmful fog setting, ignored\n");
+		world.fog = string_null;
+	}
+	if(MapInfo_Map_fog != "")
+		if(MapInfo_Map_fog == "none")
+			world.fog = string_null;
+		else
+			world.fog = strzone(MapInfo_Map_fog);
 	clientstuff = strzone(MapInfo_Map_clientstuff);
 	MapInfo_ClearTemps();
 
@@ -212,7 +222,7 @@
 		gamemode_name = "Capture the Flag";
 		ActivateTeamplay();
 		g_ctf_win_mode = cvar("g_ctf_win_mode");
-		if(g_ctf_win_mode == 2)
+		if(g_ctf_win_mode >= 2)
 			fraglimit_override = cvar("g_ctf_capture_limit");
 		else
 			fraglimit_override = cvar("capturelimit_override");
@@ -273,7 +283,6 @@
 		game = GAME_ONSLAUGHT;
 		gamemode_name = "Onslaught";
 		ActivateTeamplay();
-		entcs_init();
 	}
 
 	if(g_race)
@@ -306,6 +315,9 @@
 		ScoreRules_race();
 	}
 
+	if(teams_matter)
+		entcs_init();
+
 	// save it (for the next startup)
 	cvar_set("gamecfg", ftos(game));
 
@@ -377,10 +389,15 @@
 		else if (timeoutStatus != 0)
 			specString = strcat(specString, "\n\n", getTimeoutText(1));
 		else
-			return;
+		{
+			if(!self.BUTTON_INFO && self.classname == "player")
+				return;
+			goto normal;
+		}
 		return centerprint_atprio(self, CENTERPRIO_SPAM, specString);
 	}
 
+:normal
 	if(g_minstagib)
 		mutator = "^2Minstagib ^1";
 	else if(g_rocketarena)
@@ -388,13 +405,25 @@
 	else if(g_nixnex)
 		mutator = "^2No Items Nexuiz ^1";
 
-	if(g_midair) {
+	if(g_cloaked) {
 		// to protect against unheedingly made changes
 		if (modifications) {
 			modifications = strcat(modifications, ", ");
 		}
-		modifications = "midair";
+		modifications = "cloaked";
 	}
+	if(g_footsteps) {
+		if (modifications) {
+			modifications = strcat(modifications, ", ");
+		}
+		modifications = strcat(modifications, "footsteps");
+	}
+	if(g_midair) {
+		if (modifications) {
+			modifications = strcat(modifications, ", ");
+		}
+		modifications = strcat(modifications, "midair");
+	}
 	if(g_vampire) {
 		if (modifications) {
 			modifications = strcat(modifications, ", ");
@@ -405,8 +434,14 @@
 		if (modifications) {
 			modifications = strcat(modifications, ", ");
 		}
-		modifications = strcat(modifications, "laser-guided-missiles");
+		modifications = strcat(modifications, "laser guided missiles");
 	}
+	if(cvar("sv_gravity") < 800) {
+		if (modifications) {
+			modifications = strcat(modifications, ", ");
+		}
+		modifications = strcat(modifications, "low gravity");
+	}
 
 	local string versionmessage;
 	versionmessage = GetClientVersionMessage();
@@ -424,7 +459,7 @@
 		s = strcat(s, "\n\n", getTimeoutText(1));
 
 	if (g_grappling_hook)
-		s = strcat(s, "\n\n^8grappling hook is enabled, press 'e' to use it\n");
+		s = strcat(s, "\n\n^3grappling hook^8 is enabled, press 'e' to use it\n");
 
 	if(cache_lastmutatormsg != cvar_string("g_mutatormsg"))
 	{

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,9 +1,9 @@
 // Comment out below to skip turrets
-//#define TTURRETS_ENABLED
+#define TTURRETS_ENABLED
 
 #ifdef TTURRETS_ENABLED
 
-#message "with tZork turrets rc1"
+#message "with tZork turrets rc2"
 
 vector real_origin(entity ent);
 
@@ -37,6 +37,8 @@
 #define TFL_AIM_NO                  512
 /// Go for ground, not direct hit
 #define TFL_AIM_GROUND              2
+/// Go for ground, not direct hit if target is on ground too
+#define TFL_AIM_GROUND2              1024
 /// Use balistic aim (not implemented)
 #define TFL_AIM_BALISTIC            4
 /// Try to predict target movement
@@ -102,7 +104,7 @@
 #define TFL_FIRECHECK_OWM_AMMO   1024
 /// Others ammo need to be < others .ammo_max
 #define TFL_FIRECHECK_OTHER_AMMO 2048
-/// Check own .attack_finished vs time
+/// Check own .attack_finished_single vs time
 #define TFL_FIRECHECK_REFIRE     4096
 
 /// How shooting is done
@@ -168,7 +170,7 @@
 #define  TFL_AMMO_ROCKETS  8
 /// Regenerates ammo on its own
 #define  TFL_AMMO_RECHARGE 16
- /// Can recive ammo from others
+/// Can recive ammo from others
 #define  TFL_AMMO_RECIVE   32
 
 /// How incomming damage is handeld
@@ -231,15 +233,13 @@
 .float      tur_dist_toaimpos;
 /// Decresment counter form .shot_volly to 0.
 .float      volly_counter;
-/// Pointer to master when in slave mode
-.entity     emaster;            // A slave?
 
 /*
 * Projectile/missile. its up to the individual turret implementation to
 ** deal the damage, blow upp the missile or whatever.
 */
 /// Track then refireing is possible
-.float attack_finished;
+//.float attack_finished; = attack_finished_single
 /// Shoot this often
 .float shot_refire;
 /// Shots travel this fast, when appliable
@@ -288,7 +288,7 @@
 /// Maximum offset between impact and aim spot to fire
 .float aim_firetolerance_dist;
 /// Maximum angular offset between head and aimspot to fire
-.float aim_firetolerance_angle;
+//.float aim_firetolerance_angle;
 /// How fast can i rotate/pitch (per second in stepmotor mode, base force in smooth modes)
 .float aim_speed;
 /// cant aim higher/lower then this
@@ -304,16 +304,7 @@
 /// Max amount of ammo i can hold
 .float ammo_max;
 
-// Am i enslaved?
-// Slave turrets always target the same target as their master.
-// However; Depending on their individual capabiliteis, they may not fire at the same time
-// or at all. (slaves ranges, rotaion limits, ammo etc still apply)
 
-/// Set to another turrets .master_nameof to enslave me
-.string master_name;
-/// Set another turrets .master_name to this to enslave it
-.string master_nameof;
-
 // Uncomment below to enable various debug output.
 //#define TURRET_DEBUG
 //#define TURRET_DEBUG_TARGETVALIDATE
@@ -348,29 +339,43 @@
 /// Add a target
 .float(entity e_target,entity e_sender) turret_addtarget;
 
-.float call_diehook;
-.float call_respwnhook;
+//.float call_diehook;
+//.float call_respwnhook;
 .void() turret_diehook;
 .void() turret_respawnhook;
 
 /*
+#define TEH_THINK 2
+#define TEH_DAMAGE 4
+#define TEH_DIE 8
+#define TEH_RESPAWN 16
+#define TEH_TRACK 32
+#define TEH_AIM 64
+#define TEH_SELECT 128
+.float(float event_id) turret_eventhook;
+*/
+
+/*
 * Some turrets need other aimsystems then other.
 * This should return the place to aim at, not acctualy turn or
 * pitch anyting.
 *
-* use turret_stdproc_aim# or Make your own.
+* use turret_stdproc_aim* or Make your own.
 * Make sure you update tur_enemy_dist and tur_enemy_adist
 * with the apropriate info, if you do.
+
+removed.
 */
 /// function used to aim, usualy turret_stdproc_aim_generic
-.vector() turret_aim;
+//.vector() turret_aim;
 
 /*
 * This is where the acctual turret turning should take place
 * Use turret_stdproc_track or make your own.
+wkacked to save mem.
 */
-/// Function used to turn and pitch the .tur_head usualy turret_stdproc_track
-.void() turret_track;
+// Function used to turn and pitch the .tur_head usualy turret_stdproc_track
+//.void() turret_track;
 
 /*
 * Target selection, preferably but not nessesarely
@@ -383,12 +388,13 @@
 * Damage, death and respawn.
 */
 void turret_gibs_precash();
-/// Function to handle incomming damage. usualy turret_stdproc_damage
-.void(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector vforce) turret_damagefunc;
-/// Function to handle the event of death. usualy turret_stdproc_die
-.void() turret_diefunc;
- /// Function that handles rebirth. usualy turret_stdproc_respawn
-.void() turret_spawnfunc;
+// generalized so save mem (on fields)
+// Function to handle incomming damage. usualy turret_stdproc_damage
+//.void(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector vforce) turret_damagefunc;
+// Function to handle the event of death. usualy turret_stdproc_die
+//.void() turret_diefunc;
+// Function that handles rebirth. usualy turret_stdproc_respawn
+//.void() turret_spawnfunc;
 
 /*
 * Stuff to plug into requierd but unused callbacks.
@@ -421,8 +427,8 @@
 */
 /// Generic aimer guided by self.aim_flags
 vector turret_stdproc_aim_generic()
-/// Straight line, current location
-vector  turret_stdproc_aim_simple()
+// Straight line, current location
+//vector  turret_stdproc_aim_simple()
 
 /*
 * Turret turning & pitch

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_aimprocs.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_aimprocs.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_aimprocs.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -60,7 +60,7 @@
         if (self.aim_flags & TFL_AIM_SHOTTIMECOMPENSATE)       // Need to conpensate for shot traveltime
             pre_pos += self.enemy.velocity * (self.tur_dist_enemy / self.shot_speed);
         else if (self.turrcaps_flags & TFL_TURRCAPS_HITSCAN)   // Hitscan gun, conpensate for frametime and posibly refire offset.
-            pre_pos += self.enemy.velocity * (frametime + min(max(self.attack_finished - time,0),self.ticrate*2));
+            pre_pos += self.enemy.velocity * (frametime + min(max(self.attack_finished_single - time,0),self.ticrate*2));
         else                                                   // No lead
             pre_pos += self.enemy.velocity;
 
@@ -81,7 +81,8 @@
 
 
     // This turret should hit the ground neer a target rather the do a direct hit
-    if (self.aim_flags & TFL_AIM_GROUND)
+    if ( (self.aim_flags & TFL_AIM_GROUND) ||
+         ((self.aim_flags & TFL_AIM_GROUND2) && (self.enemy.flags & FL_ONGROUND)) )
     {
         traceline(pre_pos + '0 0 512',pre_pos - '0 0 2048',1,self.enemy);
         pre_pos = trace_endpos;

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_damage.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_damage.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_damage.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -60,7 +60,7 @@
     float i;
     string s;
 
-    for(i=1;i<5;i++)
+    for (i=1;i<5;i++)
     {
         gib = spawn();
         gib.classname = "turret_gib";
@@ -142,7 +142,7 @@
     self.deadflag = DEAD_DEAD;
     self.tur_head.deadflag = self.deadflag;
 
-    sound (self, CHAN_BODY, "weapons/rocket_impact.wav", 1, ATTN_NORM);
+    sound (self, CHAN_PLAYER, "weapons/rocket_impact.wav", 1, ATTN_NORM);
     org2 = self.origin + '0 0 40';
 
 // Explotion grafix
@@ -172,14 +172,16 @@
 
     // base
     makevectors(self.angles);
-    if(random() > 0.5)
+    if (random() > 0.5)
     {
         turret_trowgib(self.origin, '0 0 0','1 1 1',"models/turrets/base-gib2.md3",min(self.respawntime,20),1,1);
         t_dir = (v_up * 700) + (randomvec() * 300);
         turret_trowgib(self.origin, t_dir,'1 1 1',"models/turrets/base-gib3.md3",min(self.respawntime,10),1,1);
         t_dir = (v_up * 700) + (randomvec() * 300);
         turret_trowgib(self.origin, t_dir,'1 1 1',"models/turrets/base-gib4.md3",min(self.respawntime,10),1,1);
-    } else {
+    }
+    else
+    {
         turret_trowgib(self.origin, '0 0 0','1 1 1',"models/turrets/base-gib1.md3",min(self.respawntime,20),1,1);
     }
 
@@ -191,15 +193,15 @@
 
 
 // Go boom
-    RadiusDamage (self,self, min(self.ammo,50),min(self.ammo,50) * 0.25,250,world,min(self.ammo,50)*5,IT_ROCKET_LAUNCHER);
+    RadiusDamage (self,self, min(self.ammo,50),min(self.ammo,50) * 0.25,250,world,min(self.ammo,50)*5,0);
 
 // Setup respawn
     self.nextthink      = time + self.respawntime;
-    self.think          = self.turret_spawnfunc;
+    //self.think          = self.turret_spawnfunc;
+    self.think          = turret_stdproc_respawn;
 
-    if(self.call_diehook)
+    if (self.turret_diehook)
         self.turret_diehook();
-
 }
 
 void turret_stdproc_respawn()
@@ -238,7 +240,7 @@
     self.nextthink  = time + self.ticrate;
     self.think      = turret_think;
 
-    if(self.call_respwnhook)
+    if (self.turret_respawnhook)
         self.turret_respawnhook();
 
 }
@@ -248,14 +250,14 @@
 */
 void turret_stdproc_damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector vforce)
 {
-    entity baseent;
+    entity baseent,oldself;
     // entity player;
 
     if (self.health <= 0) return;
 
     // Damage func is shared on all parts as standard, we need to know what the master entity of this turret is.
     // if ((self.classname == "turret_head")||(self.classname == "turret_gun")||(self.classname == "turret_badge"))
-    if(self.owner)
+    if (self.owner)
         baseent = self.owner;
     else
         baseent = self;
@@ -265,12 +267,15 @@
         if (self.team == attacker.team)
         {
             sprint(attacker,"Turret: Im on your team!\n");
-        } else {
-			/*
+            return;
+        }
+        else
+        {
+            /*
             // This will get enoying fast...
-			FOR_EACH_PLAYER(player)
-				if(player.team == self.team)
-					sprint(player, "The enemy is attacking your base!");
+            FOR_EACH_PLAYER(player)
+            	if(player.team == self.team)
+            		sprint(player, "The enemy is attacking your base!");
 
             */
         }
@@ -280,14 +285,14 @@
     baseent.health = baseent.health - damage;
 
     // thorw head slightly off aim when hit?
-    if((self.classname == "turret_head") || (self.classname == "turret_gun"))
-    if(self.damage_flags & TFL_DMG_HEADSHAKE)
-    {
-        // makevectors(baseent.tur_head.v_angle);
-         baseent.tur_head.angles = baseent.tur_head.angles + randomvec() * damage;
-    }
+    if ((self.classname == "turret_head") || (self.classname == "turret_gun"))
+        if (self.damage_flags & TFL_DMG_HEADSHAKE)
+        {
+            // makevectors(baseent.tur_head.v_angle);
+            baseent.tur_head.angles = baseent.tur_head.angles + randomvec() * damage;
+        }
 
-    if(self.turrcaps_flags & TFL_TURRCAPS_MOVE)
+    if (self.turrcaps_flags & TFL_TURRCAPS_MOVE)
     {
         self.velocity = self.velocity + vforce;
     }
@@ -299,8 +304,12 @@
 
     if (self.health <= 0)
     {
+        oldself = self;
         self = baseent;
-        baseent.turret_diefunc();
+        turret_stdproc_die();
+        self = oldself;
+
+        //baseent.turret_diefunc();
     }
 }
 

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_main.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_main.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_main.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,6 +1,6 @@
 #define cvar_base "g_turrets_unit_"
 
-.float tur_lastscore;
+//.float tur_lastscore;
 .string cvar_basename;
 
 string cvar_gets(string s_base,string s_add)
@@ -66,7 +66,7 @@
     ent.ammo_recharge = cvar(cvar_gets(sbase,"_ammo_recharge")) * ent.turret_scale_ammo;
 
     ent.aim_firetolerance_dist = cvar(cvar_gets(sbase,"_aim_firetolerance_dist"));
-    ent.aim_firetolerance_angle = cvar(cvar_gets(sbase,"_aim_firetolerance_angle"));
+//    ent.aim_firetolerance_angle = cvar(cvar_gets(sbase,"_aim_firetolerance_angle"));
     ent.aim_speed = cvar(cvar_gets(sbase,"_aim_speed")) * ent.turret_scale_aim;
     ent.aim_maxrot = cvar(cvar_gets(sbase,"_aim_maxrot"));
     ent.aim_maxpitch = cvar(cvar_gets(sbase,"_aim_maxpitch"));
@@ -143,9 +143,11 @@
 void turret_stdproc_track()
 {
     vector wish_angle;  // This is where we'd need to be
+
     vector real_angle;  // This is where we can go
     float f_tmp;
 
+
     if (self.track_flags == TFL_TRACK_NO)
         return;
 
@@ -158,26 +160,32 @@
     }
     else
     {
+        // Find the direction
         if (self.turrcaps_flags & TFL_TURRCAPS_LINKED)
-            wish_angle = normalize(self.tur_aimpos - self.origin); // Find the direction
+            wish_angle = normalize(self.tur_aimpos - self.origin);
         else
-            wish_angle = normalize(self.tur_aimpos - self.tur_head.origin); // Find the direction
+            wish_angle = normalize(self.tur_aimpos - self.tur_head.origin);
 
-        wish_angle = vectoangles(wish_angle);                           // And make a angle
+        wish_angle = vectoangles(wish_angle); // And make a angle
     }
 
     // Find the diffrence between where we currently aim and where we want to aim
     if (self.turrcaps_flags & TFL_TURRCAPS_LINKED)
-        real_angle = wish_angle - (self.tur_head.angles + self.angles);
+        real_angle = wish_angle - (self.angles + self.tur_head.angles);
     else
-        real_angle = wish_angle - self.tur_head.angles;
+    {
+        //if(vlen(wish_angle - self.tur_head.angles) > vlen(self.tur_head.angles - wish_angle))
+            real_angle = wish_angle - self.tur_head.angles;
+        //else
+        //    real_angle =  self.tur_head.angles - wish_angle;
+    }
 
     // Constrain it within +/- 360
-    if (real_angle_x < 0) real_angle_x += 360;
-    if (real_angle_x > 180) real_angle_x -= 360;
+    if (real_angle_x <= 0) real_angle_x += 360;
+    if (real_angle_x >= 180) real_angle_x -= 360;
 
-    if (real_angle_y < 0) real_angle_y += 360;
-    if (real_angle_y > 180) real_angle_y -= 360;
+    //if (real_angle_y <= 0) real_angle_y += 360;
+    if (real_angle_y >= 180) real_angle_y -= 360;
 
 
     if (self.track_type == TFL_TRACKTYPE_STEPMOTOR)
@@ -227,8 +235,7 @@
             self.tur_head.angles_x = self.aim_maxpitch;
             self.tur_head.avelocity_x = 0;
         }
-
-        if (self.tur_head.angles_x < (self.aim_maxpitch * -1))
+        else if (self.tur_head.angles_x < (self.aim_maxpitch * -1))
         {
             self.tur_head.angles_x = (self.aim_maxpitch * -1);
             self.tur_head.avelocity_x = 0;
@@ -237,18 +244,18 @@
 
     // Limit rot
     if (self.track_flags & TFL_TRACK_ROT)
+    {
         if (self.tur_head.angles_y > self.aim_maxrot)
         {
             self.tur_head.angles_y = self.aim_maxrot;
             self.tur_head.avelocity_y = 0;
         }
-
-    if (self.track_flags & TFL_TRACK_ROT)
-        if (self.tur_head.angles_y < (self.aim_maxrot * -1))
+        else if (self.tur_head.angles_y < (self.aim_maxrot * -1))
         {
             self.tur_head.angles_y = (self.aim_maxrot * -1);
             self.tur_head.avelocity_y = 0;
         }
+    }
 
 
 }
@@ -282,7 +289,7 @@
 
     // Ready?
     if (self.firecheck_flags & TFL_FIRECHECK_REFIRE)
-        if (self.attack_finished >= time) return 0;
+        if (self.attack_finished_single >= time) return 0;
 
     //
     if (self.firecheck_flags & TFL_FIRECHECK_DEAD)
@@ -321,7 +328,7 @@
     if (self.shot_volly > 1)
     {
         if (self.volly_counter == self.shot_volly)
-            if (self.ammo < (self.shot_dmg * self.shot_volly +1))
+            if (self.ammo < (self.shot_dmg * self.shot_volly))
                 return 0;
     }
 
@@ -398,7 +405,6 @@
 
             if (e_turret.team != e_target.owner.team)
                 return -8.5;
-
         }
         else
         {
@@ -490,7 +496,7 @@
         e = e.chain;
     }
 
-    self.tur_lastscore = m_score;
+//    self.tur_lastscore = m_score;
 
     //if (self.enemy != e_enemy)
     //self.volly_counter = 0;
@@ -511,8 +517,9 @@
         {
             if (e.tur_head != world)
             {
+
                 load_unit_settings(e,e.cvar_basename,1);
-                self.turret_postthink();
+                e.turret_postthink();
             }
 
             e = nextent(e);
@@ -542,7 +549,8 @@
     {
         dprint("Warning: Inactive or dead turret running the think function!\n");
         self.enemy = world;
-        self.turret_track();
+        //self.turret_track();
+        turret_stdproc_track();
         return;
     }
 
@@ -571,25 +579,20 @@
     else
     {
         // Check if we have a vailid enemy, and get one if we dont.
-        if (self.emaster != world)
+            // turret_do_updates(self);
+        if ((turret_validate_target(self,self.enemy,self.target_validate_flags) <= 0) || (self.cnt < time))
         {
-            self.enemy = self.emaster.enemy;
+            self.enemy = turret_select_target();
+            self.cnt = time + self.ticrate * 3;
         }
-        else
-        {
-            // turret_do_updates(self);
-            if (turret_validate_target(self,self.enemy,self.target_validate_flags) <= 0)// || (self.cnt < time))
-            {
-                self.enemy = turret_select_target();
-                self.cnt = time + self.ticrate * 5;
-            }
-        }
 
+
         // No target, just go to idle, do any custom stuff and bail.
         if (self.enemy == world)
         {
             // Turn & pitch
-            self.turret_track();
+            if (!self.track_flags & TFL_TRACK_NO)
+                turret_stdproc_track();
 
             // do any per-turret stuff
             self.turret_postthink();
@@ -597,17 +600,19 @@
             // And bail.
             return;
         }
-
+        // te_lightning1(world,self.origin,self.enemy.origin);
         // Update
         turret_do_updates(self);
 
         // Predict or whatnot
         if (!self.aim_flags & TFL_AIM_NO)
-            self.tur_aimpos = self.turret_aim();
+            self.tur_aimpos = turret_stdproc_aim_generic();
+            //self.tur_aimpos = self.turret_aim();
 
         // Turn & pitch
         if (!self.track_flags & TFL_TRACK_NO)
-            self.turret_track();
+            turret_stdproc_track();
+            //self.turret_track();
 
         // Update
         turret_do_updates(self);
@@ -628,7 +633,7 @@
 
     self.turret_firefunc();
 
-    self.attack_finished    = time + self.shot_refire;
+    self.attack_finished_single    = time + self.shot_refire;
     self.ammo               = self.ammo - self.shot_dmg;
     self.volly_counter      = self.volly_counter - 1;
 
@@ -639,7 +644,7 @@
         if (self.shoot_flags & TFL_SHOOT_CLEARTARGET) self.enemy = world;
 
         if (self.shot_volly > 1)
-            self.attack_finished = time + self.shot_volly_refire;
+            self.attack_finished_single = time + self.shot_volly_refire;
     }
 
 
@@ -792,8 +797,8 @@
     if (!self.aim_firetolerance_dist)     self.aim_firetolerance_dist  = 5 + (self.shot_radius * 2);
     self.aim_firetolerance_dist = bound(0.1,self.aim_firetolerance_dist,MAX_SHOT_DISTANCE);
 
-    if (!self.aim_firetolerance_angle)     self.aim_firetolerance_angle  = 10;
-    self.aim_firetolerance_angle = bound(0.1,self.aim_firetolerance_angle,360);
+//    if (!self.aim_firetolerance_angle)     self.aim_firetolerance_angle  = 10;
+//    self.aim_firetolerance_angle = bound(0.1,self.aim_firetolerance_angle,360);
 
     if (!self.aim_flags) self.aim_flags = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE | TFL_AIM_ZEASE;
 
@@ -802,7 +807,7 @@
 
     if (self.track_type != TFL_TRACKTYPE_STEPMOTOR)
     {
-        // Fluid / ineria mode. Looks mutch nicer, bit experimental &
+        // Fluid / Ineria mode. Looks mutch nicer, bit experimental &
         // Can inmapt aim preformance alot.
         // needs a bit diffrent aimspeed
         if (!self.aim_speed) self.aim_speed = 180;
@@ -869,17 +874,6 @@
     self.tur_head.netname = self.tur_head.classname     = "turret_head";
     self.tur_head.team = self.team;
 
-    //Slave mode?
-    if (self.master_nameof != "")
-    {
-        self.emaster = find(world, master_name, self.master_name);
-        if (self.emaster == world)
-        {
-            self.master_nameof = "";
-            dprint("Turret has bad invalid!\n");
-        }
-    }
-
     // Defend mode?
     if (self.target != "")
     {
@@ -930,18 +924,18 @@
     {
         self.turret_prethink        = turret_stdproc_true;
         self.turret_score_target    = turret_stdproc_targetscore_support;
-        self.turret_aim             = turret_stdproc_aim_generic;
-        self.turret_track           = turret_stdproc_track;
+        //self.turret_aim             = turret_stdproc_aim_generic;
+        //self.turret_track           = turret_stdproc_track;
         self.turret_firecheckfunc   = turret_stdproc_firecheck;
         self.turret_firefunc        = turret_stdproc_fire;
         self.turret_postthink       = turret_stdproc_nothing;
 
-        self.turret_damagefunc          = turret_stdproc_damage;
+        //self.turret_damagefunc          = turret_stdproc_damage;
         self.event_damage               = turret_stdproc_damage;
         self.tur_head.event_damage      = turret_stdproc_damage;
 
-        self.turret_diefunc             = turret_stdproc_die;
-        self.turret_spawnfunc           = turret_stdproc_respawn;
+        //self.turret_diefunc             = turret_stdproc_die;
+        //self.turret_spawnfunc           = turret_stdproc_respawn;
 
     }
     else
@@ -950,22 +944,22 @@
         self.turret_prethink        = turret_stdproc_true;
         self.turret_score_target    = turret_stdproc_targetscore_generic;
 
-        if (self.aim_flags & TFL_AIM_SIMPLE)
-            self.turret_aim             = turret_stdproc_aim_simple;
-        else
-            self.turret_aim             = turret_stdproc_aim_generic;
+        //if (self.aim_flags & TFL_AIM_SIMPLE)
+        //    self.turret_aim             = turret_stdproc_aim_simple;
+        //else
+        //    self.turret_aim             = turret_stdproc_aim_generic;
 
-        self.turret_track           = turret_stdproc_track;
+        //self.turret_track           = turret_stdproc_track;
         self.turret_firecheckfunc   = turret_stdproc_firecheck;
         self.turret_firefunc        = turret_stdproc_fire;
         self.turret_postthink       = turret_stdproc_nothing;
 
-        self.turret_damagefunc          = turret_stdproc_damage;
+        //self.turret_damagefunc          = turret_stdproc_damage;
         self.event_damage               = turret_stdproc_damage;
         self.tur_head.event_damage      = turret_stdproc_damage;
 
-        self.turret_diefunc             = turret_stdproc_die;
-        self.turret_spawnfunc           = turret_stdproc_respawn;
+        //self.turret_diefunc             = turret_stdproc_die;
+        //self.turret_spawnfunc           = turret_stdproc_respawn;
         self.turret_addtarget           = turret_stdproc_false;
     }
 

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_misc.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_misc.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_misc.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -37,7 +37,7 @@
     setmodel(e, "models/turrets/c512.md3"); // precision set above
     e.scale = (f_size/512);
     setsize(e, '0 0 0', '0 0 0');
-    ///setattachment(e,onwho,"");
+    //setattachment(e,onwho,"");
     setorigin(e,onwho.origin + '0 0 1');
     e.alpha = 0.15;
     e.movetype = MOVETYPE_FLY;

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_scoreprocs.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_scoreprocs.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/system/turret_system_scoreprocs.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -74,7 +74,8 @@
     a_score = 1 - aim_delay;
     */
 
-    a_score = 1 - (tvt_thadf / max(e_turret.aim_maxrot,e_turret.aim_maxpitch));
+    //a_score = 1 - (tvt_thadf / max(e_turret.aim_maxrot,e_turret.aim_maxpitch));
+    a_score = 1 - tvt_thadf / e_turret.aim_maxrot;
 
     if ((e_turret.target_select_missilebias > 0) && (e_target.flags & FL_PROJECTILE))
         m_score = 1;

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_flac.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_flac.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_flac.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -9,7 +9,7 @@
 
     turret_tag_fire_update();
 
-    sound (self, CHAN_BODY, "weapons/hagar_fire.wav", 1, ATTN_NORM);
+    sound (self, CHAN_WEAPON, "weapons/hagar_fire.wav", 1, ATTN_NORM);
     proj = spawn ();
     setorigin(proj, self.tur_shotorg_updated);
     setmodel(proj, "models/turrets/pd_proj.md3");
@@ -31,31 +31,28 @@
     proj.nextthink          = time + (vlen(self.tur_aimpos - self.tur_shotorg_updated) / self.shot_speed) + (random() * self.shot_spread);
 
     self.tur_head.frame = self.tur_head.frame + 1;
-    if(self.tur_head.frame >= 4) self.tur_head.frame = 0;
+    if (self.tur_head.frame >= 4) self.tur_head.frame = 0;
 
 }
 
 void turret_flac_projectile_explode()
 {
-    //vector org2;
-    float d;
+    float ftmp;
 
-    float b;
-    //org2 = findbetterlocation (self.origin, 12);
     te_explosion (self.origin);
 
-    b = crandom();
-    if (b<-0.7)
-        sound (self, CHAN_BODY, "weapons/hagexp1.wav", 1, ATTN_NORM);
-    else if (b<0.4)
-        sound (self, CHAN_BODY, "weapons/hagexp2.wav", 1, ATTN_NORM);
-    else if (b<1)
-        sound (self, CHAN_BODY, "weapons/hagexp3.wav", 1, ATTN_NORM);
+    ftmp = crandom();
+    if (ftmp<-0.7)
+        sound (self, CHAN_PROJECTILE, "weapons/hagexp1.wav", 1, ATTN_NORM);
+    else if (ftmp<0.4)
+        sound (self, CHAN_PROJECTILE, "weapons/hagexp2.wav", 1, ATTN_NORM);
+    else if (ftmp<1)
+        sound (self, CHAN_PROJECTILE, "weapons/hagexp3.wav", 1, ATTN_NORM);
 
 
     self.event_damage = SUB_Null;
 
-    d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET);
+    ftmp = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET);
 
 #ifdef TURRET_DEBUG
     self.owner.tur_dbg_dmg_t_h = self.owner.tur_dbg_dmg_t_h + d; //self.owner.shot_dmg;
@@ -75,12 +72,6 @@
     self.ammo_flags     = TFL_AMMO_ROCKETS | TFL_AMMO_RECHARGE;
     self.aim_flags      = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE;
 
-
-
-    precache_model ("models/turrets/base.md3");
-    precache_model ("models/turrets/flac.md3");
-    precache_model("models/turrets/pd_proj.md3");
-
     if (turret_stdproc_init("flac_std") == 0)
     {
         remove(self);
@@ -90,7 +81,7 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/flac.md3");
 
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // Our fire routine
@@ -102,6 +93,10 @@
 
 void spawnfunc_turret_flac()
 {
+    precache_model ("models/turrets/base.md3");
+    precache_model ("models/turrets/flac.md3");
+    precache_model("models/turrets/pd_proj.md3");
+
     self.think = turret_flac_dinit;
     self.nextthink = time + 0.5;
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_fusionreactor.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_fusionreactor.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_fusionreactor.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -47,8 +47,6 @@
 
     self.track_flags = TFL_TRACK_NO;
 
-    precache_model ("models/turrets/reactor.md3");
-    precache_model ("models/turrets/base.md3");
     if (turret_stdproc_init("fusreac_std") == 0)
     {
         remove(self);
@@ -76,7 +74,9 @@
 */
 void spawnfunc_turret_fusionreactor()
 {
-    // return;
+    precache_model ("models/turrets/reactor.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_fusionreactor_dinit;
     self.nextthink = time + 0.5;
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -10,16 +10,16 @@
 
 void turret_hellion_postthink()
 {
-    if(cvar("g_turrets_reloadcvars"))
+    if (cvar("g_turrets_reloadcvars"))
     {
-        if(!self.shot_speed_max)  self.shot_speed_max  = cvar("g_turrets_unit_hellion_std_shot_speed_max");
-        if(!self.shot_speed_gain) self.shot_speed_gain = cvar("g_turrets_unit_hellion_std_shot_speed_gain");
+        if (!self.shot_speed_max)  self.shot_speed_max  = cvar("g_turrets_unit_hellion_std_shot_speed_max");
+        if (!self.shot_speed_gain) self.shot_speed_gain = cvar("g_turrets_unit_hellion_std_shot_speed_gain");
     }
 
-    if(self.tur_head.frame != 0)
+    if (self.tur_head.frame != 0)
         self.tur_head.frame = self.tur_head.frame + 1;
 
-    if(self.tur_head.frame > 7)
+    if (self.tur_head.frame > 7)
         self.tur_head.frame = 0;
 }
 
@@ -27,11 +27,11 @@
 {
     local entity missile;
 
-    sound (self, CHAN_BODY, "weapons/hagar_fire.wav", 1, ATTN_NORM);
+    sound (self, CHAN_WEAPON, "weapons/hagar_fire.wav", 1, ATTN_NORM);
 
     missile = spawn ();
     setorigin(missile, self.tur_shotorg_updated);
-    sound (missile, CHAN_BODY, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
+    sound (missile, CHAN_PROJECTILE, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
     setmodel (missile, "models/turrets/mlrs_rocket.md3"); // precision set below
     setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
 
@@ -60,7 +60,7 @@
     // switch tubes
     self.tur_shotorg_y = self.tur_shotorg_y * -1;
 
-    if(self.tur_head.frame == 0)
+    if (self.tur_head.frame == 0)
         self.tur_head.frame = self.tur_head.frame + 1;
 
 }
@@ -109,12 +109,14 @@
 
     olddir = normalize(self.velocity);
 
-    if(self.enemy)
+    if (self.enemy)
     {
         // Predict enemy position
         itime = vlen(self.enemy.origin - self.origin) / vlen(self.velocity);
         pre_pos = self.enemy.origin + self.enemy.velocity * itime;
-    } else {
+    }
+    else
+    {
         pre_pos = self.origin + olddir * 1024;
     }
 
@@ -147,7 +149,7 @@
     vector org2;
     float d;
 
-    sound (self, CHAN_BODY, "weapons/rocket_impact.wav", 1, ATTN_NORM);
+    sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", 1, ATTN_NORM);
     org2 = findbetterlocation (self.origin, 16);
 
     // LordHavoc: TE_TEI_BIGEXPLOSION
@@ -176,8 +178,8 @@
 {
     if (self.netname == "")      self.netname  = "Hellion Missile Turret";
 
-    if(!self.shot_speed_max)  self.shot_speed_max  = cvar("g_turrets_unit_hellion_std_shot_speed_max");
-    if(!self.shot_speed_gain) self.shot_speed_gain = cvar("g_turrets_unit_hellion_std_shot_speed_gain");
+    if (!self.shot_speed_max)  self.shot_speed_max  = cvar("g_turrets_unit_hellion_std_shot_speed_max");
+    if (!self.shot_speed_gain) self.shot_speed_gain = cvar("g_turrets_unit_hellion_std_shot_speed_gain");
 
     self.turrcaps_flags = TFL_TURRCAPS_RADIUSDMG | TFL_TURRCAPS_FASTPROJ | TFL_TURRCAPS_PLAYERKILL | TFL_TURRCAPS_MISSILEKILL;
     self.aim_flags = TFL_AIM_SIMPLE;
@@ -185,10 +187,6 @@
     self.firecheck_flags = TFL_FIRECHECK_WORLD | TFL_FIRECHECK_DEAD | TFL_FIRECHECK_DISTANCES | TFL_FIRECHECK_TEAMCECK | TFL_FIRECHECK_REFIRE | TFL_FIRECHECK_AFF | TFL_FIRECHECK_OWM_AMMO;
     self.ammo_flags = TFL_AMMO_ROCKETS | TFL_AMMO_RECHARGE;
 
-    precache_model ( "models/turrets/mlrs_rocket.md3");
-    precache_model ("models/turrets/hellion.md3");
-    precache_model ("models/turrets/base.md3");
-
     if (turret_stdproc_init("hellion_std") == 0)
     {
         remove(self);
@@ -198,7 +196,7 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/hellion.md3");
 
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // Our fire routine
@@ -212,6 +210,10 @@
 */
 void spawnfunc_turret_hellion()
 {
+    precache_model ( "models/turrets/mlrs_rocket.md3");
+    precache_model ("models/turrets/hellion.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_hellion_dinit;
     self.nextthink = time + 0.5;
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_hk.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_hk.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_hk.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -23,7 +23,7 @@
 {
     if (e_target)
     {
-       if (turret_validate_target(self,e_target,self.target_validate_flags) > 0)
+        if (turret_validate_target(self,e_target,self.target_validate_flags) > 0)
         {
             self.enemy = e_target;
             return 1;
@@ -47,11 +47,14 @@
         return 0;
 
     // player
-    if ((e_target.flags & FL_CLIENT) && (self.owner.target_select_playerbias < 0))
-        return 0;
+    if (e_target.flags & FL_CLIENT)
+    {
+        if (self.owner.target_select_playerbias < 0)
+            return 0;
 
-    if ((e_target.flags & FL_CLIENT) && (e_target.deadflag != DEAD_NO))
-        return 0;
+        if (e_target.deadflag != DEAD_NO)
+            return 0;
+    }
 
     // Missile
     if ((e_target.flags & FL_PROJECTILE) && (self.owner.target_select_missilebias < 0))
@@ -82,13 +85,13 @@
     local entity missile;
     //local entity flash2;
 
-    sound (self, CHAN_BODY, "weapons/rocket_fire.wav", 1, ATTN_NORM);
+    sound (self, CHAN_WEAPON, "weapons/rocket_fire.wav", 1, ATTN_NORM);
 
     missile                    = spawn ();
     missile.solid            = SOLID_BBOX;
     setmodel (missile, "models/turrets/hunter2.md3"); // precision set below
     setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
-    sound    (missile, CHAN_BODY, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
+    sound    (missile, CHAN_PROJECTILE, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
     setorigin(missile, self.tur_shotorg_updated);
 
     missile.scale            = 1;
@@ -111,10 +114,11 @@
     missile.enemy            = self.enemy;
     missile.team             = self.team;
     missile.cnt              = time + 30;
+    missile.ticrate          = max(cvar("sys_ticrate"),0.05);
 
     te_explosion (missile.origin);
 
-    if(self.tur_head.frame == 0)
+    if (self.tur_head.frame == 0)
         self.tur_head.frame = self.tur_head.frame + 1;
 
 }
@@ -151,8 +155,7 @@
     entity e;
     float ad;
 
-    // 25fps
-    self.nextthink = time + 0.04;
+    self.nextthink = time + self.ticrate;
 
     //if (self.cnt < time)
     //    turret_hk_missile_explode();
@@ -185,6 +188,13 @@
 
     if (self.enemy)
     {
+        // Close enougth to do decent damage?
+        if ( vlen(self.origin - self.enemy.origin) <= (self.owner.shot_radius * 0.25) )
+        {
+            turret_hk_missile_explode();
+            return;
+        }
+
         // Get data on enemy position
         pre_pos = self.enemy.origin +
                   self.enemy.velocity *
@@ -194,12 +204,6 @@
         ve = normalize(pre_pos - self.origin);
         fe = trace_fraction;
 
-        // Close enougth to do decent damage?
-        if ( vlen(self.origin - self.enemy.origin) <= (self.owner.shot_radius * 0.25) )
-        {
-            turret_hk_missile_explode();
-            return;
-        }
     }
     else
     {
@@ -292,16 +296,16 @@
         //wishdir = normalize(self.enemy.origin - (self.enemy.origin + self.enemy.velocity));
     }
 
-    if((myspeed > hk_minspeed) && (self.cnt > time))
+    if ((myspeed > hk_minspeed) && (self.cnt > time))
         myspeed = min(myspeed * hk_accel2,hk_maxspeed);
 
     // Ranoutagazfish?
-    if(self.cnt < time)
+    if (self.cnt < time)
     {
         self.cnt = time + 0.25;
         self.nextthink = 0;
         self.movetype         = MOVETYPE_BOUNCE;
-        sound    (self, CHAN_BODY, "", 0.4, ATTN_NORM);
+        sound    (self, CHAN_VOICE, "", 0.4, ATTN_NORM);
         return;
     }
 
@@ -352,7 +356,7 @@
         return;
 
     //vector	org2;
-    sound (self, CHAN_BODY, "weapons/rocket_impact.wav", 1, ATTN_NORM);
+    sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", 1, ATTN_NORM);
     org2 = findbetterlocation (self.origin, 16);
 
     // LordHavoc: TE_TEI_BIGEXPLOSION
@@ -379,7 +383,7 @@
 
 void turret_hk_postthink()
 {
-    if(cvar("g_turrets_reloadcvars"))
+    if (cvar("g_turrets_reloadcvars"))
     {
         hk_maxspeed = cvar("g_turrets_unit_hk_std_shot_speed_max");
         hk_minspeed = cvar("g_turrets_unit_hk_std_shot_speed");
@@ -388,10 +392,10 @@
         hk_decel    = cvar("g_turrets_unit_hk_std_shot_speed_decel");
     }
 
-    if(self.tur_head.frame != 0)
+    if (self.tur_head.frame != 0)
         self.tur_head.frame = self.tur_head.frame + 1;
 
-    if(self.tur_head.frame > 5)
+    if (self.tur_head.frame > 5)
         self.tur_head.frame = 0;
 
 }
@@ -420,12 +424,6 @@
 
     self.shoot_flags = TFL_SHOOT_CLEARTARGET;
 
-
-    precache_model ( "models/turrets/hunter2.md3");
-
-    precache_model ("models/turrets/base.md3");
-    precache_model ("models/turrets/hk.md3");
-
     if (turret_stdproc_init("hk_std") == 0)
     {
         remove(self);
@@ -437,7 +435,7 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/hk.md3");
 
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // Our fire routine
@@ -462,6 +460,10 @@
 
 void spawnfunc_turret_hk()
 {
+    precache_model ( "models/turrets/hunter2.md3");
+    precache_model ("models/turrets/base.md3");
+    precache_model ("models/turrets/hk.md3");
+
     self.think = turret_hk_dinit;
     self.nextthink = time + 0.5;
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -7,11 +7,11 @@
 {
 
     entity flash;
-    sound (self, CHAN_BODY, "weapons/uzi_fire.wav", 1, ATTN_NORM);
+    sound (self, CHAN_WEAPON, "weapons/uzi_fire.wav", 1, ATTN_NORM);
     fireBullet (self.tur_shotorg_updated, self.tur_shotdir_updated,self.shot_spread, self.shot_dmg, self.shot_force, DEATH_TURRET, FALSE);
 
     te_smallflash(self.tur_shotorg_updated);
-    trailparticles(self,particleeffectnum("EF_MINIGUNTRAIL"),self.tur_shotorg_updated,trace_endpos);
+    trailparticles(self,particleeffectnum("EF_MGTURRETTRAIL"),self.tur_shotorg_updated,trace_endpos);
 
     // muzzle flash for 3rd person view
     flash = spawn();
@@ -31,9 +31,6 @@
 {
     if (self.netname == "")      self.netname     = "Machinegun Turret";
 
-    precache_model ("models/turrets/machinegun.md3");
-    precache_model ("models/turrets/base.md3");
-
     self.ammo_flags = TFL_AMMO_BULLETS | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
     self.turrcaps_flags = TFL_TURRCAPS_HITSCAN | TFL_TURRCAPS_PLAYERKILL;
     self.aim_flags = TFL_AIM_LEAD | TFL_AIM_ZEASE;
@@ -47,7 +44,7 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/machinegun.md3");
 
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // Our fire routine
@@ -65,6 +62,9 @@
 */
 void spawnfunc_turret_machinegun()
 {
+    precache_model ("models/turrets/machinegun.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_machinegun_std_init;
     self.nextthink = time + 0.5;
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -6,7 +6,7 @@
 void turret_mlrs_postthink()
 {
 
-    if((self.tur_head.frame >= 6) && (self.attack_finished <= time))
+    if ((self.tur_head.frame >= 6) && (self.attack_finished_single <= time))
         self.tur_head.frame = 0;
 }
 
@@ -16,12 +16,12 @@
 
     turret_tag_fire_update();
 
-    sound (self, CHAN_BODY, "weapons/rocket_fire.wav", 1, ATTN_NORM);
+    sound (self, CHAN_WEAPON, "weapons/rocket_fire.wav", 1, ATTN_NORM);
 
     missile                    = spawn ();
     setmodel (missile, "models/turrets/rocket.md3"); // precision set below
     setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
-    sound (missile, CHAN_BODY, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
+    sound (missile, CHAN_PROJECTILE, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
     setorigin(missile, self.tur_shotorg_updated);
     missile.classname          = "mlrs_missile";
     missile.owner              = self;
@@ -52,18 +52,20 @@
     vector org2;
 
     //vector	org2;
-    sound (self, CHAN_BODY, "weapons/rocket_impact.wav", 1, ATTN_NORM);
+    sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", 1, ATTN_NORM);
     org2 = findbetterlocation (self.origin, 16);
     pointparticles(particleeffectnum("rocket_explode"), org2, '0 0 0', 1);
 
     self.event_damage = SUB_Null;
-    RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET);
 
 #ifdef TURRET_DEBUG
     float d;
+
     d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET);
     self.owner.tur_dbg_dmg_t_h = self.owner.tur_dbg_dmg_t_h + d; //self.owner.shot_dmg;
     self.owner.tur_dbg_dmg_t_f = self.owner.tur_dbg_dmg_t_f + self.owner.shot_dmg;
+#else
+    RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET);
 #endif
 
     // Target dead, get another is still targeting the same.
@@ -81,10 +83,6 @@
     self.ammo_flags = TFL_AMMO_ROCKETS | TFL_AMMO_RECHARGE;
     self.aim_flags = TFL_AIM_LEAD | TFL_AIM_ZEASE | TFL_AIM_SHOTTIMECOMPENSATE;
 
-    precache_model ( "models/turrets/rocket.md3");
-    precache_model ("models/turrets/mlrs.md3");
-    precache_model ("models/turrets/base.md3");
-
     if (turret_stdproc_init("mlrs_std") == 0)
     {
         remove(self);
@@ -94,7 +92,7 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/mlrs.md3");
 
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // Our fire routine
@@ -108,6 +106,10 @@
 
 void spawnfunc_turret_mlrs()
 {
+    precache_model ( "models/turrets/rocket.md3");
+    precache_model ("models/turrets/mlrs.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_mlrs_dinit;
     self.nextthink = time + 0.5;
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -6,18 +6,18 @@
 
 float turret_phaser_firecheck()
 {
-    if(self.fireflag != 0) return 0;
+    if (self.fireflag != 0) return 0;
     return turret_stdproc_firecheck();
 }
 
 void turret_phaser_postthink()
 {
-    if(self.tur_head.frame == 0)
+    if (self.tur_head.frame == 0)
         return;
 
-    if(self.fireflag == 1)
+    if (self.fireflag == 1)
     {
-        if(self.tur_head.frame == 10)
+        if (self.tur_head.frame == 10)
             self.tur_head.frame = 1;
         else
             self.tur_head.frame = self.tur_head.frame +1;
@@ -25,7 +25,7 @@
     else if (self.fireflag == 2 )
     {
         self.tur_head.frame = self.tur_head.frame +1;
-        if(self.tur_head.frame == 15)
+        if (self.tur_head.frame == 15)
         {
             self.tur_head.frame = 0;
             self.fireflag = 0;
@@ -35,28 +35,28 @@
 
 void beam_think()
 {
-    if((time > self.cnt)||(self.owner.deadflag != DEAD_NO))
+    if ((time > self.cnt)||(self.owner.deadflag != DEAD_NO))
     {
-        self.owner.attack_finished = time + self.owner.shot_refire;
+        self.owner.attack_finished_single = time + self.owner.shot_refire;
         self.owner.fireflag = 2;
         self.owner.tur_head.frame = 10;
-        sound (self, CHAN_BODY, "", 1, ATTN_NORM);
+        sound (self, CHAN_PROJECTILE, "", 1, ATTN_NORM);
         remove(self);
         return;
     }
 
     turret_do_updates(self.owner);
 
-    if(time - self.shot_spread > 0)
+    if (time - self.shot_spread > 0)
     {
-            self.shot_spread = time + 2;
-            sound (self, CHAN_BODY, "turrets/phaser.ogg", 1, ATTN_NORM);
+        self.shot_spread = time + 2;
+        sound (self, CHAN_VOICE, "turrets/phaser.ogg", 1, ATTN_NORM);
     }
 
 
     self.nextthink = time + self.ticrate;
 
-    self.owner.attack_finished = time + frametime;
+    self.owner.attack_finished_single = time + frametime;
     entity oldself;
     oldself = self;
     self = self.owner;
@@ -89,21 +89,21 @@
     beam.owner = self;
     beam.shot_dmg = self.shot_dmg / (self.shot_speed / beam.ticrate);
     beam.scale = self.target_range_fire / 256;
-	beam.movetype = MOVETYPE_NONE;
+    beam.movetype = MOVETYPE_NONE;
     beam.enemy = self.enemy;
-	beam.bot_dodge = TRUE;
-	beam.bot_dodgerating = beam.shot_dmg;
-	sound (beam, CHAN_BODY, "turrets/phaser.ogg", 1, ATTN_NORM);
+    beam.bot_dodge = TRUE;
+    beam.bot_dodgerating = beam.shot_dmg;
+    sound (beam, CHAN_PROJECTILE, "turrets/phaser.ogg", 1, ATTN_NORM);
     self.fireflag = 1;
 
-    beam.attack_finished = self.attack_finished;
-    self.attack_finished = time; // + cvar("sys_ticrate");
+    beam.attack_finished_single = self.attack_finished_single;
+    self.attack_finished_single = time; // + cvar("sys_ticrate");
 
     setattachment(beam,self.tur_head,"tag_fire");
 
-    PointSound (trace_endpos, "weapons/neximpact.wav", 1, ATTN_NORM);
+    soundat (self, trace_endpos, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
 
-    if(self.tur_head.frame == 0)
+    if (self.tur_head.frame == 0)
         self.tur_head.frame = 1;
 }
 
@@ -115,12 +115,6 @@
     self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
     self.aim_flags = TFL_AIM_ZEASE | TFL_AIM_LEAD;
 
-
-    precache_sound ("turrets/phaser.ogg");
-    precache_model ("models/turrets/phaser.md3");
-    precache_model ("models/turrets/phaser_beam.md3");
-    precache_model ("models/turrets/base.md3");
-
     if (turret_stdproc_init("phaser_std") == 0)
     {
         remove(self);
@@ -130,7 +124,7 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/phaser.md3");
 
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     self.turret_firecheckfunc = turret_phaser_firecheck;
@@ -143,6 +137,11 @@
 */
 void spawnfunc_turret_phaser()
 {
+    precache_sound ("turrets/phaser.ogg");
+    precache_model ("models/turrets/phaser.md3");
+    precache_model ("models/turrets/phaser_beam.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_phaser_dinit;
     self.nextthink = time + 0.5;
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -9,15 +9,17 @@
 
 void turret_plasma_postthink()
 {
-    if(self.tur_head.frame != 0)
+    if (self.tur_head.frame != 0)
         self.tur_head.frame = self.tur_head.frame + 1;
 
-    if(self.classname == "turret_plasma_dual")
+    if (self.classname == "turret_plasma_dual")
     {
-        if(self.tur_head.frame >= 6)
+        if (self.tur_head.frame >= 6)
             self.tur_head.frame = 0;
-    } else {
-        if(self.tur_head.frame >= 5)
+    }
+    else
+    {
+        if (self.tur_head.frame >= 5)
             self.tur_head.frame = 0;
     }
 }
@@ -28,7 +30,7 @@
 
     turret_tag_fire_update();
 
-    sound (self, CHAN_BODY, "weapons/hagar_fire.wav", 1, ATTN_NORM);
+    sound (self, CHAN_WEAPON, "weapons/hagar_fire.wav", 1, ATTN_NORM);
     proj                    = spawn ();
     setorigin(proj, self.tur_shotorg_updated);
     setsize(proj, '0 0 0', '0 0 0');
@@ -49,7 +51,7 @@
     proj.enemy           = self.enemy;
     proj.flags           = FL_PROJECTILE | FL_NOTARGET;
 
-    if(self.tur_head.frame == 0)
+    if (self.tur_head.frame == 0)
         self.tur_head.frame = 1;
 
     // trailparticles(proj,particleeffectnum("TR_REDPLASMA"),proj.origin,proj.origin + proj.velocity);
@@ -89,7 +91,7 @@
 #else
     RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET);
 #endif
-    sound (self, CHAN_BODY, "weapons/electro_impact.wav", 1, ATTN_NORM);
+    sound (self, CHAN_PROJECTILE, "weapons/electro_impact.wav", 1, ATTN_NORM);
 
     remove (self);
 }
@@ -98,11 +100,8 @@
 {
     if (self.netname == "")      self.netname     = "Plasma Cannon";
 
-    precache_model ("models/turrets/plasma.md3");
-    precache_model ("models/turrets/base.md3");
-
     self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
-    self.aim_flags = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE | TFL_AIM_ZEASE;
+    self.aim_flags = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE | TFL_AIM_ZEASE | TFL_AIM_GROUND2;
 
     if (turret_stdproc_init("plasma_std") == 0)
     {
@@ -113,7 +112,8 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/plasma.md3");
 
-    if(!turret_tag_setup(0))
+
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // Our fire routine
@@ -128,9 +128,6 @@
 {
     if (self.netname == "")      self.netname     = "Dual Plasma Cannon";
 
-    precache_model ("models/turrets/plasmad.md3");
-    precache_model ("models/turrets/base.md3");
-
     self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
 
     if (turret_stdproc_init("plasma_dual") == 0)
@@ -142,7 +139,7 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/plasmad.md3");
 
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // select aim
@@ -166,6 +163,9 @@
 */
 void spawnfunc_turret_plasma()
 {
+    precache_model ("models/turrets/plasma.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_plasma_std_init;
     self.nextthink = time + 0.5;
 }
@@ -174,6 +174,9 @@
 */
 void spawnfunc_turret_plasma_dual()
 {
+    precache_model ("models/turrets/plasmad.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_plasma_dual_init;
     self.nextthink = time + 0.5;
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_targettrigger.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_targettrigger.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_targettrigger.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -4,14 +4,14 @@
 void turret_targettrigger_touch()
 {
     entity e;
-    if(self.cnt > time) return;
+    if (self.cnt > time) return;
     entity oldself;
     oldself = self;
 
     e = find(world, targetname, self.target);
     while (e)
     {
-        if(e.turrcaps_flags & TFL_TURRCAPS_RECIVETARGETS)
+        if (e.turrcaps_flags & TFL_TURRCAPS_RECIVETARGETS)
         {
             self = e;
             e.turret_addtarget(other,oldself);
@@ -29,7 +29,7 @@
 */
 void spawnfunc_turret_targettrigger()
 {
-    if(!cvar("g_turrets"))
+    if (!cvar("g_turrets"))
     {
         remove(self);
         return;

Modified: branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_tessla.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_tessla.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/tturrets/units/turret_unit_tessla.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -14,25 +14,25 @@
     e = findradius(from.origin,range);
     while (e)
     {
-        if((e.toasted != 1) && (e != from))
-        if (turret_validate_target(self,e,self.target_validate_flags) > 0)
-        {
+        if ((e.toasted != 1) && (e != from))
+            if (turret_validate_target(self,e,self.target_validate_flags) > 0)
+            {
 
-            traceline(from.origin,e.origin,0,from);
-            if(trace_fraction > 0.9)
-            {
-                d = vlen(e.origin - from.origin);
-                if(d < dd)
+                traceline(from.origin,e.origin,0,from);
+                if (trace_fraction > 0.9)
                 {
-                    dd = d;
-                    etarget = e;
+                    d = vlen(e.origin - from.origin);
+                    if (d < dd)
+                    {
+                        dd = d;
+                        etarget = e;
+                    }
                 }
             }
-        }
         e = e.chain;
     }
 
-    if(etarget)
+    if (etarget)
     {
         te_smallflash(etarget.origin);
         te_lightning1(world,from.origin,etarget.origin);
@@ -48,10 +48,10 @@
     entity e,t;
     float d,r,i;
 
-    if(cvar("g_turrets_nofire") != 0)
+    if (cvar("g_turrets_nofire") != 0)
         return;
 
-    if(self.attack_finished > time) return;
+    if (self.attack_finished_single > time) return;
 
     d = self.shot_dmg;
     r = self.target_range;
@@ -65,22 +65,23 @@
     t = toast(e,r,d);
     remove(e);
 
-    if(t == world) return;
+    if (t == world) return;
 
     self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
                                  TFL_TARGETSELECT_TEAMCHECK;
 
-    self.attack_finished = time + self.shot_refire;
+    self.attack_finished_single = time + self.shot_refire;
     self.ammo = self.ammo - self.shot_dmg;
-    for(i = 0;i < 10;i++)
+    for (i = 0;i < 10;i++)
     {
-        d *= 0.5; r *= 0.75;
+        d *= 0.5;
+        r *= 0.75;
         t = toast(t,r,d);
-        if(t == world) break;
+        if (t == world) break;
     }
 
     e = findchainfloat(toasted, 1);
-    while(e)
+    while (e)
     {
         e.toasted = 0;
         e = e.chain;
@@ -93,10 +94,10 @@
 
     self.tur_head.frame = self.tur_head.frame + 1;
 
-    if(self.tur_head.frame >= 11)
+    if (self.tur_head.frame >= 11)
         self.tur_head.frame = 0;
 
-    if(self.tur_head.avelocity == '0 0 0')
+    if (self.tur_head.avelocity == '0 0 0')
         self.tur_head.avelocity = '0 35 0';
 }
 
@@ -113,23 +114,19 @@
     self.aim_flags = TFL_AIM_NO;
     self.track_flags = TFL_TRACK_NO;
 
-    precache_model ("models/turrets/tesla_head.md3");
-    precache_model ("models/turrets/tesla_base.md3");
-
     if (turret_stdproc_init("tesla_std") == 0)
     {
         remove(self);
         return;
     }
 
+    setmodel(self,"models/turrets/tesla_base.md3");
+    setmodel(self.tur_head,"models/turrets/tesla_head.md3");
+
     self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
                                  TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
 
-
-    setmodel(self,"models/turrets/tesla_base.md3");
-    setmodel(self.tur_head,"models/turrets/tesla_head.md3");
-
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     self.turret_firefunc = turret_stdproc_nothing;
@@ -140,7 +137,10 @@
 */
 void spawnfunc_turret_tesla()
 {
-    // return;
+    precache_model ("models/turrets/tesla_head.md3");
+    precache_model ("models/turrets/tesla_base.md3");
+
+
     self.think = turret_tesla_dinit;
     self.nextthink = time + 0.5;
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/vote.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/vote.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/vote.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -77,7 +77,7 @@
 		} else if(argv(1) == "call") {
 			if(!e || cvar("sv_vote_call")) {
 				if(cvar("sv_vote_nospectators") && e.classname != "player") {
-					print_to(e, "^1Error: Only players can call a vote during the match-stage.");
+					print_to(e, "^1Error: Only players can call a vote."); // TODO invent a cvar name for allowing votes by spectators during warmup anyway
 				}
 				else if(timeoutStatus) { //don't allow a vote call during a timeout
 					print_to(e, "^1Error: You can not call a vote while a timeout is active.");
@@ -137,6 +137,7 @@
 						if(cvar("sv_eventlog"))
 							GameLogEcho(strcat(":vote:vcall:", ftos(votecaller.playerid), ":", votecalledvote_display));
 						VoteCount(); // needed if you are the only one
+						Nagger_VoteChanged();
 					} else {
 						print_to(e, "^1This vote is not ok. See help for more info.");
 					}
@@ -175,6 +176,7 @@
 					if(cvar("sv_eventlog"))
 						GameLogEcho(strcat(":vote:vcall:", ftos(votecaller.playerid), ":", votecalledvote_display));
 					VoteCount(); // needed if you are the only one
+					Nagger_VoteChanged();
 				}
 			} else {
 				print_to(e, "^1Vote to become master is NOT allowed.");
@@ -420,6 +422,7 @@
 	votecalled = FALSE;
 	votecalledmaster = FALSE;
 	votefinished = 0;
+	Nagger_VoteChanged();
 }
 
 void VoteAccept() {
@@ -462,12 +465,6 @@
 	VoteReset();
 }
 
-void VoteNag() {
-	if(votecalled)
-	if(self.vote_vote == 0)
-		centerprint_atprio(self, CENTERPRIO_VOTE, strcat("^7^3", VoteNetname(votecaller), "^2 called a vote for ", votecalledvote_display, "\n\n^2You have not voted yet!\n^2HINT: By default, F1 is yes and F2 is no."));
-}
-
 void VoteSpam(float yescount, float nocount, float abstaincount, float notvoters, float mincount, string result)
 {
 	string s;
@@ -600,4 +597,6 @@
 			}
 		}
 	}
+
+	Nagger_VoteCountChanged();
 }

Modified: branches/nexuiz-2.0/data/qcsrc/server/vote.qh
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/vote.qh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/vote.qh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -15,6 +15,5 @@
 void VoteReject();
 void VoteTimeout();
 void VoteStop(entity stopper);
-void VoteNag();
 void VoteSpam(float yescount, float nocount, float abstaincount, float notvoters, float mincount, string result);
 void VoteCount();

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_electro.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -156,7 +156,7 @@
 	setsize(proj, '0 0 -3', '0 0 -3');
 	proj.takedamage = DAMAGE_YES;
 	proj.damageforcescale = 4;
-	proj.health = 5;
+	proj.health = cvar("g_balance_electro_secondary_health");
 	proj.event_damage = W_Plasma_Damage;
 	proj.flags = FL_PROJECTILE;
 

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_grenadelauncher.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -135,7 +135,7 @@
 	gren.think = W_Grenade_Explode2;
 	gren.touch = W_Grenade_Touch2;
 	gren.takedamage = DAMAGE_YES;
-	gren.health = 10;
+	gren.health = cvar("g_balance_grenadelauncher_secondary_health");
 	gren.damageforcescale = 4;
 	gren.event_damage = W_Grenade_Damage;
 	gren.velocity = w_shotdir * cvar("g_balance_grenadelauncher_secondary_speed") + v_up * cvar("g_balance_grenadelauncher_secondary_speed_up");

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_minstanex.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_minstanex.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_minstanex.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -6,7 +6,7 @@
 	W_SetupShot (self, '25 8 -4', TRUE, 5, "weapons/nexfire.wav");
 
 	yoda = 0;
-	FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, 1000, 800, WEP_MINSTANEX);
+	FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, 10000, 800, WEP_MINSTANEX);
 
 	if(!g_minstagib)
 	if(yoda)

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_porto.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -70,7 +70,7 @@
 		traceline(trace_ent.origin, trace_ent.origin + '0 0 2' * PL_MIN_z, MOVE_NORMAL, self);
 		if(trace_fraction >= 1)
 			return;
-		if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_SLICK)
+		if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_SLICK || trace_dphitcontents & DPCONTENTS_PLAYERCLIP)
 			return;
 		if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
 			return;
@@ -78,16 +78,19 @@
 
 	if(self.owner.playerid != self.playerid)
 	{
+		sound(self, CHAN_PROJECTILE, "porto/unsupported.ogg", VOL_BASE, ATTN_NORM);
 		remove(self);
 	}
-	else if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_SLICK)
+	else if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_SLICK || trace_dphitcontents & DPCONTENTS_PLAYERCLIP)
 	{
+		sound(self, CHAN_PROJECTILE, "porto/bounce.ogg", VOL_BASE, ATTN_NORM);
 		// just reflect
 		self.right_vector = self.right_vector - 2 * trace_plane_normal * (self.right_vector * trace_plane_normal);
 		self.angles = vectoangles(self.velocity - 2 * trace_plane_normal * (self.velocity * trace_plane_normal));
 	}
 	else if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
 	{
+		sound(self, CHAN_PROJECTILE, "porto/unsupported.ogg", VOL_BASE, ATTN_NORM);
 		W_Porto_Fail(0);
 	}
 	else if(self.effects & EF_RED)
@@ -95,14 +98,15 @@
 		self.effects += EF_BLUE - EF_RED;
 		if(Portal_SpawnInPortalAtTrace(self.owner, self.right_vector, self.portal_id))
 		{
+			sound(self, CHAN_PROJECTILE, "porto/create.ogg", VOL_BASE, ATTN_NORM);
 			trace_plane_normal = norm;
-			sound(self, CHAN_PROJECTILE, "misc/invshot.wav", VOL_BASE, ATTN_NORM);
 			centerprint(self.owner, "^1In^7-portal created.\n");
 			self.right_vector = self.right_vector - 2 * trace_plane_normal * (self.right_vector * norm);
 			self.angles = vectoangles(self.velocity - 2 * trace_plane_normal * (self.velocity * norm));
 		}
 		else
 		{
+			sound(self, CHAN_PROJECTILE, "porto/unsupported.ogg", VOL_BASE, ATTN_NORM);
 			trace_plane_normal = norm;
 			W_Porto_Fail(0);
 		}
@@ -111,13 +115,14 @@
 	{
 		if(Portal_SpawnOutPortalAtTrace(self.owner, self.right_vector, self.portal_id))
 		{
+			sound(self, CHAN_PROJECTILE, "porto/create.ogg", VOL_BASE, ATTN_NORM);
 			trace_plane_normal = norm;
-			sound(self, CHAN_PROJECTILE, "misc/invshot.wav", VOL_BASE, ATTN_NORM);
 			centerprint(self.owner, "^4Out^7-portal created.\n");
 			W_Porto_Success();
 		}
 		else
 		{
+			sound(self, CHAN_PROJECTILE, "porto/unsupported.ogg", VOL_BASE, ATTN_NORM);
 			W_Porto_Fail(0);
 		}
 	}
@@ -130,7 +135,7 @@
 
 	if not(self.items & IT_UNLIMITED_AMMO)
 		self.weapons = self.weapons - (self.weapons & WEPBIT_PORTO);
-	W_SetupShot (self, '0 0 0', FALSE, 4, "weapons/grenade_fire.wav");
+	W_SetupShot (self, '0 0 0', FALSE, 4, "porto/fire.ogg");
 
 	//pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
 
@@ -141,7 +146,7 @@
 	gren.bot_dodgerating = 200;
 	gren.movetype = MOVETYPE_BOUNCEMISSILE;
 	gren.solid = SOLID_BBOX;
-	gren.effects = EF_LOWPRECISION | EF_RED;
+	gren.effects = EF_LOWPRECISION | EF_RED | EF_ADDITIVE;
 	gren.scale = 4;
 	gren.modelflags = MF_GRENADE;
 	setmodel(gren, "models/grenademodel.md3"); // precision set above
@@ -191,7 +196,7 @@
 			if(!self.BUTTON_ATCK2)
 			{
 				msg_entity = self;
-				WRITESPECTATABLE_MSG_ONE({
+				WRITESPECTATABLE_MSG_ONE_VARNAME(dummy1, {
 					WriteByte(MSG_ONE, SVC_TEMPENTITY);
 					WriteByte(MSG_ONE, TE_CSQC_HOLDANGLES);
 					WriteByte(MSG_ONE, WEP_PORTO);
@@ -206,7 +211,7 @@
 			{
 				self.porto_v_angle = self.v_angle;
 				msg_entity = self;
-				WRITESPECTATABLE_MSG_ONE({
+				WRITESPECTATABLE_MSG_ONE_VARNAME(dummy2, {
 					WriteByte(MSG_ONE, SVC_TEMPENTITY);
 					WriteByte(MSG_ONE, TE_CSQC_HOLDANGLES);
 					WriteByte(MSG_ONE, WEP_PORTO);
@@ -236,8 +241,13 @@
 		precache_model ("models/weapons/g_porto.md3");
 		precache_model ("models/weapons/v_porto.md3");
 		precache_model ("models/weapons/w_porto.zym");
-		precache_sound ("weapons/grenade_fire.wav");
 		precache_model ("models/portal.md3");
+		precache_sound ("porto/bounce.ogg");
+		precache_sound ("porto/create.ogg");
+		precache_sound ("porto/expire.ogg");
+		precache_sound ("porto/explode.ogg");
+		precache_sound ("porto/fire.ogg");
+		precache_sound ("porto/unsupported.ogg");
 	}
 	else if (req == WR_SETUP)
 		weapon_setup(WEP_PORTO);

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -233,7 +233,7 @@
 
 	missile.takedamage = DAMAGE_YES;
 	missile.damageforcescale = 4;
-	missile.health = 30;
+	missile.health = cvar("g_balance_rocketlauncher_health");
 	missile.event_damage = W_Rocket_Damage;
 
 	missile.movetype = MOVETYPE_FLY;
@@ -394,7 +394,8 @@
 		if(time > self.rl_sound)
 		{
 			self.rl_sound = time + 1;
-			sound (self, CHAN_WEAPON, "weapons/rocket_det.wav", 0.5 * VOL_BASE, ATTN_NORM);
+			// UGLY WORKAROUND: play this on CHAN_WEAPON2 so it can't cut off fire sounds
+			sound (self, CHAN_WEAPON2, "weapons/rocket_det.wav", 0.5 * VOL_BASE, ATTN_NORM);
 		}
 		if (self.BUTTON_ATCK2)
 		if(g_laserguided_missile)
@@ -402,7 +403,8 @@
 		{
 			self.exteriorweaponentity.attack_finished_single = time + 0.4;
 			self.laser_on = !self.laser_on;
-			sound (self, CHAN_WEAPON, "weapons/tink1.wav", VOL_BASE, ATTN_NORM);
+			// UGLY WORKAROUND: play this on CHAN_WEAPON2 so it can't cut off fire sounds
+			sound (self, CHAN_WEAPON2, "weapons/tink1.wav", VOL_BASE, ATTN_NORM);
 		}
 	}
 	else if (req == WR_PRECACHE)

Modified: branches/nexuiz-2.0/data/qcsrc/server/waypointsprites.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/waypointsprites.qc	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/qcsrc/server/waypointsprites.qc	2008-10-03 18:32:25 UTC (rev 4619)
@@ -1,64 +1,86 @@
-float waypointsprite_normdistance;
-float waypointsprite_minscale;
-float waypointsprite_fadedistance;
-float waypointsprite_minalpha;
-float waypointsprite_distancealphaexponent;
-float waypointsprite_timealphaexponent;
-float waypointsprite_deployed_lifetime;
-float waypointsprite_deadlifetime;
-float waypointsprite_limitedrange;
-
 ..entity owned_by_field;
-.float(entity) waypointsprite_for_player; // returns a model index or 0 for hide
-float waypointsprite_for_player_default(entity e)
-{
-	// personal waypoints
-	if(self.enemy)
-		if(self.enemy != other)
-			return FALSE;
+.float rule;
+.string model2;
+.string model3;
 
-	// team waypoints
-	if(self.team)
+.float(entity) waypointsprite_visible_for_player;
+
+void WaypointSprite_UpdateSprites(entity e, string m1, string m2, string m3)
+{
+	if(m1 != e.model)
 	{
-		if(self.team != other.team)
-			return FALSE;
-		if(other.classname != "player")
-			return FALSE;
+		e.model = m1;
+		e.SendFlags |= 2;
 	}
+	if(m2 != e.model2)
+	{
+		e.model2 = m2;
+		e.SendFlags |= 4;
+	}
+	if(m3 != e.model3)
+	{
+		e.model3 = m3;
+		e.SendFlags |= 8;
+	}
+}
 
-	// fixed waypoints
-	if(self.currentammo) // hidable?
-		if(other.cvar_cl_hidewaypoints) // wants to hide;
-			return FALSE;
+void WaypointSprite_UpdateOrigin(entity e, vector o)
+{
+	e.origin = o;
+	e.SendFlags |= 128;
+}
 
-	// otherwise, accept the model
-	return self.modelindex;
+void WaypointSprite_UpdateRule(entity e, float t, float r)
+{
+	e.rule = r;
+	e.team = t;
+	e.SendFlags |= 1;
 }
 
+void WaypointSprite_UpdateTeamRadar(entity e, float icon, vector col)
+{
+	e.cnt = (icon & 0x7F);
+	e.colormod = col;
+	e.SendFlags |= 32;
+}
+
+void WaypointSprite_Ping(entity e)
+{
+	e.cnt |= 0x80;
+	e.SendFlags |= 32;
+}
+
+void WaypointSprite_FadeOutIn(entity e, float t)
+{
+	if(!e.health)
+	{
+		e.health = t;
+		e.teleport_time = time + t;
+	}
+	else if(t < (e.teleport_time - time))
+	{
+		// accelerate the waypoint's dying
+		// ensure:
+		//   (e.teleport_time - time) / wp.health stays
+		//   e.teleport_time = time + fadetime
+		float current_fadetime;
+		current_fadetime = e.teleport_time - time;
+		e.teleport_time = time + t;
+		e.health = e.health * t / current_fadetime;
+	}
+
+	e.SendFlags |= 16;
+}
+
+float waypointsprite_limitedrange, waypointsprite_deployed_lifetime, waypointsprite_deadlifetime;
 void WaypointSprite_Init()
 {
-	waypointsprite_fadedistance = vlen(world.maxs - world.mins);
-	waypointsprite_normdistance = cvar("g_waypointsprite_normdistance");
-	waypointsprite_minscale = cvar("g_waypointsprite_minscale");
-	waypointsprite_minalpha = cvar("g_waypointsprite_minalpha");
-	waypointsprite_distancealphaexponent = cvar("g_waypointsprite_distancealphaexponent");
-	waypointsprite_timealphaexponent = cvar("g_waypointsprite_timealphaexponent");
+	waypointsprite_limitedrange = cvar("g_waypointsprite_limitedrange");
 	waypointsprite_deployed_lifetime = cvar("g_waypointsprite_deployed_lifetime");
 	waypointsprite_deadlifetime = cvar("g_waypointsprite_deadlifetime");
-	waypointsprite_limitedrange = cvar("g_waypointsprite_limitedrange");
-
-	precache_model("models/sprites/bluebase.sp2");
-	precache_model("models/sprites/flagcarrier.sp2");
-	precache_model("models/sprites/here.sp2");
-	precache_model("models/sprites/helpme.sp2");
-	precache_model("models/sprites/redbase.sp2");
-	precache_model("models/sprites/waypoint.sp2");
-	precache_model("models/sprites/danger.sp2");
 }
-
 void WaypointSprite_InitClient(entity e)
 {
-	stuffcmd(e, "\nalias \"g_waypointsprite_personal\" \"impulse 30\"\n alias \"g_waypointsprite_personal_p\" \"impulse 31\"\n alias \"g_waypointsprite_personal_d\" \"impulse 32\"\n alias \"g_waypointsprite_team_helpme\" \"impulse 33\"\n alias \"g_waypointsprite_team_here\" \"impulse 34\"\n alias \"g_waypointsprite_team_here_p\" \"impulse 35\"\n alias \"g_waypointsprite_team_here_d\" \"impulse 36\"\n alias \"g_waypointsprite_team_danger\" \"impulse 37\"\n alias \"g_waypointsprite_team_danger_p\" \"impulse 38\"\n alias \"g_waypointsprite_team_danger_d\" \"impulse 39\"\n alias \"g_waypointsprite_clear_personal\" \"impulse 47\"\n alias \"g_waypointsprite_clear\" \"impulse 48\"\n alias \"g_waypointsprite_toggle\" \"impulse 49\"\n");
 }
 
 void WaypointSprite_Kill(entity wp)
@@ -77,34 +99,11 @@
 	if(wp.owner)
 	{
 		if(wp.exteriormodeltoclient == wp.owner)
-		{
-			setattachment(wp, world, "");
-#ifdef ATTACHMENT_WORKS_WITH_EF_NODEPTHTEST
-			setorigin(wp, wp.origin + wp.exteriormodeltoclient.origin);
-#else
-			setorigin(wp, wp.view_ofs + wp.exteriormodeltoclient.origin);
-#endif
 			wp.exteriormodeltoclient = world;
-		}
 		wp.owner.(wp.owned_by_field) = world;
 		wp.owner = world;
 
-		if(!wp.health)
-		{
-			wp.health = fadetime;
-			wp.teleport_time = time + fadetime;
-		}
-		else if(fadetime < (wp.teleport_time - time))
-		{
-			// accelerate the spawnfunc_waypoint's dying
-			// ensure:
-			//   (wp.teleport_time - time) / wp.health stays
-			//   wp.teleport_time = time + fadetime
-			float current_fadetime;
-			current_fadetime = wp.teleport_time - time;
-			wp.teleport_time = time + fadetime;
-			wp.health = wp.health * fadetime / current_fadetime;
-		}
+		WaypointSprite_FadeOutIn(wp, fadetime);
 	}
 }
 
@@ -115,91 +114,94 @@
 	doremove = FALSE;
 
 	if(self.health)
+	{
 		if(time >= self.teleport_time)
 			doremove = TRUE;
+	}
 
+	if(self.exteriormodeltoclient)
+		WaypointSprite_UpdateOrigin(self, self.exteriormodeltoclient.origin + self.view_ofs);
+
 	if(doremove)
 		WaypointSprite_Kill(self);
 	else
-		self.nextthink = time;
+		self.nextthink = time; // WHY?!?
 }
 
-float WaypointSprite_CustomizeEntityForClient()
+float WaypointSprite_visible_for_player(entity e)
 {
-	vector realorigin, porigin;
-	float distancealpha, timealpha;
-	float distance;
-	float newmodel;
+	// personal waypoints
+	if(self.enemy)
+		if(self.enemy != other)
+			return FALSE;
 
-	if(self.health)
+	// team waypoints
+	if(self.team && self.rule == SPRITERULE_DEFAULT)
 	{
-		timealpha = bound(0, (self.teleport_time - time) / self.health, 1);
-		if(timealpha == 0)
+		if(self.team != other.team)
 			return FALSE;
-		timealpha = pow(timealpha, waypointsprite_timealphaexponent);
+		if(other.classname != "player")
+			return FALSE;
 	}
-	else
-		timealpha = 1;
 
-	// customize WP
-	newmodel = self.waypointsprite_for_player(other);
-	if(newmodel == 0)
-		return FALSE;
-	self.modelindex = newmodel;
+	return TRUE;
+}
 
-	porigin = other.origin + other.view_ofs_z * '0 0 1';
+float WaypointSprite_Customize()
+{
+	// this is not in SendEntity because it shall run every frame, not just every update
 
-#ifdef ATTACHMENT_WORKS_WITH_EF_NODEPTHTEST
-	realorigin = self.exteriormodeltoclient.origin + self.origin;
-#else
-	if(self.exteriormodeltoclient)
+	return self.waypointsprite_visible_for_player(other);
+}
+
+float WaypointSprite_SendEntity(entity to, float sendflags)
+{
+	WriteByte(MSG_ENTITY, ENT_CLIENT_WAYPOINT);
+	WriteByte(MSG_ENTITY, sendflags);
+	WriteCoord(MSG_ENTITY, self.origin_x);
+	WriteCoord(MSG_ENTITY, self.origin_y);
+	WriteCoord(MSG_ENTITY, self.origin_z);
+
+	if(self.model == "key-dropped")
+		print("flags: ", ftos(sendflags), "\n");
+
+	if(sendflags & 1)
 	{
-		if(self.exteriormodeltoclient == other)
-		{
-			setattachment(self, other, "");
-			setorigin(self, self.view_ofs);
-			realorigin = other.origin + self.origin;
-		}
-		else
-		{
-			setattachment(self, world, "");
-			setorigin(self, self.exteriormodeltoclient.origin + self.view_ofs);
-			realorigin = self.origin;
-		}
+		WriteByte(MSG_ENTITY, self.team);
+		WriteByte(MSG_ENTITY, self.rule);
 	}
-	else
-		realorigin = self.origin;
-#endif
 
-	distance = vlen(realorigin - porigin);
+	if(sendflags & 2)
+		WriteString(MSG_ENTITY, self.model);
 
-	if(self.max_health)
-		if(distance >= self.max_health)
-			return FALSE;
+	if(sendflags & 4)
+		WriteString(MSG_ENTITY, self.model2);
 
-	self.scale = max(1, distance / waypointsprite_normdistance) * waypointsprite_minscale;
+	if(sendflags & 8)
+		WriteString(MSG_ENTITY, self.model3);
 
-	if(self.max_health > waypointsprite_normdistance)
+	if(sendflags & 16)
 	{
-		// alpha 1 at normdistance, alpha 0 at maxdistance
-		distancealpha = bound(0, (self.max_health - distance) / (self.max_health - waypointsprite_normdistance), 1);
-		distancealpha = pow(distancealpha, waypointsprite_distancealphaexponent);
+		WriteCoord(MSG_ENTITY, self.health);
+		WriteCoord(MSG_ENTITY, self.teleport_time);
+		WriteShort(MSG_ENTITY, self.max_health); // maxdist
+		float f;
+		f = 0;
+		if(self.currentammo)
+			f |= 1; // hideable
+		if(self.exteriormodeltoclient == to)
+			f |= 2; // my own
+		WriteByte(MSG_ENTITY, f);
 	}
-	else if(self.max_health)
+
+	if(sendflags & 32)
 	{
-		// alpha 1 if visible
-		distancealpha = 1;
+		WriteByte(MSG_ENTITY, self.cnt); // icon on radar
+		WriteByte(MSG_ENTITY, self.colormod_x * 255.0);
+		WriteByte(MSG_ENTITY, self.colormod_y * 255.0);
+		WriteByte(MSG_ENTITY, self.colormod_z * 255.0);
 	}
-	else
-	{
-		// alpha 1 at normdistance, alpha minalpha at fadedistance
-		distancealpha = bound(0, (waypointsprite_fadedistance - distance) / (waypointsprite_fadedistance - waypointsprite_normdistance), 1);
-		distancealpha = pow(distancealpha, waypointsprite_distancealphaexponent);
-		distancealpha = distancealpha * (1 - waypointsprite_minalpha) + waypointsprite_minalpha;
-	}
 
-	self.alpha = timealpha * distancealpha;
-
 	return TRUE;
 }
 
@@ -219,14 +221,7 @@
 	wp.health = lifetime;
 	wp.exteriormodeltoclient = ref;
 	if(ref)
-	{
-#ifdef ATTACHMENT_WORKS_WITH_EF_NODEPTHTEST
-		setattachment(wp, ref, "");
-		setorigin(wp, ofs);
-#else
 		wp.view_ofs = ofs;
-#endif
-	}
 	else
 		setorigin(wp, ofs);
 	wp.enemy = showto;
@@ -241,16 +236,14 @@
 		wp.owned_by_field = ownfield;
 	}
 	wp.max_health = maxdistance;
-	wp.customizeentityforclient = WaypointSprite_CustomizeEntityForClient;
 	wp.think = WaypointSprite_Think;
 	wp.nextthink = time;
 	wp.effects = EF_NODEPTHTEST | EF_LOWPRECISION;
-	if(spr != "")
-		setmodel(wp, strcat("models/sprites/", spr, ".sp2")); // precision set above
-	else
-		wp.model = "waypoint";
-	setsize(wp, '0 0 0', '0 0 0');
-	wp.waypointsprite_for_player = waypointsprite_for_player_default;
+	wp.model = spr;
+	wp.modelindex = 1;
+	wp.SendEntity = WaypointSprite_SendEntity;
+	wp.customizeentityforclient = WaypointSprite_Customize;
+	wp.waypointsprite_visible_for_player = WaypointSprite_visible_for_player;
 	return wp;
 }
 

Modified: branches/nexuiz-2.0/data/scripts/entities.def
===================================================================
--- branches/nexuiz-2.0/data/scripts/entities.def	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/scripts/entities.def	2008-10-03 18:32:25 UTC (rev 4619)
@@ -547,11 +547,10 @@
 EXTRUDE_TERRAIN: always extrude downwards (for terrain)
 */
 
-/*QUAKED misc_models (0 .5 .8) ? 
-A non-solid brush entity, or a way to load models from a map (e.g. self-animated zym models).
-Behaves just like non-solid brushes otherwise.
-The keys below actually apply to most brush entities as they are engine features; however, they are described here as they aren't overridden by game code in misc_models. Its q3map2 keys below will work on any brush entity!
-_receiveshadows only works if this is a brush model (that is, if "model" is not defined).
+/*QUAKED misc_gamemodel (0 .5 .8) (-8 -8 -8) (8 8 8)
+A way to load models from a map by the engine (e.g. self-animated zym models).
+Is non-solid by default.
+The keys below actually apply to most engine-loaded model entities as they are engine features; however, they are described here as they aren't overridden by game code in misc_models. Its q3map2 keys below will work on any brush entity!
 -------- KEYS --------
 model: when used as a point entity, file name of model to load; when used as a brush entity, do not specify that
 frame: animation frame to play (for self-animated zym models)
@@ -564,10 +563,42 @@
 velocity: when movetype isn't 0, initial velocity vector
 angles: initial looking direction
 effects: sum of 1 = BRIGHTFIELD, 4 = BRIGHTLIGHT, 8 = DIMLIGHT, 32 = ADDITIVE, 64 = BLUE, 128 = RED, 512 = FULLBRIGHT, 1024 = FLAME, 2048 = STARDUST, 4096 = NOSHADOW, 8192 = NODEPTHTEST, 32768 = DOUBLESIDED, 8388608 = NOMODELFLAGS (ignores the following coming from a model file), 16777216 = ROCKET, 33554432 = GRENADE, 67108864 = GIB, 134217728 = ROTATE, 268435456 = TRACER, 536870912 = ZOMGIB, 1073741824 = TRACER2, -2147483648 = TRACER3
+loddistance1: distance after which to show the first LOD model replacement (default: 1000)
+loddistance2: distance after which to show the second LOD model replacement (default: 2000)
+lodmodel1: file name of the first LOD model replacement
+lodmodel2: file name of the second LOD model replacement
 -------- Q3MAP2 KEYS --------
 _frame: frame of model to include (set equal to frame if _castshadows is set)
 modelscale: scaling factor (set equal to scale if _castshadows is set)
 _castshadows: Allows per-entity control over shadow casting. Defaults to 0 on entities, 1 on world. 0 = no shadow casting. 1 = cast shadows on world. > 1 = cast shadows on entities with _rs (or _receiveshadows) with the corresponding value, AND world. Negative values imply same, but DO NOT cast shadows on world.
+_clone: copies brushes from entity with identical _clonename. Still needs a single brush that will get replaced.
+_clonename: template name so one can clone from it
+min: override automatically found minimum coordinate bounds
+max: override automatically found maximum coordinate bounds
+targetname: if targeted by a misc_model, its brushes get inserted into this
+_celshader: Sets the cel shader used for this geometry. Note: omit the "textures/" prefix.
+*/
+
+/*QUAKED func_static (0 .5 .8) ? 
+A non-solid brush entity. Use func_wall if you want it solid.
+The keys below actually apply to most brush entities as they are engine features; however, they are described here as they aren't overridden by game code in misc_models. Its q3map2 keys below will work on any brush entity!
+-------- KEYS --------
+movetype: way in which it moves: one of 0 = NONE, 1 = ANGLENOCLIP, 2 = ANGLECLIP, 3 = WALK, 4 = STEP, 5 = FLY, 6 = TOSS, 7 = PUSH, 8 = NOCLIP, 9 = FLYMISSILE, 10 = BOUNCE, 11 = BOUNCEMISSILE
+solid: solidity: one of 0 = NOT, 1 = TRIGGER, 2 = BBOX, 3 = SLIDEBOX, 4 = BSP, 5 = CORPSE
+avelocity: vector giving its angular velocity (useful for spinning models)
+scale: scale factor of the model (range: 0.0625 to 15.9375)
+colormap: 1024 + 16 * pantscolor + shirtcolor
+velocity: when movetype isn't 0, initial velocity vector
+angles: initial looking direction
+effects: sum of 1 = BRIGHTFIELD, 4 = BRIGHTLIGHT, 8 = DIMLIGHT, 32 = ADDITIVE, 64 = BLUE, 128 = RED, 512 = FULLBRIGHT, 1024 = FLAME, 2048 = STARDUST, 4096 = NOSHADOW, 8192 = NODEPTHTEST, 32768 = DOUBLESIDED, 8388608 = NOMODELFLAGS (ignores the following coming from a model file), 16777216 = ROCKET, 33554432 = GRENADE, 67108864 = GIB, 134217728 = ROTATE, 268435456 = TRACER, 536870912 = ZOMGIB, 1073741824 = TRACER2, -2147483648 = TRACER3
+loddistance1: distance after which to show the first LOD model replacement (default: 1000)
+loddistance2: distance after which to show the second LOD model replacement (default: 2000)
+lodtarget1: targetname of the first LOD model entity (can be used instead of lodmodel1 to use a brush model instead)
+lodtarget2: targetname of the second LOD model entity (can be used instead of lodmodel2 to use a brush model instead)
+-------- Q3MAP2 KEYS --------
+_frame: frame of model to include (set equal to frame if _castshadows is set)
+modelscale: scaling factor (set equal to scale if _castshadows is set)
+_castshadows: Allows per-entity control over shadow casting. Defaults to 0 on entities, 1 on world. 0 = no shadow casting. 1 = cast shadows on world. > 1 = cast shadows on entities with _rs (or _receiveshadows) with the corresponding value, AND world. Negative values imply same, but DO NOT cast shadows on world.
 _receiveshadows: Allows per-entity control over shadow reception. Defaults to 1 on everything (world shadows). 0 = receives NO shadows. > 1 = receive shadows only from corresponding keyed entities (see above) and world. < 1 = receive shadows ONLY from corresponding keyed entities.
 _clone: copies brushes from entity with identical _clonename. Still needs a single brush that will get replaced.
 _clonename: template name so one can clone from it
@@ -938,7 +969,7 @@
 -------- KEYS --------
 target: this should point to a trigger_race_checkpoint to decide when this spawning point is active. The checkpoint has to be AFTER this spawn.
 cnt: weight of spawn point for random selection. Set to a lower value if you have many spawn points close together. Default value is 1.
-race_place: if target points to the trigger_race_checkpoint with cnt 0 (finish line), this sets which place the spawn corresponds to
+race_place: if target points to the trigger_race_checkpoint with cnt 0 (finish line), this sets which place the spawn corresponds to; the special value 0 stands for spawns for players who come in later (have to be behind the ones with race_place set to an actual place), and -1 marks the spawnpoint for qualifying mode only
 */
 
 /*QUAKED func_pointparticles (.5 .5 .5) ? START_ON

Copied: branches/nexuiz-2.0/data/sound/porto (from rev 4618, trunk/data/sound/porto)

Modified: branches/nexuiz-2.0/data/textures/50hpskin_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/Reaptxt/lud_beam.tga
===================================================================
(Binary files differ)

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

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

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

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

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

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

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

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

Modified: branches/nexuiz-2.0/data/textures/cellammoskin_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/cmp1-dm8/ame7jp.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/cmp1-dm8/e8crete03.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/cmp1-dm8/e8crete03c.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/cmp1-dm8/e8mtltrim1.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/crylink_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7beam01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7beam02_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7bmtrim2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7bmtrim2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7bmtrim_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7brickfloor01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-5_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-6_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump-7_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7brickfloor01jump_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7bricks01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7brnmetal_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7brnmetal_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7panelwood2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7panelwood_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-5_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-6_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump-7_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7sbrickfloor_jump_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7slight_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7trim01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e7/e7trimlight_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8_base1broke_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8_launchpad1_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8bolttrim_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8clangfloor05_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8evilspacetxt_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b-5_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b-6_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02b_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c-5_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c-6_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8jumpspawn02c_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8lighttrim_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8lighttrim_glow.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8mtltrim1b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8mtltrimb_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8trimlight2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8trimlight_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8warning2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8warning2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8xgirder_small_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/e8/e8yarrow_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_cretebase_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_cretefloor_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_cretefloor_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_cretefloor_01b_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_cretewall_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_cretewall_02_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_cretewall_02_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_cretewall_03_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_cretewall_03_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_cretewall_03b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_cretewall_03b_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_deswall_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_deswall_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_grate03_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_grate03_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_grate_03_128_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_grate_03_128_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_grate_03_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_grate_03_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_mtl_grate_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_mtl_grate_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_mtl_wrn_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_mtl_wrn_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_simple_05_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_simple_05_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_simplines_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_tile_03_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_tile_03_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_tread_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floor_tread_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floorpanel_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_floorpanel_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_light_u201_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_light_u201_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_lightpanel_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_metalSupp01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_metalSupp01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_metalplate_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_metalwall02_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_mtl_bigplate_04_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_mtl_bigplate_04b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_mtl_panel_02_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_mtl_panel_02_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_mtl_panel_03_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_mtl_panel_03_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_mtl_panel_04_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_mtl_panel_04_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_q2_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_q2_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_q2_01b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_q2_01b_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_q2_01c_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_q2_01c_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_q2_01d_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_q2_01d_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_q2_01e_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_q2_01e_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_rndfloor_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_rndfloor_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_rndfloor_02_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_rndfloor_02_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_rplates_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_rplates_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_steptop_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_steptop_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_baseboard_02_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_baseboard_02_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_baseboard_03_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_baseboard_03_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_baseboard_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_baseboard_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_psimple_04_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_psimple_04_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_psimple_05_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_psimple_05_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_simple03_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_simple03_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_simple_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_simple_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_support_03_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_support_03_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_vert_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_trim_vert_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_01b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_b01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_b01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_bigrib_02_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_bigrib_02_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_bplate_06_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_bplate_06_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_panel_05_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_panels_08_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_panels_08_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_panels_08b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_panels_08b_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_pipe_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_pipe_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_u207_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eX_wall_u207_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetalBase01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetalBase01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetalBase02_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetalBase02_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetalBase03_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetalBase03_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetalBase05Rust_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetalBase05Rust_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetalFloor02_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetalFloor02_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetal_plate01B_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetal_plate01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetal_plate01c_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetal_plate01c_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetalrib01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/eX/eXmetalrib01_gloss.tga
===================================================================
(Binary files differ)

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

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/asphalt_1_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/asphalt_2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/asphalt_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/asphalt_side_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/br_tiles_blood_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/br_tiles_brkblood_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/br_tiles_broke2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/br_tiles_broke_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/br_tiles_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/carpet_drty_blood2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/carpet_drty_blood_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/carpet_drty_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/floortech1_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/floortile1_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/floortile1b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/floortile1bbrown.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/floortile1bbrown_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/floortilebig1b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/floortilebig2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/floortilebig_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/floortilebig_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/flr_grts_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/flr_grts_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/flr_grtswrn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/flr_grtswrn_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/metalflr1_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/metalflr1b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/metalflr1c_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/mtl_flooring_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/stile_cln_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/stile_drty_brk2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/stile_drty_brk_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/stile_drty_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/tile_brn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_floors/tile_brn_lite_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_grates/flr_grt_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_grates/flrgrt_h_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_grates/grt_ow_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_grates/grt_rst1_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_grates/smlgrt_rnd2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_grates/smlgrt_rnd_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_grates/smlgrt_sqr_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_grates/smllgrt_h_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/de-r_mtl_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/de-r_mtl_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/doormtl2_cln_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/doormtl2_drty2_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/doormtl2_drty_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/doormtl2_rusty_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_cln_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_cln_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_cmbo_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_drty2_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_drty2_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_drty_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_drty_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_rusty_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/doormtl_rusty_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst2_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst2_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst3_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst3_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst4_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst4_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst5_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/mtl_rst5_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/rmetal1_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/rmetal1b_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2b_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2b_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2c_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2c_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2d_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2d_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2e_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_metals/rmetal2e_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_misc/mtl_support_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_misc/mtl_support_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_misc/mtl_support_wrn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_misc/mtl_support_wrn_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_misc/wrn_big2b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_trims/brdmtl_rst_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_trims/brdmtl_rst_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_trims/smllwrnbrd_mr_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_trims/smllwrnbrd_mr_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_trims/trm_rivetmtlgrt_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_trims/trm_rivetmtlgrt_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_trims/trm_rivetmtlpipes_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_trims/trm_rivetmtlpipes_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/anc_wll2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/anc_wll2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/ancient3_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/ancient3_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm2wrn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm2wrn_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm_jericho_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm_jericho_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm_ow_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btm_ow_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btmmtl_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btmmtl_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btmwrn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_btmwrn_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_jericho_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_jericho_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_top_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/cementwall_top_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/crude_2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/crude_2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/stonewall_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_walls/stonewall_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_woods/wood_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_woods/wood_pnl_drty_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil1_woods/wood_rot_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basefloor/flr_tmtl_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basefloor/flr_tmtl_drk_bld_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basefloor/flr_tmtl_drk_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basefloor/flr_tmtl_drkwrn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basemetal/mtl_rstb_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basemetal/mtl_rstb_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basemetal/p_mtl_brn_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/cementwall_btm_gore_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/dirtybrick_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/dirtybrick_faded_btm_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/dirtybrick_faded_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/dirtybrick_faded_stn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/dirtybrick_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_btmwrnblah_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_chn_grt_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_fnce2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_fnce3_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_fnce4_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_fnce_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray3_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_ow_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_sec1_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_sec2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_sec3_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_sec4_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray4_sec5_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_gray_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_grtmdl_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_grtodd2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_grtodd3_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_grtodd_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/mtl_midwrn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/t_wll_fnctrm2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/t_wll_fnctrm_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/t_wll_fnctrm_ow_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil2_basewall/t_wll_fnctrm_sign_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/bdirt2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/bdirt_blood_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/bdirt_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_mhole_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_big2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_big2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_big2b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_big2b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_big_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_big_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_bld_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_bld_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_bldb_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_bldb_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_crkd2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_crkd2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_crked_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_crked_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_oddtile_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemdrk_ot2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk3_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk4_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk5_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk5_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/cemtiledrk_mhbrk_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/woodvfloor3_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/woodvfloor3_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_floors/woodvfloor_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_pipeswll_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_pipeswll_drk_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_pipeswll_drk_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_pipeswll_drkc-b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_pipeswll_drkc-b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_pipeswll_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2-yellow_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2_wrn2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2_wrn2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2_wrn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt2_wrn_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt_wrn2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt_wrn2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt_wrn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtl_rivplt_wrn_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtldrk0_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_metals/mtldrk1_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_misc/b_rock.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_roofs/s_roof2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupgrt2_light_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupgrt2_light_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt3wrn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt3wrn_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt3wrnb_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt3wrnb_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt4_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt4_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt4b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt4b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt4s_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt4s_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grt_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grts_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grts_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grtwrn-d_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grtwrn-d_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grtwrn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_grtwrn_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_pipes_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_pipes_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_wrn-d_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_wrn-d_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_wrn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_support/mtlsupport_wrn_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn1_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn1_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty-yellow_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty-yellow_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty_grt_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty_grt_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty_pipes_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drty_pipes_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drtyhfx_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn2drtyhfx_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drty-yellow_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drty-yellow_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drty_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drty_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drtygrt_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drtypipes_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn3drtypipes_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil3_walls/mtlwll_twrn_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_d_techwalls/d_tech_dw2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_d_techwalls/d_tech_dw2g_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_d_techwalls/d_tech_dwb_light_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_metals/hexametal_drk_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_metals/hexametal_drk_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_metals/mtlb_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_metals/mtlb_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_metals/mtloverlaprwll_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_metals/mtloverlaprwll_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_metals/tekwallmulti_wrnlights2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_metals/tekwallmulti_wrnlights_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_metals/trim_wrnrivets_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_metals/trim_wrnrivets_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_techwalls/mechanical_old_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_techwalls/mechanical_old_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/d_stnwll_mossbtm_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/d_stone_fourthwll_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/d_stone_fourthwll_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/d_stone_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/d_stone_halfwll_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/d_stonewll_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/d_stonewll_drk2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/d_stonewll_drk3_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/d_stonewll_drk_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/d_stonewll_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/drk_brnbrick_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/drk_brnbrick_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/rbrick_bttmcem_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil4_walls/rbrick_bttmcem_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil5_metal/rstmtl_smllpnls_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil5_metal/rstmtl_smllpnls_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6c_floor_b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6c_floor_b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6c_floor_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6c_floor_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6c_floordented_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6c_floordented_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6l_floor_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6l_stepedge_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-5_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-6_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor-7_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchcfloor_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-1_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-3_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-4_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-5_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-5_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-6_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-6_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-7_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine-7_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchengine_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-5_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-6_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor-7_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6launchlfloor_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6tekmtlrflr_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_floors/e6tekmtlrflr_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_support/e6wallsupprt_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_walls/e6cyb0rpipes_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_walls/e6girdergrate2b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_walls/e6girdergrate_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_walls/e6girdersupport_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_walls/e6gridergrtwll_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_walls/e6simpwallsupp_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_walls/e6simpwallsupp_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_walls/e6simpwallsupp_rst_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil6_walls/e6simpwallsupp_rst_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8_base1_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8_base1b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8_base1c_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8_base1c_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8base_blue_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8base_blue_norm.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8base_red_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8crete01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8crete03_blue_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8crete03_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8crete03_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8crete03_red_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8crete_blue_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8creteold_blue_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8creteold_red_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8metal01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8metal01_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8metal03b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8metal03c_blue_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8metal03c_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8metal03c_red_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8metal_blue_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_base/e8metal_red_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor01_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor03_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor03_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04_red_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04_red_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04warn2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04warn2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04warn2red.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04warn_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor04warn_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05c_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05c_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05step_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor05step_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangfloor_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangwarnmix_b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangwarnmix_b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangwarnmix_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangwarnmix_c_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangwarnmix_c_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8clangwarnmix_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8crete01stair1_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8crete01stair1_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8cretefloor01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8cretefloor01b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8cretefloor01c_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8cretefloor_tile_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8spacecrete_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8warn2steplight_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_floor/e8warn2steplight_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8_jumppad02_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8_jumppad02r_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8_jumppad02w_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8beam_blue.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-1.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-2.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-4.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-5.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-5_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-6.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02-6_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-1.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-2.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-4.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-5.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-5_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-6.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey-6_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02grey_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red-5_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red-6_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_fx/e8jumpspawn02red_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_lights/e8_rlight_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_lights/e8_rlightb2.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_lights/e8_rlighty.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_lights/e8_rlighty_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8_btrim01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8_btrim01_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8_btrim04b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8_btrim05_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8beam01_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8beam01b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8bolttrim_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8bolttrim_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8cretesupport_blue_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8cretesupport_red_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8mtltrim1b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8mtltrim1b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8smlltrim1_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8smlltrim1_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8smlltrim1b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8smlltrim1b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8support01b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8support01c_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8support02_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8support02b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8support02c_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8support05_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8support05_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8trimlight_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8wrntrim_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_trim/e8wrntrim_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall1_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall1_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall1b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall1b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall3_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall3_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall3b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall3b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall4_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8_mtlwall4_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03b_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03c_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03c_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03cc_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03cc_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03d_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03d_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03e_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03e_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03e_neu.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03f_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03f_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03g_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete03g_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete_pillar_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete_pillar_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete_pillarb_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete_pillarb_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete_pillarc_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil8_wall/e8crete_pillarc_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil_trim/trimwrn_rstmtl_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/evil_trim/trimwrn_rstmtl_gloss.jpg
===================================================================
(Binary files differ)

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

Modified: branches/nexuiz-2.0/data/textures/final_rage/drkmtl_default.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/drkmtl_default_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/drkmtl_default_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/drkmtl_oddtrim.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/drkmtl_oddtrim_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/drkmtl_oddtrim_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/dwtrim_grill_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/dwtrim_grill_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/lamp2_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/lava.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/lava_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/mtltekfloor_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/mtltekfloor_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/mtltekfloor_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/final_rage/nd-lava.jpg
===================================================================
(Binary files differ)

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

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

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

Modified: branches/nexuiz-2.0/data/textures/grenademodelskin_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/harlequin_sky/env/nebular_bk.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/harlequin_sky/env/nebular_dn.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/harlequin_sky/env/nebular_ft.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/harlequin_sky/env/nebular_lf.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/harlequin_sky/env/nebular_rt.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/harlequin_sky/env/nebular_up.jpg
===================================================================
(Binary files differ)

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

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

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

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

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

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

Modified: branches/nexuiz-2.0/data/textures/invincible.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/invincible_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/jumppad_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/kaznexctf2/large_blue.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/kaznexctf2/large_blue_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/kaznexctf2/small_blue.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/kaznexctf2/small_blue_glow.jpg
===================================================================
(Binary files differ)

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

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

Modified: branches/nexuiz-2.0/data/textures/ldarl.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/liquids/e7sfx_lava.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/liquids/protolava_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/liquids/slime1.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/liquids/slime2.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/liquids/slime2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/liquids/slime2_norm.jpg
===================================================================
(Binary files differ)

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

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

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

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

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

Modified: branches/nexuiz-2.0/data/textures/morphed/e8support02c_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/morphed/gelslime_bright.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/morphed/gelslime_glow.jpg
===================================================================
(Binary files differ)

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

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

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

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

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

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

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

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

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

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

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

Modified: branches/nexuiz-2.0/data/textures/rl_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/rocketam_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/rrclip_d.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/rrclip_d_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/rrfx_d.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/rrock_d.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/rustymetal_tex/wall01_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/rustymetal_tex/wall02_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/rustymetal_tex/wall03_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/rustymetal_tex/wall04_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/rustymetal_tex/wall05_gloss.jpg
===================================================================
(Binary files differ)

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

Modified: branches/nexuiz-2.0/data/textures/savdm6ish/floor01_5_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/savdm6ish/floor01_5_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/savdm6ish/mmetal_1_6_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/savdm6ish/mmetal_1_6_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/savdm6ish/sfloor1_2_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/savdm6ish/sfloor1_2_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/savdm6ish/wall14_5_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/savdm6ish/wall14_5_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/savdm6ish/wiz1_4_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/savdm6ish/wiz1_4_gloss.jpg
===================================================================
(Binary files differ)

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

Modified: branches/nexuiz-2.0/data/textures/shield_seamless(2nd texture)_gloss.tga
===================================================================
(Binary files differ)

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

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

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

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

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

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

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

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

Modified: branches/nexuiz-2.0/data/textures/straledm6/creteshorter_y.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/e8_btrim04c.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/jumppad.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/jumppad_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/light_tube_green.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/light_tube_green_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/newstrip_grey.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/newstrip_grey_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/newstrip_red.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/newstrip_red_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slime_rev-1.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slime_rev-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slime_rev-2.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slime_rev-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slime_rev-3.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slime_rev-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slime_rev.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slime_rev_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-1.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-10.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-10_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-11.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-11_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-2.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-3.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-4.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-5.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-5_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-6.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-6_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-7.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-7_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-8.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-8_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-9.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad-9_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/slimepit_ad_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/stepside_mtllight_glow.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/stralenex5_fakesky.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/stralenex5_water.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/stralenex_roundlight.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/stralenex_roundlight_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/stralenex_trimlight.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/stralenex1/stralenex_trimlight_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/e6redmtl_light.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/e6redmtl_light_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/e8beam_yellow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/e8circle_yellow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/eX_cretefloor_01glow_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/eX_cretefloor_01glow_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/eX_cretefloor_01glow_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/eX_trim_simple_01b.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/eX_trim_simple_01b_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light-liney-1.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light-liney-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light-liney-2.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light-liney-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light-liney-3.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light-liney-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light-liney-4.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light-liney-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light-liney-5.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light-liney-5_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light-liney.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light-liney_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light-lineya.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light_slots-1.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light_slots-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light_slots-2.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light_slots-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light_slots-3.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light_slots-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light_slots-4.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light_slots-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light_slots.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/light_slots_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/sand_bump.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/sand_gloss.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp-1.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp-1_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp-2.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp-2_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp-3.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp-3_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp-4.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp-4_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp-5.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp-5_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp-6.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp-6_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_jp_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_rlight.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_rlight_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_ylight.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength/strength_ylight_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/strength_glow.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_data/frozenground_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_data/mudground01_bump.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_data/snow01_gloss.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2/grass01-rock05.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2/leafs01-rock02.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2/mossrock02-mudground04.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2/mudground01_rock01.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2/mudground02-rock06.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2/sand-rock07.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2/snow-rock05.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/grass01-rock05.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/leafs01-rock02.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/mossrock02-mudground04.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/mudground01_rock01.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/mudground02-rock06.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/sand-rock07.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/terrain_dotproduct2projected/snow-rock05.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/tznex01/stained_glass_nexlogo_blue.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/tznex01/stained_glass_nexlogo_red.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/water/pool3d_5e.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/water/ruiner_water.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/water/slime1.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/water/slime2.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/water/tzorkwater-blue.jpg
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/water/water0.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/water/water1.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/textures/water/water2.tga
===================================================================
(Binary files differ)

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

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

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

Modified: branches/nexuiz-2.0/data/weapons.cfg
===================================================================
--- branches/nexuiz-2.0/data/weapons.cfg	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/data/weapons.cfg	2008-10-03 18:32:25 UTC (rev 4619)
@@ -104,6 +104,7 @@
 set g_balance_grenadelauncher_secondary_refire 0.6
 set g_balance_grenadelauncher_secondary_animtime 0.3
 set g_balance_grenadelauncher_secondary_ammo 2
+set g_balance_grenadelauncher_secondary_health 10
 
 set g_balance_electro_primary_damage 80
 set g_balance_electro_primary_edgedamage 0
@@ -125,6 +126,7 @@
 set g_balance_electro_secondary_refire 0.3
 set g_balance_electro_secondary_animtime 0.3
 set g_balance_electro_secondary_ammo 2
+set g_balance_electro_secondary_health 5
 set g_balance_electro_combo_damage 70
 set g_balance_electro_combo_edgedamage 0
 set g_balance_electro_combo_force 200
@@ -198,16 +200,17 @@
 set g_balance_hagar_secondary_ammo 1
 
 set g_balance_rocketlauncher_damage 130
-set g_balance_rocketlauncher_edgedamage 20
+set g_balance_rocketlauncher_edgedamage 50
 set g_balance_rocketlauncher_force 600
-set g_balance_rocketlauncher_radius 150
-set g_balance_rocketlauncher_speed 880
+set g_balance_rocketlauncher_radius 170
+set g_balance_rocketlauncher_speed 850
 set g_balance_rocketlauncher_speedaccel 0
 set g_balance_rocketlauncher_speedstart 850
 set g_balance_rocketlauncher_lifetime 30
 set g_balance_rocketlauncher_refire 1
 set g_balance_rocketlauncher_animtime 0.3
 set g_balance_rocketlauncher_ammo 3
+set g_balance_rocketlauncher_health 30
 set g_balance_rocketlauncher_detonatedelay 0.2 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time
 set g_balance_rocketlauncher_laserguided_speed 1000  //650
 set g_balance_rocketlauncher_laserguided_speedaccel 0

Modified: branches/nexuiz-2.0/misc/demotc-race-record-extractor.sh
===================================================================
--- branches/nexuiz-2.0/misc/demotc-race-record-extractor.sh	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/misc/demotc-race-record-extractor.sh	2008-10-03 18:32:25 UTC (rev 4619)
@@ -2,11 +2,13 @@
 
 d=$1
 i=0
-perl demotc.pl "$d" 'all-time fastest lap record with (.*)\n' | while IFS=" " read -r timecode result; do
+perl demotc.pl grep "$d" 'all-time fastest lap record with (.*)\n' | while IFS=" " read -r timecode result; do
 	timecode=${timecode%:}
 	result=${result#\"}
 	result=${result%\"}
 
+	echo "Possible record found at $timecode: $result, extracting..."
+
 	minutes=${result%%:*}
 	result=${result#*:}
 	seconds=${result%%.*}
@@ -16,6 +18,6 @@
 	timecode_start=`echo "$timecode - $minutes*60 - $seconds - $tenths*0.1 - 2" | bc -l`
 	timecode_end=`echo "$timecode + 2" | bc -l`
 	i=$(($i + 1))
-	perl demotc.pl "$d" "playback-$i.dem" "$timecode_start" "$timecode_end"
-	perl demotc.pl "$d" "capture-$i.dem" "$timecode_start" "$timecode_end" --capture
+	perl demotc.pl cut "$d" "playback-$i.dem" "$timecode_start" "$timecode_end"
+	perl demotc.pl cut "$d" "capture-$i.dem" "$timecode_start" "$timecode_end" --capture
 done

Modified: branches/nexuiz-2.0/misc/demotc.pl
===================================================================
--- branches/nexuiz-2.0/misc/demotc.pl	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/misc/demotc.pl	2008-10-03 18:32:25 UTC (rev 4619)
@@ -4,11 +4,6 @@
 # works by looking for time codes in the demo
 # and injecting playback speed commands
 
-# usage:
-#   ./demotc.pl infile outfile tc0 tc1 - cuts the demo file for playback
-#   ./demotc.pl infile outfile tc0 tc1 --capture - cuts the demo file for video capture (it will automatically write a dpvideo001.avi file of the selected time range when playing)
-#   ./demotc.pl infile pattern - looks for a pattern, prints parentheses matches
-
 use strict;
 use warnings;
 
@@ -21,19 +16,46 @@
 
 # opening the files
 
-die "Usage: $0 infile outfile tc_start tc_end [--capture], or $0 infile pattern"
-	if @ARGV != 2 && @ARGV != 4 && @ARGV != 5;
-my ($in, $out, $tc0, $tc1, $capture) = (@ARGV, undef, undef, undef);
+my ($in, $out, $tc0, $tc1, $pattern, $capture);
 
-$in ne $out
-	or die "Input and output file may not be the same!";
+my $mode = shift @ARGV;
+$mode = 'help' if not defined $mode;
 
+if($mode eq 'grep' && @ARGV == 2)
+{
+	$in = $ARGV[0];
+	$pattern = $ARGV[1];
+}
+elsif($mode eq 'uncut' && @ARGV == 2)
+{
+	$in = $ARGV[0];
+	$out = $ARGV[1];
+}
+elsif($mode eq 'cut' && (@ARGV == 4 || @ARGV == 5))
+{
+	$in = $ARGV[0];
+	$out = $ARGV[1];
+	$tc0 = $ARGV[2];
+	$tc1 = $ARGV[3];
+	$capture = (@ARGV == 5);
+}
+else
+{
+	die "Usage: $0 cut infile outfile tc_start tc_end [--capture], or $0 uncut infile outfile, or $0 grep infile pattern\n"
+}
+
+if($mode ne 'grep')
+{
+	$in ne $out
+		or die "Input and output file may not be the same!";
+}
+
 open my $infh, "<", $in
 	or die "open $in: $!";
 binmode $infh;
 
 my $outfh;
-if(defined $tc0) # cutting
+if($mode ne 'grep') # cutting
 {
 	open $outfh, ">", $out
 		or die "open $out: $!";
@@ -44,11 +66,11 @@
 
 $/ = "\012";
 my $cdtrack = <$infh>;
-print $outfh $cdtrack if $outfh;
+print $outfh $cdtrack if $mode ne 'grep';
 
 # 2. packets
 
-my $tc = 0;
+my $tc = undef;
 
 my $first = 1;
 my $demo_started = 0;
@@ -65,37 +87,40 @@
 	die "Invalid demo packet"
 		unless $length == read $infh, my($data), $length;
 	
+	# remove existing cut marks
+	$data =~ s{^\011\n//CUTMARK\n[^\0]*\0}{};
+	
 	if(substr($data, 0, 1) eq "\007") # svc_time
 	{
 		$tc = unpack "f", substr $data, 1, 4;
 	}
 
-	if(defined $tc0)
+	if($mode eq 'cut' && defined $tc)
 	{
 		if($first)
 		{
-			$inject_buffer = "\011\nslowmo 100\n\000";
+			$inject_buffer = "\011\n//CUTMARK\nslowmo 100\n\000";
 			$first = 0;
 		}
 		if($demo_started < 1 && $tc > $tc0 - 50)
 		{
-			$inject_buffer = "\011\nslowmo 10\n\000";
+			$inject_buffer = "\011\n//CUTMARK\nslowmo 10\n\000";
 			$demo_started = 1;
 		}
 		if($demo_started < 2 && $tc > $tc0 - 5)
 		{
-			$inject_buffer = "\011\nslowmo 1\n\000";
+			$inject_buffer = "\011\n//CUTMARK\nslowmo 1\n\000";
 			$demo_started = 2;
 		}
 		if($demo_started < 3 && $tc > $tc0)
 		{
 			if($capture)
 			{
-				$inject_buffer = "\011\ncl_capturevideo 1\n\000";
+				$inject_buffer = "\011\n//CUTMARK\ncl_capturevideo 1\n\000";
 			}
 			else
 			{
-				$inject_buffer = "\011\nslowmo 0; defer 1 \"slowmo 1\"\n\000";
+				$inject_buffer = "\011\n//CUTMARK\nslowmo 0; defer 1 \"slowmo 1\"\n\000";
 			}
 			$demo_started = 3;
 		}
@@ -103,18 +128,18 @@
 		{
 			if($capture)
 			{
-				$inject_buffer = "\011\ncl_capturevideo 0; defer 0.5 \"disconnect\"\n\000";
+				$inject_buffer = "\011\n//CUTMARK\ncl_capturevideo 0; defer 0.5 \"disconnect\"\n\000";
 			}
 			else
 			{
-				$inject_buffer = "\011\ndefer 0.5 \"disconnect\"\n\000";
+				$inject_buffer = "\011\n//CUTMARK\ndefer 0.5 \"disconnect\"\n\000";
 			}
 			$demo_stopped = 1;
 		}
 	}
-	else
+	elsif($mode eq 'grep')
 	{
-		if(my @l = ($data =~ /$out/))
+		if(my @l = ($data =~ /$pattern/))
 		{
 			print "$tc:";
 			for(@l)
@@ -125,10 +150,10 @@
 		}
 	}
 	
-	next unless $outfh;
-	if(length($data . $inject_buffer) < 65536)
+	next if $mode eq 'grep';
+	if(length($inject_buffer . $data) < 65536)
 	{
-		$data .= $inject_buffer;
+		$data = $inject_buffer . $data;
 		$inject_buffer = "";
 	}
 	print $outfh pack("V", length $data);
@@ -136,5 +161,5 @@
 	print $outfh $data;
 }
 
-close $outfh if $outfh;
+close $outfh if $mode ne 'grep';
 close $infh;

Modified: branches/nexuiz-2.0/misc/gtkradiant/gtkradiant-nexuiz-patchset.diff
===================================================================
--- branches/nexuiz-2.0/misc/gtkradiant/gtkradiant-nexuiz-patchset.diff	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/misc/gtkradiant/gtkradiant-nexuiz-patchset.diff	2008-10-03 18:32:25 UTC (rev 4619)
@@ -856,6 +856,19 @@
  	}
  	
  	/* clean up map name */
+Index: tools/quake3/q3map2/game_quake3.h
+===================================================================
+--- tools/quake3/q3map2/game_quake3.h.orig	2008-09-11 10:59:01.000000000 +0200
++++ tools/quake3/q3map2/game_quake3.h	2008-09-11 10:59:07.000000000 +0200
+@@ -114,7 +114,7 @@
+ 	1.0f,				/* lightmap gamma */
+ 	1.0f,				/* lightmap compensate */
+ 	"IBSP",				/* bsp file prefix */
+-	47,					/* bsp file version */
++	46,					/* bsp file version */
+ 	qfalse,				/* cod-style lump len/ofs order */
+ 	LoadIBSPFile,		/* bsp load function */
+ 	WriteIBSPFile,		/* bsp write function */
 Index: tools/quake3/q3map2/model.c
 ===================================================================
 --- tools/quake3/q3map2/model.c.orig	2008-09-06 15:32:05.000000000 +0200
@@ -2296,7 +2309,7 @@
  /* version */
 -#define Q3MAP_VERSION	"2.5.17"
 -#define Q3MAP_MOTD		"Last one turns the lights off"
-+#define Q3MAP_VERSION	"2.5.17-div0-obj-decomptexcoords-snapplane-UTavgcolorfix-UTfloodlight-UTlmexposure-UTtrianglecheck"
++#define Q3MAP_VERSION	"2.5.17-div0-obj-decomptexcoords-format46-snapplane-UTavgcolorfix-UTfloodlight-UTlmexposure-UTtrianglecheck"
 +#define Q3MAP_MOTD		"Light some candles, put them on a wooden table, take a photo, and paste it on the lightmaps!"
  
  

Modified: branches/nexuiz-2.0/misc/nexuiz-map-compiler
===================================================================
--- branches/nexuiz-2.0/misc/nexuiz-map-compiler	2008-10-03 15:44:06 UTC (rev 4618)
+++ branches/nexuiz-2.0/misc/nexuiz-map-compiler	2008-10-03 18:32:25 UTC (rev 4619)
@@ -18,13 +18,13 @@
 	our $Q3MAP2FLAGS = '';
 
 	# Default flags for the -bsp stage
-	our $BSPFLAGS    = '-samplesize 8 -mv 1000000 -mi 6000000';
+	our $BSPFLAGS    = '-samplesize 8 -minsamplesize 4 -mv 1000000 -mi 6000000';
 
 	# Default flags for the -vis stage
 	our $VISFLAGS    = '';
 
 	# Default flags for the -light stage
-	our $LIGHTFLAGS  = '-deluxe -patchshadows -samples 3';
+	our $LIGHTFLAGS  = '-deluxe -patchshadows -samples 3 -lightmapsize 512 -bounce 8 -fastbounce -bouncegrid';
 
 # end of user changable part
 
@@ -105,9 +105,11 @@
 	}
 }
 
+my $game = 'compile.' . int rand 99999999; # mktemp on win32?
+
 sub q3map2(@)
 {
-	my @args = ($Q3MAP2, split(/\s+/, $Q3MAP2FLAGS), '-game', 'quake3', '-fs_basepath', $NEXUIZDIR, '-fs_game', 'data', '-v', @_);
+	my @args = ($Q3MAP2, split(/\s+/, $Q3MAP2FLAGS), '-game', 'nexuiz', '-fs_basepath', $NEXUIZDIR, '-fs_game', $game, '-v', @_);
 	print "\$ @args\n";
 	return !system @args;
 }
@@ -115,11 +117,30 @@
 (my $mapdir = getcwd()) =~ s!/[^/]*(?:$)!!;
 $mapdir = "/" if $mapdir eq "";
 
-unlink "$ENV{HOME}/.q3a/data";
-mkdir "$ENV{HOME}/.q3a";
-symlink "$mapdir", "$ENV{HOME}/.q3a/data"
-	or die "Setting up directory structure, $mapdir -> $ENV{HOME}/.q3a/data: $!";
+unlink "$NEXUIZDIR/$game";
+mkdir "$NEXUIZDIR";
+eval
+{
+	symlink "$mapdir", "$NEXUIZDIR/$game"
+		or die "THROW: Setting up directory structure, $mapdir -> $NEXUIZDIR/$game: $!";
+	1;
+}
+or do
+{
+	die $1
+		if $@ =~ /^THROW: (.*)/s;
+	# if we get here, symlinks do not work, as symlink() itself raised the exception
+	# this should only happen on Win32
+	if($^O ne "MSWin32")
+	{
+		die "Symlinks not supported ($@) but invalid OS signature, this must be MSWin32, but $^O got reported";
+	}
 
+	# TODO support Windows here somehow
+	# maybe by copying all files and copying back the finished compile? (ugh)
+	die "Windows is not supported yet.";
+};
+
 my ($prescale, $postscale) = ($options->{scale} =~ /^([0-9.]+)(?::([0-9.]+))?$/);
 $postscale = 1 if not defined $postscale;
 
@@ -171,6 +192,7 @@
 		}
 		close $shaderlist;
 
+		unlink <$m/lm_*>; # delete old external lightmaps
 		q3map2 '-bsp', '-meta', @{$options->{bsp}},   "$m.map"
 			or die "-bsp: $?";
 		if($prescale != 1)




More information about the nexuiz-commits mailing list