rebrand nexuiz -> xonotic, will fix possible mess later
authorRudolf Polzer <rpolzer@nb-04.(none)>
Thu, 18 Mar 2010 18:35:13 +0000 (19:35 +0100)
committerRudolf Polzer <rpolzer@nb-04.(none)>
Thu, 18 Mar 2010 18:35:13 +0000 (19:35 +0100)
203 files changed:
Makefile
config_update.cfg
default.cfg
defaultHavoc.cfg
defaultNexuiz.cfg [deleted file]
defaultXonotic.cfg [new file with mode: 0644]
demos/bench1.dem [deleted file]
demos/demo1.dem [deleted file]
demos/demo2.dem [deleted file]
demos/demo3.dem [deleted file]
demos/demo4.dem [deleted file]
demos/demo5.dem [deleted file]
demos/piece-o-cake.dem [deleted file]
effectinfo.txt
input-tuba.cfg
models/sprites/make-sprites.sh
nexuiz-credits.txt [deleted file]
nexuiz.modinfo [deleted file]
physics10.cfg
physics11.cfg
physics151.cfg
physics151b.cfg
physics16rc1.cfg
physics20.cfg
physics25.cfg
physics26.cfg
physicsHavoc.cfg
physicsNoQWBunny.cfg
physicsQ.cfg
physicsQ2a.cfg
qcsrc/client/projectile.qc
qcsrc/client/teamradar.qc
qcsrc/common/constants.qh
qcsrc/menu/classes.c
qcsrc/menu/nexuiz/bigbutton.c [deleted file]
qcsrc/menu/nexuiz/bigcommandbutton.c [deleted file]
qcsrc/menu/nexuiz/button.c [deleted file]
qcsrc/menu/nexuiz/campaign.c [deleted file]
qcsrc/menu/nexuiz/charmap.c [deleted file]
qcsrc/menu/nexuiz/checkbox.c [deleted file]
qcsrc/menu/nexuiz/checkbox_slider_invalid.c [deleted file]
qcsrc/menu/nexuiz/colorbutton.c [deleted file]
qcsrc/menu/nexuiz/colorpicker.c [deleted file]
qcsrc/menu/nexuiz/commandbutton.c [deleted file]
qcsrc/menu/nexuiz/credits.c [deleted file]
qcsrc/menu/nexuiz/crosshairbutton.c [deleted file]
qcsrc/menu/nexuiz/cvarlist.c [deleted file]
qcsrc/menu/nexuiz/demolist.c [deleted file]
qcsrc/menu/nexuiz/dialog.c [deleted file]
qcsrc/menu/nexuiz/dialog_credits.c [deleted file]
qcsrc/menu/nexuiz/dialog_multiplayer.c [deleted file]
qcsrc/menu/nexuiz/dialog_multiplayer_create.c [deleted file]
qcsrc/menu/nexuiz/dialog_multiplayer_create_advanced.c [deleted file]
qcsrc/menu/nexuiz/dialog_multiplayer_create_mapinfo.c [deleted file]
qcsrc/menu/nexuiz/dialog_multiplayer_create_mutators.c [deleted file]
qcsrc/menu/nexuiz/dialog_multiplayer_demo.c [deleted file]
qcsrc/menu/nexuiz/dialog_multiplayer_join.c [deleted file]
qcsrc/menu/nexuiz/dialog_multiplayer_join_serverinfo.c [deleted file]
qcsrc/menu/nexuiz/dialog_multiplayer_playersetup.c [deleted file]
qcsrc/menu/nexuiz/dialog_multiplayer_playersetup_radar.c [deleted file]
qcsrc/menu/nexuiz/dialog_multiplayer_playersetup_weapons.c [deleted file]
qcsrc/menu/nexuiz/dialog_news.c [deleted file]
qcsrc/menu/nexuiz/dialog_quit.c [deleted file]
qcsrc/menu/nexuiz/dialog_settings.c [deleted file]
qcsrc/menu/nexuiz/dialog_settings_audio.c [deleted file]
qcsrc/menu/nexuiz/dialog_settings_effects.c [deleted file]
qcsrc/menu/nexuiz/dialog_settings_input.c [deleted file]
qcsrc/menu/nexuiz/dialog_settings_input_userbind.c [deleted file]
qcsrc/menu/nexuiz/dialog_settings_misc.c [deleted file]
qcsrc/menu/nexuiz/dialog_settings_misc_cvars.c [deleted file]
qcsrc/menu/nexuiz/dialog_settings_network.c [deleted file]
qcsrc/menu/nexuiz/dialog_settings_video.c [deleted file]
qcsrc/menu/nexuiz/dialog_singleplayer.c [deleted file]
qcsrc/menu/nexuiz/dialog_singleplayer_winner.c [deleted file]
qcsrc/menu/nexuiz/dialog_teamselect.c [deleted file]
qcsrc/menu/nexuiz/gametypebutton.c [deleted file]
qcsrc/menu/nexuiz/image.c [deleted file]
qcsrc/menu/nexuiz/inputbox.c [deleted file]
qcsrc/menu/nexuiz/keybinder.c [deleted file]
qcsrc/menu/nexuiz/listbox.c [deleted file]
qcsrc/menu/nexuiz/mainwindow.c [deleted file]
qcsrc/menu/nexuiz/maplist.c [deleted file]
qcsrc/menu/nexuiz/modbutton.c [deleted file]
qcsrc/menu/nexuiz/nexposee.c [deleted file]
qcsrc/menu/nexuiz/playerlist.c [deleted file]
qcsrc/menu/nexuiz/playermodel.c [deleted file]
qcsrc/menu/nexuiz/radiobutton.c [deleted file]
qcsrc/menu/nexuiz/rootdialog.c [deleted file]
qcsrc/menu/nexuiz/serverlist.c [deleted file]
qcsrc/menu/nexuiz/skinlist.c [deleted file]
qcsrc/menu/nexuiz/slider.c [deleted file]
qcsrc/menu/nexuiz/slider_decibels.c [deleted file]
qcsrc/menu/nexuiz/slider_resolution.c [deleted file]
qcsrc/menu/nexuiz/tab.c [deleted file]
qcsrc/menu/nexuiz/tabcontroller.c [deleted file]
qcsrc/menu/nexuiz/textlabel.c [deleted file]
qcsrc/menu/nexuiz/textslider.c [deleted file]
qcsrc/menu/nexuiz/util.qc [deleted file]
qcsrc/menu/nexuiz/util.qh [deleted file]
qcsrc/menu/nexuiz/weaponslist.c [deleted file]
qcsrc/menu/progs.src
qcsrc/menu/xonotic/bigbutton.c [new file with mode: 0644]
qcsrc/menu/xonotic/bigcommandbutton.c [new file with mode: 0644]
qcsrc/menu/xonotic/button.c [new file with mode: 0644]
qcsrc/menu/xonotic/campaign.c [new file with mode: 0644]
qcsrc/menu/xonotic/charmap.c [new file with mode: 0644]
qcsrc/menu/xonotic/checkbox.c [new file with mode: 0644]
qcsrc/menu/xonotic/checkbox_slider_invalid.c [new file with mode: 0644]
qcsrc/menu/xonotic/colorbutton.c [new file with mode: 0644]
qcsrc/menu/xonotic/colorpicker.c [new file with mode: 0644]
qcsrc/menu/xonotic/commandbutton.c [new file with mode: 0644]
qcsrc/menu/xonotic/credits.c [new file with mode: 0644]
qcsrc/menu/xonotic/crosshairbutton.c [new file with mode: 0644]
qcsrc/menu/xonotic/cvarlist.c [new file with mode: 0644]
qcsrc/menu/xonotic/demolist.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_credits.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_create.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_demo.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_join.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_radar.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_news.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_quit.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_settings.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_settings_audio.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_settings_effects.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_settings_input.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_settings_input_userbind.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_settings_misc.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_settings_misc_cvars.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_settings_network.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_settings_video.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_singleplayer.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_singleplayer_winner.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_teamselect.c [new file with mode: 0644]
qcsrc/menu/xonotic/gametypebutton.c [new file with mode: 0644]
qcsrc/menu/xonotic/image.c [new file with mode: 0644]
qcsrc/menu/xonotic/inputbox.c [new file with mode: 0644]
qcsrc/menu/xonotic/keybinder.c [new file with mode: 0644]
qcsrc/menu/xonotic/listbox.c [new file with mode: 0644]
qcsrc/menu/xonotic/mainwindow.c [new file with mode: 0644]
qcsrc/menu/xonotic/maplist.c [new file with mode: 0644]
qcsrc/menu/xonotic/modbutton.c [new file with mode: 0644]
qcsrc/menu/xonotic/nexposee.c [new file with mode: 0644]
qcsrc/menu/xonotic/playerlist.c [new file with mode: 0644]
qcsrc/menu/xonotic/playermodel.c [new file with mode: 0644]
qcsrc/menu/xonotic/radiobutton.c [new file with mode: 0644]
qcsrc/menu/xonotic/rootdialog.c [new file with mode: 0644]
qcsrc/menu/xonotic/serverlist.c [new file with mode: 0644]
qcsrc/menu/xonotic/skinlist.c [new file with mode: 0644]
qcsrc/menu/xonotic/slider.c [new file with mode: 0644]
qcsrc/menu/xonotic/slider_decibels.c [new file with mode: 0644]
qcsrc/menu/xonotic/slider_resolution.c [new file with mode: 0644]
qcsrc/menu/xonotic/tab.c [new file with mode: 0644]
qcsrc/menu/xonotic/tabcontroller.c [new file with mode: 0644]
qcsrc/menu/xonotic/textlabel.c [new file with mode: 0644]
qcsrc/menu/xonotic/textslider.c [new file with mode: 0644]
qcsrc/menu/xonotic/util.qc [new file with mode: 0644]
qcsrc/menu/xonotic/util.qh [new file with mode: 0644]
qcsrc/menu/xonotic/weaponslist.c [new file with mode: 0644]
qcsrc/nexuiz.ncb [deleted file]
qcsrc/nexuiz.sln [deleted file]
qcsrc/nexuiz.suo [deleted file]
qcsrc/nexuiz.vcproj [deleted file]
qcsrc/nexuiz.vcproj.user [deleted file]
qcsrc/server-testcase/run.sh
qcsrc/server/cl_client.qc
qcsrc/server/cl_physics.qc
qcsrc/server/cl_player.qc
qcsrc/server/clientcommands.qc
qcsrc/server/defs.qh
qcsrc/server/extensions.qh
qcsrc/server/g_hook.qc
qcsrc/server/g_swamp.qc
qcsrc/server/gamecommand.qc
qcsrc/server/miscfunctions.qc
qcsrc/server/monsters/defs.qc
qcsrc/server/race.qc
qcsrc/server/scores.qc
qcsrc/server/t_items.qc
qcsrc/server/t_quake.qc
qcsrc/server/t_quake3.qc
qcsrc/server/t_swamp.qc
qcsrc/server/teamplay.qc
qcsrc/server/todo.txt
scripts/default_project.proj
scripts/entities.def
scripts/liquids.shader
scripts/newsky_nebulae.txt
scripts/reaper.shader
scripts/sav-liquids.shader
server.cfg
serverbench.cfg
sound/cyberparcour01/rocket.txt
tooltips.db
xonotic-credits.txt [new file with mode: 0644]

index 1697539..7128da2 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -14,7 +14,7 @@ FTEQCCFLAGS_MENU ?=
 # It will automagically add an engine check with -TID and then change back to -TFTE
 FTEQCCFLAGS_CSPROGS ?= 
 
-# nexuiz svn build system overrides this by command line argument
+# xonotic svn build system overrides this by command line argument
 NEX_BUILDSYSTEM =
 
 all: qc
@@ -22,7 +22,7 @@ all: qc
 .PHONY: update-cvarcount
 update-cvarcount:
        [ "$(NEX_BUILDSYSTEM)" = "" ] || [ "$(NEX_BUILDSYSTEM)" = "1" ]
-       [ "$(NEX_BUILDSYSTEM)" != "" ] || { ! [ -f ../misc/netradiant-NexuizPack/nexuiz.game/data/entities.def ] || $(DIFF) scripts/entities.def ../misc/netradiant-NexuizPack/nexuiz.game/data/entities.def || { echo entities.def mismatch, please merge ../misc/netradiant-NexuizPack/nexuiz.game/data/entities.def and scripts/entities.def; exit 1; }; }
+       [ "$(NEX_BUILDSYSTEM)" != "" ] || { ! [ -f ../misc/netradiant-XonoticPack/xonotic.game/data/entities.def ] || $(DIFF) scripts/entities.def ../misc/netradiant-XonoticPack/xonotic.game/data/entities.def || { echo entities.def mismatch, please merge ../misc/netradiant-XonoticPack/xonotic.game/data/entities.def and scripts/entities.def; exit 1; }; }
        [ "$(NEX_BUILDSYSTEM)" != "" ] || { DO_NOT_RUN_MAKE=1 sh update-cvarcount.sh; }
 
 .PHONY: qc
@@ -79,7 +79,7 @@ $(PK3NAME): qc
                                ABSPK3NAME=$$PWD/$$ABSPK3NAME; \
                                ;; \
                esac; \
-               TDIR=`mktemp -d -t nexuizpk3.XXXXXX`; \
+               TDIR=`mktemp -d -t xonoticpk3.XXXXXX`; \
                cp -v progs.dat csprogs.dat menu.dat $$TDIR/; \
                svn export --force . $$TDIR; \
                cd $$TDIR; \
@@ -131,7 +131,7 @@ git-update:
 git-commit:
        git commit -a || true
        if echo -n 'Also send to server? Hit Enter for yes, ^C for no. '; read -r L; then \
-               git config svn-remote.svn.url svn://svn.icculus.org/nexuiz; \
+               git config svn-remote.svn.url svn://svn.icculus.org/xonotic; \
                git config svn-remote.svn.fetch trunk:refs/remotes/origin/master; \
                git svn dcommit; \
        fi
index 30d33a7..0143318 100644 (file)
@@ -2,7 +2,7 @@
 seta menu_vid_conwidth $vid_conwidth
 seta menu_vid_conheight $vid_conheight
 
-// fix cvar settings of the engine that Nexuiz is not compatible with
+// fix cvar settings of the engine that Xonotic is not compatible with
 alias _update_generic_r_dynamic_0 "r_dynamic 1; r_shadow_realtime_dlight 1"
 alias _update_generic_r_dynamic_1 ""
 alias _update_generic "_update_generic_r_dynamic_$r_dynamic"
index a5c1b20..8cf217c 100644 (file)
@@ -1,4 +1,4 @@
-exec defaultNexuiz.cfg
+exec defaultXonotic.cfg
 
-// we're not nexuiz 2.6 yet
+// we're not xonotic 2.6 yet
 //exec default25.cfg
index e1ce3b4..26ffd41 100644 (file)
@@ -1,6 +1,6 @@
-exec defaultNexuiz.cfg
+exec defaultXonotic.cfg
 
-// Settings changed by Nexuiz Havoc
+// Settings changed by Xonotic Havoc
 
 timelimit_override 10
 fraglimit_override 0
@@ -24,7 +24,7 @@ cl_bob 0
 cl_bobmodel 0
 v_kicktime 0
 gl_polyblend 0.2
-hostname "Nexuiz Havoc $g_nexuizversion Server"
+hostname "Xonotic Havoc $g_xonoticversion Server"
 set g_norecoil 1
 seta r_ambient 20
 seta menu_skin "simplygray"
diff --git a/defaultNexuiz.cfg b/defaultNexuiz.cfg
deleted file mode 100644 (file)
index fbb753a..0000000
+++ /dev/null
@@ -1,1778 +0,0 @@
-set g_nexuizversion 2.5svn     "Nexuiz version (formatted for humans)"
-
-//!<showbrand
-showbrand 3
-echo
-echo A warning about this being a SVN development version was set up.
-echo This build shall be used for development and testing only!
-echo
-echo If you want to disable this warning, add the line
-echo   showbrand 0
-echo to your autoexec.cfg.
-echo
-//!>showbrand
-
-// 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\""
-
-// detect dedicated server or client
-alias "_detect_dedicated_$qport" "$*"
-alias "_detect_dedicated_0" ""
-alias if_dedicated "_detect_dedicated_$qport ${* asis}"
-alias if_client "${* asis}"
-if_dedicated alias if_client ""
-
-seta g_configversion 0 "Configuration file version (used to upgrade settings) 0: first run, or previous start was <2.4.1  Later, it's overridden by config.cfg, version ranges are defined in config_update.cfg"
-
-// Nexuiz version (formatted for machines)
-// used to determine if a client version is compatible
-// this doesn't have to be bumped with every release
-// bump when clients become incompatible or any other perfectly good reason
-// (e.g. game data incompatibility, engine version incompatibility, etc
-// note: this automatically filters the server browser, clients of the new
-// version won't see old servers, and clients of the old version won't see new
-// servers either
-//
-// e.g. Nexuiz 1.5.1 RC1 will be 15101
-gameversion 20000
-gameversion_min 20000 // 2.5.2 still used this
-gameversion_max 20699 // 2.5 version allows any 2.6 release, but no more
-
-// compatibility guideline:
-//   version a.b.c   = a0b0c
-//   gameversion_min = a0(b-1)00 // show servers of the previous "line"
-//   gameversion_max = a0(b+1)99 // show servers of the next "line"
-// example: 2.6.3
-//   gameversion 20603
-//   gameversion_min 20500
-//   gameversion_max 20799
-// however, in 2.5.x, we will:
-//   gameversion = 20000 // let other 2.5 clients connect
-//   gameversion_min = 20000 // 2.5.x still has this, we cannot block it within 2.5
-// however, in 2.6.x, we will just:
-//   gameversion_min = 20000 // show 2.5 servers
-
-// say aliases
-alias asay_ctf_flagcarrier "say_team flag carrier at %y"
-alias asay_ctf_haveflag "say_team (%l) have the flag"
-alias asay_willgo "say_team will go to %y"
-alias asay_support "say_team (%l) need help, %h%%"
-alias asay_killed "say_team got killed at %d"
-alias asay_noammo "say_team (%l) need %W for %w"
-alias asay_drop "say_team (%l) dropped %w ; impulse 17"
-
-// other aliases
-alias +hook +button6
-alias -hook -button6
-alias ready "cmd ready"
-alias lockteams "sv_cmd lockteams"
-alias unlockteams "sv_cmd unlockteams"
-alias nospectators "sv_cmd nospectators"
-alias cointoss "sv_cmd cointoss"
-alias timeout "cmd timeout" //use this command to call a timeout
-alias timein "cmd timein" //use this command to resume the game before timeout is finished
-
-alias bsp "ls maps/*.bsp"
-alias chmap "changelevel $*"
-alias gotomap "sv_cmd gotomap \"$1\""
-
-alias rec "record demos/$1"
-alias ply "playdemo $1"
-alias tdem "timedemo $1"
-
-alias dropweapon "impulse 17"
-alias +show_info +button7
-alias -show_info -button7
-
-alias team_red "cmd selectteam red; cmd join"
-alias team_blue "cmd selectteam blue; cmd join"
-alias team_pink "cmd selectteam pink; cmd join"
-alias team_yellow "cmd selectteam yellow; cmd join"
-alias team_auto "cmd selectteam auto; cmd join"
-bind f6 team_auto
-
-alias movetoteam_red "sv_cmd movetoteam $1 red"
-alias movetoteam_blue "sv_cmd movetoteam $1 blue"
-alias movetoteam_pink "sv_cmd movetoteam $1 pink"
-alias movetoteam_yellow "sv_cmd movetoteam $1 yellow"
-alias movetoteam_auto "sv_cmd movetoteam $1 auto"
-
-// merge lightmaps up to 1024x1024 textures
-// the default of 2048x2048 is too heavy for my rig (SavageX)
-mod_q3bsp_lightmapmergepower 3
-
-// player defaults
-_cl_color 102
-_cl_name Player
-_cl_playermodel models/player/marine.zym
-_cl_playerskin 0
-crosshair 1
-seta crosshair_per_weapon 0    "when 1, each gun will display a different crosshair"
-seta crosshair_color_override 0        "when 1, crosshair_color_* overrides the per-weapon color"
-seta crosshair_effect_speed -1 "how fast (in seconds) some crosshair effects should take place, 0 = instant, -1 = 2x weapon switch time"
-seta crosshair_effect_scalefade 1 "use scaling and fading for crosshair effects"
-seta crosshair_hittest 1 "do a crosshair hit evaluation; also, the crosshair is scaled by the given number when aiming at an enemy, and blurred when aiming at a team mate"
-seta crosshair_hittest_blur 1 "blur the crosshair if the shot is obstructed"
-seta crosshair_hittest_showimpact 0 "move the crosshair to the actual impact location if obstructed"
-seta crosshair_laser ""        "crosshair to display when wielding the laser"
-seta crosshair_laser_color_red 1       "crosshair color red component to display when wielding the laser"
-seta crosshair_laser_color_green 0.35  "crosshair color green component to display when wielding the laser"
-seta crosshair_laser_color_blue 0.2    "crosshair color blue component to display when wielding the laser"
-seta crosshair_laser_color_alpha 0.75  "crosshair alpha value to display when wielding the laser"
-seta crosshair_laser_size 0.4  "crosshair size when wielding the laser"
-seta crosshair_shotgun ""      "crosshair to display when wielding the shotgun"
-seta crosshair_shotgun_color_red 0.7   "crosshair color red component to display when wielding the shotgun"
-seta crosshair_shotgun_color_green 0.7 "crosshair color green component to display when wielding the shotgun"
-seta crosshair_shotgun_color_blue 0.7  "crosshair color blue component to display when wielding the shotgun"
-seta crosshair_shotgun_color_alpha 1.1 "crosshair alpha value to display when wielding the shotgun"
-seta crosshair_shotgun_size 0.65       "crosshair size when wielding the shotgun"
-seta crosshair_uzi ""  "crosshair to display when wielding the machinegun"
-seta crosshair_uzi_color_red 0.4       "crosshair color red component to display when wielding the machinegun"
-seta crosshair_uzi_color_green 0.9     "crosshair color green component to display when wielding the machinegun"
-seta crosshair_uzi_color_blue 0.35     "crosshair color blue component to display when wielding the machinegun"
-seta crosshair_uzi_color_alpha 0.9     "crosshair alpha value to display when wielding the machinegun"
-seta crosshair_uzi_size 0.6    "crosshair size when wielding the machinegun"
-seta crosshair_grenadelauncher ""      "crosshair to display when wielding the mortar"
-seta crosshair_grenadelauncher_color_red 1     "crosshair color red component to display when wielding the mortar"
-seta crosshair_grenadelauncher_color_green 0.15        "crosshair color green component to display when wielding the mortar"
-seta crosshair_grenadelauncher_color_blue 0    "crosshair color blue component to display when wielding the mortar"
-seta crosshair_grenadelauncher_color_alpha 1.15        "crosshair alpha value to display when wielding the mortar"
-seta crosshair_grenadelauncher_size 0.7        "crosshair size when wielding the mortar"
-seta crosshair_electro ""      "crosshair to display when wielding the electro"
-seta crosshair_electro_color_red 0.35  "crosshair color red component to display when wielding the electro"
-seta crosshair_electro_color_green 0.5 "crosshair color green component to display when wielding the electro"
-seta crosshair_electro_color_blue 1    "crosshair color blue component to display when wielding the electro"
-seta crosshair_electro_color_alpha 1   "crosshair alpha value to display when wielding the electro"
-seta crosshair_electro_size 0.5        "crosshair size when wielding the electro"
-seta crosshair_crylink ""      "crosshair to display when wielding the crylink"
-seta crosshair_crylink_color_red 0.85  "crosshair color red component to display when wielding the crylink"
-seta crosshair_crylink_color_green 0.25        "crosshair color green component to display when wielding the crylink"
-seta crosshair_crylink_color_blue 1    "crosshair color blue component to display when wielding the crylink"
-seta crosshair_crylink_color_alpha 0.85        "crosshair alpha value to display when wielding the crylink"
-seta crosshair_crylink_size 0.4        "crosshair size when wielding the crylink"
-seta crosshair_nex ""  "crosshair to display when wielding the nex gun"
-seta crosshair_nex_color_red 0 "crosshair color red component to display when wielding the nex gun"
-seta crosshair_nex_color_green 0.9     "crosshair color green component to display when wielding the nex gun"
-seta crosshair_nex_color_blue 1        "crosshair color blue component to display when wielding the nex gun"
-seta crosshair_nex_color_alpha 0.85    "crosshair alpha value to display when wielding the nex gun"
-seta crosshair_nex_size 0.65   "crosshair size when wielding the nex gun"
-seta crosshair_hagar ""        "crosshair to display when wielding the hagar"
-seta crosshair_hagar_color_red 0.85    "crosshair color red component to display when wielding the hagar"
-seta crosshair_hagar_color_green 0.5   "crosshair color green component to display when wielding the hagar"
-seta crosshair_hagar_color_blue 0.35   "crosshair color blue component to display when wielding the hagar"
-seta crosshair_hagar_color_alpha 1     "crosshair alpha value to display when wielding the hagar"
-seta crosshair_hagar_size 0.8  "crosshair size when wielding the hagar"
-seta crosshair_rocketlauncher ""       "crosshair to display when wielding the rocketlauncher"
-seta crosshair_rocketlauncher_color_red 1      "crosshair color red component to display when wielding the rocketlauncher"
-seta crosshair_rocketlauncher_color_green 0.75 "crosshair color green component to display when wielding the rocketlauncher"
-seta crosshair_rocketlauncher_color_blue 0.2   "crosshair color blue component to display when wielding the rocketlauncher"
-seta crosshair_rocketlauncher_color_alpha 1    "crosshair alpha value to display when wielding the rocketlauncher"
-seta crosshair_rocketlauncher_size 0.5875      "crosshair size when wielding the rocketlauncher"
-seta crosshair_porto ""        "crosshair to display when wielding the porto"
-seta crosshair_porto_color_red 0.5     "crosshair color red component to display when wielding the porto"
-seta crosshair_porto_color_green 1     "crosshair color green component to display when wielding the porto"
-seta crosshair_porto_color_blue 0.5    "crosshair color blue component to display when wielding the porto"
-seta crosshair_porto_color_alpha 0.85  "crosshair alpha value to display when wielding the porto"
-seta crosshair_porto_size 0.6  "crosshair size when wielding the porto"
-seta crosshair_minstanex ""    "crosshair to display when wielding the minstanex gun"
-seta crosshair_minstanex_color_red 0.65        "crosshair color red component to display when wielding the minstanex gun"
-seta crosshair_minstanex_color_green 0.65      "crosshair color green component to display when wielding the minstanex gun"
-seta crosshair_minstanex_color_blue 1  "crosshair color blue component to display when wielding the minstanex gun"
-seta crosshair_minstanex_color_alpha 1 "crosshair alpha value to display when wielding the minstanex gun"
-seta crosshair_minstanex_size 0.4      "crosshair size when wielding the minstanex gun"
-seta crosshair_hook "" "crosshair to display when wielding the hook"
-seta crosshair_hook_color_red 0.65     "crosshair color red component to display when wielding the hook"
-seta crosshair_hook_color_green 1      "crosshair color green component to display when wielding the hook"
-seta crosshair_hook_color_blue 0.85    "crosshair color blue component to display when wielding the hook"
-seta crosshair_hook_color_alpha 0.85   "crosshair alpha value to display when wielding the hook"
-seta crosshair_hook_size 0.5   "crosshair size when wielding the hook"
-seta crosshair_hlac "" "crosshair to display when wielding the H.L.A.C"
-seta crosshair_hlac_color_red 1        "crosshair color red component to display when wielding the H.L.A.C."
-seta crosshair_hlac_color_green 0.65   "crosshair color green component to display when wielding the H.L.A.C."
-seta crosshair_hlac_color_blue 0.2     "crosshair color blue component to display when wielding the H.L.A.C."
-seta crosshair_hlac_color_alpha 1      "crosshair alpha value to display when wielding the H.L.A.C."
-seta crosshair_hlac_size 0.6   "crosshair size when wielding the H.L.A.C."
-seta crosshair_campingrifle "" "crosshair to display when wielding the campingrifle"
-seta crosshair_campingrifle_color_red 0.85     "crosshair color red component to display when wielding the campingrifle"
-seta crosshair_campingrifle_color_green 0.5    "crosshair color green component to display when wielding the campingrifle"
-seta crosshair_campingrifle_color_blue 0.25    "crosshair color blue component to display when wielding the campingrifle"
-seta crosshair_campingrifle_color_alpha 1      "crosshair alpha value to display when wielding the campingrifle"
-seta crosshair_campingrifle_size 0.65  "crosshair size when wielding the campingrifle"
-seta crosshair_campingrifle_ring_size 1.5      "bullet counter ring size around campingrifle crosshair, multiple of crosshair_campingrifle_size"
-seta crosshair_tuba "" "crosshair to display when wielding the tuba"
-seta crosshair_tuba_color_red 0.85     "crosshair color red component to display when wielding the tuba"
-seta crosshair_tuba_color_green 0.5    "crosshair color green component to display when wielding the tuba"
-seta crosshair_tuba_color_blue 0.25    "crosshair color blue component to display when wielding the tuba"
-seta crosshair_tuba_color_alpha 1      "crosshair alpha value to display when wielding the tuba"
-seta crosshair_tuba_size 1     "crosshair size when wielding the tuba"
-seta crosshair_fireball ""     "crosshair to display when wielding the fireball"
-seta crosshair_fireball_color_red 0.2  "crosshair color red component to display when wielding the fireball"
-seta crosshair_fireball_color_green 1.0        "crosshair color green component to display when wielding the fireball"
-seta crosshair_fireball_color_blue 0.2 "crosshair color blue component to display when wielding the fireball"
-seta crosshair_fireball_color_alpha 1  "crosshair alpha value to display when wielding the fireball"
-seta crosshair_fireball_size 1 "crosshair size when wielding the fireball"
-fov 90
-seta cl_velocityzoom 0 "velocity based zooming of fov, negative values zoom out"
-seta cl_velocityzoomtime 0.3   "time value for averaging speed values"
-seta cl_zoomfactor 5   "how much +zoom will zoom (1-16)"
-seta cl_zoomspeed 3.5  "how fast it will zoom (0.5-16), negative values mean instant zoom"
-seta cl_zoomsensitivity 0      "how zoom changes sensitivity (0 = weakest, 1 = strongest)"
-freelook 1
-sensitivity 6
-v_gamma 1.125000
-viewsize 100
-bgmvolume 1
-volume 0.5
-// fullscreen 1024x768x32bit
-vid_bitsperpixel 32
-vid_fullscreen 1
-vid_width 1024
-vid_height 768
-vid_pixelheight 1
-seta menu_vid_width 1024
-seta menu_vid_height 768
-seta menu_vid_pixelheight 1
-seta menu_vid_scale 0
-// 2D resolution 800x600
-vid_conwidth 800
-vid_conheight 600
-// menu_conwidth, menu_conheight are set inside quake.rc
-v_deathtilt 0 // needed for spectators (who are dead to avoid prediction)
-
-// these settings determine how much the view is affected by movement/damage
-cl_deathfade 1 // fade screen to dark red when dead, value represents how fast the fade is (higher is faster)
-cl_bobcycle 0 // how long the cycle of up/down view movement takes (only works if cl_bob is not 0), default is 0.6
-cl_bob 0.01 // how much view moves up/down when moving (does not move if cl_bobcycle is 0, but still enables cl_bobmodel), default is 0.02
-cl_bobmodel 1 // whether to have gun model move around on screen when moving (only works if cl_bob is not 0), default is 1
-cl_rollangle 0 // amount of view tilt when strafing, default is 2.0
-v_kicktime 0 // how long damage kicks of the view last, default is 0 seconds
-gl_polyblend 0.5 // whether to use screen tints, default is 1
-r_motionblur 0 // motion blur value, default is 0
-r_damageblur 0 // motion blur when damaged, default is 0
-
-seta vid_x11_display ""        "nexuiz-linux-*.sh will use this to start nexuiz on an other/new X display"
-// This can have three possible settings:
-//     ""              run as usual
-//     ":n"            use DISPLAY=:n, create it if needed
-//     ":n/layout"     use DISPLAY=:n, create it if needed with ServerLayout layout
-
-cl_autodemo_nameformat demos/%Y-%m-%d_%H-%M
-
-// taunts and voices
-seta cl_autotaunt 0 "automatically taunt enemies when fragging them"
-seta sv_taunt 1 "allow taunts on the server"
-seta sv_autotaunt 1 "allow autotaunts on the server"
-seta cl_voice_directional 1    "0 = all voices are non-directional, 1 = all voices are directional, 2 = only taunts are directional"
-seta cl_voice_directional_taunt_attenuation 0.5 "this defines the distance from which taunts can be heared"
-
-// server settings
-hostname "Nexuiz $g_nexuizversion Server"
-set sv_mapchange_delay 5
-set minplayers 0 "number of players playing at the same time (if not enough real players are there the remaining slots are filled with bots)"
-sv_cullentities_trace 1
-r_cullentities_trace 1
-
-// restart server if all players hit "ready"-button
-set sv_ready_restart 0 "if set to 1 allow a map to be restarted once all players pressed the \"ready\" button'"
-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"
-
-//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 "it set to 1 in a team-based game, the teams are locked once all players readied up and the game restarted (no new players can join after restart unless using the server-command unlockteams)"
-
-set g_maxplayers 0     "maximum number of players allowed to play at the same time, set to 0 to allow all players to join the game"
-set g_maxplayers_spectator_blocktime 5 "if the players voted for the \"nospectators\" command, this setting defines the number of seconds a observer/spectator has time to join the game before he gets kicked"
-
-//tournament mod
-set g_warmup 0 "split the game into a warmup- and match-stage when set to 1"
-set g_warmup_limit 60  "if set to -1 the warmup-stage is not affected by any timelimit, if set to 0 the usual timelimit also affects warmup-stage, otherwise warmup will be limited to this time in SECONDS (useful for public matches)"
-set g_warmup_allow_timeout 0   "if set to 1 timeouts can also be called in the warmup-stage, when sv_timeout is set to 1"
-set g_warmup_allguns 0 "if set players start with all guns in warmup mode"
-
-set g_chat_nospectators 0      "if 0 spec/observer chat is always visible to the player, if 1 it is never visible to players, if 2 it is only visible to players during warmup stage"
-set sv_vote_nospectators 0     "if set only players can call a vote (thus spectators and observers can't call a vote)"
-
-alias g_tourney "g_tourney_$1"
-alias g_tourney_1 "g_warmup 1; g_chat_nospectators 2; sv_vote_nospectators 1"
-alias g_tourney_0 "g_warmup 0; g_chat_nospectators 0; sv_vote_nospectators 0"
-
-set sv_timeout 0       "allows a player to call a timeout, this will pause the game for some time"
-set sv_timeout_length 120      "how long the game will be paused at max, in seconds"
-set sv_timeout_number 2        "how many timeouts one player is allowed to call (gets reset after a restart)"
-set sv_timeout_leadtime 4      "how long the players will be informed that a timeout was called before it starts, in seconds"
-set sv_timeout_resumetime 3    "how long the remaining timeout-time will be after a player called the timein command"
-
-set g_allow_oldnexbeam 0 "If enabled, clients are allowed to use old v2.3 Nexgun beam"
-seta cl_particles_oldnexbeam 0 "Uses the old v2.3 Nexgun beam instead of the new beam, only works if server allows it (g_allow_oldnexbeam 1)"
-set sv_qcweaponanimation 0
-
-set g_telefrags 1
-set g_telefrags_avoid 0
-set g_teleport_maxspeed 0 "maximum speed that a player can keep when going through a teleporter (if a misc_teleporter_dest also has a cap the smallest one of these will be used), 0 = don't limit, -1 = keep no speed"
-
-// fragmessage: This allows extra information to be displayed with the frag centerprints. 
-set sv_fragmessage_information_ping 0 "Enable ping display information, 0 = Never display; 1 = Always display (If the player is a bot, it will say bot instead of the ping.)"
-set sv_fragmessage_information_handicap 1 "Enable handicap display information, 0 = Never display; 1 = Only when the player has handicap on; 2 = Always display (Displays Off if off)"
-set sv_fragmessage_information_stats 0 "Enable statistics (health/armor) display information, 0 = Never display; 1 = Always display (Only available for the person who was killed)"
-set sv_fragmessage_information_typefrag 1 "Enable typefrag display information, 0 = Never display; 1 = Always display"
-
-// use default physics
-set sv_friction_on_land 0
-exec physics26.cfg
-
-set sv_player_viewoffset "0 0 35" "view offset of the player model"
-set sv_player_mins "-16 -16 -24" "playermodel mins"
-set sv_player_maxs "16 16 45" "playermodel maxs"
-set sv_player_crouch_viewoffset "0 0 15" "view offset of the player model when crouched"
-set sv_player_crouch_mins "-16 -16 -24" "mins of a crouched playermodel"
-set sv_player_crouch_maxs "16 16 25" "maxs of a crouched playermodel"
-
-set sv_pogostick 1 "don't require releasing the space bar for jumping again"
-set sv_doublejump 0 "allow Quake 2-style double jumps"
-set sv_jumpspeedcap_min "" "wont perform a doublejump if z-axis speed is higher than sv_jumpvelocity * this"
-set sv_jumpspeedcap_max "" "wont perform a doublejump if z-axis speed is higher than sv_jumpvelocity * this"
-set sv_jumpspeedcap_max_disable_on_ramps 0 "disable max jumpspeedcap on ramps to preserve the old rampjump style"
-
-seta sv_precacheplayermodels 1
-seta sv_precacheweapons 0
-seta sv_precacheitems 0
-set sv_spectator_speed_multiplier 1.5
-seta sv_spectate 1 "if set to 1, new clients are allowed to spectate or observe the game, if set to 0 joining clients spawn as players immediately (no spectating)"
-seta sv_defaultcharacter 0 "master switch, if set to 1 the further configuration for replacing all player models, skins and colors is taken from the sv_defaultplayermodel, sv_defaultplayerskin and sv_defaultplayercolors variables"
-seta sv_defaultplayermodel "models/player/nexus.zym" "default model selection, only works if sv_defaultcharacter is set to 1"
-seta sv_defaultplayerskin 0 "each model has 1 or more skins (combination of model and skin = character), set which skin of the model you wish the default character to have, only works if sv_defaultcharacter is set to 1"
-seta sv_defaultplayermodel_red ""      "\"\" means see sv_defaultplayermodel"
-seta sv_defaultplayerskin_red 0
-seta sv_defaultplayermodel_blue "" "\"\" means see sv_defaultplayermodel"
-seta sv_defaultplayerskin_blue 0
-seta sv_defaultplayermodel_yellow "" "\"\" means see sv_defaultplayermodel"
-seta sv_defaultplayerskin_yellow 0
-seta sv_defaultplayermodel_pink "" "\"\" means see sv_defaultplayermodel"
-seta sv_defaultplayerskin_pink 0
-seta sv_defaultplayercolors "" "set to 16*shirt+pants to force a color, note: it does NOT depend on defaultcharacter! Set to \"\" to disable"
-set sv_autoscreenshot 0 "if set to 1, the server forces all clients to create a local screenshot once the map ended"
-net_messagetimeout 300
-net_connecttimeout 30
-sv_jumpstep 1 // step up stairs while jumping, makes it easier to reach ledges
-set ekg 0      "Throw huge amounts of gibs"
-
-cl_movement 1
-cl_stairsmoothspeed 200
-cl_forwardspeed $sv_maxspeed
-cl_backspeed $sv_maxspeed
-cl_sidespeed $sv_maxspeed
-cl_upspeed $sv_maxspeed
-cl_movement_accelerate $sv_accelerate
-cl_movement_airaccel_qw $sv_airaccel_qw
-cl_movement_airaccel_sideways_friction $sv_airaccel_sideways_friction
-cl_movement_airaccelerate $sv_airaccelerate
-cl_movement_edgefriction $edgefriction
-cl_movement_friction $sv_friction
-cl_movement_jumpvelocity $sv_jumpvelocity
-cl_movement_maxairspeed $sv_maxairspeed
-cl_movement_maxspeed $sv_maxspeed
-cl_movement_stepheight $sv_stepheight
-cl_movement_stopspeed $sv_stopspeed
-cl_movement_track_canjump 0 // till DP bug gets fixed
-cl_movement_wallfriction $sv_wallfriction
-cl_movement_wateraccelerate $sv_wateraccelerate
-cl_movement_waterfriction $sv_waterfriction
-
-seta cl_autoswitch 1 "automatically switch to newly picked up weapons if they are better than what you are carrying"
-alias autoswitch "set cl_autoswitch $1 ; cmd autoswitch $1"
-
-set bot_config_file bots.txt "Name and path of the bot configuration file"
-set bot_number 0       "Minimum number of bots"
-seta bot_usemodelnames 0       "Use player model names for bot names"
-set bot_nofire 0       "When set, bots never fire. Mainly for testing in g_waypointeditor mode"
-seta bot_prefix [BOT]  "Prefix in front of the bot names"
-seta bot_suffix ""     "Suffix behind the bot names"
-seta skill_auto 0      "when 1, \"skill\" gets adjusted to match the best player on the map"
-// general bot AI cvars
-set bot_ai_thinkinterval 0.05
-set bot_ai_strategyinterval 3 "How often a new objective is chosen"
-set bot_ai_enemydetectioninterval 0.5 "How often bots pick a new target"
-set bot_ai_enemydetectionradius 10000 "How far bots can see enemies"
-set bot_ai_dodgeupdateinterval 0.1 "How often scan for items to dodge. Currently not in use."
-set bot_ai_chooseweaponinterval 0.3 "How often the best weapon according to the situation will be chosen"
-set bot_ai_dangerdetectioninterval 0.1 "How often scan for waypoints with dangers near"
-set bot_ai_dangerdetectionupdates 64 "How many waypoints will be considered for danger detection"
-set bot_ai_aimskill_blendrate 2        "How much correction will be applied to the aiming angle"
-set bot_ai_aimskill_fixedrate 15
-set bot_ai_aimskill_firetolerance_distdegrees 180
-set bot_ai_aimskill_firetolerance_mindegrees 2 "Minimum angle tolerance. Used on large distances"
-set bot_ai_aimskill_firetolerance_maxdegrees 60 "Maximum firing angle. Used on close range"
-set bot_ai_aimskill_mouse 1 "How much of the aiming filters are applied"
-set bot_ai_keyboard_distance 250 "Keyboard emulation is disabled after this distance to the goal"
-set bot_ai_keyboard_treshold 0.57
-set bot_ai_aimskill_offset 0.3 "Amount of error induced to the bots aim"
-set bot_ai_aimskill_think 1 "Aiming velocity. Use values below 1 for slower aiming"
-set bot_ai_custom_weapon_priority_distances "300 850"  "Define close and far distances in any order. Based on the distance to the enemy bots will choose different weapons"
-set bot_ai_custom_weapon_priority_far   "minstanex nex campingrifle rocketlauncher grenadelauncher electro hagar hlac crylink laser uzi fireball shotgun tuba" "Desired weapons for far distances ordered by priority"
-set bot_ai_custom_weapon_priority_mid   "minstanex rocketlauncher nex fireball grenadelauncher electro uzi campingrifle crylink hlac hagar shotgun laser tuba" "Desired weapons for middle distances ordered by priority"
-set bot_ai_custom_weapon_priority_close "minstanex nex uzi hlac tuba hagar crylink grenadelauncher shotgun electro campingrifle rocketlauncher laser fireball" "Desired weapons for close distances ordered by priority"
-set bot_ai_weapon_combo 1      "Enable bots to do weapon combos"
-set bot_ai_weapon_combo_threshold 0.3  "Try to make a combo N seconds after the last attack"
-set bot_ai_friends_aware_pickup_radius "500"   "Bots will not pickup items if a team mate is this distance near the item"
-set bot_ai_ignoregoal_timeout 3        "Ignore goals making bots to get stuck in front of a wall for N seconds"
-set bot_ai_bunnyhop_skilloffset 7      "Bots with skill equal or greater than this value will perform the  \"bunnyhop\" technique"
-set bot_ai_bunnyhop_startdistance 250 "Run to goals located further than this distance"
-set bot_ai_bunnyhop_stopdistance 220 "Stop jumping after reaching this distance to the goal"
-set bot_ai_bunnyhop_firstjumpdelay 0.5 "Start running to the goal only if it was seen for more than N seconds"
-set bot_god 0 "god mode for bots"
-set bot_ai_navigation_jetpack 0 "Enable bots to navigat maps using the jetpack"
-set bot_ai_navigation_jetpack_mindistance 3500 "Bots will try fly to objects located farther than this distance"
-// Better don't touch these, there are hard to tweak!
-set bot_ai_aimskill_order_mix_1st 0.01 "Amount of the 1st filter output to apply to the aiming angle"
-set bot_ai_aimskill_order_mix_2nd 0.1 "Amount of the 1st filter output to apply to the aiming angle"
-set bot_ai_aimskill_order_mix_3th 0.01 "Amount of the 1st filter output to apply to the aiming angle"
-set bot_ai_aimskill_order_mix_4th 0.05 "Amount of the 1st filter output to apply to the aiming angle"
-set bot_ai_aimskill_order_mix_5th 0.01 "Amount of the 1st filter output to apply to the aiming angle"
-set bot_ai_aimskill_order_filter_1st 0.4 "Position filter"
-set bot_ai_aimskill_order_filter_2nd 0.4 "Movement filter"
-set bot_ai_aimskill_order_filter_3th 0.2 "Acceleration filter"
-set bot_ai_aimskill_order_filter_4th 0.4 "Position prediction filter. Used rarely"
-set bot_ai_aimskill_order_filter_5th 0.5 "Movement prediction filter. Used rarely"
-
-// waypoint editor enable
-set g_waypointeditor 0
-set bot_ignore_bots 0  "When set, bots don't shoot at other bots"
-set bot_join_empty 0   "When set, bots also play if no player has joined the server"
-set bot_vs_human 0     "Bots and humans play in different teams when set. positive values to make an all-bot blue team, set to negative values to make an all-bot red team, the absolute value is the ratio bots vs humans (1 for equal count)"
-
-alias g_waypointeditor_spawn "impulse 103"
-alias g_waypointeditor_remove "impulse 104"
-alias g_waypointeditor_relinkall "impulse 105"
-alias g_waypointeditor_saveall "impulse 106"
-alias g_waypointeditor_unreachable "impulse 107"
-
-locs_enable 0
-pausable 0
-seta g_spawnshieldtime 0.3 "number of seconds you are invincible after you spawned, this shield is lost after you fire"
-seta g_antilag 2       "AntiLag (0 = no AntiLag, 1 = verified client side hit scan, 2 = server side hit scan in the past, 3 = unverified client side hit scan)"
-set g_antilag_nudge 0 "don't touch"
-set g_antilag_bullets 1 "Bullets AntiLag (0 = no AntiLag, 1 = server side hit scan in the past) - DO NOT TOUCH (severely changes weapon balance)"
-set g_shootfromclient 1 "let client decide if it has the gun left or right; if set to 2, center handedness is allowed, and defaulted to, too; see also cl_gunalign"
-set g_shootfromeye 0 "shots are fired from your eye/crosshair; visual gun position can still be influenced by cl_gunalign 1 and 2"
-set g_shootfromcenter 0 "weapon gets moved to the center, shots still come from the barrel of your weapon; visual gun position can still be influenced by cl_gunalign 1 and 2"
-set g_shootfromfixedorigin "" "if set to a string like 0 y z, the gun is moved to the given y and z coordinates. If set to a string like x y z, the whole shot origin is used"
-set g_pinata 0 "if set to 1 you will not only drop your current weapon when you are killed, but you will drop all weapons that you possessed"
-set g_weapon_stay 0 "if set to 1 or 2, weapons stay after they were picked up (1: weapons you don't have yet give you ammo of their type and they can not be dropped, 2: weapons don't give ammo, but instead players start with one pickup-load of ammo by default, 3: weapons give ammo, weapons only stay as ammo-less ghosts)"
-set g_weapon_throwable 1 "if set to 1, weapons can be dropped"
-set g_powerup_superhealth 1 "if set to 0 the mega health powerup will not spawn on the map"
-set g_powerup_strength 1 "if set to 0 the strength powerup will not spawn on the map"
-set g_powerup_shield 1 "if set to 0 the shield (invincibility) powerup will not spawn on the map"
-set g_balance_powerup_timer 1 "if set to 0 the powerups dont wear off"
-set g_use_ammunition 1 "if set to 0 all weapons you pick up have unlimited ammunition"
-set g_pickup_items 1 "if set to 0 all items (health, armor, ammo, weapons...) are removed from the map"
-set g_minstagib 0      "enable minstagib"
-set g_minstagib_extralives 2   "how many extra lives you will get per powerup"
-set g_minstagib_ammo_start 10  "starting ammo"
-set g_minstagib_ammo_drop 5    "how much ammo you'll get for weapons or cells"
-set g_minstagib_invis_alpha 0.15
-set g_minstagib_speed_jumpheight 1.8 "jump height multiplier that applies while you carry the invincibility powerup"
-set g_minstagib_speed_moverate 1.25 "speed-multiplier that applies while you carry the invincibility powerup"
-set g_vampire 0 "set to 1 to enable the vampire mode, where the damage done to your opponent gets added to your own health"
-set g_weaponarena "0"  "put in a list of weapons to enable a weapon arena mode, or try \"all\" or \"most\""
-set g_weaponarena_random "0"   "if set to a number, only that weapon count is given on every spawn (randomly)"
-set g_laserguided_missile 0 "if set to 1 the rockets of the rocket launcher can be steered using a laserpointer"
-set g_midair 0 "if set to 1 you can only apply damage to your opponent while he is airborne"
-set g_midair_shieldtime 0.3 "number of seconds you are still invincible since you lost contact to the ground"
-set g_spawnsound 1 "set to 0 if you don't want to hear the spawn sound when a player spawns"
-set g_spawnpoints_autodrop 0 "if set to 1, automatically drop spawn point locations if they were placed too high"
-set g_spawnpoints_auto_move_out_of_solid 0 "if set to 1 you will see a warning if a spawn point was placed inside a solid"
-set g_forced_respawn 0 "if set to 1 and a player died, that player gets automatically respawned once <g_respawn_delay> seconds are over"
-set g_fullbrightplayers 0 "brightens up player models (note that the color, skin or model of the players does not change!)"
-set g_fullbrightitems 0 "brightens up items"
-set g_nodepthtestplayers 0 "disables depth testing on players"
-set g_nodepthtestitems 0 "disables depth testing on items"
-set g_casings 2 "specifies which casings (0: none, 1: only shotgun casings, 2: shotgun and machine gun casings) are sent to the client"
-set g_norecoil 0 "if set to 1 shooting weapons won't make you crosshair to move upwards (recoil)"
-set g_maplist_mostrecent "" "contains the name of the maps that were most recently played"
-seta g_maplist_mostrecent_count 3      "number of most recent maps that are blocked from being played again"
-seta g_maplist "accident aggressor aneurysm basement basementctf bleach bloodprison bloodprisonctf bluesky cyberparcour01 darkzone desertfactory dieselpower downer eggandbacon evilspace farewell final_rage nr_piece-o-cake ons-reborn racetrack reslimed ruiner runningman runningman_1on1remix runningmanctf silvercity skyway slimepit soylent starship stormkeep2 strength toxic warfare"
-seta g_maplist_index 0 "this is used internally for saving position in maplist cycle"
-seta g_maplist_selectrandom 0  "if 1, a random map will be chosen as next map - DEPRECATED in favor of g_maplist_shuffle"
-seta g_maplist_shuffle 1       "new randomization method: like selectrandom, but avoid playing the same maps in short succession. This works by taking out the first element and inserting it into g_maplist with a bias to the end of the list"
-set g_maplist_check_waypoints 0        "when 1, maps are skipped if there currently are bots, but the map has no waypoints"
-set samelevel 0 "when 1, always play the same level over and over again"
-set g_maxpushtime 8.0 "timeout for kill credit when your damage knocks someone into a death trap"
-
-set g_cloaked 0 "display all players mostly invisible"
-set g_player_alpha 1
-set g_player_brightness 0      "set to 2 for brighter players"
-seta g_balance_cloaked_alpha 0.25
-
-set g_playerclip_collisions 1 "0 = disable collision testing against playerclips, might be useful on some defrag maps"
-
-set welcome_message_time 8
-
-alias clearmap "disconnect"
-
-set g_grappling_hook 0 "let players spawn with the grappling hook which allows them to pull themselves up"
-
-set leadlimit 0
-
-// this means that timelimit can be overidden globally and fraglimit can be overidden for each game mode: DM/TDM, Domination, CTF, and Runematch.
-seta timelimit_override -1     "Time limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta fraglimit_override -1     "Frag limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta leadlimit_override -1     "Lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta capturelimit_override -1  "Capture limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta captureleadlimit_override -1      "Capture llead imit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_ctf_capture_limit -1    "CTF capture limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_ctf_capture_leadlimit -1        "CTF capture lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_arena_point_limit -1    "Arena point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_arena_point_leadlimit -1        "Arena point lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_domination_point_limit -1       "Domination point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_domination_point_leadlimit -1   "Domination point lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_runematch_point_limit -1        "Runematch point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_runematch_point_leadlimit -1    "Runematch point lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_keyhunt_point_limit -1  "Keyhunt point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_keyhunt_point_leadlimit -1      "Keyhunt point lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_race_laps_limit -1      "Race laps limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_nexball_goallimit -1 "Nexball goal limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-seta g_nexball_goalleadlimit -1 "Nexball goal lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
-
-seta g_ctf_win_mode 0  "0: captures only, 1: captures, then points, 2: points only"
-seta g_ctf_ignore_frags 0      "1: regular frags give no points"
-
-// 50% of the spawns shall be far away from any players
-set g_spawn_furthest 0.5
-// respawn delay
-set g_respawn_delay 2 "number of seconds you have to wait before you can respawn again"
-set g_respawn_waves 0 "respawn in waves (every n seconds), intended to decrease overwhelming base attacks"
-// when variables are set to 0, they take over the global setting...
-// to force disable delay or waves, set them to 0.125
-set g_ctf_respawn_delay 0
-set g_ctf_respawn_waves 0
-set g_dm_respawn_delay 0
-set g_dm_respawn_waves 0
-set g_dom_respawn_delay 0
-set g_dom_respawn_waves 0
-set g_lms_respawn_delay 0
-set g_lms_respawn_waves 0
-set g_rune_respawn_delay 0
-set g_rune_respawn_waves 0
-set g_tdm_respawn_delay 0
-set g_tdm_respawn_waves 0
-set g_kh_respawn_delay 0
-set g_kh_respawn_waves 0
-set g_arena_respawn_delay 0
-set g_arena_respawn_waves 0
-set g_ca_respawn_delay 0
-set g_ca_respawn_waves 0
-set g_nexball_respawn_delay 0
-set g_nexball_respawn_waves 0
-set g_as_respawn_delay 0
-set g_as_respawn_waves 0
-set g_ons_respawn_delay 0
-set g_ons_respawn_waves 0
-set g_rc_respawn_waves 0
-set g_rc_respawn_delay 0
-set g_cts_respawn_waves 0
-set g_cts_respawn_delay 0
-set g_cts_selfdamage 1 "0 = disable all selfdamage and falldamage in cts"
-
-// overtime
-seta timelimit_overtime 2 "duration in minutes of one added overtime, added to the timelimit"
-seta timelimit_overtimes 0 "how many overtimes to add at max"
-seta timelimit_suddendeath 5 "number of minutes suddendeath mode lasts after all overtimes were added and still no winner was found"
-
-// common team values
-set g_tdm 0 "Team Deathmatch: the team who kills their opponents most often wins"
-
-seta teamplay_default 4 "default teamplay setting in team games. 1 = no friendly fire, self damage. 2 = friendly fire and self damage enabled. 3 = no friendly fire, but self damage enabled. 4 = obey the following four cvars"
-seta g_mirrordamage 0.3        "for teamplay 4: mirror damage factor"
-seta g_friendlyfire 0.1        "for teamplay 4: fiendly fire factor"
-seta g_teamdamage_threshold 50 "for teamplay 4: threshold over which to apply mirror damage"
-seta g_teamdamage_resetspeed 30        "for teamplay 4: how fast player's teamdamage count decreases"
-
-set deathmatch_force_teamplay 0        "Always play TDM instead of DM"
-seta g_balance_teams 0 "automatically balance out players entering instead of asking them for their preferred team"
-seta g_balance_teams_force 0   "automatically balance out teams when players move or disconnect"
-seta g_balance_teams_prevent_imbalance 0       "prevent players from changing to larger teams"
-set g_tdm_teams 2 "how many teams are in team deathmatch (set by mapinfo)"
-seta g_tdm_teams_override 0    "how many teams are in team deathmatch"
-set g_tdm_team_spawns 0 "when 1, a map can define team spawnpoints for TDM"
-set g_changeteam_banned 0      "not allowed to change team"
-set g_changeteam_fragtransfer 0        "% of frags you get to keep when you change teams (rounded down)"
-
-set sv_teamnagger 1 "enable a nag message when the teams are unbalanced"
-
-// dm
-set g_dm 1 "Deathmatch: killing any other player is one frag, player with most frags wins"
-set gamecfg 1  // "deathmatch"
-
-// ctf
-set g_ctf 0 "Capture The Flag: take the enemy flag and bring it to yours at your base to score"
-set g_ctf_flag_returntime 30
-set g_ctf_flagcarrier_selfdamage 1
-set g_ctf_flagcarrier_selfforce 1
-set g_ctf_fullbrightflags 0
-set g_ctf_dynamiclights 0
-set g_ctf_allow_drop 1 "dropping allows circumventing carrierkill score, so enable this with care!"
-set g_ctf_reverse 0    "when 1, bases/flags are switched :P you have to capture your OWN flag by bringing it to the ENEMY's"
-set g_balance_ctf_delay_collect 1.0
-set g_balance_ctf_damageforcescale 1
-
-set g_ctf_shield_max_ratio 0   "shield at most 0% of a team from the enemy flag (try: 0.4 for 40%)"
-set g_ctf_shield_min_negscore 20       "shield the player from the flag if he's got -20 points or less"
-set g_ctf_shield_force 100     "push force of the shield"
-
-// fun for server admins
-set g_ctf_flag_red_model "models/ctf/flags.md3"
-set g_ctf_flag_red_skin 0
-set g_ctf_flag_blue_model "models/ctf/flags.md3"
-set g_ctf_flag_blue_skin 1
-set g_ctf_flag_glowtrails 0
-set g_ctf_flag_pickup_effects 1
-set g_ctf_flag_capture_effects 1
-set g_ctf_captimerecord_always 0 "if enabled, assisted CTF records (with other players on the server) are recorded too"
-
-exec ctfscoring-ai.cfg
-
-// runematch
-set g_runematch                                                0 "Runematch: pick up and hold the runes, special items that give you points, a special power (rune) and a disadvantage (curse)"
-set g_runematch_pointrate                              5
-set g_runematch_fixedspawns                            1 "use fixed runematch spawns if available"
-set g_runematch_pointamt                                       1
-set g_runematch_shuffletime                            30 "how often runes change position"
-set g_runematch_respawntime                            15 "how soon after being dropped to respawn"
-set g_runematch_frags_killedby_runeholder              4
-set g_runematch_frags_killed_runeholder                        5
-set g_runematch_frags_norune                           0
-set g_runematch_drop_runes_max                         2 "only drop up to 2 runes, the rest should respawn"
-set g_runematch_allow_same                             0 "allow matching rune-curse pairs"
-set g_runematch_rune_alpha                             0.78
-set g_runematch_rune_effects                           544 "EF_ADDITIVE + EF_FULLBRIGHT = 544"
-set g_runematch_rune_glow_size                         0
-set g_runematch_rune_glow_color                                0
-set g_runematch_rune_color_strength                    1.0
-// strength/weakness
-set g_balance_rune_strength_damage                     2.0
-set g_balance_rune_strength_force                      1.5
-set g_balance_curse_weak_damage                                0.5
-set g_balance_curse_weak_force                         0.6
-set g_balance_rune_strength_combo_damage       0.9
-set g_balance_rune_strength_combo_force                        1.0
-// defense/vulner
-set g_balance_rune_defense_takedamage                  0.5
-set g_balance_curse_vulner_takedamage                  2.0
-set g_balance_rune_defense_combo_takedamage            1.0
-// vampire/empathy
-set g_balance_rune_vampire_absorb                      0.4
-set g_balance_curse_empathy_takedamage                 -0.4
-set g_balance_rune_vampire_combo_absorb                        -0.1
-set g_balance_rune_vampire_maxhealth                   500
-set g_balance_curse_empathy_minhealth                  20
-set g_balance_rune_vampire_combo_minhealth             40
-// regen/venom
-set g_balance_rune_regen_hpmod                         1.75
-set g_balance_curse_venom_hpmod                                0.6
-set g_balance_rune_regen_combo_hpmod                   0.9
-set g_balance_rune_regen_regenrate                     3.0
-set g_balance_curse_venom_rotrate                      3.0
-set g_balance_rune_regen_combo_regenrate       0.5
-set g_balance_rune_regen_combo_rotrate                 1.5
-set g_balance_rune_regen_limitmod                      1
-set g_balance_curse_venom_limitmod                     1
-set g_balance_rune_regen_combo_limitmod                        1
-// speed/slow
-set g_balance_rune_speed_atkrate                               0.66
-set g_balance_curse_slow_atkrate                               1.5
-set g_balance_rune_speed_combo_atkrate                 1.2
-set g_balance_rune_speed_moverate                      1.25
-set g_balance_curse_slow_moverate                      0.8
-set g_balance_rune_speed_combo_moverate                        0.9
-set g_balance_rune_speed_jumpheight                    1.4
-set g_balance_curse_slow_jumpheight                    1.0
-set g_balance_rune_speed_combo_jumpheight              1.0
-
-// domination
-set g_domination                       0 "Domination: capture and hold control points to gain points"
-set g_domination_default_teams         2 "default number of teams for maps that aren't domination-specific"
-seta g_domination_teams_override               0 "use a specific number of teams in domination games (minimum 2), disables dom_team entities"
-set g_domination_disable_frags         0 "players can't get frags normally, only get points from kills"
-set g_domination_point_amt             0 "override: how many points to get per ping"
-set g_domination_point_fullbright      0 "domination point fullbright"
-set g_domination_point_rate            0 "override: how often to give those points"
-set g_domination_point_capturetime     0.1 "how long it takes to capture a point (given no interference)"
-set g_domination_point_glow            0 "domination point glow (warning, slow)"
-//set g_domination_balance_team_points 1 "# of points received is based on team sizes"
-
-// last man standing
-set g_lms 0 "Last Man Standing: everyone starts with a certain amount of lives, and the survivor wins"
-set g_lms_lives_override -1
-set g_lms_regenerate 0
-set g_lms_campcheck_interval 10
-set g_lms_campcheck_message "^1Don't camp!"
-set g_lms_campcheck_damage 100
-set g_lms_campcheck_distance 1800
-set g_lms_last_join 3  "if g_lms_join_anytime is false, new players can only join if the worst active player has more than (fraglimit - g_lms_last_join) lives"
-set g_lms_join_anytime 1       "if true, new players can join, but get same amount of lives as the worst player"
-
-// arena
-set g_arena 0 "Arena: many one-on-one rounds are played to find the winner"
-set g_arena_maxspawned 2       "maximum number of players to spawn at once (the rest is spectating, waiting for their turn)"
-set g_arena_roundbased 1       "if disabled, the next player will spawn as soon as someone dies"
-set g_arena_warmup 5   "time, newly spawned players have to prepare themselves in round based matches"
-set g_arena_powerups 0 "enables powerups (superhealth, strength and shield), which are removed by default"
-
-// ca
-set g_ca 0 "Clan Arena: Played in rounds, once you're dead you're out! The team with survivors wins the round."
-set g_ca_point_limit 10 "point limit 10 is standard for clan arena"
-set g_ca_point_leadlimit 0
-set g_ca_warmup 10 "how long the players will have time to run around the map before the round starts"
-
-// onslaught
-set g_onslaught 0 "Onslaught: take control points towards the enemy generator and then destroy it"
-set g_onslaught_gen_health 5000
-set g_onslaught_cp_health 1000
-set g_onslaught_cp_buildhealth 100
-set g_onslaught_cp_buildtime 10
-set g_onslaught_cp_regen 20
-
-// assault
-set g_assault 0 "Assault: attack the enemy base as fast as you can, then defend the base against the enemy for that time to win"
-
-// race
-set g_race 0 "Race: be faster than your opponents"
-set g_race_qualifying_timelimit 0
-set g_race_qualifying_timelimit_override -1
-set g_race_teams 0     "when 2, 3, or 4, the race is played as a team game (the team members can add up their laps)"
-
-// cts
-set g_cts 0 "CTS: complete the stage"
-
-// nexball
-set g_nexball 0 "Nexball: Basketball and Soccer go Nexuiz"
-
-set g_nexball_basketball_effects_default     8    "default: dim light. The original version used 1024 (fire) but it gives bad performance"
-set g_balance_nexball_primary_speed       1000    "launching speed"
-set g_balance_nexball_primary_refire         0.7  "launching refire"
-set g_balance_nexball_primary_animtime       0.3  "launching animtime"
-set g_balance_nexball_secondary_animtime     0.3  "launching animtime"
-set g_balance_nexball_secondary_speed     3000    "stealing projectile speed"
-set g_balance_nexball_secondary_lifetime     0.15 "stealing projectile lifetime"
-set g_balance_nexball_secondary_force      500    "stealing projectile force"
-set g_balance_nexball_secondary_refire       0.6  "stealing projectile refire"
-set g_balance_nexball_secondary_animtime     0.3  "stealing projectile animtime"
-
-// -1: MrBougo's first try, not very playable but working...
-//     The ball gets the player's velocity * 1.5 + a vertical boost
-//  0: Revenant style
-//     Player's velocity + a boost where he's looking at + a boost
-//     perpendicularly to the first boost, that is upwards relatively
-//     to the view angle
-//  1: MrBougo's modded Rev style 1
-//     The 2nd Rev boost is always vertical
-//  2: MrBougo's modded Rev style 2
-//     The 1st Rev boost is always horizontal
-//     The 2nd Rev boost is always vertical
-set g_nexball_football_physics  2  "0: Revenant's original movement, 1: 0 but half independant of aiming height, 2: 1 fully independant, -1: first recode try"
-set g_nexball_basketball_bouncefactor 0.6    "velocity loss when the ball bounces"
-set g_nexball_basketball_bouncestop   0.075  "speed at which the ball stops when it hits the ground (multiplied by sv_gravity)"
-set g_nexball_football_bouncefactor   0.6    "velocity loss when the ball bounces"
-set g_nexball_football_bouncestop     0.075  "speed at which the ball stops when it hits the ground (multiplied by sv_gravity)"
-
-set g_nexball_football_boost_forward      100   "forward velocity boost when the ball is touched"
-set g_nexball_football_boost_up           200   "vertical velocity boost when the ball is touched"
-
-set g_nexball_basketball_delay_hold           20    "time before a player who caught the ball loses it (anti-ballcamp)"
-set g_nexball_basketball_delay_hold_forteam   60    "time before a ball reset when a team holds the ball for too long"
-set g_nexball_basketball_teamsteal             1    "1 to allow players to steal from teammates, 0 to disallow"
-
-set g_nexball_basketball_carrier_speed         0.9  "speed multiplier for the ballcarrier"
-
-set g_nexball_meter_period                  1    "time to make a full cycle on the power meter"
-set g_nexball_basketball_meter              1    "use the power meter for basketball"
-set g_nexball_basketball_meter_minpower   0.5    "minimal multiplier to the launching speed when using the power meter"
-set g_nexball_basketball_meter_maxpower   1.2    "maximal multiplier to the launching speed when using the power meter"
-
-set g_nexball_delay_goal     3    "delay between a goal and a ball reset"
-set g_nexball_delay_idle     10   "maximal idle time before a reset"
-set g_nexball_delay_start    3    "time the ball stands on its spawn before being released"
-set g_nexball_delay_collect  0.5  "time before the same player can catch the ball he launched"
-
-set g_nexball_sound_bounce   1    "bouncing sound (0: off)"
-
-set g_nexball_basketball_trail  1  "1 to leave a trail"
-set g_nexball_football_trail    0  "1 to leave a trail"
-set g_nexball_trail_color     254  "1-256 for different colors (Quake palette, 254 is white)"
-
-set g_nexball_radar_showallplayers 1  "1: show every player and the ball on the radar  0: only show teammates and the ball on the radar"
-
-// server game balance settings
-// powerup balance settings
-// weapon balance settings follow
-exec balance.cfg
-
-set g_bloodloss 0   "amount of health below which blood loss occurs"
-
-set g_footsteps 0      "serverside footstep sounds"
-
-// effects
-r_picmipsprites 0 // Nexuiz uses sprites that should never be picmipped (team mate, typing, waypoints)
-r_mipsprites 1
-r_mipskins 1
-r_shadow_realtime_world_lightmaps 1
-seta r_ambient 4
-cl_decals_fadetime 1
-cl_decals_time 2
-seta cl_gunalign 3 "Gun alignment; 1 = right, 2 = left, 3 = center or right, 4 = center or left"
-seta cl_nogibs 0 "reduce number of violence effects, or remove them totally"
-seta cl_particlegibs 0 "simpler gibs"
-seta cl_gibs_damageforcescale 3.5 "force to push around gibs"
-seta cl_gibs_lifetime 14 "average lifetime of gibs"
-seta cl_gibs_velocity_scale 1 "gib throw velocity force scale"
-seta cl_gibs_velocity_random 1 "gib throw velocity randomness scale"
-seta cl_gibs_velocity_up 0 "extra z velocity for gibs"
-seta cl_gibs_ticrate 0.1 "ticrate for gibs"
-seta cl_gibs_sloppy 1 "sloppy gibs, may temporarily penetrate walls"
-seta cl_casings 1 "enable or disable bullet casings"
-seta cl_casings_shell_time 30 "shell casing lifetime"
-seta cl_casings_bronze_time 10 "bullet casings lifetime"
-seta cl_casings_ticrate 0.1 "ticrate for casings"
-seta cl_casings_sloppy 1 "sloppy casings, may temporarily penetrate walls"
-seta cl_projectiles_sloppy 0 "sloppy projectiles, may temporarily penetrate walls"
-cl_stainmaps 0
-cl_particles_smoke 1
-vid_gl20 1
-r_glsl_deluxemapping 1
-r_glsl_offsetmapping 0
-r_glsl_offsetmapping_reliefmapping 0
-r_glsl_offsetmapping_scale 0.02
-// execute effects-normal.cfg to make sure that all effect settings are reset
-alias menu_sync "" // will be re-aliased later
-exec effects-normal.cfg
-
-// misc
-fs_empty_files_in_pack_mark_deletions 1 // makes patches able to delete files
-scr_conalpha 1
-scr_conbrightness 0.2
-scr_screenshot_jpeg 1
-scr_screenshot_jpeg_quality 0.9
-sv_maxvelocity 1000000000
-cl_sound_wizardhit ""
-cl_sound_hknighthit ""
-cl_sound_tink1 weapons/tink1.wav
-cl_sound_ric1 weapons/ric1.wav
-cl_sound_ric2 weapons/ric2.wav
-cl_sound_ric3 weapons/ric3.wav
-cl_sound_r_exp3 ""
-sv_sound_land ""
-sv_sound_watersplash ""
-seta cl_sound_maptime_warning "1" "play announcer sound telling you the remaining maptime - 0: do not play at all, 1: play at one minute, 2: play at five minutes, 3: play both"
-seta cl_notify_carried_items "3" "notify you of carried items when you obtain them (e.g. flags in CTF) - 0: disabled, 1: notify of taken items, 2: notify of picking up dropped items, 3: notify of both"
-
-seta cl_hitsound 1 "play a hit notifier sound when you have hit an enemy"
-seta cl_announcer default "name of the announcer you wish to use from data/sound/announcer"
-
-// startmap_dm is used when running with the -listen or -dedicated commandline options
-set serverconfig server.cfg
-alias startmap_dm "set _sv_init 0; map _init/_init; exec $serverconfig; set _sv_init 1; map _init/_init"
-alias sv_loadconfig "exec $serverconfig"
-alias sv_restart "say \"Server will restart at the end of the match, you will all be reconnected automatically. $* \"; quit_and_redirect self"
-
-// aliases:
-alias +attack2 +button3
-alias -attack2 -button3
-alias +zoom +button4
-alias -zoom -button4
-alias +crouch +button5
-alias -crouch -button5
-alias weapnext "_weapnext_${_supports_weaponpriority}${sbar_hudselector}${cl_weaponpriority_useforcycling}"
-alias _weapnext_000 "impulse 10"
-alias _weapnext_001 "impulse 10"
-alias _weapnext_010 "impulse 10"
-alias _weapnext_011 "impulse 10"
-alias _weapnext_020 "impulse 10"
-alias _weapnext_021 "impulse 10"
-alias _weapnext_100 "impulse 10"
-alias _weapnext_101 "impulse 15"
-alias _weapnext_110 "impulse 18"
-alias _weapnext_111 "impulse 15"
-alias _weapnext_120 "impulse 18"
-alias _weapnext_121 "impulse 15"
-alias weaplast "impulse 11"
-alias weapprev "_weapprev_${_supports_weaponpriority}${sbar_hudselector}${cl_weaponpriority_useforcycling}"
-alias _weapprev_000 "impulse 12"
-alias _weapprev_001 "impulse 12"
-alias _weapprev_010 "impulse 12"
-alias _weapprev_011 "impulse 12"
-alias _weapprev_020 "impulse 12"
-alias _weapprev_021 "impulse 12"
-alias _weapprev_100 "impulse 12"
-alias _weapprev_101 "impulse 16"
-alias _weapprev_110 "impulse 19"
-alias _weapprev_111 "impulse 16"
-alias _weapprev_120 "impulse 19"
-alias _weapprev_121 "impulse 16"
-set _supports_weaponpriority 0 "set to 1 by csqc if supported, and to 0 on disconnect"
-alias weapbest "impulse 13"
-
-alias reload "impulse 20"
-
-// movement
-bind w +forward
-bind a +moveleft
-bind s +back
-bind d +moveright
-bind UPARROW +forward
-bind LEFTARROW +moveleft
-bind DOWNARROW +back
-bind RIGHTARROW +moveright
-bind SHIFT +crouch
-bind ENTER +jump
-bind SPACE +jump
-
-// weapons
-bind 1 "impulse 1"
-bind 2 "impulse 2"
-bind 3 "impulse 3"
-bind 4 "impulse 4"
-bind 5 "impulse 5"
-bind 6 "impulse 6"
-bind 7 "impulse 7"
-bind 8 "impulse 8"
-bind 9 "impulse 9"
-bind 0 "impulse 14" // cycles the superweapons
-bind q weaplast
-bind MOUSE1 +attack
-bind MOUSE2 +attack2
-bind MOUSE3 +zoom
-bind MOUSE4 weaplast
-bind MOUSE5 +hook
-bind MWHEELUP weapnext
-bind MWHEELDOWN weapprev
-bind r reload
-bind BACKSPACE dropweapon
-bind g dropweapon
-bind f +use
-
-// misc
-bind e +hook
-bind ` toggleconsole
-bind ~ toggleconsole
-bind TAB +showscores
-bind ESCAPE togglemenu
-bind t messagemode
-bind y messagemode2
-bind z messagemode2
-bind u "+con_chat_maximize"
-bind i +show_info
-bind PAUSE pause
-bind F10 quit
-bind F11 disconnect
-bind F12 screenshot
-bind F4 ready
-bind m radar
-bind ALT +showaccuracy
-
-// Gamepad defaults. Tested with Logitech Rumblepad 2, I hope similar ones works as well.
-bind JOY1 "+crouch"
-bind JOY2 "+jump"
-bind JOY3 "weapprev"
-bind JOY4 "weapnext"
-bind JOY5 "+attack2"
-bind JOY6 "+attack"
-bind JOY7 "+zoom"
-bind JOY8 "dropweapon"
-bind JOY9 "menu_showteamselect"
-bind JOY10 "+show_info"
-bind JOY11 "+showscores"
-bind JOY12 "+con_chat_maximize"
-seta joyadvanced "1"
-seta joyadvaxisr "2"
-seta joyadvaxisx "3"
-seta joyadvaxisy "1"
-seta joyadvaxisz "4"
-seta joysidesensitivity "1.0"
-seta joypitchsensitivity "0.9"
-seta joyyawsensitivity "-1.8"
-// SDL only
-seta joy_deadzoneforward "0.05"
-seta joy_deadzonepitch "0.05"
-seta joy_deadzoneside "0.05"
-seta joy_deadzoneup "0.05"
-seta joy_deadzoneyaw "0.05"
-seta joy_sensitivitypitch "0.9"
-seta joy_sensitivityyaw "-1.8"
-
-// team say
-bind kp_ins messagemode
-bind kp_del messagemode2
-bind kp_end "+userbind 1"
-bind kp_downarrow "+userbind 2"
-bind kp_pgdn "+userbind 3"
-bind kp_leftarrow "+userbind 4"
-bind kp_5 "+userbind 6"
-bind kp_rightarrow "+userbind 7"
-bind kp_home "+userbind 9"
-bind kp_uparrow "+userbind 10"
-bind kp_pgup "+userbind 11"
-bind kp_multiply "+userbind 12"
-bind kp_slash "+userbind 13"
-bind kp_enter "+userbind 16"
-bind kp_plus "+userbind 17"
-bind kp_minus "+userbind 18"
-
-set sv_vote_commands "restart fraglimit chmap gotomap nextmap endmatch reducematchtime extendmatchtime allready kick cointoss movetoteam_auto" "these commands can be voted"
-set sv_vote_only_commands ""
-set sv_vote_master_commands "movetoteam_red movetoteam_blue movetoteam_yellow movetoteam_pink" "maybe add kickban here (but then sv_vote_master 0)"
-set rcon_restricted_commands "restart fraglimit chmap gotomap endmatch reducematchtime extendmatchtime allready kick kickban \"sv_cmd bans\" \"sv_cmd unban\" status \"sv_cmd teamstatus\" movetoteam_auto movetoteam_red movetoteam_blue movetoteam_yellow movetoteam_pink"
-set sv_vote_call 1     "users can call a vote for the above commands"
-set sv_vote_master 1   "users can call a vote to become master"
-set sv_vote_master_password "" "when set, users can use \"vlogin PASSWORD\" to log in as master"
-set sv_vote_change 0   "set to 1 to allow to change you vote/mind"
-set sv_vote_singlecount 0      "set to 1 to count votes once after timeout or to 0 to count with every vote"
-set sv_vote_timeout 60 "a vote will timeout after this many seconds"
-set sv_vote_wait 120   "a player can not call a vote again for this many seconds when his vote was not accepted"
-set sv_vote_stop 15    "a player can not call a vote again for this many seconds when he stopped this vote (e.g. to correct it)"
-set sv_vote_majority_factor 0.5        "which quotient of the PLAYERS constitute a majority? (try: 0.667, 0.75 when using the above)"
-set sv_vote_simple_majority_factor 0   "which quotient of the VOTERS constitute a majority too? (0 = off, otherwise it must be higher than or equal to sv_vote_majority_factor)"
-// when disabled, don't allow game type changes "note: set these two equal to JUST support simple majorities"
-set sv_vote_override_mostrecent 0
-alias vhelp "cmd vote help"
-alias vstatus "cmd vote status"
-alias vcall "cmd vote call $*"
-alias vstop "cmd vote stop"
-alias vmaster "cmd vote master"
-alias vlogin "cmd vote login $*"
-alias vdo "cmd vote do $*"
-alias vyes "cmd vote yes"
-alias vno "cmd vote no"
-alias vdontcare "cmd vote dontcare"
-alias vabstain "cmd vote abstain"
-
-alias vmap "vcall gotomap $1"
-alias vnextmap "vcall nextmap $1"
-alias vkick "vcall kick $1"
-alias vkickban "vcall kickban $1"
-alias vend "vcall endmatch"
-alias vdomap "vdo gotomap $1"
-alias vdokick "vdo kick $*"
-alias vdokickban "vdo kickban $*"
-alias vdoend "vdo endmatch"
-
-alias lsmaps "cmd lsmaps" // lists all maps on server (for vmap, suggestmap, vnextmap)
-alias lsnewmaps "cmd lsnewmaps" // lists all maps on server that do not yet have a record set (race/cts)
-bind F1 vyes
-bind F2 vno
-
-//used for spectate/observer mode
-alias spec "cmd spectate"
-bind F3 spec
-
-// NixNex (No-Items x Nexuiz) - at each time, everyone uses the same weapon,
-// and in regular intervals, this weapon is cycled
-set g_nixnex 0 "No Items Nexuiz - instead of pickup items, everyone plays with the same weapon. After some time, a countdown will start, after which everyone will switch to another weapon, and so on"
-set g_nixnex_with_laser 0 "always carry the laser as an additional weapon in NixNex"
-set g_nixnex_with_healtharmor 0 "when 1, health and armor still show up in NixNex"
-set g_nixnex_with_powerups 0 "when 1, powerups still show up in NixNex"
-
-// score log
-set sv_logscores_console 0     "print scores to server console"
-set sv_logscores_file 0        "print scores to file"
-set sv_logscores_filename scores.log   "filename"
-set sv_logscores_bots 0        "exclude bots by default"
-
-// spam (frag/capture) log
-set sv_eventlog 0      "the master switch for efficiency reasons"
-set sv_eventlog_console 1
-set sv_eventlog_files 0
-set sv_eventlog_files_timestamps 1
-seta sv_eventlog_files_counter 0
-set sv_eventlog_files_nameprefix nexuiz
-set sv_eventlog_files_namesuffix .log
-
-set nextmap "" "override the maplist when switching to the next map"
-set lastlevel ""
-set quit_when_empty 0  "set to 1, then the server exits when the next level would start but is empty"
-set quit_and_redirect ""       "set to an IP to redirect all players at the end of the match to another server. Set to \"self\" to let all players reconnect at the end of the match (use it to make seamless engine updates)"
-
-// singleplayer campaign
-set g_campaign 0
-seta g_campaign_name "nexuiz25"
-set g_campaign_skill 0
-set g_campaignnexuiz20_index 0
-set g_campaignnexuiz25_index 1
-
-alias singleplayer_start "g_campaign_index 0; set scmenu_campaign_goto 0"
-alias singleplayer_continue "set scmenu_campaign_goto -1"
-alias singleplayer_levellist "set scmenu_campaign_dump 1; togglemenu; wait; togglemenu"
-
-// Green's fullbright skins
-alias cl_fbskin_green "playermodel models/player/nexus.zym; playerskin 6; color 3 3"
-alias cl_fbskin_red "playermodel models/player/nexus.zym; playerskin 6; color 4 4"
-alias cl_fbskin_orange "playermodel models/player/nexus.zym; playerskin 6; color 14 14"
-alias cl_fbskin_off "playermodel models/player/nexus.zym; playerskin 0"
-alias sv_fbskin_green "g_fullbrightplayers 1; sv_defaultcharacter 1; sv_defaultplayermodel models/player/nexus.zym; sv_defaultplayerskin 6; sv_defaultplayercolors 51"
-alias sv_fbskin_red "g_fullbrightplayers 1; sv_defaultcharacter 1; sv_defaultplayermodel models/player/nexus.zym; sv_defaultplayerskin 6; sv_defaultplayercolors 68"
-alias sv_fbskin_orange "g_fullbrightplayers 1; sv_defaultcharacter 1; sv_defaultplayermodel models/player/nexus.zym; sv_defaultplayerskin 6; sv_defaultplayercolors 238"
-alias sv_fbskin_off "g_fullbrightplayers 0; sv_defaultcharacter 0; sv_defaultplayerskin 0; sv_defaultplayercolors \"\""
-
-seta sv_servermodelsonly 1
-
-cl_curl_enabled 1
-cl_curl_maxspeed 300
-sv_curl_defaulturl "http://www.nexuiz.com/contentdownload/getmap.php?file="
-
-set sv_motd ""
-
-seta cl_shownames 1    "show player names pointed to (0: never, 1: teamplay only, 2: always)"
-set sv_allow_shownames 1
-
-set g_waypoints_for_items 1    "make waypoints out of items, values: 0 = never, 1 = unless the mapper prevents it by worldspawn.spawnflags & 1, 2 = always"
-
-seta g_maplist_votable 6 "number of maps that are shown in the map voting at the end of a match"
-seta g_maplist_votable_keeptwotime 15
-seta g_maplist_votable_timeout 30      "timeout for the map voting; must be below 50 seconds!"
-seta g_maplist_votable_suggestions 2
-seta g_maplist_votable_suggestions_override_mostrecent 0
-seta g_maplist_votable_nodetail 1      "nodetail only shows total count instead of all vote counts per map, so votes don't influence others that much"
-seta g_maplist_votable_abstain 0       "when 1, you can abstain from your vote"
-seta g_maplist_votable_screenshot_dir "maps levelshots"        "where to look for map screenshots"
-alias suggestmap "cmd suggestmap $1"
-
-set g_chat_flood_spl 3 "normal chat: seconds between lines to not count as flooding"
-set g_chat_flood_lmax 2        "normal chat: maximum number of lines per chat message at once"
-set g_chat_flood_burst 2       "normal chat: allow bursts of so many chat lines"
-set g_chat_flood_spl_team 1    "team chat: seconds between lines to not count as flooding"
-set g_chat_flood_lmax_team 2   "team chat: maximum number of lines per chat message at once"
-set g_chat_flood_burst_team 2  "team chat: allow bursts of so many chat lines"
-set g_chat_flood_spl_tell 1    "private chat: seconds between lines to not count as flooding"
-set g_chat_flood_lmax_tell 2   "private chat: maximum number of lines per chat message at once"
-set g_chat_flood_burst_tell 2  "private chat: allow bursts of so many chat lines"
-set g_chat_flood_notify_flooder 1      "when 0, the flooder still can see his own message"
-set g_chat_teamcolors 0        "colorize nicknames in team color for chat"
-set g_voice_flood_spv 4        "normal voices: seconds between voices to not count as flooding"
-set g_voice_flood_spv_team 2   "team voices: seconds between voices to not count as flooding"
-set g_nick_flood_timeout 120 "time after which nick flood protection resets (set to 0 to disable nick flood checking)"
-set g_nick_flood_penalty 0.5 "duration of the nick flood penalty"
-set g_nick_flood_penalty_yellow 3 "number of changes to allow before warning and movement blocking"
-set g_nick_flood_penalty_red 30 "number of changes to allow before totally disorienting the player"
-
-set g_waypointsprite_normdistance 512
-set g_waypointsprite_minscale 0.5
-set g_waypointsprite_minalpha 0.4
-set g_waypointsprite_distancealphaexponent 2
-set g_waypointsprite_timealphaexponent 1
-set g_waypointsprite_deployed_lifetime 10
-set g_waypointsprite_deadlifetime 1
-set g_waypointsprite_limitedrange 5120
-set g_waypointsprite_stuffbinds 0
-seta g_waypointsprite_scale 1
-seta g_waypointsprite_alpha 1 "This allows the client to control transparency of the waypoint"
-seta g_waypointsprite_edgefadealpha 0.5 "alpha multiplier near the edge"
-seta g_waypointsprite_edgefadescale 1 "scale multiplier near the edge"
-seta g_waypointsprite_edgefadedistance 50 "distance in virtual pixels from edge where to start fading"
-seta g_waypointsprite_crosshairfadealpha 0.25 "alpha multiplier near crosshair"
-seta g_waypointsprite_crosshairfadescale 1 "scale multiplier near the crosshair"
-seta g_waypointsprite_crosshairfadedistance 150 "distance in virtual pixels from crosshair where to start fading"
-seta g_waypointsprite_distancefadealpha 1 "alpha multiplier near distance"
-seta g_waypointsprite_distancefadescale 0.7 "scale multiplier near the distance"
-seta g_waypointsprite_distancefadedistancemultiplier 0.5 "distance in map sizes from distance where to stop fading"
-alias "g_waypointsprite_personal"      "impulse 30"
-alias "g_waypointsprite_personal_p"    "impulse 31"
-alias "g_waypointsprite_personal_d"    "impulse 32"
-alias "g_waypointsprite_team_helpme"   "impulse 33"
-alias "g_waypointsprite_team_here"     "impulse 34"
-alias "g_waypointsprite_team_here_p"   "impulse 35"
-alias "g_waypointsprite_team_here_d"   "impulse 36"
-alias "g_waypointsprite_team_danger"   "impulse 37"
-alias "g_waypointsprite_team_danger_p" "impulse 38"
-alias "g_waypointsprite_team_danger_d" "impulse 39"
-alias "g_waypointsprite_clear_personal"        "impulse 47"
-alias "g_waypointsprite_clear" "impulse 48"
-alias "g_waypointsprite_toggle"        "impulse 49"
-// key for that?
-seta cl_hidewaypoints 0 "disable static waypoints, only show team waypoints"
-
-// command extension
-alias qc_cmd   "sv_cmd $*" // menu QC will override this to menu_cmd
-alias adminmsg "sv_cmd adminmsg $*"
-alias teamstatus       "cmd teamstatus; sv_cmd teamstatus" // yes, it is broken on listen servers that way, but well, who cares :P
-alias printstats       "sv_cmd printstats" // print status on demand
-alias g_maplist_add    "qc_cmd maplist add $*"
-alias g_maplist_remove "qc_cmd maplist remove $*"
-alias g_maplist_putfirst       "qc_cmd maplist remove $* ; qc_cmd maplist add $*"
-alias g_maplist_shufflenow     "qc_cmd maplist shuffle"
-alias g_maplist_cleanup        "qc_cmd maplist cleanup" // removes maps that don't exist from the map list
-alias gametype "sv_cmd gametype $*"
-
-alias addfav "qc_cmd addtolist net_slist_favorites $*"
-alias addvote "qc_cmd addtolist sv_vote_commands $*"
-
-// key hunt
-set g_keyhunt 0 "Key Hunt: collect all keys from the enemies and bring them together to score"
-set g_balance_keyhunt_delay_return 60
-set g_balance_keyhunt_delay_round 5
-set g_balance_keyhunt_delay_tracking 10
-set g_balance_keyhunt_delay_fadeout 2
-set g_balance_keyhunt_delay_collect 1.5
-set g_balance_keyhunt_delay_drop 0.4
-set g_balance_keyhunt_maxdist 150
-set g_balance_keyhunt_score_collect 3
-set g_balance_keyhunt_score_carrierfrag 2
-set g_balance_keyhunt_score_capture 100
-set g_balance_keyhunt_score_push 60
-set g_balance_keyhunt_score_destroyed 50
-set g_balance_keyhunt_score_destroyed_ownfactor 1
-set g_balance_keyhunt_dropvelocity 300
-set g_balance_keyhunt_throwvelocity 400
-set g_balance_keyhunt_protecttime 0.8
-set g_balance_keyhunt_damageforcescale 1
-seta g_keyhunt_teams_override 0
-set g_keyhunt_teams 0
-
-// so it can be stuffcmd-ed still
-set cl_gravity 800     "but ignored anyway"
-
-set g_ban_default_bantime 5400 "90 minutes"
-set g_ban_default_masksize 3   "whole 255.255.255.0 networks (set to 4 for single IPs); when UID support is compiled in, masksize 0 means banning by UID"
-set g_banned_list ""   "format: IP remainingtime IP remainingtime ..."
-alias bans "sv_cmd bans"
-alias ban "sv_cmd ban $*"         // usage: ban address(maybe incomplete, like 1.2.3) bantime(seconds)
-alias kickban "sv_cmd kickban $*" // usage: kickban # playerno bantime(seconds) masksize(bytes)
-alias unban "sv_cmd unban $*"     // usage: unban 3 (number from bans)
-
-r_labelsprites_scale 0.40625 // labels sprites get displayed at 0.5x from 640x480 to 1280x1024, and at 1x from 1600x1200 onwards
-
-// settemp subsystem. Do not touch. Usage: settemp variable value, next map resets it.
-set settemp_list 0
-set settemp_idx 0
-set _settemp_var UNUSED
-alias settemp "_settemp_var \"_settemp_x$settemp_idx\"; qc_cmd rpn /settemp_idx settemp_idx 1 add def; _settemp \"$1\" \"$2\""
-alias _settemp "settemp_list \"1 $1 $_settemp_var $settemp_list\"; set $_settemp_var \"${$1}\"; $1 \"$2\""
-alias settemp_restore "_settemp_restore_${settemp_list asis}"
-alias _settemp_restore_0 "set settemp_var 0; set settemp_list 0"
-alias _settemp_restore_1 "$1 \"${$2}\"; _settemp_restore_${3- asis}"
-
-// usercommands. These can be edited and bound by the menu.
-seta "userbind1_press" "say_team quad soon";  seta "userbind1_release" "";  seta "userbind1_description" "team: quad soon"
-seta "userbind2_press" "say_team free item %x^7 (l:%y^7); g_waypointsprite_team_here_p";  seta "userbind2_release" "";  seta "userbind2_description" "team: free item, icon"
-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; 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"
-seta "userbind12_press" "say_team killed flagcarrier (l:%y^7); g_waypointsprite_team_p"; seta "userbind12_release" ""; seta "userbind12_description" "team: killed flag, icon"
-seta "userbind13_press" "say_team dropped flag (l:%d^7); g_waypointsprite_team_here_d"; seta "userbind13_release" ""; seta "userbind13_description" "team: dropped flag, icon"
-seta "userbind14_press" "say_team dropped gun %w^7 (l:%l^7); g_waypointsprite_team_here; wait; dropweapon"; seta "userbind14_release" ""; seta "userbind14_description" "team: drop gun, icon"
-seta "userbind15_press" "say_team dropped flag/key %w^7 (l:%l^7); g_waypointsprite_team_here; wait; +use"; seta "userbind15_release" "-use"; seta "userbind15_description" "team: drop flag/key, icon"
-seta "userbind16_press" "say :-) / nice one"; seta "userbind16_release" ""; seta "userbind16_description" "chat: nice one"
-seta "userbind17_press" "say good game"; seta "userbind17_release" ""; seta "userbind17_description" "chat: good game"
-seta "userbind18_press" "say hi / good luck and have fun"; seta "userbind18_release" ""; seta "userbind18_description" "chat: hi / good luck"
-seta "userbind19_press" "+showscores; +con_chat_maximize"; seta "userbind19_release" "-showscores; -con_chat_maximize"; seta "userbind19_description" "scoreboard / chat history"
-seta "userbind20_press" "toggle cl_capturevideo"; seta "userbind20_release" ""; seta "userbind20_description" "toggle recording .avi"
-seta "userbind21_press" "toggle vid_fullscreen; vid_restart"; seta "userbind21_release" ""; seta "userbind21_description" "toggle fullscreen"
-seta "userbind22_press" ""; seta "userbind22_release" ""; seta "userbind22_description" ""
-seta "userbind23_press" ""; seta "userbind23_release" ""; seta "userbind23_description" ""
-seta "userbind24_press" ""; seta "userbind24_release" ""; seta "userbind24_description" ""
-seta "userbind25_press" ""; seta "userbind25_release" ""; seta "userbind25_description" ""
-seta "userbind26_press" ""; seta "userbind26_release" ""; seta "userbind26_description" ""
-seta "userbind27_press" ""; seta "userbind27_release" ""; seta "userbind27_description" ""
-seta "userbind28_press" ""; seta "userbind28_release" ""; seta "userbind28_description" ""
-seta "userbind29_press" ""; seta "userbind29_release" ""; seta "userbind29_description" ""
-seta "userbind30_press" ""; seta "userbind30_release" ""; seta "userbind30_description" ""
-seta "userbind31_press" ""; seta "userbind31_release" ""; seta "userbind31_description" ""
-seta "userbind32_press" ""; seta "userbind32_release" ""; seta "userbind32_description" ""
-alias _userbind_call "${$1}"
-alias +userbind "_userbind_call userbind${1}_press"
-alias -userbind "_userbind_call userbind${1}_release"
-
-seta menu_skin "wickedz"
-set menu_slowmo 1
-seta menu_sounds 0 "enables menu sound effects. 1 enables click sounds, 2 also enables hover sounds"
-
-r_textbrightness 0.2
-r_textcontrast 0.8
-r_textshadow 1
-
-// good settings for these fonts
-con_chat 5
-con_chatpos -9
-con_chatsize 10
-con_chatwidth 0.6
-con_notifysize 10
-con_notifyalign 0
-
-sbar_info_pos 50
-seta sbar_alpha_bg 0.8 "alpha value of the HUD background"
-seta sbar_alpha_fg 1 "alpha value of the HUD foreground items"
-seta sbar_border_thickness 1 "scoreboard border thickness"
-seta sbar_accuracy_border_thickness 1 "accuracy stats border thickness"
-seta sbar_accuracy_doublerows 0 "use two rows instead of one"
-seta sbar_accuracy_yellow 40 "percentage at which the accuracy color is yellow"
-seta sbar_accuracy 1 "0 = no weapon accuracy stats panel on scoreboard"
-seta sbar_accuracy_hud 1 "0 = no weapon accuracy bar on the weapon icons"
-seta sbar_color_bg_r 0 "red color component of the HUD background"
-seta sbar_color_bg_g 0.25 "green color component of the HUD background"
-seta sbar_color_bg_b 0.17 "blue color component of the HUD background"
-seta sbar_color_bg_team 0.5 "team color multiplier of the HUD background"
-seta sbar_scoreboard_alpha_bg 0.6 "scoreboard background alpha"
-seta sbar_scoreboard_alpha_fg 1 "scoreboard foreground alpha"
-seta sbar_scoreboard_alpha_name 0.9 "alpha of player text in scoreboard list other than self"
-seta sbar_scoreboard_alpha_name_self 1 "alpha of player text in scoreboard list of self" 
-seta sbar_scoreboard_fadeinspeed 10 "speed at which scoreboard fades in, higher is faster (0 = instant)"
-seta sbar_scoreboard_fadeoutspeed 5 "speed at which scoreboard fades out, higher is faster (0 = instant)"
-seta sbar_scoreboard_highlight 1 "enable highlighting for rows and columns in the scoreboard"
-seta sbar_scoreboard_highlight_alpha 0.10 "highlight alpha value (depends on sbar_scoreboard_highlight 1)"
-seta sbar_scoreboard_highlight_alpha_self 0.25 "self highlight alpha value"
-seta sbar_hudselector 1        "0 = health/armor positions flipped, 1 = default hud layout, 2 = combined health and armor display"
-seta sbar_showcurrentammo 0 "0 = show all ammo types, 1 = show only the ammo type of the current weapon"
-seta sbar_showweaponicons 1 "1 = show icons of weapons that you have"
-seta sbar_timer_increment 0 "1 = show elapsed time on the timer"
-seta sbar_timer_scale 1 "scale multiplier of the timer"
-seta sbar_vote_alreadyvoted_alpha 0.75 "alpha of the vote dialog after you have voted"
-
-// for menu server list (eventually make them have engine support?)
-seta menu_slist_showfull 1 "show servers even if they are full and have no slots to join"
-seta menu_slist_showempty 1 "show servers even if they are no empty and have no opponents to play against"
-set menu_slist_modfilter "=" // set to either: !modname or modname. modname of = means "same as we are running now".
-
-// for menu weapon arena
-set menu_weaponarena_with_laser 0 "also enable the Laser in this weapon arena"
-
-seta menu_maxplayers 8 "maxplayers value when the menu starts a game"
-
-// command executed before loading a map by the menu
-// makes sure maxplayers is at least minplayers or bot_number + 1
-alias _menu_loadmap_prepare_maxpl "maxplayers $_menu_loadmap_maxplayers"
-alias menu_loadmap_prepare "disconnect; wait; g_campaign 0; menu_cmd rpn /_menu_loadmap_maxplayers menu_maxplayers minplayers bot_number 1 add max max def; _menu_loadmap_prepare_maxpl; g_maplist_shufflenow"
-
-// useful vote aliases
-set timelimit_increment 5
-set timelimit_decrement 5
-set timelimit_min 5
-set timelimit_max 60
-alias extendmatchtime "sv_cmd rpn /timelimit timelimit timelimit_max timelimit timelimit_increment add bound def"
-alias reducematchtime "sv_cmd rpn /timelimit timelimit timelimit_decrement sub timelimit_min timelimit bound def"
-alias endmatch "timelimit -1"
-
-// useful keybind to maximize the chat area temporarily
-set _backup_con_chatvars_set 0
-alias _restore_con_chatvars_0 ""
-alias _restore_con_chatvars_1 "set _backup_con_chatvars_set 0; con_chatpos $_backup_con_chatpos; con_chat $_backup_con_chat; con_notify $_backup_con_notify; con_chattime $_backup_con_chattime; cl_deathscoreboard $_backup_cl_deathscoreboard; scr_centertime $_backup_scr_centertime;r_track_sprites $_backup_r_track_sprites"
-alias _restore_con_chatvars "_restore_con_chatvars_$_backup_con_chatvars_set"
-alias _backup_con_chatvars_0 "set _backup_con_chatvars_set 1; set _backup_con_chatpos $con_chatpos; set _backup_con_chat $con_chat; set _backup_con_notify $con_notify; set _backup_con_chattime $con_chattime; set _backup_cl_deathscoreboard $cl_deathscoreboard; set _backup_scr_centertime $scr_centertime;set _backup_r_track_sprites $r_track_sprites"
-alias _backup_con_chatvars_1 ""
-alias _backup_con_chatvars "_backup_con_chatvars_$_backup_con_chatvars_set"
-alias +con_chat_maximize "_backup_con_chatvars; con_chatpos -9; con_chat 100; con_notify 0; con_chattime 3600; cl_deathscoreboard 0; scr_centertime 0; r_track_sprites 0"
-alias -con_chat_maximize "_restore_con_chatvars"
-
-// tab completion
-set con_completion_playdemo    *.dem
-set con_completion_timedemo    *.dem
-set con_completion_ply         *.dem
-set con_completion_tdem                *.dem
-set con_completion_exec                *.cfg
-set con_completion_chmap       map
-set con_completion_gotomap     map
-set con_completion_vmap                map
-set con_completion_vnextmap    map
-set con_completion_vdomap      map
-
-// these non-saved engine cvars shall be savedG
-seta cl_port $cl_port
-seta r_showsurfaces $r_showsurfaces
-seta r_ambient $r_ambient
-seta skill $skill
-seta gl_finish $gl_finish
-seta v_kicktime $v_kicktime
-seta r_subdivisions_tolerance $r_subdivisions_tolerance
-
-// ticrate
-sys_ticrate 0.0166667
-cl_netfps 60 // should match
-sv_gameplayfix_delayprojectiles 0
-sv_gameplayfix_q2airaccelerate 1
-
-// delay for "kill" to prevent abuse
-set g_balance_kill_delay 5
-
-// this feature is currently buggy in the engine (it appears to PREVENT any dropping in lots of maps, leading to weirdly aligned entities, and in some cases even CAUSES them to drop through solid, like in facing worlds nex)
-sv_gameplayfix_droptofloorstartsolid 0
-
-seta gl_texturecompression 0
-gl_texturecompression_color 1
-gl_texturecompression_gloss 1
-gl_texturecompression_glow 1
-gl_texturecompression_lightcubemaps 1
-gl_texturecompression_q3bsplightmaps 0
-gl_texturecompression_sky 1
-
-set menu_mouse_absolute 0      "TODO make this seta if the engine understands this right"
-seta menu_mouse_speed 1 "speed multiplier for the mouse in the menu (does not affect in-game aiming)"
-set menu_use_default_hostname 1
-alias sethostname "set menu_use_default_hostname 0; hostname $*"
-
-// force fog for people who turn it off in game (set this to like 5 if you suspect people are "cheating" that way)
-set sv_foginterval 0
-
-// Audio track names (for old-style "cd loop NUMBER" usage)
-set g_cdtracks_remaplist "digital-pursuit breakdown-easy brainsukker chaos-fog infight neuronal-diving subcities thru-the-mirror calling-bogus beast-of-insanity thunder brokenlight brokenlight stairs sixtyfour_ desert3 ninesix sixtyfour_revisited northern-lights" "list used by mapinfo system to automatically assign cdtracks - must match the cd remap command"
-set g_cdtracks_dontusebydefault "digital-pursuit thunder brokenlight" "list used by mapinfo system to automatically assign cdtracks - must be a subset of g_cdtracks_remaplist"
-cd remap $g_cdtracks_remaplist
-set sv_intermission_cdtrack ""
-set menu_cdtrack brokenlight
-
-// maxidle (in seconds): kick players idle for more than that amount of time
-set sv_maxidle 0
-// when sv_maxidle is not 0, assume spectators are idle too
-set sv_maxidle_spectatorsareidle 0
-
-// CTF capture limit placeholder cvar
-set capturelimit 0
-
-// sbar: font size
-seta sbar_fontsize 11
-seta sbar_fontsize_spec 16
-seta scr_centersize 11
-seta sbar_width 560
-// alias sbar_font "loadfont user1 ${1},gfx/fallback ${2-}; loadfont user2 ${1}-big ${2-}; sbar_columns_set"
-alias sbar_font "set _requested_sbar_font \"${*}\""
-seta sbar_columns default
-sbar_font gfx/vera-sans 8 12 16 24 32
-seta sbar_showbinds 1  "display actions / bound keys in the strings shown during the game. 0 displays only actions, 1 displays only bound keys, 2 displays both"
-seta sbar_showbinds_limit 2    "maximum number of bound keys to show for an action. 0 for unlimited"
-
-// these entities are not referenced by anything directly, they just represent
-// teams and are found by find() when needed
-prvm_leaktest_ignore_classnames "ctf_team dom_team tdm_team"
-
-sv_allowdownloads_inarchive 1 // for csprogs.dat
-
-set g_jump_grunt 0     "Do you make a grunting noise every time you jump? Is it the same grunting noise every time?"
-
-alias allready "sv_cmd allready"
-
-// note: these cvars use weapon NUMBERS. Use the menu to edit this cvar, or look the numbers up in qcsrc/common/constants.qh.
-seta cl_weaponpriority "minstanex rocketlauncher nex grenadelauncher fireball hlac hagar crylink campingrifle uzi electro tuba shotgun laser hook porto" "weapon priority list"
-seta cl_weaponpriority_useforcycling 0 "when set, weapon cycling by the mouse wheel makes use of the weapon priority list"
-seta cl_weaponpriority0 "rocketlauncher grenadelauncher hagar fireball" "use impulse 200 for prev gun from this list, 210 for best gun, 220 for next gun.  Default value: explosives"
-seta cl_weaponpriority1 "minstanex nex crylink hlac electro laser"      "use impulse 201 for prev gun from this list, 211 for best gun, 221 for next gun.  Default value: energy"
-seta cl_weaponpriority2 "minstanex nex campingrifle"                    "use impulse 202 for prev gun from this list, 212 for best gun, 222 for next gun.  Default value: hitscan exact"
-seta cl_weaponpriority3 "minstanex nex campingrifle uzi shotgun"        "use impulse 203 for prev gun from this list, 213 for best gun, 223 for next gun.  Default value: hitscan all"
-seta cl_weaponpriority4 "grenadelauncher hlac hagar crylink shotgun"    "use impulse 204 for prev gun from this list, 214 for best gun, 224 for next gun.  Default value: spam weapons"
-seta cl_weaponpriority5 "laser hook porto"                              "use impulse 205 for prev gun from this list, 215 for best gun, 225 for next gun.  Default value: weapons for moving"
-seta cl_weaponpriority6 "" "use impulse 206 for prev gun from this list, 216 for best gun, 226 for next gun"
-seta cl_weaponpriority7 "" "use impulse 207 for prev gun from this list, 217 for best gun, 227 for next gun"
-seta cl_weaponpriority8 "" "use impulse 208 for prev gun from this list, 218 for best gun, 228 for next gun"
-seta cl_weaponpriority9 "" "use impulse 209 for prev gun from this list, 219 for best gun, 229 for next gun"
-
-seta sv_status_privacy 1       "hide IP addresses from \"status\" replies shown to clients"
-
-
-seta cl_teamradar 1    "show radar in teammatches when available"
-seta cl_teamradar_background_alpha 0   "set to -1 to disable"
-seta cl_teamradar_foreground_alpha 0.8 "alpha of the map"
-seta cl_teamradar_scale 4096 "distance you can see on the team radar"
-seta cl_teamradar_rotation 0   "rotation mode: you set what points up. 0 = player, 1 = west, 2 = south, 3 = east, 4 = north"
-seta cl_teamradar_size "128 128" "size of the team radar in pixels"
-seta cl_teamradar_position "1 0" "1 0 would be upper right corner, 0.5 0.5 the center, append a 2 at the end to disable the corner hack, and a 1 to disable half the hack"
-seta cl_teamradar_zoommode 0   "zoom mode: 0 = zoomed by default, 1 = zoomed when +zoom, 2 = always zoomed, 3 = always zoomed out"
-alias cl_teamradar_rotate "toggle cl_teamradar_rotation 0 1 2 3 4"
-
-set g_maplist_allow_hidden 0           "allow hidden maps to be, e.g., voted for and in the maplist"
-set g_maplist_allow_frustrating 0      "allow impossible maps to be, e.g., voted for and in the maplist (if set to 2, ONLY impossible maps are allowed)"
-
-seta g_start_delay 0   "delay before the game starts, so everyone can join; recommended to set this to like 15 on a public server"
-       if_dedicated set g_start_delay 15
-
-alias ons_map           "cl_cmd radar" // legacy alias
-alias radar             "cl_cmd radar"
-alias sbar_columns_set  "cl_cmd sbar_columns_set $*"
-alias sbar_columns_help "cl_cmd sbar_columns_help $*"
-
-alias _gl_flashblend_update_00 "gl_flashblend 1"
-alias _gl_flashblend_update_10 "gl_flashblend 0"
-alias _gl_flashblend_update_01 "gl_flashblend 0"
-alias _gl_flashblend_update_11 "gl_flashblend 0"
-alias gl_flashblend_update "_gl_flashblend_update_$r_shadow_realtime_dlight$r_showsurfaces"
-
-set sv_clones 0        "number of clones a player may make (reset by the \"kill\" command)"
-
-set cl_handicap 1      "the higher, the more damage you will receive (client setting)"
-
-exec turrets.cfg
-
-// must be at the bottom of this file:
-// alias for switching the teamselect menu
-alias menu_showteamselect "menu_cmd directmenu TeamSelect"
-alias menu_sync "menu_cmd sync"
-bind f5 menu_showteamselect
-
-set g_bugrigs 0
-set g_bugrigs_planar_movement 1        "BROTRR bug emulation"
-set g_bugrigs_planar_movement_car_jumping 1    "my own bug"
-set g_bugrigs_reverse_speeding 1       "BROTRR bug emulation"
-set g_bugrigs_reverse_spinning 1       "BROTRR bug emulation"
-set g_bugrigs_reverse_stopping 1       "BROTRR bug emulation"
-set g_bugrigs_air_steering 1   "NFS bug emulation"
-set g_bugrigs_angle_smoothing 5        "smooth the car angle a bit, looks nice"
-set g_bugrigs_friction_floor 50        "units/sec friction on floor"
-set g_bugrigs_friction_brake 950       "units/sec friction for braking"
-set g_bugrigs_friction_air 0.00001     "(very small) v <- v - v^2 * g_bugrigs_friction_air"
-set g_bugrigs_accel 800        "acceleration"
-set g_bugrigs_speed_ref 400    "reference speed for accel and steer responsiveness"
-set g_bugrigs_speed_pow 2      "reference power for accel and steer responsiveness"
-set g_bugrigs_steer 1  "steering amount"
-
-set g_touchexplode 0
-set g_touchexplode_radius 50
-set g_touchexplode_damage 10
-set g_touchexplode_edgedamage 0
-set g_touchexplode_force 150
-
-set g_ban_sync_uri ""  "sync using this ban list provider (empty string to disable)"
-set g_ban_sync_interval 5      "sync every 5 minutes"
-set g_ban_sync_trusted_servers ""      "request ban lists from these nexuiz servers (do not include your own server there, or unbanning may fail)"
-set g_ban_sync_timeout 45      "time out in seconds for the ban sync requests"
-set g_ban_sync_trusted_servers_verify 0        "when set to 1, additional bans sent by the servers are ignored, and only bans for the requested IP are used"
-
-set g_showweaponspawns 0       "1: display sprites for weapon spawns found on the map when a weapon key is pressed and the weapon is not available"
-
-alias records "cmd records"
-alias rankings "cmd rankings"
-
-// ballistics use physical units, but qu based
-//   Quake-Newton: 1 qN  = 1 qu * 1 g / 1 s^2
-//   Quake-Joule:  1 qJ  = 1 qN * 1 qu
-//   Quake-Pascal: 1 qPa = 1 qN / 1 qu^2
-
-set g_ballistics_materialconstant 1414213562
-set g_ballistics_mindistance 16
-// unit: qJ / qu^3 (energy needed per volume unit of solid to push/burn away
-// parameter: bullet constant: mass / area in g/qu^2
-// = mass / (pi/4 * caliber^2)
-// with caliber in inches, mass in grams:
-// = 1.273239544735163 * mass / caliber^2
-// with caliber in inches, mass in grains:
-// = 0.082633246453312 * mass / caliber^2
-
-// bullet max travel distance inside solid:
-//   0.5 * v^2 * bulletconstant / g_ballistics_materialconstant
-
-// some bullet constants:
-//   http://hypertextbook.com/facts/2000/ShantayArmstrong.shtml
-//     second bullet: caliber .45, mass 16.2g, bullet constant 101.859163578813
-//     third bullet: caliber .338, mass 16.2g, bullet constant 180.5476053421592
-//     fourth bullet: caliber .25, mass 2.3g, bullet constant 46.85521524625399
-//   http://en.wikipedia.org/wiki/.50_BMG
-//     caliber .5, 360 grains, bullet constant 118.9918748927693
-//   AK-47:
-//     caliber .3, 62 grains, bullet constant 56.92512533450383
-//   .3 winchester magnum:
-//     caliber .3, 150 grains, bullet constant 137.7220774221867
-
-set cl_stripcolorcodes 0       "experimental feature (notes: strips ALL color codes from messages!)"
-
-sv_status_show_qcstatus 1      "Nexuiz uses this field instead of frags"
-set g_full_getstatus_responses 0       "this currently breaks qstat"
-
-// Demo camera
-set camera_enable              0       "Enables the camera for demo playback"
-set camera_free                0       "Free camera instead of chasing the player"
-set camera_reset               0       "Resets the camera position and switch to chase mode"
-set camera_speed_roll          0.9     "Camera rotation speed"
-set camera_speed_chase                 4       "Camera movement speed on the x/y/z axis while chasing the player"
-set camera_speed_free          8       "Camera movement speed on the x/y/z axis in free mode"
-set camera_speed_attenuation   10      "Camera movements attenuation factor. Bigger is smoother. Applies to mouse movements"
-set camera_mouse_treshold      0.5     "Use to ignore small mouse movements. This allows for smoother camera control"
-set camera_chase_smoothly      0       "Attenuate player movements (only in chase mode)"
-set camera_look_player         0       "Always look to the player. Mouse input is ignored in this mode"
-set camera_look_attenuation    8       "Attenuation of \"looking\" movements, only if camera_look_player is set. Bigger is smoother"
-set camera_forward_follows     1       "0: Move the camera forwards without changing altitude. 1: Move towards what you are looking"
-
-// "Gentle mode": show no blood
-seta sv_gentle 0       "force gentle mode for everyone, also remove references to acts of killing from the messages"
-seta cl_gentle 0       "client side gentle mode (only replaces gibs); when set to 1, white smoke replaces gibs, when set to 2, colorful clouds replace gibs"
-
-seta cl_racetimer_position 0.25 "Y-axis positioning of the race timer (from 0 to 1)"
-seta cl_showpressedkeys        0       "Show which movement keys someone is pressing: 1 for spectating, 2 for always"
-seta cl_showpressedkeys_position "0.5 0.8"     "1 0 would be upper right corner, 0.5 0.5 the center"
-
-seta cl_showspeed 0 "show the XY speed of the player"
-seta cl_showspeed_unit 0 "unit selection (0 = qu/s (no postfix), 1 = qu/s, 2 = m/s, 3 = km/h, 4 = mph, 5 = knots)"
-seta cl_showspeed_z 0 "include the speed on the Z-axis"
-seta cl_showspeed_size 30 "size of the numbers"
-seta cl_showspeed_position 0.7 "Y-axis positioning of the numbers"
-
-seta cl_showacceleration 0 "show the XY acceleration of the player"
-seta cl_showacceleration_z 0 "include the speed on the Z-axis"
-seta cl_showacceleration_size 40 "height of the bar"
-seta cl_showacceleration_scale 5 "X-axis scale of the bar"
-seta cl_showacceleration_alpha 0.5 "alpha of the bar"
-seta cl_showacceleration_color_custom 0 "0 = dynamic color depending on acceleration, 1 = use custom color"
-seta cl_showacceleration_color "1 0 0" "color of the bar, needs cl_showacceleration_color_custom to be 1"
-seta cl_showacceleration_position 0.6 "Y-axis positioning of the bar"
-
-set g_jetpack 0 "Jetpack mutator (uses the hook's button, can't coexist with the offhand hook, but only with the onhand one)"
-
-set g_running_guns 0 "... or wonder, till it drives you mad, what would have followed if you had."
-
-set cl_effects_lightningarc_simple 0
-set cl_effects_lightningarc_segmentlength 64
-set cl_effects_lightningarc_drift_start 0.45
-set cl_effects_lightningarc_drift_end 0.1
-set cl_effects_lightningarc_branchfactor_start 0.25
-set cl_effects_lightningarc_branchfactor_add 0.1
-
-set g_hitplots 0 "when set to 1, hitplots are stored by the server to provide a means of proving that a triggerbot was used"
-seta g_hitplots_individuals "" "the individuals, by IP, that should have their hitplots recorded"
-alias g_hitplots_add "qc_cmd rpn /g_hitplots_individuals g_hitplots_individuals $1 union def"
-alias g_hitplots_remove "qc_cmd rpn /g_hitplots_individuals g_hitplots_individuals $1 difference def"
-
-alias mute "prvm_edictset server $1 muted 1" // I am lazy and not making an actual command of this
-alias unmute "prvm_edictset server $1 muted 0" // dito
-
-rcon_secure 1
-
-set menu_updatecheck 1
-
-set bot_navigation_ignoreplayers 0 // FIXME remove this once the issue is solved
-set bot_sound_monopoly 0 "when enabled, only bots can make any noise"
-
-// broken, sorry (cannot handle weapon attachment properly)
-//seta cl_forceplayermodels 0 "force all players to look like you; WARNING: animations can look very bad with this"
-//seta cl_forceplayermodelsfromnexuiz 0 "force models coming from nexuiz; WARNING: animations can look very bad with this"
-//set sv_clforceplayermodels 1 "allow clients to use cl_forcemodels"
-
-set sv_loddistance1 1024
-set sv_loddistance2 4096
-seta cl_playerdetailreduction 0        "the higher, the less detailed player models are displayed (LOD)"
-
-set g_mapinfo_settemp_acl "+*" "ACL for mapinfo setting cvars"
-
-// hooks
-alias _cl_hook_gamestart "set _cl_hook_gametype $1; _cl_hook_gamestart_stage2"
-alias _cl_hook_gamestart_stage2 "cl_hook_gamestart_all; cl_hook_gamestart_${_cl_hook_gametype}"
-alias cl_hook_gamestart_all
-alias cl_hook_gamestart_nop  //is only called when CSQC unloads before knowing the gametype, very unlikely
-alias cl_hook_gamestart_dm
-alias cl_hook_gamestart_tdm
-alias cl_hook_gamestart_dom
-alias cl_hook_gamestart_ctf
-alias cl_hook_gamestart_rune
-alias cl_hook_gamestart_lms
-alias cl_hook_gamestart_arena
-alias cl_hook_gamestart_ca
-alias cl_hook_gamestart_kh
-alias cl_hook_gamestart_ons
-alias cl_hook_gamestart_as
-alias cl_hook_gamestart_rc
-alias cl_hook_gamestart_nexball
-alias cl_hook_gamestart_cts
-alias cl_hook_gameend
-
-alias _sv_hook_gamestart "set _sv_hook_gametype $1; _sv_hook_gamestart_stage2"
-alias _sv_hook_gamestart_stage2 "sv_hook_gamestart_all; sv_hook_gamestart_${_sv_hook_gametype}"
-alias sv_hook_gamestart_all
-alias sv_hook_gamestart_dm
-alias sv_hook_gamestart_tdm
-alias sv_hook_gamestart_dom
-alias sv_hook_gamestart_ctf
-alias sv_hook_gamestart_rune
-alias sv_hook_gamestart_lms
-alias sv_hook_gamestart_arena
-alias sv_hook_gamestart_ca
-alias sv_hook_gamestart_kh
-alias sv_hook_gamestart_ons
-alias sv_hook_gamestart_as
-alias sv_hook_gamestart_rc
-alias sv_hook_gamestart_nexball
-alias sv_hook_gamestart_cts
-alias sv_hook_gamerestart
-alias sv_hook_gameend
-
-seta cl_casings_maxcount 100 "maximum amount of shell casings (must be at least 1)"
-seta cl_gibs_maxcount 100 "maximum amount of gibs (must be at least 1)"
-seta cl_vehicle_spiderbot_cross_alpha 0.6
-seta cl_vehicle_spiderbot_cross_size 1
-
-//cl_gunalign calculator
-seta menu_cl_gunalign 3 "Gun alignment; 1 = right, 2 = left, 3 = center or right, 4 = center or left"
-alias _gunalign_01 "cl_gunalign 1"
-alias _gunalign_02 "cl_gunalign 2"
-alias _gunalign_03 "cl_gunalign 3"
-alias _gunalign_04 "cl_gunalign 4"
-alias _gunalign_11 "cl_gunalign 2"
-alias _gunalign_12 "cl_gunalign 1"
-alias _gunalign_13 "cl_gunalign 4"
-alias _gunalign_14 "cl_gunalign 3"
-alias _gunalign_update "_gunalign_$v_flipped$menu_cl_gunalign"
-
-set _menu_alpha "" // will be set by menu QC to the current fading of the menu, can be used by CSQC to fade items
-
-set g_triggerimpulse_accel_power 1 "trigger_impulse accelerator power (applied BEFORE the multiplier)"
-set g_triggerimpulse_accel_multiplier 1 "trigger_impulse accelerator multiplier (applied AFTER the power)"
-set g_triggerimpulse_directional_multiplier 1 "trigger_impulse directional field multiplier"
-set g_triggerimpulse_radial_multiplier 1 "trigger_impulse radial field multiplier"
-
-seta g_ghost_items 1 "enable ghosted items (when between 0 and 1, overrides the alpha value)"
-seta g_ghost_items_color "-1 -1 -1" "color of ghosted items, 0 0 0 leaves the color unchanged"
-
-set sv_weaponstats_damagefile "" "when set to a file name, per-weapon damage stats get written to that file"
-set sv_weaponstats_killfile "" "when set to a file name, per-weapon kill stats get written to that file"
-
-seta cl_noantilag 0 "turn this on if you believe antilag is bad"
-
-set sv_pitch_min -35 "minimum aiming angle for shooting direction display of the gun"
-set sv_pitch_max  35 "maximum aiming angle for shooting direction display of the gun"
-set sv_pitch_fixyaw 1 "workaround to fix the aiming direction on stupidly made player models, FIXME fix the models and set this to 0"
-
-set rescan_pending 0 "set to 1 to schedule a fs_rescan at the end of this match"
-
-seta g_mapinfo_allow_unsupported_modes_and_let_stuff_break "0" "set to 1 to be able to force game types using g_ cvars even if the map does not support them"
-
-// weapon accuracy stats
-set sv_accuracy_data_share 1 "1 send weapon accuracy data statistics to spectating clients, depends on cl_accuracy_data_share"
-set sv_accuracy_data_send 1 "1 send weapon accuracy data statistics and improved score info to all the clients at the end of the match, depends on cl_accuracy_data_receive, 0 send the current 'player has won' to all the clients"
-set cl_accuracy_data_share 0 "1 share my weapon accuracy data statistics with other players, 0 keep my weapon accuracy data statistics hidden"
-set cl_accuracy_data_receive 0 "1 receive weapon accuracy data statistics at the end of the match"
-
-set developer_fteqccbugs 0 "check fteqcc bugs on startup"
-set _allow_unacceptable_compiler_bugs 0 "don't bail out if certain bugs are detected (HANDLE WITH CARE)"
-set spawn_debug 0 "use all spawns one by one, then abort, to verify all spawnpoints"
-set loddebug 0 "force this LOD level"
-set spawn_debugview 0 "display spawnpoints and their rating on spawn to debug spawnpoint rating calculation"
-set g_mutatormsg "" "mutator message"
-set speedmeter 0 "print landing speeds"
-set developer_shtest 0 "experimental speedhack detection"
-set waypoint_benchmark 0 "quit after waypoint loading to benchmark bot navigation code"
-set g_debug_bot_commands 0 "print scripted bot commands before executing"
-
-// debug cvars for keyhunt attaching
-set _angles "0 0 0"
-set _origin "0 0 0"
-
-// campaign internal, set when loading a campaign map1G
-set _campaign_index ""
-set _campaign_name ""
-
-// define some engine cvars that we need even on dedicated server
-set r_showbboxes 0
-
-// we REALLY need the end pos nudging DP bug workaround for trace-to-end-of-solid to work
-collision_endposnudge 1
-
-// animation tuning
-set cl_lerpanim_maxdelta_framegroups 0.05 // must be faster than fastest weapon refire
-set cl_lerpanim_maxdelta_server 0.1 // must be slower than slowest server controlled anim (e.g. animinfo stuff)
-
-// FIXME temporary
-set menu_font_size_snapping_fix 1
-
-// player ID
-seta _cl_userid "" "player ID (e.g. for tournaments)"
-
-// FIXME workaround for engine bug
-sv_gameplayfix_nudgeoutofsolid 0
-// to div0: remove this once 5b7ac1706712977bbc0297d2d53294e73574c7cd (svn r9537) is in the stable branch of the engine again
diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg
new file mode 100644 (file)
index 0000000..b43b813
--- /dev/null
@@ -0,0 +1,1778 @@
+set g_xonoticversion 2.5svn    "Xonotic version (formatted for humans)"
+
+//!<showbrand
+showbrand 3
+echo
+echo A warning about this being a SVN development version was set up.
+echo This build shall be used for development and testing only!
+echo
+echo If you want to disable this warning, add the line
+echo   showbrand 0
+echo to your autoexec.cfg.
+echo
+//!>showbrand
+
+// 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\""
+
+// detect dedicated server or client
+alias "_detect_dedicated_$qport" "$*"
+alias "_detect_dedicated_0" ""
+alias if_dedicated "_detect_dedicated_$qport ${* asis}"
+alias if_client "${* asis}"
+if_dedicated alias if_client ""
+
+seta g_configversion 0 "Configuration file version (used to upgrade settings) 0: first run, or previous start was <2.4.1  Later, it's overridden by config.cfg, version ranges are defined in config_update.cfg"
+
+// Xonotic version (formatted for machines)
+// used to determine if a client version is compatible
+// this doesn't have to be bumped with every release
+// bump when clients become incompatible or any other perfectly good reason
+// (e.g. game data incompatibility, engine version incompatibility, etc
+// note: this automatically filters the server browser, clients of the new
+// version won't see old servers, and clients of the old version won't see new
+// servers either
+//
+// e.g. Xonotic 1.5.1 RC1 will be 15101
+gameversion 20000
+gameversion_min 20000 // 2.5.2 still used this
+gameversion_max 20699 // 2.5 version allows any 2.6 release, but no more
+
+// compatibility guideline:
+//   version a.b.c   = a0b0c
+//   gameversion_min = a0(b-1)00 // show servers of the previous "line"
+//   gameversion_max = a0(b+1)99 // show servers of the next "line"
+// example: 2.6.3
+//   gameversion 20603
+//   gameversion_min 20500
+//   gameversion_max 20799
+// however, in 2.5.x, we will:
+//   gameversion = 20000 // let other 2.5 clients connect
+//   gameversion_min = 20000 // 2.5.x still has this, we cannot block it within 2.5
+// however, in 2.6.x, we will just:
+//   gameversion_min = 20000 // show 2.5 servers
+
+// say aliases
+alias asay_ctf_flagcarrier "say_team flag carrier at %y"
+alias asay_ctf_haveflag "say_team (%l) have the flag"
+alias asay_willgo "say_team will go to %y"
+alias asay_support "say_team (%l) need help, %h%%"
+alias asay_killed "say_team got killed at %d"
+alias asay_noammo "say_team (%l) need %W for %w"
+alias asay_drop "say_team (%l) dropped %w ; impulse 17"
+
+// other aliases
+alias +hook +button6
+alias -hook -button6
+alias ready "cmd ready"
+alias lockteams "sv_cmd lockteams"
+alias unlockteams "sv_cmd unlockteams"
+alias nospectators "sv_cmd nospectators"
+alias cointoss "sv_cmd cointoss"
+alias timeout "cmd timeout" //use this command to call a timeout
+alias timein "cmd timein" //use this command to resume the game before timeout is finished
+
+alias bsp "ls maps/*.bsp"
+alias chmap "changelevel $*"
+alias gotomap "sv_cmd gotomap \"$1\""
+
+alias rec "record demos/$1"
+alias ply "playdemo $1"
+alias tdem "timedemo $1"
+
+alias dropweapon "impulse 17"
+alias +show_info +button7
+alias -show_info -button7
+
+alias team_red "cmd selectteam red; cmd join"
+alias team_blue "cmd selectteam blue; cmd join"
+alias team_pink "cmd selectteam pink; cmd join"
+alias team_yellow "cmd selectteam yellow; cmd join"
+alias team_auto "cmd selectteam auto; cmd join"
+bind f6 team_auto
+
+alias movetoteam_red "sv_cmd movetoteam $1 red"
+alias movetoteam_blue "sv_cmd movetoteam $1 blue"
+alias movetoteam_pink "sv_cmd movetoteam $1 pink"
+alias movetoteam_yellow "sv_cmd movetoteam $1 yellow"
+alias movetoteam_auto "sv_cmd movetoteam $1 auto"
+
+// merge lightmaps up to 1024x1024 textures
+// the default of 2048x2048 is too heavy for my rig (SavageX)
+mod_q3bsp_lightmapmergepower 3
+
+// player defaults
+_cl_color 102
+_cl_name Player
+_cl_playermodel models/player/marine.zym
+_cl_playerskin 0
+crosshair 1
+seta crosshair_per_weapon 0    "when 1, each gun will display a different crosshair"
+seta crosshair_color_override 0        "when 1, crosshair_color_* overrides the per-weapon color"
+seta crosshair_effect_speed -1 "how fast (in seconds) some crosshair effects should take place, 0 = instant, -1 = 2x weapon switch time"
+seta crosshair_effect_scalefade 1 "use scaling and fading for crosshair effects"
+seta crosshair_hittest 1 "do a crosshair hit evaluation; also, the crosshair is scaled by the given number when aiming at an enemy, and blurred when aiming at a team mate"
+seta crosshair_hittest_blur 1 "blur the crosshair if the shot is obstructed"
+seta crosshair_hittest_showimpact 0 "move the crosshair to the actual impact location if obstructed"
+seta crosshair_laser ""        "crosshair to display when wielding the laser"
+seta crosshair_laser_color_red 1       "crosshair color red component to display when wielding the laser"
+seta crosshair_laser_color_green 0.35  "crosshair color green component to display when wielding the laser"
+seta crosshair_laser_color_blue 0.2    "crosshair color blue component to display when wielding the laser"
+seta crosshair_laser_color_alpha 0.75  "crosshair alpha value to display when wielding the laser"
+seta crosshair_laser_size 0.4  "crosshair size when wielding the laser"
+seta crosshair_shotgun ""      "crosshair to display when wielding the shotgun"
+seta crosshair_shotgun_color_red 0.7   "crosshair color red component to display when wielding the shotgun"
+seta crosshair_shotgun_color_green 0.7 "crosshair color green component to display when wielding the shotgun"
+seta crosshair_shotgun_color_blue 0.7  "crosshair color blue component to display when wielding the shotgun"
+seta crosshair_shotgun_color_alpha 1.1 "crosshair alpha value to display when wielding the shotgun"
+seta crosshair_shotgun_size 0.65       "crosshair size when wielding the shotgun"
+seta crosshair_uzi ""  "crosshair to display when wielding the machinegun"
+seta crosshair_uzi_color_red 0.4       "crosshair color red component to display when wielding the machinegun"
+seta crosshair_uzi_color_green 0.9     "crosshair color green component to display when wielding the machinegun"
+seta crosshair_uzi_color_blue 0.35     "crosshair color blue component to display when wielding the machinegun"
+seta crosshair_uzi_color_alpha 0.9     "crosshair alpha value to display when wielding the machinegun"
+seta crosshair_uzi_size 0.6    "crosshair size when wielding the machinegun"
+seta crosshair_grenadelauncher ""      "crosshair to display when wielding the mortar"
+seta crosshair_grenadelauncher_color_red 1     "crosshair color red component to display when wielding the mortar"
+seta crosshair_grenadelauncher_color_green 0.15        "crosshair color green component to display when wielding the mortar"
+seta crosshair_grenadelauncher_color_blue 0    "crosshair color blue component to display when wielding the mortar"
+seta crosshair_grenadelauncher_color_alpha 1.15        "crosshair alpha value to display when wielding the mortar"
+seta crosshair_grenadelauncher_size 0.7        "crosshair size when wielding the mortar"
+seta crosshair_electro ""      "crosshair to display when wielding the electro"
+seta crosshair_electro_color_red 0.35  "crosshair color red component to display when wielding the electro"
+seta crosshair_electro_color_green 0.5 "crosshair color green component to display when wielding the electro"
+seta crosshair_electro_color_blue 1    "crosshair color blue component to display when wielding the electro"
+seta crosshair_electro_color_alpha 1   "crosshair alpha value to display when wielding the electro"
+seta crosshair_electro_size 0.5        "crosshair size when wielding the electro"
+seta crosshair_crylink ""      "crosshair to display when wielding the crylink"
+seta crosshair_crylink_color_red 0.85  "crosshair color red component to display when wielding the crylink"
+seta crosshair_crylink_color_green 0.25        "crosshair color green component to display when wielding the crylink"
+seta crosshair_crylink_color_blue 1    "crosshair color blue component to display when wielding the crylink"
+seta crosshair_crylink_color_alpha 0.85        "crosshair alpha value to display when wielding the crylink"
+seta crosshair_crylink_size 0.4        "crosshair size when wielding the crylink"
+seta crosshair_nex ""  "crosshair to display when wielding the nex gun"
+seta crosshair_nex_color_red 0 "crosshair color red component to display when wielding the nex gun"
+seta crosshair_nex_color_green 0.9     "crosshair color green component to display when wielding the nex gun"
+seta crosshair_nex_color_blue 1        "crosshair color blue component to display when wielding the nex gun"
+seta crosshair_nex_color_alpha 0.85    "crosshair alpha value to display when wielding the nex gun"
+seta crosshair_nex_size 0.65   "crosshair size when wielding the nex gun"
+seta crosshair_hagar ""        "crosshair to display when wielding the hagar"
+seta crosshair_hagar_color_red 0.85    "crosshair color red component to display when wielding the hagar"
+seta crosshair_hagar_color_green 0.5   "crosshair color green component to display when wielding the hagar"
+seta crosshair_hagar_color_blue 0.35   "crosshair color blue component to display when wielding the hagar"
+seta crosshair_hagar_color_alpha 1     "crosshair alpha value to display when wielding the hagar"
+seta crosshair_hagar_size 0.8  "crosshair size when wielding the hagar"
+seta crosshair_rocketlauncher ""       "crosshair to display when wielding the rocketlauncher"
+seta crosshair_rocketlauncher_color_red 1      "crosshair color red component to display when wielding the rocketlauncher"
+seta crosshair_rocketlauncher_color_green 0.75 "crosshair color green component to display when wielding the rocketlauncher"
+seta crosshair_rocketlauncher_color_blue 0.2   "crosshair color blue component to display when wielding the rocketlauncher"
+seta crosshair_rocketlauncher_color_alpha 1    "crosshair alpha value to display when wielding the rocketlauncher"
+seta crosshair_rocketlauncher_size 0.5875      "crosshair size when wielding the rocketlauncher"
+seta crosshair_porto ""        "crosshair to display when wielding the porto"
+seta crosshair_porto_color_red 0.5     "crosshair color red component to display when wielding the porto"
+seta crosshair_porto_color_green 1     "crosshair color green component to display when wielding the porto"
+seta crosshair_porto_color_blue 0.5    "crosshair color blue component to display when wielding the porto"
+seta crosshair_porto_color_alpha 0.85  "crosshair alpha value to display when wielding the porto"
+seta crosshair_porto_size 0.6  "crosshair size when wielding the porto"
+seta crosshair_minstanex ""    "crosshair to display when wielding the minstanex gun"
+seta crosshair_minstanex_color_red 0.65        "crosshair color red component to display when wielding the minstanex gun"
+seta crosshair_minstanex_color_green 0.65      "crosshair color green component to display when wielding the minstanex gun"
+seta crosshair_minstanex_color_blue 1  "crosshair color blue component to display when wielding the minstanex gun"
+seta crosshair_minstanex_color_alpha 1 "crosshair alpha value to display when wielding the minstanex gun"
+seta crosshair_minstanex_size 0.4      "crosshair size when wielding the minstanex gun"
+seta crosshair_hook "" "crosshair to display when wielding the hook"
+seta crosshair_hook_color_red 0.65     "crosshair color red component to display when wielding the hook"
+seta crosshair_hook_color_green 1      "crosshair color green component to display when wielding the hook"
+seta crosshair_hook_color_blue 0.85    "crosshair color blue component to display when wielding the hook"
+seta crosshair_hook_color_alpha 0.85   "crosshair alpha value to display when wielding the hook"
+seta crosshair_hook_size 0.5   "crosshair size when wielding the hook"
+seta crosshair_hlac "" "crosshair to display when wielding the H.L.A.C"
+seta crosshair_hlac_color_red 1        "crosshair color red component to display when wielding the H.L.A.C."
+seta crosshair_hlac_color_green 0.65   "crosshair color green component to display when wielding the H.L.A.C."
+seta crosshair_hlac_color_blue 0.2     "crosshair color blue component to display when wielding the H.L.A.C."
+seta crosshair_hlac_color_alpha 1      "crosshair alpha value to display when wielding the H.L.A.C."
+seta crosshair_hlac_size 0.6   "crosshair size when wielding the H.L.A.C."
+seta crosshair_campingrifle "" "crosshair to display when wielding the campingrifle"
+seta crosshair_campingrifle_color_red 0.85     "crosshair color red component to display when wielding the campingrifle"
+seta crosshair_campingrifle_color_green 0.5    "crosshair color green component to display when wielding the campingrifle"
+seta crosshair_campingrifle_color_blue 0.25    "crosshair color blue component to display when wielding the campingrifle"
+seta crosshair_campingrifle_color_alpha 1      "crosshair alpha value to display when wielding the campingrifle"
+seta crosshair_campingrifle_size 0.65  "crosshair size when wielding the campingrifle"
+seta crosshair_campingrifle_ring_size 1.5      "bullet counter ring size around campingrifle crosshair, multiple of crosshair_campingrifle_size"
+seta crosshair_tuba "" "crosshair to display when wielding the tuba"
+seta crosshair_tuba_color_red 0.85     "crosshair color red component to display when wielding the tuba"
+seta crosshair_tuba_color_green 0.5    "crosshair color green component to display when wielding the tuba"
+seta crosshair_tuba_color_blue 0.25    "crosshair color blue component to display when wielding the tuba"
+seta crosshair_tuba_color_alpha 1      "crosshair alpha value to display when wielding the tuba"
+seta crosshair_tuba_size 1     "crosshair size when wielding the tuba"
+seta crosshair_fireball ""     "crosshair to display when wielding the fireball"
+seta crosshair_fireball_color_red 0.2  "crosshair color red component to display when wielding the fireball"
+seta crosshair_fireball_color_green 1.0        "crosshair color green component to display when wielding the fireball"
+seta crosshair_fireball_color_blue 0.2 "crosshair color blue component to display when wielding the fireball"
+seta crosshair_fireball_color_alpha 1  "crosshair alpha value to display when wielding the fireball"
+seta crosshair_fireball_size 1 "crosshair size when wielding the fireball"
+fov 90
+seta cl_velocityzoom 0 "velocity based zooming of fov, negative values zoom out"
+seta cl_velocityzoomtime 0.3   "time value for averaging speed values"
+seta cl_zoomfactor 5   "how much +zoom will zoom (1-16)"
+seta cl_zoomspeed 3.5  "how fast it will zoom (0.5-16), negative values mean instant zoom"
+seta cl_zoomsensitivity 0      "how zoom changes sensitivity (0 = weakest, 1 = strongest)"
+freelook 1
+sensitivity 6
+v_gamma 1.125000
+viewsize 100
+bgmvolume 1
+volume 0.5
+// fullscreen 1024x768x32bit
+vid_bitsperpixel 32
+vid_fullscreen 1
+vid_width 1024
+vid_height 768
+vid_pixelheight 1
+seta menu_vid_width 1024
+seta menu_vid_height 768
+seta menu_vid_pixelheight 1
+seta menu_vid_scale 0
+// 2D resolution 800x600
+vid_conwidth 800
+vid_conheight 600
+// menu_conwidth, menu_conheight are set inside quake.rc
+v_deathtilt 0 // needed for spectators (who are dead to avoid prediction)
+
+// these settings determine how much the view is affected by movement/damage
+cl_deathfade 1 // fade screen to dark red when dead, value represents how fast the fade is (higher is faster)
+cl_bobcycle 0 // how long the cycle of up/down view movement takes (only works if cl_bob is not 0), default is 0.6
+cl_bob 0.01 // how much view moves up/down when moving (does not move if cl_bobcycle is 0, but still enables cl_bobmodel), default is 0.02
+cl_bobmodel 1 // whether to have gun model move around on screen when moving (only works if cl_bob is not 0), default is 1
+cl_rollangle 0 // amount of view tilt when strafing, default is 2.0
+v_kicktime 0 // how long damage kicks of the view last, default is 0 seconds
+gl_polyblend 0.5 // whether to use screen tints, default is 1
+r_motionblur 0 // motion blur value, default is 0
+r_damageblur 0 // motion blur when damaged, default is 0
+
+seta vid_x11_display ""        "xonotic-linux-*.sh will use this to start xonotic on an other/new X display"
+// This can have three possible settings:
+//     ""              run as usual
+//     ":n"            use DISPLAY=:n, create it if needed
+//     ":n/layout"     use DISPLAY=:n, create it if needed with ServerLayout layout
+
+cl_autodemo_nameformat demos/%Y-%m-%d_%H-%M
+
+// taunts and voices
+seta cl_autotaunt 0 "automatically taunt enemies when fragging them"
+seta sv_taunt 1 "allow taunts on the server"
+seta sv_autotaunt 1 "allow autotaunts on the server"
+seta cl_voice_directional 1    "0 = all voices are non-directional, 1 = all voices are directional, 2 = only taunts are directional"
+seta cl_voice_directional_taunt_attenuation 0.5 "this defines the distance from which taunts can be heared"
+
+// server settings
+hostname "Xonotic $g_xonoticversion Server"
+set sv_mapchange_delay 5
+set minplayers 0 "number of players playing at the same time (if not enough real players are there the remaining slots are filled with bots)"
+sv_cullentities_trace 1
+r_cullentities_trace 1
+
+// restart server if all players hit "ready"-button
+set sv_ready_restart 0 "if set to 1 allow a map to be restarted once all players pressed the \"ready\" button'"
+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"
+
+//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 "it set to 1 in a team-based game, the teams are locked once all players readied up and the game restarted (no new players can join after restart unless using the server-command unlockteams)"
+
+set g_maxplayers 0     "maximum number of players allowed to play at the same time, set to 0 to allow all players to join the game"
+set g_maxplayers_spectator_blocktime 5 "if the players voted for the \"nospectators\" command, this setting defines the number of seconds a observer/spectator has time to join the game before he gets kicked"
+
+//tournament mod
+set g_warmup 0 "split the game into a warmup- and match-stage when set to 1"
+set g_warmup_limit 60  "if set to -1 the warmup-stage is not affected by any timelimit, if set to 0 the usual timelimit also affects warmup-stage, otherwise warmup will be limited to this time in SECONDS (useful for public matches)"
+set g_warmup_allow_timeout 0   "if set to 1 timeouts can also be called in the warmup-stage, when sv_timeout is set to 1"
+set g_warmup_allguns 0 "if set players start with all guns in warmup mode"
+
+set g_chat_nospectators 0      "if 0 spec/observer chat is always visible to the player, if 1 it is never visible to players, if 2 it is only visible to players during warmup stage"
+set sv_vote_nospectators 0     "if set only players can call a vote (thus spectators and observers can't call a vote)"
+
+alias g_tourney "g_tourney_$1"
+alias g_tourney_1 "g_warmup 1; g_chat_nospectators 2; sv_vote_nospectators 1"
+alias g_tourney_0 "g_warmup 0; g_chat_nospectators 0; sv_vote_nospectators 0"
+
+set sv_timeout 0       "allows a player to call a timeout, this will pause the game for some time"
+set sv_timeout_length 120      "how long the game will be paused at max, in seconds"
+set sv_timeout_number 2        "how many timeouts one player is allowed to call (gets reset after a restart)"
+set sv_timeout_leadtime 4      "how long the players will be informed that a timeout was called before it starts, in seconds"
+set sv_timeout_resumetime 3    "how long the remaining timeout-time will be after a player called the timein command"
+
+set g_allow_oldnexbeam 0 "If enabled, clients are allowed to use old v2.3 Nexgun beam"
+seta cl_particles_oldnexbeam 0 "Uses the old v2.3 Nexgun beam instead of the new beam, only works if server allows it (g_allow_oldnexbeam 1)"
+set sv_qcweaponanimation 0
+
+set g_telefrags 1
+set g_telefrags_avoid 0
+set g_teleport_maxspeed 0 "maximum speed that a player can keep when going through a teleporter (if a misc_teleporter_dest also has a cap the smallest one of these will be used), 0 = don't limit, -1 = keep no speed"
+
+// fragmessage: This allows extra information to be displayed with the frag centerprints. 
+set sv_fragmessage_information_ping 0 "Enable ping display information, 0 = Never display; 1 = Always display (If the player is a bot, it will say bot instead of the ping.)"
+set sv_fragmessage_information_handicap 1 "Enable handicap display information, 0 = Never display; 1 = Only when the player has handicap on; 2 = Always display (Displays Off if off)"
+set sv_fragmessage_information_stats 0 "Enable statistics (health/armor) display information, 0 = Never display; 1 = Always display (Only available for the person who was killed)"
+set sv_fragmessage_information_typefrag 1 "Enable typefrag display information, 0 = Never display; 1 = Always display"
+
+// use default physics
+set sv_friction_on_land 0
+exec physics26.cfg
+
+set sv_player_viewoffset "0 0 35" "view offset of the player model"
+set sv_player_mins "-16 -16 -24" "playermodel mins"
+set sv_player_maxs "16 16 45" "playermodel maxs"
+set sv_player_crouch_viewoffset "0 0 15" "view offset of the player model when crouched"
+set sv_player_crouch_mins "-16 -16 -24" "mins of a crouched playermodel"
+set sv_player_crouch_maxs "16 16 25" "maxs of a crouched playermodel"
+
+set sv_pogostick 1 "don't require releasing the space bar for jumping again"
+set sv_doublejump 0 "allow Quake 2-style double jumps"
+set sv_jumpspeedcap_min "" "wont perform a doublejump if z-axis speed is higher than sv_jumpvelocity * this"
+set sv_jumpspeedcap_max "" "wont perform a doublejump if z-axis speed is higher than sv_jumpvelocity * this"
+set sv_jumpspeedcap_max_disable_on_ramps 0 "disable max jumpspeedcap on ramps to preserve the old rampjump style"
+
+seta sv_precacheplayermodels 1
+seta sv_precacheweapons 0
+seta sv_precacheitems 0
+set sv_spectator_speed_multiplier 1.5
+seta sv_spectate 1 "if set to 1, new clients are allowed to spectate or observe the game, if set to 0 joining clients spawn as players immediately (no spectating)"
+seta sv_defaultcharacter 0 "master switch, if set to 1 the further configuration for replacing all player models, skins and colors is taken from the sv_defaultplayermodel, sv_defaultplayerskin and sv_defaultplayercolors variables"
+seta sv_defaultplayermodel "models/player/nexus.zym" "default model selection, only works if sv_defaultcharacter is set to 1"
+seta sv_defaultplayerskin 0 "each model has 1 or more skins (combination of model and skin = character), set which skin of the model you wish the default character to have, only works if sv_defaultcharacter is set to 1"
+seta sv_defaultplayermodel_red ""      "\"\" means see sv_defaultplayermodel"
+seta sv_defaultplayerskin_red 0
+seta sv_defaultplayermodel_blue "" "\"\" means see sv_defaultplayermodel"
+seta sv_defaultplayerskin_blue 0
+seta sv_defaultplayermodel_yellow "" "\"\" means see sv_defaultplayermodel"
+seta sv_defaultplayerskin_yellow 0
+seta sv_defaultplayermodel_pink "" "\"\" means see sv_defaultplayermodel"
+seta sv_defaultplayerskin_pink 0
+seta sv_defaultplayercolors "" "set to 16*shirt+pants to force a color, note: it does NOT depend on defaultcharacter! Set to \"\" to disable"
+set sv_autoscreenshot 0 "if set to 1, the server forces all clients to create a local screenshot once the map ended"
+net_messagetimeout 300
+net_connecttimeout 30
+sv_jumpstep 1 // step up stairs while jumping, makes it easier to reach ledges
+set ekg 0      "Throw huge amounts of gibs"
+
+cl_movement 1
+cl_stairsmoothspeed 200
+cl_forwardspeed $sv_maxspeed
+cl_backspeed $sv_maxspeed
+cl_sidespeed $sv_maxspeed
+cl_upspeed $sv_maxspeed
+cl_movement_accelerate $sv_accelerate
+cl_movement_airaccel_qw $sv_airaccel_qw
+cl_movement_airaccel_sideways_friction $sv_airaccel_sideways_friction
+cl_movement_airaccelerate $sv_airaccelerate
+cl_movement_edgefriction $edgefriction
+cl_movement_friction $sv_friction
+cl_movement_jumpvelocity $sv_jumpvelocity
+cl_movement_maxairspeed $sv_maxairspeed
+cl_movement_maxspeed $sv_maxspeed
+cl_movement_stepheight $sv_stepheight
+cl_movement_stopspeed $sv_stopspeed
+cl_movement_track_canjump 0 // till DP bug gets fixed
+cl_movement_wallfriction $sv_wallfriction
+cl_movement_wateraccelerate $sv_wateraccelerate
+cl_movement_waterfriction $sv_waterfriction
+
+seta cl_autoswitch 1 "automatically switch to newly picked up weapons if they are better than what you are carrying"
+alias autoswitch "set cl_autoswitch $1 ; cmd autoswitch $1"
+
+set bot_config_file bots.txt "Name and path of the bot configuration file"
+set bot_number 0       "Minimum number of bots"
+seta bot_usemodelnames 0       "Use player model names for bot names"
+set bot_nofire 0       "When set, bots never fire. Mainly for testing in g_waypointeditor mode"
+seta bot_prefix [BOT]  "Prefix in front of the bot names"
+seta bot_suffix ""     "Suffix behind the bot names"
+seta skill_auto 0      "when 1, \"skill\" gets adjusted to match the best player on the map"
+// general bot AI cvars
+set bot_ai_thinkinterval 0.05
+set bot_ai_strategyinterval 3 "How often a new objective is chosen"
+set bot_ai_enemydetectioninterval 0.5 "How often bots pick a new target"
+set bot_ai_enemydetectionradius 10000 "How far bots can see enemies"
+set bot_ai_dodgeupdateinterval 0.1 "How often scan for items to dodge. Currently not in use."
+set bot_ai_chooseweaponinterval 0.3 "How often the best weapon according to the situation will be chosen"
+set bot_ai_dangerdetectioninterval 0.1 "How often scan for waypoints with dangers near"
+set bot_ai_dangerdetectionupdates 64 "How many waypoints will be considered for danger detection"
+set bot_ai_aimskill_blendrate 2        "How much correction will be applied to the aiming angle"
+set bot_ai_aimskill_fixedrate 15
+set bot_ai_aimskill_firetolerance_distdegrees 180
+set bot_ai_aimskill_firetolerance_mindegrees 2 "Minimum angle tolerance. Used on large distances"
+set bot_ai_aimskill_firetolerance_maxdegrees 60 "Maximum firing angle. Used on close range"
+set bot_ai_aimskill_mouse 1 "How much of the aiming filters are applied"
+set bot_ai_keyboard_distance 250 "Keyboard emulation is disabled after this distance to the goal"
+set bot_ai_keyboard_treshold 0.57
+set bot_ai_aimskill_offset 0.3 "Amount of error induced to the bots aim"
+set bot_ai_aimskill_think 1 "Aiming velocity. Use values below 1 for slower aiming"
+set bot_ai_custom_weapon_priority_distances "300 850"  "Define close and far distances in any order. Based on the distance to the enemy bots will choose different weapons"
+set bot_ai_custom_weapon_priority_far   "minstanex nex campingrifle rocketlauncher grenadelauncher electro hagar hlac crylink laser uzi fireball shotgun tuba" "Desired weapons for far distances ordered by priority"
+set bot_ai_custom_weapon_priority_mid   "minstanex rocketlauncher nex fireball grenadelauncher electro uzi campingrifle crylink hlac hagar shotgun laser tuba" "Desired weapons for middle distances ordered by priority"
+set bot_ai_custom_weapon_priority_close "minstanex nex uzi hlac tuba hagar crylink grenadelauncher shotgun electro campingrifle rocketlauncher laser fireball" "Desired weapons for close distances ordered by priority"
+set bot_ai_weapon_combo 1      "Enable bots to do weapon combos"
+set bot_ai_weapon_combo_threshold 0.3  "Try to make a combo N seconds after the last attack"
+set bot_ai_friends_aware_pickup_radius "500"   "Bots will not pickup items if a team mate is this distance near the item"
+set bot_ai_ignoregoal_timeout 3        "Ignore goals making bots to get stuck in front of a wall for N seconds"
+set bot_ai_bunnyhop_skilloffset 7      "Bots with skill equal or greater than this value will perform the  \"bunnyhop\" technique"
+set bot_ai_bunnyhop_startdistance 250 "Run to goals located further than this distance"
+set bot_ai_bunnyhop_stopdistance 220 "Stop jumping after reaching this distance to the goal"
+set bot_ai_bunnyhop_firstjumpdelay 0.5 "Start running to the goal only if it was seen for more than N seconds"
+set bot_god 0 "god mode for bots"
+set bot_ai_navigation_jetpack 0 "Enable bots to navigat maps using the jetpack"
+set bot_ai_navigation_jetpack_mindistance 3500 "Bots will try fly to objects located farther than this distance"
+// Better don't touch these, there are hard to tweak!
+set bot_ai_aimskill_order_mix_1st 0.01 "Amount of the 1st filter output to apply to the aiming angle"
+set bot_ai_aimskill_order_mix_2nd 0.1 "Amount of the 1st filter output to apply to the aiming angle"
+set bot_ai_aimskill_order_mix_3th 0.01 "Amount of the 1st filter output to apply to the aiming angle"
+set bot_ai_aimskill_order_mix_4th 0.05 "Amount of the 1st filter output to apply to the aiming angle"
+set bot_ai_aimskill_order_mix_5th 0.01 "Amount of the 1st filter output to apply to the aiming angle"
+set bot_ai_aimskill_order_filter_1st 0.4 "Position filter"
+set bot_ai_aimskill_order_filter_2nd 0.4 "Movement filter"
+set bot_ai_aimskill_order_filter_3th 0.2 "Acceleration filter"
+set bot_ai_aimskill_order_filter_4th 0.4 "Position prediction filter. Used rarely"
+set bot_ai_aimskill_order_filter_5th 0.5 "Movement prediction filter. Used rarely"
+
+// waypoint editor enable
+set g_waypointeditor 0
+set bot_ignore_bots 0  "When set, bots don't shoot at other bots"
+set bot_join_empty 0   "When set, bots also play if no player has joined the server"
+set bot_vs_human 0     "Bots and humans play in different teams when set. positive values to make an all-bot blue team, set to negative values to make an all-bot red team, the absolute value is the ratio bots vs humans (1 for equal count)"
+
+alias g_waypointeditor_spawn "impulse 103"
+alias g_waypointeditor_remove "impulse 104"
+alias g_waypointeditor_relinkall "impulse 105"
+alias g_waypointeditor_saveall "impulse 106"
+alias g_waypointeditor_unreachable "impulse 107"
+
+locs_enable 0
+pausable 0
+seta g_spawnshieldtime 0.3 "number of seconds you are invincible after you spawned, this shield is lost after you fire"
+seta g_antilag 2       "AntiLag (0 = no AntiLag, 1 = verified client side hit scan, 2 = server side hit scan in the past, 3 = unverified client side hit scan)"
+set g_antilag_nudge 0 "don't touch"
+set g_antilag_bullets 1 "Bullets AntiLag (0 = no AntiLag, 1 = server side hit scan in the past) - DO NOT TOUCH (severely changes weapon balance)"
+set g_shootfromclient 1 "let client decide if it has the gun left or right; if set to 2, center handedness is allowed, and defaulted to, too; see also cl_gunalign"
+set g_shootfromeye 0 "shots are fired from your eye/crosshair; visual gun position can still be influenced by cl_gunalign 1 and 2"
+set g_shootfromcenter 0 "weapon gets moved to the center, shots still come from the barrel of your weapon; visual gun position can still be influenced by cl_gunalign 1 and 2"
+set g_shootfromfixedorigin "" "if set to a string like 0 y z, the gun is moved to the given y and z coordinates. If set to a string like x y z, the whole shot origin is used"
+set g_pinata 0 "if set to 1 you will not only drop your current weapon when you are killed, but you will drop all weapons that you possessed"
+set g_weapon_stay 0 "if set to 1 or 2, weapons stay after they were picked up (1: weapons you don't have yet give you ammo of their type and they can not be dropped, 2: weapons don't give ammo, but instead players start with one pickup-load of ammo by default, 3: weapons give ammo, weapons only stay as ammo-less ghosts)"
+set g_weapon_throwable 1 "if set to 1, weapons can be dropped"
+set g_powerup_superhealth 1 "if set to 0 the mega health powerup will not spawn on the map"
+set g_powerup_strength 1 "if set to 0 the strength powerup will not spawn on the map"
+set g_powerup_shield 1 "if set to 0 the shield (invincibility) powerup will not spawn on the map"
+set g_balance_powerup_timer 1 "if set to 0 the powerups dont wear off"
+set g_use_ammunition 1 "if set to 0 all weapons you pick up have unlimited ammunition"
+set g_pickup_items 1 "if set to 0 all items (health, armor, ammo, weapons...) are removed from the map"
+set g_minstagib 0      "enable minstagib"
+set g_minstagib_extralives 2   "how many extra lives you will get per powerup"
+set g_minstagib_ammo_start 10  "starting ammo"
+set g_minstagib_ammo_drop 5    "how much ammo you'll get for weapons or cells"
+set g_minstagib_invis_alpha 0.15
+set g_minstagib_speed_jumpheight 1.8 "jump height multiplier that applies while you carry the invincibility powerup"
+set g_minstagib_speed_moverate 1.25 "speed-multiplier that applies while you carry the invincibility powerup"
+set g_vampire 0 "set to 1 to enable the vampire mode, where the damage done to your opponent gets added to your own health"
+set g_weaponarena "0"  "put in a list of weapons to enable a weapon arena mode, or try \"all\" or \"most\""
+set g_weaponarena_random "0"   "if set to a number, only that weapon count is given on every spawn (randomly)"
+set g_laserguided_missile 0 "if set to 1 the rockets of the rocket launcher can be steered using a laserpointer"
+set g_midair 0 "if set to 1 you can only apply damage to your opponent while he is airborne"
+set g_midair_shieldtime 0.3 "number of seconds you are still invincible since you lost contact to the ground"
+set g_spawnsound 1 "set to 0 if you don't want to hear the spawn sound when a player spawns"
+set g_spawnpoints_autodrop 0 "if set to 1, automatically drop spawn point locations if they were placed too high"
+set g_spawnpoints_auto_move_out_of_solid 0 "if set to 1 you will see a warning if a spawn point was placed inside a solid"
+set g_forced_respawn 0 "if set to 1 and a player died, that player gets automatically respawned once <g_respawn_delay> seconds are over"
+set g_fullbrightplayers 0 "brightens up player models (note that the color, skin or model of the players does not change!)"
+set g_fullbrightitems 0 "brightens up items"
+set g_nodepthtestplayers 0 "disables depth testing on players"
+set g_nodepthtestitems 0 "disables depth testing on items"
+set g_casings 2 "specifies which casings (0: none, 1: only shotgun casings, 2: shotgun and machine gun casings) are sent to the client"
+set g_norecoil 0 "if set to 1 shooting weapons won't make you crosshair to move upwards (recoil)"
+set g_maplist_mostrecent "" "contains the name of the maps that were most recently played"
+seta g_maplist_mostrecent_count 3      "number of most recent maps that are blocked from being played again"
+seta g_maplist "accident aggressor aneurysm basement basementctf bleach bloodprison bloodprisonctf bluesky cyberparcour01 darkzone desertfactory dieselpower downer eggandbacon evilspace farewell final_rage nr_piece-o-cake ons-reborn racetrack reslimed ruiner runningman runningman_1on1remix runningmanctf silvercity skyway slimepit soylent starship stormkeep2 strength toxic warfare"
+seta g_maplist_index 0 "this is used internally for saving position in maplist cycle"
+seta g_maplist_selectrandom 0  "if 1, a random map will be chosen as next map - DEPRECATED in favor of g_maplist_shuffle"
+seta g_maplist_shuffle 1       "new randomization method: like selectrandom, but avoid playing the same maps in short succession. This works by taking out the first element and inserting it into g_maplist with a bias to the end of the list"
+set g_maplist_check_waypoints 0        "when 1, maps are skipped if there currently are bots, but the map has no waypoints"
+set samelevel 0 "when 1, always play the same level over and over again"
+set g_maxpushtime 8.0 "timeout for kill credit when your damage knocks someone into a death trap"
+
+set g_cloaked 0 "display all players mostly invisible"
+set g_player_alpha 1
+set g_player_brightness 0      "set to 2 for brighter players"
+seta g_balance_cloaked_alpha 0.25
+
+set g_playerclip_collisions 1 "0 = disable collision testing against playerclips, might be useful on some defrag maps"
+
+set welcome_message_time 8
+
+alias clearmap "disconnect"
+
+set g_grappling_hook 0 "let players spawn with the grappling hook which allows them to pull themselves up"
+
+set leadlimit 0
+
+// this means that timelimit can be overidden globally and fraglimit can be overidden for each game mode: DM/TDM, Domination, CTF, and Runematch.
+seta timelimit_override -1     "Time limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta fraglimit_override -1     "Frag limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta leadlimit_override -1     "Lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta capturelimit_override -1  "Capture limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta captureleadlimit_override -1      "Capture llead imit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta g_ctf_capture_limit -1    "CTF capture limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta g_ctf_capture_leadlimit -1        "CTF capture lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta g_arena_point_limit -1    "Arena point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta g_arena_point_leadlimit -1        "Arena point lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta g_domination_point_limit -1       "Domination point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta g_domination_point_leadlimit -1   "Domination point lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta g_runematch_point_limit -1        "Runematch point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta g_runematch_point_leadlimit -1    "Runematch point lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta g_keyhunt_point_limit -1  "Keyhunt point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta g_keyhunt_point_leadlimit -1      "Keyhunt point lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta g_race_laps_limit -1      "Race laps limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta g_nexball_goallimit -1 "Nexball goal limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+seta g_nexball_goalleadlimit -1 "Nexball goal lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)"
+
+seta g_ctf_win_mode 0  "0: captures only, 1: captures, then points, 2: points only"
+seta g_ctf_ignore_frags 0      "1: regular frags give no points"
+
+// 50% of the spawns shall be far away from any players
+set g_spawn_furthest 0.5
+// respawn delay
+set g_respawn_delay 2 "number of seconds you have to wait before you can respawn again"
+set g_respawn_waves 0 "respawn in waves (every n seconds), intended to decrease overwhelming base attacks"
+// when variables are set to 0, they take over the global setting...
+// to force disable delay or waves, set them to 0.125
+set g_ctf_respawn_delay 0
+set g_ctf_respawn_waves 0
+set g_dm_respawn_delay 0
+set g_dm_respawn_waves 0
+set g_dom_respawn_delay 0
+set g_dom_respawn_waves 0
+set g_lms_respawn_delay 0
+set g_lms_respawn_waves 0
+set g_rune_respawn_delay 0
+set g_rune_respawn_waves 0
+set g_tdm_respawn_delay 0
+set g_tdm_respawn_waves 0
+set g_kh_respawn_delay 0
+set g_kh_respawn_waves 0
+set g_arena_respawn_delay 0
+set g_arena_respawn_waves 0
+set g_ca_respawn_delay 0
+set g_ca_respawn_waves 0
+set g_nexball_respawn_delay 0
+set g_nexball_respawn_waves 0
+set g_as_respawn_delay 0
+set g_as_respawn_waves 0
+set g_ons_respawn_delay 0
+set g_ons_respawn_waves 0
+set g_rc_respawn_waves 0
+set g_rc_respawn_delay 0
+set g_cts_respawn_waves 0
+set g_cts_respawn_delay 0
+set g_cts_selfdamage 1 "0 = disable all selfdamage and falldamage in cts"
+
+// overtime
+seta timelimit_overtime 2 "duration in minutes of one added overtime, added to the timelimit"
+seta timelimit_overtimes 0 "how many overtimes to add at max"
+seta timelimit_suddendeath 5 "number of minutes suddendeath mode lasts after all overtimes were added and still no winner was found"
+
+// common team values
+set g_tdm 0 "Team Deathmatch: the team who kills their opponents most often wins"
+
+seta teamplay_default 4 "default teamplay setting in team games. 1 = no friendly fire, self damage. 2 = friendly fire and self damage enabled. 3 = no friendly fire, but self damage enabled. 4 = obey the following four cvars"
+seta g_mirrordamage 0.3        "for teamplay 4: mirror damage factor"
+seta g_friendlyfire 0.1        "for teamplay 4: fiendly fire factor"
+seta g_teamdamage_threshold 50 "for teamplay 4: threshold over which to apply mirror damage"
+seta g_teamdamage_resetspeed 30        "for teamplay 4: how fast player's teamdamage count decreases"
+
+set deathmatch_force_teamplay 0        "Always play TDM instead of DM"
+seta g_balance_teams 0 "automatically balance out players entering instead of asking them for their preferred team"
+seta g_balance_teams_force 0   "automatically balance out teams when players move or disconnect"
+seta g_balance_teams_prevent_imbalance 0       "prevent players from changing to larger teams"
+set g_tdm_teams 2 "how many teams are in team deathmatch (set by mapinfo)"
+seta g_tdm_teams_override 0    "how many teams are in team deathmatch"
+set g_tdm_team_spawns 0 "when 1, a map can define team spawnpoints for TDM"
+set g_changeteam_banned 0      "not allowed to change team"
+set g_changeteam_fragtransfer 0        "% of frags you get to keep when you change teams (rounded down)"
+
+set sv_teamnagger 1 "enable a nag message when the teams are unbalanced"
+
+// dm
+set g_dm 1 "Deathmatch: killing any other player is one frag, player with most frags wins"
+set gamecfg 1  // "deathmatch"
+
+// ctf
+set g_ctf 0 "Capture The Flag: take the enemy flag and bring it to yours at your base to score"
+set g_ctf_flag_returntime 30
+set g_ctf_flagcarrier_selfdamage 1
+set g_ctf_flagcarrier_selfforce 1
+set g_ctf_fullbrightflags 0
+set g_ctf_dynamiclights 0
+set g_ctf_allow_drop 1 "dropping allows circumventing carrierkill score, so enable this with care!"
+set g_ctf_reverse 0    "when 1, bases/flags are switched :P you have to capture your OWN flag by bringing it to the ENEMY's"
+set g_balance_ctf_delay_collect 1.0
+set g_balance_ctf_damageforcescale 1
+
+set g_ctf_shield_max_ratio 0   "shield at most 0% of a team from the enemy flag (try: 0.4 for 40%)"
+set g_ctf_shield_min_negscore 20       "shield the player from the flag if he's got -20 points or less"
+set g_ctf_shield_force 100     "push force of the shield"
+
+// fun for server admins
+set g_ctf_flag_red_model "models/ctf/flags.md3"
+set g_ctf_flag_red_skin 0
+set g_ctf_flag_blue_model "models/ctf/flags.md3"
+set g_ctf_flag_blue_skin 1
+set g_ctf_flag_glowtrails 0
+set g_ctf_flag_pickup_effects 1
+set g_ctf_flag_capture_effects 1
+set g_ctf_captimerecord_always 0 "if enabled, assisted CTF records (with other players on the server) are recorded too"
+
+exec ctfscoring-ai.cfg
+
+// runematch
+set g_runematch                                                0 "Runematch: pick up and hold the runes, special items that give you points, a special power (rune) and a disadvantage (curse)"
+set g_runematch_pointrate                              5
+set g_runematch_fixedspawns                            1 "use fixed runematch spawns if available"
+set g_runematch_pointamt                                       1
+set g_runematch_shuffletime                            30 "how often runes change position"
+set g_runematch_respawntime                            15 "how soon after being dropped to respawn"
+set g_runematch_frags_killedby_runeholder              4
+set g_runematch_frags_killed_runeholder                        5
+set g_runematch_frags_norune                           0
+set g_runematch_drop_runes_max                         2 "only drop up to 2 runes, the rest should respawn"
+set g_runematch_allow_same                             0 "allow matching rune-curse pairs"
+set g_runematch_rune_alpha                             0.78
+set g_runematch_rune_effects                           544 "EF_ADDITIVE + EF_FULLBRIGHT = 544"
+set g_runematch_rune_glow_size                         0
+set g_runematch_rune_glow_color                                0
+set g_runematch_rune_color_strength                    1.0
+// strength/weakness
+set g_balance_rune_strength_damage                     2.0
+set g_balance_rune_strength_force                      1.5
+set g_balance_curse_weak_damage                                0.5
+set g_balance_curse_weak_force                         0.6
+set g_balance_rune_strength_combo_damage       0.9
+set g_balance_rune_strength_combo_force                        1.0
+// defense/vulner
+set g_balance_rune_defense_takedamage                  0.5
+set g_balance_curse_vulner_takedamage                  2.0
+set g_balance_rune_defense_combo_takedamage            1.0
+// vampire/empathy
+set g_balance_rune_vampire_absorb                      0.4
+set g_balance_curse_empathy_takedamage                 -0.4
+set g_balance_rune_vampire_combo_absorb                        -0.1
+set g_balance_rune_vampire_maxhealth                   500
+set g_balance_curse_empathy_minhealth                  20
+set g_balance_rune_vampire_combo_minhealth             40
+// regen/venom
+set g_balance_rune_regen_hpmod                         1.75
+set g_balance_curse_venom_hpmod                                0.6
+set g_balance_rune_regen_combo_hpmod                   0.9
+set g_balance_rune_regen_regenrate                     3.0
+set g_balance_curse_venom_rotrate                      3.0
+set g_balance_rune_regen_combo_regenrate       0.5
+set g_balance_rune_regen_combo_rotrate                 1.5
+set g_balance_rune_regen_limitmod                      1
+set g_balance_curse_venom_limitmod                     1
+set g_balance_rune_regen_combo_limitmod                        1
+// speed/slow
+set g_balance_rune_speed_atkrate                               0.66
+set g_balance_curse_slow_atkrate                               1.5
+set g_balance_rune_speed_combo_atkrate                 1.2
+set g_balance_rune_speed_moverate                      1.25
+set g_balance_curse_slow_moverate                      0.8
+set g_balance_rune_speed_combo_moverate                        0.9
+set g_balance_rune_speed_jumpheight                    1.4
+set g_balance_curse_slow_jumpheight                    1.0
+set g_balance_rune_speed_combo_jumpheight              1.0
+
+// domination
+set g_domination                       0 "Domination: capture and hold control points to gain points"
+set g_domination_default_teams         2 "default number of teams for maps that aren't domination-specific"
+seta g_domination_teams_override               0 "use a specific number of teams in domination games (minimum 2), disables dom_team entities"
+set g_domination_disable_frags         0 "players can't get frags normally, only get points from kills"
+set g_domination_point_amt             0 "override: how many points to get per ping"
+set g_domination_point_fullbright      0 "domination point fullbright"
+set g_domination_point_rate            0 "override: how often to give those points"
+set g_domination_point_capturetime     0.1 "how long it takes to capture a point (given no interference)"
+set g_domination_point_glow            0 "domination point glow (warning, slow)"
+//set g_domination_balance_team_points 1 "# of points received is based on team sizes"
+
+// last man standing
+set g_lms 0 "Last Man Standing: everyone starts with a certain amount of lives, and the survivor wins"
+set g_lms_lives_override -1
+set g_lms_regenerate 0
+set g_lms_campcheck_interval 10
+set g_lms_campcheck_message "^1Don't camp!"
+set g_lms_campcheck_damage 100
+set g_lms_campcheck_distance 1800
+set g_lms_last_join 3  "if g_lms_join_anytime is false, new players can only join if the worst active player has more than (fraglimit - g_lms_last_join) lives"
+set g_lms_join_anytime 1       "if true, new players can join, but get same amount of lives as the worst player"
+
+// arena
+set g_arena 0 "Arena: many one-on-one rounds are played to find the winner"
+set g_arena_maxspawned 2       "maximum number of players to spawn at once (the rest is spectating, waiting for their turn)"
+set g_arena_roundbased 1       "if disabled, the next player will spawn as soon as someone dies"
+set g_arena_warmup 5   "time, newly spawned players have to prepare themselves in round based matches"
+set g_arena_powerups 0 "enables powerups (superhealth, strength and shield), which are removed by default"
+
+// ca
+set g_ca 0 "Clan Arena: Played in rounds, once you're dead you're out! The team with survivors wins the round."
+set g_ca_point_limit 10 "point limit 10 is standard for clan arena"
+set g_ca_point_leadlimit 0
+set g_ca_warmup 10 "how long the players will have time to run around the map before the round starts"
+
+// onslaught
+set g_onslaught 0 "Onslaught: take control points towards the enemy generator and then destroy it"
+set g_onslaught_gen_health 5000
+set g_onslaught_cp_health 1000
+set g_onslaught_cp_buildhealth 100
+set g_onslaught_cp_buildtime 10
+set g_onslaught_cp_regen 20
+
+// assault
+set g_assault 0 "Assault: attack the enemy base as fast as you can, then defend the base against the enemy for that time to win"
+
+// race
+set g_race 0 "Race: be faster than your opponents"
+set g_race_qualifying_timelimit 0
+set g_race_qualifying_timelimit_override -1
+set g_race_teams 0     "when 2, 3, or 4, the race is played as a team game (the team members can add up their laps)"
+
+// cts
+set g_cts 0 "CTS: complete the stage"
+
+// nexball
+set g_nexball 0 "Nexball: Basketball and Soccer go Xonotic"
+
+set g_nexball_basketball_effects_default     8    "default: dim light. The original version used 1024 (fire) but it gives bad performance"
+set g_balance_nexball_primary_speed       1000    "launching speed"
+set g_balance_nexball_primary_refire         0.7  "launching refire"
+set g_balance_nexball_primary_animtime       0.3  "launching animtime"
+set g_balance_nexball_secondary_animtime     0.3  "launching animtime"
+set g_balance_nexball_secondary_speed     3000    "stealing projectile speed"
+set g_balance_nexball_secondary_lifetime     0.15 "stealing projectile lifetime"
+set g_balance_nexball_secondary_force      500    "stealing projectile force"
+set g_balance_nexball_secondary_refire       0.6  "stealing projectile refire"
+set g_balance_nexball_secondary_animtime     0.3  "stealing projectile animtime"
+
+// -1: MrBougo's first try, not very playable but working...
+//     The ball gets the player's velocity * 1.5 + a vertical boost
+//  0: Revenant style
+//     Player's velocity + a boost where he's looking at + a boost
+//     perpendicularly to the first boost, that is upwards relatively
+//     to the view angle
+//  1: MrBougo's modded Rev style 1
+//     The 2nd Rev boost is always vertical
+//  2: MrBougo's modded Rev style 2
+//     The 1st Rev boost is always horizontal
+//     The 2nd Rev boost is always vertical
+set g_nexball_football_physics  2  "0: Revenant's original movement, 1: 0 but half independant of aiming height, 2: 1 fully independant, -1: first recode try"
+set g_nexball_basketball_bouncefactor 0.6    "velocity loss when the ball bounces"
+set g_nexball_basketball_bouncestop   0.075  "speed at which the ball stops when it hits the ground (multiplied by sv_gravity)"
+set g_nexball_football_bouncefactor   0.6    "velocity loss when the ball bounces"
+set g_nexball_football_bouncestop     0.075  "speed at which the ball stops when it hits the ground (multiplied by sv_gravity)"
+
+set g_nexball_football_boost_forward      100   "forward velocity boost when the ball is touched"
+set g_nexball_football_boost_up           200   "vertical velocity boost when the ball is touched"
+
+set g_nexball_basketball_delay_hold           20    "time before a player who caught the ball loses it (anti-ballcamp)"
+set g_nexball_basketball_delay_hold_forteam   60    "time before a ball reset when a team holds the ball for too long"
+set g_nexball_basketball_teamsteal             1    "1 to allow players to steal from teammates, 0 to disallow"
+
+set g_nexball_basketball_carrier_speed         0.9  "speed multiplier for the ballcarrier"
+
+set g_nexball_meter_period                  1    "time to make a full cycle on the power meter"
+set g_nexball_basketball_meter              1    "use the power meter for basketball"
+set g_nexball_basketball_meter_minpower   0.5    "minimal multiplier to the launching speed when using the power meter"
+set g_nexball_basketball_meter_maxpower   1.2    "maximal multiplier to the launching speed when using the power meter"
+
+set g_nexball_delay_goal     3    "delay between a goal and a ball reset"
+set g_nexball_delay_idle     10   "maximal idle time before a reset"
+set g_nexball_delay_start    3    "time the ball stands on its spawn before being released"
+set g_nexball_delay_collect  0.5  "time before the same player can catch the ball he launched"
+
+set g_nexball_sound_bounce   1    "bouncing sound (0: off)"
+
+set g_nexball_basketball_trail  1  "1 to leave a trail"
+set g_nexball_football_trail    0  "1 to leave a trail"
+set g_nexball_trail_color     254  "1-256 for different colors (Quake palette, 254 is white)"
+
+set g_nexball_radar_showallplayers 1  "1: show every player and the ball on the radar  0: only show teammates and the ball on the radar"
+
+// server game balance settings
+// powerup balance settings
+// weapon balance settings follow
+exec balance.cfg
+
+set g_bloodloss 0   "amount of health below which blood loss occurs"
+
+set g_footsteps 0      "serverside footstep sounds"
+
+// effects
+r_picmipsprites 0 // Xonotic uses sprites that should never be picmipped (team mate, typing, waypoints)
+r_mipsprites 1
+r_mipskins 1
+r_shadow_realtime_world_lightmaps 1
+seta r_ambient 4
+cl_decals_fadetime 1
+cl_decals_time 2
+seta cl_gunalign 3 "Gun alignment; 1 = right, 2 = left, 3 = center or right, 4 = center or left"
+seta cl_nogibs 0 "reduce number of violence effects, or remove them totally"
+seta cl_particlegibs 0 "simpler gibs"
+seta cl_gibs_damageforcescale 3.5 "force to push around gibs"
+seta cl_gibs_lifetime 14 "average lifetime of gibs"
+seta cl_gibs_velocity_scale 1 "gib throw velocity force scale"
+seta cl_gibs_velocity_random 1 "gib throw velocity randomness scale"
+seta cl_gibs_velocity_up 0 "extra z velocity for gibs"
+seta cl_gibs_ticrate 0.1 "ticrate for gibs"
+seta cl_gibs_sloppy 1 "sloppy gibs, may temporarily penetrate walls"
+seta cl_casings 1 "enable or disable bullet casings"
+seta cl_casings_shell_time 30 "shell casing lifetime"
+seta cl_casings_bronze_time 10 "bullet casings lifetime"
+seta cl_casings_ticrate 0.1 "ticrate for casings"
+seta cl_casings_sloppy 1 "sloppy casings, may temporarily penetrate walls"
+seta cl_projectiles_sloppy 0 "sloppy projectiles, may temporarily penetrate walls"
+cl_stainmaps 0
+cl_particles_smoke 1
+vid_gl20 1
+r_glsl_deluxemapping 1
+r_glsl_offsetmapping 0
+r_glsl_offsetmapping_reliefmapping 0
+r_glsl_offsetmapping_scale 0.02
+// execute effects-normal.cfg to make sure that all effect settings are reset
+alias menu_sync "" // will be re-aliased later
+exec effects-normal.cfg
+
+// misc
+fs_empty_files_in_pack_mark_deletions 1 // makes patches able to delete files
+scr_conalpha 1
+scr_conbrightness 0.2
+scr_screenshot_jpeg 1
+scr_screenshot_jpeg_quality 0.9
+sv_maxvelocity 1000000000
+cl_sound_wizardhit ""
+cl_sound_hknighthit ""
+cl_sound_tink1 weapons/tink1.wav
+cl_sound_ric1 weapons/ric1.wav
+cl_sound_ric2 weapons/ric2.wav
+cl_sound_ric3 weapons/ric3.wav
+cl_sound_r_exp3 ""
+sv_sound_land ""
+sv_sound_watersplash ""
+seta cl_sound_maptime_warning "1" "play announcer sound telling you the remaining maptime - 0: do not play at all, 1: play at one minute, 2: play at five minutes, 3: play both"
+seta cl_notify_carried_items "3" "notify you of carried items when you obtain them (e.g. flags in CTF) - 0: disabled, 1: notify of taken items, 2: notify of picking up dropped items, 3: notify of both"
+
+seta cl_hitsound 1 "play a hit notifier sound when you have hit an enemy"
+seta cl_announcer default "name of the announcer you wish to use from data/sound/announcer"
+
+// startmap_dm is used when running with the -listen or -dedicated commandline options
+set serverconfig server.cfg
+alias startmap_dm "set _sv_init 0; map _init/_init; exec $serverconfig; set _sv_init 1; map _init/_init"
+alias sv_loadconfig "exec $serverconfig"
+alias sv_restart "say \"Server will restart at the end of the match, you will all be reconnected automatically. $* \"; quit_and_redirect self"
+
+// aliases:
+alias +attack2 +button3
+alias -attack2 -button3
+alias +zoom +button4
+alias -zoom -button4
+alias +crouch +button5
+alias -crouch -button5
+alias weapnext "_weapnext_${_supports_weaponpriority}${sbar_hudselector}${cl_weaponpriority_useforcycling}"
+alias _weapnext_000 "impulse 10"
+alias _weapnext_001 "impulse 10"
+alias _weapnext_010 "impulse 10"
+alias _weapnext_011 "impulse 10"
+alias _weapnext_020 "impulse 10"
+alias _weapnext_021 "impulse 10"
+alias _weapnext_100 "impulse 10"
+alias _weapnext_101 "impulse 15"
+alias _weapnext_110 "impulse 18"
+alias _weapnext_111 "impulse 15"
+alias _weapnext_120 "impulse 18"
+alias _weapnext_121 "impulse 15"
+alias weaplast "impulse 11"
+alias weapprev "_weapprev_${_supports_weaponpriority}${sbar_hudselector}${cl_weaponpriority_useforcycling}"
+alias _weapprev_000 "impulse 12"
+alias _weapprev_001 "impulse 12"
+alias _weapprev_010 "impulse 12"
+alias _weapprev_011 "impulse 12"
+alias _weapprev_020 "impulse 12"
+alias _weapprev_021 "impulse 12"
+alias _weapprev_100 "impulse 12"
+alias _weapprev_101 "impulse 16"
+alias _weapprev_110 "impulse 19"
+alias _weapprev_111 "impulse 16"
+alias _weapprev_120 "impulse 19"
+alias _weapprev_121 "impulse 16"
+set _supports_weaponpriority 0 "set to 1 by csqc if supported, and to 0 on disconnect"
+alias weapbest "impulse 13"
+
+alias reload "impulse 20"
+
+// movement
+bind w +forward
+bind a +moveleft
+bind s +back
+bind d +moveright
+bind UPARROW +forward
+bind LEFTARROW +moveleft
+bind DOWNARROW +back
+bind RIGHTARROW +moveright
+bind SHIFT +crouch
+bind ENTER +jump
+bind SPACE +jump
+
+// weapons
+bind 1 "impulse 1"
+bind 2 "impulse 2"
+bind 3 "impulse 3"
+bind 4 "impulse 4"
+bind 5 "impulse 5"
+bind 6 "impulse 6"
+bind 7 "impulse 7"
+bind 8 "impulse 8"
+bind 9 "impulse 9"
+bind 0 "impulse 14" // cycles the superweapons
+bind q weaplast
+bind MOUSE1 +attack
+bind MOUSE2 +attack2
+bind MOUSE3 +zoom
+bind MOUSE4 weaplast
+bind MOUSE5 +hook
+bind MWHEELUP weapnext
+bind MWHEELDOWN weapprev
+bind r reload
+bind BACKSPACE dropweapon
+bind g dropweapon
+bind f +use
+
+// misc
+bind e +hook
+bind ` toggleconsole
+bind ~ toggleconsole
+bind TAB +showscores
+bind ESCAPE togglemenu
+bind t messagemode
+bind y messagemode2
+bind z messagemode2
+bind u "+con_chat_maximize"
+bind i +show_info
+bind PAUSE pause
+bind F10 quit
+bind F11 disconnect
+bind F12 screenshot
+bind F4 ready
+bind m radar
+bind ALT +showaccuracy
+
+// Gamepad defaults. Tested with Logitech Rumblepad 2, I hope similar ones works as well.
+bind JOY1 "+crouch"
+bind JOY2 "+jump"
+bind JOY3 "weapprev"
+bind JOY4 "weapnext"
+bind JOY5 "+attack2"
+bind JOY6 "+attack"
+bind JOY7 "+zoom"
+bind JOY8 "dropweapon"
+bind JOY9 "menu_showteamselect"
+bind JOY10 "+show_info"
+bind JOY11 "+showscores"
+bind JOY12 "+con_chat_maximize"
+seta joyadvanced "1"
+seta joyadvaxisr "2"
+seta joyadvaxisx "3"
+seta joyadvaxisy "1"
+seta joyadvaxisz "4"
+seta joysidesensitivity "1.0"
+seta joypitchsensitivity "0.9"
+seta joyyawsensitivity "-1.8"
+// SDL only
+seta joy_deadzoneforward "0.05"
+seta joy_deadzonepitch "0.05"
+seta joy_deadzoneside "0.05"
+seta joy_deadzoneup "0.05"
+seta joy_deadzoneyaw "0.05"
+seta joy_sensitivitypitch "0.9"
+seta joy_sensitivityyaw "-1.8"
+
+// team say
+bind kp_ins messagemode
+bind kp_del messagemode2
+bind kp_end "+userbind 1"
+bind kp_downarrow "+userbind 2"
+bind kp_pgdn "+userbind 3"
+bind kp_leftarrow "+userbind 4"
+bind kp_5 "+userbind 6"
+bind kp_rightarrow "+userbind 7"
+bind kp_home "+userbind 9"
+bind kp_uparrow "+userbind 10"
+bind kp_pgup "+userbind 11"
+bind kp_multiply "+userbind 12"
+bind kp_slash "+userbind 13"
+bind kp_enter "+userbind 16"
+bind kp_plus "+userbind 17"
+bind kp_minus "+userbind 18"
+
+set sv_vote_commands "restart fraglimit chmap gotomap nextmap endmatch reducematchtime extendmatchtime allready kick cointoss movetoteam_auto" "these commands can be voted"
+set sv_vote_only_commands ""
+set sv_vote_master_commands "movetoteam_red movetoteam_blue movetoteam_yellow movetoteam_pink" "maybe add kickban here (but then sv_vote_master 0)"
+set rcon_restricted_commands "restart fraglimit chmap gotomap endmatch reducematchtime extendmatchtime allready kick kickban \"sv_cmd bans\" \"sv_cmd unban\" status \"sv_cmd teamstatus\" movetoteam_auto movetoteam_red movetoteam_blue movetoteam_yellow movetoteam_pink"
+set sv_vote_call 1     "users can call a vote for the above commands"
+set sv_vote_master 1   "users can call a vote to become master"
+set sv_vote_master_password "" "when set, users can use \"vlogin PASSWORD\" to log in as master"
+set sv_vote_change 0   "set to 1 to allow to change you vote/mind"
+set sv_vote_singlecount 0      "set to 1 to count votes once after timeout or to 0 to count with every vote"
+set sv_vote_timeout 60 "a vote will timeout after this many seconds"
+set sv_vote_wait 120   "a player can not call a vote again for this many seconds when his vote was not accepted"
+set sv_vote_stop 15    "a player can not call a vote again for this many seconds when he stopped this vote (e.g. to correct it)"
+set sv_vote_majority_factor 0.5        "which quotient of the PLAYERS constitute a majority? (try: 0.667, 0.75 when using the above)"
+set sv_vote_simple_majority_factor 0   "which quotient of the VOTERS constitute a majority too? (0 = off, otherwise it must be higher than or equal to sv_vote_majority_factor)"
+// when disabled, don't allow game type changes "note: set these two equal to JUST support simple majorities"
+set sv_vote_override_mostrecent 0
+alias vhelp "cmd vote help"
+alias vstatus "cmd vote status"
+alias vcall "cmd vote call $*"
+alias vstop "cmd vote stop"
+alias vmaster "cmd vote master"
+alias vlogin "cmd vote login $*"
+alias vdo "cmd vote do $*"
+alias vyes "cmd vote yes"
+alias vno "cmd vote no"
+alias vdontcare "cmd vote dontcare"
+alias vabstain "cmd vote abstain"
+
+alias vmap "vcall gotomap $1"
+alias vnextmap "vcall nextmap $1"
+alias vkick "vcall kick $1"
+alias vkickban "vcall kickban $1"
+alias vend "vcall endmatch"
+alias vdomap "vdo gotomap $1"
+alias vdokick "vdo kick $*"
+alias vdokickban "vdo kickban $*"
+alias vdoend "vdo endmatch"
+
+alias lsmaps "cmd lsmaps" // lists all maps on server (for vmap, suggestmap, vnextmap)
+alias lsnewmaps "cmd lsnewmaps" // lists all maps on server that do not yet have a record set (race/cts)
+bind F1 vyes
+bind F2 vno
+
+//used for spectate/observer mode
+alias spec "cmd spectate"
+bind F3 spec
+
+// NixNex (No-Items x Xonotic) - at each time, everyone uses the same weapon,
+// and in regular intervals, this weapon is cycled
+set g_nixnex 0 "No Items Xonotic - instead of pickup items, everyone plays with the same weapon. After some time, a countdown will start, after which everyone will switch to another weapon, and so on"
+set g_nixnex_with_laser 0 "always carry the laser as an additional weapon in NixNex"
+set g_nixnex_with_healtharmor 0 "when 1, health and armor still show up in NixNex"
+set g_nixnex_with_powerups 0 "when 1, powerups still show up in NixNex"
+
+// score log
+set sv_logscores_console 0     "print scores to server console"
+set sv_logscores_file 0        "print scores to file"
+set sv_logscores_filename scores.log   "filename"
+set sv_logscores_bots 0        "exclude bots by default"
+
+// spam (frag/capture) log
+set sv_eventlog 0      "the master switch for efficiency reasons"
+set sv_eventlog_console 1
+set sv_eventlog_files 0
+set sv_eventlog_files_timestamps 1
+seta sv_eventlog_files_counter 0
+set sv_eventlog_files_nameprefix xonotic
+set sv_eventlog_files_namesuffix .log
+
+set nextmap "" "override the maplist when switching to the next map"
+set lastlevel ""
+set quit_when_empty 0  "set to 1, then the server exits when the next level would start but is empty"
+set quit_and_redirect ""       "set to an IP to redirect all players at the end of the match to another server. Set to \"self\" to let all players reconnect at the end of the match (use it to make seamless engine updates)"
+
+// singleplayer campaign
+set g_campaign 0
+seta g_campaign_name "xonotic25"
+set g_campaign_skill 0
+set g_campaignxonotic20_index 0
+set g_campaignxonotic25_index 1
+
+alias singleplayer_start "g_campaign_index 0; set scmenu_campaign_goto 0"
+alias singleplayer_continue "set scmenu_campaign_goto -1"
+alias singleplayer_levellist "set scmenu_campaign_dump 1; togglemenu; wait; togglemenu"
+
+// Green's fullbright skins
+alias cl_fbskin_green "playermodel models/player/nexus.zym; playerskin 6; color 3 3"
+alias cl_fbskin_red "playermodel models/player/nexus.zym; playerskin 6; color 4 4"
+alias cl_fbskin_orange "playermodel models/player/nexus.zym; playerskin 6; color 14 14"
+alias cl_fbskin_off "playermodel models/player/nexus.zym; playerskin 0"
+alias sv_fbskin_green "g_fullbrightplayers 1; sv_defaultcharacter 1; sv_defaultplayermodel models/player/nexus.zym; sv_defaultplayerskin 6; sv_defaultplayercolors 51"
+alias sv_fbskin_red "g_fullbrightplayers 1; sv_defaultcharacter 1; sv_defaultplayermodel models/player/nexus.zym; sv_defaultplayerskin 6; sv_defaultplayercolors 68"
+alias sv_fbskin_orange "g_fullbrightplayers 1; sv_defaultcharacter 1; sv_defaultplayermodel models/player/nexus.zym; sv_defaultplayerskin 6; sv_defaultplayercolors 238"
+alias sv_fbskin_off "g_fullbrightplayers 0; sv_defaultcharacter 0; sv_defaultplayerskin 0; sv_defaultplayercolors \"\""
+
+seta sv_servermodelsonly 1
+
+cl_curl_enabled 1
+cl_curl_maxspeed 300
+sv_curl_defaulturl "http://www.xonotic.com/contentdownload/getmap.php?file="
+
+set sv_motd ""
+
+seta cl_shownames 1    "show player names pointed to (0: never, 1: teamplay only, 2: always)"
+set sv_allow_shownames 1
+
+set g_waypoints_for_items 1    "make waypoints out of items, values: 0 = never, 1 = unless the mapper prevents it by worldspawn.spawnflags & 1, 2 = always"
+
+seta g_maplist_votable 6 "number of maps that are shown in the map voting at the end of a match"
+seta g_maplist_votable_keeptwotime 15
+seta g_maplist_votable_timeout 30      "timeout for the map voting; must be below 50 seconds!"
+seta g_maplist_votable_suggestions 2
+seta g_maplist_votable_suggestions_override_mostrecent 0
+seta g_maplist_votable_nodetail 1      "nodetail only shows total count instead of all vote counts per map, so votes don't influence others that much"
+seta g_maplist_votable_abstain 0       "when 1, you can abstain from your vote"
+seta g_maplist_votable_screenshot_dir "maps levelshots"        "where to look for map screenshots"
+alias suggestmap "cmd suggestmap $1"
+
+set g_chat_flood_spl 3 "normal chat: seconds between lines to not count as flooding"
+set g_chat_flood_lmax 2        "normal chat: maximum number of lines per chat message at once"
+set g_chat_flood_burst 2       "normal chat: allow bursts of so many chat lines"
+set g_chat_flood_spl_team 1    "team chat: seconds between lines to not count as flooding"
+set g_chat_flood_lmax_team 2   "team chat: maximum number of lines per chat message at once"
+set g_chat_flood_burst_team 2  "team chat: allow bursts of so many chat lines"
+set g_chat_flood_spl_tell 1    "private chat: seconds between lines to not count as flooding"
+set g_chat_flood_lmax_tell 2   "private chat: maximum number of lines per chat message at once"
+set g_chat_flood_burst_tell 2  "private chat: allow bursts of so many chat lines"
+set g_chat_flood_notify_flooder 1      "when 0, the flooder still can see his own message"
+set g_chat_teamcolors 0        "colorize nicknames in team color for chat"
+set g_voice_flood_spv 4        "normal voices: seconds between voices to not count as flooding"
+set g_voice_flood_spv_team 2   "team voices: seconds between voices to not count as flooding"
+set g_nick_flood_timeout 120 "time after which nick flood protection resets (set to 0 to disable nick flood checking)"
+set g_nick_flood_penalty 0.5 "duration of the nick flood penalty"
+set g_nick_flood_penalty_yellow 3 "number of changes to allow before warning and movement blocking"
+set g_nick_flood_penalty_red 30 "number of changes to allow before totally disorienting the player"
+
+set g_waypointsprite_normdistance 512
+set g_waypointsprite_minscale 0.5
+set g_waypointsprite_minalpha 0.4
+set g_waypointsprite_distancealphaexponent 2
+set g_waypointsprite_timealphaexponent 1
+set g_waypointsprite_deployed_lifetime 10
+set g_waypointsprite_deadlifetime 1
+set g_waypointsprite_limitedrange 5120
+set g_waypointsprite_stuffbinds 0
+seta g_waypointsprite_scale 1
+seta g_waypointsprite_alpha 1 "This allows the client to control transparency of the waypoint"
+seta g_waypointsprite_edgefadealpha 0.5 "alpha multiplier near the edge"
+seta g_waypointsprite_edgefadescale 1 "scale multiplier near the edge"
+seta g_waypointsprite_edgefadedistance 50 "distance in virtual pixels from edge where to start fading"
+seta g_waypointsprite_crosshairfadealpha 0.25 "alpha multiplier near crosshair"
+seta g_waypointsprite_crosshairfadescale 1 "scale multiplier near the crosshair"
+seta g_waypointsprite_crosshairfadedistance 150 "distance in virtual pixels from crosshair where to start fading"
+seta g_waypointsprite_distancefadealpha 1 "alpha multiplier near distance"
+seta g_waypointsprite_distancefadescale 0.7 "scale multiplier near the distance"
+seta g_waypointsprite_distancefadedistancemultiplier 0.5 "distance in map sizes from distance where to stop fading"
+alias "g_waypointsprite_personal"      "impulse 30"
+alias "g_waypointsprite_personal_p"    "impulse 31"
+alias "g_waypointsprite_personal_d"    "impulse 32"
+alias "g_waypointsprite_team_helpme"   "impulse 33"
+alias "g_waypointsprite_team_here"     "impulse 34"
+alias "g_waypointsprite_team_here_p"   "impulse 35"
+alias "g_waypointsprite_team_here_d"   "impulse 36"
+alias "g_waypointsprite_team_danger"   "impulse 37"
+alias "g_waypointsprite_team_danger_p" "impulse 38"
+alias "g_waypointsprite_team_danger_d" "impulse 39"
+alias "g_waypointsprite_clear_personal"        "impulse 47"
+alias "g_waypointsprite_clear" "impulse 48"
+alias "g_waypointsprite_toggle"        "impulse 49"
+// key for that?
+seta cl_hidewaypoints 0 "disable static waypoints, only show team waypoints"
+
+// command extension
+alias qc_cmd   "sv_cmd $*" // menu QC will override this to menu_cmd
+alias adminmsg "sv_cmd adminmsg $*"
+alias teamstatus       "cmd teamstatus; sv_cmd teamstatus" // yes, it is broken on listen servers that way, but well, who cares :P
+alias printstats       "sv_cmd printstats" // print status on demand
+alias g_maplist_add    "qc_cmd maplist add $*"
+alias g_maplist_remove "qc_cmd maplist remove $*"
+alias g_maplist_putfirst       "qc_cmd maplist remove $* ; qc_cmd maplist add $*"
+alias g_maplist_shufflenow     "qc_cmd maplist shuffle"
+alias g_maplist_cleanup        "qc_cmd maplist cleanup" // removes maps that don't exist from the map list
+alias gametype "sv_cmd gametype $*"
+
+alias addfav "qc_cmd addtolist net_slist_favorites $*"
+alias addvote "qc_cmd addtolist sv_vote_commands $*"
+
+// key hunt
+set g_keyhunt 0 "Key Hunt: collect all keys from the enemies and bring them together to score"
+set g_balance_keyhunt_delay_return 60
+set g_balance_keyhunt_delay_round 5
+set g_balance_keyhunt_delay_tracking 10
+set g_balance_keyhunt_delay_fadeout 2
+set g_balance_keyhunt_delay_collect 1.5
+set g_balance_keyhunt_delay_drop 0.4
+set g_balance_keyhunt_maxdist 150
+set g_balance_keyhunt_score_collect 3
+set g_balance_keyhunt_score_carrierfrag 2
+set g_balance_keyhunt_score_capture 100
+set g_balance_keyhunt_score_push 60
+set g_balance_keyhunt_score_destroyed 50
+set g_balance_keyhunt_score_destroyed_ownfactor 1
+set g_balance_keyhunt_dropvelocity 300
+set g_balance_keyhunt_throwvelocity 400
+set g_balance_keyhunt_protecttime 0.8
+set g_balance_keyhunt_damageforcescale 1
+seta g_keyhunt_teams_override 0
+set g_keyhunt_teams 0
+
+// so it can be stuffcmd-ed still
+set cl_gravity 800     "but ignored anyway"
+
+set g_ban_default_bantime 5400 "90 minutes"
+set g_ban_default_masksize 3   "whole 255.255.255.0 networks (set to 4 for single IPs); when UID support is compiled in, masksize 0 means banning by UID"
+set g_banned_list ""   "format: IP remainingtime IP remainingtime ..."
+alias bans "sv_cmd bans"
+alias ban "sv_cmd ban $*"         // usage: ban address(maybe incomplete, like 1.2.3) bantime(seconds)
+alias kickban "sv_cmd kickban $*" // usage: kickban # playerno bantime(seconds) masksize(bytes)
+alias unban "sv_cmd unban $*"     // usage: unban 3 (number from bans)
+
+r_labelsprites_scale 0.40625 // labels sprites get displayed at 0.5x from 640x480 to 1280x1024, and at 1x from 1600x1200 onwards
+
+// settemp subsystem. Do not touch. Usage: settemp variable value, next map resets it.
+set settemp_list 0
+set settemp_idx 0
+set _settemp_var UNUSED
+alias settemp "_settemp_var \"_settemp_x$settemp_idx\"; qc_cmd rpn /settemp_idx settemp_idx 1 add def; _settemp \"$1\" \"$2\""
+alias _settemp "settemp_list \"1 $1 $_settemp_var $settemp_list\"; set $_settemp_var \"${$1}\"; $1 \"$2\""
+alias settemp_restore "_settemp_restore_${settemp_list asis}"
+alias _settemp_restore_0 "set settemp_var 0; set settemp_list 0"
+alias _settemp_restore_1 "$1 \"${$2}\"; _settemp_restore_${3- asis}"
+
+// usercommands. These can be edited and bound by the menu.
+seta "userbind1_press" "say_team quad soon";  seta "userbind1_release" "";  seta "userbind1_description" "team: quad soon"
+seta "userbind2_press" "say_team free item %x^7 (l:%y^7); g_waypointsprite_team_here_p";  seta "userbind2_release" "";  seta "userbind2_description" "team: free item, icon"
+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; 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"
+seta "userbind12_press" "say_team killed flagcarrier (l:%y^7); g_waypointsprite_team_p"; seta "userbind12_release" ""; seta "userbind12_description" "team: killed flag, icon"
+seta "userbind13_press" "say_team dropped flag (l:%d^7); g_waypointsprite_team_here_d"; seta "userbind13_release" ""; seta "userbind13_description" "team: dropped flag, icon"
+seta "userbind14_press" "say_team dropped gun %w^7 (l:%l^7); g_waypointsprite_team_here; wait; dropweapon"; seta "userbind14_release" ""; seta "userbind14_description" "team: drop gun, icon"
+seta "userbind15_press" "say_team dropped flag/key %w^7 (l:%l^7); g_waypointsprite_team_here; wait; +use"; seta "userbind15_release" "-use"; seta "userbind15_description" "team: drop flag/key, icon"
+seta "userbind16_press" "say :-) / nice one"; seta "userbind16_release" ""; seta "userbind16_description" "chat: nice one"
+seta "userbind17_press" "say good game"; seta "userbind17_release" ""; seta "userbind17_description" "chat: good game"
+seta "userbind18_press" "say hi / good luck and have fun"; seta "userbind18_release" ""; seta "userbind18_description" "chat: hi / good luck"
+seta "userbind19_press" "+showscores; +con_chat_maximize"; seta "userbind19_release" "-showscores; -con_chat_maximize"; seta "userbind19_description" "scoreboard / chat history"
+seta "userbind20_press" "toggle cl_capturevideo"; seta "userbind20_release" ""; seta "userbind20_description" "toggle recording .avi"
+seta "userbind21_press" "toggle vid_fullscreen; vid_restart"; seta "userbind21_release" ""; seta "userbind21_description" "toggle fullscreen"
+seta "userbind22_press" ""; seta "userbind22_release" ""; seta "userbind22_description" ""
+seta "userbind23_press" ""; seta "userbind23_release" ""; seta "userbind23_description" ""
+seta "userbind24_press" ""; seta "userbind24_release" ""; seta "userbind24_description" ""
+seta "userbind25_press" ""; seta "userbind25_release" ""; seta "userbind25_description" ""
+seta "userbind26_press" ""; seta "userbind26_release" ""; seta "userbind26_description" ""
+seta "userbind27_press" ""; seta "userbind27_release" ""; seta "userbind27_description" ""
+seta "userbind28_press" ""; seta "userbind28_release" ""; seta "userbind28_description" ""
+seta "userbind29_press" ""; seta "userbind29_release" ""; seta "userbind29_description" ""
+seta "userbind30_press" ""; seta "userbind30_release" ""; seta "userbind30_description" ""
+seta "userbind31_press" ""; seta "userbind31_release" ""; seta "userbind31_description" ""
+seta "userbind32_press" ""; seta "userbind32_release" ""; seta "userbind32_description" ""
+alias _userbind_call "${$1}"
+alias +userbind "_userbind_call userbind${1}_press"
+alias -userbind "_userbind_call userbind${1}_release"
+
+seta menu_skin "wickedz"
+set menu_slowmo 1
+seta menu_sounds 0 "enables menu sound effects. 1 enables click sounds, 2 also enables hover sounds"
+
+r_textbrightness 0.2
+r_textcontrast 0.8
+r_textshadow 1
+
+// good settings for these fonts
+con_chat 5
+con_chatpos -9
+con_chatsize 10
+con_chatwidth 0.6
+con_notifysize 10
+con_notifyalign 0
+
+sbar_info_pos 50
+seta sbar_alpha_bg 0.8 "alpha value of the HUD background"
+seta sbar_alpha_fg 1 "alpha value of the HUD foreground items"
+seta sbar_border_thickness 1 "scoreboard border thickness"
+seta sbar_accuracy_border_thickness 1 "accuracy stats border thickness"
+seta sbar_accuracy_doublerows 0 "use two rows instead of one"
+seta sbar_accuracy_yellow 40 "percentage at which the accuracy color is yellow"
+seta sbar_accuracy 1 "0 = no weapon accuracy stats panel on scoreboard"
+seta sbar_accuracy_hud 1 "0 = no weapon accuracy bar on the weapon icons"
+seta sbar_color_bg_r 0 "red color component of the HUD background"
+seta sbar_color_bg_g 0.25 "green color component of the HUD background"
+seta sbar_color_bg_b 0.17 "blue color component of the HUD background"
+seta sbar_color_bg_team 0.5 "team color multiplier of the HUD background"
+seta sbar_scoreboard_alpha_bg 0.6 "scoreboard background alpha"
+seta sbar_scoreboard_alpha_fg 1 "scoreboard foreground alpha"
+seta sbar_scoreboard_alpha_name 0.9 "alpha of player text in scoreboard list other than self"
+seta sbar_scoreboard_alpha_name_self 1 "alpha of player text in scoreboard list of self" 
+seta sbar_scoreboard_fadeinspeed 10 "speed at which scoreboard fades in, higher is faster (0 = instant)"
+seta sbar_scoreboard_fadeoutspeed 5 "speed at which scoreboard fades out, higher is faster (0 = instant)"
+seta sbar_scoreboard_highlight 1 "enable highlighting for rows and columns in the scoreboard"
+seta sbar_scoreboard_highlight_alpha 0.10 "highlight alpha value (depends on sbar_scoreboard_highlight 1)"
+seta sbar_scoreboard_highlight_alpha_self 0.25 "self highlight alpha value"
+seta sbar_hudselector 1        "0 = health/armor positions flipped, 1 = default hud layout, 2 = combined health and armor display"
+seta sbar_showcurrentammo 0 "0 = show all ammo types, 1 = show only the ammo type of the current weapon"
+seta sbar_showweaponicons 1 "1 = show icons of weapons that you have"
+seta sbar_timer_increment 0 "1 = show elapsed time on the timer"
+seta sbar_timer_scale 1 "scale multiplier of the timer"
+seta sbar_vote_alreadyvoted_alpha 0.75 "alpha of the vote dialog after you have voted"
+
+// for menu server list (eventually make them have engine support?)
+seta menu_slist_showfull 1 "show servers even if they are full and have no slots to join"
+seta menu_slist_showempty 1 "show servers even if they are no empty and have no opponents to play against"
+set menu_slist_modfilter "=" // set to either: !modname or modname. modname of = means "same as we are running now".
+
+// for menu weapon arena
+set menu_weaponarena_with_laser 0 "also enable the Laser in this weapon arena"
+
+seta menu_maxplayers 8 "maxplayers value when the menu starts a game"
+
+// command executed before loading a map by the menu
+// makes sure maxplayers is at least minplayers or bot_number + 1
+alias _menu_loadmap_prepare_maxpl "maxplayers $_menu_loadmap_maxplayers"
+alias menu_loadmap_prepare "disconnect; wait; g_campaign 0; menu_cmd rpn /_menu_loadmap_maxplayers menu_maxplayers minplayers bot_number 1 add max max def; _menu_loadmap_prepare_maxpl; g_maplist_shufflenow"
+
+// useful vote aliases
+set timelimit_increment 5
+set timelimit_decrement 5
+set timelimit_min 5
+set timelimit_max 60
+alias extendmatchtime "sv_cmd rpn /timelimit timelimit timelimit_max timelimit timelimit_increment add bound def"
+alias reducematchtime "sv_cmd rpn /timelimit timelimit timelimit_decrement sub timelimit_min timelimit bound def"
+alias endmatch "timelimit -1"
+
+// useful keybind to maximize the chat area temporarily
+set _backup_con_chatvars_set 0
+alias _restore_con_chatvars_0 ""
+alias _restore_con_chatvars_1 "set _backup_con_chatvars_set 0; con_chatpos $_backup_con_chatpos; con_chat $_backup_con_chat; con_notify $_backup_con_notify; con_chattime $_backup_con_chattime; cl_deathscoreboard $_backup_cl_deathscoreboard; scr_centertime $_backup_scr_centertime;r_track_sprites $_backup_r_track_sprites"
+alias _restore_con_chatvars "_restore_con_chatvars_$_backup_con_chatvars_set"
+alias _backup_con_chatvars_0 "set _backup_con_chatvars_set 1; set _backup_con_chatpos $con_chatpos; set _backup_con_chat $con_chat; set _backup_con_notify $con_notify; set _backup_con_chattime $con_chattime; set _backup_cl_deathscoreboard $cl_deathscoreboard; set _backup_scr_centertime $scr_centertime;set _backup_r_track_sprites $r_track_sprites"
+alias _backup_con_chatvars_1 ""
+alias _backup_con_chatvars "_backup_con_chatvars_$_backup_con_chatvars_set"
+alias +con_chat_maximize "_backup_con_chatvars; con_chatpos -9; con_chat 100; con_notify 0; con_chattime 3600; cl_deathscoreboard 0; scr_centertime 0; r_track_sprites 0"
+alias -con_chat_maximize "_restore_con_chatvars"
+
+// tab completion
+set con_completion_playdemo    *.dem
+set con_completion_timedemo    *.dem
+set con_completion_ply         *.dem
+set con_completion_tdem                *.dem
+set con_completion_exec                *.cfg
+set con_completion_chmap       map
+set con_completion_gotomap     map
+set con_completion_vmap                map
+set con_completion_vnextmap    map
+set con_completion_vdomap      map
+
+// these non-saved engine cvars shall be savedG
+seta cl_port $cl_port
+seta r_showsurfaces $r_showsurfaces
+seta r_ambient $r_ambient
+seta skill $skill
+seta gl_finish $gl_finish
+seta v_kicktime $v_kicktime
+seta r_subdivisions_tolerance $r_subdivisions_tolerance
+
+// ticrate
+sys_ticrate 0.0166667
+cl_netfps 60 // should match
+sv_gameplayfix_delayprojectiles 0
+sv_gameplayfix_q2airaccelerate 1
+
+// delay for "kill" to prevent abuse
+set g_balance_kill_delay 5
+
+// this feature is currently buggy in the engine (it appears to PREVENT any dropping in lots of maps, leading to weirdly aligned entities, and in some cases even CAUSES them to drop through solid, like in facing worlds nex)
+sv_gameplayfix_droptofloorstartsolid 0
+
+seta gl_texturecompression 0
+gl_texturecompression_color 1
+gl_texturecompression_gloss 1
+gl_texturecompression_glow 1
+gl_texturecompression_lightcubemaps 1
+gl_texturecompression_q3bsplightmaps 0
+gl_texturecompression_sky 1
+
+set menu_mouse_absolute 0      "TODO make this seta if the engine understands this right"
+seta menu_mouse_speed 1 "speed multiplier for the mouse in the menu (does not affect in-game aiming)"
+set menu_use_default_hostname 1
+alias sethostname "set menu_use_default_hostname 0; hostname $*"
+
+// force fog for people who turn it off in game (set this to like 5 if you suspect people are "cheating" that way)
+set sv_foginterval 0
+
+// Audio track names (for old-style "cd loop NUMBER" usage)
+set g_cdtracks_remaplist "digital-pursuit breakdown-easy brainsukker chaos-fog infight neuronal-diving subcities thru-the-mirror calling-bogus beast-of-insanity thunder brokenlight brokenlight stairs sixtyfour_ desert3 ninesix sixtyfour_revisited northern-lights" "list used by mapinfo system to automatically assign cdtracks - must match the cd remap command"
+set g_cdtracks_dontusebydefault "digital-pursuit thunder brokenlight" "list used by mapinfo system to automatically assign cdtracks - must be a subset of g_cdtracks_remaplist"
+cd remap $g_cdtracks_remaplist
+set sv_intermission_cdtrack ""
+set menu_cdtrack brokenlight
+
+// maxidle (in seconds): kick players idle for more than that amount of time
+set sv_maxidle 0
+// when sv_maxidle is not 0, assume spectators are idle too
+set sv_maxidle_spectatorsareidle 0
+
+// CTF capture limit placeholder cvar
+set capturelimit 0
+
+// sbar: font size
+seta sbar_fontsize 11
+seta sbar_fontsize_spec 16
+seta scr_centersize 11
+seta sbar_width 560
+// alias sbar_font "loadfont user1 ${1},gfx/fallback ${2-}; loadfont user2 ${1}-big ${2-}; sbar_columns_set"
+alias sbar_font "set _requested_sbar_font \"${*}\""
+seta sbar_columns default
+sbar_font gfx/vera-sans 8 12 16 24 32
+seta sbar_showbinds 1  "display actions / bound keys in the strings shown during the game. 0 displays only actions, 1 displays only bound keys, 2 displays both"
+seta sbar_showbinds_limit 2    "maximum number of bound keys to show for an action. 0 for unlimited"
+
+// these entities are not referenced by anything directly, they just represent
+// teams and are found by find() when needed
+prvm_leaktest_ignore_classnames "ctf_team dom_team tdm_team"
+
+sv_allowdownloads_inarchive 1 // for csprogs.dat
+
+set g_jump_grunt 0     "Do you make a grunting noise every time you jump? Is it the same grunting noise every time?"
+
+alias allready "sv_cmd allready"
+
+// note: these cvars use weapon NUMBERS. Use the menu to edit this cvar, or look the numbers up in qcsrc/common/constants.qh.
+seta cl_weaponpriority "minstanex rocketlauncher nex grenadelauncher fireball hlac hagar crylink campingrifle uzi electro tuba shotgun laser hook porto" "weapon priority list"
+seta cl_weaponpriority_useforcycling 0 "when set, weapon cycling by the mouse wheel makes use of the weapon priority list"
+seta cl_weaponpriority0 "rocketlauncher grenadelauncher hagar fireball" "use impulse 200 for prev gun from this list, 210 for best gun, 220 for next gun.  Default value: explosives"
+seta cl_weaponpriority1 "minstanex nex crylink hlac electro laser"      "use impulse 201 for prev gun from this list, 211 for best gun, 221 for next gun.  Default value: energy"
+seta cl_weaponpriority2 "minstanex nex campingrifle"                    "use impulse 202 for prev gun from this list, 212 for best gun, 222 for next gun.  Default value: hitscan exact"
+seta cl_weaponpriority3 "minstanex nex campingrifle uzi shotgun"        "use impulse 203 for prev gun from this list, 213 for best gun, 223 for next gun.  Default value: hitscan all"
+seta cl_weaponpriority4 "grenadelauncher hlac hagar crylink shotgun"    "use impulse 204 for prev gun from this list, 214 for best gun, 224 for next gun.  Default value: spam weapons"
+seta cl_weaponpriority5 "laser hook porto"                              "use impulse 205 for prev gun from this list, 215 for best gun, 225 for next gun.  Default value: weapons for moving"
+seta cl_weaponpriority6 "" "use impulse 206 for prev gun from this list, 216 for best gun, 226 for next gun"
+seta cl_weaponpriority7 "" "use impulse 207 for prev gun from this list, 217 for best gun, 227 for next gun"
+seta cl_weaponpriority8 "" "use impulse 208 for prev gun from this list, 218 for best gun, 228 for next gun"
+seta cl_weaponpriority9 "" "use impulse 209 for prev gun from this list, 219 for best gun, 229 for next gun"
+
+seta sv_status_privacy 1       "hide IP addresses from \"status\" replies shown to clients"
+
+
+seta cl_teamradar 1    "show radar in teammatches when available"
+seta cl_teamradar_background_alpha 0   "set to -1 to disable"
+seta cl_teamradar_foreground_alpha 0.8 "alpha of the map"
+seta cl_teamradar_scale 4096 "distance you can see on the team radar"
+seta cl_teamradar_rotation 0   "rotation mode: you set what points up. 0 = player, 1 = west, 2 = south, 3 = east, 4 = north"
+seta cl_teamradar_size "128 128" "size of the team radar in pixels"
+seta cl_teamradar_position "1 0" "1 0 would be upper right corner, 0.5 0.5 the center, append a 2 at the end to disable the corner hack, and a 1 to disable half the hack"
+seta cl_teamradar_zoommode 0   "zoom mode: 0 = zoomed by default, 1 = zoomed when +zoom, 2 = always zoomed, 3 = always zoomed out"
+alias cl_teamradar_rotate "toggle cl_teamradar_rotation 0 1 2 3 4"
+
+set g_maplist_allow_hidden 0           "allow hidden maps to be, e.g., voted for and in the maplist"
+set g_maplist_allow_frustrating 0      "allow impossible maps to be, e.g., voted for and in the maplist (if set to 2, ONLY impossible maps are allowed)"
+
+seta g_start_delay 0   "delay before the game starts, so everyone can join; recommended to set this to like 15 on a public server"
+       if_dedicated set g_start_delay 15
+
+alias ons_map           "cl_cmd radar" // legacy alias
+alias radar             "cl_cmd radar"
+alias sbar_columns_set  "cl_cmd sbar_columns_set $*"
+alias sbar_columns_help "cl_cmd sbar_columns_help $*"
+
+alias _gl_flashblend_update_00 "gl_flashblend 1"
+alias _gl_flashblend_update_10 "gl_flashblend 0"
+alias _gl_flashblend_update_01 "gl_flashblend 0"
+alias _gl_flashblend_update_11 "gl_flashblend 0"
+alias gl_flashblend_update "_gl_flashblend_update_$r_shadow_realtime_dlight$r_showsurfaces"
+
+set sv_clones 0        "number of clones a player may make (reset by the \"kill\" command)"
+
+set cl_handicap 1      "the higher, the more damage you will receive (client setting)"
+
+exec turrets.cfg
+
+// must be at the bottom of this file:
+// alias for switching the teamselect menu
+alias menu_showteamselect "menu_cmd directmenu TeamSelect"
+alias menu_sync "menu_cmd sync"
+bind f5 menu_showteamselect
+
+set g_bugrigs 0
+set g_bugrigs_planar_movement 1        "BROTRR bug emulation"
+set g_bugrigs_planar_movement_car_jumping 1    "my own bug"
+set g_bugrigs_reverse_speeding 1       "BROTRR bug emulation"
+set g_bugrigs_reverse_spinning 1       "BROTRR bug emulation"
+set g_bugrigs_reverse_stopping 1       "BROTRR bug emulation"
+set g_bugrigs_air_steering 1   "NFS bug emulation"
+set g_bugrigs_angle_smoothing 5        "smooth the car angle a bit, looks nice"
+set g_bugrigs_friction_floor 50        "units/sec friction on floor"
+set g_bugrigs_friction_brake 950       "units/sec friction for braking"
+set g_bugrigs_friction_air 0.00001     "(very small) v <- v - v^2 * g_bugrigs_friction_air"
+set g_bugrigs_accel 800        "acceleration"
+set g_bugrigs_speed_ref 400    "reference speed for accel and steer responsiveness"
+set g_bugrigs_speed_pow 2      "reference power for accel and steer responsiveness"
+set g_bugrigs_steer 1  "steering amount"
+
+set g_touchexplode 0
+set g_touchexplode_radius 50
+set g_touchexplode_damage 10
+set g_touchexplode_edgedamage 0
+set g_touchexplode_force 150
+
+set g_ban_sync_uri ""  "sync using this ban list provider (empty string to disable)"
+set g_ban_sync_interval 5      "sync every 5 minutes"
+set g_ban_sync_trusted_servers ""      "request ban lists from these xonotic servers (do not include your own server there, or unbanning may fail)"
+set g_ban_sync_timeout 45      "time out in seconds for the ban sync requests"
+set g_ban_sync_trusted_servers_verify 0        "when set to 1, additional bans sent by the servers are ignored, and only bans for the requested IP are used"
+
+set g_showweaponspawns 0       "1: display sprites for weapon spawns found on the map when a weapon key is pressed and the weapon is not available"
+
+alias records "cmd records"
+alias rankings "cmd rankings"
+
+// ballistics use physical units, but qu based
+//   Quake-Newton: 1 qN  = 1 qu * 1 g / 1 s^2
+//   Quake-Joule:  1 qJ  = 1 qN * 1 qu
+//   Quake-Pascal: 1 qPa = 1 qN / 1 qu^2
+
+set g_ballistics_materialconstant 1414213562
+set g_ballistics_mindistance 16
+// unit: qJ / qu^3 (energy needed per volume unit of solid to push/burn away
+// parameter: bullet constant: mass / area in g/qu^2
+// = mass / (pi/4 * caliber^2)
+// with caliber in inches, mass in grams:
+// = 1.273239544735163 * mass / caliber^2
+// with caliber in inches, mass in grains:
+// = 0.082633246453312 * mass / caliber^2
+
+// bullet max travel distance inside solid:
+//   0.5 * v^2 * bulletconstant / g_ballistics_materialconstant
+
+// some bullet constants:
+//   http://hypertextbook.com/facts/2000/ShantayArmstrong.shtml
+//     second bullet: caliber .45, mass 16.2g, bullet constant 101.859163578813
+//     third bullet: caliber .338, mass 16.2g, bullet constant 180.5476053421592
+//     fourth bullet: caliber .25, mass 2.3g, bullet constant 46.85521524625399
+//   http://en.wikipedia.org/wiki/.50_BMG
+//     caliber .5, 360 grains, bullet constant 118.9918748927693
+//   AK-47:
+//     caliber .3, 62 grains, bullet constant 56.92512533450383
+//   .3 winchester magnum:
+//     caliber .3, 150 grains, bullet constant 137.7220774221867
+
+set cl_stripcolorcodes 0       "experimental feature (notes: strips ALL color codes from messages!)"
+
+sv_status_show_qcstatus 1      "Xonotic uses this field instead of frags"
+set g_full_getstatus_responses 0       "this currently breaks qstat"
+
+// Demo camera
+set camera_enable              0       "Enables the camera for demo playback"
+set camera_free                0       "Free camera instead of chasing the player"
+set camera_reset               0       "Resets the camera position and switch to chase mode"
+set camera_speed_roll          0.9     "Camera rotation speed"
+set camera_speed_chase                 4       "Camera movement speed on the x/y/z axis while chasing the player"
+set camera_speed_free          8       "Camera movement speed on the x/y/z axis in free mode"
+set camera_speed_attenuation   10      "Camera movements attenuation factor. Bigger is smoother. Applies to mouse movements"
+set camera_mouse_treshold      0.5     "Use to ignore small mouse movements. This allows for smoother camera control"
+set camera_chase_smoothly      0       "Attenuate player movements (only in chase mode)"
+set camera_look_player         0       "Always look to the player. Mouse input is ignored in this mode"
+set camera_look_attenuation    8       "Attenuation of \"looking\" movements, only if camera_look_player is set. Bigger is smoother"
+set camera_forward_follows     1       "0: Move the camera forwards without changing altitude. 1: Move towards what you are looking"
+
+// "Gentle mode": show no blood
+seta sv_gentle 0       "force gentle mode for everyone, also remove references to acts of killing from the messages"
+seta cl_gentle 0       "client side gentle mode (only replaces gibs); when set to 1, white smoke replaces gibs, when set to 2, colorful clouds replace gibs"
+
+seta cl_racetimer_position 0.25 "Y-axis positioning of the race timer (from 0 to 1)"
+seta cl_showpressedkeys        0       "Show which movement keys someone is pressing: 1 for spectating, 2 for always"
+seta cl_showpressedkeys_position "0.5 0.8"     "1 0 would be upper right corner, 0.5 0.5 the center"
+
+seta cl_showspeed 0 "show the XY speed of the player"
+seta cl_showspeed_unit 0 "unit selection (0 = qu/s (no postfix), 1 = qu/s, 2 = m/s, 3 = km/h, 4 = mph, 5 = knots)"
+seta cl_showspeed_z 0 "include the speed on the Z-axis"
+seta cl_showspeed_size 30 "size of the numbers"
+seta cl_showspeed_position 0.7 "Y-axis positioning of the numbers"
+
+seta cl_showacceleration 0 "show the XY acceleration of the player"
+seta cl_showacceleration_z 0 "include the speed on the Z-axis"
+seta cl_showacceleration_size 40 "height of the bar"
+seta cl_showacceleration_scale 5 "X-axis scale of the bar"
+seta cl_showacceleration_alpha 0.5 "alpha of the bar"
+seta cl_showacceleration_color_custom 0 "0 = dynamic color depending on acceleration, 1 = use custom color"
+seta cl_showacceleration_color "1 0 0" "color of the bar, needs cl_showacceleration_color_custom to be 1"
+seta cl_showacceleration_position 0.6 "Y-axis positioning of the bar"
+
+set g_jetpack 0 "Jetpack mutator (uses the hook's button, can't coexist with the offhand hook, but only with the onhand one)"
+
+set g_running_guns 0 "... or wonder, till it drives you mad, what would have followed if you had."
+
+set cl_effects_lightningarc_simple 0
+set cl_effects_lightningarc_segmentlength 64
+set cl_effects_lightningarc_drift_start 0.45
+set cl_effects_lightningarc_drift_end 0.1
+set cl_effects_lightningarc_branchfactor_start 0.25
+set cl_effects_lightningarc_branchfactor_add 0.1
+
+set g_hitplots 0 "when set to 1, hitplots are stored by the server to provide a means of proving that a triggerbot was used"
+seta g_hitplots_individuals "" "the individuals, by IP, that should have their hitplots recorded"
+alias g_hitplots_add "qc_cmd rpn /g_hitplots_individuals g_hitplots_individuals $1 union def"
+alias g_hitplots_remove "qc_cmd rpn /g_hitplots_individuals g_hitplots_individuals $1 difference def"
+
+alias mute "prvm_edictset server $1 muted 1" // I am lazy and not making an actual command of this
+alias unmute "prvm_edictset server $1 muted 0" // dito
+
+rcon_secure 1
+
+set menu_updatecheck 1
+
+set bot_navigation_ignoreplayers 0 // FIXME remove this once the issue is solved
+set bot_sound_monopoly 0 "when enabled, only bots can make any noise"
+
+// broken, sorry (cannot handle weapon attachment properly)
+//seta cl_forceplayermodels 0 "force all players to look like you; WARNING: animations can look very bad with this"
+//seta cl_forceplayermodelsfromxonotic 0 "force models coming from xonotic; WARNING: animations can look very bad with this"
+//set sv_clforceplayermodels 1 "allow clients to use cl_forcemodels"
+
+set sv_loddistance1 1024
+set sv_loddistance2 4096
+seta cl_playerdetailreduction 0        "the higher, the less detailed player models are displayed (LOD)"
+
+set g_mapinfo_settemp_acl "+*" "ACL for mapinfo setting cvars"
+
+// hooks
+alias _cl_hook_gamestart "set _cl_hook_gametype $1; _cl_hook_gamestart_stage2"
+alias _cl_hook_gamestart_stage2 "cl_hook_gamestart_all; cl_hook_gamestart_${_cl_hook_gametype}"
+alias cl_hook_gamestart_all
+alias cl_hook_gamestart_nop  //is only called when CSQC unloads before knowing the gametype, very unlikely
+alias cl_hook_gamestart_dm
+alias cl_hook_gamestart_tdm
+alias cl_hook_gamestart_dom
+alias cl_hook_gamestart_ctf
+alias cl_hook_gamestart_rune
+alias cl_hook_gamestart_lms
+alias cl_hook_gamestart_arena
+alias cl_hook_gamestart_ca
+alias cl_hook_gamestart_kh
+alias cl_hook_gamestart_ons
+alias cl_hook_gamestart_as
+alias cl_hook_gamestart_rc
+alias cl_hook_gamestart_nexball
+alias cl_hook_gamestart_cts
+alias cl_hook_gameend
+
+alias _sv_hook_gamestart "set _sv_hook_gametype $1; _sv_hook_gamestart_stage2"
+alias _sv_hook_gamestart_stage2 "sv_hook_gamestart_all; sv_hook_gamestart_${_sv_hook_gametype}"
+alias sv_hook_gamestart_all
+alias sv_hook_gamestart_dm
+alias sv_hook_gamestart_tdm
+alias sv_hook_gamestart_dom
+alias sv_hook_gamestart_ctf
+alias sv_hook_gamestart_rune
+alias sv_hook_gamestart_lms
+alias sv_hook_gamestart_arena
+alias sv_hook_gamestart_ca
+alias sv_hook_gamestart_kh
+alias sv_hook_gamestart_ons
+alias sv_hook_gamestart_as
+alias sv_hook_gamestart_rc
+alias sv_hook_gamestart_nexball
+alias sv_hook_gamestart_cts
+alias sv_hook_gamerestart
+alias sv_hook_gameend
+
+seta cl_casings_maxcount 100 "maximum amount of shell casings (must be at least 1)"
+seta cl_gibs_maxcount 100 "maximum amount of gibs (must be at least 1)"
+seta cl_vehicle_spiderbot_cross_alpha 0.6
+seta cl_vehicle_spiderbot_cross_size 1
+
+//cl_gunalign calculator
+seta menu_cl_gunalign 3 "Gun alignment; 1 = right, 2 = left, 3 = center or right, 4 = center or left"
+alias _gunalign_01 "cl_gunalign 1"
+alias _gunalign_02 "cl_gunalign 2"
+alias _gunalign_03 "cl_gunalign 3"
+alias _gunalign_04 "cl_gunalign 4"
+alias _gunalign_11 "cl_gunalign 2"
+alias _gunalign_12 "cl_gunalign 1"
+alias _gunalign_13 "cl_gunalign 4"
+alias _gunalign_14 "cl_gunalign 3"
+alias _gunalign_update "_gunalign_$v_flipped$menu_cl_gunalign"
+
+set _menu_alpha "" // will be set by menu QC to the current fading of the menu, can be used by CSQC to fade items
+
+set g_triggerimpulse_accel_power 1 "trigger_impulse accelerator power (applied BEFORE the multiplier)"
+set g_triggerimpulse_accel_multiplier 1 "trigger_impulse accelerator multiplier (applied AFTER the power)"
+set g_triggerimpulse_directional_multiplier 1 "trigger_impulse directional field multiplier"
+set g_triggerimpulse_radial_multiplier 1 "trigger_impulse radial field multiplier"
+
+seta g_ghost_items 1 "enable ghosted items (when between 0 and 1, overrides the alpha value)"
+seta g_ghost_items_color "-1 -1 -1" "color of ghosted items, 0 0 0 leaves the color unchanged"
+
+set sv_weaponstats_damagefile "" "when set to a file name, per-weapon damage stats get written to that file"
+set sv_weaponstats_killfile "" "when set to a file name, per-weapon kill stats get written to that file"
+
+seta cl_noantilag 0 "turn this on if you believe antilag is bad"
+
+set sv_pitch_min -35 "minimum aiming angle for shooting direction display of the gun"
+set sv_pitch_max  35 "maximum aiming angle for shooting direction display of the gun"
+set sv_pitch_fixyaw 1 "workaround to fix the aiming direction on stupidly made player models, FIXME fix the models and set this to 0"
+
+set rescan_pending 0 "set to 1 to schedule a fs_rescan at the end of this match"
+
+seta g_mapinfo_allow_unsupported_modes_and_let_stuff_break "0" "set to 1 to be able to force game types using g_ cvars even if the map does not support them"
+
+// weapon accuracy stats
+set sv_accuracy_data_share 1 "1 send weapon accuracy data statistics to spectating clients, depends on cl_accuracy_data_share"
+set sv_accuracy_data_send 1 "1 send weapon accuracy data statistics and improved score info to all the clients at the end of the match, depends on cl_accuracy_data_receive, 0 send the current 'player has won' to all the clients"
+set cl_accuracy_data_share 0 "1 share my weapon accuracy data statistics with other players, 0 keep my weapon accuracy data statistics hidden"
+set cl_accuracy_data_receive 0 "1 receive weapon accuracy data statistics at the end of the match"
+
+set developer_fteqccbugs 0 "check fteqcc bugs on startup"
+set _allow_unacceptable_compiler_bugs 0 "don't bail out if certain bugs are detected (HANDLE WITH CARE)"
+set spawn_debug 0 "use all spawns one by one, then abort, to verify all spawnpoints"
+set loddebug 0 "force this LOD level"
+set spawn_debugview 0 "display spawnpoints and their rating on spawn to debug spawnpoint rating calculation"
+set g_mutatormsg "" "mutator message"
+set speedmeter 0 "print landing speeds"
+set developer_shtest 0 "experimental speedhack detection"
+set waypoint_benchmark 0 "quit after waypoint loading to benchmark bot navigation code"
+set g_debug_bot_commands 0 "print scripted bot commands before executing"
+
+// debug cvars for keyhunt attaching
+set _angles "0 0 0"
+set _origin "0 0 0"
+
+// campaign internal, set when loading a campaign map1G
+set _campaign_index ""
+set _campaign_name ""
+
+// define some engine cvars that we need even on dedicated server
+set r_showbboxes 0
+
+// we REALLY need the end pos nudging DP bug workaround for trace-to-end-of-solid to work
+collision_endposnudge 1
+
+// animation tuning
+set cl_lerpanim_maxdelta_framegroups 0.05 // must be faster than fastest weapon refire
+set cl_lerpanim_maxdelta_server 0.1 // must be slower than slowest server controlled anim (e.g. animinfo stuff)
+
+// FIXME temporary
+set menu_font_size_snapping_fix 1
+
+// player ID
+seta _cl_userid "" "player ID (e.g. for tournaments)"
+
+// FIXME workaround for engine bug
+sv_gameplayfix_nudgeoutofsolid 0
+// to div0: remove this once 5b7ac1706712977bbc0297d2d53294e73574c7cd (svn r9537) is in the stable branch of the engine again
diff --git a/demos/bench1.dem b/demos/bench1.dem
deleted file mode 100644 (file)
index 888123e..0000000
Binary files a/demos/bench1.dem and /dev/null differ
diff --git a/demos/demo1.dem b/demos/demo1.dem
deleted file mode 100644 (file)
index ad1a1da..0000000
Binary files a/demos/demo1.dem and /dev/null differ
diff --git a/demos/demo2.dem b/demos/demo2.dem
deleted file mode 100644 (file)
index 557eb0f..0000000
Binary files a/demos/demo2.dem and /dev/null differ
diff --git a/demos/demo3.dem b/demos/demo3.dem
deleted file mode 100644 (file)
index c33193c..0000000
Binary files a/demos/demo3.dem and /dev/null differ
diff --git a/demos/demo4.dem b/demos/demo4.dem
deleted file mode 100644 (file)
index 80f5b61..0000000
Binary files a/demos/demo4.dem and /dev/null differ
diff --git a/demos/demo5.dem b/demos/demo5.dem
deleted file mode 100644 (file)
index c1e1f79..0000000
Binary files a/demos/demo5.dem and /dev/null differ
diff --git a/demos/piece-o-cake.dem b/demos/piece-o-cake.dem
deleted file mode 100644 (file)
index 89fc1ad..0000000
Binary files a/demos/piece-o-cake.dem and /dev/null differ
index 2885afb..8ab688d 100644 (file)
@@ -1348,8 +1348,8 @@ airfriction 12
 
 // electro trail
 // glowing vapor trail
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_NEXUIZPLASMA"), from, to)
-effect TR_NEXUIZPLASMA
+// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_XONOTICPLASMA"), from, to)
+effect TR_XONOTICPLASMA
 trailspacing 1
 type static
 color 0x283880 0x283880
@@ -1362,7 +1362,7 @@ lighttime 0
 lightcolor 1.5 3 6
 velocitymultiplier -0.1
 // bright sparks
-effect TR_NEXUIZPLASMA
+effect TR_XONOTICPLASMA
 trailspacing 6
 count 3
 type snow
index 4b8f58f..6d8bd90 100644 (file)
@@ -6,8 +6,8 @@
 // NOTE: currently only works with ALSA on Linux, and then like this:
 //   aconnect -l -i
 // Find your MIDI keyboard in this list. Assuming it is client 20, port 0,
-// run Nexuiz with:
-//   ./nexuiz -sndseqin 20:0 +exec input-tuba.cfg
+// run Xonotic with:
+//   ./xonotic -sndseqin 20:0 +exec input-tuba.cfg
 // Then, grab a Tuba, then play notes on your MIDI keyboard!
 //
 // If you have no keyboard input, you can map the tuba notes to your keyboard:
index 927dd6f..be359db 100644 (file)
@@ -37,7 +37,7 @@ pngsprite()
    inkscape:export-xdpi="90"
    inkscape:export-ydpi="90"
    sodipodi:docname="template.svg"
-   sodipodi:docbase="/home/rpolzer/software/games/nexuiz/data/models/sprites"
+   sodipodi:docbase="/home/rpolzer/software/games/xonotic/data/models/sprites"
    inkscape:output_extension="org.inkscape.output.svg.inkscape"
    sodipodi:modified="true">
   <defs
diff --git a/nexuiz-credits.txt b/nexuiz-credits.txt
deleted file mode 100644 (file)
index c455c48..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-**Team Leaders:
-
-Lee Vermeulen
-*Project Founder and Co-Designer
-
-Forest "LordHavoc" Hale
-*Lead Programmer and Co-Designer
-
-Rudolf "div0" Polzer
-*Programmer
-
-
-**Project maintainers:
-
-Kristian "morfar" Johansson
-
-Maik "SavageX" Merten
-
-
-**Development Team:
-
-Andreas "Black" Kirsch
-*Programmer
-
-Paul "Strahlemann" Evers
-*Level Designer
-
-Peter "Morphed" Pielak
-*Artist
-
-Samual Lenks
-*Programmer
-
-Rasmus "FruitieX" Eskola
-*Artist and Programmer
-
-Saulo "mand1nga" Gil
-*Programmer
-
-Stephan "esteel" Stahl
-*Programmer
-
-Jakob "tZork" Markstrom Grohn
-*Programmer and Artist
-
-Tyler "-z-" Mulligan
-*Web Developer and Interaction Designer
-
-Wolfgang "Blub\0" Bumiller
-*Programmer
-
-Merlijn Hofstra
-*Programmer and server admin
-
-
-
-**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
-
-William Libert
-* Level Designer
-
-MauveBib
-*Bot Programmer
-
-Rick "Rat" Kelley
-*Lead Animator, Skinner
-
-Michael "Tenshihan" Quinn
-*Sound FX and Player-Voices
-
-Gottfried "Toddd" Hofmann
-*Sound FX
-
-Marko "Urre" Permanto
-*Bot Programmer
-
-Dan "Wazat" Hale
-*Programmer
-
-Garth "Zombie" Hendy
-*Level Designer
-
-
-
-**Special Thanks:
-*In alphabetical order
-*(nickname or surname)
-
-Robert "ai" Kuroto
-*Various models
-
-Chris "amethyst7" Matz
-*Level design
-
-blkrbt
-*Music
-
-Gerd "Elysis" Raudenbusch
-*Music
-
-Marius "GreEn`mArine" Shekow
-*Programmer
-
-Braden "meoblast001" Walters
-*Music
-
-Alexander "motorsep" Zubov
-*Weapon animation
-
-Eric "Munyul Verminard" Sambach
-*Level design
-
-Severin "sev" Meyer
-*Artist
-
-Simon O'Callaghan
-*egyptsoc texture set
-
-Michael "Tenshihan" Quinn
-*Sound effects
-
-Amos "torus" Dudley
-*Announcer voices
-
-Mattrew "Tronyn" Rye
-*Level design
-
-Henning "Tymo" Janssen
-*Level design
-
-Kevin "Tyrann" Shanahan
-*Level design
-
-William "Willis" Weilep
-*Master server host
-
-
-**Thanks:
-
-Attila "WW3" Houtkooper
-BigMac
-Brain Younds
-Christian Ice
-Clinton "Kaziganthe" Freeman
-Dan "Digger" Korostelev
-Donkey
-Dustin Geeraert
-Edgenetwork
-Edward "Ed" Holness
-FrikaC
-Jitspoe
-Jody Gallagher
-Juergen "LowDragon" Timm
-Lee David Ash
-Mathieu "Elric" Olivier
-Mephisto
-MirceaKitsune
-MrBougo
-Munyul
-Netzwerg
-NoelCower
-Parapraxis
-Petithomme
-Q1 Retexturing Project
-Qantourisc
-Ronan
-Sajt
-Shaggy
-Shank
-SomeGuy
-Spike
-Spirit
-Steve Vermeulen
-Supajoe
-Tei
-Tomaz
-Ulrich Galbraith
-Vortex
-Zenex
-dstrek
-lcatlnx
-leileilol
-michaelb
-terencehill
diff --git a/nexuiz.modinfo b/nexuiz.modinfo
deleted file mode 100644 (file)
index 2a6d70b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-'progs.dat'
-'Nexuiz'
index 80d1013..30f22a6 100644 (file)
@@ -1,4 +1,4 @@
-// Nexuiz 1.0 physics
+// Xonotic 1.0 physics
 sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 100
index b3278b7..46d6587 100644 (file)
@@ -1,4 +1,4 @@
-// Nexuiz 1.5 physics
+// Xonotic 1.5 physics
 sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 50
index 76513ea..e56e6f1 100644 (file)
@@ -1,4 +1,4 @@
-// experimental post-Nexuiz 1.5 physics (never released)
+// experimental post-Xonotic 1.5 physics (never released)
 sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 50
index eb43d3f..528f623 100644 (file)
@@ -1,4 +1,4 @@
-// experimental post-Nexuiz 1.5 physics (never released)
+// experimental post-Xonotic 1.5 physics (never released)
 sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 25
index 4234d0d..bdf1525 100644 (file)
@@ -1,4 +1,4 @@
-// experimental post-Nexuiz 1.5 physics (never released)
+// experimental post-Xonotic 1.5 physics (never released)
 sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 50
index 7c7c4a0..6aaf747 100644 (file)
@@ -1,4 +1,4 @@
-// Quake, Bunny Reintroduced (Nexuiz 2.0 to 2.4.2 physics)
+// Quake, Bunny Reintroduced (Xonotic 2.0 to 2.4.2 physics)
 sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 220
index 8df1375..b60f74b 100644 (file)
@@ -1,4 +1,4 @@
-// Nexuiz 2.5 physics
+// Xonotic 2.5 physics
 sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 220
index 19005e9..a314678 100644 (file)
@@ -1,4 +1,4 @@
-// Nexuiz 2.6 physics
+// Xonotic 2.6 physics
 sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 220
index 7b83e68..78d4240 100644 (file)
@@ -1,4 +1,4 @@
-// Nexuiz Havoc physics (work in progress)
+// Xonotic Havoc physics (work in progress)
 sv_gravity 800
 sv_maxspeed 400
 sv_maxairspeed 220
index 3340c86..363a425 100644 (file)
@@ -1,4 +1,4 @@
-// Nexuiz 2.0-2.4.2 physics minus QW-bunnyhopping-bug, faster onground accel, CPMA air control
+// Xonotic 2.0-2.4.2 physics minus QW-bunnyhopping-bug, faster onground accel, CPMA air control
 sv_gravity 800
 sv_maxspeed 320
 sv_maxairspeed 320
index 904f2d7..51cf682 100644 (file)
@@ -5,7 +5,7 @@ sv_maxairspeed 30
 sv_stopspeed 100
 sv_accelerate 10
 sv_airaccelerate 106.66666666666666666666
-// it is 10 in Quake 1, but the Nexuiz player physics code does not 100% match an oddity of Quake 1, but matches Quake 2 and 3 more
+// it is 10 in Quake 1, but the Xonotic player physics code does not 100% match an oddity of Quake 1, but matches Quake 2 and 3 more
 sv_friction 4
 edgefriction 1
 sv_stepheight 18
index 27d77f3..76c0ba1 100644 (file)
@@ -5,7 +5,7 @@ sv_maxairspeed 30
 sv_stopspeed 100
 sv_accelerate 10
 sv_airaccelerate 106.66666666666666666666
-// it is 10 in Quake 2, but the Nexuiz player physics code does not 100% match an oddity of Quake 1, but matches Quake 2 and 3 more
+// it is 10 in Quake 2, but the Xonotic player physics code does not 100% match an oddity of Quake 1, but matches Quake 2 and 3 more
 sv_friction 6
 edgefriction 1
 sv_stepheight 18
index 2730a32..97debdf 100644 (file)
@@ -249,14 +249,14 @@ void Ent_Projectile()
                self.traileffect = 0;
                switch(self.cnt)
                {
-                       case PROJECTILE_ELECTRO: setmodel(self, "models/ebomb.mdl");self.traileffect = particleeffectnum("TR_NEXUIZPLASMA"); break;
+                       case PROJECTILE_ELECTRO: setmodel(self, "models/ebomb.mdl");self.traileffect = particleeffectnum("TR_XONOTICPLASMA"); break;
                        case PROJECTILE_ROCKET: setmodel(self, "models/rocket.md3");self.traileffect = particleeffectnum("TR_ROCKET"); self.scale = 2; break;
                        case PROJECTILE_BULLET: setmodel(self, "models/tracer.mdl");self.traileffect = particleeffectnum("tr_bullet"); break;
                        case PROJECTILE_BULLET_GLOWING: setmodel(self, "models/tracer.mdl");self.traileffect = particleeffectnum("tr_bullet"); break;
                        case PROJECTILE_BULLET_GLOWING_TRACER: setmodel(self, "models/tracer.mdl");self.traileffect = particleeffectnum("tr_rifle"); break;
                        case PROJECTILE_CRYLINK: setmodel(self, "models/plasmatrail.mdl");self.traileffect = particleeffectnum("TR_CRYLINKPLASMA"); break;
                        case PROJECTILE_CRYLINK_BOUNCING: setmodel(self, "models/plasmatrail.mdl");self.traileffect = particleeffectnum("TR_CRYLINKPLASMA"); break;
-                       case PROJECTILE_ELECTRO_BEAM: setmodel(self, "models/elaser.mdl");self.traileffect = particleeffectnum("TR_NEXUIZPLASMA"); break;
+                       case PROJECTILE_ELECTRO_BEAM: setmodel(self, "models/elaser.mdl");self.traileffect = particleeffectnum("TR_XONOTICPLASMA"); break;
                        case PROJECTILE_GRENADE: setmodel(self, "models/grenademodel.md3");self.traileffect = particleeffectnum("TR_GRENADE"); break;
                        case PROJECTILE_GRENADE_BOUNCING: setmodel(self, "models/grenademodel.md3");self.traileffect = particleeffectnum("TR_GRENADE"); break;
                        case PROJECTILE_LASER: setmodel(self, "models/laser.mdl");self.traileffect = particleeffectnum(""); break;
index 001bf1f..1ac07ce 100644 (file)
@@ -212,7 +212,7 @@ void teamradar_loadcvars()
                cl_teamradar_zoommode = cvar("cl_teamradar_zoommode");
 
                // others default to 0
-               // match this to defaultNexuiz.cfg!
+               // match this to defaultXonotic.cfg!
                if(!cl_teamradar_scale) cl_teamradar_scale = 4096;
                if(!cl_teamradar_background_alpha) cl_teamradar_background_alpha = 0.4 * sbar_alpha_fg;
                if(!cl_teamradar_foreground_alpha) cl_teamradar_foreground_alpha = 0.8 * sbar_alpha_fg;
index f954ed9..cdd3a31 100644 (file)
@@ -352,7 +352,7 @@ const float STAT_VEHICLESTAT_RELOAD2 = 66;
 #define SP_SCORE 3
 // game mode specific indices are not in common/, but in server/scores_rules.qc!
 
-// this assignment must match menu/nexuiz/dialog_settings_misc.c!
+// this assignment must match menu/xonotic/dialog_settings_misc.c!
 float  CHAN_AUTO                               = 0;
        // on world: announcers, ...                     INFO
        // on players: item pickup                       ITEMS
index 0a8de3e..72d23f4 100644 (file)
 #include "item/listbox.c"
 #include "item/inputbox.c"
 #include "item/gecko.c"
-#include "nexuiz/dialog.c"
-#include "nexuiz/tab.c"
-#include "nexuiz/mainwindow.c"
-#include "nexuiz/button.c"
-#include "nexuiz/bigbutton.c"
-#include "nexuiz/commandbutton.c"
-#include "nexuiz/bigcommandbutton.c"
-#include "nexuiz/modbutton.c"
-#include "nexuiz/dialog_teamselect.c"
-#include "nexuiz/dialog_settings.c"
-#include "nexuiz/dialog_settings_video.c"
-#include "nexuiz/dialog_settings_effects.c"
-#include "nexuiz/dialog_settings_audio.c"
-#include "nexuiz/dialog_settings_network.c"
-#include "nexuiz/dialog_settings_misc.c"
-#include "nexuiz/dialog_multiplayer.c"
-#include "nexuiz/dialog_multiplayer_playersetup.c"
-#include "nexuiz/tabcontroller.c"
-#include "nexuiz/textlabel.c"
-#include "nexuiz/slider.c"
-#include "nexuiz/slider_resolution.c"
-#include "nexuiz/checkbox.c"
-#include "nexuiz/radiobutton.c"
-#include "nexuiz/nexposee.c"
-#include "nexuiz/rootdialog.c"
-#include "nexuiz/textslider.c"
-#include "nexuiz/colorbutton.c"
-#include "nexuiz/dialog_multiplayer_join.c"
-#include "nexuiz/dialog_multiplayer_join_serverinfo.c"
-#include "nexuiz/playerlist.c"
-#include "nexuiz/listbox.c"
-#include "nexuiz/serverlist.c"
-#include "nexuiz/inputbox.c"
-#include "nexuiz/dialog_quit.c"
-#include "nexuiz/dialog_multiplayer_create.c"
-#include "nexuiz/dialog_multiplayer_create_mutators.c"
-#include "nexuiz/dialog_multiplayer_create_advanced.c"
-#include "nexuiz/dialog_multiplayer_create_mapinfo.c"
-#include "nexuiz/gametypebutton.c"
-#include "nexuiz/maplist.c"
-#include "nexuiz/skinlist.c"
-#include "nexuiz/image.c"
-#include "nexuiz/crosshairbutton.c"
-#include "nexuiz/playermodel.c"
-#include "nexuiz/dialog_news.c"
-#include "nexuiz/checkbox_slider_invalid.c"
-#include "nexuiz/charmap.c"
-#include "nexuiz/keybinder.c"
-#include "nexuiz/dialog_settings_input.c"
-#include "nexuiz/dialog_settings_input_userbind.c"
-#include "nexuiz/slider_decibels.c"
-#include "nexuiz/dialog_singleplayer.c"
-#include "nexuiz/campaign.c"
-#include "nexuiz/dialog_singleplayer_winner.c"
-#include "nexuiz/dialog_credits.c"
-#include "nexuiz/credits.c"
-#include "nexuiz/dialog_multiplayer_playersetup_weapons.c"
-#include "nexuiz/weaponslist.c"
-#include "nexuiz/dialog_multiplayer_playersetup_radar.c"
-#include "nexuiz/dialog_multiplayer_demo.c"
-#include "nexuiz/demolist.c"
-#include "nexuiz/colorpicker.c"
-#include "nexuiz/cvarlist.c"
-#include "nexuiz/dialog_settings_misc_cvars.c"
+#include "xonotic/dialog.c"
+#include "xonotic/tab.c"
+#include "xonotic/mainwindow.c"
+#include "xonotic/button.c"
+#include "xonotic/bigbutton.c"
+#include "xonotic/commandbutton.c"
+#include "xonotic/bigcommandbutton.c"
+#include "xonotic/modbutton.c"
+#include "xonotic/dialog_teamselect.c"
+#include "xonotic/dialog_settings.c"
+#include "xonotic/dialog_settings_video.c"
+#include "xonotic/dialog_settings_effects.c"
+#include "xonotic/dialog_settings_audio.c"
+#include "xonotic/dialog_settings_network.c"
+#include "xonotic/dialog_settings_misc.c"
+#include "xonotic/dialog_multiplayer.c"
+#include "xonotic/dialog_multiplayer_playersetup.c"
+#include "xonotic/tabcontroller.c"
+#include "xonotic/textlabel.c"
+#include "xonotic/slider.c"
+#include "xonotic/slider_resolution.c"
+#include "xonotic/checkbox.c"
+#include "xonotic/radiobutton.c"
+#include "xonotic/nexposee.c"
+#include "xonotic/rootdialog.c"
+#include "xonotic/textslider.c"
+#include "xonotic/colorbutton.c"
+#include "xonotic/dialog_multiplayer_join.c"
+#include "xonotic/dialog_multiplayer_join_serverinfo.c"
+#include "xonotic/playerlist.c"
+#include "xonotic/listbox.c"
+#include "xonotic/serverlist.c"
+#include "xonotic/inputbox.c"
+#include "xonotic/dialog_quit.c"
+#include "xonotic/dialog_multiplayer_create.c"
+#include "xonotic/dialog_multiplayer_create_mutators.c"
+#include "xonotic/dialog_multiplayer_create_advanced.c"
+#include "xonotic/dialog_multiplayer_create_mapinfo.c"
+#include "xonotic/gametypebutton.c"
+#include "xonotic/maplist.c"
+#include "xonotic/skinlist.c"
+#include "xonotic/image.c"
+#include "xonotic/crosshairbutton.c"
+#include "xonotic/playermodel.c"
+#include "xonotic/dialog_news.c"
+#include "xonotic/checkbox_slider_invalid.c"
+#include "xonotic/charmap.c"
+#include "xonotic/keybinder.c"
+#include "xonotic/dialog_settings_input.c"
+#include "xonotic/dialog_settings_input_userbind.c"
+#include "xonotic/slider_decibels.c"
+#include "xonotic/dialog_singleplayer.c"
+#include "xonotic/campaign.c"
+#include "xonotic/dialog_singleplayer_winner.c"
+#include "xonotic/dialog_credits.c"
+#include "xonotic/credits.c"
+#include "xonotic/dialog_multiplayer_playersetup_weapons.c"
+#include "xonotic/weaponslist.c"
+#include "xonotic/dialog_multiplayer_playersetup_radar.c"
+#include "xonotic/dialog_multiplayer_demo.c"
+#include "xonotic/demolist.c"
+#include "xonotic/colorpicker.c"
+#include "xonotic/cvarlist.c"
+#include "xonotic/dialog_settings_misc_cvars.c"
diff --git a/qcsrc/menu/nexuiz/bigbutton.c b/qcsrc/menu/nexuiz/bigbutton.c
deleted file mode 100644 (file)
index 76755da..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizBigButton) EXTENDS(NexuizButton)
-       METHOD(NexuizBigButton, configureNexuizBigButton, void(entity, string, vector))
-       ATTRIB(NexuizBigButton, image, string, SKINGFX_BUTTON_BIG)
-       ATTRIB(NexuizBigButton, grayImage, string, SKINGFX_BUTTON_BIG_GRAY)
-ENDCLASS(NexuizButton)
-entity makeNexuizButton(string theText, vector theColor);
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeNexuizBigButton(string theText, vector theColor)
-{
-       entity me;
-       me = spawnNexuizBigButton();
-       me.configureNexuizBigButton(me, theText, theColor);
-       return me;
-}
-
-void configureNexuizBigButtonNexuizBigButton(entity me, string theText, vector theColor)
-{
-       me.configureNexuizButton(me, theText, theColor);
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/bigcommandbutton.c b/qcsrc/menu/nexuiz/bigcommandbutton.c
deleted file mode 100644 (file)
index 90dedff..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizBigCommandButton) EXTENDS(NexuizCommandButton)
-       METHOD(NexuizBigCommandButton, configureNexuizBigCommandButton, void(entity, string, vector, string, float))
-       ATTRIB(NexuizBigCommandButton, image, string, SKINGFX_BUTTON_BIG)
-       ATTRIB(NexuizBigCommandButton, grayImage, string, SKINGFX_BUTTON_BIG_GRAY)
-ENDCLASS(NexuizCommandButton)
-entity makeNexuizBigCommandButton(string theText, vector theColor, string theCommand, float closesMenu);
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeNexuizBigCommandButton(string theText, vector theColor, string theCommand, float theFlags)
-{
-       entity me;
-       me = spawnNexuizBigCommandButton();
-       me.configureNexuizBigCommandButton(me, theText, theColor, theCommand, theFlags);
-       return me;
-}
-
-void configureNexuizBigCommandButtonNexuizBigCommandButton(entity me, string theText, vector theColor, string theCommand, float theFlags)
-{
-       me.configureNexuizCommandButton(me, theText, theColor, theCommand, theFlags);
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/button.c b/qcsrc/menu/nexuiz/button.c
deleted file mode 100644 (file)
index 1078b0e..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizButton) EXTENDS(Button)
-       METHOD(NexuizButton, configureNexuizButton, void(entity, string, vector))
-       ATTRIB(NexuizButton, fontSize, float, SKINFONTSIZE_NORMAL)
-       ATTRIB(NexuizButton, image, string, SKINGFX_BUTTON)
-       ATTRIB(NexuizButton, grayImage, string, SKINGFX_BUTTON_GRAY)
-       ATTRIB(NexuizButton, color, vector, SKINCOLOR_BUTTON_N)
-       ATTRIB(NexuizButton, colorC, vector, SKINCOLOR_BUTTON_C)
-       ATTRIB(NexuizButton, colorF, vector, SKINCOLOR_BUTTON_F)
-       ATTRIB(NexuizButton, colorD, vector, SKINCOLOR_BUTTON_D)
-       ATTRIB(NexuizButton, alpha, float, SKINALPHA_TEXT)
-       ATTRIB(NexuizButton, disabledAlpha, float, SKINALPHA_DISABLED)
-ENDCLASS(NexuizButton)
-entity makeNexuizButton(string theText, vector theColor);
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeNexuizButton(string theText, vector theColor)
-{
-       entity me;
-       me = spawnNexuizButton();
-       me.configureNexuizButton(me, theText, theColor);
-       return me;
-}
-
-void configureNexuizButtonNexuizButton(entity me, string theText, vector theColor)
-{
-       if(theColor == '0 0 0')
-       {
-               me.configureButton(me, theText, me.fontSize, me.image);
-       }
-       else
-       {
-               me.configureButton(me, theText, me.fontSize, me.grayImage);
-               me.color = theColor;
-               me.colorC = theColor;
-               me.colorF = theColor;
-       }
-       me.tooltip = getZonedTooltipForIdentifier(strcat(currentDialog.classname, "/", me.text));
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/campaign.c b/qcsrc/menu/nexuiz/campaign.c
deleted file mode 100644 (file)
index 3dba3e0..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizCampaignList) EXTENDS(NexuizListBox)
-       METHOD(NexuizCampaignList, configureNexuizCampaignList, void(entity))
-       ATTRIB(NexuizCampaignList, rowsPerItem, float, 10)
-       METHOD(NexuizCampaignList, draw, void(entity))
-       METHOD(NexuizCampaignList, drawListBoxItem, void(entity, float, vector, float))
-       METHOD(NexuizCampaignList, clickListBoxItem, void(entity, float, vector))
-       METHOD(NexuizCampaignList, resizeNotify, void(entity, vector, vector, vector, vector))
-       METHOD(NexuizCampaignList, setSelected, void(entity, float))
-       METHOD(NexuizCampaignList, keyDown, float(entity, float, float, float))
-       METHOD(NexuizCampaignList, campaignGo, void(entity, float))
-       METHOD(NexuizCampaignList, destroy, void(entity))
-
-       ATTRIB(NexuizCampaignList, campaignGlob, float, 0)
-       ATTRIB(NexuizCampaignList, realFontSize, vector, '0 0 0')
-       ATTRIB(NexuizCampaignList, columnPreviewOrigin, float, 0)
-       ATTRIB(NexuizCampaignList, columnPreviewSize, float, 0)
-       ATTRIB(NexuizCampaignList, columnNameOrigin, float, 0)
-       ATTRIB(NexuizCampaignList, columnNameSize, float, 0)
-       ATTRIB(NexuizCampaignList, columnCheckMarkOrigin, float, 0)
-       ATTRIB(NexuizCampaignList, columnCheckMarkSize, float, 0)
-       ATTRIB(NexuizCampaignList, checkMarkOrigin, vector, '0 0 0')
-       ATTRIB(NexuizCampaignList, checkMarkSize, vector, '0 0 0')
-       ATTRIB(NexuizCampaignList, realUpperMargin1, float, 0)
-       ATTRIB(NexuizCampaignList, realUpperMargin2, float, 0)
-
-       ATTRIB(NexuizCampaignList, lastClickedMap, float, -1)
-       ATTRIB(NexuizCampaignList, lastClickedTime, float, 0)
-
-       ATTRIB(NexuizCampaignList, origin, vector, '0 0 0')
-       ATTRIB(NexuizCampaignList, itemAbsSize, vector, '0 0 0')
-       ATTRIB(NexuizCampaignList, emptyLineHeight, float, 0.5)
-
-       ATTRIB(NexuizCampaignList, campaignIndex, float, 0)
-       ATTRIB(NexuizCampaignList, cvarName, string, string_null)
-       METHOD(NexuizCampaignList, loadCvars, void(entity))
-       METHOD(NexuizCampaignList, saveCvars, void(entity))
-
-       ATTRIB(NexuizCampaignList, buttonNext, entity, NULL)
-       ATTRIB(NexuizCampaignList, buttonPrev, entity, NULL)
-       ATTRIB(NexuizCampaignList, labelTitle, entity, NULL)
-ENDCLASS(NexuizCampaignList)
-entity makeNexuizCampaignList();
-void CampaignList_LoadMap(entity btn, entity me);
-void MultiCampaign_Next(entity btn, entity me);
-void MultiCampaign_Prev(entity btn, entity me);
-#endif
-
-#ifdef IMPLEMENTATION
-string campaign_longdesc_wrapped[CAMPAIGN_MAX_ENTRIES];
-
-void rewrapCampaign(float w, float l0, float emptyheight, vector theFontSize)
-{
-       float i, j;
-       float n, l;
-       string r, s;
-       for(i = 0; i < campaign_entries; ++i)
-       {
-               l = l0;
-               if(campaign_longdesc_wrapped[i])
-                       strunzone(campaign_longdesc_wrapped[i]);
-               n = tokenizebyseparator(campaign_longdesc[i], "\n");
-               r = "";
-               for(j = 0; j < n; ++j)
-               {
-                       s = argv(j);
-                       if(s == "")
-                       {
-                               l -= emptyheight;
-                               r = strcat(r, "\n");
-                               continue;
-                       }
-
-                       getWrappedLine_remaining = s;
-                       while(getWrappedLine_remaining)
-                       {
-                               s = getWrappedLine(w, theFontSize, draw_TextWidth_WithoutColors);
-                               if(--l < 0) goto toolong;
-                               r = strcat(r, s, "\n");
-                       }
-               }
-               goto nottoolong;
-:toolong
-               while(substring(r, strlen(r) - 1, 1) == "\n")
-                       r = substring(r, 0, strlen(r) - 1);
-               r = strcat(r, "...\n");
-:nottoolong
-               campaign_longdesc_wrapped[i] = strzone(substring(r, 0, strlen(r) - 1));
-       }
-}
-
-entity makeNexuizCampaignList()
-{
-       entity me;
-       me = spawnNexuizCampaignList();
-       me.configureNexuizCampaignList(me);
-       return me;
-}
-void configureNexuizCampaignListNexuizCampaignList(entity me)
-{
-       me.configureNexuizListBox(me);
-       me.campaignGlob = search_begin("maps/campaign*.txt", TRUE, TRUE);
-       me.loadCvars(me);
-       me.campaignGo(me, 0); // takes care of enabling/disabling buttons too
-}
-
-void destroyNexuizCampaignList(entity me)
-{
-       if(me.campaignGlob >= 0)
-               search_end(me.campaignGlob);
-}
-
-void loadCvarsNexuizCampaignList(entity me)
-{
-       // read campaign cvars
-       if(campaign_name)
-               strunzone(campaign_name);
-       if(me.cvarName)
-               strunzone(me.cvarName);
-       campaign_name = strzone(cvar_string("g_campaign_name"));
-       me.cvarName = strzone(strcat("g_campaign", campaign_name, "_index"));
-       registercvar(me.cvarName, "", 0); // saved by server QC anyway
-       CampaignFile_Unload();
-       CampaignFile_Load(0, CAMPAIGN_MAX_ENTRIES);
-       me.campaignIndex = bound(0, cvar(me.cvarName), campaign_entries);
-       cvar_set(me.cvarName, ftos(me.campaignIndex));
-       if(me.columnNameSize)
-               rewrapCampaign(me.columnNameSize, me.rowsPerItem - 3, me.emptyLineHeight, me.realFontSize);
-       me.nItems = min(me.campaignIndex + 2, campaign_entries);
-       me.selectedItem = min(me.campaignIndex, me.nItems - 1);
-       me.scrollPos = me.nItems * me.itemHeight - 1;
-       if(me.labelTitle)
-               me.labelTitle.setText(me.labelTitle, campaign_title);
-}
-
-void saveCvarsNexuizCampaignList(entity me)
-{
-       // write campaign cvars
-       // no reason to do this!
-       // cvar_set("g_campaign_name", campaign_name);
-       // cvar_set(me.cvarName, ftos(me.campaignIndex)); // NOTE: only server QC does that!
-}
-
-void campaignGoNexuizCampaignList(entity me, float step)
-{
-       float canNext, canPrev;
-       string s;
-       float i, j, n;
-
-       canNext = canPrev = 0;
-
-       if(me.campaignGlob >= 0)
-       {
-               n = search_getsize(me.campaignGlob);
-               if(n > 0)
-               {
-                       j = -1;
-                       s = strcat("maps/campaign", campaign_name, ".txt");
-                       for(i = 0; i < n; ++i)
-                       {
-                               if(search_getfilename(me.campaignGlob, i) == s)
-                                       j = i;
-                       }
-                       if(j < 0)
-                       {
-                               s = strcat("maps/campaign", cvar_defstring("g_campaign_name"), ".txt");
-                               for(i = 0; i < n; ++i)
-                               {
-                                       if(search_getfilename(me.campaignGlob, i) == s)
-                                               j = i;
-                               }
-                       }
-                       if(j < 0)
-                       {
-                               if(step >= 0)
-                                       j = 0;
-                               else
-                                       j = n - 1;
-                       }
-                       else
-                               j = mod(j + step, n);
-                       s = search_getfilename(me.campaignGlob, j);
-                       s = substring(s, 13, strlen(s) - 17);
-                       cvar_set("g_campaign_name", s);
-                       me.loadCvars(me);
-                       canNext = (j != n - 1);
-                       canPrev = (j != 0);
-               }
-       }
-
-       if(me.buttonNext)
-               me.buttonNext.disabled = !canNext;
-       if(me.buttonPrev)
-               me.buttonPrev.disabled = !canPrev;
-}
-
-void MultiCampaign_Next(entity btn, entity me)
-{
-       me.campaignGo(me, +1);
-}
-void MultiCampaign_Prev(entity btn, entity me)
-{
-       me.campaignGo(me, -1);
-}
-
-void drawNexuizCampaignList(entity me)
-{
-       if(cvar(me.cvarName) != me.campaignIndex || cvar_string("g_campaign_name") != campaign_name)
-               me.loadCvars(me);
-       drawListBox(me);
-}
-
-void resizeNotifyNexuizCampaignList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
-{
-       me.itemAbsSize = '0 0 0';
-       resizeNotifyNexuizListBox(me, relOrigin, relSize, absOrigin, absSize);
-
-       me.realFontSize_y = me.fontSize / (me.itemAbsSize_y = (absSize_y * me.itemHeight));
-       me.realFontSize_x = me.fontSize / (me.itemAbsSize_x = (absSize_x * (1 - me.controlWidth)));
-       me.realUpperMargin1 = 0.5 * me.realFontSize_y;
-       me.realUpperMargin2 = me.realUpperMargin1 + 2 * me.realFontSize_y;
-
-       me.checkMarkSize = (eX * (me.itemAbsSize_y / me.itemAbsSize_x) + eY) * 0.5;
-
-       me.columnPreviewOrigin = 0;
-       me.columnPreviewSize = me.itemAbsSize_y / me.itemAbsSize_x * 4 / 3;
-       me.columnCheckMarkSize = me.checkMarkSize_x;
-       me.columnNameSize = 1 - me.columnPreviewSize - me.columnCheckMarkSize - 4 * me.realFontSize_x;
-       me.columnNameOrigin = me.columnPreviewOrigin + me.columnPreviewSize + me.realFontSize_x;
-       me.columnCheckMarkOrigin = me.columnNameOrigin + me.columnNameSize + me.realFontSize_x * 2;
-
-       me.checkMarkOrigin = eY + eX * (me.columnCheckMarkOrigin + me.columnCheckMarkSize) - me.checkMarkSize;
-
-       rewrapCampaign(me.columnNameSize, me.rowsPerItem - 3, me.emptyLineHeight, me.realFontSize);
-}
-void clickListBoxItemNexuizCampaignList(entity me, float i, vector where)
-{
-       if(i == me.lastClickedMap)
-               if(time < me.lastClickedTime + 0.3)
-               {
-                       // DOUBLE CLICK!
-                       // start game
-                       CampaignList_LoadMap(me, me);
-                       return;
-               }
-       me.lastClickedMap = i;
-       me.lastClickedTime = time;
-}
-void drawListBoxItemNexuizCampaignList(entity me, float i, vector absSize, float isSelected)
-{
-       string s;
-       float p;
-       vector theColor;
-       float theAlpha;
-       float j, n;
-       vector o;
-
-       if(i < me.campaignIndex)
-       {
-               theAlpha = SKINALPHA_CAMPAIGN_SELECTABLE;
-               theColor = SKINCOLOR_CAMPAIGN_SELECTABLE;
-       }
-       else if(i == me.campaignIndex)
-       {
-               theAlpha = SKINALPHA_CAMPAIGN_CURRENT;
-               theColor = SKINCOLOR_CAMPAIGN_CURRENT;
-       }
-       else
-       {
-               theAlpha = SKINALPHA_CAMPAIGN_FUTURE;
-               theColor = SKINCOLOR_CAMPAIGN_FUTURE;
-       }
-
-       if(isSelected)
-               draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
-
-       s = ftos(p);
-       draw_Picture(me.columnPreviewOrigin * eX, strcat("/maps/", campaign_mapname[i]), me.columnPreviewSize * eX + eY, '1 1 1', theAlpha);
-       if(i < me.campaignIndex)
-               draw_Picture(me.checkMarkOrigin, "checkmark", me.checkMarkSize, '1 1 1', 1);
-       if(i <= me.campaignIndex)
-               s = campaign_shortdesc[i]; // fteqcc sucks
-       else
-               s = "???";
-       s = draw_TextShortenToWidth(strcat("Level ", ftos(i + 1), ": ", s), me.columnNameSize, 0, me.realFontSize);
-       draw_Text(me.realUpperMargin1 * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, theColor, theAlpha, 0);
-
-       if(i <= me.campaignIndex)
-       {
-               s = campaign_longdesc_wrapped[i];
-               n = tokenizebyseparator(s, "\n");
-               o = me.realUpperMargin2 * eY + me.columnNameOrigin * eX;
-               for(j = 0; j < n; ++j)
-                       if(argv(j) != "")
-                       {
-                               draw_Text(o, argv(j), me.realFontSize, theColor, theAlpha * SKINALPHA_CAMPAIGN_DESCRIPTION, 0);
-                               o_y += me.realFontSize_y;
-                       }
-                       else
-                               o_y += me.realFontSize_y * me.emptyLineHeight;
-       }
-}
-void CampaignList_LoadMap(entity btn, entity me)
-{
-       if(me.selectedItem >= me.nItems || me.selectedItem < 0)
-               return;
-       CampaignSetup(me.selectedItem);
-}
-
-void setSelectedNexuizCampaignList(entity me, float i)
-{
-       // prevent too late items from being played
-       setSelectedListBox(me, min(i, me.campaignIndex));
-}
-
-float keyDownNexuizCampaignList(entity me, float scan, float ascii, float shift)
-{
-       if(scan == K_ENTER || scan == K_SPACE)
-               CampaignList_LoadMap(me, me);
-       else
-               return keyDownListBox(me, scan, ascii, shift);
-       return 1;
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/charmap.c b/qcsrc/menu/nexuiz/charmap.c
deleted file mode 100644 (file)
index d72c460..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizCharmap) EXTENDS(Image)
-       METHOD(NexuizCharmap, configureNexuizCharmap, void(entity, entity))
-       METHOD(NexuizCharmap, mousePress, float(entity, vector))
-       METHOD(NexuizCharmap, mouseRelease, float(entity, vector))
-       METHOD(NexuizCharmap, mouseMove, float(entity, vector))
-       METHOD(NexuizCharmap, mouseDrag, float(entity, vector))
-       METHOD(NexuizCharmap, keyDown, float(entity, float, float, float))
-       METHOD(NexuizCharmap, focusLeave, void(entity))
-       METHOD(NexuizCharmap, draw, void(entity))
-       ATTRIB(NexuizCharmap, controlledTextbox, entity, NULL)
-       ATTRIB(NexuizCharmap, image, string, SKINGFX_CHARMAP)
-       ATTRIB(NexuizCharmap, image2, string, SKINGFX_CHARMAP_SELECTED)
-       ATTRIB(NexuizCharmap, focusable, float, 1)
-       ATTRIB(NexuizCharmap, previouslySelectedCharacterCell, float, -1)
-       ATTRIB(NexuizCharmap, selectedCharacterCell, float, 0)
-       ATTRIB(NexuizCharmap, mouseSelectedCharacterCell, float, -1)
-ENDCLASS(NexuizCharmap)
-entity makeNexuizCharmap(entity theTextbox);
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeNexuizCharmap(entity theTextbox)
-{
-       entity me;
-       me = spawnNexuizCharmap();
-       me.configureNexuizCharmap(me, theTextbox);
-       return me;
-}
-
-string CharMap_CellToChar(float c)
-{
-       if (cvar("utf8_enable")) {
-               if(c == 13)
-                       return chr(0xE000 + 127);
-               else if(c < 32)
-                       return chr(0xE000 + c);
-               else
-                       return chr(0xE000 + c + 96);
-       } else {
-               if(c == 13)
-                       return chr(127);
-               else if(c < 32)
-                       return chr(c);
-               else
-                       return chr(c + 96);
-       }
-}
-
-void configureNexuizCharmapNexuizCharmap(entity me, entity theTextbox)
-{
-       me.controlledTextbox = theTextbox;
-       me.configureImage(me, me.image);
-}
-
-float mouseMoveNexuizCharmap(entity me, vector coords)
-{
-       float x, y, c;
-       x = floor(coords_x * 16);
-       y = floor(coords_y * 10);
-       if(x < 0 || y < 0 || x >= 16 || y >= 10)
-       {
-               me.mouseSelectedCharacterCell = -1;
-               return 0;
-       }
-       c = y * 16 + x;
-       if(c != me.mouseSelectedCharacterCell)
-               me.mouseSelectedCharacterCell = me.selectedCharacterCell = c;
-       return 1;
-}
-float mouseDragNexuizCharmap(entity me, vector coords)
-{
-       return me.mouseMove(me, coords);
-}
-float mousePressNexuizCharmap(entity me, vector coords)
-{
-       me.mouseMove(me, coords);
-       if(me.mouseSelectedCharacterCell >= 0)
-       {
-               me.pressed = 1;
-               me.previouslySelectedCharacterCell = me.selectedCharacterCell;
-       }
-       return 1;
-}
-float mouseReleaseNexuizCharmap(entity me, vector coords)
-{
-       if(!me.pressed)
-               return 0;
-       me.mouseMove(me, coords);
-       if(me.selectedCharacterCell == me.previouslySelectedCharacterCell)
-               me.controlledTextbox.enterText(me.controlledTextbox, CharMap_CellToChar(me.selectedCharacterCell));
-       me.pressed = 0;
-       return 1;
-}
-float keyDownNexuizCharmap(entity me, float key, float ascii, float shift)
-{
-       switch(key)
-       {
-               case K_LEFTARROW:
-                       me.selectedCharacterCell = mod(me.selectedCharacterCell + 159, 160);
-                       return 1;
-               case K_RIGHTARROW:
-                       me.selectedCharacterCell = mod(me.selectedCharacterCell + 1, 160);
-                       return 1;
-               case K_UPARROW:
-                       me.selectedCharacterCell = mod(me.selectedCharacterCell + 144, 160);
-                       return 1;
-               case K_DOWNARROW:
-                       me.selectedCharacterCell = mod(me.selectedCharacterCell + 16, 160);
-                       return 1;
-               case K_HOME:
-                       me.selectedCharacterCell = 0;
-                       return 1;
-               case K_END:
-                       me.selectedCharacterCell = 159;
-                       return 1;
-               case K_SPACE:
-               case K_ENTER:
-               case K_INS:
-                       me.controlledTextbox.enterText(me.controlledTextbox, CharMap_CellToChar(me.selectedCharacterCell));
-                       return 1;
-               default:
-                       return me.controlledTextbox.keyDown(me.controlledTextbox, key, ascii, shift);
-       }
-}
-void focusLeaveNexuizCharmap(entity me)
-{
-       me.controlledTextbox.saveCvars(me.controlledTextbox);
-}
-void drawNexuizCharmap(entity me)
-{
-       if(me.focused)
-       {
-               if(!me.pressed || (me.selectedCharacterCell == me.previouslySelectedCharacterCell))
-               {
-                       vector c;
-                       c = eX * (mod(me.selectedCharacterCell, 16) / 16.0);
-                       c += eY * (floor(me.selectedCharacterCell / 16.0) / 10.0);
-                       draw_Picture(c, me.image2, '0.0625 0.1 0', '1 1 1', 1);
-               }
-       }
-       drawImage(me);
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/checkbox.c b/qcsrc/menu/nexuiz/checkbox.c
deleted file mode 100644 (file)
index 9234ff7..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizCheckBox) EXTENDS(CheckBox)
-       METHOD(NexuizCheckBox, configureNexuizCheckBox, void(entity, float, float, string, string))
-       METHOD(NexuizCheckBox, setChecked, void(entity, float))
-       ATTRIB(NexuizCheckBox, fontSize, float, SKINFONTSIZE_NORMAL)
-       ATTRIB(NexuizCheckBox, image, string, SKINGFX_CHECKBOX)
-       ATTRIB(NexuizCheckBox, yesValue, float, 1)
-       ATTRIB(NexuizCheckBox, noValue, float, 0)
-
-       ATTRIB(NexuizCheckBox, color, vector, SKINCOLOR_CHECKBOX_N)
-       ATTRIB(NexuizCheckBox, colorC, vector, SKINCOLOR_CHECKBOX_C)
-       ATTRIB(NexuizCheckBox, colorF, vector, SKINCOLOR_CHECKBOX_F)
-       ATTRIB(NexuizCheckBox, colorD, vector, SKINCOLOR_CHECKBOX_D)
-
-       ATTRIB(NexuizCheckBox, cvarName, string, string_null)
-       METHOD(NexuizCheckBox, loadCvars, void(entity))
-       METHOD(NexuizCheckBox, saveCvars, void(entity))
-
-       ATTRIB(NexuizCheckBox, alpha, float, SKINALPHA_TEXT)
-       ATTRIB(NexuizCheckBox, disabledAlpha, float, SKINALPHA_DISABLED)
-ENDCLASS(NexuizCheckBox)
-entity makeNexuizCheckBox(float, string, string);
-entity makeNexuizCheckBoxEx(float, float, string, string);
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeNexuizCheckBox(float isInverted, string theCvar, string theText)
-{
-       float y, n;
-       if(isInverted > 1)
-       {
-               n = isInverted - 1;
-               y = -n;
-       }
-       else if(isInverted < -1)
-       {
-               n = isInverted + 1;
-               y = -n;
-       }
-       else if(isInverted == 1)
-       {
-               n = 1;
-               y = 0;
-       }
-       else
-       {
-               n = 0;
-               y = 1;
-       }
-       return makeNexuizCheckBoxEx(y, n, theCvar, theText);
-}
-entity makeNexuizCheckBoxEx(float theYesValue, float theNoValue, string theCvar, string theText)
-{
-       entity me;
-       me = spawnNexuizCheckBox();
-       me.configureNexuizCheckBox(me, theYesValue, theNoValue, theCvar, theText);
-       return me;
-}
-void configureNexuizCheckBoxNexuizCheckBox(entity me, float theYesValue, float theNoValue, string theCvar, string theText)
-{
-       me.yesValue = theYesValue;
-       me.noValue = theNoValue;
-       me.checked = 0;
-       if(theCvar)
-       {
-               me.cvarName = theCvar;
-               me.tooltip = getZonedTooltipForIdentifier(theCvar);
-               me.loadCvars(me);
-       }
-       me.configureCheckBox(me, theText, me.fontSize, me.image);
-}
-void setCheckedNexuizCheckBox(entity me, float val)
-{
-       if(val != me.checked)
-       {
-               me.checked = val;
-               me.saveCvars(me);
-       }
-}
-void loadCvarsNexuizCheckBox(entity me)
-{
-       float m, d;
-
-       if not(me.cvarName)
-               return;
-
-       m = (me.yesValue + me.noValue) * 0.5;
-       d = (cvar(me.cvarName) - m) / (me.yesValue - m);
-       me.checked = (d > 0);
-}
-void saveCvarsNexuizCheckBox(entity me)
-{
-       if not(me.cvarName)
-               return;
-
-       if(me.checked)
-               cvar_set(me.cvarName, ftos(me.yesValue));
-       else
-               cvar_set(me.cvarName, ftos(me.noValue));
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/checkbox_slider_invalid.c b/qcsrc/menu/nexuiz/checkbox_slider_invalid.c
deleted file mode 100644 (file)
index c057d72..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizSliderCheckBox) EXTENDS(CheckBox)
-       METHOD(NexuizSliderCheckBox, configureNexuizSliderCheckBox, void(entity, float, float, entity, string))
-       METHOD(NexuizSliderCheckBox, setChecked, void(entity, float))
-       METHOD(NexuizSliderCheckBox, draw, void(entity))
-       ATTRIB(NexuizSliderCheckBox, fontSize, float, SKINFONTSIZE_NORMAL)
-       ATTRIB(NexuizSliderCheckBox, image, string, SKINGFX_CHECKBOX)
-
-       ATTRIB(NexuizSliderCheckBox, color, vector, SKINCOLOR_CHECKBOX_N)
-       ATTRIB(NexuizSliderCheckBox, colorC, vector, SKINCOLOR_CHECKBOX_C)
-       ATTRIB(NexuizSliderCheckBox, colorF, vector, SKINCOLOR_CHECKBOX_F)
-       ATTRIB(NexuizSliderCheckBox, colorD, vector, SKINCOLOR_CHECKBOX_D)
-
-       ATTRIB(NexuizSliderCheckBox, alpha, float, SKINALPHA_TEXT)
-       ATTRIB(NexuizSliderCheckBox, disabledAlpha, float, SKINALPHA_DISABLED)
-
-       ATTRIB(NexuizSliderCheckBox, controlledSlider, entity, NULL)
-       ATTRIB(NexuizSliderCheckBox, offValue, float, -1)
-       ATTRIB(NexuizSliderCheckBox, inverted, float, 0)
-       ATTRIB(NexuizSliderCheckBox, savedValue, float, -1)
-ENDCLASS(NexuizSliderCheckBox)
-entity makeNexuizSliderCheckBox(float, float, entity, string);
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeNexuizSliderCheckBox(float theOffValue, float isInverted, entity theControlledSlider, string theText)
-{
-       entity me;
-       me = spawnNexuizSliderCheckBox();
-       me.configureNexuizSliderCheckBox(me, theOffValue, isInverted, theControlledSlider, theText);
-       return me;
-}
-void configureNexuizSliderCheckBoxNexuizSliderCheckBox(entity me, float theOffValue, float isInverted, entity theControlledSlider, string theText)
-{
-       me.offValue = theOffValue;
-       me.inverted = isInverted;
-       me.checked = (theControlledSlider.value == theOffValue);
-       if(theControlledSlider.value == median(theControlledSlider.valueMin, theControlledSlider.value, theControlledSlider.valueMax))
-               me.savedValue = theControlledSlider.value;
-       else
-               me.savedValue = theControlledSlider.valueMin; 
-       me.controlledSlider = theControlledSlider;
-       me.configureCheckBox(me, theText, me.fontSize, me.image);
-       me.tooltip = theControlledSlider.tooltip;
-}
-void drawNexuizSliderCheckBox(entity me)
-{
-       me.checked = ((me.controlledSlider.value == me.offValue) != me.inverted);
-       if(me.controlledSlider.value == median(me.controlledSlider.valueMin, me.controlledSlider.value, me.controlledSlider.valueMax))
-               me.savedValue = me.controlledSlider.value;
-       drawCheckBox(me);
-}
-void setCheckedNexuizSliderCheckBox(entity me, float val)
-{
-       if(me.checked == val)
-               return;
-       me.checked = val;
-       if(val == me.inverted)
-               me.controlledSlider.setValue(me.controlledSlider, median(me.controlledSlider.valueMin, me.savedValue, me.controlledSlider.valueMax));
-       else
-               me.controlledSlider.setValue(me.controlledSlider, me.offValue);
-}
-
-#endif
diff --git a/qcsrc/menu/nexuiz/colorbutton.c b/qcsrc/menu/nexuiz/colorbutton.c
deleted file mode 100644 (file)
index b52c6f5..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizColorButton) EXTENDS(RadioButton)
-       METHOD(NexuizColorButton, configureNexuizColorButton, void(entity, float, float, float))
-       METHOD(NexuizColorButton, setChecked, void(entity, float))
-       METHOD(NexuizColorButton, draw, void(entity))
-       ATTRIB(NexuizColorButton, fontSize, float, SKINFONTSIZE_NORMAL)
-       ATTRIB(NexuizColorButton, image, string, SKINGFX_COLORBUTTON)
-       ATTRIB(NexuizColorButton, image2, string, SKINGFX_COLORBUTTON_COLOR)
-
-       ATTRIB(NexuizColorButton, useDownAsChecked, float, 1)
-
-       ATTRIB(NexuizColorButton, cvarPart, float, 0)
-       ATTRIB(NexuizColorButton, cvarName, string, string_null)
-       ATTRIB(NexuizColorButton, cvarValueFloat, float, 0)
-       METHOD(NexuizColorButton, loadCvars, void(entity))
-       METHOD(NexuizColorButton, saveCvars, void(entity))
-ENDCLASS(NexuizColorButton)
-entity makeNexuizColorButton(float, float, float);
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeNexuizColorButton(float theGroup, float theColor, float theValue)
-{
-       entity me;
-       me = spawnNexuizColorButton();
-       me.configureNexuizColorButton(me, theGroup, theColor, theValue);
-       return me;
-}
-void configureNexuizColorButtonNexuizColorButton(entity me, float theGroup, float theColor, float theValue)
-{
-       me.cvarName = "_cl_color";
-       me.cvarValueFloat = theValue;
-       me.cvarPart = theColor;
-       me.loadCvars(me);
-       me.configureRadioButton(me, string_null, me.fontSize, me.image, theGroup, 0);
-       me.srcMulti = 1;
-       me.src2 = me.image2;
-}
-void setCheckedNexuizColorButton(entity me, float val)
-{
-       if(val != me.checked)
-       {
-               me.checked = val;
-               me.saveCvars(me);
-       }
-}
-void loadCvarsNexuizColorButton(entity me)
-{
-       if not(me.cvarName)
-               return;
-
-       if(me.cvarPart == 1)
-               me.checked = (cvar(me.cvarName) & 240) == me.cvarValueFloat * 16;
-       else
-               me.checked = (cvar(me.cvarName) & 15) == me.cvarValueFloat;
-}
-void saveCvarsNexuizColorButton(entity me)
-{
-       if not(me.cvarName)
-               return;
-
-       if(me.checked)
-       {
-               if(me.cvarPart == 1)
-                       cvar_set(me.cvarName, ftos(cvar(me.cvarName) & 15 + me.cvarValueFloat * 16));
-               else
-                       cvar_set(me.cvarName, ftos(cvar(me.cvarName) & 240 + me.cvarValueFloat));
-       }
-       // TODO on an apply button, read _cl_color and execute the color command for it
-}
-void drawNexuizColorButton(entity me)
-{
-       me.color2 = colormapPaletteColor(me.cvarValueFloat, me.cvarPart);
-       drawCheckBox(me);
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/colorpicker.c b/qcsrc/menu/nexuiz/colorpicker.c
deleted file mode 100644 (file)
index ba1a3a3..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizColorpicker) EXTENDS(Image)
-       METHOD(NexuizColorpicker, configureNexuizColorpicker, void(entity, entity))
-       METHOD(NexuizColorpicker, mousePress, float(entity, vector))
-       METHOD(NexuizColorpicker, mouseRelease, float(entity, vector))
-       METHOD(NexuizColorpicker, mouseDrag, float(entity, vector))
-       ATTRIB(NexuizColorpicker, controlledTextbox, entity, NULL)
-       ATTRIB(NexuizColorpicker, image, string, SKINGFX_COLORPICKER)
-       ATTRIB(NexuizColorpicker, imagemargin, vector, SKINMARGIN_COLORPICKER)
-       ATTRIB(NexuizColorpicker, focusable, float, 1)
-       METHOD(NexuizColorpicker, focusLeave, void(entity))
-       METHOD(NexuizColorpicker, keyDown, float(entity, float, float, float))
-       METHOD(NexuizColorpicker, draw, void(entity))
-ENDCLASS(NexuizColorpicker)
-entity makeNexuizColorpicker(entity theTextbox);
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeNexuizColorpicker(entity theTextbox)
-{
-       entity me;
-       me = spawnNexuizColorpicker();
-       me.configureNexuizColorpicker(me, theTextbox);
-       return me;
-}
-
-void configureNexuizColorpickerNexuizColorpicker(entity me, entity theTextbox)
-{
-       me.controlledTextbox = theTextbox;
-       me.configureImage(me, me.image);
-}
-
-float mousePressNexuizColorpicker(entity me, vector coords)
-{
-       me.mouseDrag(me, coords);
-       return 1;
-}
-
-// must match hslimage.c
-vector hslimage_color(vector v, vector margin)
-{
-    v_x = (v_x - margin_x) / (1 - 2 * margin_x);
-    v_y = (v_y - margin_y) / (1 - 2 * margin_y);
-    if(v_x < 0) v_x = 0;
-    if(v_y < 0) v_y = 0;
-    if(v_x > 1) v_x = 1;
-    if(v_y > 1) v_y = 1;
-    if(v_y > 0.875) // grey bar
-        return hsl_to_rgb(eZ * v_x);
-    else
-        return hsl_to_rgb(v_x * 6 * eX + eY + v_y / 0.875 * eZ);
-}
-
-float mouseDragNexuizColorpicker(entity me, vector coords)
-{
-       float i;
-       for(;;)
-       {
-               i = me.controlledTextbox.cursorPos;
-               if(i >= 2)
-               {
-                       if(substring(me.controlledTextbox.text, i-2, 1) == "^")
-                               if(strstrofs("0123456789", substring(me.controlledTextbox.text, i-1, 1), 0) >= 0)
-                               {
-                                       me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                       me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                       continue;
-                               }
-               }
-
-               if(i >= 5)
-               {
-                       if(substring(me.controlledTextbox.text, i-5, 2) == "^x")
-                               if(strstrofs("0123456789abcdefABCDEF", substring(me.controlledTextbox.text, i-3, 1), 0) >= 0)
-                                       if(strstrofs("0123456789abcdefABCDEF", substring(me.controlledTextbox.text, i-2, 1), 0) >= 0)
-                                               if(strstrofs("0123456789abcdefABCDEF", substring(me.controlledTextbox.text, i-1, 1), 0) >= 0)
-                                               {
-                                                       me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                                       me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                                       me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                                       me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                                       me.controlledTextbox.keyDown(me.controlledTextbox, K_BACKSPACE, 8, 0);
-                                                       continue;
-                                               }
-               }
-               break;
-       }
-
-       vector margin;
-       margin = me.imagemargin;
-       if(coords_x >= margin_x)
-       if(coords_y >= margin_y)
-       if(coords_x <= 1 - margin_x)
-       if(coords_y <= 1 - margin_y)
-               me.controlledTextbox.enterText(me.controlledTextbox, rgb_to_hexcolor(hslimage_color(coords, margin)));
-
-       return 1;
-}
-
-float mouseReleaseNexuizColorpicker(entity me, vector coords)
-{
-       me.mouseDrag(me, coords);
-       return 1;
-}
-
-void focusLeaveNexuizColorpicker(entity me)
-{
-       me.controlledTextbox.saveCvars(me.controlledTextbox);
-}
-float keyDownNexuizColorpicker(entity me, float key, float ascii, float shift)
-{
-       return me.controlledTextbox.keyDown(me.controlledTextbox, key, ascii, shift);
-}
-void drawNexuizColorpicker(entity me)
-{
-       drawImage(me);
-
-       float B, C, aC;
-       C = cvar("r_textcontrast");
-       B = cvar("r_textbrightness");
-
-       // for this to work, C/(1-B) must be in 0..1
-       // B must be < 1
-       // C must be < 1-B
-       
-       B = bound(0, B, 1);
-       C = bound(0, C, 1-B);
-
-       aC = 1 - C / (1 - B);
-
-       draw_Picture(me.imgOrigin, strcat(me.src, "_m"), me.imgSize, '0 0 0', aC);
-       draw_Picture(me.imgOrigin, strcat(me.src, "_m"), me.imgSize, me.color, B);
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/commandbutton.c b/qcsrc/menu/nexuiz/commandbutton.c
deleted file mode 100644 (file)
index 24a83bc..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef COMMANDBUTTON_CLOSE
-# define COMMANDBUTTON_CLOSE 1
-# define COMMANDBUTTON_APPLY 2
-//# define COMMANDBUTTON_REVERT 4
-#endif
-
-#ifdef INTERFACE
-CLASS(NexuizCommandButton) EXTENDS(NexuizButton)
-       METHOD(NexuizCommandButton, configureNexuizCommandButton, void(entity, string, vector, string, float))
-       ATTRIB(NexuizCommandButton, onClickCommand, string, string_null)
-       ATTRIB(NexuizCommandButton, flags, float, 0)
-ENDCLASS(NexuizCommandButton)
-entity makeNexuizCommandButton(string theText, vector theColor, string theCommand, float closesMenu);
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeNexuizCommandButton(string theText, vector theColor, string theCommand, float theFlags)
-{
-       entity me;
-       me = spawnNexuizCommandButton();
-       me.configureNexuizCommandButton(me, theText, theColor, theCommand, theFlags);
-       return me;
-}
-
-void NexuizCommandButton_Click(entity me, entity other)
-{
-       //if(me.flags & COMMANDBUTTON_APPLY)
-       //      saveAllCvars(me.parent);
-       cmd("\n", me.onClickCommand, "\n");
-       //if(me.flags & COMMANDBUTTON_REVERT)
-       //      loadAllCvars(me.parent);
-       if(me.flags & COMMANDBUTTON_CLOSE)
-               m_goto(string_null);
-}
-
-void configureNexuizCommandButtonNexuizCommandButton(entity me, string theText, vector theColor, string theCommand, float theFlags)
-{
-       me.configureNexuizButton(me, theText, theColor);
-       me.onClickCommand = theCommand;
-       me.flags = theFlags;
-       me.onClick = NexuizCommandButton_Click;
-       me.onClickEntity = me;
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/credits.c b/qcsrc/menu/nexuiz/credits.c
deleted file mode 100644 (file)
index 032904c..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizCreditsList) EXTENDS(NexuizListBox)
-       METHOD(NexuizCreditsList, configureNexuizCreditsList, void(entity))
-       ATTRIB(NexuizCreditsList, rowsPerItem, float, 1)
-       METHOD(NexuizCreditsList, draw, void(entity))
-       METHOD(NexuizCreditsList, drawListBoxItem, void(entity, float, vector, float))
-       METHOD(NexuizCreditsList, resizeNotify, void(entity, vector, vector, vector, vector))
-       METHOD(NexuizCreditsList, keyDown, float(entity, float, float, float))
-       METHOD(NexuizCreditsList, destroy, void(entity))
-
-       ATTRIB(NexuizCreditsList, realFontSize, vector, '0 0 0')
-       ATTRIB(NexuizCreditsList, realUpperMargin, float, 0)
-       ATTRIB(NexuizCreditsList, bufferIndex, float, 0)
-       ATTRIB(NexuizCreditsList, scrolling, float, 0)
-
-       ATTRIB(NexuizListBox, alphaBG, float, 0)
-ENDCLASS(NexuizCreditsList)
-entity makeNexuizCreditsList();
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeNexuizCreditsList()
-{
-       entity me;
-       me = spawnNexuizCreditsList();
-       me.configureNexuizCreditsList(me);
-       return me;
-}
-void configureNexuizCreditsListNexuizCreditsList(entity me)
-{
-       me.configureNexuizListBox(me);
-       // load the file
-       me.bufferIndex = buf_load("nexuiz-credits.txt");
-       me.nItems = buf_getsize(me.bufferIndex);
-}
-void destroyNexuizCreditsList(entity me)
-{
-       buf_del(me.bufferIndex);
-}
-void drawNexuizCreditsList(entity me)
-{
-       float i;
-       if(me.scrolling)
-       {
-               me.scrollPos = bound(0, (time - me.scrolling) * me.itemHeight, me.nItems * me.itemHeight - 1);
-               i = min(me.selectedItem, floor((me.scrollPos + 1) / me.itemHeight - 1));
-               i = max(i, ceil(me.scrollPos / me.itemHeight));
-               me.setSelected(me, i);
-       }
-       drawListBox(me);
-}
-void resizeNotifyNexuizCreditsList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
-{
-       resizeNotifyNexuizListBox(me, relOrigin, relSize, absOrigin, absSize);
-
-       me.realFontSize_y = me.fontSize / (absSize_y * me.itemHeight);
-       me.realFontSize_x = me.fontSize / (absSize_x * (1 - me.controlWidth));
-       me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
-}
-void drawListBoxItemNexuizCreditsList(entity me, float i, vector absSize, float isSelected)
-{
-       // layout: Ping, Credits name, Map name, NP, TP, MP
-       string s;
-       float theAlpha;
-       vector theColor;
-
-       s = bufstr_get(me.bufferIndex, i);
-
-       if(substring(s, 0, 2) == "**")
-       {
-               s = substring(s, 2, strlen(s) - 2);
-               theColor = SKINCOLOR_CREDITS_TITLE;
-               theAlpha = SKINALPHA_CREDITS_TITLE;
-       }
-       else if(substring(s, 0, 1) == "*")
-       {
-               s = substring(s, 1, strlen(s) - 1);
-               theColor = SKINCOLOR_CREDITS_FUNCTION;
-               theAlpha = SKINALPHA_CREDITS_FUNCTION;
-       }
-       else
-       {
-               theColor = SKINCOLOR_CREDITS_PERSON;
-               theAlpha = SKINALPHA_CREDITS_PERSON;
-       }
-
-       draw_CenterText(me.realUpperMargin * eY + 0.5 * eX, s, me.realFontSize, theColor, theAlpha, 0);
-}
-
-float keyDownNexuizCreditsList(entity me, float scan, float ascii, float shift)
-{
-       float i;
-       me.dragScrollTimer = time;
-       me.scrolling = 0;
-
-       if(scan == K_PGUP)
-               me.scrollPos = max(me.scrollPos - 0.5, 0);
-       else if(scan == K_PGDN)
-               me.scrollPos = min(me.scrollPos + 0.5, me.nItems * me.itemHeight - 1);
-       else if(scan == K_UPARROW)
-               me.scrollPos = max(me.scrollPos - me.itemHeight, 0);
-       else if(scan == K_DOWNARROW)
-               me.scrollPos = min(me.scrollPos + me.itemHeight, me.nItems * me.itemHeight - 1);
-       else
-               return keyDownListBox(me, scan, ascii, shift);
-
-       i = min(me.selectedItem, floor((me.scrollPos + 1) / me.itemHeight - 1));
-       i = max(i, ceil(me.scrollPos / me.itemHeight));
-       me.setSelected(me, i);
-
-       return 1;
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/crosshairbutton.c b/qcsrc/menu/nexuiz/crosshairbutton.c
deleted file mode 100644 (file)
index aa14d30..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizCrosshairButton) EXTENDS(RadioButton)
-       METHOD(NexuizCrosshairButton, configureNexuizCrosshairButton, void(entity, float, float))
-       METHOD(NexuizCrosshairButton, setChecked, void(entity, float))
-       METHOD(NexuizCrosshairButton, draw, void(entity))
-       ATTRIB(NexuizCrosshairButton, fontSize, float, SKINFONTSIZE_NORMAL)
-       ATTRIB(NexuizCrosshairButton, image, string, SKINGFX_CROSSHAIRBUTTON)
-
-       ATTRIB(NexuizCrosshairButton, useDownAsChecked, float, 1)
-       ATTRIB(NexuizCrosshairButton, src3, string, string_null)
-
-       ATTRIB(NexuizCrosshairButton, cvarName, string, string_null)
-       ATTRIB(NexuizCrosshairButton, cvarValueFloat, float, 0)
-       METHOD(NexuizCrosshairButton, loadCvars, void(entity))
-       METHOD(NexuizCrosshairButton, saveCvars, void(entity))
-ENDCLASS(NexuizCrosshairButton)
-entity makeNexuizCrosshairButton(float, float);
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeNexuizCrosshairButton(float theGroup, float theCrosshair)
-{
-       entity me;
-       me = spawnNexuizCrosshairButton();
-       me.configureNexuizCrosshairButton(me, theGroup, theCrosshair);
-       return me;
-}
-void configureNexuizCrosshairButtonNexuizCrosshairButton(entity me, float theGroup, float theCrosshair)
-{
-       me.cvarName = "crosshair";
-       me.cvarValueFloat = theCrosshair;
-       me.loadCvars(me);
-       me.configureRadioButton(me, string_null, me.fontSize, me.image, theGroup, 0);
-       me.srcMulti = 1;
-       me.src3 = strzone(strcat("/gfx/crosshair", ftos(me.cvarValueFloat)));
-}
-void setCheckedNexuizCrosshairButton(entity me, float val)
-{
-       if(val != me.checked)
-       {
-               me.checked = val;
-               me.saveCvars(me);
-       }
-}
-void loadCvarsNexuizCrosshairButton(entity me)
-{
-       if not(me.cvarName)
-               return;
-
-       me.checked = (cvar(me.cvarName) == me.cvarValueFloat);
-}
-void saveCvarsNexuizCrosshairButton(entity me)
-{
-       if not(me.cvarName)
-               return;
-
-       if(me.checked)
-               cvar_set(me.cvarName, ftos(me.cvarValueFloat));
-       // TODO on an apply button, read _cl_color and execute the color command for it
-}
-void drawNexuizCrosshairButton(entity me)
-{
-       vector sz, rgb;
-       float a;
-
-       rgb = eX * cvar("crosshair_color_red") + eY * cvar("crosshair_color_green") + eZ * cvar("crosshair_color_blue");
-       a = cvar("crosshair_color_alpha");
-
-       if(!me.checked && !me.focused)
-       {
-               a *= me.disabledAlpha;
-               rgb = '1 1 1';
-       }
-
-       drawCheckBox(me);
-
-       sz = draw_PictureSize(me.src3);
-       sz = globalToBoxSize(sz, draw_scale);
-       sz = sz * cvar("crosshair_size");
-       if(sz_x > 0.95)
-               sz = sz * (0.95 / sz_x);
-       if(sz_y > 0.95)
-               sz = sz * (0.95 / sz_y);
-
-       draw_Picture('0.5 0.5 0' - 0.5 * sz, me.src3, sz, rgb, a);
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/cvarlist.c b/qcsrc/menu/nexuiz/cvarlist.c
deleted file mode 100644 (file)
index 105ea9e..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizCvarList) EXTENDS(NexuizListBox)
-       METHOD(NexuizCvarList, configureNexuizCvarList, void(entity))
-       ATTRIB(NexuizCvarList, rowsPerItem, float, 1)
-       METHOD(NexuizCvarList, drawListBoxItem, void(entity, float, vector, float))
-       METHOD(NexuizCvarList, resizeNotify, void(entity, vector, vector, vector, vector))
-       METHOD(NexuizCvarList, keyDown, float(entity, float, float, float))
-
-       METHOD(NexuizCvarList, destroy, void(entity))
-
-       ATTRIB(NexuizCvarList, realFontSize, vector, '0 0 0')
-       ATTRIB(NexuizCvarList, realUpperMargin, float, 0)
-       ATTRIB(NexuizCvarList, columnNameOrigin, float, 0)
-       ATTRIB(NexuizCvarList, columnNameSize, float, 0)
-       ATTRIB(NexuizCvarList, columnValueOrigin, float, 0)
-       ATTRIB(NexuizCvarList, columnValueSize, float, 0)
-
-       METHOD(NexuizCvarList, setSelected, void(entity, float))
-       ATTRIB(NexuizCvarList, controlledTextbox, entity, NULL)
-       ATTRIB(NexuizCvarList, cvarNameBox, entity, NULL)
-       ATTRIB(NexuizCvarList, cvarDescriptionBox, entity, NULL)
-       ATTRIB(NexuizCvarList, cvarTypeBox, entity, NULL)
-       ATTRIB(NexuizCvarList, cvarValueBox, entity, NULL)
-       ATTRIB(NexuizCvarList, cvarDefaultBox, entity, NULL)
-
-       ATTRIB(NexuizCvarList, handle, float, -1)
-       ATTRIB(NexuizCvarList, cvarName, string, string_null)
-       ATTRIB(NexuizCvarList, cvarDescription, string, string_null)
-       ATTRIB(NexuizCvarList, cvarType, string, string_null)
-       ATTRIB(NexuizCvarList, cvarDefault, string, string_null)
-ENDCLASS(NexuizCvarList)
-entity makeNexuizCvarList();
-void CvarList_Filter_Change(entity box, entity me);
-void CvarList_Value_Change(entity box, entity me);
-void CvarList_Revert_Click(entity btn, entity me);
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeNexuizCvarList()
-{
-       entity me;
-       me = spawnNexuizCvarList();
-       me.configureNexuizCvarList(me);
-       return me;
-}
-void configureNexuizCvarListNexuizCvarList(entity me)
-{
-       me.configureNexuizListBox(me);
-
-       me.handle = buf_create();
-       buf_cvarlist(me.handle, "", "_");
-       me.nItems = buf_getsize(me.handle);
-}
-void destroyNexuizCvarList(entity me)
-{
-       buf_del(me.handle);
-}
-void setSelectedNexuizCvarList(entity me, float i)
-{
-       string s;
-
-       setSelectedListBox(me, i);
-       if(me.nItems == 0)
-               return;
-       
-       if(me.cvarName)
-               strunzone(me.cvarName);
-       if(me.cvarDescription)
-               strunzone(me.cvarDescription);
-       if(me.cvarType)
-               strunzone(me.cvarType);
-       if(me.cvarDefault)
-               strunzone(me.cvarDefault);
-       me.cvarName = strzone(bufstr_get(me.handle, me.selectedItem));
-       me.cvarDescription = strzone(cvar_description(me.cvarName));
-       me.cvarDefault = strzone(cvar_defstring(me.cvarName));
-
-       float t;
-       t = cvar_type(me.cvarName);
-       me.cvarType = "";
-       if(t & CVAR_TYPEFLAG_SAVED)
-               me.cvarType = strcat(me.cvarType, ", will be saved to config.cfg");
-       else
-               me.cvarType = strcat(me.cvarType, ", will not be saved");
-       if(t & CVAR_TYPEFLAG_PRIVATE)
-               me.cvarType = strcat(me.cvarType, ", private");
-       if(t & CVAR_TYPEFLAG_ENGINE)
-               me.cvarType = strcat(me.cvarType, ", engine setting");
-       if(t & CVAR_TYPEFLAG_READONLY)
-               me.cvarType = strcat(me.cvarType, ", read only");
-       me.cvarType = strzone(substring(me.cvarType, 2, strlen(me.cvarType) - 2));
-
-       me.cvarNameBox.setText(me.cvarNameBox, me.cvarName);
-       me.cvarDescriptionBox.setText(me.cvarDescriptionBox, me.cvarDescription);
-       me.cvarTypeBox.setText(me.cvarTypeBox, me.cvarType);
-       me.cvarDefaultBox.setText(me.cvarDefaultBox, me.cvarDefault);
-
-       // this one can handle tempstrings
-       s = cvar_string(me.cvarName);
-       me.cvarValueBox.setText(me.cvarValueBox, s);
-       me.cvarValueBox.cursorPos = strlen(s);
-}
-void CvarList_Filter_Change(entity box, entity me)
-{
-       buf_cvarlist(me.handle, box.text, "_");
-       me.nItems = buf_getsize(me.handle);
-
-       me.setSelected(me, 0);
-}
-void resizeNotifyNexuizCvarList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
-{
-       resizeNotifyNexuizListBox(me, relOrigin, relSize, absOrigin, absSize);
-
-       me.realFontSize_y = me.fontSize / (absSize_y * me.itemHeight);
-       me.realFontSize_x = me.fontSize / (absSize_x * (1 - me.controlWidth));
-       me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
-
-       me.columnNameOrigin = 0;
-       me.columnValueSize = me.realFontSize_x * 20;
-       me.columnNameSize = 1 - me.columnValueSize - me.realFontSize_x;
-       me.columnValueOrigin = me.columnNameOrigin + me.columnNameSize + me.realFontSize_x;
-
-       me.setSelected(me, me.selectedItem);
-}
-void drawListBoxItemNexuizCvarList(entity me, float i, vector absSize, float isSelected)
-{
-       string k, v, d;
-       float t;
-
-       vector theColor;
-       float theAlpha;
-
-       string s;
-
-       if(isSelected)
-               draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
-       
-       k = bufstr_get(me.handle, i);
-
-       v = cvar_string(k);
-       d = cvar_defstring(k);
-       t = cvar_type(k);
-       if(t & CVAR_TYPEFLAG_SAVED)
-               theAlpha = SKINALPHA_CVARLIST_SAVED;
-       else
-               theAlpha = SKINALPHA_CVARLIST_TEMPORARY;
-       if(v == d)
-               theColor = SKINCOLOR_CVARLIST_UNCHANGED;
-       else
-               theColor = SKINCOLOR_CVARLIST_CHANGED;
-
-       s = draw_TextShortenToWidth(k, me.columnNameSize, 0, me.realFontSize);
-       draw_Text(me.realUpperMargin * eY + me.columnNameOrigin * eX, s, me.realFontSize, theColor, theAlpha, 0);
-       s = draw_TextShortenToWidth(v, me.columnValueSize, 0, me.realFontSize);
-       draw_Text(me.realUpperMargin * eY + me.columnValueOrigin * eX, s, me.realFontSize, theColor, theAlpha, 0);
-}
-
-float keyDownNexuizCvarList(entity me, float scan, float ascii, float shift)
-{
-       if(keyDownListBox(me, scan, ascii, shift))
-               return 1;
-       else if(!me.controlledTextbox)
-               return 0;
-       else
-               return me.controlledTextbox.keyDown(me.controlledTextbox, scan, ascii, shift);
-}
-
-void CvarList_Value_Change(entity box, entity me)
-{
-       cvar_set(me.cvarNameBox.text, box.text);
-}
-
-void CvarList_Revert_Click(entity btn, entity me)
-{
-       me.cvarValueBox.setText(me.cvarValueBox, me.cvarDefault);
-       me.cvarValueBox.cursorPos = strlen(me.cvarDefault);
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/demolist.c b/qcsrc/menu/nexuiz/demolist.c
deleted file mode 100644 (file)
index d3d9405..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizDemoList) EXTENDS(NexuizListBox)
-    METHOD(NexuizDemoList, configureNexuizDemoList, void(entity))
-    ATTRIB(NexuizDemoList, rowsPerItem, float, 1)
-    METHOD(NexuizDemoList, resizeNotify, void(entity, vector, vector, vector, vector))
-    METHOD(NexuizDemoList, drawListBoxItem, void(entity, float, vector, float))
-    METHOD(NexuizDemoList, getDemos, void(entity))
-    METHOD(NexuizDemoList, startDemo, void(entity))    
-    METHOD(NexuizDemoList, demoName, string(entity, float))
-    METHOD(NexuizDemoList, clickListBoxItem, void(entity, float, vector))
-    METHOD(NexuizDemoList, keyDown, float(entity, float, float, float))
-    METHOD(NexuizDemoList, destroy, void(entity))
-    METHOD(NexuizDemoList, showNotify, void(entity))
-    ATTRIB(NexuizDemoList, listDemo, float, -1)
-    ATTRIB(NexuizDemoList, realFontSize, vector, '0 0 0')
-    ATTRIB(NexuizDemoList, columnNameOrigin, float, 0)
-    ATTRIB(NexuizDemoList, columnNameSize, float, 0)
-    ATTRIB(NexuizDemoList, realUpperMargin, float, 0)
-    ATTRIB(NexuizDemoList, origin, vector, '0 0 0')
-    ATTRIB(NexuizDemoList, itemAbsSize, vector, '0 0 0')
-    ATTRIB(NexuizDemoList, lastClickedDemo, float, -1)
-    ATTRIB(NexuizDemoList, lastClickedTime, float, 0)
-    ATTRIB(NexuizDemoList, filterString, string, string_null)    
-ENDCLASS(NexuizDemoList)
-
-entity makeNexuizDemoList();
-void StartDemo_Click(entity btn, entity me);
-void TimeDemo_Click(entity btn, entity me);
-void DemoList_Filter_Change(entity box, entity me);
-#endif
-
-#ifdef IMPLEMENTATION
-
-entity makeNexuizDemoList()
-{
-    entity me;
-    me = spawnNexuizDemoList();
-    me.configureNexuizDemoList(me);
-    return me;
-}
-
-void configureNexuizDemoListNexuizDemoList(entity me)
-{
-    me.configureNexuizListBox(me);
-    me.getDemos(me);    
-}
-
-string demoNameNexuizDemoList(entity me, float i )
-{
-    string s;
-    s = search_getfilename(me.listDemo, i);
-    s = substring(s, 6, strlen(s) - 6 - 4);  // demos/, .dem
-    return s;
-}
-
-
-void getDemosNexuizDemoList(entity me)
-{
-    string s;
-    
-    if(me.filterString)
-       //subdirectory in filterString allowed    
-       s=strcat("demos/*", me.filterString, "*.dem");          
-    else
-       s="demos/*.dem";
-       
-    //dprint("Search demos with the pattern ", s, "\n");    
-       if(me.listDemo >= 0)
-               search_end(me.listDemo);
-    me.listDemo = search_begin(s, FALSE, TRUE);
-    if(me.listDemo < 0)
-       me.nItems=0;
-    else
-       me.nItems=search_getsize(me.listDemo);                          
-}
-
-void destroyNexuizDemoList(entity me)
-{
-    search_end(me.listDemo);
-}
-
-void resizeNotifyNexuizDemoList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
-{
-    me.itemAbsSize = '0 0 0';
-    resizeNotifyNexuizListBox(me, relOrigin, relSize, absOrigin, absSize);
-
-    me.realFontSize_y = me.fontSize / (me.itemAbsSize_y = (absSize_y * me.itemHeight));
-    me.realFontSize_x = me.fontSize / (me.itemAbsSize_x = (absSize_x * (1 - me.controlWidth)));
-    me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
-
-    me.columnNameOrigin = me.realFontSize_x;
-    me.columnNameSize = 1 - 2 * me.realFontSize_x;
-}
-
-void drawListBoxItemNexuizDemoList(entity me, float i, vector absSize, float isSelected)
-{
-    string s;
-    if(isSelected)
-       draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
-               
-    s = me.demoName(me,i);
-    s = draw_TextShortenToWidth(s, me.columnNameSize, 0, me.realFontSize);
-    draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);              
-}
-
-void showNotifyNexuizDemoList(entity me)
-{
-    me.getDemos(me);
-}
-
-void DemoList_Filter_Change(entity box, entity me)
-{      
-    if(me.filterString)
-       strunzone(me.filterString);
-    
-    if(box.text != "")
-       me.filterString = strzone(box.text);
-    else
-       me.filterString = string_null;
-               
-    me.getDemos(me);
-}
-
-void startDemoNexuizDemoList(entity me)
-{
-    string s;
-    s = me.demoName(me,me.selectedItem);
-    localcmd("playdemo demos/", s, ".dem\nwait\ntogglemenu\n");        
-}
-
-void StartDemo_Click(entity btn, entity me)
-{
-    me.startDemo(me);
-}
-
-void TimeDemo_Click(entity btn, entity me)
-{
-    string s;
-    s = me.demoName(me,me.selectedItem);
-    localcmd("timedemo demos/", s, ".dem\nwait\ntogglemenu\n");        
-}
-
-void clickListBoxItemNexuizDemoList(entity me, float i, vector where)
-{
-    if(i == me.lastClickedDemo)
-        if(time < me.lastClickedTime + 0.3)
-        {
-            // DOUBLE CLICK!
-            me.setSelected(me, i);
-            me.startDemo(me);
-        }
-    me.lastClickedDemo = i;
-    me.lastClickedTime = time;
-}
-
-float keyDownNexuizDemoList(entity me, float scan, float ascii, float shift)
-{
-    if(scan == K_ENTER) {
-        me.startDemo(me);
-        return 1;
-    }
-    else
-        return keyDownListBox(me, scan, ascii, shift);
-}
-#endif
-
diff --git a/qcsrc/menu/nexuiz/dialog.c b/qcsrc/menu/nexuiz/dialog.c
deleted file mode 100644 (file)
index eb3204d..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizDialog) EXTENDS(Dialog)
-       // still to be customized by user
-       /*
-       ATTRIB(NexuizDialog, closable, float, 1)
-       ATTRIB(NexuizDialog, title, string, "Form1") // ;)
-       ATTRIB(NexuizDialog, color, vector, '1 0.5 1')
-       ATTRIB(NexuizDialog, intendedWidth, float, 0)
-       ATTRIB(NexuizDialog, rows, float, 3)
-       ATTRIB(NexuizDialog, columns, float, 2)
-       */
-       ATTRIB(NexuizDialog, marginTop, float, SKINMARGIN_TOP) // pixels
-       ATTRIB(NexuizDialog, marginBottom, float, SKINMARGIN_BOTTOM) // pixels
-       ATTRIB(NexuizDialog, marginLeft, float, SKINMARGIN_LEFT) // pixels
-       ATTRIB(NexuizDialog, marginRight, float, SKINMARGIN_RIGHT) // pixels
-       ATTRIB(NexuizDialog, columnSpacing, float, SKINMARGIN_COLUMNS) // pixels
-       ATTRIB(NexuizDialog, rowSpacing, float, SKINMARGIN_ROWS) // pixels
-       ATTRIB(NexuizDialog, rowHeight, float, SKINFONTSIZE_NORMAL * SKINHEIGHT_NORMAL) // pixels
-       ATTRIB(NexuizDialog, titleHeight, float, SKINFONTSIZE_TITLE * SKINHEIGHT_TITLE) // pixels
-       ATTRIB(NexuizDialog, titleFontSize, float, SKINFONTSIZE_TITLE) // pixels
-
-       ATTRIB(NexuizDialog, backgroundImage, string, SKINGFX_DIALOGBORDER)
-       ATTRIB(NexuizDialog, borderLines, float, SKINHEIGHT_DIALOGBORDER)
-       ATTRIB(NexuizDialog, closeButtonImage, string, SKINGFX_CLOSEBUTTON)
-       ATTRIB(NexuizDialog, zoomedOutTitleBarPosition, float, SKINHEIGHT_ZOOMEDTITLE * 0.5 - 0.5)
-       ATTRIB(NexuizDialog, zoomedOutTitleBar, float, SKINHEIGHT_ZOOMEDTITLE != 0)
-
-       ATTRIB(NexuizDialog, alpha, float, SKINALPHA_TEXT)
-
-       METHOD(NexuizDialog, configureDialog, void(entity))
-ENDCLASS(NexuizDialog)
-entity currentDialog;
-#endif
-
-#ifdef IMPLEMENTATION
-void configureDialogNexuizDialog(entity me)
-{
-       currentDialog = me;
-       configureDialogDialog(me);
-       me.tooltip = getZonedTooltipForIdentifier(me.classname);
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/dialog_credits.c b/qcsrc/menu/nexuiz/dialog_credits.c
deleted file mode 100644 (file)
index c1d690f..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizCreditsDialog) EXTENDS(NexuizDialog)
-       METHOD(NexuizCreditsDialog, fill, void(entity))
-       METHOD(NexuizCreditsDialog, focusEnter, void(entity))
-       ATTRIB(NexuizCreditsDialog, title, string, "Credits")
-       ATTRIB(NexuizCreditsDialog, color, vector, SKINCOLOR_DIALOG_CREDITS)
-       ATTRIB(NexuizCreditsDialog, intendedWidth, float, SKINWIDTH_CREDITS)
-       ATTRIB(NexuizCreditsDialog, rows, float, SKINROWS_CREDITS)
-       ATTRIB(NexuizCreditsDialog, columns, float, 2)
-       ATTRIB(NexuizCreditsDialog, creditsList, entity, NULL)
-ENDCLASS(NexuizCreditsDialog)
-#endif
-
-#ifdef IMPLEMENTATION
-void fillNexuizCreditsDialog(entity me)
-{
-       entity e;
-       me.TR(me);
-               me.TD(me, me.rows - 1, me.columns, me.creditsList = makeNexuizCreditsList());
-       me.gotoRC(me, me.rows - 1, 0);
-               me.TD(me, 1, me.columns, e = makeNexuizButton("OK", '0 0 0'));
-                       e.onClick = Dialog_Close;
-                       e.onClickEntity = me;
-}
-void focusEnterNexuizCreditsDialog(entity me)
-{
-       me.creditsList.scrolling = time + 1;
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/dialog_multiplayer.c b/qcsrc/menu/nexuiz/dialog_multiplayer.c
deleted file mode 100644 (file)
index b3113ba..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizMultiplayerDialog) EXTENDS(NexuizDialog)
-       METHOD(NexuizMultiplayerDialog, fill, void(entity))
-       ATTRIB(NexuizMultiplayerDialog, title, string, "Multiplayer")
-       ATTRIB(NexuizMultiplayerDialog, color, vector, SKINCOLOR_DIALOG_MULTIPLAYER)
-       ATTRIB(NexuizMultiplayerDialog, intendedWidth, float, 0.96)
-       ATTRIB(NexuizMultiplayerDialog, rows, float, 24)
-       ATTRIB(NexuizMultiplayerDialog, columns, float, 6)
-ENDCLASS(NexuizMultiplayerDialog)
-#endif
-
-#ifdef IMPLEMENTATION
-void fillNexuizMultiplayerDialog(entity me)
-{
-       entity mc, e;
-       mc = makeNexuizTabController(me.rows - 2);
-       me.TR(me);
-               me.TD(me, 1, 1, e = mc.makeTabButton(mc, "Servers",  makeNexuizServerListTab()));
-                       setDependentStringNotEqual(e, "_cl_name", "Player");
-               me.TD(me, 1, 1, e = mc.makeTabButton(mc, "Create",  makeNexuizServerCreateTab()));
-                       setDependentStringNotEqual(e, "_cl_name", "Player");
-               me.TD(me, 1, 1, mc.makeTabButton(mc, "Demos",   makeNexuizDemoBrowserTab()));
-               me.TD(me, 1, 1, e = mc.makeTabButton(mc, "Player Setup",  makeNexuizPlayerSettingsTab()));
-                       if(cvar_string("_cl_name") == "Player")
-                               e.onClick(e, e.onClickEntity); // lol animation
-
-       me.TR(me);
-       me.TR(me);
-               me.TD(me, me.rows - 2, me.columns, mc);
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/dialog_multiplayer_create.c b/qcsrc/menu/nexuiz/dialog_multiplayer_create.c
deleted file mode 100644 (file)
index 3276d45..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizServerCreateTab) EXTENDS(NexuizTab)
-       METHOD(NexuizServerCreateTab, fill, void(entity))
-       METHOD(NexuizServerCreateTab, gameTypeChangeNotify, void(entity))
-       ATTRIB(NexuizServerCreateTab, title, string, "Create")
-       ATTRIB(NexuizServerCreateTab, intendedWidth, float, 0.9)
-       ATTRIB(NexuizServerCreateTab, rows, float, 22)
-       ATTRIB(NexuizServerCreateTab, columns, float, 6.5)
-
-       ATTRIB(NexuizServerCreateTab, mapListBox, entity, NULL)
-       ATTRIB(NexuizServerCreateTab, sliderFraglimit, entity, NULL)
-       ATTRIB(NexuizServerCreateTab, sliderTimelimit, entity, NULL)
-       ATTRIB(NexuizServerCreateTab, checkboxFraglimit, entity, NULL)
-       ATTRIB(NexuizServerCreateTab, checkboxFraglimitMapinfo, entity, NULL)
-ENDCLASS(NexuizServerCreateTab)
-entity makeNexuizServerCreateTab();
-#endif
-
-#ifdef IMPLEMENTATION
-
-entity makeNexuizServerCreateTab()
-{
-       entity me;
-       me = spawnNexuizServerCreateTab();
-       me.configureDialog(me);
-       return me;
-}
-
-void fillNexuizServerCreateTab(entity me)
-{
-       entity e, e0;
-       float n;
-
-       me.TR(me);
-               n = 6;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_dm", "DM"));
-                       e0 = e;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_lms", "LMS"));
-                       if(e.checked) e0 = NULL;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_arena", "Arena"));
-                       if(e.checked) e0 = NULL;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_runematch", "Runematch"));
-                       if(e.checked) e0 = NULL;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_race", "Race"));
-                       if(e.checked) e0 = NULL;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_cts", "Race CTS"));
-                       if(e.checked) e0 = NULL;
-       me.TR(me);
-               n = 8;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_tdm", "TDM"));
-                       if(e.checked) e0 = NULL;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_ctf", "CTF"));
-                       if(e.checked) e0 = NULL;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_ca", "CA"));
-                       if(e.checked) e0 = NULL;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_domination", "Domination"));
-                       if(e.checked) e0 = NULL;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_keyhunt", "Key Hunt"));
-                       if(e.checked) e0 = NULL;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_assault", "Assault"));
-                       if(e.checked) e0 = NULL;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_onslaught", "Onslaught"));
-                       if(e.checked) e0 = NULL;
-               me.TD(me, 1, me.columns / n, e = makeNexuizGametypeButton(1, "g_nexball", "Nexball"));
-                       if(e.checked) e0 = NULL;
-               if(e0)
-               {
-                       //print("NO CHECK\n");
-                       e0.setChecked(e0, 1);
-               }
-       me.TR(me);
-       me.TR(me);
-               me.mapListBox = makeNexuizMapList();
-               me.TD(me, 1, 3, e = makeNexuizTextLabel(0, "Map list:"));
-                       makeCallback(e, me.mapListBox, me.mapListBox.refilterCallback);
-       me.TR(me);
-               me.TD(me, me.rows - 7, 3, me.mapListBox);
-       me.gotoRC(me, me.rows - 3, 0);
-               me.TDempty(me, 0.5);
-               me.TD(me, 1, 1, e = makeNexuizButton("All", '0 0 0'));
-                       e.onClick = MapList_All;
-                       e.onClickEntity = me.mapListBox;
-               me.TD(me, 1, 1, e = makeNexuizButton("None", '0 0 0'));
-                       e.onClick = MapList_None;
-                       e.onClickEntity = me.mapListBox;
-               me.TDempty(me, 0.5);
-
-       me.gotoRC(me, 3, 3.5); me.setFirstColumn(me, me.currentColumn);
-               me.TD(me, 1, 3, e = makeNexuizTextLabel(0, "Match settings:"));
-       me.TR(me);
-               me.sliderTimelimit = makeNexuizSlider(1.0, 60.0, 0.5, "timelimit_override");
-               me.TD(me, 1, 1, e = makeNexuizSliderCheckBox(0, 1, me.sliderTimelimit, "Time limit:"));
-               me.TD(me, 1, 2, me.sliderTimelimit);
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2.8, e = makeNexuizSliderCheckBox(-1, 0, me.sliderTimelimit, "Use map specified default"));
-       me.TR(me);
-               me.sliderFraglimit = makeNexuizSlider(1.0, 2000.0, 5, "fraglimit_override");
-               me.TD(me, 1, 1, e = makeNexuizSliderCheckBox(0, 1, me.sliderFraglimit, "Point limit:"));
-                       me.checkboxFraglimit = e;
-               me.TD(me, 1, 2, me.sliderFraglimit);
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2.8, e = makeNexuizSliderCheckBox(-1, 0, me.sliderFraglimit, "Use map specified default"));
-                       me.checkboxFraglimitMapinfo = e;
-       me.TR(me);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Player slots:"));
-               me.TD(me, 1, 2, makeNexuizSlider(1, 32, 1, "menu_maxplayers"));
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Number of bots:"));
-               me.TD(me, 1, 2, makeNexuizSlider(0, 9, 1, "bot_number"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Bot skill:"));
-                       setDependent(e, "bot_number", 0, -1);
-               me.TD(me, 1, 2, e = makeNexuizTextSlider("skill"));
-                       e.addValue(e, "Botlike", "0");
-                       e.addValue(e, "Beginner", "1");
-                       e.addValue(e, "You will win", "2");
-                       e.addValue(e, "You can win", "3");
-                       e.addValue(e, "You might win", "4");
-                       e.addValue(e, "Advanced", "5");
-                       e.addValue(e, "Expert", "6");
-                       e.addValue(e, "Pro", "7");
-                       e.addValue(e, "Assassin", "8");
-                       e.addValue(e, "Unhuman", "9");
-                       e.addValue(e, "Godlike", "10");
-                       e.configureNexuizTextSliderValues(e);
-                       setDependent(e, "bot_number", 0, -1);
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Bot names:"));
-               me.TD(me, 1, 0.7, e = makeNexuizInputBox(1, "bot_prefix"));
-                       setDependent(e, "bot_number", 0, -1);
-               me.TD(me, 1, 0.6, e = makeNexuizTextLabel(0.5, "Shadow"));
-                       setDependent(e, "bot_number", 0, -1);
-               me.TD(me, 1, 0.7, e = makeNexuizInputBox(1, "bot_suffix"));
-                       setDependent(e, "bot_number", 0, -1);
-       me.TR(me);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Map voting:"));
-               me.TD(me, 1, 2, e = makeNexuizTextSlider("g_maplist_votable"));
-                       e.addValue(e, "No voting", "0");
-                       e.addValue(e, "2 choices", "2");
-                       e.addValue(e, "3 choices", "3");
-                       e.addValue(e, "4 choices", "4");
-                       e.addValue(e, "5 choices", "5");
-                       e.addValue(e, "6 choices", "6");
-                       e.addValue(e, "7 choices", "7");
-                       e.addValue(e, "8 choices", "8");
-                       e.addValue(e, "9 choices", "9");
-                       e.configureNexuizTextSliderValues(e);
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeNexuizCheckBoxEx(0.5, 0, "sv_vote_simple_majority_factor", "Simple majority wins vcall"));
-       me.TR(me);
-       me.TR(me);
-               me.TDempty(me, 0.5);
-               me.TD(me, 1, 2, e = makeNexuizButton("Advanced settings...", '0 0 0'));
-                       e.onClick = DialogOpenButton_Click;
-                       e.onClickEntity = main.advancedDialog;
-                       main.advancedDialog.refilterEntity = me.mapListBox;
-               me.TR(me);
-               me.TR(me);
-               me.TD(me, 1, 1, e = makeNexuizButton("Mutators...", '0 0 0'));
-                       e.onClick = DialogOpenButton_Click;
-                       e.onClickEntity = main.mutatorsDialog;
-                       main.mutatorsDialog.refilterEntity = me.mapListBox;
-               me.TD(me, 1, 2, e0 = makeNexuizTextLabel(0, string_null));
-                       e0.textEntity = main.mutatorsDialog;
-                       e0.allowCut = 1;
-
-       me.gotoRC(me, me.rows - 1, 0);
-               me.TD(me, 1, 2, e = makeNexuizModButton("Multiplayer_Create"));
-               me.TD(me, 1, me.columns - 2, e = makeNexuizButton("Start Multiplayer!", '0 0 0'));
-                       e.onClick = MapList_LoadMap;
-                       e.onClickEntity = me.mapListBox;
-                       me.mapListBox.startButton = e;
-
-       me.gameTypeChangeNotify(me);
-}
-
-void GameType_ConfigureSliders(entity e, entity l, entity l2, string pLabel, float pMin, float pMax, float pStep, string pCvar)
-{
-       if(pCvar == "")
-       {
-               e.configureNexuizSlider(e, pMin, pMax, pStep, string_null);
-               l.setText(l, pLabel);
-               e.disabled = l.disabled = l2.disabled = TRUE;
-       }
-       else
-       {
-               e.configureNexuizSlider(e, pMin, pMax, pStep, pCvar);
-               l.setText(l, pLabel);
-               e.disabled = l.disabled = l2.disabled = FALSE;
-       }
-}
-
-void gameTypeChangeNotifyNexuizServerCreateTab(entity me)
-{
-       // tell the map list to update
-       float gt;
-       entity e, l, l2;
-       gt = MapInfo_CurrentGametype();
-       e = me.sliderFraglimit;
-       l = me.checkboxFraglimit;
-       l2 = me.checkboxFraglimitMapinfo;
-       switch(gt)
-       {
-               case MAPINFO_TYPE_CTF:        GameType_ConfigureSliders(e, l, l2, "Capture limit:",   1,   20, 1, "capturelimit_override");     break;
-               case MAPINFO_TYPE_DOMINATION: GameType_ConfigureSliders(e, l, l2, "Point limit:",    50,  500, 10, "g_domination_point_limit"); break;
-               case MAPINFO_TYPE_KEYHUNT:    GameType_ConfigureSliders(e, l, l2, "Point limit:",   200, 1500, 50, "g_keyhunt_point_limit");    break;
-               case MAPINFO_TYPE_RUNEMATCH:  GameType_ConfigureSliders(e, l, l2, "Point limit:",    50,  500, 10, "g_runematch_point_limit");  break;
-               case MAPINFO_TYPE_LMS:        GameType_ConfigureSliders(e, l, l2, "Lives:",           3,   50,  1, "g_lms_lives_override");     break;
-               case MAPINFO_TYPE_RACE:       GameType_ConfigureSliders(e, l, l2, "Laps:",            1,   25,  1, "g_race_laps_limit");        break;
-               case MAPINFO_TYPE_NEXBALL:    GameType_ConfigureSliders(e, l, l2, "Goals:",           1,   50,  1, "g_nexball_goallimit");      break;
-               case MAPINFO_TYPE_ASSAULT:    GameType_ConfigureSliders(e, l, l2, "Point limit:",    50,  500, 10, "");                         break;
-               case MAPINFO_TYPE_ONSLAUGHT:  GameType_ConfigureSliders(e, l, l2, "Point limit:",    50,  500, 10, "");                         break;
-               case MAPINFO_TYPE_CTS:        GameType_ConfigureSliders(e, l, l2, "Point limit:",    50,  500, 10, "");                         break;
-               default:                      GameType_ConfigureSliders(e, l, l2, "Frag limit:",      5,  100,  5, "fraglimit_override");       break;
-       }
-       me.mapListBox.refilter(me.mapListBox);
-}
-
-#endif
diff --git a/qcsrc/menu/nexuiz/dialog_multiplayer_create_advanced.c b/qcsrc/menu/nexuiz/dialog_multiplayer_create_advanced.c
deleted file mode 100644 (file)
index c454a8c..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizAdvancedDialog) EXTENDS(NexuizDialog)
-       METHOD(NexuizAdvancedDialog, fill, void(entity))
-       METHOD(NexuizAdvancedDialog, showNotify, void(entity))
-       METHOD(NexuizAdvancedDialog, close, void(entity))
-       ATTRIB(NexuizAdvancedDialog, title, string, "Advanced server settings")
-       ATTRIB(NexuizAdvancedDialog, color, vector, SKINCOLOR_DIALOG_ADVANCED)
-       ATTRIB(NexuizAdvancedDialog, intendedWidth, float, 0.5)
-       ATTRIB(NexuizAdvancedDialog, rows, float, 14)
-       ATTRIB(NexuizAdvancedDialog, columns, float, 3)
-       ATTRIB(NexuizAdvancedDialog, refilterEntity, entity, NULL)
-ENDCLASS(NexuizAdvancedDialog)
-#endif
-
-#ifdef IMPLEMENTATION
-void showNotifyNexuizAdvancedDialog(entity me)
-{
-       loadAllCvars(me);
-}
-
-void fillNexuizAdvancedDialog(entity me)
-{
-       entity e;
-       me.TR(me);
-               me.TD(me, 1, 1.2, makeNexuizTextLabel(0, "Game settings:"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 1.2, e = makeNexuizCheckBox(0, "sv_spectate", "Allow spectating"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 1.2, e = makeNexuizTextLabel(0, "Spawn shield:"));
-               me.TD(me, 1, 1.7, e = makeNexuizSlider(0, 15, 0.5, "g_spawnshieldtime"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 1.2, e = makeNexuizTextLabel(0, "Start delay:"));
-               me.TD(me, 1, 1.7, e = makeNexuizSlider(0, 30, 0.5, "g_start_delay"));
-       me.TR(me);
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 1.2, e = makeNexuizTextLabel(0, "Game speed:"));
-               me.TD(me, 1, 1.7, e = makeNexuizSlider(0.5, 2.0, 0.1, "slowmo"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 1.2, e = makeNexuizCheckBoxEx(2, 0, "g_antilag", "AntiLag"));
-       me.TR(me);
-       me.TR(me);
-               me.TD(me, 1, 1.2, makeNexuizTextLabel(0, "Teamplay settings:"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 1.2, e = makeNexuizTextLabel(0, "Friendly fire scale:"));
-               me.TD(me, 1, 1.7, e = makeNexuizSlider(0, 1.0, 0.05, "g_friendlyfire"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 1.2, e = makeNexuizTextLabel(0, "Friendly fire penalty:"));
-               me.TD(me, 1, 1.7, e = makeNexuizSlider(0, 1.0, 0.05, "g_mirrordamage"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 1.2, e = makeNexuizTextLabel(0, "Teams:"));
-               me.TD(me, 1, 1.7, e = makeNexuizTextSlider("g_tdm_teams_override g_domination_teams_override g_keyhunt_teams_override"));
-                       e.addValue(e, "Default", "0");
-                       e.addValue(e, "2 teams", "2");
-                       e.addValue(e, "3 teams", "3");
-                       e.addValue(e, "4 teams", "4");
-                       e.configureNexuizTextSliderValues(e);
-
-       me.gotoRC(me, me.rows - 1, 0);
-               me.TD(me, 1, me.columns, e = makeNexuizButton("OK", '0 0 0'));
-                       e.onClick = Dialog_Close;
-                       e.onClickEntity = me;
-}
-
-void closeNexuizAdvancedDialog(entity me)
-{
-       if(me.refilterEntity)
-               me.refilterEntity.refilter(me.refilterEntity);
-       closeDialog(me);
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/dialog_multiplayer_create_mapinfo.c b/qcsrc/menu/nexuiz/dialog_multiplayer_create_mapinfo.c
deleted file mode 100644 (file)
index b6a19fb..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizMapInfoDialog) EXTENDS(NexuizDialog)
-       METHOD(NexuizMapInfoDialog, fill, void(entity))
-       METHOD(NexuizMapInfoDialog, loadMapInfo, void(entity, float, entity))
-       ATTRIB(NexuizMapInfoDialog, title, string, "Map Information")
-       ATTRIB(NexuizMapInfoDialog, color, vector, SKINCOLOR_DIALOG_MAPINFO)
-       ATTRIB(NexuizMapInfoDialog, intendedWidth, float, 0.85)
-       ATTRIB(NexuizMapInfoDialog, rows, float, 9)
-       ATTRIB(NexuizMapInfoDialog, columns, float, 10)
-
-       ATTRIB(NexuizMapInfoDialog, previewImage, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, titleLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, authorLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, descriptionLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, featuresLabel, entity, NULL)
-
-       ATTRIB(NexuizMapInfoDialog, typeDeathmatchLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, typeTDMLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, typeLMSLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, typeArenaLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, typeRuneLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, typeDominationLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, typeKeyHuntLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, typeCTFLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, typeCALabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, typeAssaultLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, typeOnslaughtLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, typeRaceLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, typeCTSLabel, entity, NULL)
-       ATTRIB(NexuizMapInfoDialog, typeNexballLabel, entity, NULL)
-
-       ATTRIB(NexuizMapInfoDialog, currentMapIndex, float, 0)
-       ATTRIB(NexuizMapInfoDialog, currentMapBSPName, string, string_null)
-       ATTRIB(NexuizMapInfoDialog, currentMapTitle, string, string_null)
-       ATTRIB(NexuizMapInfoDialog, currentMapAuthor, string, string_null)
-       ATTRIB(NexuizMapInfoDialog, currentMapDescription, string, string_null)
-       ATTRIB(NexuizMapInfoDialog, currentMapPreviewImage, string, string_null)
-       ATTRIB(NexuizMapInfoDialog, currentMapFeaturesText, string, string_null)
-ENDCLASS(NexuizMapInfoDialog)
-#endif
-
-#ifdef IMPLEMENTATION
-void loadMapInfoNexuizMapInfoDialog(entity me, float i, entity mlb)
-{
-       me.currentMapIndex = i;
-       me.startButton.onClickEntity = mlb;
-       MapInfo_Get_ByID(i);
-
-       if(me.currentMapBSPName)
-       {
-               strunzone(me.currentMapBSPName);
-               strunzone(me.currentMapTitle);
-               strunzone(me.currentMapAuthor);
-               strunzone(me.currentMapDescription);
-               strunzone(me.currentMapPreviewImage);
-               strunzone(me.currentMapFeaturesText);
-       }
-       me.currentMapBSPName = strzone(MapInfo_Map_bspname);
-       me.currentMapTitle = strzone(MapInfo_Map_title);
-       me.currentMapAuthor = strzone(MapInfo_Map_author);
-       me.currentMapDescription = strzone(MapInfo_Map_description);
-       me.currentMapFeaturesText = strzone((MapInfo_Map_supportedFeatures & MAPINFO_FEATURE_WEAPONS) ? "Full item placement" : "MinstaGib only");
-       me.currentMapPreviewImage = strzone(strcat("/maps/", MapInfo_Map_bspname));
-
-       me.frame.setText(me.frame, me.currentMapBSPName);
-       me.titleLabel.setText(me.titleLabel, me.currentMapTitle);
-       me.authorLabel.setText(me.authorLabel, me.currentMapAuthor);
-       me.descriptionLabel.setText(me.descriptionLabel, me.currentMapDescription);
-       me.featuresLabel.setText(me.featuresLabel, me.currentMapFeaturesText);
-       me.previewImage.src = me.currentMapPreviewImage;
-
-       me.typeDeathmatchLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_DEATHMATCH);
-       me.typeTDMLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_TEAM_DEATHMATCH);
-       me.typeLMSLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_LMS);
-       me.typeArenaLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ARENA);
-       me.typeDominationLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_DOMINATION);
-       me.typeRuneLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RUNEMATCH);
-       me.typeKeyHuntLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_KEYHUNT);
-       me.typeCTFLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTF);
-       me.typeCALabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CA);
-       me.typeAssaultLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ASSAULT);
-       me.typeOnslaughtLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ONSLAUGHT);
-       me.typeRaceLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RACE);
-       me.typeCTSLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTS);
-       me.typeNexballLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_NEXBALL);
-
-       MapInfo_ClearTemps();
-}
-void fillNexuizMapInfoDialog(entity me)
-{
-       entity e;
-       float w, wgt;
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, me.rows - 2, 3, e = makeNexuizImage(string_null, 4.0/3.0));
-               me.previewImage = e;
-       me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
-       w = me.columns - me.currentColumn;
-               me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Title:"));
-               me.TD(me, 1, w-1, e = makeNexuizTextLabel(0, ""));
-                       e.colorL = SKINCOLOR_MAPLIST_TITLE;
-                       e.allowCut = 1;
-                       me.titleLabel = e;
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Author:"));
-               me.TD(me, 1, w-1, e = makeNexuizTextLabel(0, ""));
-                       e.colorL = SKINCOLOR_MAPLIST_AUTHOR;
-                       e.allowCut = 1;
-                       me.authorLabel = e;
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeNexuizTextLabel(0, "Features:"));
-               me.TD(me, 1, w-1, e = makeNexuizTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.featuresLabel = e;
-       me.TR(me);
-               me.TD(me, 1, w, e = makeNexuizTextLabel(0, "Game types:"));
-       me.TR(me); wgt = (w-0.2)/5;
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "DM"));
-                       me.typeDeathmatchLabel = e;
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "TDM"));
-                       me.typeTDMLabel = e;
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "LMS"));
-                       me.typeLMSLabel = e;
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "Arena"));
-                       me.typeArenaLabel = e;
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "Rune"));
-                       me.typeRuneLabel = e;
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "Domination"));
-                       me.typeDominationLabel = e;
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "Key Hunt"));
-                       me.typeKeyHuntLabel = e;
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "CTF"));
-                       me.typeCTFLabel = e;
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "CA"));
-                       me.typeCALabel = e;
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "Assault"));
-                       me.typeAssaultLabel = e;
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "Onslaught"));
-                       me.typeOnslaughtLabel = e;
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "Race"));
-                       me.typeRaceLabel = e;
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "CTS"));
-                       me.typeCTSLabel = e;
-               me.TD(me, 1, wgt, e = makeNexuizTextLabel(0, "Nexball"));
-                       me.typeNexballLabel = e;
-
-       me.gotoRC(me, me.rows - 2, 0);
-               me.TD(me, 1, me.columns, e = makeNexuizTextLabel(0.5, ""));
-                       e.allowCut = 1;
-                       me.descriptionLabel = e;
-
-       me.gotoRC(me, me.rows - 1, 0);
-               me.TDempty(me, 0.5);
-
-               me.TD(me, 1, me.columns - 5.5, e = makeNexuizButton("Close", '0 0 0'));
-                       e.onClick = Dialog_Close;
-                       e.onClickEntity = me;
-               me.TD(me, 1, me.columns - 5.5, me.startButton = e = makeNexuizButton("Play", '0 0 0'));
-                       me.startButton.onClick = MapList_LoadMap;
-                       me.startButton.onClickEntity = NULL; // filled later
-               me.TDempty(me, 0.5);
-}
-#endif
diff --git a/qcsrc/menu/nexuiz/dialog_multiplayer_create_mutators.c b/qcsrc/menu/nexuiz/dialog_multiplayer_create_mutators.c
deleted file mode 100644 (file)
index fddc7cd..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-#ifdef INTERFACE
-CLASS(NexuizMutatorsDialog) EXTENDS(NexuizDialog)
-       METHOD(NexuizMutatorsDialog, toString, string(entity))
-       METHOD(NexuizMutatorsDialog, fill, void(entity))
-       METHOD(NexuizMutatorsDialog, showNotify, void(entity))
-       METHOD(NexuizMutatorsDialog, close, void(entity))
-       ATTRIB(NexuizMutatorsDialog, title, string, "Mutators")
-       ATTRIB(NexuizMutatorsDialog, color, vector, SKINCOLOR_DIALOG_MUTATORS)
-       ATTRIB(NexuizMutatorsDialog, intendedWidth, float, 0.9)
-       ATTRIB(NexuizMutatorsDialog, rows, float, 18)
-       ATTRIB(NexuizMutatorsDialog, columns, float, 6)
-       ATTRIB(NexuizMutatorsDialog, refilterEntity, entity, NULL)
-ENDCLASS(NexuizMutatorsDialog)
-#endif
-
-#ifdef IMPLEMENTATION
-void showNotifyNexuizMutatorsDialog(entity me)
-{
-       loadAllCvars(me);
-}
-
-string weaponarenastring;
-string weaponarenastring_cvar;
-string WeaponArenaString()
-{
-       string s;
-       float n, i, j;
-       entity e;
-       s = cvar_string("g_weaponarena");
-       if(s == "0")
-               return "";
-       if(s == "all")
-               return "All Weapons Arena";
-       if(s == "most")
-               return "Most Weapons Arena";
-       if(s == weaponarenastring_cvar)
-               return weaponarenastring;
-       if(weaponarenastring)
-               strunzone(weaponarenastring);
-       if(weaponarenastring_cvar)
-               strunzone(weaponarenastring_cvar);
-
-       weaponarenastring_cvar = strzone(s);
-
-       n = tokenize_console(s);
-       s = "";
-       for(i = 0; i < n; ++i)
-       {
-               for(j = WEP_FIRST; j <= WEP_LAST; ++j)
-               {
-                       e = get_weaponinfo(j);
-                       if(argv(i) == e.netname)
-                               s = strcat(s, " & ", e.message);
-               }
-       }
-       s = strcat(substring(s, 3, strlen(s) - 3), " Arena");
-       
-       weaponarenastring = strzone(s);
-
-       return weaponarenastring;
-}
-
-string toStringNexuizMutatorsDialog(entity me)
-{
-       string s;
-       s = "";
-       if(cvar("g_minstagib"))
-               s = strcat(s, ", MinstaGib");
-       if(cvar("g_nixnex"))
-               s = strcat(s, ", NixNex");
-       if(cvar_string("g_weaponarena") != "0")
-               s = strcat(s, ", ", WeaponArenaString());
-       if(cvar("g_start_weapon_laser") == 0)
-               s = strcat(s, ", No start weapons");
-       if(cvar("sv_gravity") < 800)
-               s = strcat(s, ", Low gravity");
-       if(cvar("g_cloaked"))
-               s = strcat(s, ", Cloaked");
-       if(cvar("g_footsteps"))
-               s = strcat(s, ", Steps");
-       if(cvar("g_grappling_hook"))
-               s = strcat(s, ", Hook");
-       if(cvar("g_laserguided_missile"))
-               s = strcat(s, ", LG missiles");
-       if(cvar("g_midair"))
-               s = strcat(s, ", Midair");
-       if(cvar("g_vampire"))
-               s = strcat(s, ", Vampire");
-       if(cvar("g_pinata"))
-               s = strcat(s, ", Pinata");
-       if(cvar("g_weapon_stay"))
-               s = strcat(s, ", Weapons stay");
-       if(cvar("g_bloodloss") > 0)
-               s = strcat(s, ", Bloodloss");
-       if(cvar("g_jetpack"))
-               s = strcat(s, ", Jet pack");
-       if(s == "")
-               return "None";
-       else
-               return substring(s, 2, strlen(s) - 2);
-}
-
-
-
-// WARNING: dirty hack. TODO clean this up by putting this behaviour in extra classes.
-void loadCvarsLaserWeaponArenaWeaponButton(entity me)
-{
-       tokenize_console(cvar_string("g_weaponarena"));
-       me.checked = (argv(0) == me.cvarValue);
-}
-
-void saveCvarsLaserWeaponArenaWeaponButton(entity me)
-{
-       string suffix;
-
-       suffix = "";
-       if(me.cvarValue != "laser" && me.cvarValue != "most")
-               if(cvar("menu_weaponarena_with_laser"))
-                       suffix = " laser";
-       if(me.checked)
-               cvar_set("g_weaponarena", strcat(me.cvarValue, suffix));
-       else
-               cvar_set("g_weaponarena", me.cvarOffValue);
-}
-
-.void(entity) draw_weaponarena;
-.void(entity) saveCvars_weaponarena;
-void saveCvarsLaserWeaponArenaLaserButton(entity me)
-{
-       // run the old function
-       me.saveCvars_weaponarena(me);
-
-       me.disabled = ((cvar_string("g_weaponarena") == "0") || (cvar_string("g_weaponarena") == "laser") || (cvar_string("g_weaponarena") == "most"));
-
-       if not(me.disabled)
-       {
-               // check for the laser suffix
-               string s;
-               s = cvar_string("g_weaponarena");
-               if(me.checked && substring(s, strlen(s) - 6, 6) != " laser")
-                       s = strcat(s, " laser");
-               else if(!me.checked && substring(s, strlen(s) - 6, 6) == " laser")
-                       s = substring(s, 0, strlen(s) - 6);
-               cvar_set("g_weaponarena", s);
-       }
-}
-
-void preDrawLaserWeaponArenaLaserButton(entity me)
-{
-       me.disabled = ((cvar_string("g_weaponarena") == "0") || (cvar_string("g_weaponarena") == "laser") || (cvar_string("g_weaponarena") == "most"));
-       // run the old function
-       me.draw_weaponarena(me);
-}
-// WARNING: end of dirty hack. Do not try this at home.
-
-
-
-void fillNexuizMutatorsDialog(entity me)
-{
-       entity e, s, w;
-       float i, j;
-       string str, hstr;
-       me.TR(me);
-               me.TD(me, 1, 2, makeNexuizTextLabel(0, "Gameplay mutators:"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_cloaked", "Cloaked"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_footsteps", "Footsteps"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_midair", "Midair"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_vampire", "Vampire"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               s = makeNexuizSlider(10, 50, 1, "g_bloodloss");
-               me.TD(me, 1, 2, e = makeNexuizSliderCheckBox(0, 1, s, "Blood loss"));
-       me.TR(me);
-               me.TDempty(me, 0.4);
-               me.TD(me, 1, 1.8, s);
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               s = makeNexuizSlider(80, 400, 8, "sv_gravity");
-                       s.valueDigits = 0;
-                       s.valueDisplayMultiplier = 0.125; // show gravity in percent
-               me.TD(me, 1, 2, e = makeNexuizSliderCheckBox(800, 1, s, "Low gravity"));
-                       e.savedValue = 200; // good on silvercity
-       me.TR(me);
-               me.TDempty(me, 0.4);
-               me.TD(me, 1, 1.8, s);
-       me.TR(me);
-       me.TR(me);
-               me.TD(me, 1, 2, makeNexuizTextLabel(0, "Weapon & item mutators:"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_grappling_hook", "Grappling hook"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_jetpack", "Jet pack"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_laserguided_missile", "Laser guided missiles"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2, e = makeNexuizCheckBox(0, "g_pinata", "Pinata"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2, e = makeNexuizCheckBoxEx(2, 0, "g_weapon_stay", "Weapons stay"));
-       me.TR(me);
-
-       me.gotoRC(me, 0, 2); me.setFirstColumn(me, me.currentColumn);<