]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge remote branch 'origin/master' into terencehill/hud_config_fixes
authorSamual <samual@xonotic.org>
Thu, 26 Jan 2012 23:19:33 +0000 (18:19 -0500)
committerSamual <samual@xonotic.org>
Thu, 26 Jan 2012 23:19:33 +0000 (18:19 -0500)
181 files changed:
_hud_common.cfg
balance25.cfg
balanceFruitieX.cfg
balanceXPM.cfg
balanceXonotic.cfg
check-translations.sh
commands.cfg
crosshairs.cfg [new file with mode: 0644]
csprogs.dat.de.po
csprogs.dat.fr.po [new file with mode: 0644]
csprogs.dat.pot
defaultXonotic.cfg
demos/the-big-keybench.dem
effectinfo.txt
effects-high.cfg
effects-low.cfg
effects-med.cfg
effects-normal.cfg
effects-omg.cfg
effects-ultimate.cfg
effects-ultra.cfg
gfx/menu/luminos/gametype_arena.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_as.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_ca.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_ctf.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_cts.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_dm.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_dom.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_duel.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_freezetag.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_keepaway.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_kh.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_lms.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_nexball.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_ons.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_rc.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_rune.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_tdm.tga [new file with mode: 0644]
gfx/menu/luminos/skinvalues.txt
gfx/menu/wickedx/gametype_arena.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_as.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_ca.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_ctf.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_cts.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_dm.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_dom.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_duel.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_freezetag.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_keepaway.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_kh.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_lms.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_nexball.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_ons.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_rc.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_rune.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_tdm.tga [new file with mode: 0644]
gfx/menu/wickedx/skinvalues.txt
gfx/menu/xaw/gametype_arena.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_as.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_ca.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_ctf.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_cts.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_dm.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_dom.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_duel.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_freezetag.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_keepaway.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_kh.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_lms.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_nexball.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_ons.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_rc.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_rune.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_tdm.tga [new file with mode: 0644]
gfx/menu/xaw/skinvalues.txt
keybinds.txt
keybinds.txt.de
keybinds.txt.es
keybinds.txt.fr
keybinds.txt.hu
keybinds.txt.it
keybinds.txt.ru
keybinds.txt.uk
menu.dat.de.po
menu.dat.fr.po
menu.dat.pot
models/null.md3 [deleted file]
qcsrc/Makefile
qcsrc/client/Defs.qc
qcsrc/client/Main.qc
qcsrc/client/View.qc
qcsrc/client/autocvars.qh
qcsrc/client/casings.qc
qcsrc/client/damage.qc
qcsrc/client/damage.qh [new file with mode: 0644]
qcsrc/client/gibs.qc
qcsrc/client/progs.src
qcsrc/common/mapinfo.qh
qcsrc/common/util.qc
qcsrc/common/util.qh
qcsrc/dpdefs/csprogsdefs.qc
qcsrc/dpdefs/menudefs.qc
qcsrc/menu/classes.c
qcsrc/menu/draw.qc
qcsrc/menu/draw.qh
qcsrc/menu/item.c
qcsrc/menu/item/borderimage.c
qcsrc/menu/item/button.c
qcsrc/menu/item/checkbox.c
qcsrc/menu/item/container.c
qcsrc/menu/item/gecko.c
qcsrc/menu/item/image.c
qcsrc/menu/item/inputbox.c
qcsrc/menu/item/label.c
qcsrc/menu/item/listbox.c
qcsrc/menu/menu.qc
qcsrc/menu/skin-customizables.inc
qcsrc/menu/xonotic/colorpicker_string.c
qcsrc/menu/xonotic/crosshairbutton.c
qcsrc/menu/xonotic/demolist.c
qcsrc/menu/xonotic/dialog_firstrun.c
qcsrc/menu/xonotic/dialog_multiplayer.c
qcsrc/menu/xonotic/dialog_multiplayer_create.c
qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c
qcsrc/menu/xonotic/dialog_multiplayer_demo.c
qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c
qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c [deleted file]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c
qcsrc/menu/xonotic/dialog_settings.c
qcsrc/menu/xonotic/dialog_settings_audio.c
qcsrc/menu/xonotic/dialog_settings_effects.c
qcsrc/menu/xonotic/dialog_settings_input.c
qcsrc/menu/xonotic/dialog_settings_misc.c
qcsrc/menu/xonotic/dialog_settings_misc_cvars.c
qcsrc/menu/xonotic/dialog_settings_network.c [deleted file]
qcsrc/menu/xonotic/dialog_settings_user.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_settings_video.c
qcsrc/menu/xonotic/dialog_singleplayer.c
qcsrc/menu/xonotic/gametypelist.c
qcsrc/menu/xonotic/mainwindow.c
qcsrc/menu/xonotic/maplist.c
qcsrc/menu/xonotic/playerlist.c
qcsrc/menu/xonotic/util.qc
qcsrc/menu/xonotic/util.qh
qcsrc/menu/xonotic/weaponslist.c
qcsrc/server/autocvars.qh
qcsrc/server/bot/scripting.qc
qcsrc/server/cheats.qc
qcsrc/server/cl_client.qc
qcsrc/server/cl_player.qc
qcsrc/server/cl_weapons.qc
qcsrc/server/g_damage.qc
qcsrc/server/g_violence.qc
qcsrc/server/miscfunctions.qc
qcsrc/server/mutators/sandbox.qc
qcsrc/server/portals.qc
qcsrc/server/portals.qh
qcsrc/server/t_items.qc
qcsrc/server/t_jumppads.qc
qcsrc/server/vehicles/raptor.qc
qcsrc/server/w_common.qc
qcsrc/server/w_fireball.qc
qcsrc/server/w_minstanex.qc
qcsrc/server/w_nex.qc
qcsrc/server/w_porto.qc
qcsrc/server/w_seeker.qc
tooltips.db
tooltips.db.de
tooltips.db.es
tooltips.db.fr
tooltips.db.hu
tooltips.db.it
tooltips.db.ru
tooltips.db.uk
xonotic-credits.txt

index c46bbee713bf099c6bf74b45e474ee7baea0a559..f246ab7bc014a29188a3341232813a9e9631f7ae 100644 (file)
@@ -1,7 +1,7 @@
 // hud variables
 set _hud_configure 0 "1 = configure the HUD"
 seta hud_configure_teamcolorforced 0 "1 = force display of team colors in configure mode"
-seta hud_configure_checkcollisions 1 "check for collisions against other panels when in hud configure mode"
+seta hud_configure_checkcollisions 0 "check for collisions against other panels when in hud configure mode"
 seta hud_configure_bg_minalpha 0.25 "minimum panel background alpha when in hud configure mode"
 seta hud_configure_grid_alpha 0.15 "alpha for visible grid when in configure mode"
 
index f65ee473fef5c9dc6beb3b5492d1c261fd8536aa..420020622c5c7b3f124370841597d0b4cf800bec 100644 (file)
@@ -627,6 +627,11 @@ set g_balance_porto_primary_refire 1.5
 set g_balance_porto_primary_animtime 0.3
 set g_balance_porto_primary_speed 2000
 set g_balance_porto_primary_lifetime 30
+set g_balance_porto_secondary 0
+set g_balance_porto_secondary_refire 1.5
+set g_balance_porto_secondary_animtime 0.3
+set g_balance_porto_secondary_speed 2000
+set g_balance_porto_secondary_lifetime 30
 set g_balance_portal_health 200 // these get recharged whenever the portal is used
 set g_balance_portal_lifetime 15 // these get recharged whenever the portal is used
 // }}}
@@ -736,7 +741,6 @@ set g_balance_tuba_force 40
 set g_balance_tuba_pitchstep 6
 // }}}
 // {{{ fireball
-set g_balance_fireball_primary_ammo 40
 set g_balance_fireball_primary_animtime 0.15
 set g_balance_fireball_primary_bfgdamage 100
 set g_balance_fireball_primary_bfgforce 0
@@ -756,7 +760,6 @@ set g_balance_fireball_primary_refire 5
 set g_balance_fireball_primary_refire2 0
 set g_balance_fireball_primary_speed 650
 set g_balance_fireball_primary_spread 0
-set g_balance_fireball_secondary_ammo 5
 set g_balance_fireball_secondary_animtime 0.3
 set g_balance_fireball_secondary_damage 40
 set g_balance_fireball_secondary_damageforcescale 4
@@ -772,8 +775,6 @@ set g_balance_fireball_secondary_speed 900
 set g_balance_fireball_secondary_speed_up 100
 set g_balance_fireball_secondary_speed_z 0
 set g_balance_fireball_secondary_spread 0
-set g_balance_fireball_reload_ammo 0 //default: 60
-set g_balance_fireball_reload_time 2
 // }}}
 // {{{ seeker
 set g_balance_seeker_type 0 // 0 = old seeker, 1 = new seeker. THIS IS A TEMPORARY CVAR FOR TESTING, will be removed later.
index 9777b904d78438b66489804962e25366be936354..221f725a5284cb855e060f3c863f9e8c8c1250a2 100644 (file)
@@ -627,6 +627,11 @@ set g_balance_porto_primary_refire 1.5
 set g_balance_porto_primary_animtime 0.2
 set g_balance_porto_primary_speed 2000
 set g_balance_porto_primary_lifetime 5
+set g_balance_porto_secondary 0
+set g_balance_porto_secondary_refire 1.5
+set g_balance_porto_secondary_animtime 0.2
+set g_balance_porto_secondary_speed 2000
+set g_balance_porto_secondary_lifetime 5
 set g_balance_portal_health 200 // these get recharged whenever the portal is used
 set g_balance_portal_lifetime 15 // these get recharged whenever the portal is used
 // }}}
@@ -736,7 +741,6 @@ set g_balance_tuba_force 40
 set g_balance_tuba_pitchstep 6
 // }}}
 // {{{ fireball
-set g_balance_fireball_primary_ammo 40
 set g_balance_fireball_primary_animtime 0.2
 set g_balance_fireball_primary_bfgdamage 100
 set g_balance_fireball_primary_bfgforce 0
@@ -756,7 +760,6 @@ set g_balance_fireball_primary_refire 5
 set g_balance_fireball_primary_refire2 0
 set g_balance_fireball_primary_speed 650
 set g_balance_fireball_primary_spread 0
-set g_balance_fireball_secondary_ammo 5
 set g_balance_fireball_secondary_animtime 0.2
 set g_balance_fireball_secondary_damage 40
 set g_balance_fireball_secondary_damageforcescale 4
@@ -772,8 +775,6 @@ set g_balance_fireball_secondary_speed 900
 set g_balance_fireball_secondary_speed_up 100
 set g_balance_fireball_secondary_speed_z 0
 set g_balance_fireball_secondary_spread 0
-set g_balance_fireball_reload_ammo 0 //default: 60
-set g_balance_fireball_reload_time 2
 // }}}
 // {{{ seeker
 set g_balance_seeker_type 0 // 0 = old seeker, 1 = new seeker. THIS IS A TEMPORARY CVAR FOR TESTING, will be removed later.
index a15f060d0f269e15068c836360fb39b888181480..a358d9ea68dc24431ff860efba0faf1a6c557b49 100644 (file)
@@ -627,6 +627,11 @@ set g_balance_porto_primary_refire 1.5
 set g_balance_porto_primary_animtime 0.3
 set g_balance_porto_primary_speed 1000
 set g_balance_porto_primary_lifetime 5
+set g_balance_porto_secondary 0
+set g_balance_porto_secondary_refire 1.5
+set g_balance_porto_secondary_animtime 0.3
+set g_balance_porto_secondary_speed 1000
+set g_balance_porto_secondary_lifetime 5
 set g_balance_portal_health 200 // these get recharged whenever the portal is used
 set g_balance_portal_lifetime 15 // these get recharged whenever the portal is used
 // }}}
@@ -736,7 +741,6 @@ set g_balance_tuba_force 40
 set g_balance_tuba_pitchstep 6
 // }}}
 // {{{ fireball // this is a superweapon -- lets make it behave as one. 
-set g_balance_fireball_primary_ammo 20
 set g_balance_fireball_primary_animtime 0.2
 set g_balance_fireball_primary_bfgdamage 100
 set g_balance_fireball_primary_bfgforce 0
@@ -756,7 +760,6 @@ set g_balance_fireball_primary_refire 2
 set g_balance_fireball_primary_refire2 0
 set g_balance_fireball_primary_speed 1200
 set g_balance_fireball_primary_spread 0
-set g_balance_fireball_secondary_ammo 5
 set g_balance_fireball_secondary_animtime 0.3
 set g_balance_fireball_secondary_damage 40
 set g_balance_fireball_secondary_damageforcescale 4
@@ -772,8 +775,6 @@ set g_balance_fireball_secondary_speed 900
 set g_balance_fireball_secondary_speed_up 100
 set g_balance_fireball_secondary_speed_z 0
 set g_balance_fireball_secondary_spread 0
-set g_balance_fireball_reload_ammo 0 //default: 100
-set g_balance_fireball_reload_time 2
 // }}}
 // {{{ seeker
 set g_balance_seeker_type 1 // 0 = old seeker, 1 = new seeker. THIS IS A TEMPORARY CVAR FOR TESTING, will be removed later.
index d42284a3066230bdd0658a16e6cdc48eeb45e3a2..b351d22c6000a85d48781bec30b09ce313fe037d 100644 (file)
@@ -627,6 +627,11 @@ set g_balance_porto_primary_refire 1.5
 set g_balance_porto_primary_animtime 0.3
 set g_balance_porto_primary_speed 1000
 set g_balance_porto_primary_lifetime 5
+set g_balance_porto_secondary 1
+set g_balance_porto_secondary_refire 1.5
+set g_balance_porto_secondary_animtime 0.3
+set g_balance_porto_secondary_speed 1000
+set g_balance_porto_secondary_lifetime 5
 set g_balance_portal_health 200 // these get recharged whenever the portal is used
 set g_balance_portal_lifetime 15 // these get recharged whenever the portal is used
 // }}}
@@ -736,7 +741,6 @@ set g_balance_tuba_force 40
 set g_balance_tuba_pitchstep 6
 // }}}
 // {{{ fireball // this is a superweapon -- lets make it behave as one. 
-set g_balance_fireball_primary_ammo 20
 set g_balance_fireball_primary_animtime 0.2
 set g_balance_fireball_primary_bfgdamage 100
 set g_balance_fireball_primary_bfgforce 0
@@ -756,7 +760,6 @@ set g_balance_fireball_primary_refire 2
 set g_balance_fireball_primary_refire2 0
 set g_balance_fireball_primary_speed 1200
 set g_balance_fireball_primary_spread 0
-set g_balance_fireball_secondary_ammo 5
 set g_balance_fireball_secondary_animtime 0.3
 set g_balance_fireball_secondary_damage 40
 set g_balance_fireball_secondary_damageforcescale 4
@@ -772,8 +775,6 @@ set g_balance_fireball_secondary_speed 900
 set g_balance_fireball_secondary_speed_up 100
 set g_balance_fireball_secondary_speed_z 0
 set g_balance_fireball_secondary_spread 0
-set g_balance_fireball_reload_ammo 0 //default: 100
-set g_balance_fireball_reload_time 2
 // }}}
 // {{{ seeker
 set g_balance_seeker_type 1 // 0 = old seeker, 1 = new seeker. THIS IS A TEMPORARY CVAR FOR TESTING, will be removed later.
index 99882291aff6a2894c1e0cd8ff44c0531d840df7..552807fdbc13df9fa734c1c34a858bd4f2d341de 100755 (executable)
@@ -147,7 +147,7 @@ EOF
                                                                        -e "set use_envelope_from=yes" \
                                                                        -s "Need update for translations: $X" \
                                                                        -c "$cc" \
-                                                                       -b "divVerent@xonotic.org" \
+                                                                       -b "admin@xonotic.org" \
                                                                        -a $attach -- \
                                                                        "$to"
                                                                break
index b23a1e8474575e2f3c4a11222bac087a5e16aa5f..b3a9062d29a3b3b0da16f48d0b1361cdcfdbc96b 100644 (file)
@@ -12,7 +12,8 @@ _if_dedicated alias if_client ""
 if_client alias if_dedicated ""
 
 if_dedicated "alias" qc_cmd_sv     "sv_cmd $$*"
-if_client    "alias" qc_cmd_sv     "echo This command only works on servers: sv_cmd $${* !}"
+if_client    "alias" qc_cmd_sv     "sv_cmd $$*"
+// if_client    "alias" qc_cmd_sv     "echo This command only works on servers: sv_cmd $${* !}"
 if_dedicated "alias" qc_cmd_cl     "echo This command only works on clients: cl_cmd $${* !}"
 if_client    "alias" qc_cmd_cl     "cl_cmd $$*"
 if_dedicated "alias" qc_cmd_cmd    "echo This command only works on clients: cmd $${* !}"
@@ -221,7 +222,7 @@ alias movetoauto "moveplayer ${1 ?} auto"
 //  Aliases for settemp subsystem. Warning: Do not touch. 
 //  Usage: settemp variable value, next map resets it.
 // =======================================================
-alias settemp "qc_cmd_svcl settemp $$*"
+alias settemp "qc_cmd_svcl settemp $*"
 alias settemp_restore "qc_cmd_svcl settemp_restore"
 
 
diff --git a/crosshairs.cfg b/crosshairs.cfg
new file mode 100644 (file)
index 0000000..7385853
--- /dev/null
@@ -0,0 +1,155 @@
+// ================================================
+//  Master config for different crosshair settings
+// ================================================
+
+// main crosshair settings
+seta crosshair 16
+seta crosshair_enabled 1 // main toggle for enabling/disabling crosshair rendering, used mostly just for the menu... 1 = with per-weapon crosshairs, 2 = custom crosshair
+seta crosshair_color "0.6 0.8 1"
+seta crosshair_alpha 0.75
+seta crosshair_size 0.3
+
+// crosshair dot settings
+seta crosshair_dot 0 
+seta crosshair_dot_alpha 1
+seta crosshair_dot_size 0.600000
+seta crosshair_dot_color "1 0 0" 
+seta crosshair_dot_color_custom 1 "use a custom color for the crosshair dot"
+
+// smooth transitions for crosshair changes
+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"
+
+// item pickup animation settings
+seta crosshair_pickup 0.25
+seta crosshair_pickup_speed 4
+
+// hit indication animation settings
+seta crosshair_hitindication 0.5
+seta crosshair_hitindication_color "10 -10 -10"
+seta crosshair_hitindication_speed 5
+
+// hit testing/tracing for special effects for the crosshair
+set g_trueaim_minrange 44 "TrueAim minimum range (TrueAim adjusts shots so they hit the crosshair point even though the gun is not at the screen center)"
+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"
+
+// change color based on special case
+seta crosshair_color_by_health 0 "if enabled, crosshair color will depend on current health"
+seta crosshair_color_per_weapon 1 "when 1, each gun will display the crosshair with a different color"
+
+
+// ===============================
+//  Per weapon crosshair settings
+// ===============================
+// main settings
+seta crosshair_per_weapon 1    "when 1, each gun will display a different crosshair"
+
+// per weapon settings
+seta crosshair_laser ""        "crosshair to display when wielding the laser"
+seta crosshair_laser_color "1 0.35 0.2"        "crosshair color to display when wielding the laser"
+seta crosshair_laser_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 "0.7 0.7 0.7"     "crosshair color to display when wielding the shotgun"
+seta crosshair_shotgun_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 "0.4 0.9 0.35"        "crosshair color to display when wielding the machinegun"
+seta crosshair_uzi_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 "1 0.15 0"        "crosshair color to display when wielding the mortar"
+seta crosshair_grenadelauncher_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_minelayer ""    "crosshair to display when wielding the mortar"
+seta crosshair_minelayer_color "0.75 0.75 0"   "crosshair color to display when wielding the mortar"
+seta crosshair_minelayer_alpha 1.15    "crosshair alpha value to display when wielding the mortar"
+seta crosshair_minelayer_size 0.9      "crosshair size when wielding the mortar"
+seta crosshair_electro ""      "crosshair to display when wielding the electro"
+seta crosshair_electro_color "0.35 0.5 1"      "crosshair color to display when wielding the electro"
+seta crosshair_electro_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 "0.85 0.25 1"     "crosshair color to display when wielding the crylink"
+seta crosshair_crylink_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 "0 0.9 1"     "crosshair color to display when wielding the nex gun"
+seta crosshair_nex_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 "0.85 0.5 0.35"     "crosshair color to display when wielding the hagar"
+seta crosshair_hagar_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 "1 0.75 0.2"       "crosshair color to display when wielding the rocketlauncher"
+seta crosshair_rocketlauncher_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 "0.5 1 0.5" "crosshair color to display when wielding the porto"
+seta crosshair_porto_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 "0.65 0.65 1"   "crosshair color to display when wielding the minstanex gun"
+seta crosshair_minstanex_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 "0.65 1 0.85"        "crosshair color to display when wielding the hook"
+seta crosshair_hook_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 "1 0.65 0.2" "crosshair color to display when wielding the H.L.A.C."
+seta crosshair_hlac_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_seeker ""       "crosshair to display when wielding the TAG Seeker"
+seta crosshair_seeker_color "1 0.35 0.35"      "crosshair color to display when wielding the TAG seeker"
+seta crosshair_seeker_alpha 0.9        "crosshair alpha value to display when wielding the TAG seeker"
+seta crosshair_seeker_size 0.8 "crosshair size when wielding the TAG seeker"
+seta crosshair_rifle ""        "crosshair to display when wielding the rifle"
+seta crosshair_rifle_color "0.85 0.5 0.25"     "crosshair color to display when wielding the rifle"
+seta crosshair_rifle_alpha 1   "crosshair alpha value to display when wielding the rifle"
+seta crosshair_rifle_size 0.5  "crosshair size when wielding the rifle"
+seta crosshair_tuba "" "crosshair to display when wielding the tuba"
+seta crosshair_tuba_color "0.85 0.5 0.25"      "crosshair color to display when wielding the tuba"
+seta crosshair_tuba_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 "0.2 1.0 0.2"    "crosshair color to display when wielding the fireball"
+seta crosshair_fireball_alpha 1        "crosshair alpha value to display when wielding the fireball"
+seta crosshair_fireball_size 1 "crosshair size when wielding the fireball"
+
+
+// =========================
+//  Crosshair ring settings
+// =========================
+
+// ring around crosshair, used for various purposes (such as indicating bullets left in clip, nex charge)
+seta crosshair_ring 1 "main cvar to enable or disable normal crosshair rings"
+seta crosshair_ring_inner 0 "allow inner rings to be drawn too"
+seta crosshair_ring_size 2     "ring size"
+seta crosshair_ring_alpha 0.2  "ring alpha"
+
+// nexgun ring
+seta crosshair_ring_nex 1 "draw a ring showing the current charge of the nexgun"
+seta crosshair_ring_nex_alpha 0.15
+seta crosshair_ring_nex_inner_alpha 0.15
+seta crosshair_ring_nex_inner_color_red 0.8
+seta crosshair_ring_nex_inner_color_green 0
+seta crosshair_ring_nex_inner_color_blue 0
+seta crosshair_ring_nex_currentcharge_scale 30
+seta crosshair_ring_nex_currentcharge_movingavg_rate 0.05
+
+// minelayer ring
+seta crosshair_ring_minelayer 1
+seta crosshair_ring_minelayer_alpha 0.15
+
+// hagar ring
+seta crosshair_ring_hagar 1
+seta crosshair_ring_hagar_alpha 0.15
+
+// reload ring
+seta crosshair_ring_reload 1 "main cvar to enable or disable ammo crosshair rings"
+seta crosshair_ring_reload_size 2.5    "reload ring size"
+seta crosshair_ring_reload_alpha 0.2   "reload ring alpha"
\ No newline at end of file
index a53553547acbfabf329fe7c370b8e4a4dcf255b7..09dabb1ae9771a8fc9b08d5eb3db0e81bd702060 100644 (file)
@@ -553,7 +553,7 @@ msgstr "^1%s^1 wurde von einem eWheel gelasert\n"
 #: qcsrc/client/hud.qc:1820
 #, c-format
 msgid "^1%s^1 got caught in the flac \n"
-msgstr "^1%s^1 fraß Flac\n"
+msgstr "^1%s^1 geriet in die Flac\n"
 
 #: qcsrc/client/hud.qc:1823
 #, c-format
@@ -620,7 +620,7 @@ msgstr "^1%s^1 wurde auf unfaire Weise eliminiert\n"
 #: qcsrc/client/hud.qc:1876
 #, c-format
 msgid "^1%s^1 felt a little hot\n"
-msgstr "^1%s^1 fand es ein wenig zu warm\n"
+msgstr "^1%s^1 fand es ein wenig zu heiss\n"
 
 #: qcsrc/client/hud.qc:1878
 #, c-format
@@ -931,7 +931,7 @@ msgstr "^2Momentan in der ^1Aufwärmphase!"
 #: qcsrc/client/hud.qc:4196
 #, c-format
 msgid "%sPress ^3%s%s to end warmup"
-msgstr "%sDrücke ^3%s%s um die Aufwärmphase zu beenden"
+msgstr "%sDrücke ^3%s%s um die Aufwä¤rmphase zu beenden"
 
 #: qcsrc/client/hud.qc:4198
 #, c-format
@@ -1258,7 +1258,7 @@ msgid ""
 "captured\n"
 msgstr ""
 "^3caps^7                     Wie oft mit der Flagge (CTF) oder den "
-"Schlüssels (KeyHunt) gepunktet wurde\n"
+"Schlüsseln (KeyHunt) gepunktet wurde\n"
 
 #: qcsrc/client/scoreboard.qc:256
 msgid ""
@@ -1270,7 +1270,7 @@ msgstr ""
 
 #: qcsrc/client/scoreboard.qc:257
 msgid "^3fckills^7                  Number of flag carrier kills\n"
-msgstr "^3fckills^7                  Wieviele Flaggenträger getötet wurden\n"
+msgstr "^3fckills^7                  Wieviele FlaggentrÃ\83¤ger getötet wurden\n"
 
 #: qcsrc/client/scoreboard.qc:258
 msgid "^3returns^7                  Number of flag returns\n"
@@ -1607,11 +1607,11 @@ msgstr "Laser"
 
 #: qcsrc/client/waypointsprites.qc:291 qcsrc/server/w_shotgun.qc:2
 msgid "Shotgun"
-msgstr "Shotgun"
+msgstr "Schrotgewehr"
 
 #: qcsrc/client/waypointsprites.qc:292 qcsrc/server/w_uzi.qc:2
 msgid "Machine Gun"
-msgstr "Machine Gun"
+msgstr "Maschinen Gewehr"
 
 #: qcsrc/client/waypointsprites.qc:293 qcsrc/server/w_grenadelauncher.qc:2
 msgid "Mortar"
@@ -1619,7 +1619,7 @@ msgstr "Mortar"
 
 #: qcsrc/client/waypointsprites.qc:294 qcsrc/server/w_electro.qc:2
 msgid "Electro"
-msgstr "Electro"
+msgstr "Elektro"
 
 #: qcsrc/client/waypointsprites.qc:295 qcsrc/server/w_crylink.qc:2
 msgid "Crylink"
@@ -1635,7 +1635,7 @@ msgstr "Hagar"
 
 #: qcsrc/client/waypointsprites.qc:298 qcsrc/server/w_rocketlauncher.qc:2
 msgid "Rocket Launcher"
-msgstr "Rocket Launcher"
+msgstr "Raketenwerfer"
 
 #: qcsrc/client/waypointsprites.qc:299 qcsrc/server/w_porto.qc:2
 msgid "Port-O-Launch"
@@ -2055,59 +2055,59 @@ msgstr "%s wurde von %ss Maschinengewehr erledigt"
 msgid "%s was riddled full of holes by %s's machine gun"
 msgstr "%s ist von %s durchlöchert worden wie ein Schweizer Käse"
 
-#~ msgid "%s sniped themself somehow"
-#~ msgstr "%s hat so scharf geschossen, dass er sich selbst getroffen hat"
+msgid "%s sniped themself somehow"
+msgstr "%s hat so scharf geschossen, dass er sich selbst getroffen hat"
 
-#~ msgid "%s shot themself automatically"
-#~ msgstr "%s hat sich vollautomatisch selbst erschossen"
+msgid "%s shot themself automatically"
+msgstr "%s hat sich vollautomatisch selbst erschossen"
 
-#~ msgid "%s exploded"
-#~ msgstr "%s ist explodiert"
+msgid "%s exploded"
+msgstr "%s ist explodiert"
 
-#~ msgid "%s hoped %s's missiles wouldn't bounce"
-#~ msgstr "%s hat gehofft, dass %ss Raketen nicht von Wänden abprallen"
+msgid "%s hoped %s's missiles wouldn't bounce"
+msgstr "%s hat gehofft, dass %ss Raketen nicht von Wänden abprallen"
 
-#~ msgid "%s detonated"
-#~ msgstr "%s verfing sich in der eigenen Detonation"
+msgid "%s detonated"
+msgstr "%s verfing sich in der eigenen Detonation"
 
-#~ msgid "%s tried out his own grenade"
-#~ msgstr "%s wollte wissen, ob seine Granate funktioniert"
+msgid "%s tried out his own grenade"
+msgstr "%s wollte wissen, ob seine Granate funktioniert"
 
-#~ msgid "Awaiting orders..."
-#~ msgstr "Warten auf Auftrag..."
+msgid "Awaiting orders..."
+msgstr "Warten auf Auftrag..."
 
-#~ msgid "You're commander!"
-#~ msgstr "Sie sind Befehlshaber!"
+msgid "You're commander!"
+msgstr "Sie sind Befehlshaber!"
 
-#~ msgid "3) Resign from command."
-#~ msgstr "3) Befehlsgewalt abgeben."
+msgid "3) Resign from command."
+msgstr "3) Befehlsgewalt abgeben."
 
-#~ msgid " 2) Defend"
-#~ msgstr " 2) Verteidigen"
+msgid " 2) Defend"
+msgstr " 2) Verteidigen"
 
-#~ msgid " 1) Attack"
-#~ msgstr " 1) Angreifen"
+msgid " 1) Attack"
+msgstr " 1) Angreifen"
 
-#~ msgid "Issue orders:"
-#~ msgstr "Auftrag geben:"
+msgid "Issue orders:"
+msgstr "Auftrag geben:"
 
-#~ msgid "----- Command Menu -----"
-#~ msgstr "---- Befehlsmenü -----"
+msgid "----- Command Menu -----"
+msgstr "---- Befehlsmenü -----"
 
-#~ msgid "Couldn't find player %d\n"
-#~ msgstr "Kann Spieler %d nicht finden\n"
+msgid "Couldn't find player %d\n"
+msgstr "Kann Spieler %d nicht finden\n"
 
-#~ msgid "ESC) Exit Menu"
-#~ msgstr "ESC) Menü verlassen"
+msgid "ESC) Exit Menu"
+msgstr "ESC) Menü verlassen"
 
-#~ msgid "2) ^3next page"
-#~ msgstr "2) ^3nächste Seite"
+msgid "2) ^3next page"
+msgstr "2) ^3nÃ\83¤chste Seite"
 
-#~ msgid "1) ^3previous page"
-#~ msgstr "1) ^3vorherige Seite"
+msgid "1) ^3previous page"
+msgstr "1) ^3vorherige Seite"
 
-#~ msgid "Order: %s"
-#~ msgstr "Auftrag: %s"
+msgid "Order: %s"
+msgstr "Auftrag: %s"
 
-#~ msgid "----- Order Menu -----"
-#~ msgstr "----- Auftragsmenü -----"
+msgid "----- Order Menu -----"
+msgstr "----- Auftragsmenü -----"
diff --git a/csprogs.dat.fr.po b/csprogs.dat.fr.po
new file mode 100644 (file)
index 0000000..2ae6873
--- /dev/null
@@ -0,0 +1,1962 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-08-21 14:00+0200\n"
+"PO-Revision-Date: 2012-01-26 13:50+0100\n"
+"Last-Translator: Calinou <calinou9999@gmail.com>\n"
+"Language-Team: \n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: qcsrc/client/scoreboard.qc:19
+msgid "SCO^bckills"
+msgstr "balles tués"
+
+#: qcsrc/client/scoreboard.qc:20
+msgid "SCO^bctime"
+msgstr "temps balle"
+
+#: qcsrc/client/scoreboard.qc:21
+msgid "SCO^caps"
+msgstr "drapeaux"
+
+#: qcsrc/client/scoreboard.qc:22
+msgid "SCO^deaths"
+msgstr "morts"
+
+#: qcsrc/client/scoreboard.qc:23
+msgid "SCO^destroyed"
+msgstr "détruits"
+
+#: qcsrc/client/scoreboard.qc:24
+msgid "SCO^drops"
+msgstr "lâchers"
+
+#: qcsrc/client/scoreboard.qc:25
+msgid "SCO^faults"
+msgstr "fautes"
+
+#: qcsrc/client/scoreboard.qc:26
+msgid "SCO^fckills"
+msgstr "drap. tués"
+
+#: qcsrc/client/scoreboard.qc:27
+msgid "SCO^goals"
+msgstr "buts"
+
+#: qcsrc/client/scoreboard.qc:28
+msgid "SCO^kckills"
+msgstr "clés tués"
+
+#: qcsrc/client/scoreboard.qc:29
+msgid "SCO^kdratio"
+msgstr "SCO^kdratio"
+
+#: qcsrc/client/scoreboard.qc:30
+msgid "SCO^k/d"
+msgstr "SCO^tué/mort"
+
+#: qcsrc/client/scoreboard.qc:31
+msgid "SCO^kd"
+msgstr "SCO^kd"
+
+#: qcsrc/client/scoreboard.qc:32
+msgid "SCO^kdr"
+msgstr "SCO^kdr"
+
+#: qcsrc/client/scoreboard.qc:33
+msgid "SCO^kills"
+msgstr "SCO^tués"
+
+#: qcsrc/client/scoreboard.qc:34
+msgid "SCO^laps"
+msgstr "SCO^tours"
+
+#: qcsrc/client/scoreboard.qc:35
+msgid "SCO^lives"
+msgstr "SCO^vies"
+
+#: qcsrc/client/scoreboard.qc:36
+msgid "SCO^losses"
+msgstr "SCO^défaites"
+
+#: qcsrc/client/scoreboard.qc:37
+msgid "SCO^name"
+msgstr "SCO^nom"
+
+#: qcsrc/client/scoreboard.qc:38
+msgid "SCO^nick"
+msgstr "SCO^pseudonyme"
+
+#: qcsrc/client/scoreboard.qc:39
+msgid "SCO^objectives"
+msgstr "SCO^objectifs"
+
+#: qcsrc/client/scoreboard.qc:40
+msgid "SCO^pickups"
+msgstr "SCO^collectés"
+
+#: qcsrc/client/scoreboard.qc:41
+msgid "SCO^ping"
+msgstr "SCO^latence"
+
+#: qcsrc/client/scoreboard.qc:42
+msgid "SCO^pl"
+msgstr "SCO^pl"
+
+#: qcsrc/client/scoreboard.qc:43
+msgid "SCO^pushes"
+msgstr "SCO^poussés"
+
+#: qcsrc/client/scoreboard.qc:44
+msgid "SCO^rank"
+msgstr "SCO^rang"
+
+#: qcsrc/client/scoreboard.qc:45
+msgid "SCO^returns"
+msgstr "SCO^retournés"
+
+#: qcsrc/client/scoreboard.qc:46
+msgid "SCO^revivals"
+msgstr "SCO^soignés"
+
+#: qcsrc/client/scoreboard.qc:47
+msgid "SCO^score"
+msgstr "SCO^score"
+
+#: qcsrc/client/scoreboard.qc:48
+msgid "SCO^suicides"
+msgstr "SCO^suicides"
+
+#: qcsrc/client/scoreboard.qc:49
+msgid "SCO^takes"
+msgstr "SCO^prises"
+
+#: qcsrc/client/scoreboard.qc:50
+msgid "SCO^ticks"
+msgstr "SCO^ticks"
+
+#: qcsrc/client/scoreboard.qc:239
+msgid ""
+"You can modify the scoreboard using the ^2scoreboard_columns_set command.\n"
+msgstr ""
+"Vous pouvez modifier le tableau des scores en utilisant ^2scoreboard_columns_set ^7(dans la console).\n"
+
+#: qcsrc/client/scoreboard.qc:240
+msgid "^3|---------------------------------------------------------------|\n"
+msgstr "^3|---------------------------------------------------------------|\n"
+
+#: qcsrc/client/scoreboard.qc:241 qcsrc/client/Main.qc:369
+msgid "Usage:\n"
+msgstr "Utilisation:\n"
+
+#: qcsrc/client/scoreboard.qc:242
+msgid "^2scoreboard_columns_set default\n"
+msgstr "^2scoreboard_columns_set par défaut\n"
+
+#: qcsrc/client/scoreboard.qc:243
+msgid "^2scoreboard_columns_set ^7filed1 field2 ...\n"
+msgstr "^2scoreboard_columns_set ^7champ1 champ2 ...\n"
+
+#: qcsrc/client/scoreboard.qc:244
+msgid "The following field names are recognized (case insensitive):\n"
+msgstr "Les noms de champs suivants sont reconnus (non-sensible à la casse) :\n"
+
+#: qcsrc/client/scoreboard.qc:245
+msgid ""
+"You can use a ^3|^7 to start the right-aligned fields.\n"
+"\n"
+msgstr ""
+"Vous pouvez insérer un ^3|^7 pour créer des champs alignés à droite.\n"
+"\n"
+
+#: qcsrc/client/scoreboard.qc:247
+msgid "^3name^7 or ^3nick^7         Name of a player\n"
+msgstr "^3nom^7 ou ^3pseudonyme^7         Nom d'un joueur\n"
+
+#: qcsrc/client/scoreboard.qc:248
+msgid "^3ping^7                     Ping time\n"
+msgstr "^3latence^7                     Temps de latence\n"
+
+#: qcsrc/client/scoreboard.qc:249
+msgid "^3pl^7                       Packet loss\n"
+msgstr "^3pl^7                       Pertes de paquet\n"
+
+#: qcsrc/client/scoreboard.qc:250
+msgid "^3kills^7                    Number of kills\n"
+msgstr "^3tués^7                    Nombre de tués\n"
+
+#: qcsrc/client/scoreboard.qc:251
+msgid "^3deaths^7                   Number of deaths\n"
+msgstr "^3morts^7                   Nombre de morts\n"
+
+#: qcsrc/client/scoreboard.qc:252
+msgid "^3suicides^7                 Number of suicides\n"
+msgstr "^3suicides^7                 Nombre de suicides\n"
+
+#: qcsrc/client/scoreboard.qc:253
+msgid "^3frags^7                    kills - suicides\n"
+msgstr "^3tués^7                    tués - suicides\n"
+
+#: qcsrc/client/scoreboard.qc:254
+msgid "^3kd^7                       The kill-death ratio\n"
+msgstr "^3kd^7                       Ratio tué-mort\n"
+
+#: qcsrc/client/scoreboard.qc:255
+msgid ""
+"^3caps^7                     How often a flag (CTF) or a key (KeyHunt) was "
+"captured\n"
+msgstr ""
+"^3drapeaux^7                     Combien de fois un drapeau (Capture du Drapeau) ou une clé (Chasse aux Clés) a été "
+"capturé\n"
+
+#: qcsrc/client/scoreboard.qc:256
+msgid ""
+"^3pickups^7                  How often a flag (CTF) or a key (KeyHunt) or a "
+"ball (Keepaway) was picked up\n"
+msgstr ""
+"^3collectés^7                  Nombre de fois qu'un drapeau (CTF), clé (Chasse aux clés) "
+"ou balle (Keepway) a été pris\n"
+
+#: qcsrc/client/scoreboard.qc:257
+msgid "^3fckills^7                  Number of flag carrier kills\n"
+msgstr "^3fckills^7                  Nombre de porteurs de drapeaux tués\n"
+
+#: qcsrc/client/scoreboard.qc:258
+msgid "^3returns^7                  Number of flag returns\n"
+msgstr "^3returns^7                  Nombre de drapeaux retournés\n"
+
+#: qcsrc/client/scoreboard.qc:259
+msgid "^3drops^7                    Number of flag drops\n"
+msgstr "^3drops^7                    Nombre de drapeaux lâchés\n"
+
+#: qcsrc/client/scoreboard.qc:260
+msgid "^3lives^7                    Number of lives (LMS)\n"
+msgstr "^3lives^7                    Nombre de vies (LMS)\n"
+
+#: qcsrc/client/scoreboard.qc:261
+msgid "^3rank^7                     Player rank\n"
+msgstr "^3rank^7                     Rang du joueur\n"
+
+#: qcsrc/client/scoreboard.qc:262
+msgid "^3pushes^7                   Number of players pushed into void\n"
+msgstr "^3pushes^7                   Nombre de joueurs poussés dans le vide\n"
+
+#: qcsrc/client/scoreboard.qc:263
+msgid ""
+"^3destroyed^7                Number of keys destroyed by pushing them into "
+"void\n"
+msgstr ""
+"^3détruits^7                Nombre de clés détruire en les poussant dans "
+"le vide\n"
+
+#: qcsrc/client/scoreboard.qc:264
+msgid "^3kckills^7                  Number of keys carrier kills\n"
+msgstr "^3kckills^7                  Nombre de porteurs de clés tués\n"
+
+#: qcsrc/client/scoreboard.qc:265
+msgid "^3losses^7                   Number of times a key was lost\n"
+msgstr "3pertes^7                   Nombre de fois qu'une clé a été perdue\n"
+
+#: qcsrc/client/scoreboard.qc:266
+msgid "^3laps^7                     Number of laps finished (race/cts)\n"
+msgstr "^3tours^7                     Nombre de tours finis (course/cts)\n"
+
+#: qcsrc/client/scoreboard.qc:267
+msgid "^3time^7                     Total time raced (race/cts)\n"
+msgstr "^3temps^7                     Temps total en course (course/cts)\n"
+
+#: qcsrc/client/scoreboard.qc:268
+msgid "^3fastest^7                  Time of fastest lap (race/cts)\n"
+msgstr "^3fastest^7                  Temps du tour le plus rapide (course/cts)\n"
+
+#: qcsrc/client/scoreboard.qc:269
+msgid "^3ticks^7                    Number of ticks (DOM)\n"
+msgstr "^3tics^7                    Nombre de tics (DOM)\n"
+
+#: qcsrc/client/scoreboard.qc:270
+msgid "^3takes^7                    Number of domination points taken (DOM)\n"
+msgstr "^3^7                    Nombre de points de domination capturés (DOM)\n"
+
+#: qcsrc/client/scoreboard.qc:271
+msgid "^3bckills^7                  Number of ball carrier kills\n"
+msgstr "^3bckills^7                  Nombre de porteurs de balles tués\n"
+
+#: qcsrc/client/scoreboard.qc:272
+msgid ""
+"^3bctime^7                   Total amount of time holding the ball in "
+"Keepaway\n"
+msgstr ""
+"^3bctime^7                   Temps total en possession de la balle en "
+"Keepaway\n"
+
+#: qcsrc/client/scoreboard.qc:273
+msgid ""
+"^3score^7                    Total score\n"
+"\n"
+msgstr ""
+"^3score^7                    Score total\n"
+"\n"
+
+#: qcsrc/client/scoreboard.qc:275
+msgid ""
+"Before a field you can put a + or - sign, then a comma separated list\n"
+"of game types, then a slash, to make the field show up only in these\n"
+"or in all but these game types. You can also specify 'all' as a\n"
+"field to show all fields available for the current game mode.\n"
+"\n"
+msgstr ""
+"Avant un champ vous pouvez mettre un signe + ou -, puis une liste séparée avec des virgules\n"
+"de modes de jeux, puis un slash, pour faire apparaître un champ seulement dans certains modes.\n"
+"Vous pouvez aussi spécifier 'all' comme un champ pour montrer tous les champs disponibles\n"
+"pour le mode de jeu en cours.\n"
+"\n"
+
+#: qcsrc/client/scoreboard.qc:280
+msgid ""
+"The special game type names 'teams' and 'noteams' can be used to\n"
+"include/exclude ALL teams/noteams game modes.\n"
+"\n"
+msgstr ""
+"Le type de jeu 'special' peut être utilisé pour\n"
+"inclure ou exclure TOUT les modes de jeux avec ou sans équipes.\n"
+"\n"
+
+#: qcsrc/client/scoreboard.qc:283
+msgid "Example: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4\n"
+msgstr "Exemple: scoreboard_columns_set name ping pl | +cfg/field3 -dm/field4\n"
+
+#: qcsrc/client/scoreboard.qc:284
+msgid ""
+"will display name, ping and pl aligned to the left, and the fields\n"
+"right of the vertical bar aligned to the right.\n"
+msgstr ""
+"va afficher le nom, latence et pl alignés à gauche, et les champs\n"
+"à droite de la barre verticale alignée à droite.\n"
+#: qcsrc/client/scoreboard.qc:286
+msgid ""
+"'field3' will only be shown in CTF, and 'field4' will be shown in all\n"
+"other gamemodes except DM.\n"
+msgstr ""
+"'field3' ne sera montré qu'en mode CTF, et 'field4' sera montré dans tous les modes sauf DM.\n"
+
+#: qcsrc/client/scoreboard.qc:432 qcsrc/client/scoreboard.qc:447
+#: qcsrc/client/scoreboard.qc:457 qcsrc/client/scoreboard.qc:466
+#: qcsrc/client/scoreboard.qc:475
+#, c-format
+msgid "fixed missing field '%s'\n"
+msgstr "champ manquant fixé '%s'\n"
+
+#: qcsrc/client/scoreboard.qc:515 qcsrc/client/scoreboard.qc:522
+msgid "N/A"
+msgstr "N/A"
+
+#: qcsrc/client/scoreboard.qc:950
+#, c-format
+msgid "Accuracy stats (average %d%%)"
+msgstr "Stats de précision (moyenne %d%%)"
+
+#: qcsrc/client/scoreboard.qc:1015
+#, c-format
+msgid "%d%%"
+msgstr "%d%%"
+
+#: qcsrc/client/scoreboard.qc:1075
+msgid "Rankings"
+msgstr "Classements"
+
+#: qcsrc/client/scoreboard.qc:1170
+msgid "Scoreboard"
+msgstr "Tableau des scores"
+
+#: qcsrc/client/scoreboard.qc:1215
+#, c-format
+msgid "Speed award: %d ^7(%s^7)"
+msgstr "Le plus rapide: %d ^7(%s^7)"
+
+#: qcsrc/client/scoreboard.qc:1219
+#, c-format
+msgid "All-time fastest: %d ^7(%s^7)"
+msgstr "Record de vitesse: %d ^7(%s^7)"
+
+#: qcsrc/client/scoreboard.qc:1246 qcsrc/client/teamplay.qc:63
+msgid "Spectators"
+msgstr "Spectateurs"
+
+#: qcsrc/client/scoreboard.qc:1252
+#, c-format
+msgid "playing on ^2%s^7"
+msgstr "en train de jouer sur ^2%s^7"
+
+#: qcsrc/client/scoreboard.qc:1259 qcsrc/client/scoreboard.qc:1264
+#, c-format
+msgid " for up to ^1%1.0f minutes^7"
+msgstr " pour jusqu'à ^1%1.0f minutes^7"
+
+#: qcsrc/client/scoreboard.qc:1268 qcsrc/client/scoreboard.qc:1287
+msgid " or"
+msgstr " ou"
+
+#: qcsrc/client/scoreboard.qc:1271 qcsrc/client/scoreboard.qc:1278
+#, c-format
+msgid " until ^3%s %s^7"
+msgstr " jusqu'à ^3%s %s^7"
+
+#: qcsrc/client/scoreboard.qc:1272 qcsrc/client/scoreboard.qc:1279
+#: qcsrc/client/scoreboard.qc:1291 qcsrc/client/scoreboard.qc:1298
+msgid "SCO^points"
+msgstr "SCO^points"
+
+#: qcsrc/client/scoreboard.qc:1273 qcsrc/client/scoreboard.qc:1280
+#: qcsrc/client/scoreboard.qc:1292 qcsrc/client/scoreboard.qc:1299
+msgid "SCO^is beaten"
+msgstr "SCO^est battu"
+
+#: qcsrc/client/scoreboard.qc:1290 qcsrc/client/scoreboard.qc:1297
+#, c-format
+msgid " until a lead of ^3%s %s^7"
+msgstr " jusqu'à qu'il y ait un écart de ^3%s %s^7 points"
+
+#: qcsrc/client/waypointsprites.qc:254
+msgid "Push"
+msgstr "Pousser"
+
+#: qcsrc/client/waypointsprites.qc:255
+msgid "Destroy"
+msgstr "Détruire"
+
+#: qcsrc/client/waypointsprites.qc:256
+msgid "Defend"
+msgstr "Défendre"
+
+#: qcsrc/client/waypointsprites.qc:257
+msgid "Blue base"
+msgstr "Base bleue"
+
+#: qcsrc/client/waypointsprites.qc:258
+msgid "DANGER"
+msgstr "DANGER"
+
+#: qcsrc/client/waypointsprites.qc:259
+msgid "Flag carrier"
+msgstr "Porteur du drapeau"
+
+#: qcsrc/client/waypointsprites.qc:260
+msgid "Dropped flag"
+msgstr "Drapeau lâché"
+
+#: qcsrc/client/waypointsprites.qc:261
+msgid "Help me!"
+msgstr "Aidez-moi !"
+
+#: qcsrc/client/waypointsprites.qc:262
+msgid "Here"
+msgstr "Ici"
+
+#: qcsrc/client/waypointsprites.qc:263
+msgid "Dropped key"
+msgstr "Clé lâchée"
+
+#: qcsrc/client/waypointsprites.qc:264 qcsrc/client/waypointsprites.qc:266
+#: qcsrc/client/waypointsprites.qc:267 qcsrc/client/waypointsprites.qc:268
+#: qcsrc/client/waypointsprites.qc:269
+msgid "Key carrier"
+msgstr "Porteur de clé"
+
+#: qcsrc/client/waypointsprites.qc:265
+msgid "Run here"
+msgstr "Courez ici"
+
+#: qcsrc/client/waypointsprites.qc:270
+msgid "Red base"
+msgstr "Base rouge"
+
+#: qcsrc/client/waypointsprites.qc:271
+msgid "Waypoint"
+msgstr "Destination"
+
+#: qcsrc/client/waypointsprites.qc:272 qcsrc/client/waypointsprites.qc:273
+#: qcsrc/client/waypointsprites.qc:274
+msgid "Generator"
+msgstr "Générateur"
+
+#: qcsrc/client/waypointsprites.qc:275 qcsrc/client/waypointsprites.qc:276
+#: qcsrc/client/waypointsprites.qc:277 qcsrc/client/waypointsprites.qc:278
+#: qcsrc/client/waypointsprites.qc:279 qcsrc/client/waypointsprites.qc:280
+#: qcsrc/client/waypointsprites.qc:281 qcsrc/client/waypointsprites.qc:282
+#: qcsrc/client/waypointsprites.qc:306 qcsrc/client/waypointsprites.qc:307
+#: qcsrc/client/waypointsprites.qc:308 qcsrc/client/waypointsprites.qc:309
+#: qcsrc/client/waypointsprites.qc:310
+msgid "Control point"
+msgstr "Point de contrôle"
+
+#: qcsrc/client/waypointsprites.qc:283
+msgid "Checkpoint"
+msgstr "Point de contrôle"
+
+#: qcsrc/client/waypointsprites.qc:284 qcsrc/client/waypointsprites.qc:286
+msgid "Finish"
+msgstr "Arrivée"
+
+#: qcsrc/client/waypointsprites.qc:285 qcsrc/client/waypointsprites.qc:286
+msgid "Start"
+msgstr "Départ"
+
+#: qcsrc/client/waypointsprites.qc:287 qcsrc/client/waypointsprites.qc:288
+msgid "Ball"
+msgstr "Balle"
+
+#: qcsrc/client/waypointsprites.qc:289
+msgid "Ball carrier"
+msgstr "Porteur de balle"
+
+#: qcsrc/client/waypointsprites.qc:290 qcsrc/server/w_laser.qc:2
+msgid "Laser"
+msgstr "Laser"
+
+#: qcsrc/client/waypointsprites.qc:291 qcsrc/server/w_shotgun.qc:2
+msgid "Shotgun"
+msgstr "Fusil"
+
+#: qcsrc/client/waypointsprites.qc:292 qcsrc/server/w_uzi.qc:2
+msgid "Machine Gun"
+msgstr "Mitraillette"
+
+#: qcsrc/client/waypointsprites.qc:293 qcsrc/server/w_grenadelauncher.qc:2
+msgid "Mortar"
+msgstr "Lance-grenades"
+
+#: qcsrc/client/waypointsprites.qc:294 qcsrc/server/w_electro.qc:2
+msgid "Electro"
+msgstr "Electro"
+
+#: qcsrc/client/waypointsprites.qc:295 qcsrc/server/w_crylink.qc:2
+msgid "Crylink"
+msgstr "Crylink"
+
+#: qcsrc/client/waypointsprites.qc:296 qcsrc/server/w_nex.qc:2
+msgid "Nex"
+msgstr "Nex"
+
+#: qcsrc/client/waypointsprites.qc:297 qcsrc/server/w_hagar.qc:2
+msgid "Hagar"
+msgstr "Hagar"
+
+#: qcsrc/client/waypointsprites.qc:298 qcsrc/server/w_rocketlauncher.qc:2
+msgid "Rocket Launcher"
+msgstr "Lance-roquettes"
+
+#: qcsrc/client/waypointsprites.qc:299 qcsrc/server/w_porto.qc:2
+msgid "Port-O-Launch"
+msgstr "Lance-O-Port"
+
+#: qcsrc/client/waypointsprites.qc:300
+msgid "Minstanex"
+msgstr "Minstanex"
+
+#: qcsrc/client/waypointsprites.qc:301
+msgid "Hook"
+msgstr "Grappin"
+
+#: qcsrc/client/waypointsprites.qc:302 qcsrc/server/w_fireball.qc:2
+msgid "Fireball"
+msgstr "Boule de feu"
+
+#: qcsrc/client/waypointsprites.qc:303
+msgid "HLAC"
+msgstr "HLAC"
+
+#: qcsrc/client/waypointsprites.qc:304 qcsrc/server/w_rifle.qc:2
+msgid "Rifle"
+msgstr "Fusil sniper"
+
+#: qcsrc/client/waypointsprites.qc:305 qcsrc/server/w_minelayer.qc:2
+msgid "Mine Layer"
+msgstr "Lance-mines"
+
+#: qcsrc/client/waypointsprites.qc:311
+msgid "Invisibility"
+msgstr "Invisibilité"
+
+#: qcsrc/client/waypointsprites.qc:312
+msgid "Extra life"
+msgstr "Vie supplémentaire"
+
+#: qcsrc/client/waypointsprites.qc:313
+msgid "Speed"
+msgstr "Vitesse"
+
+#: qcsrc/client/waypointsprites.qc:314
+msgid "Strength"
+msgstr "Force"
+
+#: qcsrc/client/waypointsprites.qc:315
+msgid "Shield"
+msgstr "Bouclier"
+
+#: qcsrc/client/waypointsprites.qc:316
+msgid "Fuel regen"
+msgstr "Régén. essence"
+
+#: qcsrc/client/waypointsprites.qc:317
+msgid "Jet Pack"
+msgstr "Jet Pack"
+
+#: qcsrc/client/waypointsprites.qc:318
+msgid "Frozen!"
+msgstr "Gelé!"
+
+#: qcsrc/client/waypointsprites.qc:319
+msgid "Tagged"
+msgstr "Verrouillé"
+
+#: qcsrc/client/waypointsprites.qc:320
+msgid "Vehicle"
+msgstr "Véhicule"
+
+#: qcsrc/client/waypointsprites.qc:590
+msgid "Spam"
+msgstr "Spam"
+
+#: qcsrc/client/waypointsprites.qc:594
+#, c-format
+msgid "%s needing help!"
+msgstr "%s a besoin d'aide !"
+
+#: qcsrc/client/hud_config.qc:136
+#, c-format
+msgid "^2Successfully exported to %s! (Note: It's saved in data/data/)\n"
+msgstr "^2Exporté avec succès en tant que %s ! (Note: C'est sauvegardé dans data/data/)\n"
+
+#: qcsrc/client/hud_config.qc:140
+#, c-format
+msgid "^1Couldn't write to %s\n"
+msgstr "^1Ne peut pas écrire vers %s\n"
+
+#: qcsrc/client/ctf.qc:35
+msgid "----- Order Menu -----"
+msgstr "----- Menu d'ordre -----"
+
+#: qcsrc/client/ctf.qc:36
+#, c-format
+msgid "Order: %s"
+msgstr "Ordre: %s"
+
+#: qcsrc/client/ctf.qc:37
+msgid "1) ^3previous page"
+msgstr "1) ^3page précédente"
+
+#: qcsrc/client/ctf.qc:38
+msgid "2) ^3next page"
+msgstr "2) ^3page suivante"
+
+#: qcsrc/client/ctf.qc:55 qcsrc/client/ctf.qc:161
+msgid "ESC) Exit Menu"
+msgstr "ESC) Quitter le menu"
+
+#: qcsrc/client/ctf.qc:126
+#, c-format
+msgid "Couldn't find player %d\n"
+msgstr "Ne peut pas trouver le joueur %d\n"
+
+#: qcsrc/client/ctf.qc:154
+msgid "----- Command Menu -----"
+msgstr "----- Menu de commandes -----"
+
+#: qcsrc/client/ctf.qc:155
+msgid "Issue orders:"
+msgstr "Donner des ordres:"
+
+#: qcsrc/client/ctf.qc:156
+msgid " 1) Attack"
+msgstr "1) Attaquer"
+
+#: qcsrc/client/ctf.qc:158
+msgid " 2) Defend"
+msgstr "2) Défendre"
+
+#: qcsrc/client/ctf.qc:160
+msgid "3) Resign from command."
+msgstr "3) Abandonner l'ordre"
+
+#: qcsrc/client/ctf.qc:212
+msgid "You're commander!"
+msgstr "Vous êtes le commandant !"
+
+#: qcsrc/client/ctf.qc:215
+msgid "Awaiting orders..."
+msgstr "En attente d'ordres..."
+
+#: qcsrc/client/Main.qc:30
+msgid "ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!"
+msgstr "ERREUR - LE MENU EST VISIBLE MAIS NON DÉFIINI !"
+
+#: qcsrc/client/Main.qc:56
+msgid ""
+"^3Your engine build is outdated\n"
+"^3This Server uses a newer QC VM. Please update!\n"
+msgstr ""
+"^3Votre version n'est pas à jour!\n"
+"^3Ce Serveur utilise une nouvelle version du QC VM. Veuillez mettre à jour !\n"
+
+#: qcsrc/client/Main.qc:66
+#, c-format
+msgid "^4CSQC Build information: ^1%s\n"
+msgstr "^4Information sur la version de CSQC: ^1%s\n"
+
+#: qcsrc/client/Main.qc:237 qcsrc/client/Main.qc:253
+#, c-format
+msgid "trying to switch to unsupported team %d\n"
+msgstr "tentative de changement vers une équipe non supportée : %d\n"
+
+#: qcsrc/client/Main.qc:370
+msgid "hud_save configname   (saves to hud_skinname_configname.cfg)\n"
+msgstr "hud_save configname (saves to hud_skinname_configname.cfg)\n"
+
+#: qcsrc/client/Main.qc:494
+msgid "Usage: cl_cmd COMMAND..., where possible commands are:\n"
+msgstr "Usage: cl_cmd COMMAND..., où les commandes possibles sont :\n"
+
+#: qcsrc/client/Main.qc:495
+msgid "  settemp cvar value\n"
+msgstr " setteam cvar value\n"
+
+#: qcsrc/client/Main.qc:496
+msgid "  scoreboard_columns_set ...\n"
+msgstr " scoreboard_columns_set ...\n"
+
+#: qcsrc/client/Main.qc:497
+msgid "  scoreboard_columns_help\n"
+msgstr "  scoreboard_columns_help\n"
+
+#: qcsrc/client/Main.qc:726
+#, c-format
+msgid "A CSQC entity changed its owner! (edict: %d, classname: %s)\n"
+msgstr "Une entité CSQC a changé de propriétaire ! (edict: %d, classname: %s)\n"
+
+#: qcsrc/client/Main.qc:964
+#, c-format
+msgid "A CSQC entity changed its type! (edict: %d, classname: %s)\n"
+msgstr "Une entité CSQC a changé de type ! (edict: %d, classname: %s)\n"
+
+#: qcsrc/client/Main.qc:1005
+#, c-format
+msgid ""
+"Unknown entity type in CSQC_Ent_Update (enttype: %d, edict: %d, classname: "
+"%s)\n"
+msgstr ""
+"Entité inconnue ! CSQC_Ent_Update (enttype: %d, edict: %d, classname: "
+"%s)\n"
+
+#: qcsrc/client/Main.qc:1461
+#, c-format
+msgid "%s (not bound)"
+msgstr "%s (non assigné)"
+
+#: qcsrc/client/Main.qc:1466 qcsrc/client/hud.qc:230
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#: qcsrc/client/mapvoting.qc:28
+msgid " (1 vote)"
+msgstr " (1 vote)"
+
+#: qcsrc/client/mapvoting.qc:30
+#, c-format
+msgid " (%d votes)"
+msgstr " (%d votes)"
+
+#: qcsrc/client/mapvoting.qc:113
+msgid "Don't care"
+msgstr "Ne pas voter"
+
+#: qcsrc/client/mapvoting.qc:194
+msgid "Vote for a map"
+msgstr "Votez pour une carte"
+
+#: qcsrc/client/mapvoting.qc:200
+#, c-format
+msgid "%d seconds left"
+msgstr "%d secondes restantes"
+
+#: qcsrc/client/mapvoting.qc:263
+msgid ""
+"mv_mapdownload: ^3You're not supposed to use this command on your own!\n"
+msgstr ""
+"mv_mapdownload: ^3Vous ne devez pas utiliser cette commande seule !\n"
+
+#: qcsrc/client/mapvoting.qc:273
+msgid "^1Error:^7 Couldn't find pak index.\n"
+msgstr "^1Erreur:^7 Ne peut pas trouver l'index du pak.\n"
+
+#: qcsrc/client/mapvoting.qc:282
+msgid "Requesting preview...\n"
+msgstr "Demande d'aperçu...\n"
+
+#: qcsrc/client/movetypes.qc:163
+#, c-format
+msgid "Can't unstick an entity (edict: %d, classname: %s, origin: %s)\n"
+msgstr "Ne peut pas décoller une entité (edict: %d, classname: %s, origin: %s)\n"
+
+#: qcsrc/client/movetypes.qc:166
+#, c-format
+msgid "Sucessfully unstuck an entity (edict: %d, classname: %s, origin: %s)\n"
+msgstr "Entité décollée avec succès (edict: %d, classname: %s, origin: %s)\n"
+
+#: qcsrc/client/miscfunctions.qc:23
+msgid "^1Begin!"
+msgstr "^1Commencez !"
+
+#: qcsrc/client/miscfunctions.qc:34
+#, c-format
+msgid "^1Game starts in %d seconds"
+msgstr "^1La partie commence dans %d secondes"
+
+#: qcsrc/client/miscfunctions.qc:113
+msgid "^1RED^7 flag"
+msgstr "^7drapeau ^1ROUGE^7"
+
+#: qcsrc/client/miscfunctions.qc:118
+msgid "^4BLUE^7 flag"
+msgstr "^7drapeau ^4BLEU^7"
+
+#: qcsrc/client/miscfunctions.qc:126
+#, c-format
+msgid "You picked up the %s!"
+msgstr "Vous avez pris le %s !"
+
+#: qcsrc/client/miscfunctions.qc:130
+#, c-format
+msgid "You got the %s!"
+msgstr "Vous avez le %s !"
+
+#: qcsrc/client/miscfunctions.qc:283
+msgid "Trying to remove a team which is not in the teamlist!"
+msgstr "Tentative de suppression d'une équipe qui n'est pas dans la liste d'équipes !"
+
+#: qcsrc/client/teamplay.qc:64
+msgid "Red Team"
+msgstr "Équipe Rouge"
+
+#: qcsrc/client/teamplay.qc:65
+msgid "Blue Team"
+msgstr "Équipe Bleue"
+
+#: qcsrc/client/teamplay.qc:66
+msgid "Yellow Team"
+msgstr "Équipe Jaune"
+
+#: qcsrc/client/teamplay.qc:67
+msgid "Pink Team"
+msgstr "Équipe Rose"
+
+#: qcsrc/client/hud.qc:160
+msgid "1st"
+msgstr "1er"
+
+#: qcsrc/client/hud.qc:162
+msgid "2nd"
+msgstr "2ème"
+
+#: qcsrc/client/hud.qc:164
+msgid "3rd"
+msgstr "3ème"
+
+#: qcsrc/client/hud.qc:166
+#, c-format
+msgid "%dth"
+msgstr "%dème"
+
+#: qcsrc/client/hud.qc:198
+#, c-format
+msgid " (-%dL)"
+msgstr " (-%dL)"
+
+#: qcsrc/client/hud.qc:203
+#, c-format
+msgid " (+%dL)"
+msgstr " (+%dL)"
+
+#: qcsrc/client/hud.qc:219
+msgid "Start line"
+msgstr "Ligne de départ"
+
+#: qcsrc/client/hud.qc:221 qcsrc/client/hud.qc:225
+msgid "Finish line"
+msgstr "Ligne d'arrivée"
+
+#: qcsrc/client/hud.qc:223
+#, c-format
+msgid "Intermediate %d"
+msgstr "Intermédiaire %d"
+
+#: qcsrc/client/hud.qc:232
+#, c-format
+msgid "%s (%s %s)"
+msgstr "%s (%s %s)"
+
+#: qcsrc/client/hud.qc:735
+msgid "Out of ammo"
+msgstr "Plus de munitions"
+
+#: qcsrc/client/hud.qc:739
+msgid "Don't have"
+msgstr "Ne possède pas"
+
+#: qcsrc/client/hud.qc:743
+msgid "Unavailable"
+msgstr "Non disponible"
+
+#: qcsrc/client/hud.qc:1476
+#, c-format
+msgid "^1%s^1 couldn't take it anymore\n"
+msgstr "^1%s^1 n'en pouvait plus avec la vie\n"
+
+#: qcsrc/client/hud.qc:1480 qcsrc/client/hud.qc:1784
+#, c-format
+msgid "^1%s^1 died\n"
+msgstr "^1%s^1 est mort\n"
+
+#: qcsrc/client/hud.qc:1484
+#, c-format
+msgid "^7%s^7 committed suicide. What's the point of living without ammo?\n"
+msgstr "^7%s^7 s'est suicidé. Quel est l'intérêt de vivre sans munitions ?\n"
+
+#: qcsrc/client/hud.qc:1488
+#, c-format
+msgid "^1%s^1 thought they found a nice camping ground\n"
+msgstr "^1%s^1 a cru qu'il avait trouvé un bel endroit pour camper\n"
+
+#: qcsrc/client/hud.qc:1492
+#, c-format
+msgid "^1%s^1 didn't become friends with the Lord of Teamplay\n"
+msgstr "^1%s^1 n'est pas devenu ami avec le Lord of Teamplay\n"
+
+#: qcsrc/client/hud.qc:1496
+#, c-format
+msgid "^1%s^1 unfairly eliminated themself\n"
+msgstr "1%s^1 s'est auto-détruit\n"
+
+#: qcsrc/client/hud.qc:1500
+#, c-format
+msgid "^1%s^1 burned to death\n"
+msgstr "^1%s^1 a brûlé vif\n"
+
+#: qcsrc/client/hud.qc:1504
+#, c-format
+msgid "^1%s^1 couldn't resist the urge to self-destruct\n"
+msgstr "^1%s^1 n'a pas pu résister à l'envie de s'auto-détruire\n"
+
+#: qcsrc/client/hud.qc:1508
+#, c-format
+msgid "^1%s^1 ended it all after a %d kill spree\n"
+msgstr "^1%s^ en a fini après %d joueurs tués sans mourir\n"
+
+#: qcsrc/client/hud.qc:1525
+#, c-format
+msgid "^1%s^1 took action against a team mate\n"
+msgstr "^1%s^1 a tué un équipier\n"
+
+#: qcsrc/client/hud.qc:1527
+#, c-format
+msgid "^1%s^1 mows down a team mate\n"
+msgstr "^1%s^1 a tué un équipier\n"
+
+#: qcsrc/client/hud.qc:1532
+#, c-format
+msgid "^1%s^1 ended a %d scoring spree by going against a team mate\n"
+msgstr "^1^s^1 a fini une chaîne de %d scores en tuant un équipier\n"
+
+#: qcsrc/client/hud.qc:1534
+#, c-format
+msgid "^1%s^1 ended a %d kill spree by killing a team mate\n"
+msgstr "^1%s^1 a fini une chaîne de %d tués en tuant un équipier\n"
+
+#: qcsrc/client/hud.qc:1538
+#, c-format
+msgid "^1%s^1's %s scoring spree was ended by a team mate!\n"
+msgstr "La chaîne de %s scores de ^1%s^1 a été finie par un équipier !\n"
+
+#: qcsrc/client/hud.qc:1540
+#, c-format
+msgid "^1%s^1's %s kill spree was ended by a team mate!\n"
+msgstr "La chaîne de %s tués de ^1%s^1 a été finie par un équipier !\n"
+
+#: qcsrc/client/hud.qc:1544
+#, c-format
+msgid "^1%s^1 drew first blood\n"
+msgstr "^1%s^1 a inauguré le tableau des scores\n"
+
+#: qcsrc/client/hud.qc:1548
+#, c-format
+msgid "^1%s^1 tried to occupy %s^1's teleport destination space\n"
+msgstr "^1%s^1 a essayé de prendre la place de %s^1 en se téléportant\n"
+
+#: qcsrc/client/hud.qc:1550
+#, c-format
+msgid "^1%s^1 was telefragged by %s\n"
+msgstr "^1%s^1 a été téléfraggué par %s\n"
+
+#: qcsrc/client/hud.qc:1555
+#, c-format
+msgid "^1%s^1 was drowned by %s\n"
+msgstr "^1%s^1 a été noyé par %s\n"
+
+#: qcsrc/client/hud.qc:1560
+#, c-format
+msgid "^1%s^1 was slimed by %s\n"
+msgstr "^1%s^1 a été"
+
+#: qcsrc/client/hud.qc:1565
+#, c-format
+msgid "^1%s^1 was cooked by %s\n"
+msgstr "^1%s^1 a été cuit par %s\n"
+
+#: qcsrc/client/hud.qc:1570
+#, c-format
+msgid "^1%s^1 was grounded by %s\n"
+msgstr "^1%s^1 a été écrasé par %s\n"
+
+#: qcsrc/client/hud.qc:1575
+#, c-format
+msgid "^1%s^1 was shot into space by %s\n"
+msgstr "^1%s^1 a été fusilé vers l'espace par %s\n"
+
+#: qcsrc/client/hud.qc:1580
+#, c-format
+msgid "^1%s^1 was conserved by %s\n"
+msgstr "^1%s^1 a été mis en conserve par %s\n"
+
+#: qcsrc/client/hud.qc:1586
+#, c-format
+msgid "^1%s^1 was thrown into a world of hurt by %s\n"
+msgstr "^1%s^1 a été lancé vers un monde de souffrance par %s\n"
+
+#: qcsrc/client/hud.qc:1590
+#, c-format
+msgid "^1%s^1 was crushed by %s\n"
+msgstr "^1%s^1 a été aplati par %s\n"
+
+#: qcsrc/client/hud.qc:1594
+#, c-format
+msgid "^1%s^1 got shredded by %s\n"
+msgstr "^1%s^1 a été déchiqueté par %s\n"
+
+#: qcsrc/client/hud.qc:1598
+#, c-format
+msgid "^1%s^1 was blasted to bits by %s\n"
+msgstr "^1%s^1 a été"
+
+#: qcsrc/client/hud.qc:1602
+#, c-format
+msgid "^1%s^1 got caught in the destruction of %s^1's vehicle\n"
+msgstr "^1%s^1 a été tué dans la destruction du véhicule de %s\n"
+
+#: qcsrc/client/hud.qc:1606
+#, c-format
+msgid "^1%s^1 was bolted down by %s\n"
+msgstr "^1%s^1 a été éléctrocuté par %s\n"
+
+#: qcsrc/client/hud.qc:1610
+#, c-format
+msgid "^1%s^1 could find no shelter from %s^1's rockets\n"
+msgstr "^1%s^1"
+
+#: qcsrc/client/hud.qc:1614
+#, c-format
+msgid "^1%s^1 dies when %s^1's wakizashi dies.\n"
+msgstr "^1%s^1 meurt quand %s^1 meurt."
+
+#: qcsrc/client/hud.qc:1618
+#, c-format
+msgid "^1%s^1 nailed to hell by %s\n"
+msgstr "^1%s^1 a été cloué par %s\n"
+
+#: qcsrc/client/hud.qc:1622
+#, c-format
+msgid "^1%s^1 cluster crushed by %s\n"
+msgstr "^1%s^1 a été écrabouillé par %s\n"
+
+#: qcsrc/client/hud.qc:1626
+#, c-format
+msgid "^1%s^1 dies when %s^1's raptor dies.\n"
+msgstr "^1%s^1 meurt quand le raptor de %s^1 meurt."
+
+#: qcsrc/client/hud.qc:1630
+#, c-format
+msgid "^1%s^1 was pushed into the line of fire by %s\n"
+msgstr "^1%s^1 a été poussé vers du feu par %s\n"
+
+#: qcsrc/client/hud.qc:1634
+#, c-format
+msgid "^1%s^1 was pushed into an accident by %s\n"
+msgstr "^1%s^1 a été poussé vers la mort par %s\n"
+
+#: qcsrc/client/hud.qc:1638
+#, c-format
+msgid "^1%s^1 was unfairly eliminated by %s\n"
+msgstr "^1%s^1 a été éliminé par %s\n"
+
+#: qcsrc/client/hud.qc:1642
+#, c-format
+msgid "^1%s^1 was burnt to death by %s\n"
+msgstr "^1%s^1 a été brûlé à mort par %s\n"
+
+#: qcsrc/client/hud.qc:1654
+#, c-format
+msgid "^1%s^1 was fragged by %s\n"
+msgstr "^1%s^1 a été fraggué par %s\n"
+
+#: qcsrc/client/hud.qc:1659
+#, c-format
+msgid "^1%s^1's %s scoring spree was ended by %s\n"
+msgstr "La chaîne de tués de ^1%s^1 a été finie par %s\n"
+
+#: qcsrc/client/hud.qc:1661
+#, c-format
+msgid "^1%s^1's %s kill spree was ended by %s\n"
+msgstr "La chaîne de tués de ^1%s^1 a été finie par %s\n"
+
+#: qcsrc/client/hud.qc:1664
+#, c-format
+msgid "^1%s^1 made %s scores in a row\n"
+msgstr "^1%s^1 a tué %s personnes sans mourir"
+
+#: qcsrc/client/hud.qc:1666
+#, c-format
+msgid "^1%s^1 has %s frags in a row\n"
+msgstr "^1%s^1 a tué %s personnes sans mourir"
+
+#: qcsrc/client/hud.qc:1669
+#, c-format
+msgid "%s^7 made a ^1TRIPLE SCORE\n"
+msgstr "%s^7 a fait un ^1TRIPLE SCORE\n"
+
+#: qcsrc/client/hud.qc:1671
+#, c-format
+msgid "%s^7 made a ^1TRIPLE FRAG\n"
+msgstr "%s^7 a fait un ^1TRIPLE FRAG\n"
+
+#: qcsrc/client/hud.qc:1674
+#, c-format
+msgid "%s^7 unleashes ^1SCORING RAGE\n"
+msgstr "%s^7 est ENRAGÉ\n"
+
+#: qcsrc/client/hud.qc:1676
+#, c-format
+msgid "%s^7 unleashes ^1RAGE\n"
+msgstr "%s^7 est ENRAGÉ\n"
+
+#: qcsrc/client/hud.qc:1679
+#, c-format
+msgid "%s^7 made ^1TEN SCORES IN A ROW!\n"
+msgstr "%s^7 a fait ^1DIX SCORES D'AFFILÉE !"
+
+#: qcsrc/client/hud.qc:1681
+#, c-format
+msgid "%s^7 starts the ^1MASSACRE!\n"
+msgstr "%s^7 a commencé un ^1MASSACRE !\n"
+
+#: qcsrc/client/hud.qc:1684
+#, c-format
+msgid "%s^7 made ^1FIFTEEN SCORES IN A ROW!\n"
+msgstr "%s^7 a fait ^1QUINZE SCORES D'AFFILÉE !\n"
+
+#: qcsrc/client/hud.qc:1686
+#, c-format
+msgid "%s^7 executes ^1MAYHEM!\n"
+msgstr "%s^7 éxécutes un ^1MAYHEM !\n"
+
+#: qcsrc/client/hud.qc:1689
+#, c-format
+msgid "%s^7 made ^1TWENTY SCORES IN A ROW!\n"
+msgstr "%s^7 a fait ^1VINGT SCORES D'AFFILÉE !\n"
+
+#: qcsrc/client/hud.qc:1691
+#, c-format
+msgid "%s^7 is a ^1BERSERKER!\n"
+msgstr "%s^7 est un ^1BERSERKER !"
+
+#: qcsrc/client/hud.qc:1694
+#, c-format
+msgid "%s^7 made ^1TWENTY FIVE SCORES IN A ROW!\n"
+msgstr "%s^7 a fait ^1VINGT-CINQ SCORES D'AFFILÉE !\n"
+
+#: qcsrc/client/hud.qc:1696
+#, c-format
+msgid "%s^7 inflicts ^1CARNAGE!\n"
+msgstr "%s^7 a infligé un ^1CARNAGE !\n"
+
+#: qcsrc/client/hud.qc:1699
+#, c-format
+msgid "%s^7 made ^1THIRTY SCORES IN A ROW!\n"
+msgstr "%s^7 a fait ^1TRENTE SCORES D'AFFILÉE !\n"
+
+#: qcsrc/client/hud.qc:1701
+#, c-format
+msgid "%s^7 unleashes ^1ARMAGEDDON!\n"
+msgstr "%s^7 a fait un ^1ARMAGEDDON !\n"
+
+#: qcsrc/client/hud.qc:1709
+#, c-format
+msgid "^1%s^1 was in the water for too long\n"
+msgstr "^1%s^1 est resté dans l'eau trop longtemps\n"
+
+#: qcsrc/client/hud.qc:1711
+#, c-format
+msgid "^1%s^1 drowned\n"
+msgstr "^1%s^1 s'est noyé\n"
+
+#: qcsrc/client/hud.qc:1716
+#, c-format
+msgid "^1%s^1 was slimed\n"
+msgstr "^1%s^1 a été acidulé\n"
+
+#: qcsrc/client/hud.qc:1722
+#, c-format
+msgid "^1%s^1 found a hot place\n"
+msgstr "^1%s^1 a trouvé un endroit chaud\n"
+
+#: qcsrc/client/hud.qc:1724
+#, c-format
+msgid "^1%s^1 turned into hot slag\n"
+msgstr "^1%s^1 s'est transformé en merguez\n"
+
+#: qcsrc/client/hud.qc:1731
+#, c-format
+msgid "^1%s^1 tested gravity (and it worked)\n"
+msgstr "^1%s^1 a testé la gravité (et ça marche)\n"
+
+#: qcsrc/client/hud.qc:1733
+#, c-format
+msgid "^1%s^1 hit the ground with a crunch\n"
+msgstr "^1%s^1 s'est écrasé sur le sol\n"
+
+#: qcsrc/client/hud.qc:1738
+#, c-format
+msgid "^1%s^1 became a shooting star\n"
+msgstr "^1%s^1 est devenue une étoile filante\n"
+
+#: qcsrc/client/hud.qc:1744
+#, c-format
+msgid "^1%s^1 discovered a swamp\n"
+msgstr "^1%s^1 a découvert un marécage\n"
+
+#: qcsrc/client/hud.qc:1746
+#, c-format
+msgid "^1%s^1 is now conserved for centuries to come\n"
+msgstr "^1%s^1 est maintenant conservé pour les siècles à venir\n"
+
+#: qcsrc/client/hud.qc:1751
+#, c-format
+msgid "^1%s^1 was mowed down by a turret \n"
+msgstr "^1%s^1 a été tué par une tourelle\n"
+
+#: qcsrc/client/hud.qc:1763
+#, c-format
+msgid "^1%s^1 died in an accident\n"
+msgstr "^1%s^1 est mort dans un accident\n"
+
+#: qcsrc/client/hud.qc:1767
+#, c-format
+msgid "^1%s^1 was unfairly eliminated\n"
+msgstr "^1%s^1 a été éliminé\n"
+
+#: qcsrc/client/hud.qc:1773
+#, c-format
+msgid "^1%s^1 felt a little hot\n"
+msgstr "^1%s^1 avait un peu chaud\n"
+
+#: qcsrc/client/hud.qc:1775
+#, c-format
+msgid "^1%s^1 burnt to death\n"
+msgstr "^1%s^1 a été brûlé à mort\n"
+
+#: qcsrc/client/hud.qc:1782
+#, c-format
+msgid "^1%s^1 needs a restart\n"
+msgstr "^1%s^1 avait besoin d'un nouveau départ\n"
+
+#: qcsrc/client/hud.qc:1789
+#, c-format
+msgid "^1%s^1 needs a restart after a %d scoring spree\n"
+msgstr "^1%s^1 avait besoin d'un nouveau départ après une chaîne de scores de %d\n"
+
+#: qcsrc/client/hud.qc:1791
+#, c-format
+msgid "^1%s^1 died with a %d kill spree\n"
+msgstr "^1%s^1 est mort après avoir fait une chaîne de %d tués\n"
+
+#: qcsrc/client/hud.qc:1795
+#, c-format
+msgid "%s^7 got the %s\n"
+msgstr "%s^7 a pris le %s\n"
+
+#: qcsrc/client/hud.qc:1798
+#, c-format
+msgid "%s^7 lost the %s\n"
+msgstr "%S^7 a perdu le %s\n"
+
+#: qcsrc/client/hud.qc:1801
+#, c-format
+msgid "%s^7 picked up the %s\n"
+msgstr "%s^7 a collecté le %s\n"
+
+#: qcsrc/client/hud.qc:1804
+#, c-format
+msgid "%s^7 returned the %s\n"
+msgstr "%s^7 a retourné le %s\n"
+
+#: qcsrc/client/hud.qc:1807
+#, c-format
+msgid "%s^7 captured the %s%s\n"
+msgstr "%s^7 a capturé le %s%s\n"
+
+#: qcsrc/client/hud.qc:1826
+#, c-format
+msgid "%s^7 has picked up the ball!\n"
+msgstr "%s^7 a collecté la balle !\n"
+
+#: qcsrc/client/hud.qc:1831
+#, c-format
+msgid "%s^7 has dropped the ball!\n"
+msgstr "%s^7 a lâché la balle !\n"
+
+#: qcsrc/client/hud.qc:1842
+#, c-format
+msgid "You are now on: %s"
+msgstr "Vous êtes maintenant dans l'%s"
+
+#: qcsrc/client/hud.qc:1844
+#, c-format
+msgid ""
+"You have been moved into a different team to improve team balance\n"
+"You are now on: %s"
+msgstr ""
+"Vous avez été changé d'équipe pour améliorer l'équilibre des équipes\n"
+"Vous êtes maintenant dans l'%s"
+
+#: qcsrc/client/hud.qc:1847
+msgid "^1Reconsider your tactics, camper!"
+msgstr "^1Change de tactique, campeur !"
+
+#: qcsrc/client/hud.qc:1849
+msgid "^1Die camper!"
+msgstr "^1Meurs campeur !"
+
+#: qcsrc/client/hud.qc:1852
+msgid "^1You are reinserted into the game for running out of ammo..."
+msgstr "^1Vous avez été réinséré dans le jeu car vous n'aviez plus de munitions..."
+
+#: qcsrc/client/hud.qc:1854
+msgid "^1You were killed for running out of ammo..."
+msgstr "^1Vous avez été tué car vous n'aviez plus de munitions..."
+
+#: qcsrc/client/hud.qc:1857
+msgid "^1You need to preserve your health"
+msgstr "^1Vous aviez besoin de préserver votre santé"
+
+#: qcsrc/client/hud.qc:1859
+msgid "^1You grew too old without taking your medicine"
+msgstr "^1Vous êtes deven trop vieux et vous n'aviez pas pris vos médicaments"
+
+#: qcsrc/client/hud.qc:1862
+msgid "^1Don't go against team mates!"
+msgstr "^1Ne tirez pas sur vos équipiers !"
+
+#: qcsrc/client/hud.qc:1864
+msgid "^1Don't shoot your team mates!"
+msgstr "^1Ne tirez pas sur vos équipiers !"
+
+#: qcsrc/client/hud.qc:1869
+msgid "^1You need to be more careful!"
+msgstr "^1Vous devez être plus prudent !"
+
+#: qcsrc/client/hud.qc:1871
+msgid "^1You killed your own dumb self!"
+msgstr "^1Vous vous êtes suicidé !"
+
+#: qcsrc/client/hud.qc:1876
+#, c-format
+msgid "^1Moron! You went against ^7%s^1, a team mate!"
+msgstr "Idiot ! Vous avez tué ^7%s^1, un équipier!"
+
+#: qcsrc/client/hud.qc:1878
+#, c-format
+msgid "^1Moron! You fragged ^7%s^1, a team mate!"
+msgstr "^1Idiot ! Vous avez tué ^7%s^1, un équipier !"
+
+#: qcsrc/client/hud.qc:1882
+msgid "^1First score"
+msgstr "^1Premier score"
+
+#: qcsrc/client/hud.qc:1884
+msgid "^1First blood"
+msgstr "^1Premier tué"
+
+#: qcsrc/client/hud.qc:1888
+msgid "^1First casualty"
+msgstr "^1Première victime"
+
+#: qcsrc/client/hud.qc:1890
+msgid "^1First victim"
+msgstr "^1Première victime"
+
+#: qcsrc/client/hud.qc:1894
+#, c-format
+msgid "^1You scored against ^7%s^1 who was typing!"
+msgstr "^1Vous avez scoré ^7%s^1 qui était en train de taper !"
+
+#: qcsrc/client/hud.qc:1896
+#, c-format
+msgid "^1You typefragged ^7%s"
+msgstr "^1Vous avez typefraggué ^7%s"
+
+#: qcsrc/client/hud.qc:1900
+#, c-format
+msgid "^1You were scored against by ^7%s^1 while you were typing!"
+msgstr "^1Vous avez été scoré par ^7%s^1 pendant que vous tapiez!"
+
+#: qcsrc/client/hud.qc:1902
+#, c-format
+msgid "^1You were typefragged by ^7%s"
+msgstr "^1Vous avez été typefraggué par ^7%s"
+
+#: qcsrc/client/hud.qc:1906
+#, c-format
+msgid "^4You scored against ^7%s"
+msgstr "^4Vous avez scoré contre ^7%s"
+
+#: qcsrc/client/hud.qc:1908
+#, c-format
+msgid "^4You fragged ^7%s"
+msgstr "^4Vous avez fraggué ^7%s"
+
+#: qcsrc/client/hud.qc:1912
+#, c-format
+msgid "^1You were scored against by ^7%s"
+msgstr "^1Vous avez été scoré par ^7%s"
+
+#: qcsrc/client/hud.qc:1914
+#, c-format
+msgid "^1You were fragged by ^7%s"
+msgstr "^1Vous avez été fraggué pr ^7%s"
+
+#: qcsrc/client/hud.qc:1919
+msgid "^1Watch your step!"
+msgstr "^1Attention à la marche !"
+
+#: qcsrc/client/hud.qc:1988 qcsrc/client/hud.qc:1989 qcsrc/client/hud.qc:2474
+#, c-format
+msgid "Player %d"
+msgstr "Joueur %d"
+
+#: qcsrc/client/hud.qc:2779
+msgid "^1Intermediate 1 (+15.42)"
+msgstr "^1Intermédiaire 1 (+15.42)"
+
+#: qcsrc/client/hud.qc:2781 qcsrc/client/hud.qc:2823 qcsrc/client/hud.qc:2864
+#, c-format
+msgid "^1PENALTY: %.1f (%s)"
+msgstr "^1PÉNALITÉ: %.1f (%s)"
+
+#: qcsrc/client/hud.qc:2866
+#, c-format
+msgid "^2PENALTY: %.1f (%s)"
+msgstr "^2PÉLANITÉ %.1f (%s)"
+
+#: qcsrc/client/hud.qc:2894
+msgid "^1You must answer before entering hud configure mode\n"
+msgstr "^1Vous devez répondre avant d'entrer le mode de configuration de l'interface\n"
+
+#: qcsrc/client/hud.qc:2897
+msgid "^2Name ^7instead of \"^1Unregistered player^7\" in stats"
+msgstr "^2Votre pseudonyme ^7à la place de \"^1Unregistered player^7\" dans les statistiques"
+
+#: qcsrc/client/hud.qc:2979
+msgid "A vote has been called for:"
+msgstr "Un vote a été lancé pour :"
+
+#: qcsrc/client/hud.qc:2981
+msgid "Allow servers to store and display your name?"
+msgstr "Autoriser les serveurs à stocker et afficher votre pseudonyme ?"
+
+#: qcsrc/client/hud.qc:2985
+msgid "^1Configure the HUD"
+msgstr "^1Configurer l'interface"
+
+#: qcsrc/client/hud.qc:2989
+#, c-format
+msgid "Yes (%s): %d"
+msgstr "Oui (%s): %d"
+
+#: qcsrc/client/hud.qc:2991
+#, c-format
+msgid "No (%s): %d"
+msgstr "Non (%s): %d"
+
+#: qcsrc/client/hud.qc:3494 qcsrc/client/hud.qc:3497 qcsrc/client/hud.qc:3499
+msgid "Personal best"
+msgstr "Record personnel"
+
+#: qcsrc/client/hud.qc:3512 qcsrc/client/hud.qc:3515 qcsrc/client/hud.qc:3517
+msgid "Server best"
+msgstr "Record du serveur"
+
+#: qcsrc/client/hud.qc:3861
+msgid "^3Player^7: This is the chat area."
+msgstr "^3Joueur^7: Ceci est la zone du chat."
+
+#: qcsrc/client/hud.qc:3929
+#, c-format
+msgid "FPS: %.*f"
+msgstr "FPS: %.*f"
+
+#: qcsrc/client/hud.qc:3996
+msgid "^1Observing"
+msgstr "^1Observation"
+
+#: qcsrc/client/hud.qc:3998
+#, c-format
+msgid "^1Spectating: ^7%s"
+msgstr "^1En spectateur sur : ^7%s"
+
+#: qcsrc/client/hud.qc:4002
+#, c-format
+msgid "^1Press ^3%s^1 to spectate"
+msgstr "^1Appuyez sur ^3%s^1 pour être en spectateur sur un joueur"
+
+#: qcsrc/client/hud.qc:4004
+#, c-format
+msgid "^1Press ^3%s^1 for another player"
+msgstr "^1Appuyez sur ^3%s^1 pour un autre joueur"
+
+#: qcsrc/client/hud.qc:4008
+#, c-format
+msgid "^1Use ^3%s^1 or ^3%s^1 to change the speed"
+msgstr "^1Utilisez ^3%s^1 ou ^3%s^1 pour changer la vitesse"
+
+#: qcsrc/client/hud.qc:4010
+#, c-format
+msgid "^1Press ^3%s^1 to observe"
+msgstr "^1Utiliez ^3ùs^1 pour observer"
+
+#: qcsrc/client/hud.qc:4013
+#, c-format
+msgid "^1Press ^3%s^1 for gamemode info"
+msgstr "^1Appuyez sur ^3%s^1 pour de l'information"
+
+#: qcsrc/client/hud.qc:4017
+msgid "^1Wait for your turn to join"
+msgstr "^1Attendez votre tour pour jouer"
+
+#: qcsrc/client/hud.qc:4023
+msgid "^1Match has already begun"
+msgstr "^1La partie a déjà commencé"
+
+#: qcsrc/client/hud.qc:4025
+msgid "^1You have no more lives left"
+msgstr "^1Vous n'avez plus de vies"
+
+#: qcsrc/client/hud.qc:4027 qcsrc/client/hud.qc:4030
+#, c-format
+msgid "^1Press ^3%s^1 to join"
+msgstr "^1Appuyez sur ^3%s^1 pour jouer"
+
+#: qcsrc/client/hud.qc:4038
+#, c-format
+msgid "^1Game starts in ^3%d^1 seconds"
+msgstr "^1La partie commence dans ^3%d^1 secondes"
+
+#: qcsrc/client/hud.qc:4045
+msgid "^2Currently in ^1warmup^2 stage!"
+msgstr "^2Actuellement en ^1mode échauffement^2 !"
+
+#: qcsrc/client/hud.qc:4060
+#, c-format
+msgid "%sPress ^3%s%s to end warmup"
+msgstr "%sAppuyez sur ^3%s%s pour finir l'échauffement"
+
+#: qcsrc/client/hud.qc:4062
+#, c-format
+msgid "%sPress ^3%s%s once you are ready"
+msgstr "%sAppuyez sur ^3%s%s quand vous êtes prêt"
+
+#: qcsrc/client/hud.qc:4067
+msgid "^2Waiting for others to ready up to end warmup..."
+msgstr "^2En attente des autres joueurs pour finir l'échauffement..."
+
+#: qcsrc/client/hud.qc:4069
+msgid "^2Waiting for others to ready up..."
+msgstr "^2En attente des autres joueurs pour être prêt..."
+
+#: qcsrc/client/hud.qc:4075
+#, c-format
+msgid "^2Press ^3%s^2 to end warmup"
+msgstr "^2Appuyez sur ^3%s^2 pour finir l'échauffement"
+
+#: qcsrc/client/hud.qc:4096
+msgid "Teamnumbers are unbalanced!"
+msgstr "Les équipes ne sont pas équilibrées !"
+
+#: qcsrc/client/hud.qc:4101
+#, c-format
+msgid " Press ^3%s%s to adjust"
+msgstr " Appuyez sur ^3%s%s pour ajuster"
+
+#: qcsrc/client/hud.qc:4109
+msgid "^7Press ^3ESC ^7to show HUD options."
+msgstr "^7Appuyez sur ^3ESC ^7pour afficher les options de l'interface."
+
+#: qcsrc/client/hud.qc:4111
+msgid "^3Doubleclick ^7a panel for panel-specific options."
+msgstr "^3Double-cliquez ^7un panneau pour des options."
+
+#: qcsrc/client/hud.qc:4113
+msgid "^3CTRL ^7to disable collision testing, ^3SHIFT ^7and"
+msgstr "^3Contrôle ^7pour désactiver le test de collision, ^3Majuscule ^7 et"
+
+#: qcsrc/client/hud.qc:4115
+msgid "^3ALT ^7+ ^3ARROW KEYS ^7for fine adjustments."
+msgstr "^3Alt ^7+ ^3Flèches ^7 pour des ajustements précis."
+
+#: qcsrc/client/hud.qc:4153
+msgid " qu/s"
+msgstr " qu/s"
+
+#: qcsrc/client/hud.qc:4157
+msgid " m/s"
+msgstr " m/s"
+
+#: qcsrc/client/hud.qc:4161
+msgid " km/h"
+msgstr " km/h"
+
+#: qcsrc/client/hud.qc:4165
+msgid " mph"
+msgstr " mph"
+
+#: qcsrc/client/hud.qc:4169
+msgid " knots"
+msgstr " nœuds"
+
+#: qcsrc/client/hud.qc:4814
+msgid "Automatically fixed wrong/missing panel numbers in _hud_panelorder\n"
+msgstr "Nombres des panneaux faux/manquants fixés dans _hud_panelorder\n"
+
+#: qcsrc/client/target_music.qc:93 qcsrc/client/target_music.qc:181
+#, c-format
+msgid "Cannot initialize sound %s\n"
+msgstr "Ne peut initialiser le son %s\n"
+
+#: qcsrc/server/w_rifle.qc:233
+#, c-format
+msgid "%s shot themself automatically"
+msgstr "%s s'est tiré sur lui-même"
+
+#: qcsrc/server/w_rifle.qc:235
+#, c-format
+msgid "%s sniped themself somehow"
+msgstr "%s s'est tiré une balle dans la tête"
+
+#: qcsrc/server/w_rifle.qc:242
+#, c-format
+msgid "%s failed to hide from %s's bullet hail"
+msgstr "%s n'a pas pu se cacher de la chaîne de balles de %s"
+
+#: qcsrc/server/w_rifle.qc:244
+#, c-format
+msgid "%s died in %s's bullet hail"
+msgstr "%s est mort dans la chaîne de balles de %s"
+
+#: qcsrc/server/w_rifle.qc:251
+#, c-format
+msgid "%s failed to hide from %s's rifle"
+msgstr "%s n'a pas réussi à se cacher du fusil sniper de %s"
+
+#: qcsrc/server/w_rifle.qc:256
+#, c-format
+msgid "%s got hit in the head by %s"
+msgstr "%s a été tiré dans la tête par %s"
+
+#: qcsrc/server/w_rifle.qc:258 qcsrc/server/w_uzi.qc:321
+#, c-format
+msgid "%s was sniped by %s"
+msgstr "%s a été snipé par %s"
+
+#: qcsrc/server/w_uzi.qc:317 qcsrc/server/w_shotgun.qc:215
+#: qcsrc/server/w_minstanex.qc:293 qcsrc/server/w_nex.qc:253
+#, c-format
+msgid "%s is now thinking with portals"
+msgstr "%s pense maintenant avec les portails"
+
+#: qcsrc/server/w_uzi.qc:323
+#, c-format
+msgid "%s was riddled full of holes by %s"
+msgstr "%s a été cribblé de balles par %s"
+
+#: qcsrc/server/w_rocketlauncher.qc:501 qcsrc/server/w_minelayer.qc:523
+#, c-format
+msgid "%s exploded"
+msgstr "%s a explosé"
+
+#: qcsrc/server/w_rocketlauncher.qc:505
+#, c-format
+msgid "%s got too close to %s's rocket"
+msgstr "%s s'est trop approché de la roquette de %s"
+
+#: qcsrc/server/w_rocketlauncher.qc:507
+#, c-format
+msgid "%s almost dodged %s's rocket"
+msgstr "%s a presque évité la roquette de %s"
+
+#: qcsrc/server/w_rocketlauncher.qc:509
+#, c-format
+msgid "%s ate %s's rocket"
+msgstr "%s a mangé la roquette de %s"
+
+#: qcsrc/server/w_porto.qc:296 qcsrc/server/w_hook.qc:266
+#, c-format
+msgid "%s did the impossible"
+msgstr "%s a fait l'impossible"
+
+#: qcsrc/server/w_porto.qc:298
+#, c-format
+msgid "%s felt %s doing the impossible to him"
+msgstr "%s a senti %s faire l'impossible"
+
+#: qcsrc/server/w_hook.qc:2
+msgid "Grappling Hook"
+msgstr "Grappin"
+
+#: qcsrc/server/w_hook.qc:268
+#, c-format
+msgid "%s has run into %s's gravity bomb"
+msgstr "%s s'est jeté sur la bombe à gravité de %s"
+
+#: qcsrc/server/w_electro.qc:574
+#, c-format
+msgid "%s could not remember where they put plasma"
+msgstr "%s n'a pas pu se souvenir où il a mis du plasma"
+
+#: qcsrc/server/w_electro.qc:576
+#, c-format
+msgid "%s played with plasma"
+msgstr "%s a joué avec du plasma"
+
+#: qcsrc/server/w_electro.qc:583
+#, c-format
+msgid "%s just noticed %s's blue ball"
+msgstr "%s vient juste de remarquer la boule bleue de %s"
+
+#: qcsrc/server/w_electro.qc:585
+#, c-format
+msgid "%s got in touch with %s's blue ball"
+msgstr "%s a pu toucher la boule bleue de %s"
+
+#: qcsrc/server/w_electro.qc:590
+#, c-format
+msgid "%s felt the electrifying air of %s's combo"
+msgstr "%s a ressenti l'air éléctrique du combo de %s"
+
+#: qcsrc/server/w_electro.qc:592
+#, c-format
+msgid "%s got too close to %s's blue beam"
+msgstr "%s s'est trop rapproché du laser bleu de %s"
+
+#: qcsrc/server/w_electro.qc:594
+#, c-format
+msgid "%s was blasted by %s's blue beam"
+msgstr "%s a été pulvérise par le laser bleu de %s"
+
+#: qcsrc/server/w_laser.qc:311
+#, c-format
+msgid "%s lasered themself to hell"
+msgstr "%s s'est suicidé au laser"
+
+#: qcsrc/server/w_laser.qc:315
+#, c-format
+msgid "%s was cut in half by %s's gauntlet"
+msgstr "%s a été coupé en deux par la tronçonneuse de %s"
+
+#: qcsrc/server/w_laser.qc:317
+#, c-format
+msgid "%s was lasered to death by %s"
+msgstr "%s a été tué au laser au %s"
+
+#: qcsrc/server/w_shotgun.qc:219
+#, c-format
+msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun"
+msgstr "%2$s ^7a baffé %1$s ^7avec un gros ^2fusil"
+
+#: qcsrc/server/w_shotgun.qc:221
+#, c-format
+msgid "%s was gunned by %s"
+msgstr "%s a été fusillé par %s"
+
+#: qcsrc/server/w_tuba.qc:2
+#, c-format
+msgid "@!#%'n Tuba"
+msgstr "@!#%'n Tuba"
+
+#: qcsrc/server/w_tuba.qc:252
+#, c-format
+msgid "%s hurt his own ears with the @!#%%'n Tuba"
+msgstr "%s est devenu sourd à cause de son @!#%%'n Tuba"
+
+#: qcsrc/server/w_tuba.qc:256
+#, c-format
+msgid "%s died of %s's great playing on the @!#%%'n Tuba"
+msgstr "%s est devenu sourd à cause du @!#%%'n Tuba de %s"
+
+#: qcsrc/server/w_minstanex.qc:2
+msgid "MinstaNex"
+msgstr "MinstaNex"
+
+#: qcsrc/server/w_minstanex.qc:295 qcsrc/server/w_nex.qc:255
+#, c-format
+msgid "%s has been vaporized by %s"
+msgstr "%s a été vaporisé par %s"
+
+#: qcsrc/server/w_crylink.qc:664
+#, c-format
+msgid "%s succeeded at self-destructing themself with the Crylink"
+msgstr "%s a réussi à se suicider au Crylink"
+
+#: qcsrc/server/w_crylink.qc:669
+#, c-format
+msgid "%s could not hide from %s's Crylink"
+msgstr "%s n'a pas pu se cacher du Crylink de %s"
+
+#: qcsrc/server/w_crylink.qc:671
+#, c-format
+msgid "%s was too close to %s's Crylink"
+msgstr "%s s'est trop rapproché du Crylink de %s"
+
+#: qcsrc/server/w_crylink.qc:673
+#, c-format
+msgid "%s took a close look at %s's Crylink"
+msgstr "%s a regardé le Crylink de %s de trop près"
+
+#: qcsrc/server/w_hlac.qc:2
+msgid "Heavy Laser Assault Cannon"
+msgstr "Cannon Laser d'Assault Lourd"
+
+#: qcsrc/server/w_hlac.qc:240 qcsrc/server/w_fireball.qc:419
+#, c-format
+msgid "%s should have used a smaller gun"
+msgstr "%s aurait dû utiliser une arme plus petite"
+
+#: qcsrc/server/w_hlac.qc:242
+#, c-format
+msgid "%s was cut down by %s"
+msgstr "%s a été coupé par %s"
+
+#: qcsrc/server/w_grenadelauncher.qc:383
+#, c-format
+msgid "%s tried out his own grenade"
+msgstr "%s a testé sa propre grenade"
+
+#: qcsrc/server/w_grenadelauncher.qc:385
+#, c-format
+msgid "%s detonated"
+msgstr "%s s'est détoné"
+
+#: qcsrc/server/w_grenadelauncher.qc:391
+#, c-format
+msgid "%s didn't see %s's grenade"
+msgstr "%s n'a pas vu la grenade de %s"
+
+#: qcsrc/server/w_grenadelauncher.qc:393
+#, c-format
+msgid "%s almost dodged %s's grenade"
+msgstr "%s a presque évité la grenade de %s"
+
+#: qcsrc/server/w_grenadelauncher.qc:395
+#, c-format
+msgid "%s ate %s's grenade"
+msgstr "%s a mangé la grenade de %s"
+
+#: qcsrc/server/w_hagar.qc:382 qcsrc/server/w_seeker.qc:655
+#, c-format
+msgid "%s played with tiny rockets"
+msgstr "%s a joué avec des mini-roquettes"
+
+#: qcsrc/server/w_hagar.qc:386
+#, c-format
+msgid "%s hoped %s's missiles wouldn't bounce"
+msgstr "%s avait espéré que les missiles de %s ne rebondissaient pas"
+
+#: qcsrc/server/w_hagar.qc:388 qcsrc/server/w_seeker.qc:661
+#, c-format
+msgid "%s was pummeled by %s"
+msgstr "%s a été pommelé par %s"
+
+#: qcsrc/server/w_seeker.qc:2
+msgid "T.A.G. Seeker"
+msgstr "T.A.G. Chercheur"
+
+#: qcsrc/server/w_seeker.qc:659
+#, c-format
+msgid "%s was tagged by %s"
+msgstr "%s a été tagué par %s"
+
+#: qcsrc/server/w_fireball.qc:417
+#, c-format
+msgid "%s forgot about some firemine"
+msgstr "%s est devenu une torche vivante pendant quelques secondes"
+
+#: qcsrc/server/w_fireball.qc:426
+#, c-format
+msgid "%s tried to catch %s's firemine"
+msgstr "%s a essayé d'attraper la mine de feu de %s"
+
+#: qcsrc/server/w_fireball.qc:428
+#, c-format
+msgid "%s fatefully ignored %s's firemine"
+msgstr "%s a ignoré la mine de feu de %s"
+
+#: qcsrc/server/w_fireball.qc:435
+#, c-format
+msgid "%s could not hide from %s's fireball"
+msgstr "%s n'a pas pu se cacher de la boule de feu de %s"
+
+#: qcsrc/server/w_fireball.qc:437
+#, c-format
+msgid "%s saw the pretty lights of %s's fireball"
+msgstr "%s a vu la belle lumière de la boule de feu de %s"
+
+#: qcsrc/server/w_fireball.qc:440
+#, c-format
+msgid "%s got too close to %s's fireball"
+msgstr "%s a regardé la boule de feu de %s de trop près"
+
+#: qcsrc/server/w_fireball.qc:442
+#, c-format
+msgid "%s tasted %s's fireball"
+msgstr "%s a goûté la boule de feu de %s"
+
+#: qcsrc/server/w_minelayer.qc:527
+#, c-format
+msgid "%s got too close to %s's mine"
+msgstr "%s s'est trop rapproché de la mine de %s"
+
+#: qcsrc/server/w_minelayer.qc:529
+#, c-format
+msgid "%s almost dodged %s's mine"
+msgstr "%s a presque évité la mine de %s"
+
+#: qcsrc/server/w_minelayer.qc:531
+#, c-format
+msgid "%s stepped on %s's mine"
+msgstr "%s a marché sur la mine de %s"
index 9b009bda136a63818e6f52e0b344cb25747eee6e..503b35591d198c93122879bdb5c316dcbc63a971 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-12-25 22:57+0100\n"
+"POT-Creation-Date: 2012-01-26 12:24+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,738 +17,673 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: qcsrc/client/target_music.qc:93 qcsrc/client/target_music.qc:181
-#, c-format
-msgid "Cannot initialize sound %s\n"
-msgstr ""
-
-#: qcsrc/client/hud_config.qc:185
-#, c-format
-msgid "^2Successfully exported to %s! (Note: It's saved in data/data/)\n"
+#: qcsrc/client/scoreboard.qc:19
+msgid "SCO^bckills"
 msgstr ""
 
-#: qcsrc/client/hud_config.qc:189
-#, c-format
-msgid "^1Couldn't write to %s\n"
+#: qcsrc/client/scoreboard.qc:20
+msgid "SCO^bctime"
 msgstr ""
 
-#: qcsrc/client/miscfunctions.qc:100
-msgid "Trying to remove a team which is not in the teamlist!"
+#: qcsrc/client/scoreboard.qc:21
+msgid "SCO^caps"
 msgstr ""
 
-#: qcsrc/client/csqcmodel_hooks.qc:17
-#, c-format
-msgid "Trying to use non existing model %s. "
+#: qcsrc/client/scoreboard.qc:22
+msgid "SCO^deaths"
 msgstr ""
 
-#: qcsrc/client/csqcmodel_hooks.qc:19
-#, c-format
-msgid "Reverted to %s.\n"
+#: qcsrc/client/scoreboard.qc:23
+msgid "SCO^destroyed"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:254
-msgid "Push"
+#: qcsrc/client/scoreboard.qc:24
+msgid "SCO^drops"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:255
-msgid "Destroy"
+#: qcsrc/client/scoreboard.qc:25
+msgid "SCO^faults"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:256
-msgid "Defend"
+#: qcsrc/client/scoreboard.qc:26
+msgid "SCO^fckills"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:257
-msgid "Blue base"
+#: qcsrc/client/scoreboard.qc:27
+msgid "SCO^goals"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:258
-msgid "DANGER"
+#: qcsrc/client/scoreboard.qc:28
+msgid "SCO^kckills"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:259
-msgid "Flag carrier"
+#: qcsrc/client/scoreboard.qc:29
+msgid "SCO^kdratio"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:260
-msgid "Dropped flag"
+#: qcsrc/client/scoreboard.qc:30
+msgid "SCO^k/d"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:261
-msgid "Help me!"
+#: qcsrc/client/scoreboard.qc:31
+msgid "SCO^kd"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:262
-msgid "Here"
+#: qcsrc/client/scoreboard.qc:32
+msgid "SCO^kdr"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:263
-msgid "Dropped key"
+#: qcsrc/client/scoreboard.qc:33
+msgid "SCO^kills"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:264 qcsrc/client/waypointsprites.qc:266
-#: qcsrc/client/waypointsprites.qc:267 qcsrc/client/waypointsprites.qc:268
-#: qcsrc/client/waypointsprites.qc:269
-msgid "Key carrier"
+#: qcsrc/client/scoreboard.qc:34
+msgid "SCO^laps"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:265
-msgid "Run here"
+#: qcsrc/client/scoreboard.qc:35
+msgid "SCO^lives"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:270
-msgid "Red base"
+#: qcsrc/client/scoreboard.qc:36
+msgid "SCO^losses"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:271
-msgid "Waypoint"
+#: qcsrc/client/scoreboard.qc:37
+msgid "SCO^name"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:272 qcsrc/client/waypointsprites.qc:273
-#: qcsrc/client/waypointsprites.qc:274
-msgid "Generator"
+#: qcsrc/client/scoreboard.qc:38
+msgid "SCO^nick"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:275 qcsrc/client/waypointsprites.qc:276
-#: qcsrc/client/waypointsprites.qc:277 qcsrc/client/waypointsprites.qc:278
-#: qcsrc/client/waypointsprites.qc:279 qcsrc/client/waypointsprites.qc:280
-#: qcsrc/client/waypointsprites.qc:281 qcsrc/client/waypointsprites.qc:282
-#: qcsrc/client/waypointsprites.qc:306 qcsrc/client/waypointsprites.qc:307
-#: qcsrc/client/waypointsprites.qc:308 qcsrc/client/waypointsprites.qc:309
-#: qcsrc/client/waypointsprites.qc:310
-msgid "Control point"
+#: qcsrc/client/scoreboard.qc:39
+msgid "SCO^objectives"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:283
-msgid "Checkpoint"
+#: qcsrc/client/scoreboard.qc:40
+msgid "SCO^pickups"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:284 qcsrc/client/waypointsprites.qc:286
-msgid "Finish"
+#: qcsrc/client/scoreboard.qc:41
+msgid "SCO^ping"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:285 qcsrc/client/waypointsprites.qc:286
-msgid "Start"
+#: qcsrc/client/scoreboard.qc:42
+msgid "SCO^pl"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:287 qcsrc/client/waypointsprites.qc:288
-msgid "Ball"
+#: qcsrc/client/scoreboard.qc:43
+msgid "SCO^pushes"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:289
-msgid "Ball carrier"
+#: qcsrc/client/scoreboard.qc:44
+msgid "SCO^rank"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:290 qcsrc/server/w_laser.qc:2
-msgid "Laser"
+#: qcsrc/client/scoreboard.qc:45
+msgid "SCO^returns"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:291 qcsrc/server/w_shotgun.qc:2
-msgid "Shotgun"
+#: qcsrc/client/scoreboard.qc:46
+msgid "SCO^revivals"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:292 qcsrc/server/w_uzi.qc:2
-msgid "Machine Gun"
+#: qcsrc/client/scoreboard.qc:47
+msgid "SCO^score"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:293 qcsrc/server/w_grenadelauncher.qc:2
-msgid "Mortar"
+#: qcsrc/client/scoreboard.qc:48
+msgid "SCO^suicides"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:294 qcsrc/server/w_electro.qc:2
-msgid "Electro"
+#: qcsrc/client/scoreboard.qc:49
+msgid "SCO^takes"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:295 qcsrc/server/w_crylink.qc:2
-msgid "Crylink"
+#: qcsrc/client/scoreboard.qc:50
+msgid "SCO^ticks"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:296 qcsrc/server/w_nex.qc:2
-msgid "Nex"
+#: qcsrc/client/scoreboard.qc:239
+msgid ""
+"You can modify the scoreboard using the ^2scoreboard_columns_set command.\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:297 qcsrc/server/w_hagar.qc:2
-msgid "Hagar"
+#: qcsrc/client/scoreboard.qc:240
+msgid "^3|---------------------------------------------------------------|\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:298 qcsrc/server/w_rocketlauncher.qc:2
-msgid "Rocket Launcher"
+#: qcsrc/client/scoreboard.qc:241
+msgid "Usage:\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:299 qcsrc/server/w_porto.qc:2
-msgid "Port-O-Launch"
+#: qcsrc/client/scoreboard.qc:242
+msgid "^2scoreboard_columns_set default\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:300
-msgid "Minstanex"
+#: qcsrc/client/scoreboard.qc:243
+msgid "^2scoreboard_columns_set ^7field1 field2 ...\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:301
-msgid "Hook"
+#: qcsrc/client/scoreboard.qc:244
+msgid "The following field names are recognized (case insensitive):\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:302 qcsrc/server/w_fireball.qc:2
-msgid "Fireball"
+#: qcsrc/client/scoreboard.qc:245
+msgid ""
+"You can use a ^3|^7 to start the right-aligned fields.\n"
+"\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:303
-msgid "HLAC"
+#: qcsrc/client/scoreboard.qc:247
+msgid "^3name^7 or ^3nick^7             Name of a player\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:304 qcsrc/server/w_rifle.qc:2
-msgid "Rifle"
+#: qcsrc/client/scoreboard.qc:248
+msgid "^3ping^7                     Ping time\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:305 qcsrc/server/w_minelayer.qc:2
-msgid "Mine Layer"
+#: qcsrc/client/scoreboard.qc:249
+msgid "^3pl^7                       Packet loss\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:311
-msgid "Invisibility"
+#: qcsrc/client/scoreboard.qc:250
+msgid "^3kills^7                    Number of kills\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:312
-msgid "Extra life"
+#: qcsrc/client/scoreboard.qc:251
+msgid "^3deaths^7                   Number of deaths\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:313
-msgid "Speed"
+#: qcsrc/client/scoreboard.qc:252
+msgid "^3suicides^7                 Number of suicides\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:314
-msgid "Strength"
+#: qcsrc/client/scoreboard.qc:253
+msgid "^3frags^7                    kills - suicides\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:315
-msgid "Shield"
+#: qcsrc/client/scoreboard.qc:254
+msgid "^3kd^7                       The kill-death ratio\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:316
-msgid "Fuel regen"
+#: qcsrc/client/scoreboard.qc:255
+msgid ""
+"^3caps^7                     How often a flag (CTF) or a key (KeyHunt) was "
+"captured\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:317
-msgid "Jet Pack"
+#: qcsrc/client/scoreboard.qc:256
+msgid ""
+"^3pickups^7                  How often a flag (CTF) or a key (KeyHunt) or a "
+"ball (Keepaway) was picked up\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:318
-msgid "Frozen!"
+#: qcsrc/client/scoreboard.qc:257
+msgid "^3fckills^7                  Number of flag carrier kills\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:319
-msgid "Tagged"
+#: qcsrc/client/scoreboard.qc:258
+msgid "^3returns^7                  Number of flag returns\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:320
-msgid "Vehicle"
+#: qcsrc/client/scoreboard.qc:259
+msgid "^3drops^7                    Number of flag drops\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:590 qcsrc/client/tturrets.qc:285
-msgid "Spam"
+#: qcsrc/client/scoreboard.qc:260
+msgid "^3lives^7                    Number of lives (LMS)\n"
 msgstr ""
 
-#: qcsrc/client/waypointsprites.qc:594
-#, c-format
-msgid "%s needing help!"
+#: qcsrc/client/scoreboard.qc:261
+msgid "^3rank^7                     Player rank\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:30
-msgid "ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!"
+#: qcsrc/client/scoreboard.qc:262
+msgid "^3pushes^7                   Number of players pushed into void\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:104
+#: qcsrc/client/scoreboard.qc:263
 msgid ""
-"^3Your engine build is outdated\n"
-"^3This Server uses a newer QC VM. Please update!\n"
+"^3destroyed^7                Number of keys destroyed by pushing them into "
+"void\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:114
-#, c-format
-msgid "^4CSQC Build information: ^1%s\n"
+#: qcsrc/client/scoreboard.qc:264
+msgid "^3kckills^7                  Number of keys carrier kills\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:293 qcsrc/client/Main.qc:309
-#, c-format
-msgid "trying to switch to unsupported team %d\n"
+#: qcsrc/client/scoreboard.qc:265
+msgid "^3losses^7                   Number of times a key was lost\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:424 qcsrc/client/scoreboard.qc:241
-msgid "Usage:\n"
+#: qcsrc/client/scoreboard.qc:266
+msgid "^3laps^7                     Number of laps finished (race/cts)\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:425
-msgid "hud_save configname   (saves to hud_skinname_configname.cfg)\n"
+#: qcsrc/client/scoreboard.qc:267
+msgid "^3time^7                     Total time raced (race/cts)\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:549
-msgid "Usage: cl_cmd COMMAND..., where possible commands are:\n"
+#: qcsrc/client/scoreboard.qc:268
+msgid "^3fastest^7                  Time of fastest lap (race/cts)\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:550
-msgid "  settemp cvar value\n"
+#: qcsrc/client/scoreboard.qc:269
+msgid "^3ticks^7                    Number of ticks (DOM)\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:551
-msgid "  scoreboard_columns_set ...\n"
+#: qcsrc/client/scoreboard.qc:270
+msgid "^3takes^7                    Number of domination points taken (DOM)\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:552
-msgid "  scoreboard_columns_help\n"
+#: qcsrc/client/scoreboard.qc:271
+msgid "^3bckills^7                  Number of ball carrier kills\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:788
-#, c-format
-msgid "A CSQC entity changed its owner! (edict: %d, classname: %s)\n"
+#: qcsrc/client/scoreboard.qc:272
+msgid ""
+"^3bctime^7                   Total amount of time holding the ball in "
+"Keepaway\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:1029
-#, c-format
+#: qcsrc/client/scoreboard.qc:273
 msgid ""
-"A CSQC entity changed its type! (edict: %d, server: %d, type: %d -> %d)\n"
+"^3score^7                    Total score\n"
+"\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:1038
-#, c-format
+#: qcsrc/client/scoreboard.qc:275
 msgid ""
-"A CSQC entity appeared out of nowhere! (edict: %d, server: %d, type: %d)\n"
+"Before a field you can put a + or - sign, then a comma separated list\n"
+"of game types, then a slash, to make the field show up only in these\n"
+"or in all but these game types. You can also specify 'all' as a\n"
+"field to show all fields available for the current game mode.\n"
+"\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:1080
-#, c-format
+#: qcsrc/client/scoreboard.qc:280
 msgid ""
-"Unknown entity type in CSQC_Ent_Update (enttype: %d, edict: %d, classname: "
-"%s)\n"
+"The special game type names 'teams' and 'noteams' can be used to\n"
+"include/exclude ALL teams/noteams game modes.\n"
+"\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:1526
-#, c-format
-msgid "%s (not bound)"
+#: qcsrc/client/scoreboard.qc:283
+msgid "Example: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4\n"
 msgstr ""
 
-#: qcsrc/client/Main.qc:1531 qcsrc/client/hud.qc:230
-#, c-format
-msgid "%s (%s)"
+#: qcsrc/client/scoreboard.qc:284
+msgid ""
+"will display name, ping and pl aligned to the left, and the fields\n"
+"right of the vertical bar aligned to the right.\n"
 msgstr ""
 
-#: qcsrc/client/movetypes.qc:163
-#, c-format
-msgid "Can't unstick an entity (edict: %d, classname: %s, origin: %s)\n"
+#: qcsrc/client/scoreboard.qc:286
+msgid ""
+"'field3' will only be shown in CTF, and 'field4' will be shown in all\n"
+"other gamemodes except DM.\n"
 msgstr ""
 
-#: qcsrc/client/movetypes.qc:166
+#: qcsrc/client/scoreboard.qc:432 qcsrc/client/scoreboard.qc:447
+#: qcsrc/client/scoreboard.qc:457 qcsrc/client/scoreboard.qc:466
+#: qcsrc/client/scoreboard.qc:475
 #, c-format
-msgid "Sucessfully unstuck an entity (edict: %d, classname: %s, origin: %s)\n"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:19
-msgid "SCO^bckills"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:20
-msgid "SCO^bctime"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:21
-msgid "SCO^caps"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:22
-msgid "SCO^deaths"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:23
-msgid "SCO^destroyed"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:24
-msgid "SCO^drops"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:25
-msgid "SCO^faults"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:26
-msgid "SCO^fckills"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:27
-msgid "SCO^goals"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:28
-msgid "SCO^kckills"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:29
-msgid "SCO^kdratio"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:30
-msgid "SCO^k/d"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:31
-msgid "SCO^kd"
-msgstr ""
-
-#: qcsrc/client/scoreboard.qc:32
-msgid "SCO^kdr"
+msgid "fixed missing field '%s'\n"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:33
-msgid "SCO^kills"
+#: qcsrc/client/scoreboard.qc:515 qcsrc/client/scoreboard.qc:522
+msgid "N/A"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:34
-msgid "SCO^laps"
+#: qcsrc/client/scoreboard.qc:950
+#, c-format
+msgid "Accuracy stats (average %d%%)"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:35
-msgid "SCO^lives"
+#: qcsrc/client/scoreboard.qc:1015
+#, c-format
+msgid "%d%%"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:36
-msgid "SCO^losses"
+#: qcsrc/client/scoreboard.qc:1085
+msgid "Map stats:"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:37
-msgid "SCO^name"
+#: qcsrc/client/scoreboard.qc:1101
+msgid "Secrets found:"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:38
-msgid "SCO^nick"
+#: qcsrc/client/scoreboard.qc:1128
+msgid "Rankings"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:39
-msgid "SCO^objectives"
+#: qcsrc/client/scoreboard.qc:1223
+msgid "Scoreboard"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:40
-msgid "SCO^pickups"
+#: qcsrc/client/scoreboard.qc:1268
+#, c-format
+msgid "Speed award: %d ^7(%s^7)"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:41
-msgid "SCO^ping"
+#: qcsrc/client/scoreboard.qc:1272
+#, c-format
+msgid "All-time fastest: %d ^7(%s^7)"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:42
-msgid "SCO^pl"
+#: qcsrc/client/scoreboard.qc:1305 qcsrc/client/teamplay.qc:63
+msgid "Spectators"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:43
-msgid "SCO^pushes"
+#: qcsrc/client/scoreboard.qc:1311
+#, c-format
+msgid "playing on ^2%s^7"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:44
-msgid "SCO^rank"
+#: qcsrc/client/scoreboard.qc:1318 qcsrc/client/scoreboard.qc:1323
+#, c-format
+msgid " for up to ^1%1.0f minutes^7"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:45
-msgid "SCO^returns"
+#: qcsrc/client/scoreboard.qc:1327 qcsrc/client/scoreboard.qc:1346
+msgid " or"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:46
-msgid "SCO^revivals"
+#: qcsrc/client/scoreboard.qc:1330 qcsrc/client/scoreboard.qc:1337
+#, c-format
+msgid " until ^3%s %s^7"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:47
-msgid "SCO^score"
+#: qcsrc/client/scoreboard.qc:1331 qcsrc/client/scoreboard.qc:1338
+#: qcsrc/client/scoreboard.qc:1350 qcsrc/client/scoreboard.qc:1357
+msgid "SCO^points"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:48
-msgid "SCO^suicides"
+#: qcsrc/client/scoreboard.qc:1332 qcsrc/client/scoreboard.qc:1339
+#: qcsrc/client/scoreboard.qc:1351 qcsrc/client/scoreboard.qc:1358
+msgid "SCO^is beaten"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:49
-msgid "SCO^takes"
+#: qcsrc/client/scoreboard.qc:1349 qcsrc/client/scoreboard.qc:1356
+#, c-format
+msgid " until a lead of ^3%s %s^7"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:50
-msgid "SCO^ticks"
+#: qcsrc/client/waypointsprites.qc:254
+msgid "Push"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:239
-msgid ""
-"You can modify the scoreboard using the ^2scoreboard_columns_set command.\n"
+#: qcsrc/client/waypointsprites.qc:255
+msgid "Destroy"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:240
-msgid "^3|---------------------------------------------------------------|\n"
+#: qcsrc/client/waypointsprites.qc:256
+msgid "Defend"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:242
-msgid "^2scoreboard_columns_set default\n"
+#: qcsrc/client/waypointsprites.qc:257
+msgid "Blue base"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:243
-msgid "^2scoreboard_columns_set ^7field1 field2 ...\n"
+#: qcsrc/client/waypointsprites.qc:258
+msgid "DANGER"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:244
-msgid "The following field names are recognized (case insensitive):\n"
+#: qcsrc/client/waypointsprites.qc:259
+msgid "Flag carrier"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:245
-msgid ""
-"You can use a ^3|^7 to start the right-aligned fields.\n"
-"\n"
+#: qcsrc/client/waypointsprites.qc:260
+msgid "Dropped flag"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:247
-msgid "^3name^7 or ^3nick^7             Name of a player\n"
+#: qcsrc/client/waypointsprites.qc:261
+msgid "Help me!"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:248
-msgid "^3ping^7                     Ping time\n"
+#: qcsrc/client/waypointsprites.qc:262
+msgid "Here"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:249
-msgid "^3pl^7                       Packet loss\n"
+#: qcsrc/client/waypointsprites.qc:263
+msgid "Dropped key"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:250
-msgid "^3kills^7                    Number of kills\n"
+#: qcsrc/client/waypointsprites.qc:264 qcsrc/client/waypointsprites.qc:266
+#: qcsrc/client/waypointsprites.qc:267 qcsrc/client/waypointsprites.qc:268
+#: qcsrc/client/waypointsprites.qc:269
+msgid "Key carrier"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:251
-msgid "^3deaths^7                   Number of deaths\n"
+#: qcsrc/client/waypointsprites.qc:265
+msgid "Run here"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:252
-msgid "^3suicides^7                 Number of suicides\n"
+#: qcsrc/client/waypointsprites.qc:270
+msgid "Red base"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:253
-msgid "^3frags^7                    kills - suicides\n"
+#: qcsrc/client/waypointsprites.qc:271
+msgid "Waypoint"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:254
-msgid "^3kd^7                       The kill-death ratio\n"
+#: qcsrc/client/waypointsprites.qc:272 qcsrc/client/waypointsprites.qc:273
+#: qcsrc/client/waypointsprites.qc:274
+msgid "Generator"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:255
-msgid ""
-"^3caps^7                     How often a flag (CTF) or a key (KeyHunt) was "
-"captured\n"
+#: qcsrc/client/waypointsprites.qc:275 qcsrc/client/waypointsprites.qc:276
+#: qcsrc/client/waypointsprites.qc:277 qcsrc/client/waypointsprites.qc:278
+#: qcsrc/client/waypointsprites.qc:279 qcsrc/client/waypointsprites.qc:280
+#: qcsrc/client/waypointsprites.qc:281 qcsrc/client/waypointsprites.qc:282
+#: qcsrc/client/waypointsprites.qc:306 qcsrc/client/waypointsprites.qc:307
+#: qcsrc/client/waypointsprites.qc:308 qcsrc/client/waypointsprites.qc:309
+#: qcsrc/client/waypointsprites.qc:310
+msgid "Control point"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:256
-msgid ""
-"^3pickups^7                  How often a flag (CTF) or a key (KeyHunt) or a "
-"ball (Keepaway) was picked up\n"
+#: qcsrc/client/waypointsprites.qc:283
+msgid "Checkpoint"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:257
-msgid "^3fckills^7                  Number of flag carrier kills\n"
+#: qcsrc/client/waypointsprites.qc:284 qcsrc/client/waypointsprites.qc:286
+msgid "Finish"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:258
-msgid "^3returns^7                  Number of flag returns\n"
+#: qcsrc/client/waypointsprites.qc:285 qcsrc/client/waypointsprites.qc:286
+msgid "Start"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:259
-msgid "^3drops^7                    Number of flag drops\n"
+#: qcsrc/client/waypointsprites.qc:287 qcsrc/client/waypointsprites.qc:288
+msgid "Ball"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:260
-msgid "^3lives^7                    Number of lives (LMS)\n"
+#: qcsrc/client/waypointsprites.qc:289
+msgid "Ball carrier"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:261
-msgid "^3rank^7                     Player rank\n"
+#: qcsrc/client/waypointsprites.qc:290 qcsrc/server/w_laser.qc:2
+msgid "Laser"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:262
-msgid "^3pushes^7                   Number of players pushed into void\n"
+#: qcsrc/client/waypointsprites.qc:291 qcsrc/server/w_shotgun.qc:2
+msgid "Shotgun"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:263
-msgid ""
-"^3destroyed^7                Number of keys destroyed by pushing them into "
-"void\n"
+#: qcsrc/client/waypointsprites.qc:292 qcsrc/server/w_uzi.qc:2
+msgid "Machine Gun"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:264
-msgid "^3kckills^7                  Number of keys carrier kills\n"
+#: qcsrc/client/waypointsprites.qc:293 qcsrc/server/w_grenadelauncher.qc:2
+msgid "Mortar"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:265
-msgid "^3losses^7                   Number of times a key was lost\n"
+#: qcsrc/client/waypointsprites.qc:294 qcsrc/server/w_electro.qc:2
+msgid "Electro"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:266
-msgid "^3laps^7                     Number of laps finished (race/cts)\n"
+#: qcsrc/client/waypointsprites.qc:295 qcsrc/server/w_crylink.qc:2
+msgid "Crylink"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:267
-msgid "^3time^7                     Total time raced (race/cts)\n"
+#: qcsrc/client/waypointsprites.qc:296 qcsrc/server/w_nex.qc:2
+msgid "Nex"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:268
-msgid "^3fastest^7                  Time of fastest lap (race/cts)\n"
+#: qcsrc/client/waypointsprites.qc:297 qcsrc/server/w_hagar.qc:2
+msgid "Hagar"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:269
-msgid "^3ticks^7                    Number of ticks (DOM)\n"
+#: qcsrc/client/waypointsprites.qc:298 qcsrc/server/w_rocketlauncher.qc:2
+msgid "Rocket Launcher"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:270
-msgid "^3takes^7                    Number of domination points taken (DOM)\n"
+#: qcsrc/client/waypointsprites.qc:299 qcsrc/server/w_porto.qc:2
+msgid "Port-O-Launch"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:271
-msgid "^3bckills^7                  Number of ball carrier kills\n"
+#: qcsrc/client/waypointsprites.qc:300
+msgid "Minstanex"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:272
-msgid ""
-"^3bctime^7                   Total amount of time holding the ball in "
-"Keepaway\n"
+#: qcsrc/client/waypointsprites.qc:301
+msgid "Hook"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:273
-msgid ""
-"^3score^7                    Total score\n"
-"\n"
+#: qcsrc/client/waypointsprites.qc:302 qcsrc/server/w_fireball.qc:2
+msgid "Fireball"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:275
-msgid ""
-"Before a field you can put a + or - sign, then a comma separated list\n"
-"of game types, then a slash, to make the field show up only in these\n"
-"or in all but these game types. You can also specify 'all' as a\n"
-"field to show all fields available for the current game mode.\n"
-"\n"
+#: qcsrc/client/waypointsprites.qc:303
+msgid "HLAC"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:280
-msgid ""
-"The special game type names 'teams' and 'noteams' can be used to\n"
-"include/exclude ALL teams/noteams game modes.\n"
-"\n"
+#: qcsrc/client/waypointsprites.qc:304 qcsrc/server/w_rifle.qc:2
+msgid "Rifle"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:283
-msgid "Example: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4\n"
+#: qcsrc/client/waypointsprites.qc:305 qcsrc/server/w_minelayer.qc:2
+msgid "Mine Layer"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:284
-msgid ""
-"will display name, ping and pl aligned to the left, and the fields\n"
-"right of the vertical bar aligned to the right.\n"
+#: qcsrc/client/waypointsprites.qc:311
+msgid "Invisibility"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:286
-msgid ""
-"'field3' will only be shown in CTF, and 'field4' will be shown in all\n"
-"other gamemodes except DM.\n"
+#: qcsrc/client/waypointsprites.qc:312
+msgid "Extra life"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:432 qcsrc/client/scoreboard.qc:447
-#: qcsrc/client/scoreboard.qc:457 qcsrc/client/scoreboard.qc:466
-#: qcsrc/client/scoreboard.qc:475
-#, c-format
-msgid "fixed missing field '%s'\n"
+#: qcsrc/client/waypointsprites.qc:313
+msgid "Speed"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:515 qcsrc/client/scoreboard.qc:522
-msgid "N/A"
+#: qcsrc/client/waypointsprites.qc:314
+msgid "Strength"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:950
-#, c-format
-msgid "Accuracy stats (average %d%%)"
+#: qcsrc/client/waypointsprites.qc:315
+msgid "Shield"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1015
-#, c-format
-msgid "%d%%"
+#: qcsrc/client/waypointsprites.qc:316
+msgid "Fuel regen"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1085
-msgid "Map stats:"
+#: qcsrc/client/waypointsprites.qc:317
+msgid "Jet Pack"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1101
-msgid "Secrets found:"
+#: qcsrc/client/waypointsprites.qc:318
+msgid "Frozen!"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1128
-msgid "Rankings"
+#: qcsrc/client/waypointsprites.qc:319
+msgid "Tagged"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1223
-msgid "Scoreboard"
+#: qcsrc/client/waypointsprites.qc:320
+msgid "Vehicle"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1268
-#, c-format
-msgid "Speed award: %d ^7(%s^7)"
+#: qcsrc/client/waypointsprites.qc:590 qcsrc/client/tturrets.qc:285
+msgid "Spam"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1272
+#: qcsrc/client/waypointsprites.qc:594
 #, c-format
-msgid "All-time fastest: %d ^7(%s^7)"
+msgid "%s needing help!"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1305 qcsrc/client/teamplay.qc:63
-msgid "Spectators"
+#: qcsrc/client/hud_config.qc:185
+#, c-format
+msgid "^2Successfully exported to %s! (Note: It's saved in data/data/)\n"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1311
+#: qcsrc/client/hud_config.qc:189
 #, c-format
-msgid "playing on ^2%s^7"
+msgid "^1Couldn't write to %s\n"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1318 qcsrc/client/scoreboard.qc:1323
+#: qcsrc/client/tturrets.qc:294
 #, c-format
-msgid " for up to ^1%1.0f minutes^7"
+msgid "%s under attack!"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1327 qcsrc/client/scoreboard.qc:1346
-msgid " or"
+#: qcsrc/client/Main.qc:8
+msgid "ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1330 qcsrc/client/scoreboard.qc:1337
-#, c-format
-msgid " until ^3%s %s^7"
+#: qcsrc/client/Main.qc:83
+msgid ""
+"^3Your engine build is outdated\n"
+"^3This Server uses a newer QC VM. Please update!\n"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1331 qcsrc/client/scoreboard.qc:1338
-#: qcsrc/client/scoreboard.qc:1350 qcsrc/client/scoreboard.qc:1357
-msgid "SCO^points"
+#: qcsrc/client/Main.qc:93
+#, c-format
+msgid "^4CSQC Build information: ^1%s\n"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1332 qcsrc/client/scoreboard.qc:1339
-#: qcsrc/client/scoreboard.qc:1351 qcsrc/client/scoreboard.qc:1358
-msgid "SCO^is beaten"
+#: qcsrc/client/Main.qc:258 qcsrc/client/Main.qc:274
+#, c-format
+msgid "trying to switch to unsupported team %d\n"
 msgstr ""
 
-#: qcsrc/client/scoreboard.qc:1349 qcsrc/client/scoreboard.qc:1356
+#: qcsrc/client/Main.qc:466
 #, c-format
-msgid " until a lead of ^3%s %s^7"
+msgid "A CSQC entity changed its owner! (edict: %d, classname: %s)\n"
 msgstr ""
 
-#: qcsrc/client/teamplay.qc:64
-msgid "Red Team"
+#: qcsrc/client/Main.qc:707
+#, c-format
+msgid ""
+"A CSQC entity changed its type! (edict: %d, server: %d, type: %d -> %d)\n"
 msgstr ""
 
-#: qcsrc/client/teamplay.qc:65
-msgid "Blue Team"
+#: qcsrc/client/Main.qc:716
+#, c-format
+msgid ""
+"A CSQC entity appeared out of nowhere! (edict: %d, server: %d, type: %d)\n"
 msgstr ""
 
-#: qcsrc/client/teamplay.qc:66
-msgid "Yellow Team"
+#: qcsrc/client/Main.qc:758
+#, c-format
+msgid ""
+"Unknown entity type in CSQC_Ent_Update (enttype: %d, edict: %d, classname: "
+"%s)\n"
 msgstr ""
 
-#: qcsrc/client/teamplay.qc:67
-msgid "Pink Team"
+#: qcsrc/client/Main.qc:1206
+#, c-format
+msgid "%s (not bound)"
 msgstr ""
 
-#: qcsrc/client/tturrets.qc:294
+#: qcsrc/client/Main.qc:1211 qcsrc/client/hud.qc:230
 #, c-format
-msgid "%s under attack!"
+msgid "%s (%s)"
 msgstr ""
 
 #: qcsrc/client/mapvoting.qc:28
@@ -760,29 +695,29 @@ msgstr ""
 msgid " (%d votes)"
 msgstr ""
 
-#: qcsrc/client/mapvoting.qc:113
+#: qcsrc/client/mapvoting.qc:116
 msgid "Don't care"
 msgstr ""
 
-#: qcsrc/client/mapvoting.qc:194
+#: qcsrc/client/mapvoting.qc:197
 msgid "Vote for a map"
 msgstr ""
 
-#: qcsrc/client/mapvoting.qc:200
+#: qcsrc/client/mapvoting.qc:203
 #, c-format
 msgid "%d seconds left"
 msgstr ""
 
-#: qcsrc/client/mapvoting.qc:263
+#: qcsrc/client/mapvoting.qc:266
 msgid ""
 "mv_mapdownload: ^3You're not supposed to use this command on your own!\n"
 msgstr ""
 
-#: qcsrc/client/mapvoting.qc:273
+#: qcsrc/client/mapvoting.qc:276
 msgid "^1Error:^7 Couldn't find pak index.\n"
 msgstr ""
 
-#: qcsrc/client/mapvoting.qc:282
+#: qcsrc/client/mapvoting.qc:285
 msgid "Requesting preview...\n"
 msgstr ""
 
@@ -813,6 +748,36 @@ msgstr ""
 msgid "You got the %s!"
 msgstr ""
 
+#: qcsrc/client/movetypes.qc:163
+#, c-format
+msgid "Can't unstick an entity (edict: %d, classname: %s, origin: %s)\n"
+msgstr ""
+
+#: qcsrc/client/movetypes.qc:166
+#, c-format
+msgid "Sucessfully unstuck an entity (edict: %d, classname: %s, origin: %s)\n"
+msgstr ""
+
+#: qcsrc/client/miscfunctions.qc:100
+msgid "Trying to remove a team which is not in the teamlist!"
+msgstr ""
+
+#: qcsrc/client/teamplay.qc:64
+msgid "Red Team"
+msgstr ""
+
+#: qcsrc/client/teamplay.qc:65
+msgid "Blue Team"
+msgstr ""
+
+#: qcsrc/client/teamplay.qc:66
+msgid "Yellow Team"
+msgstr ""
+
+#: qcsrc/client/teamplay.qc:67
+msgid "Pink Team"
+msgstr ""
+
 #: qcsrc/client/hud.qc:160
 msgid "1st"
 msgstr ""
@@ -870,988 +835,1009 @@ msgstr ""
 msgid "Unavailable"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1534
+#: qcsrc/client/hud.qc:1625
 #, c-format
 msgid "^1%s^1 couldn't take it anymore\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1538 qcsrc/client/hud.qc:1887
+#: qcsrc/client/hud.qc:1629 qcsrc/client/hud.qc:1974
 #, c-format
 msgid "^1%s^1 died\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1542
+#: qcsrc/client/hud.qc:1633
 #, c-format
 msgid "^7%s^7 committed suicide. What's the point of living without ammo?\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1546
+#: qcsrc/client/hud.qc:1637
 #, c-format
 msgid "^1%s^1 thought they found a nice camping ground\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1550
+#: qcsrc/client/hud.qc:1641
 #, c-format
 msgid "^1%s^1 didn't become friends with the Lord of Teamplay\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1554
+#: qcsrc/client/hud.qc:1645
 #, c-format
 msgid "^1%s^1 unfairly eliminated themself\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1558
+#: qcsrc/client/hud.qc:1649
 #, c-format
 msgid "^1%s^1 burned to death\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1562
+#: qcsrc/client/hud.qc:1653
 #, c-format
 msgid "^1%s^1 couldn't resist the urge to self-destruct\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1566
+#: qcsrc/client/hud.qc:1657
 #, c-format
 msgid "^1%s^1 ended it all after a %d kill spree\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1583
+#: qcsrc/client/hud.qc:1670
 #, c-format
 msgid "^1%s^1 took action against a team mate\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1585
+#: qcsrc/client/hud.qc:1672
 #, c-format
 msgid "^1%s^1 mows down a team mate\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1590
+#: qcsrc/client/hud.qc:1677
 #, c-format
 msgid "^1%s^1 ended a %d scoring spree by going against a team mate\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1592
+#: qcsrc/client/hud.qc:1679
 #, c-format
 msgid "^1%s^1 ended a %d kill spree by killing a team mate\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1596
+#: qcsrc/client/hud.qc:1683
 #, c-format
 msgid "^1%s^1's %s scoring spree was ended by a team mate!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1598
+#: qcsrc/client/hud.qc:1685
 #, c-format
 msgid "^1%s^1's %s kill spree was ended by a team mate!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1602
+#: qcsrc/client/hud.qc:1689
 #, c-format
 msgid "^1%s^1 drew first blood\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1606
+#: qcsrc/client/hud.qc:1693
 #, c-format
 msgid "^1%s^1 tried to occupy %s^1's teleport destination space\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1608
+#: qcsrc/client/hud.qc:1695
 #, c-format
 msgid "^1%s^1 was telefragged by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1613
+#: qcsrc/client/hud.qc:1700
 #, c-format
 msgid "^1%s^1 was drowned by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1618
+#: qcsrc/client/hud.qc:1705
 #, c-format
 msgid "^1%s^1 was slimed by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1623
+#: qcsrc/client/hud.qc:1710
 #, c-format
 msgid "^1%s^1 was cooked by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1628
+#: qcsrc/client/hud.qc:1715
 #, c-format
 msgid "^1%s^1 was grounded by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1633
+#: qcsrc/client/hud.qc:1720
 #, c-format
 msgid "^1%s^1 was shot into space by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1638
+#: qcsrc/client/hud.qc:1725
 #, c-format
 msgid "^1%s^1 was conserved by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1644
+#: qcsrc/client/hud.qc:1731
 #, c-format
 msgid "^1%s^1 was thrown into a world of hurt by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1648
+#: qcsrc/client/hud.qc:1735
 #, c-format
 msgid "^1%s^1 was crushed by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1652
+#: qcsrc/client/hud.qc:1739
 #, c-format
 msgid "^1%s^1 got shredded by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1656
+#: qcsrc/client/hud.qc:1743
 #, c-format
 msgid "^1%s^1 was blasted to bits by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1660
+#: qcsrc/client/hud.qc:1747
 #, c-format
 msgid "^1%s^1 got caught in the destruction of %s^1's vehicle\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1664
+#: qcsrc/client/hud.qc:1751
 #, c-format
 msgid "^1%s^1 was bolted down by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1668
+#: qcsrc/client/hud.qc:1755
 #, c-format
 msgid "^1%s^1 could find no shelter from %s^1's rockets\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1672
+#: qcsrc/client/hud.qc:1759
 #, c-format
 msgid "^1%s^1 dies when %s^1's wakizashi dies.\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1676
+#: qcsrc/client/hud.qc:1763
 #, c-format
 msgid "^1%s^1 nailed to hell by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1680
+#: qcsrc/client/hud.qc:1767
 #, c-format
 msgid "^1%s^1 cluster crushed by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1684
+#: qcsrc/client/hud.qc:1771
 #, c-format
 msgid "^1%s^1 dies when %s^1's raptor dies.\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1688
+#: qcsrc/client/hud.qc:1775
 #, c-format
 msgid "^1%s^1 was pushed into the line of fire by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1692
+#: qcsrc/client/hud.qc:1779
 #, c-format
 msgid "^1%s^1 was pushed into an accident by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1696
+#: qcsrc/client/hud.qc:1783
 #, c-format
 msgid "^1%s^1 was unfairly eliminated by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1700
+#: qcsrc/client/hud.qc:1787
 #, c-format
 msgid "^1%s^1 was burnt to death by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1712
+#: qcsrc/client/hud.qc:1799
 #, c-format
 msgid "^1%s^1 was fragged by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1717
+#: qcsrc/client/hud.qc:1804
 #, c-format
 msgid "^1%s^1's %s scoring spree was ended by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1719
+#: qcsrc/client/hud.qc:1806
 #, c-format
 msgid "^1%s^1's %s kill spree was ended by %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1722
+#: qcsrc/client/hud.qc:1809
 #, c-format
 msgid "^1%s^1 made %s scores in a row\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1724
+#: qcsrc/client/hud.qc:1811
 #, c-format
 msgid "^1%s^1 has %s frags in a row\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1727
+#: qcsrc/client/hud.qc:1814
 #, c-format
 msgid "%s^7 made a ^1TRIPLE SCORE\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1729
+#: qcsrc/client/hud.qc:1816
 #, c-format
 msgid "%s^7 made a ^1TRIPLE FRAG\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1732
+#: qcsrc/client/hud.qc:1819
 #, c-format
 msgid "%s^7 unleashes ^1SCORING RAGE\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1734
+#: qcsrc/client/hud.qc:1821
 #, c-format
 msgid "%s^7 unleashes ^1RAGE\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1737
+#: qcsrc/client/hud.qc:1824
 #, c-format
 msgid "%s^7 made ^1TEN SCORES IN A ROW!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1739
+#: qcsrc/client/hud.qc:1826
 #, c-format
 msgid "%s^7 starts the ^1MASSACRE!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1742
+#: qcsrc/client/hud.qc:1829
 #, c-format
 msgid "%s^7 made ^1FIFTEEN SCORES IN A ROW!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1744
+#: qcsrc/client/hud.qc:1831
 #, c-format
 msgid "%s^7 executes ^1MAYHEM!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1747
+#: qcsrc/client/hud.qc:1834
 #, c-format
 msgid "%s^7 made ^1TWENTY SCORES IN A ROW!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1749
+#: qcsrc/client/hud.qc:1836
 #, c-format
 msgid "%s^7 is a ^1BERSERKER!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1752
+#: qcsrc/client/hud.qc:1839
 #, c-format
 msgid "%s^7 made ^1TWENTY FIVE SCORES IN A ROW!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1754
+#: qcsrc/client/hud.qc:1841
 #, c-format
 msgid "%s^7 inflicts ^1CARNAGE!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1757
+#: qcsrc/client/hud.qc:1844
 #, c-format
 msgid "%s^7 made ^1THIRTY SCORES IN A ROW!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1759
+#: qcsrc/client/hud.qc:1846
 #, c-format
 msgid "%s^7 unleashes ^1ARMAGEDDON!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1767
+#: qcsrc/client/hud.qc:1854
 #, c-format
 msgid "^1%s^1 was in the water for too long\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1769
+#: qcsrc/client/hud.qc:1856
 #, c-format
 msgid "^1%s^1 drowned\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1774
+#: qcsrc/client/hud.qc:1861
 #, c-format
 msgid "^1%s^1 was slimed\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1780
+#: qcsrc/client/hud.qc:1867
 #, c-format
 msgid "^1%s^1 found a hot place\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1782
+#: qcsrc/client/hud.qc:1869
 #, c-format
 msgid "^1%s^1 turned into hot slag\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1789
+#: qcsrc/client/hud.qc:1876
 #, c-format
 msgid "^1%s^1 tested gravity (and it worked)\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1791
+#: qcsrc/client/hud.qc:1878
 #, c-format
 msgid "^1%s^1 hit the ground with a crunch\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1796
+#: qcsrc/client/hud.qc:1883
 #, c-format
 msgid "^1%s^1 became a shooting star\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1802
+#: qcsrc/client/hud.qc:1889
 #, c-format
 msgid "^1%s^1 discovered a swamp\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1804
+#: qcsrc/client/hud.qc:1891
 #, c-format
 msgid "^1%s^1 is now conserved for centuries to come\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1811
+#: qcsrc/client/hud.qc:1898
 #, c-format
 msgid "^1%s^1 ran into a turret\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1817
+#: qcsrc/client/hud.qc:1904
 #, c-format
 msgid "^1%s^1 was laserd down by a eWheel turret \n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1820
+#: qcsrc/client/hud.qc:1907
 #, c-format
 msgid "^1%s^1 got caught in the flac \n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1823
+#: qcsrc/client/hud.qc:1910
 #, c-format
 msgid "^1%s^1 was riddeld full of riddled by a machinegun turret \n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1826
+#: qcsrc/client/hud.qc:1913
 #, c-format
 msgid "^1%s^1 got served a led enrichment by a walker turret \n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1829
+#: qcsrc/client/hud.qc:1916
 #, c-format
 msgid "^1%s^1 was impaled by a walker turret \n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1832
+#: qcsrc/client/hud.qc:1919
 #, c-format
 msgid "^1%s^1 was rocketed to hell by a walker turret \n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1835
+#: qcsrc/client/hud.qc:1922
 #, c-format
 msgid "^1%s^1 was blasted away hellion turret \n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1838
+#: qcsrc/client/hud.qc:1925
 #, c-format
 msgid "^1%s^1 could not hide from the hunter turret \n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1841
+#: qcsrc/client/hud.qc:1928
 #, c-format
 msgid "^1%s^1 got turned into smoldering gibs by a mlrs turret \n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1844
+#: qcsrc/client/hud.qc:1931
 #, c-format
 msgid "^1%s^1 got served some superheated plasma from a plasma turret \n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1847
+#: qcsrc/client/hud.qc:1934
 #, c-format
 msgid "^1%s^1 was phased out \n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1850
+#: qcsrc/client/hud.qc:1937
 #, c-format
 msgid "^1%s^1 was electrocuted by a tesla turret \n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1866
+#: qcsrc/client/hud.qc:1953
 #, c-format
 msgid "^1%s^1 died in an accident\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1870
+#: qcsrc/client/hud.qc:1957
 #, c-format
 msgid "^1%s^1 was unfairly eliminated\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1876
+#: qcsrc/client/hud.qc:1963
 #, c-format
 msgid "^1%s^1 felt a little hot\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1878
+#: qcsrc/client/hud.qc:1965
 #, c-format
 msgid "^1%s^1 burnt to death\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1885
+#: qcsrc/client/hud.qc:1972
 #, c-format
 msgid "^1%s^1 needs a restart\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1892
+#: qcsrc/client/hud.qc:1979
 #, c-format
 msgid "^1%s^1 needs a restart after a %d scoring spree\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1894
+#: qcsrc/client/hud.qc:1981
 #, c-format
 msgid "^1%s^1 died with a %d kill spree\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1898
+#: qcsrc/client/hud.qc:1985
 #, c-format
 msgid "%s^7 got the %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1901
+#: qcsrc/client/hud.qc:1988
 #, c-format
 msgid "%s^7 lost the %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1904
+#: qcsrc/client/hud.qc:1991
 #, c-format
 msgid "%s^7 picked up the %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1907
+#: qcsrc/client/hud.qc:1994
 #, c-format
 msgid "%s^7 returned the %s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1910
+#: qcsrc/client/hud.qc:1997
 #, c-format
 msgid "%s^7 captured the %s%s\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1929
+#: qcsrc/client/hud.qc:2016
 #, c-format
 msgid "%s^7 has picked up the ball!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1934
+#: qcsrc/client/hud.qc:2021
 #, c-format
 msgid "%s^7 has dropped the ball!\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1945
+#: qcsrc/client/hud.qc:2032
 #, c-format
 msgid "You are now on: %s"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1947
+#: qcsrc/client/hud.qc:2034
 #, c-format
 msgid ""
 "You have been moved into a different team to improve team balance\n"
 "You are now on: %s"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1950
+#: qcsrc/client/hud.qc:2037
 msgid "^1Reconsider your tactics, camper!"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1952
+#: qcsrc/client/hud.qc:2039
 msgid "^1Die camper!"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1955
+#: qcsrc/client/hud.qc:2042
 msgid "^1You are reinserted into the game for running out of ammo..."
 msgstr ""
 
-#: qcsrc/client/hud.qc:1957
+#: qcsrc/client/hud.qc:2044
 msgid "^1You were killed for running out of ammo..."
 msgstr ""
 
-#: qcsrc/client/hud.qc:1960
+#: qcsrc/client/hud.qc:2047
 msgid "^1You need to preserve your health"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1962
+#: qcsrc/client/hud.qc:2049
 msgid "^1You grew too old without taking your medicine"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1965
+#: qcsrc/client/hud.qc:2052
 msgid "^1Don't go against team mates!"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1967
+#: qcsrc/client/hud.qc:2054
 msgid "^1Don't shoot your team mates!"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1972
+#: qcsrc/client/hud.qc:2059
 msgid "^1You need to be more careful!"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1974
+#: qcsrc/client/hud.qc:2061
 msgid "^1You killed your own dumb self!"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1979
+#: qcsrc/client/hud.qc:2066
 #, c-format
 msgid "^1Moron! You went against ^7%s^1, a team mate!"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1981
+#: qcsrc/client/hud.qc:2068
 #, c-format
 msgid "^1Moron! You fragged ^7%s^1, a team mate!"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1985
+#: qcsrc/client/hud.qc:2072
 msgid "^1First score"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1987
+#: qcsrc/client/hud.qc:2074
 msgid "^1First blood"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1991
+#: qcsrc/client/hud.qc:2078
 msgid "^1First casualty"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1993
+#: qcsrc/client/hud.qc:2080
 msgid "^1First victim"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1997
+#: qcsrc/client/hud.qc:2084
 #, c-format
 msgid "^1You scored against ^7%s^1 who was typing!"
 msgstr ""
 
-#: qcsrc/client/hud.qc:1999
+#: qcsrc/client/hud.qc:2086
 #, c-format
 msgid "^1You typefragged ^7%s"
 msgstr ""
 
-#: qcsrc/client/hud.qc:2003
+#: qcsrc/client/hud.qc:2090
 #, c-format
 msgid "^1You were scored against by ^7%s^1 while you were typing!"
 msgstr ""
 
-#: qcsrc/client/hud.qc:2005
+#: qcsrc/client/hud.qc:2092
 #, c-format
 msgid "^1You were typefragged by ^7%s"
 msgstr ""
 
-#: qcsrc/client/hud.qc:2009
+#: qcsrc/client/hud.qc:2096
 #, c-format
 msgid "^4You scored against ^7%s"
 msgstr ""
 
-#: qcsrc/client/hud.qc:2011
+#: qcsrc/client/hud.qc:2098
 #, c-format
 msgid "^4You fragged ^7%s"
 msgstr ""
 
-#: qcsrc/client/hud.qc:2015
+#: qcsrc/client/hud.qc:2102
 #, c-format
 msgid "^1You were scored against by ^7%s"
 msgstr ""
 
-#: qcsrc/client/hud.qc:2017
+#: qcsrc/client/hud.qc:2104
 #, c-format
 msgid "^1You were fragged by ^7%s"
 msgstr ""
 
-#: qcsrc/client/hud.qc:2022
+#: qcsrc/client/hud.qc:2109
 msgid "^1Watch your step!"
 msgstr ""
 
-#: qcsrc/client/hud.qc:2091 qcsrc/client/hud.qc:2092 qcsrc/client/hud.qc:2598
+#: qcsrc/client/hud.qc:2178 qcsrc/client/hud.qc:2179 qcsrc/client/hud.qc:2685
 #, c-format
 msgid "Player %d"
 msgstr ""
 
-#: qcsrc/client/hud.qc:2907
+#: qcsrc/client/hud.qc:2995
 msgid "^1Intermediate 1 (+15.42)"
 msgstr ""
 
-#: qcsrc/client/hud.qc:2909 qcsrc/client/hud.qc:2951 qcsrc/client/hud.qc:2992
+#: qcsrc/client/hud.qc:2997 qcsrc/client/hud.qc:3039 qcsrc/client/hud.qc:3080
 #, c-format
 msgid "^1PENALTY: %.1f (%s)"
 msgstr ""
 
-#: qcsrc/client/hud.qc:2994
+#: qcsrc/client/hud.qc:3082
 #, c-format
 msgid "^2PENALTY: %.1f (%s)"
 msgstr ""
 
-#: qcsrc/client/hud.qc:3022
+#: qcsrc/client/hud.qc:3110
 msgid "^1You must answer before entering hud configure mode\n"
 msgstr ""
 
-#: qcsrc/client/hud.qc:3027
+#: qcsrc/client/hud.qc:3115
 msgid "^2Name ^7instead of \"^1Anonymous player^7\" in stats"
 msgstr ""
 
-#: qcsrc/client/hud.qc:3109
+#: qcsrc/client/hud.qc:3197
 msgid "A vote has been called for:"
 msgstr ""
 
-#: qcsrc/client/hud.qc:3111
+#: qcsrc/client/hud.qc:3199
 msgid "Allow servers to store and display your name?"
 msgstr ""
 
-#: qcsrc/client/hud.qc:3115
+#: qcsrc/client/hud.qc:3203
 msgid "^1Configure the HUD"
 msgstr ""
 
-#: qcsrc/client/hud.qc:3119
+#: qcsrc/client/hud.qc:3207
 #, c-format
 msgid "Yes (%s): %d"
 msgstr ""
 
-#: qcsrc/client/hud.qc:3121
+#: qcsrc/client/hud.qc:3209
 #, c-format
 msgid "No (%s): %d"
 msgstr ""
 
-#: qcsrc/client/hud.qc:3624 qcsrc/client/hud.qc:3627 qcsrc/client/hud.qc:3629
+#: qcsrc/client/hud.qc:3712 qcsrc/client/hud.qc:3715 qcsrc/client/hud.qc:3717
 msgid "Personal best"
 msgstr ""
 
-#: qcsrc/client/hud.qc:3642 qcsrc/client/hud.qc:3645 qcsrc/client/hud.qc:3647
+#: qcsrc/client/hud.qc:3730 qcsrc/client/hud.qc:3733 qcsrc/client/hud.qc:3735
 msgid "Server best"
 msgstr ""
 
-#: qcsrc/client/hud.qc:3993
+#: qcsrc/client/hud.qc:4081
 msgid "^3Player^7: This is the chat area."
 msgstr ""
 
-#: qcsrc/client/hud.qc:4061
+#: qcsrc/client/hud.qc:4149
 #, c-format
 msgid "FPS: %.*f"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4128
+#: qcsrc/client/hud.qc:4216
 msgid "^1Observing"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4131 qcsrc/client/hud.qc:4133
+#: qcsrc/client/hud.qc:4219 qcsrc/client/hud.qc:4221
 #, c-format
 msgid "^1Spectating: ^7%s"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4138
+#: qcsrc/client/hud.qc:4226
 #, c-format
 msgid "^1Press ^3%s^1 to spectate"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4140
+#: qcsrc/client/hud.qc:4228
 #, c-format
 msgid "^1Press ^3%s^1 for another player"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4144
+#: qcsrc/client/hud.qc:4232
 #, c-format
 msgid "^1Use ^3%s^1 or ^3%s^1 to change the speed"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4146
+#: qcsrc/client/hud.qc:4234
 #, c-format
 msgid "^1Press ^3%s^1 to observe"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4149
+#: qcsrc/client/hud.qc:4237
 #, c-format
 msgid "^1Press ^3%s^1 for gamemode info"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4153
+#: qcsrc/client/hud.qc:4241
 msgid "^1Wait for your turn to join"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4159
+#: qcsrc/client/hud.qc:4247
 msgid "^1Match has already begun"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4161
+#: qcsrc/client/hud.qc:4249
 msgid "^1You have no more lives left"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4163 qcsrc/client/hud.qc:4166
+#: qcsrc/client/hud.qc:4251 qcsrc/client/hud.qc:4254
 #, c-format
 msgid "^1Press ^3%s^1 to join"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4174
+#: qcsrc/client/hud.qc:4262
 #, c-format
 msgid "^1Game starts in ^3%d^1 seconds"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4181
+#: qcsrc/client/hud.qc:4269
 msgid "^2Currently in ^1warmup^2 stage!"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4196
+#: qcsrc/client/hud.qc:4284
 #, c-format
 msgid "%sPress ^3%s%s to end warmup"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4198
+#: qcsrc/client/hud.qc:4286
 #, c-format
 msgid "%sPress ^3%s%s once you are ready"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4203
+#: qcsrc/client/hud.qc:4291
 msgid "^2Waiting for others to ready up to end warmup..."
 msgstr ""
 
-#: qcsrc/client/hud.qc:4205
+#: qcsrc/client/hud.qc:4293
 msgid "^2Waiting for others to ready up..."
 msgstr ""
 
-#: qcsrc/client/hud.qc:4211
+#: qcsrc/client/hud.qc:4299
 #, c-format
 msgid "^2Press ^3%s^2 to end warmup"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4232
+#: qcsrc/client/hud.qc:4320
 msgid "Teamnumbers are unbalanced!"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4237
+#: qcsrc/client/hud.qc:4325
 #, c-format
 msgid " Press ^3%s%s to adjust"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4245
+#: qcsrc/client/hud.qc:4333
 msgid "^7Press ^3ESC ^7to show HUD options."
 msgstr ""
 
-#: qcsrc/client/hud.qc:4247
+#: qcsrc/client/hud.qc:4335
 msgid "^3Doubleclick ^7a panel for panel-specific options."
 msgstr ""
 
-#: qcsrc/client/hud.qc:4249
+#: qcsrc/client/hud.qc:4337
 msgid "^3CTRL ^7to disable collision testing, ^3SHIFT ^7and"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4251
+#: qcsrc/client/hud.qc:4339
 msgid "^3ALT ^7+ ^3ARROW KEYS ^7for fine adjustments."
 msgstr ""
 
-#: qcsrc/client/hud.qc:4289
+#: qcsrc/client/hud.qc:4377
 msgid " qu/s"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4293
+#: qcsrc/client/hud.qc:4381
 msgid " m/s"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4297
+#: qcsrc/client/hud.qc:4385
 msgid " km/h"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4301
+#: qcsrc/client/hud.qc:4389
 msgid " mph"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4305
+#: qcsrc/client/hud.qc:4393
 msgid " knots"
 msgstr ""
 
-#: qcsrc/client/hud.qc:4968
+#: qcsrc/client/hud.qc:5059
 msgid "Automatically fixed wrong/missing panel numbers in _hud_panelorder\n"
 msgstr ""
 
-#: qcsrc/common/mapinfo.qc:1097
+#: qcsrc/client/target_music.qc:93 qcsrc/client/target_music.qc:181
 #, c-format
-msgid "%s: %s"
+msgid "Cannot initialize sound %s\n"
 msgstr ""
 
-#: qcsrc/server/w_crylink.qc:666
+#: qcsrc/common/mapinfo.qc:665
 #, c-format
-msgid "%s succeeded at self-destructing themself with the Crylink"
+msgid "@!#%'n Tuba Throwing"
 msgstr ""
 
-#: qcsrc/server/w_crylink.qc:671
+#: qcsrc/common/mapinfo.qc:1057
 #, c-format
-msgid "%s could not hide from %s's Crylink"
+msgid "%s: %s"
 msgstr ""
 
-#: qcsrc/server/w_crylink.qc:673
-#, c-format
-msgid "%s was too close to %s's Crylink"
+#: qcsrc/common/mapinfo.qh:36
+msgid "Deathmatch"
 msgstr ""
 
-#: qcsrc/server/w_crylink.qc:675
-#, c-format
-msgid "%s took a close look at %s's Crylink"
+#: qcsrc/common/mapinfo.qh:39
+msgid "Last Man Standing"
 msgstr ""
 
-#: qcsrc/server/w_hlac.qc:2
-msgid "Heavy Laser Assault Cannon"
+#: qcsrc/common/mapinfo.qh:42
+msgid "Arena"
 msgstr ""
 
-#: qcsrc/server/w_hlac.qc:240 qcsrc/server/w_fireball.qc:423
-#, c-format
-msgid "%s should have used a smaller gun"
+#: qcsrc/common/mapinfo.qh:45
+msgid "Runematch"
 msgstr ""
 
-#: qcsrc/server/w_hlac.qc:242
-#, c-format
-msgid "%s was cut down with a HLAC by %s"
+#: qcsrc/common/mapinfo.qh:48
+msgid "Race"
 msgstr ""
 
-#: qcsrc/server/w_minstanex.qc:2
-msgid "MinstaNex"
+#: qcsrc/common/mapinfo.qh:51
+msgid "Race CTS"
 msgstr ""
 
-#: qcsrc/server/w_minstanex.qc:293 qcsrc/server/w_nex.qc:253
-#: qcsrc/server/w_shotgun.qc:271 qcsrc/server/w_rifle.qc:232
-#: qcsrc/server/w_uzi.qc:318
-#, c-format
-msgid "%s is now thinking with portals"
+#: qcsrc/common/mapinfo.qh:54
+msgid "Team Deathmatch"
 msgstr ""
 
-#: qcsrc/server/w_minstanex.qc:295
-#, c-format
-msgid "%s has been vaporized by %s's minstanex"
+#: qcsrc/common/mapinfo.qh:57
+msgid "Capture the Flag"
 msgstr ""
 
-#: qcsrc/server/w_grenadelauncher.qc:388
-#, c-format
-msgid "%s didn't see their own grenade"
+#: qcsrc/common/mapinfo.qh:60
+msgid "Clan Arena"
 msgstr ""
 
-#: qcsrc/server/w_grenadelauncher.qc:390
-#, c-format
-msgid "%s blew themself up with their grenadelauncher"
+#: qcsrc/common/mapinfo.qh:63
+msgid "Domination"
 msgstr ""
 
-#: qcsrc/server/w_grenadelauncher.qc:396
-#, c-format
-msgid "%s didn't see %s's grenade"
+#: qcsrc/common/mapinfo.qh:66
+msgid "Key Hunt"
 msgstr ""
 
-#: qcsrc/server/w_grenadelauncher.qc:398
-#, c-format
-msgid "%s almost dodged %s's grenade"
+#: qcsrc/common/mapinfo.qh:69
+msgid "Assault"
 msgstr ""
 
-#: qcsrc/server/w_grenadelauncher.qc:400
+#: qcsrc/common/mapinfo.qh:72
+msgid "Onslaught"
+msgstr ""
+
+#: qcsrc/common/mapinfo.qh:75
+msgid "Nexball"
+msgstr ""
+
+#: qcsrc/common/mapinfo.qh:78
+msgid "Freeze Tag"
+msgstr ""
+
+#: qcsrc/common/mapinfo.qh:81
+msgid "Keepaway"
+msgstr ""
+
+#: qcsrc/server/w_rifle.qc:232 qcsrc/server/w_uzi.qc:318
+#: qcsrc/server/w_shotgun.qc:271 qcsrc/server/w_minstanex.qc:295
+#: qcsrc/server/w_nex.qc:256
 #, c-format
-msgid "%s ate %s's grenade"
+msgid "%s is now thinking with portals"
 msgstr ""
 
-#: qcsrc/server/w_laser.qc:312
+#: qcsrc/server/w_rifle.qc:239
 #, c-format
-msgid "%s lasered themself to hell"
+msgid "%s failed to hide from %s's rifle bullet hail"
 msgstr ""
 
-#: qcsrc/server/w_laser.qc:316
+#: qcsrc/server/w_rifle.qc:241
 #, c-format
-msgid "%s was cut in half by %s's gauntlet"
+msgid "%s died in %s's rifle bullet hail"
 msgstr ""
 
-#: qcsrc/server/w_laser.qc:318
+#: qcsrc/server/w_rifle.qc:248
 #, c-format
-msgid "%s was lasered to death by %s"
+msgid "%s failed to hide from %s's rifle"
 msgstr ""
 
-#: qcsrc/server/w_nex.qc:255
+#: qcsrc/server/w_rifle.qc:253
 #, c-format
-msgid "%s has been vaporized by %s's nex"
+msgid "%s got shot in the head with a rifle by %s"
 msgstr ""
 
-#: qcsrc/server/w_hook.qc:2
-msgid "Grappling Hook"
+#: qcsrc/server/w_rifle.qc:255
+#, c-format
+msgid "%s was sniped with a rifle by %s"
 msgstr ""
 
-#: qcsrc/server/w_hook.qc:286 qcsrc/server/w_porto.qc:296
+#: qcsrc/server/w_uzi.qc:322
 #, c-format
-msgid "%s did the impossible"
+msgid "%s was sniped by %s's machine gun"
 msgstr ""
 
-#: qcsrc/server/w_hook.qc:288
+#: qcsrc/server/w_uzi.qc:324
 #, c-format
-msgid "%s was caught in %s's hook gravity bomb"
+msgid "%s was riddled full of holes by %s's machine gun"
 msgstr ""
 
-#: qcsrc/server/w_rocketlauncher.qc:507
+#: qcsrc/server/w_rocketlauncher.qc:466
 #, c-format
 msgid "%s blew themself up with their rocketlauncher"
 msgstr ""
 
-#: qcsrc/server/w_rocketlauncher.qc:511
+#: qcsrc/server/w_rocketlauncher.qc:470
 #, c-format
 msgid "%s got too close to %s's rocket"
 msgstr ""
 
-#: qcsrc/server/w_rocketlauncher.qc:513
+#: qcsrc/server/w_rocketlauncher.qc:472
 #, c-format
 msgid "%s almost dodged %s's rocket"
 msgstr ""
 
-#: qcsrc/server/w_rocketlauncher.qc:515
+#: qcsrc/server/w_rocketlauncher.qc:474
 #, c-format
 msgid "%s ate %s's rocket"
 msgstr ""
 
-#: qcsrc/server/w_porto.qc:298
+#: qcsrc/server/w_porto.qc:386 qcsrc/server/w_hook.qc:286
+#, c-format
+msgid "%s did the impossible"
+msgstr ""
+
+#: qcsrc/server/w_porto.qc:388
 #, c-format
 msgid "%s felt %s doing the impossible to him"
 msgstr ""
 
-#: qcsrc/server/w_electro.qc:581
+#: qcsrc/server/w_hook.qc:2
+msgid "Grappling Hook"
+msgstr ""
+
+#: qcsrc/server/w_hook.qc:288
+#, c-format
+msgid "%s was caught in %s's hook gravity bomb"
+msgstr ""
+
+#: qcsrc/server/w_electro.qc:589
 #, c-format
 msgid "%s could not remember where they put their electro plasma"
 msgstr ""
 
-#: qcsrc/server/w_electro.qc:583
+#: qcsrc/server/w_electro.qc:591
 #, c-format
 msgid "%s played with electro plasma"
 msgstr ""
 
-#: qcsrc/server/w_electro.qc:590
+#: qcsrc/server/w_electro.qc:598
 #, c-format
 msgid "%s just noticed %s's electro plasma"
 msgstr ""
 
-#: qcsrc/server/w_electro.qc:592
+#: qcsrc/server/w_electro.qc:600
 #, c-format
 msgid "%s got in touch with %s's electro plasma"
 msgstr ""
 
-#: qcsrc/server/w_electro.qc:597
+#: qcsrc/server/w_electro.qc:605
 #, c-format
 msgid "%s felt the electrifying air of %s's electro combo"
 msgstr ""
 
-#: qcsrc/server/w_electro.qc:599
+#: qcsrc/server/w_electro.qc:607
 #, c-format
 msgid "%s got too close to %s's blue electro bolt"
 msgstr ""
 
-#: qcsrc/server/w_electro.qc:601
+#: qcsrc/server/w_electro.qc:609
 #, c-format
 msgid "%s was blasted by %s's blue electro bolt"
 msgstr ""
 
-#: qcsrc/server/w_hagar.qc:462
+#: qcsrc/server/w_laser.qc:312
 #, c-format
-msgid "%s played with tiny hagar rockets"
+msgid "%s lasered themself to hell"
 msgstr ""
 
-#: qcsrc/server/w_hagar.qc:466
+#: qcsrc/server/w_laser.qc:316
 #, c-format
-msgid "%s was pummeled with a burst of hagar rockets by %s"
+msgid "%s was cut in half by %s's gauntlet"
 msgstr ""
 
-#: qcsrc/server/w_hagar.qc:468
+#: qcsrc/server/w_laser.qc:318
 #, c-format
-msgid "%s was pummeled with hagar rockets by %s"
+msgid "%s was lasered to death by %s"
 msgstr ""
 
 #: qcsrc/server/w_shotgun.qc:275
@@ -1889,116 +1875,169 @@ msgstr ""
 msgid "%s died of %s's great playing on the @!#%%'n Accordeon"
 msgstr ""
 
-#: qcsrc/server/w_minelayer.qc:533
+#: qcsrc/server/w_minstanex.qc:2
+msgid "MinstaNex"
+msgstr ""
+
+#: qcsrc/server/w_minstanex.qc:297
 #, c-format
-msgid "%s blew themself up with their minelayer"
+msgid "%s has been vaporized by %s's minstanex"
 msgstr ""
 
-#: qcsrc/server/w_minelayer.qc:535
+#: qcsrc/server/w_crylink.qc:666
 #, c-format
-msgid "%s forgot about their mine"
+msgid "%s succeeded at self-destructing themself with the Crylink"
 msgstr ""
 
-#: qcsrc/server/w_minelayer.qc:539
+#: qcsrc/server/w_crylink.qc:671
 #, c-format
-msgid "%s got too close to %s's mine"
+msgid "%s could not hide from %s's Crylink"
 msgstr ""
 
-#: qcsrc/server/w_minelayer.qc:541
+#: qcsrc/server/w_crylink.qc:673
 #, c-format
-msgid "%s almost dodged %s's mine"
+msgid "%s was too close to %s's Crylink"
 msgstr ""
 
-#: qcsrc/server/w_minelayer.qc:543
+#: qcsrc/server/w_crylink.qc:675
 #, c-format
-msgid "%s stepped on %s's mine"
+msgid "%s took a close look at %s's Crylink"
 msgstr ""
 
-#: qcsrc/server/w_rifle.qc:239
+#: qcsrc/server/w_hlac.qc:2
+msgid "Heavy Laser Assault Cannon"
+msgstr ""
+
+#: qcsrc/server/w_hlac.qc:240 qcsrc/server/w_fireball.qc:405
 #, c-format
-msgid "%s failed to hide from %s's rifle bullet hail"
+msgid "%s should have used a smaller gun"
 msgstr ""
 
-#: qcsrc/server/w_rifle.qc:241
+#: qcsrc/server/w_hlac.qc:242
 #, c-format
-msgid "%s died in %s's rifle bullet hail"
+msgid "%s was cut down with a HLAC by %s"
 msgstr ""
 
-#: qcsrc/server/w_rifle.qc:248
+#: qcsrc/server/w_grenadelauncher.qc:388
 #, c-format
-msgid "%s failed to hide from %s's rifle"
+msgid "%s didn't see their own grenade"
 msgstr ""
 
-#: qcsrc/server/w_rifle.qc:253
+#: qcsrc/server/w_grenadelauncher.qc:390
 #, c-format
-msgid "%s got shot in the head with a rifle by %s"
+msgid "%s blew themself up with their grenadelauncher"
 msgstr ""
 
-#: qcsrc/server/w_rifle.qc:255
+#: qcsrc/server/w_grenadelauncher.qc:396
 #, c-format
-msgid "%s was sniped with a rifle by %s"
+msgid "%s didn't see %s's grenade"
 msgstr ""
 
-#: qcsrc/server/w_uzi.qc:322
+#: qcsrc/server/w_grenadelauncher.qc:398
 #, c-format
-msgid "%s was sniped by %s's machine gun"
+msgid "%s almost dodged %s's grenade"
 msgstr ""
 
-#: qcsrc/server/w_uzi.qc:324
+#: qcsrc/server/w_grenadelauncher.qc:400
 #, c-format
-msgid "%s was riddled full of holes by %s's machine gun"
+msgid "%s ate %s's grenade"
 msgstr ""
 
-#: qcsrc/server/w_fireball.qc:421
+#: qcsrc/server/w_hagar.qc:462
+#, c-format
+msgid "%s played with tiny hagar rockets"
+msgstr ""
+
+#: qcsrc/server/w_hagar.qc:466
+#, c-format
+msgid "%s was pummeled with a burst of hagar rockets by %s"
+msgstr ""
+
+#: qcsrc/server/w_hagar.qc:468
+#, c-format
+msgid "%s was pummeled with hagar rockets by %s"
+msgstr ""
+
+#: qcsrc/server/w_seeker.qc:2
+msgid "T.A.G. Seeker"
+msgstr ""
+
+#: qcsrc/server/w_seeker.qc:661
+#, c-format
+msgid "%s played with tiny seeker rockets"
+msgstr ""
+
+#: qcsrc/server/w_seeker.qc:665
+#, c-format
+msgid "%s was tagged with a seeker by %s"
+msgstr ""
+
+#: qcsrc/server/w_seeker.qc:667
+#, c-format
+msgid "%s was pummeled with seeker rockets by %s"
+msgstr ""
+
+#: qcsrc/server/w_fireball.qc:403
 #, c-format
 msgid "%s forgot about some firemine"
 msgstr ""
 
-#: qcsrc/server/w_fireball.qc:430
+#: qcsrc/server/w_fireball.qc:412
 #, c-format
 msgid "%s tried to catch %s's firemine"
 msgstr ""
 
-#: qcsrc/server/w_fireball.qc:432
+#: qcsrc/server/w_fireball.qc:414
 #, c-format
 msgid "%s fatefully ignored %s's firemine"
 msgstr ""
 
-#: qcsrc/server/w_fireball.qc:439
+#: qcsrc/server/w_fireball.qc:421
 #, c-format
 msgid "%s could not hide from %s's fireball"
 msgstr ""
 
-#: qcsrc/server/w_fireball.qc:441
+#: qcsrc/server/w_fireball.qc:423
 #, c-format
 msgid "%s saw the pretty lights of %s's fireball"
 msgstr ""
 
-#: qcsrc/server/w_fireball.qc:444
+#: qcsrc/server/w_fireball.qc:426
 #, c-format
 msgid "%s got too close to %s's fireball"
 msgstr ""
 
-#: qcsrc/server/w_fireball.qc:446
+#: qcsrc/server/w_fireball.qc:428
 #, c-format
 msgid "%s tasted %s's fireball"
 msgstr ""
 
-#: qcsrc/server/w_seeker.qc:2
-msgid "T.A.G. Seeker"
+#: qcsrc/server/w_minelayer.qc:533
+#, c-format
+msgid "%s blew themself up with their minelayer"
 msgstr ""
 
-#: qcsrc/server/w_seeker.qc:661
+#: qcsrc/server/w_minelayer.qc:535
 #, c-format
-msgid "%s played with tiny seeker rockets"
+msgid "%s forgot about their mine"
 msgstr ""
 
-#: qcsrc/server/w_seeker.qc:665
+#: qcsrc/server/w_minelayer.qc:539
 #, c-format
-msgid "%s was tagged with a seeker by %s"
+msgid "%s got too close to %s's mine"
 msgstr ""
 
-#: qcsrc/server/w_seeker.qc:667
+#: qcsrc/server/w_minelayer.qc:541
 #, c-format
-msgid "%s was pummeled with seeker rockets by %s"
+msgid "%s almost dodged %s's mine"
+msgstr ""
+
+#: qcsrc/server/w_minelayer.qc:543
+#, c-format
+msgid "%s stepped on %s's mine"
+msgstr ""
+
+#: qcsrc/server/w_nex.qc:258
+#, c-format
+msgid "%s has been vaporized by %s's nex"
 msgstr ""
index b7ac696208372384f5830a20bc6e2a7639e30412..64dad1cc79d1f3099a84792ef477cbf889c3b863 100644 (file)
@@ -22,6 +22,10 @@ gameversion_max 65535 // git builds see all versions
 //   gameversion_min = (gameversion / 100) * 100 - 100
 //   gameversion_max = (gameversion / 100) * 100 + 199
 
+// 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\""
+
 seta cl_firststart "" "how many times the client has been run"
 seta cl_startcount 0 "how many times the client has been run"
 
@@ -57,124 +61,6 @@ _cl_color 112
 _cl_name Player
 _cl_playermodel models/player/erebus.iqm
 _cl_playerskin 0
-seta crosshair 16
-seta crosshair_color "0.6 0.8 1"
-seta crosshair_alpha 0.300000
-seta crosshair_size 0.500000
-seta crosshair_dot 1
-seta crosshair_dot_alpha 1
-seta crosshair_dot_size 0.600000
-seta crosshair_dot_color "1 0 0" "when != 0, use custom color for the crosshair dot"
-seta crosshair_pickup 0.25
-seta crosshair_pickup_speed 4
-seta crosshair_hitindication 0.5
-seta crosshair_hitindication_color "10 -10 -10"
-seta crosshair_hitindication_speed 5
-seta crosshair_per_weapon 0    "when 1, each gun will display a different crosshair"
-seta crosshair_color_per_weapon 1 "when 1, each gun will display the crosshair with a different 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 "1 0.35 0.2"        "crosshair color to display when wielding the laser"
-seta crosshair_laser_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 "0.7 0.7 0.7"     "crosshair color to display when wielding the shotgun"
-seta crosshair_shotgun_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 "0.4 0.9 0.35"        "crosshair color to display when wielding the machinegun"
-seta crosshair_uzi_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 "1 0.15 0"        "crosshair color to display when wielding the mortar"
-seta crosshair_grenadelauncher_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_minelayer ""    "crosshair to display when wielding the mortar"
-seta crosshair_minelayer_color "0.75 0.75 0"   "crosshair color to display when wielding the mortar"
-seta crosshair_minelayer_alpha 1.15    "crosshair alpha value to display when wielding the mortar"
-seta crosshair_minelayer_size 0.9      "crosshair size when wielding the mortar"
-seta crosshair_electro ""      "crosshair to display when wielding the electro"
-seta crosshair_electro_color "0.35 0.5 1"      "crosshair color to display when wielding the electro"
-seta crosshair_electro_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 "0.85 0.25 1"     "crosshair color to display when wielding the crylink"
-seta crosshair_crylink_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 "0 0.9 1"     "crosshair color to display when wielding the nex gun"
-seta crosshair_nex_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 "0.85 0.5 0.35"     "crosshair color to display when wielding the hagar"
-seta crosshair_hagar_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 "1 0.75 0.2"       "crosshair color to display when wielding the rocketlauncher"
-seta crosshair_rocketlauncher_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 "0.5 1 0.5" "crosshair color to display when wielding the porto"
-seta crosshair_porto_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 "0.65 0.65 1"   "crosshair color to display when wielding the minstanex gun"
-seta crosshair_minstanex_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 "0.65 1 0.85"        "crosshair color to display when wielding the hook"
-seta crosshair_hook_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 "1 0.65 0.2" "crosshair color to display when wielding the H.L.A.C."
-seta crosshair_hlac_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_seeker ""       "crosshair to display when wielding the TAG Seeker"
-seta crosshair_seeker_color "1 0.35 0.35"      "crosshair color to display when wielding the TAG seeker"
-seta crosshair_seeker_alpha 0.9        "crosshair alpha value to display when wielding the TAG seeker"
-seta crosshair_seeker_size 0.8 "crosshair size when wielding the TAG seeker"
-seta crosshair_rifle ""        "crosshair to display when wielding the rifle"
-seta crosshair_rifle_color "0.85 0.5 0.25"     "crosshair color to display when wielding the rifle"
-seta crosshair_rifle_alpha 1   "crosshair alpha value to display when wielding the rifle"
-seta crosshair_rifle_size 0.5  "crosshair size when wielding the rifle"
-seta crosshair_tuba "" "crosshair to display when wielding the tuba"
-seta crosshair_tuba_color "0.85 0.5 0.25"      "crosshair color to display when wielding the tuba"
-seta crosshair_tuba_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 "0.2 1.0 0.2"    "crosshair color to display when wielding the fireball"
-seta crosshair_fireball_alpha 1        "crosshair alpha value to display when wielding the fireball"
-seta crosshair_fireball_size 1 "crosshair size when wielding the fireball"
-seta crosshair_color_by_health 0 "if enabled, crosshair color will depend on current health"
-
-// ring around crosshair, used for various purposes (such as indicating bullets left in clip, nex charge)
-seta crosshair_ring 1 "main cvar to enable or disable normal crosshair rings"
-seta crosshair_ring_inner 0 "allow inner rings to be drawn too"
-seta crosshair_ring_size 2     "ring size"
-seta crosshair_ring_alpha 0.2  "ring alpha"
-
-seta crosshair_ring_nex 1 "draw a ring showing the current charge of the nexgun"
-seta crosshair_ring_nex_alpha 0.15
-seta crosshair_ring_nex_inner_alpha 0.15
-seta crosshair_ring_nex_inner_color_red 0.8
-seta crosshair_ring_nex_inner_color_green 0
-seta crosshair_ring_nex_inner_color_blue 0
-seta crosshair_ring_nex_currentcharge_scale 30
-seta crosshair_ring_nex_currentcharge_movingavg_rate 0.05
-
-seta crosshair_ring_minelayer 1
-seta crosshair_ring_minelayer_alpha 0.15
-
-seta crosshair_ring_hagar 1
-seta crosshair_ring_hagar_alpha 0.15
-
-seta crosshair_ring_reload 1 "main cvar to enable or disable ammo crosshair rings"
-seta crosshair_ring_reload_size 2.5    "reload ring size"
-seta crosshair_ring_reload_alpha 0.2   "reload ring alpha"
 
 seta cl_reticle 1 "control for toggling whether ANY zoom reticles are shown"
 seta cl_reticle_stretch 0 "whether to stretch reticles so they fit the screen (brakes image proportions)"
@@ -321,6 +207,14 @@ set g_telefrags_teamplay 1 "never telefrag team mates"
 set g_telefrags_avoid 1 "when teleporters have a random destination, avoid teleporting to locations where a telefrag would happen"
 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"
 
+seta cl_damageeffect 1 "enable weapon damage effects. 1 enables the feature on skeletal models, 2 on any model"
+seta cl_damageeffect_ticrate 0.1 "particle spawn rate"
+seta cl_damageeffect_bones 5 "how many damages to allow on a rigged mesh at once (non-skeletal objects are limited to one)"
+seta cl_damageeffect_distribute 1 "divide particle intensity if multiple damages are present"
+seta cl_damageeffect_lifetime 0.1 "how much a damage effect lasts, based on damage amount"
+seta cl_damageeffect_lifetime_min 3 "minimum lifetime a damage effect may have"
+seta cl_damageeffect_lifetime_max 6 "maximum lifetime a damage effect may have"
+
 set g_respawn_ghosts 1 "if 1 dead bodies become ghosts and float away when the player respawns"
 set g_respawn_ghosts_speed 5 "the speed with which respawn ghosts float and rotate"
 set g_respawn_ghosts_maxtime 6 "maximum amount of time a respawn ghost can last, minimum time is half this value. 0 disables and ghosts fade when the body would"
@@ -453,7 +347,6 @@ locs_enable 0
 pausable 0
 set g_spawnshieldtime 1 "number of seconds you are invincible after you spawned, this shield is lost after you fire"
 set 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_trueaim_minrange 44 "TrueAim minimum range (TrueAim adjusts shots so they hit the crosshair point even though the gun is not at the screen center)"
 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 2 "let client decide if it has the gun left or right; if set to 2, center handedness is allowed; see also cl_gunalign"
@@ -647,9 +540,9 @@ set g_cts_weapon_stay 2
 set g_freezetag_respawn_waves 0
 set g_freezetag_respawn_delay 0
 set g_freezetag_weapon_stay 0
-set g_ka_respawn_delay 0
-set g_ka_respawn_waves 0
-set g_ka_weapon_stay 0
+set g_keepaway_respawn_delay 0
+set g_keepaway_respawn_waves 0
+set g_keepaway_weapon_stay 0
 
 // overtime
 seta timelimit_overtime 2 "duration in minutes of one added overtime, added to the timelimit"
@@ -1136,7 +1029,7 @@ set quit_and_redirect ""  "set to an IP to redirect all players at the end of the
 set g_campaign 0
 set g_campaign_forceteam 0 "Forces the player to a given team in campaign mode, 1 = red, 2 = blue, 3 = yellow, 4 = pink"
 seta g_campaign_name "xonoticbeta"
-set g_campaign_skill 0
+seta g_campaign_skill -1 // -2 easy -1 medium 0 hard
 
 alias singleplayer_start "g_campaign_index 0; set scmenu_campaign_goto 0"
 alias singleplayer_continue "set scmenu_campaign_goto -1"
@@ -1338,6 +1231,7 @@ set menu_slowmo 1
 seta menu_sounds 0 "enables menu sound effects. 1 enables click sounds, 2 also enables hover sounds"
 seta menu_tooltips 1 "menu tooltips: 0 disabled, 1 enabled, 2 also shows cvar or console command (when available) changed or executed by the item"
 set menu_picmip_bypass 0 "bypass texture quality enforcement based on system resources, not recommended and may cause crashes!"
+set menu_showboxes 0 "show item bounding boxes (debug)"
 
 r_textbrightness 0.2
 r_textcontrast 0.8
@@ -1446,6 +1340,8 @@ seta v_kicktime $v_kicktime
 seta r_subdivisions_tolerance $r_subdivisions_tolerance
 seta vid_gl20 $vid_gl20
 seta vid_gl13 $vid_gl13
+seta r_drawviewmodel $r_drawviewmodel
+seta v_idlescale $v_idlescale
 
 // ticrate
 //sys_ticrate 0.0166667
@@ -1956,6 +1852,9 @@ set g_weapon_charge_colormod_blue_full -1
 set g_playerstats_uri ""
 set g_playerstats_debug 0 "when 1, player stats are dumped to the console too"
 
+// autoscreenshots
+set g_max_info_autoscreenshot 3 "how many info_autoscreenshot entities are allowed"
+
 // session locking
 locksession 1
 
@@ -1994,6 +1893,7 @@ exec effects-normal.cfg
 exec physicsX.cfg
 exec turrets.cfg
 exec vehicles.cfg
+exec crosshairs.cfg
 
 // load console command aliases and settings
 exec commands.cfg
index 6f6acedadc5263f51c4ed9e0216ca5e4cfbdb039..a246b2d3f816c2dd12759891c6024b1600309b00 100644 (file)
Binary files a/demos/the-big-keybench.dem and b/demos/the-big-keybench.dem differ
index 0d464f5f7740d4dc7e9d26e4242fb4b7cd974182..8b555fa8981d60492509837fcaa7810ef6ef7933 100644 (file)
@@ -6686,3 +6686,704 @@ gravity -0.125
 bounce 1.5
 liquidfriction 4
 velocityjitter 16 16 16
+
+// laser damage effect
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_laser
+notunderwater
+count 3
+type smoke
+tex 0 8
+color 0x880000 0xff4400
+size 2 4
+sizeincrease 8
+alpha 128 16 128
+gravity 0
+originjitter 2 2 2
+velocityjitter 0.4 0.4 0.6
+velocitymultiplier 0
+airfriction -0.35
+rotate 0 180 -30 30
+
+// shotgun damage effect, normal blood
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_shotgun
+count 0.6
+type blood
+tex 24 32
+size 2 4
+alpha 256 256 64
+color 0xA8FFFF 0xA8FFFFF
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 64 64 64
+velocitymultiplier 5
+staincolor 0x808080 0x808080
+staintex 16 24
+//blood mist
+effect damage_shotgun
+count 1
+type alphastatic
+tex 0 8
+size 8 16
+alpha 100 256 400
+color 0x000000 0x420000
+originjitter 1 1 1
+
+// shotgun damage effect, alien blood
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_shotgun_alien
+count 0.6
+type blood
+tex 24 32
+size 2 4
+alpha 256 256 64
+color 0xDC9BCD 0xDC9BCD
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 64 64 64
+velocitymultiplier 5
+staincolor 0x808080 0x808080
+staintex 16 24
+//blood mist
+effect damage_shotgun_alien
+count 1
+type alphastatic
+tex 0 8
+size 8 16
+alpha 100 256 400
+color 0x000000 0x204010
+originjitter 1 1 1
+
+// shotgun damage effect, robot blood
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_shotgun_robot
+count 0.6
+type blood
+tex 24 32
+size 2 4
+alpha 256 256 64
+color 0xC0D890 0xC0D890
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 64 64 64
+velocitymultiplier 5
+staincolor 0x808080 0x808080
+staintex 16 24
+//blood mist
+effect damage_shotgun_robot
+count 1
+type alphastatic
+tex 0 8
+size 8 16
+alpha 100 256 400
+color 0x000000 0x301860
+originjitter 1 1 1
+
+// uzi damage effect, normal blood
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_uzi
+count 0.3
+type blood
+tex 24 32
+size 2 4
+alpha 256 256 64
+color 0xA8FFFF 0xA8FFFFF
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 32 32 32
+velocitymultiplier 5
+staincolor 0x808080 0x808080
+staintex 16 24
+//blood mist
+effect damage_uzi
+count 1
+type alphastatic
+tex 0 8
+size 6 12
+alpha 100 256 400
+color 0x000000 0x420000
+originjitter 0 0 0
+
+// uzi damage effect, alien blood
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_uzi_alien
+count 0.3
+type blood
+tex 24 32
+size 2 4
+alpha 256 256 64
+color 0xDC9BCD 0xDC9BCD
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 32 32 32
+velocitymultiplier 5
+staincolor 0x808080 0x808080
+staintex 16 24
+//blood mist
+effect damage_uzi_alien
+count 1
+type alphastatic
+tex 0 8
+size 6 12
+alpha 100 256 400
+color 0x000000 0x204010
+originjitter 0 0 0
+
+// uzi damage effect, robot blood
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_uzi_robot
+count 0.3
+type blood
+tex 24 32
+size 2 4
+alpha 256 256 64
+color 0xC0D890 0xC0D890
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 32 32 32
+velocitymultiplier 5
+staincolor 0x808080 0x808080
+staintex 16 24
+//blood mist
+effect damage_uzi_robot
+count 1
+type alphastatic
+tex 0 8
+size 6 12
+alpha 100 256 400
+color 0x000000 0x301860
+originjitter 0 0 0
+
+// minelayer damage effect
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_minelayer
+notunderwater
+count 3
+type smoke
+tex 48 55
+size 4 8
+alpha 512 64 1024
+gravity -0.5
+color 0x8f0d00 0xff5a00
+sizeincrease -15
+originjitter 2 2 2
+velocityjitter 22 22 50
+// smoke
+effect damage_minelayer
+notunderwater
+type alphastatic
+count 2
+tex 0 8
+size 4 8
+sizeincrease 5
+alpha 128 32 128
+color 0x000000 0x111111
+gravity -0.3
+originjitter 4 4 4
+velocityjitter 11 11 50
+// light
+/*effect damage_minelayer
+notunderwater
+trailspacing 8
+lightradius 60
+lightradiusfade 280
+lightcolor 0.7 0.4 0.2*/
+
+// grenadelauncher damage effect
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_grenadelauncher
+notunderwater
+count 3
+type smoke
+tex 48 55
+size 4 8
+alpha 512 64 1024
+gravity -0.5
+color 0x8f0d00 0xff5a00
+sizeincrease -15
+originjitter 2 2 2
+velocityjitter 22 22 50
+// smoke
+effect damage_grenadelauncher
+notunderwater
+type alphastatic
+count 2
+tex 0 8
+size 4 8
+sizeincrease 5
+alpha 128 32 128
+color 0x000000 0x111111
+gravity -0.3
+originjitter 4 4 4
+velocityjitter 11 11 50
+// light
+/*effect damage_grenadelauncher
+notunderwater
+trailspacing 8
+lightradius 60
+lightradiusfade 280
+lightcolor 0.7 0.4 0.2*/
+
+// electro damage effect
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_electro
+notunderwater
+count 2
+type static
+tex 47 47
+color 0x66ffff 0x2288ff
+size 6 10
+sizeincrease -14
+alpha 48 8 48
+gravity -0.0001
+airfriction 0.2
+liquidfriction 0.8
+originjitter 3 3 3
+velocityjitter 8 8 16
+velocitymultiplier 0
+airfriction -0.5
+rotate 180 360 -30 30
+// plasma smoke
+effect damage_electro
+notunderwater
+count 4
+type smoke
+tex 0 8
+color 0x2244ff 0x002266
+size 4 8
+sizeincrease 10
+alpha 64 16 64
+gravity 0
+originjitter 4 4 4
+velocityjitter 0.4 0.4 0.6
+velocitymultiplier 0
+airfriction -0.35
+rotate 0 180 -30 30
+// bouncing sparks
+effect damage_electro
+count 0.5
+type spark
+tex 66 68
+color 0x003090 0x00CCFF
+size 1 1
+alpha 768 64 256
+gravity 0.2
+airfriction 1
+bounce 1.5
+liquidfriction 0.8
+velocityoffset 0 0 0
+velocityjitter 32 32 32
+// light
+/*effect damage_electro
+notunderwater
+trailspacing 8
+lightradius 50
+lightradiusfade 220
+lightcolor 0.2 0.6 0.8*/
+
+// crylink damage effect
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_crylink
+notunderwater
+count 2
+type static
+tex 38 38
+color 0xff44ff 0x9966ff
+size 0.5 1
+sizeincrease -8
+alpha 48 16 48
+gravity -0.0001
+airfriction 0.6
+liquidfriction 0.8
+originjitter 3 3 3
+velocityjitter 10 10 20
+velocitymultiplier 0
+airfriction -0.5
+rotate 180 360 -30 30
+// plasma smoke
+effect damage_crylink
+notunderwater
+count 4
+type smoke
+tex 0 8
+color 0x8844ff 0x662244
+size 5 10
+sizeincrease 6
+alpha 64 16 64
+gravity 0.001
+originjitter 4 4 4
+velocityjitter 0.4 0.4 0.6
+velocitymultiplier 0
+airfriction -0.35
+rotate 0 180 -30 30
+// floating sparks
+effect damage_crylink
+count 0.3
+type spark
+color 0x903090 0xFFD0FF
+size 0.5 0.5
+sizeincrease -5
+alpha 192 192 128
+gravity 0
+airfriction 0.2
+liquidfriction 0.8
+velocityoffset 0 0 0
+velocityjitter 12 12 12
+// light
+/*effect damage_crylink
+notunderwater
+trailspacing 8
+lightradius 50
+lightradiusfade 240
+lightcolor 0.6 0.2 0.8*/
+
+// hlac damage effect
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_hlac
+notunderwater
+count 3
+type smoke
+tex 0 8
+color 0x880000 0xff4400
+size 2 4
+sizeincrease 10
+alpha 128 16 128
+gravity 0
+originjitter 4 4 4
+velocityjitter 0.4 0.4 0.6
+velocitymultiplier 0
+airfriction -0.35
+rotate 0 180 -30 30
+
+// nex damage effect
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_nex
+count 1
+type static
+tex 47 47
+color 0xffffff 0x88ffff
+size 5 10
+sizeincrease -14
+alpha 64 8 64
+gravity -0.0001
+airfriction 0.1
+liquidfriction 0.6
+originjitter 4 4 4
+velocityjitter 8 8 16
+velocitymultiplier 0
+airfriction -0.5
+rotate 180 360 -30 30
+// plasma smoke
+effect damage_nex
+count 2
+type smoke
+tex 0 8
+color 0x6688ff 0x226688
+size 4 8
+sizeincrease 8
+alpha 64 16 64
+gravity 0
+originjitter 2 2 2
+velocityjitter 0.5 0.5 0.8
+velocitymultiplier 0
+airfriction -0.35
+rotate 0 180 -30 30
+// bouncing sparks
+effect damage_nex
+count 0.2
+type spark
+tex 41 41
+color 0xD9FDFF 0xD9FDFF
+size 1 1
+alpha 255 255 112
+bounce 1.6
+stretchfactor 0.7
+velocityjitter 100 100 300
+velocitymultiplier 3
+airfriction 2
+gravity 1
+// light
+/*effect damage_nex
+trailspacing 8
+lightradius 60
+lightradiusfade 280
+lightcolor 0.6 0.8 0.8*/
+
+// minstanex damage effect
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_minstanex
+count 2
+type static
+tex 47 47
+color 0xffffff 0x88ffff
+size 5 10
+sizeincrease -14
+alpha 64 8 64
+gravity -0.0001
+airfriction 0.1
+liquidfriction 0.6
+originjitter 4 4 4
+velocityjitter 8 8 16
+velocitymultiplier 0
+airfriction -0.5
+rotate 180 360 -30 30
+// plasma smoke
+effect damage_minstanex
+count 4
+type smoke
+tex 0 8
+color 0x6688ff 0x226688
+size 4 8
+sizeincrease 8
+alpha 64 16 64
+gravity 0
+originjitter 2 2 2
+velocityjitter 0.5 0.5 0.8
+velocitymultiplier 0
+airfriction -0.35
+rotate 0 180 -30 30
+// bouncing sparks
+effect damage_minstanex
+count 0.2
+type spark
+tex 41 41
+color 0xD9FDFF 0xD9FDFF
+size 1 1
+alpha 255 255 112
+bounce 1.6
+stretchfactor 0.7
+velocityjitter 100 100 300
+velocitymultiplier 3
+airfriction 2
+gravity 1
+// light
+/*effect damage_minstanex
+trailspacing 8
+lightradius 60
+lightradiusfade 240
+lightcolor 0.6 0.8 0.8*/
+
+// sniperrifle damage effect, normal blood
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_rifle
+count 0.3
+type blood
+tex 24 32
+size 2 4
+alpha 256 256 64
+color 0xA8FFFF 0xA8FFFFF
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 32 32 32
+velocitymultiplier 5
+staincolor 0x808080 0x808080
+staintex 16 24
+//blood mist
+effect damage_rifle
+count 1
+type alphastatic
+tex 0 8
+size 6 12
+alpha 100 256 400
+color 0x000000 0x420000
+originjitter 0 0 0
+
+// sniperrifle damage effect, alien blood
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_rifle_alien
+count 0.3
+type blood
+tex 24 32
+size 2 4
+alpha 256 256 64
+color 0xDC9BCD 0xDC9BCD
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 32 32 32
+velocitymultiplier 5
+staincolor 0x808080 0x808080
+staintex 16 24
+//blood mist
+effect damage_rifle_alien
+count 1
+type alphastatic
+tex 0 8
+size 6 12
+alpha 100 256 400
+color 0x000000 0x204010
+originjitter 0 0 0
+
+// sniperrifle damage effect, robot blood
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_rifle_robot
+count 0.3
+type blood
+tex 24 32
+size 2 4
+alpha 256 256 64
+color 0xC0D890 0xC0D890
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 32 32 32
+velocitymultiplier 5
+staincolor 0x808080 0x808080
+staintex 16 24
+//blood mist
+effect damage_rifle_robot
+count 1
+type alphastatic
+tex 0 8
+size 6 12
+alpha 100 256 400
+color 0x000000 0x301860
+originjitter 0 0 0
+
+// seeker damage effect
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_seeker
+notunderwater
+count 3
+type smoke
+tex 48 55
+size 4 8
+alpha 512 32 1024
+gravity -0.3
+color 0x8f0c00 0xff2200
+sizeincrease -10
+originjitter 2 2 2
+velocityjitter 22 22 50
+// smoke
+effect damage_seeker
+notunderwater
+type alphastatic
+count 2
+tex 0 8
+size 2 4
+sizeincrease 10
+alpha 128 32 128
+color 0x000000 0x111111
+gravity -0.3
+originjitter 4 4 4
+velocityjitter 11 11 50
+// light
+/*effect damage_seeker
+notunderwater
+trailspacing 8
+lightradius 65
+lightradiusfade 280
+lightcolor 0.7 0.5 0.1*/
+
+// hagar damage effect
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_hagar
+notunderwater
+count 3
+type smoke
+tex 48 55
+size 4 8
+alpha 512 32 1024
+gravity -0.3
+color 0x8f0c00 0xff3a00
+sizeincrease -10
+originjitter 2 2 2
+velocityjitter 22 22 50
+// smoke
+effect damage_hagar
+notunderwater
+type alphastatic
+count 2
+tex 0 8
+size 2 4
+sizeincrease 10
+alpha 128 32 128
+color 0x000000 0x111111
+gravity -0.3
+originjitter 4 4 4
+velocityjitter 11 11 50
+// light
+/*effect damage_hagar
+notunderwater
+trailspacing 8
+lightradius 65
+lightradiusfade 280
+lightcolor 0.7 0.5 0.1*/
+
+// fireball damage effect
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_fireball
+notunderwater
+count 4
+type smoke
+tex 48 55
+size 5 10
+alpha 256 16 512
+gravity -0.5
+color 0x8f0d00 0xff5a00
+sizeincrease -10
+originjitter 8 8 8
+velocityjitter 22 22 50
+// smoke
+effect damage_fireball
+notunderwater
+type alphastatic
+count 4
+tex 0 8
+size 4 8
+sizeincrease 10
+alpha 128 32 128
+color 0x000000 0x111111
+gravity -0.3
+originjitter 6 6 6
+velocityjitter 11 11 50
+// light
+/*effect damage_fireball
+notunderwater
+trailspacing 8
+lightradius 65
+lightradiusfade 280
+lightcolor 1.0 0.8 0.4*/
+
+// rocketlauncher damage effect
+// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+effect damage_rocketlauncher
+notunderwater
+count 3
+type smoke
+tex 48 55
+size 5 10
+alpha 512 64 1024
+gravity -0.7
+color 0x8f0c00 0xff2a00
+sizeincrease -10
+originjitter 4 4 4
+velocityjitter 22 22 30
+// smoke
+effect damage_rocketlauncher
+notunderwater
+type alphastatic
+count 3
+tex 0 8
+size 4 8
+sizeincrease 10
+alpha 128 32 128
+color 0x000000 0x111111
+gravity -0.3
+originjitter 4 4 4
+velocityjitter 11 11 50
+// light
+/*effect damage_rocketlauncher
+notunderwater
+trailspacing 8
+lightradius 60
+lightradiusfade 280
+lightcolor 0.8 0.6 0.2*/
index 0e011fe56be28f6516e54bd5cf76fab65031acac..65ef997b26aa34996369b095825ef37e9f429194 100644 (file)
@@ -2,9 +2,9 @@ cl_decals 1
 cl_decals_models 0
 cl_decals_time 4
 cl_particles_quality 1
+cl_damageeffect 1
 gl_flashblend 0
 gl_picmip -1
-gl_texture_anisotropy 16
 mod_q3bsp_nolightmaps 0
 r_bloom 1
 r_coronas 1
@@ -15,9 +15,10 @@ r_depthfirst 2
 r_drawdecals_drawdistance 500
 r_drawparticles_drawdistance 2000
 r_glsl_deluxemapping 1
-r_glsl_offsetmapping 1
+r_glsl_offsetmapping 0
+r_glsl_offsetmapping_lod 1
 r_glsl_offsetmapping_reliefmapping 0
-r_motionblur 0.5
+r_motionblur 0.4
 r_shadow_gloss 1
 r_shadow_realtime_dlight 1
 r_shadow_realtime_dlight_shadows 0
@@ -29,8 +30,6 @@ r_showsurfaces 0
 r_subdivisions_tolerance 3
 r_texture_dds_load 1
 r_water 1
-r_water_resolutionmultiplier 0.5
-vid_samples 1
-r_viewfbo 2
+r_water_resolutionmultiplier 0.25
 
 menu_sync
index a9cff5abe5e85b3f5bd38c64bd5a5293cda43e89..4b0cf628198fbb80add620134d97be16a9ff41af 100644 (file)
@@ -2,9 +2,9 @@ cl_decals 1
 cl_decals_models 0
 cl_decals_time 2
 cl_particles_quality 0.4
+cl_damageeffect 0
 gl_flashblend 1
 gl_picmip 1
-gl_texture_anisotropy 1
 mod_q3bsp_nolightmaps 1
 r_bloom 0
 r_coronas 1
@@ -16,6 +16,7 @@ r_drawdecals_drawdistance 200
 r_drawparticles_drawdistance 500
 r_glsl_deluxemapping 0
 r_glsl_offsetmapping 0
+r_glsl_offsetmapping_lod 1
 r_glsl_offsetmapping_reliefmapping 0
 r_motionblur 0
 r_shadow_gloss 0
@@ -29,8 +30,6 @@ r_showsurfaces 0
 r_subdivisions_tolerance 8
 r_texture_dds_load 1
 r_water 0
-r_water_resolutionmultiplier 0.5
-vid_samples 1
-r_viewfbo 0
+r_water_resolutionmultiplier 0.25
 
 menu_sync
index 5be8356e2e11c52fca16d0f258372bb05eaddd9f..e4882b8c00f68701d8e0ecb4c03cb81206c27b31 100644 (file)
@@ -2,9 +2,9 @@ cl_decals 1
 cl_decals_models 0
 cl_decals_time 2
 cl_particles_quality 1
+cl_damageeffect 0
 gl_flashblend 0
 gl_picmip 0
-gl_texture_anisotropy 1
 mod_q3bsp_nolightmaps 0
 r_bloom 0
 r_coronas 1
@@ -16,6 +16,7 @@ r_drawdecals_drawdistance 300
 r_drawparticles_drawdistance 1000
 r_glsl_deluxemapping 0
 r_glsl_offsetmapping 0
+r_glsl_offsetmapping_lod 1
 r_glsl_offsetmapping_reliefmapping 0
 r_motionblur 0
 r_shadow_gloss 0
@@ -29,8 +30,6 @@ r_showsurfaces 0
 r_subdivisions_tolerance 4
 r_texture_dds_load 1
 r_water 0
-r_water_resolutionmultiplier 0.5
-vid_samples 1
-r_viewfbo 0
+r_water_resolutionmultiplier 0.25
 
 menu_sync
index 0aebfb79dfd709737399f73b5e83721720415bda..64543bcc42d45bd6d75c222b344c4f2c7bfc799c 100644 (file)
@@ -2,9 +2,9 @@ cl_decals 1
 cl_decals_models 0
 cl_decals_time 2
 cl_particles_quality 1
+cl_damageeffect 1
 gl_flashblend 0
 gl_picmip 0
-gl_texture_anisotropy 1
 mod_q3bsp_nolightmaps 0
 r_bloom 0
 r_coronas 1
@@ -16,6 +16,7 @@ r_drawdecals_drawdistance 300
 r_drawparticles_drawdistance 1000
 r_glsl_deluxemapping 1
 r_glsl_offsetmapping 0
+r_glsl_offsetmapping_lod 1
 r_glsl_offsetmapping_reliefmapping 0
 r_motionblur 0
 r_shadow_gloss 1
@@ -29,8 +30,6 @@ r_showsurfaces 0
 r_subdivisions_tolerance 3
 r_texture_dds_load 1
 r_water 0
-r_water_resolutionmultiplier 0.5
-vid_samples 1
-r_viewfbo 0
+r_water_resolutionmultiplier 0.25
 
 menu_sync
index 350e9b8497afd77ae4b187b01d1e1e7b9fa4ed55..902266ca4830d505a8575d992076adb3d6b6ca70 100644 (file)
@@ -2,9 +2,9 @@ cl_decals 0
 cl_decals_models 0
 cl_decals_time 2
 cl_particles_quality 0.4
+cl_damageeffect 0
 gl_flashblend 1
 gl_picmip 1337
-gl_texture_anisotropy 1
 mod_q3bsp_nolightmaps 1
 r_bloom 0
 r_coronas 1
@@ -16,6 +16,7 @@ r_drawdecals_drawdistance 100
 r_drawparticles_drawdistance 250
 r_glsl_deluxemapping 0
 r_glsl_offsetmapping 0
+r_glsl_offsetmapping_lod 1
 r_glsl_offsetmapping_reliefmapping 0
 r_motionblur 0
 r_shadow_gloss 0
@@ -29,8 +30,6 @@ r_showsurfaces 3
 r_subdivisions_tolerance 16
 r_texture_dds_load 1
 r_water 0
-r_water_resolutionmultiplier 0.5
-vid_samples 1
-r_viewfbo 0
+r_water_resolutionmultiplier 0.25
 
 menu_sync
index 7e4125bf45bf224371e234cf601e70c2e46ff1df..ec949193cf919b8192e7e8c2669878a52fc8ecd3 100644 (file)
@@ -2,9 +2,9 @@ cl_decals 1
 cl_decals_models 1
 cl_decals_time 10
 cl_particles_quality 1
+cl_damageeffect 2
 gl_flashblend 0
 gl_picmip -1
-gl_texture_anisotropy 16
 mod_q3bsp_nolightmaps 0
 r_bloom 1
 r_coronas 1
@@ -16,8 +16,9 @@ r_drawdecals_drawdistance 500
 r_drawparticles_drawdistance 2000
 r_glsl_deluxemapping 1
 r_glsl_offsetmapping 1
+r_glsl_offsetmapping_lod 0
 r_glsl_offsetmapping_reliefmapping 1
-r_motionblur 0.5
+r_motionblur 0.4
 r_shadow_gloss 1
 r_shadow_realtime_dlight 1
 r_shadow_realtime_dlight_shadows 1
@@ -30,7 +31,5 @@ r_subdivisions_tolerance 1
 r_texture_dds_load 0
 r_water 1
 r_water_resolutionmultiplier 1
-vid_samples 1
-r_viewfbo 2
 
 menu_sync
index 1c9b9db3012a4f9d05d76aacac7180feea54880e..48c17c3a31eb5961a510d3872f9f9b20d650c16e 100644 (file)
@@ -2,9 +2,9 @@ cl_decals 1
 cl_decals_models 1
 cl_decals_time 10
 cl_particles_quality 1
+cl_damageeffect 1
 gl_flashblend 0
 gl_picmip -1
-gl_texture_anisotropy 16
 mod_q3bsp_nolightmaps 0
 r_bloom 1
 r_coronas 1
@@ -16,13 +16,14 @@ r_drawdecals_drawdistance 500
 r_drawparticles_drawdistance 2000
 r_glsl_deluxemapping 1
 r_glsl_offsetmapping 1
+r_glsl_offsetmapping_lod 1
 r_glsl_offsetmapping_reliefmapping 0
-r_motionblur 0.5
+r_motionblur 0.4
 r_shadow_gloss 1
 r_shadow_realtime_dlight 1
 r_shadow_realtime_dlight_shadows 1
 r_shadow_realtime_world 1
-r_shadow_realtime_world_shadows 1
+r_shadow_realtime_world_shadows 0
 r_shadow_shadowmapping 1
 r_shadow_usenormalmap 1
 r_showsurfaces 0
@@ -30,7 +31,5 @@ r_subdivisions_tolerance 2
 r_texture_dds_load 0
 r_water 1
 r_water_resolutionmultiplier 0.5
-vid_samples 1
-r_viewfbo 2
 
 menu_sync
diff --git a/gfx/menu/luminos/gametype_arena.tga b/gfx/menu/luminos/gametype_arena.tga
new file mode 100644 (file)
index 0000000..f49fa28
Binary files /dev/null and b/gfx/menu/luminos/gametype_arena.tga differ
diff --git a/gfx/menu/luminos/gametype_as.tga b/gfx/menu/luminos/gametype_as.tga
new file mode 100644 (file)
index 0000000..59bdfc1
Binary files /dev/null and b/gfx/menu/luminos/gametype_as.tga differ
diff --git a/gfx/menu/luminos/gametype_ca.tga b/gfx/menu/luminos/gametype_ca.tga
new file mode 100644 (file)
index 0000000..c82a992
Binary files /dev/null and b/gfx/menu/luminos/gametype_ca.tga differ
diff --git a/gfx/menu/luminos/gametype_ctf.tga b/gfx/menu/luminos/gametype_ctf.tga
new file mode 100644 (file)
index 0000000..cc3bc7c
Binary files /dev/null and b/gfx/menu/luminos/gametype_ctf.tga differ
diff --git a/gfx/menu/luminos/gametype_cts.tga b/gfx/menu/luminos/gametype_cts.tga
new file mode 100644 (file)
index 0000000..bc917ec
Binary files /dev/null and b/gfx/menu/luminos/gametype_cts.tga differ
diff --git a/gfx/menu/luminos/gametype_dm.tga b/gfx/menu/luminos/gametype_dm.tga
new file mode 100644 (file)
index 0000000..1266f59
Binary files /dev/null and b/gfx/menu/luminos/gametype_dm.tga differ
diff --git a/gfx/menu/luminos/gametype_dom.tga b/gfx/menu/luminos/gametype_dom.tga
new file mode 100644 (file)
index 0000000..f7637f9
Binary files /dev/null and b/gfx/menu/luminos/gametype_dom.tga differ
diff --git a/gfx/menu/luminos/gametype_duel.tga b/gfx/menu/luminos/gametype_duel.tga
new file mode 100644 (file)
index 0000000..03fe067
Binary files /dev/null and b/gfx/menu/luminos/gametype_duel.tga differ
diff --git a/gfx/menu/luminos/gametype_freezetag.tga b/gfx/menu/luminos/gametype_freezetag.tga
new file mode 100644 (file)
index 0000000..8028b67
Binary files /dev/null and b/gfx/menu/luminos/gametype_freezetag.tga differ
diff --git a/gfx/menu/luminos/gametype_keepaway.tga b/gfx/menu/luminos/gametype_keepaway.tga
new file mode 100644 (file)
index 0000000..21e472c
Binary files /dev/null and b/gfx/menu/luminos/gametype_keepaway.tga differ
diff --git a/gfx/menu/luminos/gametype_kh.tga b/gfx/menu/luminos/gametype_kh.tga
new file mode 100644 (file)
index 0000000..ca0d2aa
Binary files /dev/null and b/gfx/menu/luminos/gametype_kh.tga differ
diff --git a/gfx/menu/luminos/gametype_lms.tga b/gfx/menu/luminos/gametype_lms.tga
new file mode 100644 (file)
index 0000000..5549651
Binary files /dev/null and b/gfx/menu/luminos/gametype_lms.tga differ
diff --git a/gfx/menu/luminos/gametype_nexball.tga b/gfx/menu/luminos/gametype_nexball.tga
new file mode 100644 (file)
index 0000000..b4f7441
Binary files /dev/null and b/gfx/menu/luminos/gametype_nexball.tga differ
diff --git a/gfx/menu/luminos/gametype_ons.tga b/gfx/menu/luminos/gametype_ons.tga
new file mode 100644 (file)
index 0000000..a224866
Binary files /dev/null and b/gfx/menu/luminos/gametype_ons.tga differ
diff --git a/gfx/menu/luminos/gametype_rc.tga b/gfx/menu/luminos/gametype_rc.tga
new file mode 100644 (file)
index 0000000..9874c7e
Binary files /dev/null and b/gfx/menu/luminos/gametype_rc.tga differ
diff --git a/gfx/menu/luminos/gametype_rune.tga b/gfx/menu/luminos/gametype_rune.tga
new file mode 100644 (file)
index 0000000..6906411
Binary files /dev/null and b/gfx/menu/luminos/gametype_rune.tga differ
diff --git a/gfx/menu/luminos/gametype_tdm.tga b/gfx/menu/luminos/gametype_tdm.tga
new file mode 100644 (file)
index 0000000..cc0b938
Binary files /dev/null and b/gfx/menu/luminos/gametype_tdm.tga differ
index b4102234acd4e8bc06eef8253bfcc90d83538333..316ae273f8a88f29dab82696785e8e33a879eb85 100755 (executable)
@@ -1,4 +1,4 @@
-title Luminos
+title Luminos (default)
 author sev
 
 // Colors: 'Red Green Blue'
@@ -23,7 +23,7 @@ MARGIN_COLORPICKER              '0 0 0'
 //   uses "border" images
 //   uses "closebutton" images
 MARGIN_TOP                      8
-MARGIN_BOTTOM                   8
+MARGIN_BOTTOM                   12
 MARGIN_LEFT                     16
 MARGIN_RIGHT                    16
 MARGIN_COLUMNS                  4
@@ -96,8 +96,8 @@ WIDTH_CREDITS                   0.5
 ALPHA_CVARLIST_SAVED            1
 ALPHA_CVARLIST_TEMPORARY        0.7    
 COLOR_CVARLIST_CHANGED          '1 0 0' 
-COLOR_CVARLIST_REVERTBUTTON     '1 0 0'
 COLOR_CVARLIST_UNCHANGED        '1 1 1'
+COLOR_CVARLIST_CONTROLS         '1 0 0'
 
 // item: list box
 COLOR_LISTBOX_SELECTED          '1 0.4375 0'
@@ -175,9 +175,13 @@ COLOR_DIALOG_USERBIND           '1 1 1'
 COLOR_DIALOG_SINGLEPLAYER       '1 1 1'
 COLOR_DIALOG_CREDITS            '1 1 1'
 COLOR_DIALOG_WEAPONS            '1 1 1'
-COLOR_DIALOG_WAYPOINTS          '1 1 1'
+COLOR_DIALOG_VIEW               '1 1 1'
+COLOR_DIALOG_MODEL              '1 1 1'
+COLOR_DIALOG_CROSSHAIR          '1 1 1'
+COLOR_DIALOG_HUD                '1 1 1'
 COLOR_DIALOG_SERVERINFO         '1 1 1'
 COLOR_DIALOG_CVARS              '1 0 0'
+COLOR_DIALOG_HUDCONFIRM         '1 0 0'
 
 // item: input box
 //   uses "inputbox" images
diff --git a/gfx/menu/wickedx/gametype_arena.tga b/gfx/menu/wickedx/gametype_arena.tga
new file mode 100644 (file)
index 0000000..f49fa28
Binary files /dev/null and b/gfx/menu/wickedx/gametype_arena.tga differ
diff --git a/gfx/menu/wickedx/gametype_as.tga b/gfx/menu/wickedx/gametype_as.tga
new file mode 100644 (file)
index 0000000..59bdfc1
Binary files /dev/null and b/gfx/menu/wickedx/gametype_as.tga differ
diff --git a/gfx/menu/wickedx/gametype_ca.tga b/gfx/menu/wickedx/gametype_ca.tga
new file mode 100644 (file)
index 0000000..c82a992
Binary files /dev/null and b/gfx/menu/wickedx/gametype_ca.tga differ
diff --git a/gfx/menu/wickedx/gametype_ctf.tga b/gfx/menu/wickedx/gametype_ctf.tga
new file mode 100644 (file)
index 0000000..cc3bc7c
Binary files /dev/null and b/gfx/menu/wickedx/gametype_ctf.tga differ
diff --git a/gfx/menu/wickedx/gametype_cts.tga b/gfx/menu/wickedx/gametype_cts.tga
new file mode 100644 (file)
index 0000000..bc917ec
Binary files /dev/null and b/gfx/menu/wickedx/gametype_cts.tga differ
diff --git a/gfx/menu/wickedx/gametype_dm.tga b/gfx/menu/wickedx/gametype_dm.tga
new file mode 100644 (file)
index 0000000..1266f59
Binary files /dev/null and b/gfx/menu/wickedx/gametype_dm.tga differ
diff --git a/gfx/menu/wickedx/gametype_dom.tga b/gfx/menu/wickedx/gametype_dom.tga
new file mode 100644 (file)
index 0000000..f7637f9
Binary files /dev/null and b/gfx/menu/wickedx/gametype_dom.tga differ
diff --git a/gfx/menu/wickedx/gametype_duel.tga b/gfx/menu/wickedx/gametype_duel.tga
new file mode 100644 (file)
index 0000000..03fe067
Binary files /dev/null and b/gfx/menu/wickedx/gametype_duel.tga differ
diff --git a/gfx/menu/wickedx/gametype_freezetag.tga b/gfx/menu/wickedx/gametype_freezetag.tga
new file mode 100644 (file)
index 0000000..8028b67
Binary files /dev/null and b/gfx/menu/wickedx/gametype_freezetag.tga differ
diff --git a/gfx/menu/wickedx/gametype_keepaway.tga b/gfx/menu/wickedx/gametype_keepaway.tga
new file mode 100644 (file)
index 0000000..21e472c
Binary files /dev/null and b/gfx/menu/wickedx/gametype_keepaway.tga differ
diff --git a/gfx/menu/wickedx/gametype_kh.tga b/gfx/menu/wickedx/gametype_kh.tga
new file mode 100644 (file)
index 0000000..ca0d2aa
Binary files /dev/null and b/gfx/menu/wickedx/gametype_kh.tga differ
diff --git a/gfx/menu/wickedx/gametype_lms.tga b/gfx/menu/wickedx/gametype_lms.tga
new file mode 100644 (file)
index 0000000..5549651
Binary files /dev/null and b/gfx/menu/wickedx/gametype_lms.tga differ
diff --git a/gfx/menu/wickedx/gametype_nexball.tga b/gfx/menu/wickedx/gametype_nexball.tga
new file mode 100644 (file)
index 0000000..b4f7441
Binary files /dev/null and b/gfx/menu/wickedx/gametype_nexball.tga differ
diff --git a/gfx/menu/wickedx/gametype_ons.tga b/gfx/menu/wickedx/gametype_ons.tga
new file mode 100644 (file)
index 0000000..a224866
Binary files /dev/null and b/gfx/menu/wickedx/gametype_ons.tga differ
diff --git a/gfx/menu/wickedx/gametype_rc.tga b/gfx/menu/wickedx/gametype_rc.tga
new file mode 100644 (file)
index 0000000..9874c7e
Binary files /dev/null and b/gfx/menu/wickedx/gametype_rc.tga differ
diff --git a/gfx/menu/wickedx/gametype_rune.tga b/gfx/menu/wickedx/gametype_rune.tga
new file mode 100644 (file)
index 0000000..6906411
Binary files /dev/null and b/gfx/menu/wickedx/gametype_rune.tga differ
diff --git a/gfx/menu/wickedx/gametype_tdm.tga b/gfx/menu/wickedx/gametype_tdm.tga
new file mode 100644 (file)
index 0000000..cc0b938
Binary files /dev/null and b/gfx/menu/wickedx/gametype_tdm.tga differ
index d6b7197a1d32c099a1ffbff4fdee06210e066455..3259d7122afe644cccbbcfd775cef69a60c2bc73 100755 (executable)
@@ -1,4 +1,4 @@
-title Default // "WickedX"
+title WickedX
 author sev
 
 // Colors: 'Red Green Blue'
@@ -23,7 +23,7 @@ MARGIN_COLORPICKER              '0 0 0'
 //   uses "border" images
 //   uses "closebutton" images
 MARGIN_TOP                      8
-MARGIN_BOTTOM                   8
+MARGIN_BOTTOM                   12
 MARGIN_LEFT                     16
 MARGIN_RIGHT                    16
 MARGIN_COLUMNS                  4
@@ -96,8 +96,8 @@ WIDTH_CREDITS                   0.5
 ALPHA_CVARLIST_SAVED            1
 ALPHA_CVARLIST_TEMPORARY        0.7    
 COLOR_CVARLIST_CHANGED          '0 0.375 0.75' 
-COLOR_CVARLIST_REVERTBUTTON     '1 0 0'
 COLOR_CVARLIST_UNCHANGED        '1 1 1'
+COLOR_CVARLIST_CONTROLS         '1 0 0'
 
 // item: list box
 COLOR_LISTBOX_SELECTED          '0.875 0.375 0'
@@ -175,9 +175,13 @@ COLOR_DIALOG_USERBIND           '1 1 1'
 COLOR_DIALOG_SINGLEPLAYER       '1 1 1'
 COLOR_DIALOG_CREDITS            '1 1 1'
 COLOR_DIALOG_WEAPONS            '1 1 1'
-COLOR_DIALOG_WAYPOINTS          '1 1 1'
+COLOR_DIALOG_VIEW               '1 1 1'
+COLOR_DIALOG_MODEL              '1 1 1'
+COLOR_DIALOG_CROSSHAIR          '1 1 1'
+COLOR_DIALOG_HUD                '1 1 1'
 COLOR_DIALOG_SERVERINFO         '1 1 1'
 COLOR_DIALOG_CVARS              '1 0 0'
+COLOR_DIALOG_HUDCONFIRM         '1 0 0'
 
 // item: input box
 //   uses "inputbox" images
diff --git a/gfx/menu/xaw/gametype_arena.tga b/gfx/menu/xaw/gametype_arena.tga
new file mode 100644 (file)
index 0000000..ca720bc
Binary files /dev/null and b/gfx/menu/xaw/gametype_arena.tga differ
diff --git a/gfx/menu/xaw/gametype_as.tga b/gfx/menu/xaw/gametype_as.tga
new file mode 100644 (file)
index 0000000..750c43f
Binary files /dev/null and b/gfx/menu/xaw/gametype_as.tga differ
diff --git a/gfx/menu/xaw/gametype_ca.tga b/gfx/menu/xaw/gametype_ca.tga
new file mode 100644 (file)
index 0000000..9275e2d
Binary files /dev/null and b/gfx/menu/xaw/gametype_ca.tga differ
diff --git a/gfx/menu/xaw/gametype_ctf.tga b/gfx/menu/xaw/gametype_ctf.tga
new file mode 100644 (file)
index 0000000..99499fe
Binary files /dev/null and b/gfx/menu/xaw/gametype_ctf.tga differ
diff --git a/gfx/menu/xaw/gametype_cts.tga b/gfx/menu/xaw/gametype_cts.tga
new file mode 100644 (file)
index 0000000..ae241c5
Binary files /dev/null and b/gfx/menu/xaw/gametype_cts.tga differ
diff --git a/gfx/menu/xaw/gametype_dm.tga b/gfx/menu/xaw/gametype_dm.tga
new file mode 100644 (file)
index 0000000..9778335
Binary files /dev/null and b/gfx/menu/xaw/gametype_dm.tga differ
diff --git a/gfx/menu/xaw/gametype_dom.tga b/gfx/menu/xaw/gametype_dom.tga
new file mode 100644 (file)
index 0000000..5663a27
Binary files /dev/null and b/gfx/menu/xaw/gametype_dom.tga differ
diff --git a/gfx/menu/xaw/gametype_duel.tga b/gfx/menu/xaw/gametype_duel.tga
new file mode 100644 (file)
index 0000000..2e0cac0
Binary files /dev/null and b/gfx/menu/xaw/gametype_duel.tga differ
diff --git a/gfx/menu/xaw/gametype_freezetag.tga b/gfx/menu/xaw/gametype_freezetag.tga
new file mode 100644 (file)
index 0000000..cfcea61
Binary files /dev/null and b/gfx/menu/xaw/gametype_freezetag.tga differ
diff --git a/gfx/menu/xaw/gametype_keepaway.tga b/gfx/menu/xaw/gametype_keepaway.tga
new file mode 100644 (file)
index 0000000..c65ffba
Binary files /dev/null and b/gfx/menu/xaw/gametype_keepaway.tga differ
diff --git a/gfx/menu/xaw/gametype_kh.tga b/gfx/menu/xaw/gametype_kh.tga
new file mode 100644 (file)
index 0000000..e44ade0
Binary files /dev/null and b/gfx/menu/xaw/gametype_kh.tga differ
diff --git a/gfx/menu/xaw/gametype_lms.tga b/gfx/menu/xaw/gametype_lms.tga
new file mode 100644 (file)
index 0000000..c732414
Binary files /dev/null and b/gfx/menu/xaw/gametype_lms.tga differ
diff --git a/gfx/menu/xaw/gametype_nexball.tga b/gfx/menu/xaw/gametype_nexball.tga
new file mode 100644 (file)
index 0000000..fa4bf49
Binary files /dev/null and b/gfx/menu/xaw/gametype_nexball.tga differ
diff --git a/gfx/menu/xaw/gametype_ons.tga b/gfx/menu/xaw/gametype_ons.tga
new file mode 100644 (file)
index 0000000..e1e00cf
Binary files /dev/null and b/gfx/menu/xaw/gametype_ons.tga differ
diff --git a/gfx/menu/xaw/gametype_rc.tga b/gfx/menu/xaw/gametype_rc.tga
new file mode 100644 (file)
index 0000000..4500c0f
Binary files /dev/null and b/gfx/menu/xaw/gametype_rc.tga differ
diff --git a/gfx/menu/xaw/gametype_rune.tga b/gfx/menu/xaw/gametype_rune.tga
new file mode 100644 (file)
index 0000000..79c8f30
Binary files /dev/null and b/gfx/menu/xaw/gametype_rune.tga differ
diff --git a/gfx/menu/xaw/gametype_tdm.tga b/gfx/menu/xaw/gametype_tdm.tga
new file mode 100644 (file)
index 0000000..e20b7fa
Binary files /dev/null and b/gfx/menu/xaw/gametype_tdm.tga differ
index 5afcb09cfe3751cd5efedde9758be73cd512e864..36db25d5cd7cf18f8a538437059360214194d49e 100644 (file)
@@ -30,9 +30,13 @@ COLOR_DIALOG_USERBIND           '1 1 1'
 COLOR_DIALOG_SINGLEPLAYER       '1 1 1'
 COLOR_DIALOG_CREDITS            '1 1 1'
 COLOR_DIALOG_WEAPONS            '1 1 1'
-COLOR_DIALOG_WAYPOINTS          '1 1 1'
+COLOR_DIALOG_VIEW               '1 1 1'
+COLOR_DIALOG_MODEL              '1 1 1'
+COLOR_DIALOG_CROSSHAIR          '1 1 1'
+COLOR_DIALOG_HUD                '1 1 1'
 COLOR_DIALOG_SERVERINFO         '1 1 1'
 COLOR_DIALOG_CVARS              '1 0 0'
+COLOR_DIALOG_HUDCONFIRM         '1 0 0'
 
 // nexposee positions of windows (they are the scale transformation
 // centers, NOT the actual positions of the windows!)
@@ -95,8 +99,8 @@ COLOR_CREDITS_FUNCTION          '0 0 0'
 ALPHA_CREDITS_FUNCTION          1
 COLOR_CREDITS_PERSON            '0 0 0'
 ALPHA_CREDITS_PERSON            1
-ROWS_CREDITS                    10
-WIDTH_CREDITS                   0.75
+ROWS_CREDITS                    20
+WIDTH_CREDITS                   0.5
 
 // item: crosshair button
 //   uses "crosshairbutton" images
@@ -105,14 +109,14 @@ WIDTH_CREDITS                   0.75
 ALPHA_CVARLIST_SAVED            1
 ALPHA_CVARLIST_TEMPORARY        0.7    
 COLOR_CVARLIST_CHANGED          '1 0 0' 
-COLOR_CVARLIST_REVERTBUTTON     '1 0 0'
 COLOR_CVARLIST_UNCHANGED        '1 1 1'
+COLOR_CVARLIST_CONTROLS         '1 0 0'
 
 // item: dialog
 //   uses "border" images
 //   uses "closebutton" images
 MARGIN_TOP                      8
-MARGIN_BOTTOM                   8
+MARGIN_BOTTOM                   12
 MARGIN_LEFT                     16
 MARGIN_RIGHT                    16
 MARGIN_COLUMNS                  4
index 5cba08f707132a1332cdd2ed01d3db89b229d49b..57e6578dc7a7a47bdbe173c82b983a5ba234c78b 100644 (file)
 "weaplast"                              "previously used"
 "weapbest"                              "best"
 "reload"                                "reload"
-"weapon_group_1"                        "Laser"
-"weapon_group_2"                        "Shotgun"
-"weapon_group_3"                        "Machine Gun"
-"weapon_group_4"                        "Mortar / Mine Layer"
-"weapon_group_5"                        "Electro"
-"weapon_group_6"                        "Crylink / HLAC"
-"weapon_group_7"                        "Nex / Rifle"
-"weapon_group_8"                        "Hagar / Seeker"
-"weapon_group_9"                        "Rocket Launcher / Fireball"
-"weapon_group_0"                        "Port-O-Launch / Hook"
+"impulse 1"                        "Laser"
+"impulse 2"                        "Shotgun"
+"impulse 3"                        "Machine Gun"
+"impulse 4"                        "Mortar / Mine Layer"
+"impulse 5"                        "Electro"
+"impulse 6"                        "Crylink / HLAC"
+"impulse 7"                        "Nex / Rifle"
+"impulse 8"                        "Hagar / Seeker"
+"impulse 9"                        "Rocket Launcher / Fireball"
+"impulse 14"                        "Port-O-Launch / Hook"
 ""                                      ""
 ""                                      "View"
 "+zoom"                                 "hold zoom"
@@ -47,7 +47,7 @@
 "+show_info"                            "server info"
 "toggleconsole"                         "enter console"
 "disconnect"                            "disconnect"
-"quit"                                  "quit"
+"menu_showquitdialog"                   "quit"
 ""                                      ""
 ""                                      "Teamplay"
 "messagemode2"                          "team chat"
index 6f2c78b511866e27162f6e4819856e92e9696a09..3c43ca944913ef8f3b06e14a14d26ef9981edfbf 100644 (file)
 "weapbest"                              "beste"
 "reload"                                "nachladen"
 "impulse 1"                             "Laser"
-"impulse 2"                             "Shotgun"
-"impulse 3"                             "Machine Gun"
+"impulse 2"                             "Schrotgewehr"
+"impulse 3"                             "Maschinengewehr"
 "impulse 4"                             "Mortar / Mine Layer"
 "impulse 5"                             "Electro"
 "impulse 6"                             "Crylink / HLAC"
-"impulse 7"                             "Nex / MinstaNex / Rifle"
+"impulse 7"                             "Nex / MinstaNex / Gewehr"
 "impulse 8"                             "Hagar / Seeker"
 "impulse 9"                             "Rocket Launcher / Fireball"
-"impulse 14"                            "Port-O-Launch / Hook"
+"impulse 14"                            "Port-O-Launch / Enterhaken"
 ""                                      ""
 ""                                      "Anzeige"
 "+zoom"                                 "Vergrößern (festhalten)"
 "togglezoom"                            "Vergrößern (umschalten)"
 "+showscores"                           "Tabelle anzeigen"
 "screenshot"                            "Bildschirmfoto"
+"+hud_panel_radar_maximized"            "Radar maximieren"
 ""                                      ""
 ""                                      "Kommunikation"
 "messagemode"                           "Nachricht an alle"
 "+show_info"                            "Serverinfo anzeigen"
 "toggleconsole"                         "Konsole öffnen"
 "disconnect"                            "Verbindung trennen"
-"quit"                                  "Beenden"
+"menu_showquitdialog"                                  "Beenden"
 ""                                      ""
 ""                                      "Teamplay"
 "messagemode2"                          "Nachricht ans Team"
 "team_auto"                             "Team automatisch wählen"
 "menu_showteamselect"                   "Team auswählen"
+"menu_showsandboxtools"                 "Sandbox-Menu"
 "spec"                                  "Zuschauen"
 "dropweapon"                            "Waffe wegwerfen"
 "+use"                                  "Schlüssel oder Flagge wegwerfen"
+"+button8"                              "Objekt ziehen"
 ""                                      ""
 ""                                      "Benutzerdefiniert"
 "+userbind 1"                           "$userbind1"
index e92f03b80e8ede79eb7e40347ab067e8a885d8c3..cdaa8cc956fb3f60d3347cd1194fe4ee4088ae5d 100644 (file)
@@ -46,7 +46,7 @@
 "+show_info"                            "información del servidor"
 "toggleconsole"                         "entrar en la consola"
 "disconnect"                            "desconectar"
-"quit"                                  "salir"
+"menu_showquitdialog"                   "salir"
 ""                                      ""
 ""                                      "Juego en equipo"
 "messagemode2"                          "chat de equipo"
index c5cb242b18313d34341344a6e2dfbb9833476f3f..cc63be3a6e112ef2901703465f95ed00ec85e716 100644 (file)
@@ -46,7 +46,7 @@
 "+show_info"                            "information serveur"
 "toggleconsole"                         "ouvrir la console"
 "disconnect"                            "se déconnecter"
-"quit"                                  "quitter"
+"menu_showquitdialog"                   "quitter"
 ""                                      ""
 ""                                      "Équipe"
 "messagemode2"                          "chat d'équipe"
index d20eec65d6936ee10f64387433f1e39c73a2657c..618b079f6b03ec0456338760c5524c1e1fd93cb4 100644 (file)
@@ -46,7 +46,7 @@
 "+show_info"                            "kiszolgáló info"
 "toggleconsole"                         "konzolba lépés"
 "disconnect"                            "lekapcsolodás"
-"quit"                                  "kilépés"
+"menu_showquitdialog"                   "kilépés"
 ""                                      ""
 ""                                      "Csapatjáték"
 "messagemode2"                          "csapat beszélgetés"
index 82baa6e536b5e892be955e44e8e48058e2357c01..68c044acc188055ac621ef8d66fe34e6a76d8c1d 100644 (file)
@@ -46,7 +46,7 @@
 "+show_info"                            "info del server"
 "toggleconsole"                         "apri console"
 "disconnect"                            "disconnetti"
-"quit"                                  "esci"
+"menu_showquitdialog"                   "esci"
 ""                                      ""
 ""                                      "Teamplay"
 "messagemode2"                          "chat di squadra"
index ed46d02f174cc6a053832a08a0572f5300b1b55d..ee484cf155b94dd534b8bfd0d94b07c5a4e7bfc3 100644 (file)
@@ -46,7 +46,7 @@
 "+show_info"                            "сведения о сервере"
 "toggleconsole"                         "открыть консоль"
 "disconnect"                            "отключиться"
-"quit"                                  "выйти"
+"menu_showquitdialog"                   "выйти"
 ""                                      ""
 ""                                      "Командная игра"
 "messagemode2"                          "чат команды"
index 2772c16bd10b7db55fef6728de2b8dfe8dee8131..9284c172e91a7ad131de0cd86582136c82151ee7 100644 (file)
@@ -46,7 +46,7 @@
 "+show_info"                            "відомості про сервер"
 "toggleconsole"                         "увійти в консоль"
 "disconnect"                            "роз'єднатися"
-"quit"                                  "вийти"
+"menu_showquitdialog"                   "вийти"
 ""                                      ""
 ""                                      "Командна гра"
 "messagemode2"                          "командний чат"
index 9951f0cab3a0a25e971a488a7c957366b1a35530..c332d20fa64c1244466359a11820873e5fea393a 100644 (file)
@@ -772,7 +772,7 @@ msgstr "Standardwert der Map verwenden"
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:162
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163
 msgid "Point limit:"
-msgstr "Punktelimit"
+msgstr "Punktelimit:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:64
 msgid "Player slots:"
@@ -882,7 +882,7 @@ msgstr "Erweiterte Servereinstellungen"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25
 msgid "Game settings:"
-msgstr "Spieleinstellungen"
+msgstr "Spieleinstellungen:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28
 msgid "Allow spectating"
@@ -1131,7 +1131,7 @@ msgstr "mit Laser"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:255
 msgid "Special arenas:"
-msgstr "Spezielle Arenen"
+msgstr "Spezielle Arenen:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:268
 msgid "Most weapons"
@@ -1763,7 +1763,7 @@ msgstr "48 kHz"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:110
 msgid "Channels:"
-msgstr "Kanäle"
+msgstr "Kanäle:"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:112
 msgid "Mono"
@@ -2107,7 +2107,7 @@ msgstr "Weiche Schatten"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:178
 msgid "Coronas"
-msgstr "Koronas"
+msgstr "Koronen"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:179
 msgid "Use Occlusion Queries"
@@ -2309,7 +2309,7 @@ msgstr "Winzig"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:33
 msgid "SZ^Little"
-msgstr "Klein"
+msgstr "Winzig"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:34
 msgid "SZ^Small"
@@ -2496,7 +2496,7 @@ msgstr "<Spielermodell nicht gefunden>"
 
 #: qcsrc/menu/xonotic/serverlist.c:185
 msgid "Remove"
-msgstr "Vergessen"
+msgstr "Entfernen"
 
 #: qcsrc/menu/xonotic/serverlist.c:187
 msgid "Bookmark"
@@ -2723,7 +2723,7 @@ msgstr "Port-O-Launch"
 
 #: weapons.qc.tmp:10
 msgid "Electro"
-msgstr "Electro"
+msgstr "Elektro"
 
 #: weapons.qc.tmp:11
 msgid "Hagar"
@@ -2731,7 +2731,7 @@ msgstr "Hagar"
 
 #: weapons.qc.tmp:12
 msgid "Shotgun"
-msgstr "Shotgun"
+msgstr "Schrotgewehr"
 
 #: weapons.qc.tmp:13
 #, c-format
@@ -2740,7 +2740,7 @@ msgstr "@!#%'n Tuba"
 
 #: weapons.qc.tmp:14
 msgid "Mine Layer"
-msgstr "Mine Layer"
+msgstr "Minen Leger"
 
 #: weapons.qc.tmp:15
 msgid "Rifle"
@@ -2748,7 +2748,7 @@ msgstr "Gewehr"
 
 #: weapons.qc.tmp:16
 msgid "Machine Gun"
-msgstr "Machine Gun"
+msgstr "Maschinen Gewehr"
 
 #: weapons.qc.tmp:17
 msgid "Fireball"
index 461ce8b4057f421f610e8578b25bd45c8f4d972f..401d25cef3aedef20f498ecc48670732a33c389e 100644 (file)
@@ -8,9 +8,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Xonotic 0.1preview\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-09-02 07:51+0200\n"
+"POT-Creation-Date: 2012-01-26 12:24+0100\n"
 "PO-Revision-Date: 2011-08-23 18:51-0400\n"
-"Last-Translator: \n"
+"Last-Translator: Calinou <hugohachel@gmail.com>\n"
 "Language-Team: \n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
@@ -19,34 +19,104 @@ msgstr ""
 "X-Generator: Lokalize 1.2\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: qcsrc/common/mapinfo.qc:1092 qcsrc/menu/xonotic/skinlist.c:163
+#: qcsrc/common/mapinfo.qc:665
+#, c-format
+msgid "@!#%'n Tuba Throwing"
+msgstr "Lancer de @!#%'n Tuba"
+
+#: qcsrc/common/mapinfo.qc:1057 qcsrc/menu/xonotic/skinlist.c:166
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: qcsrc/menu/gamecommand.qc:47
+#: qcsrc/common/mapinfo.qh:36
+msgid "Deathmatch"
+msgstr "Match à Mort"
+
+#: qcsrc/common/mapinfo.qh:39
+msgid "Last Man Standing"
+msgstr "Dernier Survivant"
+
+#: qcsrc/common/mapinfo.qh:42
+msgid "Arena"
+msgstr "Arène Duel"
+
+#: qcsrc/common/mapinfo.qh:45
+msgid "Runematch"
+msgstr "Runematch"
+
+#: qcsrc/common/mapinfo.qh:48
+msgid "Race"
+msgstr "Course"
+
+#: qcsrc/common/mapinfo.qh:51
+msgid "Race CTS"
+msgstr "Course CTS"
+
+#: qcsrc/common/mapinfo.qh:54
+msgid "Team Deathmatch"
+msgstr "Match à Mort Équipe"
+
+#: qcsrc/common/mapinfo.qh:57
+#, fuzzy
+msgid "Capture the Flag"
+msgstr "Capture Du Drapeau"
+
+#: qcsrc/common/mapinfo.qh:60
+msgid "Clan Arena"
+msgstr "Arène Équipes"
+
+#: qcsrc/common/mapinfo.qh:63
+msgid "Domination"
+msgstr "Domination"
+
+#: qcsrc/common/mapinfo.qh:66
+msgid "Key Hunt"
+msgstr "Chasse aux Clés"
+
+#: qcsrc/common/mapinfo.qh:69
+msgid "Assault"
+msgstr "Assaut"
+
+#: qcsrc/common/mapinfo.qh:72
+msgid "Onslaught"
+msgstr "Onslaught"
+
+#: qcsrc/common/mapinfo.qh:75
+msgid "Nexball"
+msgstr "Nexball"
+
+#: qcsrc/common/mapinfo.qh:78
+msgid "Freeze Tag"
+msgstr "Freeze Tag"
+
+#: qcsrc/common/mapinfo.qh:81
+msgid "Keepaway"
+msgstr "Cache-Cache Du Drapeau"
+
+#: qcsrc/menu/command/menu_cmd.qc:41
 #, c-format
 msgid "error: status is %d\n"
 msgstr "erreur: le status est %d\n"
 
-#: qcsrc/menu/gamecommand.qc:65
+#: qcsrc/menu/command/menu_cmd.qc:64
 msgid "Usage: menu_cmd command..., where possible commands are:\n"
 msgstr "Utilisation: menu_cmd commande..., les commandes possibles sont:\n"
 
-#: qcsrc/menu/gamecommand.qc:66
+#: qcsrc/menu/command/menu_cmd.qc:65
 msgid "  sync - reloads all cvars on the current menu page\n"
 msgstr "  sync - recharge toutes les variables sur la page actuelle\n"
 
-#: qcsrc/menu/gamecommand.qc:67
+#: qcsrc/menu/command/menu_cmd.qc:66
 msgid "  directmenu ITEM - select a menu item as main item\n"
 msgstr ""
 "  directmenu OBJET - sélectionner un objet de menu comme objet principal\n"
 
-#: qcsrc/menu/gamecommand.qc:193
+#: qcsrc/menu/command/menu_cmd.qc:179
 msgid "error creating curl handle\n"
 msgstr "erreur de création du curl handle"
 
-#: qcsrc/menu/gamecommand.qc:239
+#: qcsrc/menu/command/menu_cmd.qc:186
 msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n"
 msgstr ""
 "Commande invalide. Pour une liste des commandes supportées, tapez menu_cmd "
@@ -77,17 +147,17 @@ msgstr "%d (%s)"
 msgid "custom"
 msgstr "personnalisé"
 
-#: qcsrc/menu/menu.qc:29
+#: qcsrc/menu/menu.qc:37
 #, c-format
 msgid "^4MQC Build information: ^1%s\n"
 msgstr "^4MQC Information de version : %s (français)\n"
 
-#: qcsrc/menu/xonotic/campaign.c:284
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:134
+#: qcsrc/menu/xonotic/campaign.c:288
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:123
 msgid "???"
 msgstr "???"
 
-#: qcsrc/menu/xonotic/campaign.c:285
+#: qcsrc/menu/xonotic/campaign.c:289
 #, c-format
 msgid "Level %d: %s"
 msgstr "Niveau %d: %s"
@@ -118,10 +188,14 @@ msgstr "Crédits"
 
 #: qcsrc/menu/xonotic/dialog_credits.c:21
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:82
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:269
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:57
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:61
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:277
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:91
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:96
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:56
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:113
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:74
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:89
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:73
 #: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21
 msgid "OK"
 msgstr "OK"
@@ -130,7 +204,7 @@ msgstr "OK"
 msgid "Welcome"
 msgstr "Bienvenue"
 
-#: qcsrc/menu/xonotic/dialog_firstrun.c:33
+#: qcsrc/menu/xonotic/dialog_firstrun.c:40
 msgid ""
 "Welcome to Xonotic, please select your language preference and enter your "
 "player name to get started.  You can change these options later through the "
@@ -140,18 +214,34 @@ msgstr ""
 "pseudonyme pour commencer. Vous pouvez changer ces options plus tard dans "
 "les menus."
 
-#: qcsrc/menu/xonotic/dialog_firstrun.c:38
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:35
-msgid "Text language:"
-msgstr "Langue écran:"
-
-#: qcsrc/menu/xonotic/dialog_firstrun.c:47
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:40
+#: qcsrc/menu/xonotic/dialog_firstrun.c:46
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:37
 #: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:39
 msgid "Name:"
 msgstr "Pseudonyme:"
 
-#: qcsrc/menu/xonotic/dialog_firstrun.c:69
+#: qcsrc/menu/xonotic/dialog_firstrun.c:68
+#: qcsrc/menu/xonotic/dialog_settings_user.c:65
+msgid "Text language:"
+msgstr "Langue écran:"
+
+#: qcsrc/menu/xonotic/dialog_firstrun.c:77
+msgid "Allow player statistics to use your nickname at stats.xonotic.org?"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_firstrun.c:81
+msgid "ALWU2N^Yes"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_firstrun.c:82
+msgid "ALWU2N^No"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_firstrun.c:83
+msgid "ALWU2N^Undecided"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_firstrun.c:87
 msgid "Save settings"
 msgstr "Sauvegarder"
 
@@ -210,7 +300,7 @@ msgid "Text alignment:"
 msgstr "Alignement icônes:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:37
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:51
 msgid "Center"
 msgstr "Centre"
 
@@ -354,12 +444,12 @@ msgid "Status bar"
 msgstr "Barre de statut"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:33
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:49
 msgid "Left align"
 msgstr "À gauche"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:34
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:52
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53
 msgid "Right align"
 msgstr "À droite"
 
@@ -376,6 +466,7 @@ msgid "Flip speed/acceleration positions"
 msgstr "Échanger positions Vitesse/Accélération"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:44
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:29
 msgid "Speed:"
 msgstr "Vitesse:"
 
@@ -467,8 +558,8 @@ msgstr "Mini-carte:"
 #: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:32
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:43
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:82
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:154
-#: qcsrc/menu/xonotic/util.qc:600
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:66
+#: qcsrc/menu/xonotic/util.qc:655
 msgid "Alpha:"
 msgstr "Opacité:"
 
@@ -497,6 +588,7 @@ msgid "North"
 msgstr "Nord"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:61
 msgid "Scale:"
 msgstr "Échelle:"
 
@@ -573,7 +665,6 @@ msgid "Fade out after:"
 msgstr "Effacer après:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36
 msgid "Never"
 msgstr "Jamais"
 
@@ -607,34 +698,39 @@ msgid "Weapon icons:"
 msgstr "Icônes d'armes:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45
+#, fuzzy
+msgid "Show only owned weapons"
+msgstr "Montrer les Waypoints de drapeau"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:48
 msgid "Show weapon ID as:"
 msgstr "Montrer le numéro d'arme:"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49
 msgid "SHOWAS^None"
 msgstr "Aucun"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:47
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50
 msgid "Number"
 msgstr "Numéro"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:48
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:51
 msgid "Bind"
 msgstr "Touche"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:51
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:54
 msgid "Show Accuracy"
 msgstr "Monter la précision"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:52
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:55
 msgid "Show Ammo"
 msgstr "Montrer barre de munitions"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:55
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:58
 msgid "Ammo bar color:"
 msgstr "Couleur barre de munitions:"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:61
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:64
 msgid "Ammo bar alpha:"
 msgstr "Opacité barre de munitions:"
 
@@ -646,24 +742,24 @@ msgstr "Configuration Interface"
 msgid "Panel background defaults:"
 msgstr "Fond du Panneau par défaut:"
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:23 qcsrc/menu/xonotic/util.qc:575
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:23 qcsrc/menu/xonotic/util.qc:630
 msgid "Background:"
 msgstr "Arrière-plan:"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:25
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:37
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:52
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:91 qcsrc/menu/xonotic/util.qc:578
-#: qcsrc/menu/xonotic/util.qc:594 qcsrc/menu/xonotic/util.qc:611
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:91 qcsrc/menu/xonotic/util.qc:633
+#: qcsrc/menu/xonotic/util.qc:649 qcsrc/menu/xonotic/util.qc:666
 msgid "Disable"
 msgstr "Désactiver"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:583
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:638
 msgid "Color:"
 msgstr "Couleur:"
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:591
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:646
 msgid "Border size:"
 msgstr "Taille des bords:"
 
@@ -672,11 +768,11 @@ msgstr "Taille des bords:"
 msgid "Team color:"
 msgstr "Couleur d'équipe:"
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:617
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:672
 msgid "Test team color in configure mode"
 msgstr "Afficher la couleur d'équipe en mode configuration"
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:620
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:675
 msgid "Padding:"
 msgstr "Ajustement:"
 
@@ -750,127 +846,123 @@ msgstr "Paramètres Joueur"
 msgid "Game type:"
 msgstr "Mode de jeu:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:46
-msgid "Match settings:"
-msgstr "Paramètres match:"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:49
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:48
 msgid "Time limit:"
 msgstr "Limite de temps:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:53
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:61
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:52
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:60
 msgid "Use map specified default"
 msgstr "Utiliser le paramètre de carte"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:56
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:55
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:154
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:156
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:157
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:162
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163
 msgid "Point limit:"
 msgstr "Limite de points:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:64
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:63
 msgid "Player slots:"
 msgstr "Nombre de joueurs max.:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:67
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:66
 msgid "Number of bots:"
 msgstr "Nombre de robots:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:71
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:69
 msgid "Bot skill:"
 msgstr "Difficulté robot:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:74
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72
 msgid "Botlike"
 msgstr "Nul"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:73
 msgid "Beginner"
 msgstr "Jeu d'enfant"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:74
 msgid "You will win"
 msgstr "Très Facile"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75
 msgid "You can win"
 msgstr "Facile"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76
 msgid "You might win"
 msgstr "Assez Facile"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77
 msgid "Advanced"
 msgstr "Avancé"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78
 msgid "Expert"
 msgstr "Expert"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79
 msgid "Pro"
 msgstr "Professionnel"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80
 msgid "Assassin"
 msgstr "Assassin"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81
 msgid "Unhuman"
 msgstr "Inhumain"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82
 msgid "Godlike"
 msgstr "Dieu"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:88
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:87
 msgid "Mutators..."
 msgstr "Spéciales..."
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:97
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:57
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:96
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:145
 msgid "Advanced settings..."
 msgstr "Paramètres avancés..."
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:104
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:103
 msgid "Map list:"
 msgstr "Liste de cartes:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:110
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:109
 msgid "Select all"
 msgstr "Tout sélectionner"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:113
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:112
 msgid "Select none"
 msgstr "Ne rien sélectionner"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:119
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:118
 msgid "Start Multiplayer!"
 msgstr "Démarrer!"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:154
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:153
 msgid "Capture limit:"
 msgstr "Limite de captures:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:158
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:157
 msgid "Lives:"
 msgstr "Vies:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:158
 msgid "Laps:"
 msgstr "Tours:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159
 msgid "Goals:"
 msgstr "Buts:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:164
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163
 msgid "Frag limit:"
 msgstr "Limite de tués:"
 
@@ -974,28 +1066,28 @@ msgstr "Objets présents"
 msgid "MinstaGib only"
 msgstr "MinstaGib seulement"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81
 msgid "Title:"
 msgstr "Titre:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:87
 msgid "Author:"
 msgstr "Auteur:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:93
 msgid "Features:"
 msgstr "Fonctions:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:98
 msgid "Game types:"
 msgstr "Modes de jeux:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:118
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:121
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:335
 msgid "Close"
 msgstr "Fermer"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:121
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:124
 msgid "MAP^Play"
 msgstr "Jouer"
 
@@ -1017,108 +1109,122 @@ msgid "%s Arena"
 msgstr "Arène de %s"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173
 msgid "Dodging"
 msgstr "Esquives"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:250
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:258
 msgid "MinstaGib"
 msgstr "MinstaGib"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:253
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:261
 msgid "NIX"
 msgstr "NIX"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:74
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:205
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:213
 msgid "Rocket Flying"
 msgstr "Roquettes volantes"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:76
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:210
+msgid "Invincible Projectiles"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:272
 msgid "No start weapons"
 msgstr "Pas d'armes au début"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:195
 msgid "Low gravity"
 msgstr "Gravité basse"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176
 msgid "Cloaked"
 msgstr "Joueurs transparents"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86
 msgid "Hook"
 msgstr "Grappin"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:179
 msgid "Midair"
 msgstr "Midair"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:90
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:182
 msgid "Vampire"
 msgstr "Vampire"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:90
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:92
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:216
 msgid "Piñata"
 msgstr "Piñata"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:92
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:211
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:219
 msgid "Weapons stay"
 msgstr "Armes infinies"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:186
 msgid "Blood loss"
 msgstr "Perte de sang"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:207
 msgid "Jet pack"
 msgstr "Jet pack"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:100
+msgid "No powerups"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:102
+#, fuzzy
+msgid "Powerups"
+msgstr "Panneau des Pouvoirs"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:104
 msgid "MUT^None"
 msgstr "Aucun"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170
 msgid "Gameplay mutators:"
 msgstr "Spéciales Mode de jeu:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:201
 msgid "Weapon & item mutators:"
 msgstr "Spéciales Armes et Objets:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:204
 msgid "Grappling hook"
 msgstr "Grappin"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:223
 msgid "Weapon arenas:"
 msgstr "Arènes d'armes:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:226
 msgid "Regular (no arena)"
 msgstr "Régulier (pas d'Arène)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264
 msgid "with laser"
 msgstr "avec le laser"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:255
 msgid "Special arenas:"
 msgstr "Arènes Spéciales:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:268
 msgid "Most weapons"
 msgstr "Beaucoup d'armes"
 
@@ -1127,26 +1233,27 @@ msgid "Demo"
 msgstr "Vidéo"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28
-msgid "Record demos while playing"
+#, fuzzy
+msgid "Automatically record demos while playing"
 msgstr "Auto-enregistrement des Vidéos"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:31
 #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28
 msgid "Filter:"
 msgstr "Recherche:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:33
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32
 #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:29
-#: qcsrc/menu/xonotic/dialog_settings_input.c:41
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:24
+#: qcsrc/menu/xonotic/dialog_settings_input.c:40
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:32
 msgid "Clear"
 msgstr "Effacer"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:45
 msgid "Timedemo"
 msgstr "Test Performance"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:48
 msgid "DEMO^Play"
 msgstr "Jouer"
 
@@ -1167,6 +1274,7 @@ msgid "Pause"
 msgstr "Pause"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:262
 msgid "Address:"
 msgstr "Adresse:"
 
@@ -1175,7 +1283,7 @@ msgid "Info..."
 msgstr "Info..."
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:72
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:342
 msgid "Join!"
 msgstr "Joindre !"
 
@@ -1183,289 +1291,515 @@ msgstr "Joindre !"
 msgid "Server Information"
 msgstr "Information Serveur"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:115
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:116
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:189
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:132
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:133
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:242
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:247
 msgid "N/A"
 msgstr "N/A"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:158
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:179
 #, c-format
-msgid "%d/%d, %d free player slots"
-msgstr "%d/%d, %d Emplacements libres"
+msgid "%d/%d"
+msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172
-#, c-format
-msgid "%d modified settings"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193
+#: qcsrc/menu/xonotic/util.qc:632 qcsrc/menu/xonotic/util.qc:648
+#: qcsrc/menu/xonotic/util.qc:657 qcsrc/menu/xonotic/util.qc:665
+#: qcsrc/menu/xonotic/util.qc:677
+msgid "Default"
+msgstr "Par défaut"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:200
+#, fuzzy, c-format
+msgid "%d modified"
 msgstr "paramètres modifiés: %d"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172
-msgid "Official settings"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:200
+#, fuzzy
+msgid "Official"
 msgstr "Paramètres Officiels"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197
-msgid "N/A (can't connect)"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:208
+#, fuzzy
+msgid "N/A (auth library missing, can't connect)"
 msgstr "N/A (ne peut pas se connecter)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205
-msgid "not supported (can't connect)"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:210
+msgid "N/A (auth library missing)"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:216
+#, fuzzy
+msgid "Not supported (can't connect)"
 msgstr "non supporté (ne peut pas se connecter)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207
-msgid "not supported (won't encrypt)"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:218
+#, fuzzy
+msgid "Not supported (won't encrypt)"
 msgstr "non supporté (pas de cryptage)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211
-msgid "supported (will encrypt)"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:222
+#, fuzzy
+msgid "Supported (will encrypt)"
 msgstr "supporté (cryptage)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213
-msgid "supported (won't encrypt)"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:224
+#, fuzzy
+msgid "Supported (won't encrypt)"
 msgstr "supporté (pas de cryptage)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217
-msgid "requested (will encrypt)"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:228
+#, fuzzy
+msgid "Requested (will encrypt)"
 msgstr "demandé (cryptage)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219
-msgid "requested (won't encrypt)"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:230
+#, fuzzy
+msgid "Requested (won't encrypt)"
 msgstr "demandé (pas de cryptage)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223
-msgid "required (can't connect)"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:234
+#, fuzzy
+msgid "Required (can't connect)"
 msgstr "nécessaire (ne peut pas se connecter)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225
-msgid "required (will encrypt)"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:236
+#, fuzzy
+msgid "Required (will encrypt)"
 msgstr "nécessaire (cryptage)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:246
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:269
-msgid "Players:"
-msgstr "Joueurs:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:256
+#, fuzzy
+msgid "Hostname:"
+msgstr "Nom d'Hôte"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:254
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38
-msgid "Type:"
-msgstr "Type:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:270
+#, fuzzy
+msgid "Gametype:"
+msgstr "Mode de jeu:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:275
 msgid "Map:"
 msgstr "Carte:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264
-msgid "Gameplay:"
-msgstr "Mode:"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274
-msgid "Bots:"
-msgstr "Robots:"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:280
 msgid "Mod:"
 msgstr "Modification:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:285
 msgid "Version:"
 msgstr "Version:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289
-msgid "Ping:"
-msgstr "Latence:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:290
+#, fuzzy
+msgid "Settings:"
+msgstr "Préférences"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295
-msgid "CA:"
-msgstr "CA:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:297
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:329
+msgid "Players:"
+msgstr "Joueurs:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301
-msgid "Key:"
-msgstr "Clé:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:302
+msgid "Bots:"
+msgstr "Robots:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307
+#, fuzzy
+msgid "Free slots:"
+msgstr "Nombre de joueurs max.:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:313
 msgid "Encryption:"
 msgstr "Cryptage:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:318
+msgid "ID:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:323
+msgid "Key:"
+msgstr "Clé:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:60
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:19
 msgid "Model:"
 msgstr "Personnage:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88
-msgid "Field of view:"
-msgstr "Champ de vision:"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92
-msgid "View bobbing:"
-msgstr "Caméra marche:"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96
-msgid "Zoom factor:"
-msgstr "Facteur de Zoom:"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100
-msgid "Zoom speed:"
-msgstr "Vitesse de Zoom:"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103
-msgid "Weapon settings..."
-msgstr "Paramètres armes..."
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110
-msgid "Crosshair:"
+#, fuzzy
+msgid "No crosshair"
 msgstr "Viseur:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:139
-msgid "Per weapon"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:90
+#, fuzzy
+msgid "Per weapon crosshair"
 msgstr "Par arme"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:93
+#, fuzzy
+msgid "Custom crosshair"
+msgstr "Viseur:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:112
 msgid "Crosshair size:"
 msgstr "Taille viseur:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:117
 msgid "Crosshair alpha:"
 msgstr "Opacité viseur:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:123
 msgid "Crosshair color:"
 msgstr "Couleur viseur:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:140
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:125
+msgid "Per weapon"
+msgstr "Par arme"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:127
 msgid "By health"
 msgstr "Par vie"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:131
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:47
 msgid "Custom"
 msgstr "Personnalisé"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148
-msgid "Enable center dot"
-msgstr "Activer point central"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:139
+#, fuzzy
+msgid "Other crosshair settings"
+msgstr "Paramètres match:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:151
-msgid "Size:"
-msgstr "Taille:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:147
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:6
+#, fuzzy
+msgid "Model settings"
+msgstr "Sauvegarder"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158
-msgid "Hit test:"
-msgstr "Détection toucher:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:153
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:6
+#, fuzzy
+msgid "View settings"
+msgstr "Sauvegarder"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:159
-msgid "HTST^None"
-msgstr "Aucun"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:160
-msgid "TrueAim"
-msgstr "TrueAim"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161
-msgid "Enemies"
-msgstr "Ennemis"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:164
-msgid "Waypoints setup..."
-msgstr "Paramètres Waypoints..."
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6
+msgid "Weapon settings"
+msgstr "Paramètres d'armes"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:169
-msgid "Enter HUD editor"
-msgstr "Éditer l'interface"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174
-msgid "Force models:"
-msgstr "Forcer personnages:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:6
+#, fuzzy
+msgid "HUD settings"
+msgstr "Sauvegarder"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175
-msgid "MDL^None"
-msgstr "Aucun"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:203
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:185
+#: qcsrc/menu/xonotic/dialog_settings_input.c:89
+#: qcsrc/menu/xonotic/dialog_settings_user.c:88
+#: qcsrc/menu/xonotic/dialog_settings_video.c:142
+msgid "Apply immediately"
+msgstr "Appliquer maintenant"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176
-msgid "MDL^Custom"
-msgstr "Personnalisé"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:6
+#, fuzzy
+msgid "Crosshair settings"
+msgstr "Taille viseur:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177
-msgid "MDL^All"
-msgstr "Tout"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:28
+#, fuzzy
+msgid "Enable center crosshair dot"
+msgstr "Activer point central"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:180
-msgid "Disable gore effects"
-msgstr "Désactiver effets gore"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:31
+#, fuzzy
+msgid "Dot size:"
+msgstr "Taille du Chat:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:182
-msgid "Gibs:"
-msgstr "Gibs:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:36
+#, fuzzy
+msgid "Dot alpha:"
+msgstr "Opacité Waypoints:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184
-msgid "GIBS^None"
-msgstr "Aucun"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:41
+#, fuzzy
+msgid "Dot color:"
+msgstr "Couleur d'équipe:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185
-msgid "GIBS^Few"
-msgstr "Quelques"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:43
+#, fuzzy
+msgid "Use normal crosshair color"
+msgstr "Couleur viseur:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186
-msgid "GIBS^Many"
-msgstr "Plusieurs"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:54
+#, fuzzy
+msgid "Crosshair animations:"
+msgstr "Opacité viseur:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:187
-msgid "GIBS^Lots"
-msgstr "Beaucoup"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:57
+msgid "Smooth effects of crosshairs"
+msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:191
-msgid "Damage splash:"
-msgstr "Effet santé faible:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:61
+msgid "Use rings to indicate weapon status"
+msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:195
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:173
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:194
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:30
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:41
-#: qcsrc/menu/xonotic/dialog_settings_video.c:109
-msgid "Apply immediately"
-msgstr "Appliquer maintenant"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:67
+#, fuzzy
+msgid "Hit testing:"
+msgstr "Détection toucher:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5
-msgid "Waypoints"
-msgstr "Waypoints"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:69
+#, fuzzy
+msgid "HTTST^Disabled"
+msgstr "Désactivé"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23
-msgid "Show base waypoints"
-msgstr "Montrer les Waypoints de drapeau"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:70
+#, fuzzy
+msgid "HTTST^TrueAim"
+msgstr "TrueAim"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25
-msgid "Waypoint scale:"
-msgstr "Taille des Waypoints:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:71
+#, fuzzy
+msgid "HTTST^Enemies"
+msgstr "Ennemis"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29
-msgid "Waypoint alpha:"
-msgstr "Opacité Waypoints:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:76
+msgid "Blur crosshair if the shot is obstructed"
+msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34
-msgid "Show names:"
-msgstr "Montrer les noms:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:81
+msgid "Animate when hitting an enemy"
+msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37
-msgid "Teammates"
-msgstr "Équipiers"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:85
+msgid "Animate when picking up an item"
+msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38
-msgid "All players"
-msgstr "Tous les joueurs"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:40
+#, fuzzy
+msgid "Damage:"
+msgstr "Effet santé faible:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6
-msgid "Weapon settings"
-msgstr "Paramètres d'armes"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:43
+msgid "Overlay:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:47
+#, fuzzy
+msgid "Factor:"
+msgstr "Facteur de Zoom:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:52
+#, fuzzy
+msgid "Fade rate:"
+msgstr "Temps d'effacement d'une entrée:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:58
+msgid "Waypoints"
+msgstr "Waypoints"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:71
+msgid "Edge offset:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:80
+#, fuzzy
+msgid "Show names above players"
+msgstr "Montrer les Images Par Seconde"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:83
+msgid "Only when near crosshair"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:86
+#, fuzzy
+msgid "Display health and armor"
+msgstr "Échanger positions Santé/Armure"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:90
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c:4
+msgid "Enter HUD editor"
+msgstr "Éditer l'interface"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c:28
+msgid "In order for the HUD editor to show, you must first be in game."
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c:30
+msgid "Do you wish to start a local game to set up the HUD?"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c:33
+msgid "HDCNFRM^Yes"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c:36
+msgid "HDCNFRM^No"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:28
+#, fuzzy
+msgid "Body fading:"
+msgstr "Ajustement:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:31
+msgid "Gibs:"
+msgstr "Gibs:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:33
+msgid "GIBS^None"
+msgstr "Aucun"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:34
+msgid "GIBS^Few"
+msgstr "Quelques"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:35
+msgid "GIBS^Many"
+msgstr "Plusieurs"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:36
+msgid "GIBS^Lots"
+msgstr "Beaucoup"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:40
+#, fuzzy
+msgid "Playermodel LOD:"
+msgstr "Joueur:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:44
+msgid "Force models:"
+msgstr "Forcer personnages:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:45
+msgid "MDL^None"
+msgstr "Aucun"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:46
+msgid "MDL^Custom"
+msgstr "Personnalisé"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:47
+msgid "MDL^All"
+msgstr "Tout"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:50
+#, fuzzy
+msgid "Force player models to mine"
+msgstr "Forcer personnages:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:52
+msgid "Force player colors to mine"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:28
+msgid "Field of view:"
+msgstr "Champ de vision:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:31
+#, fuzzy
+msgid "Zoom:"
+msgstr "Mode de Zoom:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:33
+#, fuzzy
+msgid "RETICLE^Fullscreen"
+msgstr "Plein écran"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:34
+msgid "RETICLE^With reticle"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:38
+msgid "ZOOM^Factor:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:42
+#, fuzzy
+msgid "ZOOM^Speed:"
+msgstr "Vitesse:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:52
+msgid "ZOOM^Instant"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:56
+#, fuzzy
+msgid "ZOOM^Sensitivity:"
+msgstr "Sensibilité:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:59
+msgid "Velocity zoom:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:61
+#, fuzzy
+msgid "VZOOM^Disabled"
+msgstr "Désactivé"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:62
+msgid "VZOOM^Forward only"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:63
+msgid "VZOOM^All directions"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:67
+msgid "VZOOM^Speed"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:72
+msgid "Allow passing through walls while spectating"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:75
+msgid "1st person perspective"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:79
+msgid "Smooth the view when landing from a jump"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:83
+msgid "Smooth the view while crouching"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:87
+msgid "View waving while idle"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:91
+msgid "View bobbing while walking around"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:96
+msgid "3rd person perspective"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:100
+#, fuzzy
+msgid "Back distance"
+msgstr "Distance max. particules:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:106
+#, fuzzy
+msgid "Up distance"
+msgstr "Distance max.:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29
 msgid "Weapon priority list:"
 msgstr "Liste de priorité armes:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:33
 msgid "Up"
 msgstr "Haut"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:36
 msgid "Down"
 msgstr "Bas"
 
@@ -1477,13 +1811,22 @@ msgstr "Utiliser la liste de priorité pour changer les armes"
 msgid "Auto switch weapons on pickup"
 msgstr "Changer d'arme en prenant une arme meilleure"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:46
 msgid "Draw 1st person weapon model"
 msgstr "Afficher l'arme à la première personne"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:55
-msgid "Flip view horizontally"
-msgstr "Vue Miroir"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:58
+msgid "Gun model swaying"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:63
+#, fuzzy
+msgid "Gun model bobbing"
+msgstr "<modèle non trouvé>"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:68
+msgid "VWMDL^Scale"
+msgstr ""
 
 #: qcsrc/menu/xonotic/dialog_news.c:4
 msgid "News"
@@ -1497,18 +1840,156 @@ msgstr "http://www.xonotic.org/team/blog/"
 msgid "Quit"
 msgstr "Quitter"
 
-#: qcsrc/menu/xonotic/dialog_quit.c:17
+#: qcsrc/menu/xonotic/dialog_quit.c:18
 msgid "Are you sure you want to quit?"
 msgstr "Voulez-vous vraiment quitter ?"
 
-#: qcsrc/menu/xonotic/dialog_quit.c:20
+#: qcsrc/menu/xonotic/dialog_quit.c:21
 msgid "Yes"
 msgstr "Oui"
 
-#: qcsrc/menu/xonotic/dialog_quit.c:21
+#: qcsrc/menu/xonotic/dialog_quit.c:22
 msgid "No"
 msgstr "Non"
 
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:4
+msgid "Sandbox Tools"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:24
+msgid "Spawn"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:25
+#, fuzzy
+msgid "Remove *"
+msgstr "Supprimer"
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:27
+msgid "Copy *"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:28
+#, fuzzy
+msgid "Paste"
+msgstr "Général:"
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:30
+msgid "Bone:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:35
+msgid "Set * as child"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:36
+msgid "Attach to *"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:38
+msgid "Detach from *"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:41
+msgid "Visual object properties for *:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:43
+#, fuzzy
+msgid "Set skin:"
+msgstr "Apparences menu:"
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:45
+#, fuzzy
+msgid "Set alpha:"
+msgstr "Opacité Waypoints:"
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:48
+#, fuzzy
+msgid "Set color main:"
+msgstr "Couleur d'équipe:"
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:50
+#, fuzzy
+msgid "Set color glow:"
+msgstr "Couleur d'équipe:"
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:54
+msgid "Set frame:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:58
+msgid "Physical object properties for *:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:60
+msgid "Set material:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:66
+#, fuzzy
+msgid "Set solidity:"
+msgstr "Sensibilité:"
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:67
+msgid "Non-solid"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:68
+msgid "Solid"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:69
+msgid "Set physics:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:70
+msgid "Static"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:71
+msgid "Movable"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:72
+#, fuzzy
+msgid "Physical"
+msgstr "Panneau d'effets physiques"
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:74
+#, fuzzy
+msgid "Set scale:"
+msgstr "Taille de police:"
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:76
+msgid "Set force:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:80
+msgid "Claim *"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:82
+msgid "* object info"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:83
+msgid "* mesh info"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:84
+msgid "* attachment info"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:85
+#, fuzzy
+msgid "Show help"
+msgstr "Montrer le netgraphe"
+
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:86
+msgid "* is the object you are facing"
+msgstr ""
+
 #: qcsrc/menu/xonotic/dialog_settings.c:4
 msgid "Settings"
 msgstr "Préférences"
@@ -1534,9 +2015,9 @@ msgid "Audio"
 msgstr "Audio"
 
 #: qcsrc/menu/xonotic/dialog_settings.c:22
-#: qcsrc/menu/xonotic/dialog_settings_network.c:4
-msgid "Network"
-msgstr "Réseau"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:4
+msgid "User"
+msgstr ""
 
 #: qcsrc/menu/xonotic/dialog_settings.c:23
 #: qcsrc/menu/xonotic/dialog_settings_misc.c:4
@@ -1547,194 +2028,174 @@ msgstr "Autres"
 msgid "Master:"
 msgstr "Général:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:33
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:35
 msgid "Music:"
 msgstr "Musique:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:41
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:45
 msgid "VOL^Ambient:"
 msgstr "Ambiance:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:48
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:54
 msgid "Info:"
 msgstr "Information:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:55
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:63
 msgid "Items:"
 msgstr "Objets:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:62
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:72
 msgid "Pain:"
 msgstr "Douleur:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:69
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:81
 msgid "Player:"
 msgstr "Joueur:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:76
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:90
 msgid "Shots:"
 msgstr "Tirs:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:83
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:99
 msgid "Voice:"
 msgstr "Voix:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:91
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:109
 msgid "Weapons:"
 msgstr "Armes:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:98
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:156
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:117
+msgid "New style sound attenuation"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:119
+msgid "Mute sounds when not active"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:122
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:194
 msgid "Frequency:"
 msgstr "Fréquence:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:100
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:124
 msgid "8 kHz"
 msgstr "8 kHz"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:101
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:125
 msgid "11.025 kHz"
 msgstr "11.025 kHz"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:102
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:126
 msgid "16 kHz"
 msgstr "16 kHz"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:103
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:127
 msgid "22.05 kHz"
 msgstr "22.05 kHz"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:104
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:128
 msgid "24 kHz"
 msgstr "24 kHz"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:105
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:129
 msgid "32 kHz"
 msgstr "32 kHz"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:106
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:130
 msgid "44.1 kHz"
 msgstr "44.1 kHz"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:107
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:131
 msgid "48 kHz"
 msgstr "48 kHz"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:110
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:134
 msgid "Channels:"
 msgstr "Canaux:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:112
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:136
 msgid "Mono"
 msgstr "Mono"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:113
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:137
 msgid "Stereo"
 msgstr "Stéréo"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:114
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:138
 msgid "2.1"
 msgstr "2.1"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:115
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:139
 msgid "4"
 msgstr "4"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:116
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:140
 msgid "5"
 msgstr "5"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:117
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:141
 msgid "5.1"
 msgstr "5.1"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:118
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:142
 msgid "6.1"
 msgstr "6.1"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:119
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:143
 msgid "7.1"
 msgstr "7.1"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:123
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:146
 msgid "Swap Stereo"
 msgstr "Échanger les canaux Stéréo"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:127
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:148
 msgid "Headphone friendly mode"
 msgstr "Mode casque audio"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:131
-msgid "Spatial voices:"
-msgstr "Voix personnages:"
-
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:132
-msgid "VOCS^None"
-msgstr "Aucun"
-
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:133
-msgid "VOCS^Taunts"
-msgstr "Voix"
-
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:134
-msgid "VOCS^All"
-msgstr "Tout"
-
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:137
-msgid "Taunt range:"
-msgstr "Distance voix:"
-
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:140
-msgid "RNG^Very short"
-msgstr "Très court"
-
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:141
-msgid "RNG^Short"
-msgstr "Court"
-
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:142
-msgid "RNG^Normal"
-msgstr "Normal"
-
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:143
-msgid "RNG^Long"
-msgstr "Long"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:170
+#, fuzzy
+msgid "Hit indication sound"
+msgstr "Son tir réussi"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:144
-msgid "RNG^Full"
-msgstr "Tout"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:172
+#, fuzzy
+msgid "Chat message sound"
+msgstr "Sons Chat:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:151
-msgid "Automatic taunts"
-msgstr "Voix automatiques"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:174
+msgid "Menu sounds"
+msgstr "Sons du menu"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:160
-msgid "Time warning:"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:177
+#, fuzzy
+msgid "Time announcer:"
 msgstr "Avertissement temps:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:162
-msgid "WRN^None"
-msgstr "Aucun"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:179
+#, fuzzy
+msgid "WRN^Disabled"
+msgstr "Désactivé"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:163
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:180
 msgid "1 minute"
 msgstr "1 minute"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:164
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:181
 msgid "5 minutes"
 msgstr "5 minutes"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:165
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:182
 msgid "WRN^Both"
 msgstr "Les deux"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:168
-msgid "Hit indicator"
-msgstr "Son tir réussi"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:189
+msgid "Automatic taunts"
+msgstr "Voix automatiques"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:170
-msgid "Menu sounds"
-msgstr "Sons du menu"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:199
+msgid "Debug info about sounds"
+msgstr ""
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:38
 msgid "Quality preset:"
@@ -1797,230 +2258,237 @@ msgid "DET^Insane"
 msgstr "Extrême"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:62
-msgid "Antialiasing:"
-msgstr "Anticrénelage:"
-
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:64
-msgid "AA^Disabled"
-msgstr "Désactivé"
-
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:65
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:103
-msgid "2x"
-msgstr "2x"
-
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:66
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:104
-msgid "4x"
-msgstr "4x"
-
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:70
 msgid "Texture resolution:"
 msgstr "Qualité textures:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:73
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:65
 msgid "RES^Leet"
 msgstr "Leet"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:74
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:66
 msgid "RES^Lowest"
 msgstr "Très Bas"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:75
-msgid "RES^Low"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:67
+#, fuzzy
+msgid "RES^Very low"
 msgstr "Bas"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:76
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:68
+msgid "RES^Low"
+msgstr "Bas"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:69
 msgid "RES^Normal"
 msgstr "Normal"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:77
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:70
 msgid "RES^Good"
 msgstr "Bon"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:78
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:71
 msgid "RES^Best"
 msgstr "Élevé"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:91
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:94
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:84
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:87
 msgid "Avoid lossy texture compression"
 msgstr "Éviter la compression rapide"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:100
-msgid "Anisotropy:"
-msgstr "Filtrage Anisotrope:"
-
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:102
-msgid "ANISO^Disabled"
-msgstr "Désactivé"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:93
+msgid "Use lightmaps"
+msgstr "Utiliser les lightmaps"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:105
-msgid "8x"
-msgstr "8x"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:94
+msgid "Deluxe mapping"
+msgstr "Textures Deluxe"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:106
-msgid "16x"
-msgstr "16x"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:96
+msgid "Gloss"
+msgstr "Brillance textures"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:110
-msgid "Particle quality:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:100
+#, fuzzy
+msgid "Particles quality:"
 msgstr "Qualité particules:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:113
-msgid "Particle distance:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:103
+#, fuzzy
+msgid "Particles distance:"
 msgstr "Distance max. particules:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:117
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:106
+#, fuzzy
+msgid "Damage effects:"
+msgstr "Effet d'effacement:"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:108
+#, fuzzy
+msgid "DMGPRTCLS^Disabled"
+msgstr "Désactivé"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:109
+msgid "DMGPRTCLS^Skeletal"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:110
+#, fuzzy
+msgid "DMGPRTCLS^All"
+msgstr "Tout"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:114
 msgid "Decals"
 msgstr "Marques impacts"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:118
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:115
 msgid "Decals on models"
 msgstr "Décalques sur les modèles"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:122
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:119
 msgid "Distance:"
 msgstr "Distance max.:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:128
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:125
 msgid "Time:"
 msgstr "Temps:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:134
-msgid "Use lightmaps"
-msgstr "Utiliser les lightmaps"
-
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:135
-msgid "Deluxe mapping"
-msgstr "Textures Deluxe"
-
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:137
-msgid "Gloss"
-msgstr "Brillance textures"
-
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:140
-msgid "Offset mapping"
-msgstr "Textures relief"
-
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:142
-msgid "Relief mapping"
-msgstr "Textures relief avancé"
-
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:145
-msgid "Reflections:"
-msgstr "Réflexions:"
-
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:148
-msgid "Blurred"
-msgstr "Flou"
-
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:149
-msgid "REFL^Good"
-msgstr "Bon"
-
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:150
-msgid "Sharp"
-msgstr "Net"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:131
+msgid "Coronas"
+msgstr "Brillance Lumière"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:155
-msgid "Show surfaces"
-msgstr "Textures unies"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:132
+msgid "Use Occlusion Queries"
+msgstr "Utiliser l'Occlusion du rendu"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:157
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:134
 msgid "No dynamic lighting"
 msgstr "Pas de lumières dynamiques"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:159
-msgid "Flash blend approximation"
-msgstr "Lumières dynamiques rapides"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:136
+#, fuzzy
+msgid "Fake corona lighting"
+msgstr "Lumières carte en temps réel"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:161
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:138
 msgid "Realtime dynamic lighting"
 msgstr "Lumières dynamiques en temps réel"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:162
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:166
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:139
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:143
 msgid "Shadows"
 msgstr "Ombres"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:165
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:142
 msgid "Realtime world lighting"
 msgstr "Lumières carte en temps réel"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:170
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:147
 msgid "Use normal maps"
 msgstr "Lumières Deluxe"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:172
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:149
 msgid "Soft shadows"
 msgstr "Ombres avancées"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:175
-msgid "Coronas"
-msgstr "Brillance Lumière"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:153
+msgid "Show surfaces"
+msgstr "Textures unies"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:176
-msgid "Use Occlusion Queries"
-msgstr "Utiliser l'Occlusion du rendu"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:155
+msgid "Offset mapping"
+msgstr "Textures relief"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:157
+msgid "Relief mapping"
+msgstr "Textures relief avancé"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:178
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:159
+msgid "LOD"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:162
 msgid "Bloom"
 msgstr "Effets d'éblouissement"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:180
-msgid "High Dynamic Range (HDR)"
-msgstr "High Dynamic Range (HDR)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:164
+msgid "Reflections:"
+msgstr "Réflexions:"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:167
+msgid "Blurred"
+msgstr "Flou"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:168
+msgid "REFL^Good"
+msgstr "Bon"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:169
+msgid "Sharp"
+msgstr "Net"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:184
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:174
 msgid "Motion blur:"
 msgstr "Flou de vitesse:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:189
-msgid "Blur and sharpen postprocessing"
-msgstr "Flou et netteté post-processeur"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:179
+msgid "Extra postprocessing effects"
+msgstr ""
 
 #: qcsrc/menu/xonotic/dialog_settings_input.c:26
 msgid "Key bindings:"
 msgstr "Contrôles:"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:31
+#: qcsrc/menu/xonotic/dialog_settings_input.c:30
 msgid "Change key..."
 msgstr "Changer touche..."
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:35
+#: qcsrc/menu/xonotic/dialog_settings_input.c:34
 msgid "Edit..."
 msgstr "Éditer..."
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:46
-msgid "Sensitivity:"
-msgstr "Sensibilité:"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:45
+#, fuzzy
+msgid "Pressing \"enter console\" key also closes it"
+msgstr "\"ouvrir la console\" ferme aussi la console"
+
+#: qcsrc/menu/xonotic/dialog_settings_input.c:47
+msgid "Automatically repeat jumping if holding jump"
+msgstr ""
 
 #: qcsrc/menu/xonotic/dialog_settings_input.c:51
-msgid "UI mouse speed:"
-msgstr "Vitesse souris menus:"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:53
+#: qcsrc/menu/xonotic/dialog_settings_input.c:56
+msgid "Use joystick input"
+msgstr "Utiliser une manette"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:55
-msgid "Mouse filter"
-msgstr "Filtre Souris"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:61
+msgid "Mouse:"
+msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:57
-msgid "Invert mouse"
-msgstr "Inverser souris (axe Y)"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:64
+msgid "Sensitivity:"
+msgstr "Sensibilité:"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:60
-#: qcsrc/menu/xonotic/dialog_settings_input.c:62
-msgid "Use joystick input"
-msgstr "Utiliser une manette"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:68
+msgid "Smooth aiming"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_input.c:71
+#, fuzzy
+msgid "Invert aiming"
+msgstr "Inverser souris (axe Y)"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:65
-#: qcsrc/menu/xonotic/dialog_settings_input.c:67
-msgid "Turn off OS mouse acceleration"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:75
+#: qcsrc/menu/xonotic/dialog_settings_input.c:77
+#: qcsrc/menu/xonotic/dialog_settings_input.c:80
+#, fuzzy
+msgid "Disable system mouse acceleration"
 msgstr "Désactiver l'accélération souris de l'OS"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:69
-msgid "\"enter console\" also closes"
-msgstr "\"ouvrir la console\" ferme aussi la console"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:85
+#, fuzzy
+msgid "Enable built in mouse acceleration"
+msgstr "Désactiver l'accélération souris de l'OS"
 
 #: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5
 msgid "User defined key bind"
@@ -2043,96 +2511,271 @@ msgid "Cancel"
 msgstr "Annuler"
 
 #: qcsrc/menu/xonotic/dialog_settings_misc.c:26
-msgid "Menu skins:"
+#, fuzzy
+msgid "Network:"
+msgstr "Réseau"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:31
+msgid "56k"
+msgstr "56k"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:32
+msgid "ISDN"
+msgstr "ISDN"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:33
+msgid "Slow ADSL"
+msgstr "ADSL lent"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:34
+msgid "Fast ADSL"
+msgstr "ADSL rapide"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:35
+msgid "Broadband"
+msgstr "Câble/Fibre optique"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:39
+msgid "Input packets/s:"
+msgstr "Paquets entrants/seconde:"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:45
+msgid "Local latency:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:50
+msgid "Client UDP port:"
+msgstr "Port UDP client:"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:55
+msgid "Show netgraph"
+msgstr "Montrer le netgraphe"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:59
+msgid "Client-side movement prediction"
+msgstr "Prédiction des mouvements joueur"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:62
+msgid "Movement error compensation"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:66
+msgid "Downloads:"
+msgstr "Téléchargements simultanés:"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:69
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:81
+msgid "Maximum:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:73
+msgid "Speed (kB/s):"
+msgstr "Vitesse (Ko/seconde):"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:78
+msgid "Framerate:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:83
+msgid "MAXFPS^5 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:84
+msgid "MAXFPS^10 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:85
+msgid "MAXFPS^20 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:86
+msgid "MAXFPS^30 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:87
+msgid "MAXFPS^40 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:88
+msgid "MAXFPS^50 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:89
+msgid "MAXFPS^60 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:90
+msgid "MAXFPS^70 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:91
+msgid "MAXFPS^100 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:92
+msgid "MAXFPS^125 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:93
+msgid "MAXFPS^200 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:94
+msgid "MAXFPS^Unlimited"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:98
+msgid "Target:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:100
+#, fuzzy
+msgid "TRGT^Disabled"
+msgstr "Désactivé"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:101
+msgid "TRGT^30 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:102
+msgid "TRGT^40 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:103
+msgid "TRGT^50 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:104
+msgid "TRGT^60 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:105
+msgid "TRGT^100 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:106
+msgid "TRGT^125 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:107
+msgid "TRGT^200 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:111
+#, fuzzy
+msgid "Idle limit:"
+msgstr "Limite de temps:"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:113
+msgid "IDLFPS^10 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:114
+msgid "IDLFPS^20 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:115
+msgid "IDLFPS^30 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:116
+msgid "IDLFPS^60 fps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:117
+msgid "IDLFPS^Unlimited"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:122
+msgid "Show frames per second"
+msgstr "Montrer les Images Par Seconde"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:125
+msgid "Save processing time for other apps"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:129
+#, fuzzy
+msgid "Menu tooltips:"
 msgstr "Apparences menu:"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:47
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:131
+#, fuzzy
+msgid "TLTIP^Disabled"
+msgstr "Désactivé"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:132
+msgid "TLTIP^Standard"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:133
+#, fuzzy
+msgid "TLTIP^Advanced"
+msgstr "Avancé"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:137
 msgid "Show current time"
 msgstr "Montrer l'heure"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:49
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:139
 msgid "Show current date"
 msgstr "Montrer la date"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:51
-msgid "Show frames per second"
-msgstr "Montrer les Images Par Seconde"
-
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:53
-msgid "Minimize input latency"
-msgstr "Minimiser la latence des contrôles"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:141
+#, fuzzy
+msgid "Enable developer mode"
+msgstr "Activer point central"
 
 #: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5
 msgid "Advanced settings"
 msgstr "Paramètres avancés"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:31
 msgid "Cvar filter:"
 msgstr "Recherche de commandes:"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:44
 msgid "Setting:"
 msgstr "Paramètre:"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:48
+msgid "Type:"
+msgstr "Type:"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:52
 msgid "Value:"
 msgstr "Valeur:"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:68
 msgid "Description:"
 msgstr "Description:"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:26
-msgid "Client-side movement prediction"
-msgstr "Prédiction des mouvements joueur"
-
-#: qcsrc/menu/xonotic/dialog_settings_network.c:30
-msgid "Show netgraph"
-msgstr "Montrer le netgraphe"
-
-#: qcsrc/menu/xonotic/dialog_settings_network.c:33
-msgid "Network speed:"
-msgstr "Vitesse réseau:"
-
-#: qcsrc/menu/xonotic/dialog_settings_network.c:35
-msgid "56k"
-msgstr "56k"
-
-#: qcsrc/menu/xonotic/dialog_settings_network.c:36
-msgid "ISDN"
-msgstr "ISDN"
-
-#: qcsrc/menu/xonotic/dialog_settings_network.c:37
-msgid "Slow ADSL"
-msgstr "ADSL lent"
-
-#: qcsrc/menu/xonotic/dialog_settings_network.c:38
-msgid "Fast ADSL"
-msgstr "ADSL rapide"
-
-#: qcsrc/menu/xonotic/dialog_settings_network.c:39
-msgid "Broadband"
-msgstr "Câble/Fibre optique"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:27
+msgid "Menu skins:"
+msgstr "Apparences menu:"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:42
-msgid "Input packets/s:"
-msgstr "Paquets entrants/seconde:"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:31
+#, fuzzy
+msgid "Set skin"
+msgstr "Apparences menu:"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:46
-msgid "HTTP downloads:"
-msgstr "Téléchargements:"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:74
+#, fuzzy
+msgid "Set language"
+msgstr "Langue écran:"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:49
-msgid "Downloads:"
-msgstr "Téléchargements simultanés:"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:79
+#, fuzzy
+msgid "Disable gore effects and harsh language"
+msgstr "Désactiver effets gore"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:53
-msgid "Speed (kB/s):"
-msgstr "Vitesse (Ko/seconde):"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:82
+msgid "Allow player statistics to track your client"
+msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:57
-msgid "Client UDP port:"
-msgstr "Port UDP client:"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:84
+msgid "Allow player statistics to use your nickname"
+msgstr ""
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:26
 msgid "Resolution:"
@@ -2182,103 +2825,174 @@ msgstr "Gigantesque"
 msgid "Color depth:"
 msgstr "Profondeur de couleurs:"
 
+#: qcsrc/menu/xonotic/dialog_settings_video.c:44
+msgid "16bit"
+msgstr ""
+
 #: qcsrc/menu/xonotic/dialog_settings_video.c:45
+msgid "32bit"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:48
 msgid "Full screen"
 msgstr "Plein écran"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:46
+#: qcsrc/menu/xonotic/dialog_settings_video.c:49
 msgid "Vertical Synchronization"
 msgstr "Synchronisation verticale"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:49
-msgid "Use OpenGL 2.0 shaders (GLSL)"
-msgstr "Utiliser shader OpenGL 2.0 (GLSL)"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:53
+msgid "Anisotropy:"
+msgstr "Filtrage Anisotrope:"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:52
-msgid "Use GLSL to handle color control"
-msgstr "Utiliser GLSL pour gérer les couleurs"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:55
+msgid "ANISO^Disabled"
+msgstr "Désactivé"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:56
-msgid "Vertex Buffer Objects (VBOs)"
-msgstr "Objets en tampon mémoire (VBOs)"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:66
+msgid "2x"
+msgstr "2x"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:57
+#: qcsrc/menu/xonotic/dialog_settings_video.c:67
+msgid "4x"
+msgstr "4x"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:58
+msgid "8x"
+msgstr "8x"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:59
-msgid "VBO^Off"
-msgstr "Désactivé"
+msgid "16x"
+msgstr "16x"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:60
-msgid "Vertices, some Tris (compatible)"
-msgstr "Points, quelques Triangles (compatible)"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:62
+msgid "Antialiasing:"
+msgstr "Anticrénelage:"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:63
-msgid "Vertices"
-msgstr "Points"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:65
+msgid "AA^Disabled"
+msgstr "Désactivé"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:64
-msgid "Vertices and Triangles"
-msgstr "Points et Triangles"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:71
+msgid "High-quality frame buffer"
+msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:67
+#: qcsrc/menu/xonotic/dialog_settings_video.c:76
 msgid "Depth first:"
 msgstr "Profondeur d'abord:"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:69
+#: qcsrc/menu/xonotic/dialog_settings_video.c:78
 msgid "DF^Disabled"
 msgstr "Désactivé"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:70
+#: qcsrc/menu/xonotic/dialog_settings_video.c:79
 msgid "DF^World"
 msgstr "Monde"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:71
+#: qcsrc/menu/xonotic/dialog_settings_video.c:80
 msgid "DF^All"
 msgstr "Tout"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:75
-msgid "Disable multithreaded OpenGL"
-msgstr "Désactiver OpenGL multi-coeurs"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:83
+msgid "Vertex Buffer Objects (VBOs)"
+msgstr "Objets en tampon mémoire (VBOs)"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:77
-msgid "Wait for GPU to finish each frame"
-msgstr "Attendre le GPU pour finir chaque trame"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:86
+msgid "VBO^Off"
+msgstr "Désactivé"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:80
+#: qcsrc/menu/xonotic/dialog_settings_video.c:87
+msgid "Vertices, some Tris (compatible)"
+msgstr "Points, quelques Triangles (compatible)"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:90
+msgid "Vertices"
+msgstr "Points"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:91
+msgid "Vertices and Triangles"
+msgstr "Points et Triangles"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:94
 msgid "Brightness:"
 msgstr "Luminosité:"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:83
+#: qcsrc/menu/xonotic/dialog_settings_video.c:97
 msgid "Contrast:"
 msgstr "Contraste:"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:86
+#: qcsrc/menu/xonotic/dialog_settings_video.c:100
 msgid "Gamma:"
 msgstr "Gamma:"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:91
+#: qcsrc/menu/xonotic/dialog_settings_video.c:105
 msgid "Contrast boost:"
 msgstr "Amélioration contraste:"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:96
+#: qcsrc/menu/xonotic/dialog_settings_video.c:110
 msgid "Saturation:"
 msgstr "Saturation:"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:102
+#: qcsrc/menu/xonotic/dialog_settings_video.c:116
 msgid "LIT^Ambient:"
 msgstr "Ambiance:"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:105
+#: qcsrc/menu/xonotic/dialog_settings_video.c:119
 msgid "Intensity:"
 msgstr "Intensité:"
 
+#: qcsrc/menu/xonotic/dialog_settings_video.c:123
+msgid "Use OpenGL 2.0 shaders (GLSL)"
+msgstr "Utiliser shader OpenGL 2.0 (GLSL)"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:125
+msgid "Use GLSL to handle color control"
+msgstr "Utiliser GLSL pour gérer les couleurs"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:128
+msgid "Wait for GPU to finish each frame"
+msgstr "Attendre le GPU pour finir chaque trame"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:132
+msgid "Psycho coloring (easter egg)"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:135
+msgid "Trippy vertices (easter egg)"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:138
+msgid "Flip view horizontally"
+msgstr "Vue Miroir"
+
 #: qcsrc/menu/xonotic/dialog_singleplayer.c:4
 msgid "Singleplayer"
 msgstr "Monojoueur"
 
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:127
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:116
 msgid "Instant action! (random map with bots)"
 msgstr "Instant action! (map aléatoire avec bots)"
 
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:148
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:137
+msgid "Campaign Difficulty:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:138
+msgid "CSKL^Easy"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:139
+#, fuzzy
+msgid "CSKL^Medium"
+msgstr "Moyen"
+
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:140
+msgid "CSKL^Hard"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:142
 msgid "Start Singleplayer!"
 msgstr "Démarrer !"
 
@@ -2314,22 +3028,22 @@ msgstr "rose"
 msgid "spectate"
 msgstr "mode spectateur"
 
-#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38
+#: qcsrc/menu/xonotic/mainwindow.c:39 qcsrc/menu/xonotic/mainwindow.c:42
 msgid "Do not press this button again!"
 msgstr "N'appuyez plus sur ce bouton !"
 
-#: qcsrc/menu/xonotic/maplist.c:278
+#: qcsrc/menu/xonotic/maplist.c:282
 msgid ""
 "Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n"
 msgstr ""
 "Euh? Ne peut pas être joué. Re-filtrage pour éviter des nouveaux problèmes.\n"
 
-#: qcsrc/menu/xonotic/maplist.c:286
+#: qcsrc/menu/xonotic/maplist.c:290
 #, c-format
 msgid "%s's Xonotic Server"
 msgstr "%s's Xonotic Server"
 
-#: qcsrc/menu/xonotic/maplist.c:291
+#: qcsrc/menu/xonotic/maplist.c:295
 msgid ""
 "Huh? Can't play this (invalid game type). Refiltering so this won't happen "
 "again.\n"
@@ -2337,7 +3051,12 @@ msgstr ""
 "Euh? Ne peut pas être joué. Mode de jeu invalide. Re-filtrage pour éviter "
 "des nouveaux problèmes.\n"
 
-#: qcsrc/menu/xonotic/playermodel.c:174
+#: qcsrc/menu/xonotic/playerlist.c:118 qcsrc/menu/xonotic/playerlist.c:128
+#, fuzzy
+msgid "spectator"
+msgstr "mode spectateur"
+
+#: qcsrc/menu/xonotic/playermodel.c:177
 msgid "<no model found>"
 msgstr "<modèle non trouvé>"
 
@@ -2349,23 +3068,23 @@ msgstr "Supprimer"
 msgid "Bookmark"
 msgstr "Marque-page"
 
-#: qcsrc/menu/xonotic/serverlist.c:527
+#: qcsrc/menu/xonotic/serverlist.c:548
 msgid "Ping"
 msgstr "Latence"
 
-#: qcsrc/menu/xonotic/serverlist.c:528
+#: qcsrc/menu/xonotic/serverlist.c:549
 msgid "Host name"
 msgstr "Nom d'Hôte"
 
-#: qcsrc/menu/xonotic/serverlist.c:529
+#: qcsrc/menu/xonotic/serverlist.c:550
 msgid "Map"
 msgstr "Carte"
 
-#: qcsrc/menu/xonotic/serverlist.c:530
+#: qcsrc/menu/xonotic/serverlist.c:551
 msgid "Type"
 msgstr "Mode"
 
-#: qcsrc/menu/xonotic/serverlist.c:531
+#: qcsrc/menu/xonotic/serverlist.c:552
 msgid "Players"
 msgstr "Joueurs"
 
@@ -2395,29 +3114,29 @@ msgstr "%s dB"
 msgid "%dx%d"
 msgstr "%dx%d"
 
-#: qcsrc/menu/xonotic/util.qc:270
+#: qcsrc/menu/xonotic/util.qc:276
 #, c-format
 msgid "Received HTTP request data for an invalid id %d.\n"
 msgstr "A reçu la demande HTTP d'ID invalide %d.\n"
 
-#: qcsrc/menu/xonotic/util.qc:285
+#: qcsrc/menu/xonotic/util.qc:291
 #, c-format
 msgid "error receiving update notification: status is %d\n"
 msgstr ""
 "erreur pour recevoir la notification de mise à jour: le statut est %d\n"
 
-#: qcsrc/menu/xonotic/util.qc:290
+#: qcsrc/menu/xonotic/util.qc:296
 msgid "error: received HTML instead of an update notification\n"
 msgstr ""
 "erreur: a reçu un fichier HTML et non une notification de mise à jour\n"
 
-#: qcsrc/menu/xonotic/util.qc:295
+#: qcsrc/menu/xonotic/util.qc:301
 msgid "error: received carriage returns from update notification server\n"
 msgstr ""
 "erreur: a reçu un message erroné depuis le serveur de notifications de M.A."
 "J.\n"
 
-#: qcsrc/menu/xonotic/util.qc:316
+#: qcsrc/menu/xonotic/util.qc:322
 #, c-format
 msgid ""
 "Update can be downloaded at:\n"
@@ -2426,21 +3145,21 @@ msgstr ""
 "La mise à jour peut être téléchargée ici:\n"
 "%s\n"
 
-#: qcsrc/menu/xonotic/util.qc:337
+#: qcsrc/menu/xonotic/util.qc:351
 msgid "Autogenerating mapinfo for newly added maps..."
 msgstr "Génération des mapinfo pour les nouvelles cartes ajoutées..."
 
-#: qcsrc/menu/xonotic/util.qc:367
+#: qcsrc/menu/xonotic/util.qc:381
 #, c-format
 msgid "^1%s TEST BUILD"
 msgstr "VERSION DE TEST ^1%s"
 
-#: qcsrc/menu/xonotic/util.qc:432
+#: qcsrc/menu/xonotic/util.qc:439
 #, c-format
 msgid "Update to %s now!"
 msgstr "Mettez à jour vers %s maintenant !"
 
-#: qcsrc/menu/xonotic/util.qc:501
+#: qcsrc/menu/xonotic/util.qc:524
 msgid ""
 "^1ERROR: Texture compression is required but not supported.\n"
 "^1Expect visual problems.\n"
@@ -2448,449 +3167,363 @@ msgstr ""
 "^1ERROR: La texture de compression est nécessaire mais non supportée.\n"
 "^1Attendez vous à voir des problèmes de rendu.\n"
 
-#: qcsrc/menu/xonotic/util.qc:523
-msgid "Arena"
-msgstr "Arène Duel"
+#: qcsrc/menu/xonotic/util.qc:643
+msgid "Use default"
+msgstr "Par défaut"
 
-#: qcsrc/menu/xonotic/util.qc:524
-msgid "Assault"
-msgstr "Assaut"
+#: qcsrc/menu/xonotic/util.qc:663
+msgid "Team Color:"
+msgstr "Couleur d'équipe:"
 
-#: qcsrc/menu/xonotic/util.qc:525
-msgid "Capture The Flag"
-msgstr "Capture Du Drapeau"
+#: qcsrc/menu/xonotic/util.qh:50
+msgid "Enable panel"
+msgstr "Activer ce panneau"
 
-#: qcsrc/menu/xonotic/util.qc:526
-msgid "Clan Arena"
-msgstr "Arène Équipes"
+#: weapons.qc.tmp:1
+msgid "Rifle"
+msgstr "Fusil"
 
-#: qcsrc/menu/xonotic/util.qc:527
-msgid "Deathmatch"
-msgstr "Match à Mort"
+#: weapons.qc.tmp:2
+msgid "Machine Gun"
+msgstr "Mitraillette"
 
-#: qcsrc/menu/xonotic/util.qc:528
-msgid "Domination"
-msgstr "Domination"
+#: weapons.qc.tmp:3
+msgid "Rocket Launcher"
+msgstr "Lance-Roquettes"
 
-#: qcsrc/menu/xonotic/util.qc:529
-msgid "Freeze Tag"
-msgstr "Freeze Tag"
+#: weapons.qc.tmp:4
+msgid "Port-O-Launch"
+msgstr "Lance-O-Port"
 
-#: qcsrc/menu/xonotic/util.qc:530
-msgid "Keepaway"
-msgstr "Cache-Cache Du Drapeau"
+#: weapons.qc.tmp:5
+msgid "Grappling Hook"
+msgstr "Grappin"
 
-#: qcsrc/menu/xonotic/util.qc:531
-msgid "Key Hunt"
-msgstr "Chasse aux Clés"
+#: weapons.qc.tmp:6
+msgid "Electro"
+msgstr "Electro"
 
-#: qcsrc/menu/xonotic/util.qc:532
-msgid "Last Man Standing"
-msgstr "Dernier Survivant"
+#: weapons.qc.tmp:7
+msgid "Laser"
+msgstr "Laser"
 
-#: qcsrc/menu/xonotic/util.qc:533
-msgid "Nexball"
-msgstr "Nexball"
+#: weapons.qc.tmp:8
+msgid "Shotgun"
+msgstr "Fusil"
 
-#: qcsrc/menu/xonotic/util.qc:534
-msgid "Onslaught"
-msgstr "Onslaught"
+#: weapons.qc.tmp:9
+#, c-format
+msgid "@!#%'n Tuba"
+msgstr "@!#% Tuba"
 
-#: qcsrc/menu/xonotic/util.qc:535
-msgid "Race"
-msgstr "Course"
+#: weapons.qc.tmp:10
+msgid "MinstaNex"
+msgstr "MinstaNex"
 
-#: qcsrc/menu/xonotic/util.qc:536
-msgid "Race CTS"
-msgstr "Course CTS"
+#: weapons.qc.tmp:11
+msgid "Crylink"
+msgstr "Crylink"
 
-#: qcsrc/menu/xonotic/util.qc:537
-msgid "Runematch"
-msgstr "Runematch"
+#: weapons.qc.tmp:12
+msgid "Heavy Laser Assault Cannon"
+msgstr "Canon Laser Lourd d'Assaut "
 
-#: qcsrc/menu/xonotic/util.qc:538
-msgid "Team Deathmatch"
-msgstr "Match à Mort Équipe"
+#: weapons.qc.tmp:13
+msgid "Mortar"
+msgstr "Mortier"
 
-#: qcsrc/menu/xonotic/util.qc:557
-#, c-format
-msgid "@!#%'n Tuba Throwing"
-msgstr "Lancer de @!#%'n Tuba"
+#: weapons.qc.tmp:14
+msgid "Hagar"
+msgstr "Hagar"
 
-#: qcsrc/menu/xonotic/util.qc:577 qcsrc/menu/xonotic/util.qc:593
-#: qcsrc/menu/xonotic/util.qc:602 qcsrc/menu/xonotic/util.qc:610
-#: qcsrc/menu/xonotic/util.qc:622
-msgid "Default"
-msgstr "Par défaut"
+#: weapons.qc.tmp:15
+msgid "T.A.G. Seeker"
+msgstr "T.A.G. Chercheur"
 
-#: qcsrc/menu/xonotic/util.qc:588
-msgid "Use default"
-msgstr "Par défaut"
+#: weapons.qc.tmp:16
+msgid "Fireball"
+msgstr "Boule de Feu"
 
-#: qcsrc/menu/xonotic/util.qc:608
-msgid "Team Color:"
-msgstr "Couleur d'équipe:"
+#: weapons.qc.tmp:17
+msgid "Mine Layer"
+msgstr "Lance-Mines"
 
-#: qcsrc/menu/xonotic/util.qh:47
-msgid "Enable panel"
-msgstr "Activer ce panneau"
+#: weapons.qc.tmp:18
+msgid "Nex"
+msgstr "Nex"
 
-#: qcsrc/server/w_crylink.qc:2
-msgid "Crylink"
-msgstr "Crylink"
+#~ msgid "Powerup sharpen"
+#~ msgstr "Panneau des Pouvoirs"
 
-#: qcsrc/server/w_crylink.qc:666
-#, c-format
-msgid "%s succeeded at self-destructing themself with the Crylink"
-msgstr "%s a réussi à se suicider avec le Crylink"
+#~ msgid "Damage & water blur"
+#~ msgstr "Flou de d�g�ts:"
 
-#: qcsrc/server/w_crylink.qc:671
-#, c-format
-msgid "%s could not hide from %s's Crylink"
-msgstr "%s n'a pas pu se cacher du Crylink de %s"
+#~ msgid "%s was riddled full of holes by %s"
+#~ msgstr "%s s'est fait trouer par %s"
 
-#: qcsrc/server/w_crylink.qc:673
-#, c-format
-msgid "%s was too close to %s's Crylink"
-msgstr "%s a été trop près du Crylink de %s"
+#~ msgid "%s died of %s's great playing on the @!#%%'n Tuba"
+#~ msgstr "%s n'a pas aimé la musique de %s et en est mort"
 
-#: qcsrc/server/w_crylink.qc:675
-#, c-format
-msgid "%s took a close look at %s's Crylink"
-msgstr "%s a voulu voir se qui se trouvait dans le Crylink de %s"
+#~ msgid "%s hurt his own ears with the @!#%%'n Tuba"
+#~ msgstr "%s s'est fait casser les tympans par son propre tuba"
 
-#: qcsrc/server/w_electro.qc:2
-msgid "Electro"
-msgstr "Electro"
+#~ msgid "%s was gunned by %s"
+#~ msgstr "%s s'est fait fusiller par %s"
 
-#: qcsrc/server/w_electro.qc:574
-#, c-format
-msgid "%s could not remember where they put plasma"
-msgstr "%s ne se souvenait pas où il a tiré du plasma"
+#~ msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun"
+#~ msgstr "%2$s ^7a baffé %1$s ^7avec un ^2fusil"
 
-#: qcsrc/server/w_electro.qc:576
-#, c-format
-msgid "%s played with plasma"
-msgstr "%s a joué avec du plasma"
+#~ msgid "%s was tagged by %s"
+#~ msgstr "%s s'est fait tagguer par %s"
 
-#: qcsrc/server/w_electro.qc:583
-#, c-format
-msgid "%s just noticed %s's blue ball"
-msgstr "%s vient de remarquer la boule plasma de %s"
+#~ msgid "%s ate %s's rocket"
+#~ msgstr "%s a mangé la roquette de %s"
 
-#: qcsrc/server/w_electro.qc:585
-#, c-format
-msgid "%s got in touch with %s's blue ball"
-msgstr "%s s'est fait toucher par la boule plasma de %s"
+#~ msgid "%s almost dodged %s's rocket"
+#~ msgstr "%s a presque esquivé la roquette de %s"
 
-#: qcsrc/server/w_electro.qc:590
-#, c-format
-msgid "%s felt the electrifying air of %s's combo"
-msgstr "%s se sent électrisé par le combo de %s"
+#~ msgid "%s got too close to %s's rocket"
+#~ msgstr "%s s'est trop approché de la roquette de %s"
 
-#: qcsrc/server/w_electro.qc:592
-#, c-format
-msgid "%s got too close to %s's blue beam"
-msgstr "%s a été trop près du rayon plasma de %s"
+#~ msgid "%s was sniped by %s"
+#~ msgstr "%s s'est fait descendre au sniper par %s"
 
-#: qcsrc/server/w_electro.qc:594
-#, c-format
-msgid "%s was blasted by %s's blue beam"
-msgstr "%s a été désintégré à cause du rayon plasma de %s"
+#~ msgid "%s got hit in the head by %s"
+#~ msgstr "%s s'est fait décapiter au sniper par %s"
 
-#: qcsrc/server/w_fireball.qc:2
-msgid "Fireball"
-msgstr "Boule de Feu"
+#~ msgid "%s failed to hide from %s's rifle"
+#~ msgstr "%s n'a pas réussi à se cacher du sniper de %s"
 
-#: qcsrc/server/w_fireball.qc:417
-#, c-format
-msgid "%s forgot about some firemine"
-msgstr "%s n'a pas étudié la combustion des boules de feu"
+#~ msgid "%s died in %s's bullet hail"
+#~ msgstr "%s est mort de la nuée de balles de %s"
 
-#: qcsrc/server/w_fireball.qc:419 qcsrc/server/w_hlac.qc:240
-#, c-format
-msgid "%s should have used a smaller gun"
-msgstr "%s aurait dû utiliser une arme plus petite"
+#~ msgid "%s failed to hide from %s's bullet hail"
+#~ msgstr "%s n'a pas pu se cacher de la nuée de balles de %s"
 
-#: qcsrc/server/w_fireball.qc:426
-#, c-format
-msgid "%s tried to catch %s's firemine"
-msgstr "%s a pensé que la boule de feu de %s était un ballon de football"
+#~ msgid "%s sniped themself somehow"
+#~ msgstr "%s a oublié le cran de sûreté en chargeant"
 
-#: qcsrc/server/w_fireball.qc:428
-#, c-format
-msgid "%s fatefully ignored %s's firemine"
-msgstr "%s a ignoré la boule de feu de %s"
+#~ msgid "%s shot themself automatically"
+#~ msgstr "%s s'est suicidé au sniper"
 
-#: qcsrc/server/w_fireball.qc:435
-#, c-format
-msgid "%s could not hide from %s's fireball"
-msgstr "%s n'a pas réussi à se cacher de la boule de feu de %s"
+#~ msgid "%s felt %s doing the impossible to him"
+#~ msgstr "%s a eu tort de prendre le portail de %s"
 
-#: qcsrc/server/w_fireball.qc:437
-#, c-format
-msgid "%s saw the pretty lights of %s's fireball"
-msgstr "%s a vu les belles lumières de la boule de feu de %s"
+#~ msgid "%s has been vaporized by %s"
+#~ msgstr "%s s'est fait vaporiser par %s"
 
-#: qcsrc/server/w_fireball.qc:440
-#, c-format
-msgid "%s got too close to %s's fireball"
-msgstr "%s s'est trop approché de la boule de feu de %s"
+#~ msgid "%s is now thinking with portals"
+#~ msgstr "%s pense maintenant avec les portails"
 
-#: qcsrc/server/w_fireball.qc:442
-#, c-format
-msgid "%s tasted %s's fireball"
-msgstr "%s a goûté la boule de feu de %s"
+#~ msgid "%s stepped on %s's mine"
+#~ msgstr "%s a marché sur la mine de %s"
 
-#: qcsrc/server/w_grenadelauncher.qc:2
-msgid "Mortar"
-msgstr "Mortier"
+#~ msgid "%s almost dodged %s's mine"
+#~ msgstr "%s a presque esquivé la mine de %s"
 
-#: qcsrc/server/w_grenadelauncher.qc:383
-#, c-format
-msgid "%s tried out his own grenade"
-msgstr "%s a mangé sa propre grenade"
+#~ msgid "%s got too close to %s's mine"
+#~ msgstr "%s s'est trop approché de la mine de %s"
 
-#: qcsrc/server/w_grenadelauncher.qc:385
-#, c-format
-msgid "%s detonated"
-msgstr "%s a fait boum"
+#~ msgid "%s exploded"
+#~ msgstr "%s a explosé"
 
-#: qcsrc/server/w_grenadelauncher.qc:391
-#, c-format
-msgid "%s didn't see %s's grenade"
-msgstr "%s n'a pas vu la grenade de %s"
+#~ msgid "%s was lasered to death by %s"
+#~ msgstr "%s a été désintégré par le laser de %s"
 
-#: qcsrc/server/w_grenadelauncher.qc:393
-#, c-format
-msgid "%s almost dodged %s's grenade"
-msgstr "%s a presque réussi à esquiver la grenade de %s"
+#~ msgid "%s was cut in half by %s's gauntlet"
+#~ msgstr "%s s'est fait couper en deux par le laser de %s"
 
-#: qcsrc/server/w_grenadelauncher.qc:395
-#, c-format
-msgid "%s ate %s's grenade"
-msgstr "%s a mangé la grenade de %s"
+#~ msgid "%s lasered themself to hell"
+#~ msgstr "%s s'est suicidé au laser"
 
-#: qcsrc/server/w_hagar.qc:2
-msgid "Hagar"
-msgstr "Hagar"
+#~ msgid "%s has run into %s's gravity bomb"
+#~ msgstr "%s a été emprisonné par la bombe à gravité de %s"
 
-#: qcsrc/server/w_hagar.qc:395 qcsrc/server/w_seeker.qc:655
-#, c-format
-msgid "%s played with tiny rockets"
-msgstr "%s a joué avec des petits missiles"
+#~ msgid "%s did the impossible"
+#~ msgstr "%s a fait l'impossible"
 
-#: qcsrc/server/w_hagar.qc:399
-#, c-format
-msgid "%s hoped %s's missiles wouldn't bounce"
-msgstr "%s a pensé que les petits missiles de %s ne rebondissaient pas"
+#~ msgid "%s was cut down by %s"
+#~ msgstr "%s s'est fait couper par %s"
 
-#: qcsrc/server/w_hagar.qc:401 qcsrc/server/w_seeker.qc:661
-#, c-format
-msgid "%s was pummeled by %s"
-msgstr "%s a trop mangé de mini-missiles de la part de %s"
+#~ msgid "%s was pummeled by %s"
+#~ msgstr "%s a trop mangé de mini-missiles de la part de %s"
 
-#: qcsrc/server/w_hlac.qc:2
-msgid "Heavy Laser Assault Cannon"
-msgstr "Canon Laser Lourd d'Assaut "
+#~ msgid "%s hoped %s's missiles wouldn't bounce"
+#~ msgstr "%s a pensé que les petits missiles de %s ne rebondissaient pas"
 
-#: qcsrc/server/w_hlac.qc:242
-#, c-format
-msgid "%s was cut down by %s"
-msgstr "%s s'est fait couper par %s"
+#~ msgid "%s played with tiny rockets"
+#~ msgstr "%s a joué avec des petits missiles"
 
-#: qcsrc/server/w_hook.qc:2
-msgid "Grappling Hook"
-msgstr "Grappin"
+#~ msgid "%s ate %s's grenade"
+#~ msgstr "%s a mangé la grenade de %s"
 
-#: qcsrc/server/w_hook.qc:266 qcsrc/server/w_porto.qc:296
-#, c-format
-msgid "%s did the impossible"
-msgstr "%s a fait l'impossible"
+#~ msgid "%s almost dodged %s's grenade"
+#~ msgstr "%s a presque réussi à esquiver la grenade de %s"
 
-#: qcsrc/server/w_hook.qc:268
-#, c-format
-msgid "%s has run into %s's gravity bomb"
-msgstr "%s a été emprisonné par la bombe à gravité de %s"
+#~ msgid "%s didn't see %s's grenade"
+#~ msgstr "%s n'a pas vu la grenade de %s"
 
-#: qcsrc/server/w_laser.qc:2
-msgid "Laser"
-msgstr "Laser"
+#~ msgid "%s detonated"
+#~ msgstr "%s a fait boum"
 
-#: qcsrc/server/w_laser.qc:311
-#, c-format
-msgid "%s lasered themself to hell"
-msgstr "%s s'est suicidé au laser"
+#~ msgid "%s tried out his own grenade"
+#~ msgstr "%s a mangé sa propre grenade"
 
-#: qcsrc/server/w_laser.qc:315
-#, c-format
-msgid "%s was cut in half by %s's gauntlet"
-msgstr "%s s'est fait couper en deux par le laser de %s"
+#~ msgid "%s tasted %s's fireball"
+#~ msgstr "%s a goûté la boule de feu de %s"
 
-#: qcsrc/server/w_laser.qc:317
-#, c-format
-msgid "%s was lasered to death by %s"
-msgstr "%s a été désintégré par le laser de %s"
+#~ msgid "%s got too close to %s's fireball"
+#~ msgstr "%s s'est trop approché de la boule de feu de %s"
 
-#: qcsrc/server/w_minelayer.qc:2
-msgid "Mine Layer"
-msgstr "Lance-Mines"
+#~ msgid "%s saw the pretty lights of %s's fireball"
+#~ msgstr "%s a vu les belles lumières de la boule de feu de %s"
 
-#: qcsrc/server/w_minelayer.qc:523 qcsrc/server/w_rocketlauncher.qc:501
-#, c-format
-msgid "%s exploded"
-msgstr "%s a explosé"
+#~ msgid "%s could not hide from %s's fireball"
+#~ msgstr "%s n'a pas réussi à se cacher de la boule de feu de %s"
 
-#: qcsrc/server/w_minelayer.qc:527
-#, c-format
-msgid "%s got too close to %s's mine"
-msgstr "%s s'est trop approché de la mine de %s"
+#~ msgid "%s fatefully ignored %s's firemine"
+#~ msgstr "%s a ignoré la boule de feu de %s"
 
-#: qcsrc/server/w_minelayer.qc:529
-#, c-format
-msgid "%s almost dodged %s's mine"
-msgstr "%s a presque esquivé la mine de %s"
+#~ msgid "%s tried to catch %s's firemine"
+#~ msgstr "%s a pensé que la boule de feu de %s était un ballon de football"
 
-#: qcsrc/server/w_minelayer.qc:531
-#, c-format
-msgid "%s stepped on %s's mine"
-msgstr "%s a marché sur la mine de %s"
+#~ msgid "%s should have used a smaller gun"
+#~ msgstr "%s aurait dû utiliser une arme plus petite"
 
-#: qcsrc/server/w_minstanex.qc:2
-msgid "MinstaNex"
-msgstr "MinstaNex"
+#~ msgid "%s forgot about some firemine"
+#~ msgstr "%s n'a pas étudié la combustion des boules de feu"
 
-#: qcsrc/server/w_minstanex.qc:293 qcsrc/server/w_nex.qc:253
-#: qcsrc/server/w_shotgun.qc:215 qcsrc/server/w_uzi.qc:317
-#, c-format
-msgid "%s is now thinking with portals"
-msgstr "%s pense maintenant avec les portails"
+#~ msgid "%s was blasted by %s's blue beam"
+#~ msgstr "%s a été désintégré à cause du rayon plasma de %s"
 
-#: qcsrc/server/w_minstanex.qc:295 qcsrc/server/w_nex.qc:255
-#, c-format
-msgid "%s has been vaporized by %s"
-msgstr "%s s'est fait vaporiser par %s"
+#~ msgid "%s got too close to %s's blue beam"
+#~ msgstr "%s a été trop près du rayon plasma de %s"
 
-#: qcsrc/server/w_nex.qc:2
-msgid "Nex"
-msgstr "Nex"
+#~ msgid "%s felt the electrifying air of %s's combo"
+#~ msgstr "%s se sent électrisé par le combo de %s"
 
-#: qcsrc/server/w_porto.qc:2
-msgid "Port-O-Launch"
-msgstr "Lance-O-Port"
+#~ msgid "%s got in touch with %s's blue ball"
+#~ msgstr "%s s'est fait toucher par la boule plasma de %s"
 
-#: qcsrc/server/w_porto.qc:298
-#, c-format
-msgid "%s felt %s doing the impossible to him"
-msgstr "%s a eu tort de prendre le portail de %s"
+#~ msgid "%s just noticed %s's blue ball"
+#~ msgstr "%s vient de remarquer la boule plasma de %s"
 
-#: qcsrc/server/w_rifle.qc:2
-msgid "Rifle"
-msgstr "Fusil"
+#~ msgid "%s played with plasma"
+#~ msgstr "%s a joué avec du plasma"
 
-#: qcsrc/server/w_rifle.qc:233
-#, c-format
-msgid "%s shot themself automatically"
-msgstr "%s s'est suicidé au sniper"
+#~ msgid "%s could not remember where they put plasma"
+#~ msgstr "%s ne se souvenait pas où il a tiré du plasma"
 
-#: qcsrc/server/w_rifle.qc:235
-#, c-format
-msgid "%s sniped themself somehow"
-msgstr "%s a oublié le cran de sûreté en chargeant"
+#~ msgid "%s took a close look at %s's Crylink"
+#~ msgstr "%s a voulu voir se qui se trouvait dans le Crylink de %s"
 
-#: qcsrc/server/w_rifle.qc:242
-#, c-format
-msgid "%s failed to hide from %s's bullet hail"
-msgstr "%s n'a pas pu se cacher de la nuée de balles de %s"
+#~ msgid "%s was too close to %s's Crylink"
+#~ msgstr "%s a été trop près du Crylink de %s"
 
-#: qcsrc/server/w_rifle.qc:244
-#, c-format
-msgid "%s died in %s's bullet hail"
-msgstr "%s est mort de la nuée de balles de %s"
+#~ msgid "%s could not hide from %s's Crylink"
+#~ msgstr "%s n'a pas pu se cacher du Crylink de %s"
 
-#: qcsrc/server/w_rifle.qc:251
-#, c-format
-msgid "%s failed to hide from %s's rifle"
-msgstr "%s n'a pas réussi à se cacher du sniper de %s"
+#~ msgid "%s succeeded at self-destructing themself with the Crylink"
+#~ msgstr "%s a réussi à se suicider avec le Crylink"
 
-#: qcsrc/server/w_rifle.qc:256
-#, c-format
-msgid "%s got hit in the head by %s"
-msgstr "%s s'est fait décapiter au sniper par %s"
+#~ msgid "Disable multithreaded OpenGL"
+#~ msgstr "Désactiver OpenGL multi-coeurs"
 
-#: qcsrc/server/w_rifle.qc:258 qcsrc/server/w_uzi.qc:321
-#, c-format
-msgid "%s was sniped by %s"
-msgstr "%s s'est fait descendre au sniper par %s"
+#~ msgid "HTTP downloads:"
+#~ msgstr "Téléchargements:"
 
-#: qcsrc/server/w_rocketlauncher.qc:2
-msgid "Rocket Launcher"
-msgstr "Lance-Roquettes"
+#~ msgid "Network speed:"
+#~ msgstr "Vitesse réseau:"
 
-#: qcsrc/server/w_rocketlauncher.qc:505
-#, c-format
-msgid "%s got too close to %s's rocket"
-msgstr "%s s'est trop approché de la roquette de %s"
+#~ msgid "Minimize input latency"
+#~ msgstr "Minimiser la latence des contrôles"
 
-#: qcsrc/server/w_rocketlauncher.qc:507
-#, c-format
-msgid "%s almost dodged %s's rocket"
-msgstr "%s a presque esquivé la roquette de %s"
+#~ msgid "Mouse filter"
+#~ msgstr "Filtre Souris"
 
-#: qcsrc/server/w_rocketlauncher.qc:509
-#, c-format
-msgid "%s ate %s's rocket"
-msgstr "%s a mangé la roquette de %s"
+#~ msgid "UI mouse speed:"
+#~ msgstr "Vitesse souris menus:"
 
-#: qcsrc/server/w_seeker.qc:2
-msgid "T.A.G. Seeker"
-msgstr "T.A.G. Chercheur"
+#~ msgid "Blur and sharpen postprocessing"
+#~ msgstr "Flou et netteté post-processeur"
 
-#: qcsrc/server/w_seeker.qc:659
-#, c-format
-msgid "%s was tagged by %s"
-msgstr "%s s'est fait tagguer par %s"
+#~ msgid "High Dynamic Range (HDR)"
+#~ msgstr "High Dynamic Range (HDR)"
 
-#: qcsrc/server/w_shotgun.qc:2
-msgid "Shotgun"
-msgstr "Fusil"
+#~ msgid "Flash blend approximation"
+#~ msgstr "Lumières dynamiques rapides"
 
-#: qcsrc/server/w_shotgun.qc:219
-#, c-format
-msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun"
-msgstr "%2$s ^7a baffé %1$s ^7avec un ^2fusil"
+#~ msgid "WRN^None"
+#~ msgstr "Aucun"
 
-#: qcsrc/server/w_shotgun.qc:221
-#, c-format
-msgid "%s was gunned by %s"
-msgstr "%s s'est fait fusiller par %s"
+#~ msgid "RNG^Full"
+#~ msgstr "Tout"
 
-#: qcsrc/server/w_tuba.qc:2
-#, c-format
-msgid "@!#%'n Tuba"
-msgstr "@!#% Tuba"
+#~ msgid "RNG^Long"
+#~ msgstr "Long"
 
-#: qcsrc/server/w_tuba.qc:252
-#, c-format
-msgid "%s hurt his own ears with the @!#%%'n Tuba"
-msgstr "%s s'est fait casser les tympans par son propre tuba"
+#~ msgid "RNG^Normal"
+#~ msgstr "Normal"
 
-#: qcsrc/server/w_tuba.qc:256
-#, c-format
-msgid "%s died of %s's great playing on the @!#%%'n Tuba"
-msgstr "%s n'a pas aimé la musique de %s et en est mort"
+#~ msgid "RNG^Short"
+#~ msgstr "Court"
 
-#: qcsrc/server/w_uzi.qc:2
-msgid "Machine Gun"
-msgstr "Mitraillette"
+#~ msgid "RNG^Very short"
+#~ msgstr "Très court"
 
-#: qcsrc/server/w_uzi.qc:323
-#, c-format
-msgid "%s was riddled full of holes by %s"
-msgstr "%s s'est fait trouer par %s"
+#~ msgid "Taunt range:"
+#~ msgstr "Distance voix:"
 
-#~ msgid "Damage & water blur"
-#~ msgstr "Flou de d�g�ts:"
+#~ msgid "VOCS^All"
+#~ msgstr "Tout"
 
-#~ msgid "Powerup sharpen"
-#~ msgstr "Panneau des Pouvoirs"
+#~ msgid "VOCS^Taunts"
+#~ msgstr "Voix"
+
+#~ msgid "VOCS^None"
+#~ msgstr "Aucun"
+
+#~ msgid "Spatial voices:"
+#~ msgstr "Voix personnages:"
+
+#~ msgid "All players"
+#~ msgstr "Tous les joueurs"
+
+#~ msgid "Teammates"
+#~ msgstr "Équipiers"
+
+#~ msgid "Show names:"
+#~ msgstr "Montrer les noms:"
+
+#~ msgid "Waypoint scale:"
+#~ msgstr "Taille des Waypoints:"
+
+#~ msgid "Waypoints setup..."
+#~ msgstr "Paramètres Waypoints..."
+
+#~ msgid "HTST^None"
+#~ msgstr "Aucun"
+
+#~ msgid "Size:"
+#~ msgstr "Taille:"
+
+#~ msgid "Weapon settings..."
+#~ msgstr "Paramètres armes..."
+
+#~ msgid "Zoom speed:"
+#~ msgstr "Vitesse de Zoom:"
+
+#~ msgid "View bobbing:"
+#~ msgstr "Caméra marche:"
+
+#~ msgid "CA:"
+#~ msgstr "CA:"
+
+#~ msgid "Ping:"
+#~ msgstr "Latence:"
+
+#~ msgid "Gameplay:"
+#~ msgstr "Mode:"
+
+#~ msgid "%d/%d, %d free player slots"
+#~ msgstr "%d/%d, %d Emplacements libres"
index f300f549fa8aae208a17acb33359f4f882b59cfc..864aa5ea4af877851ea62699325a55c2e9dad089 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-12-25 22:57+0100\n"
+"POT-Creation-Date: 2012-01-26 12:24+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,2728 +17,3126 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: qcsrc/menu/xonotic/dialog_firstrun.c:4
-msgid "Welcome"
+#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4
+msgid "Engine Info Panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_firstrun.c:33
-msgid ""
-"Welcome to Xonotic, please select your language preference and enter your "
-"player name to get started.  You can change these options later through the "
-"menu system."
+#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22
+msgid "Engine info:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_firstrun.c:38
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:35
-msgid "Text language:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25
+msgid "Use an averaging algorithm for fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_firstrun.c:47
-#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:39
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:40
-msgid "Name:"
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:4
+msgid "Singleplayer"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_firstrun.c:69
-msgid "Save settings"
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:116
+msgid "Instant action! (random map with bots)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4
-msgid "Ammo Panel"
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:123
+#: qcsrc/menu/xonotic/campaign.c:288
+msgid "???"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22
-msgid "Ammunition display:"
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:137
+msgid "Campaign Difficulty:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25
-msgid "Show only current ammo type"
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:138
+msgid "CSKL^Easy"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:28
-msgid "Align icon:"
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:139
+msgid "CSKL^Medium"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:29
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:28
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:40
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:28
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:40
-#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:36
-msgid "Left"
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:140
+msgid "CSKL^Hard"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:30
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:30
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:41
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:30
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:41
-#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:38
-msgid "Right"
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:142
+msgid "Start Singleplayer!"
 msgstr ""
 
-#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38
-msgid "Do not press this button again!"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:6
+msgid "Crosshair settings"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:276
-#, c-format
-msgid "Received HTTP request data for an invalid id %d.\n"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:28
+msgid "Enable center crosshair dot"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:291
-#, c-format
-msgid "error receiving update notification: status is %d\n"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:31
+msgid "Dot size:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:296
-msgid "error: received HTML instead of an update notification\n"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:36
+msgid "Dot alpha:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:301
-msgid "error: received carriage returns from update notification server\n"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:41
+msgid "Dot color:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:322
-#, c-format
-msgid ""
-"Update can be downloaded at:\n"
-"%s\n"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:43
+msgid "Use normal crosshair color"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:351
-msgid "Autogenerating mapinfo for newly added maps..."
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:47
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:131
+msgid "Custom"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:381
-#, c-format
-msgid "^1%s TEST BUILD"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:54
+msgid "Crosshair animations:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:439
-#, c-format
-msgid "Update to %s now!"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:57
+msgid "Smooth effects of crosshairs"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:524
-msgid ""
-"^1ERROR: Texture compression is required but not supported.\n"
-"^1Expect visual problems.\n"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:61
+msgid "Use rings to indicate weapon status"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:546
-msgid "Arena"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:67
+msgid "Hit testing:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:547
-msgid "Assault"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:69
+msgid "HTTST^Disabled"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:548
-msgid "Capture The Flag"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:70
+msgid "HTTST^TrueAim"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:549
-msgid "Clan Arena"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:71
+msgid "HTTST^Enemies"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:550
-msgid "Deathmatch"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:76
+msgid "Blur crosshair if the shot is obstructed"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:551
-msgid "Domination"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:81
+msgid "Animate when hitting an enemy"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:552
-msgid "Freeze Tag"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:85
+msgid "Animate when picking up an item"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:553
-msgid "Keepaway"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c:91
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:113
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:56
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:74
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:96
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:277
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:82
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:73
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:89
+#: qcsrc/menu/xonotic/dialog_credits.c:21
+#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21
+msgid "OK"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:554
-msgid "Key Hunt"
+#: qcsrc/menu/xonotic/playerlist.c:118 qcsrc/menu/xonotic/playerlist.c:128
+msgid "spectator"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:555
-msgid "Last Man Standing"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:6
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:153
+msgid "View settings"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:556
-msgid "Nexball"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:28
+msgid "Field of view:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:557
-msgid "Onslaught"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:31
+msgid "Zoom:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:558
-msgid "Race"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:33
+msgid "RETICLE^Fullscreen"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:559
-msgid "Race CTS"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:34
+msgid "RETICLE^With reticle"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:560
-msgid "Runematch"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:38
+msgid "ZOOM^Factor:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:561
-msgid "Team Deathmatch"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:42
+msgid "ZOOM^Speed:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:580
-#, c-format
-msgid "@!#%'n Tuba Throwing"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:52
+msgid "ZOOM^Instant"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:598 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:23
-msgid "Background:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:56
+msgid "ZOOM^Sensitivity:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:600 qcsrc/menu/xonotic/util.qc:616
-#: qcsrc/menu/xonotic/util.qc:625 qcsrc/menu/xonotic/util.qc:633
-#: qcsrc/menu/xonotic/util.qc:645
-msgid "Default"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:59
+msgid "Velocity zoom:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:601 qcsrc/menu/xonotic/util.qc:617
-#: qcsrc/menu/xonotic/util.qc:634 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:25
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:37
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:52
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:91
-msgid "Disable"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:61
+msgid "VZOOM^Disabled"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:606 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77
-msgid "Color:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:62
+msgid "VZOOM^Forward only"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:611
-msgid "Use default"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:63
+msgid "VZOOM^All directions"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:614 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35
-msgid "Border size:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:67
+msgid "VZOOM^Speed"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:623 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:43
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:82
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:32
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156
-msgid "Alpha:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:72
+msgid "Allow passing through walls while spectating"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:631
-msgid "Team Color:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:75
+msgid "1st person perspective"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:640 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58
-msgid "Test team color in configure mode"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:79
+msgid "Smooth the view when landing from a jump"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qc:643 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61
-msgid "Padding:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:83
+msgid "Smooth the view while crouching"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:4
-#: qcsrc/menu/xonotic/dialog_settings.c:19
-msgid "Video"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:87
+msgid "View waving while idle"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:26
-msgid "Resolution:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:91
+msgid "View bobbing while walking around"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:29
-msgid "Font/UI size:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:96
+msgid "3rd person perspective"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:31
-msgid "SZ^Unreadable"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:100
+msgid "Back distance"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:32
-msgid "SZ^Tiny"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c:106
+msgid "Up distance"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:33
-msgid "SZ^Little"
+#: qcsrc/menu/xonotic/util.qc:276
+#, c-format
+msgid "Received HTTP request data for an invalid id %d.\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:34
-msgid "SZ^Small"
+#: qcsrc/menu/xonotic/util.qc:291
+#, c-format
+msgid "error receiving update notification: status is %d\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:35
-msgid "SZ^Medium"
+#: qcsrc/menu/xonotic/util.qc:296
+msgid "error: received HTML instead of an update notification\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:36
-msgid "SZ^Large"
+#: qcsrc/menu/xonotic/util.qc:301
+msgid "error: received carriage returns from update notification server\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:37
-msgid "SZ^Huge"
+#: qcsrc/menu/xonotic/util.qc:322
+#, c-format
+msgid ""
+"Update can be downloaded at:\n"
+"%s\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:38
-msgid "SZ^Gigantic"
+#: qcsrc/menu/xonotic/util.qc:351
+msgid "Autogenerating mapinfo for newly added maps..."
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:39
-msgid "SZ^Colossal"
+#: qcsrc/menu/xonotic/util.qc:381
+#, c-format
+msgid "^1%s TEST BUILD"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:42
-msgid "Color depth:"
+#: qcsrc/menu/xonotic/util.qc:439
+#, c-format
+msgid "Update to %s now!"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:45
-msgid "Full screen"
+#: qcsrc/menu/xonotic/util.qc:524
+msgid ""
+"^1ERROR: Texture compression is required but not supported.\n"
+"^1Expect visual problems.\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:46
-msgid "Vertical Synchronization"
+#: qcsrc/menu/xonotic/util.qc:630 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:23
+msgid "Background:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:48
-msgid "Use OpenGL 2.0 shaders (GLSL)"
+#: qcsrc/menu/xonotic/util.qc:632 qcsrc/menu/xonotic/util.qc:648
+#: qcsrc/menu/xonotic/util.qc:657 qcsrc/menu/xonotic/util.qc:665
+#: qcsrc/menu/xonotic/util.qc:677
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193
+msgid "Default"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:51
-msgid "Use GLSL to handle color control"
+#: qcsrc/menu/xonotic/util.qc:633 qcsrc/menu/xonotic/util.qc:649
+#: qcsrc/menu/xonotic/util.qc:666 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:25
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:37
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:52
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:91
+msgid "Disable"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:55
-msgid "Vertex Buffer Objects (VBOs)"
+#: qcsrc/menu/xonotic/util.qc:638 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77
+msgid "Color:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:58
-msgid "VBO^Off"
+#: qcsrc/menu/xonotic/util.qc:643
+msgid "Use default"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:59
-msgid "Vertices, some Tris (compatible)"
+#: qcsrc/menu/xonotic/util.qc:646 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35
+msgid "Border size:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:62
-msgid "Vertices"
+#: qcsrc/menu/xonotic/util.qc:655 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:43
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:82
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:66
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:32
+msgid "Alpha:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:63
-msgid "Vertices and Triangles"
+#: qcsrc/menu/xonotic/util.qc:663
+msgid "Team Color:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:66
-msgid "Depth first:"
+#: qcsrc/menu/xonotic/util.qc:672 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58
+msgid "Test team color in configure mode"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:68
-msgid "DF^Disabled"
+#: qcsrc/menu/xonotic/util.qc:675 qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61
+msgid "Padding:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:69
-msgid "DF^World"
+#: qcsrc/menu/xonotic/dialog_news.c:4
+msgid "News"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:70
-msgid "DF^All"
+#: qcsrc/menu/xonotic/dialog_news.c:18
+msgid "http://www.xonotic.org/team/blog/"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:73
-msgid "Wait for GPU to finish each frame"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4
+msgid "Weapons Panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:76
-msgid "Brightness:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24
+msgid "Fade out after:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:79
-msgid "Contrast:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26
+msgid "Never"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:82
-msgid "Gamma:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:28
+#, c-format
+msgid "%ds"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:87
-msgid "Contrast boost:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:32
+msgid "Fade effect:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:92
-msgid "Saturation:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35
+msgid "EF^None"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:98
-msgid "LIT^Ambient:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:36
+msgid "Slide"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:101
-msgid "Intensity:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37
+msgid "Alpha"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:105
-#: qcsrc/menu/xonotic/dialog_settings_input.c:74
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:175
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:30
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:41
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:195
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:197
-msgid "Apply immediately"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:38
+msgid "EF^Both"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5
-msgid "Advanced settings"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:42
+msgid "Weapon icons:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23
-msgid "Cvar filter:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45
+msgid "Show only owned weapons"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:24
-#: qcsrc/menu/xonotic/dialog_settings_input.c:41
-#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:29
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:33
-msgid "Clear"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:48
+msgid "Show weapon ID as:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34
-msgid "Setting:"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49
+msgid "SHOWAS^None"
+msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:257
-msgid "Type:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50
+msgid "Number"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42
-msgid "Value:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:51
+msgid "Bind"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56
-msgid "Description:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:54
+msgid "Show Accuracy"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:61
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:57
-#: qcsrc/menu/xonotic/dialog_credits.c:21
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:82
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:35
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:89
-#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:277
-msgid "OK"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:55
+msgid "Show Ammo"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4
-msgid "Powerups Panel"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:58
+msgid "Ammo bar color:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22
-msgid "Enable status bar"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:64
+msgid "Ammo bar alpha:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24
-msgid "Status bar alignment:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5
+msgid "Server Information"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:32
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:42
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:32
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:42
-msgid "Inward"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:132
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:133
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:242
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:247
+msgid "N/A"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:34
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:43
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:34
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:43
-msgid "Outward"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:179
+#, c-format
+msgid "%d/%d"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37
-msgid "Icon alignment:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:200
+msgid "Official"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45
-msgid "Flip strength and shield positions"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:200
+#, c-format
+msgid "%d modified"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:4
-msgid "Physics Panel"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:208
+msgid "N/A (auth library missing, can't connect)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:22
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21
-#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21
-msgid "Panel disabled"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:210
+msgid "N/A (auth library missing)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:23
-msgid "Panel enabled"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:216
+msgid "Not supported (can't connect)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:24
-msgid "Panel enabled even observing"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:218
+msgid "Not supported (won't encrypt)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:25
-msgid "Panel enabled only in Race/CTS"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:222
+msgid "Supported (will encrypt)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:31
-msgid "Status bar"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:224
+msgid "Supported (won't encrypt)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:33
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48
-msgid "Left align"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:228
+msgid "Requested (will encrypt)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:34
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:52
-msgid "Right align"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:230
+msgid "Requested (won't encrypt)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:35
-msgid "Inward align"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:234
+msgid "Required (can't connect)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:36
-msgid "Outward align"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:236
+msgid "Required (will encrypt)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:40
-msgid "Flip speed/acceleration positions"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:256
+msgid "Hostname:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:44
-msgid "Speed:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:262
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56
+msgid "Address:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:45
-msgid "Include vertical speed"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:270
+msgid "Gametype:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:56
-msgid "Speed unit:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:275
+msgid "Map:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:58
-msgid "qu/s"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:280
+msgid "Mod:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:59
-msgid "m/s"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:285
+msgid "Version:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:60
-msgid "km/h"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:290
+msgid "Settings:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:61
-msgid "mph"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:297
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:329
+msgid "Players:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:62
-msgid "knots"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:302
+msgid "Bots:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:64
-msgid "Show"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307
+msgid "Free slots:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:67
-msgid "Top speed"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:313
+msgid "Encryption:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:73
-msgid "Acceleration:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:318
+msgid "ID:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:74
-msgid "Include vertical acceleration"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:323
+msgid "Key:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6
-msgid "Weapon settings"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:335
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:121
+msgid "Close"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29
-msgid "Weapon priority list:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:342
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:72
+msgid "Join!"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34
-msgid "Up"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:6
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:147
+msgid "Model settings"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37
-msgid "Down"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:28
+msgid "Body fading:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41
-msgid "Use priority list for weapon cycling"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:31
+msgid "Gibs:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43
-msgid "Auto switch weapons on pickup"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:33
+msgid "GIBS^None"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45
-msgid "Draw 1st person weapon model"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:34
+msgid "GIBS^Few"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50
-#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:37
-msgid "Center"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:35
+msgid "GIBS^Many"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:55
-msgid "Flip view horizontally"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:36
+msgid "GIBS^Lots"
 msgstr ""
 
-#: qcsrc/menu/xonotic/serverlist.c:185
-msgid "Remove"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:40
+msgid "Playermodel LOD:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/serverlist.c:187
-msgid "Bookmark"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:44
+msgid "Force models:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/serverlist.c:548
-msgid "Ping"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:45
+msgid "MDL^None"
 msgstr ""
 
-#: qcsrc/menu/xonotic/serverlist.c:549
-msgid "Host name"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:46
+msgid "MDL^Custom"
 msgstr ""
 
-#: qcsrc/menu/xonotic/serverlist.c:550
-msgid "Map"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:47
+msgid "MDL^All"
 msgstr ""
 
-#: qcsrc/menu/xonotic/serverlist.c:551
-msgid "Type"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:50
+msgid "Force player models to mine"
 msgstr ""
 
-#: qcsrc/menu/xonotic/serverlist.c:552
-msgid "Players"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c:52
+msgid "Force player colors to mine"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5
-msgid "User defined key bind"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:4
+#: qcsrc/menu/xonotic/dialog_settings.c:22
+msgid "User"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42
-msgid "Command when pressed:"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:27
+msgid "Menu skins:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45
-msgid "Command when released:"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:31
+msgid "Set skin"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48
-msgid "Save"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:65
+#: qcsrc/menu/xonotic/dialog_firstrun.c:68
+msgid "Text language:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51
-msgid "Cancel"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:74
+msgid "Set language"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4
-msgid "Score Panel"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:79
+msgid "Disable gore effects and harsh language"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:22
-msgid "Score:"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:82
+msgid "Allow player statistics to track your client"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:25
-msgid "Rankings:"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:84
+msgid "Allow player statistics to use your nickname"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:26
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:60
-msgid "Off"
+#: qcsrc/menu/xonotic/dialog_settings_user.c:88
+#: qcsrc/menu/xonotic/dialog_settings_video.c:142
+#: qcsrc/menu/xonotic/dialog_settings_input.c:89
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:185
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:203
+msgid "Apply immediately"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:27
-msgid "And me"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:159
+msgid "Weapon settings"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:28
-msgid "Pure"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29
+msgid "Weapon priority list:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:4
-#: qcsrc/menu/xonotic/dialog_settings.c:18
-msgid "Input"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:33
+msgid "Up"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:26
-msgid "Key bindings:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:36
+msgid "Down"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:31
-msgid "Change key..."
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41
+msgid "Use priority list for weapon cycling"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:35
-msgid "Edit..."
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43
+msgid "Auto switch weapons on pickup"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:46
-msgid "Sensitivity:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:46
+msgid "Draw 1st person weapon model"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:51
-msgid "UI mouse speed:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:49
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:33
+msgid "Left align"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:55
-msgid "Mouse filter"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:51
+#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:37
+msgid "Center"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:57
-msgid "Invert mouse"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:34
+msgid "Right align"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:60
-#: qcsrc/menu/xonotic/dialog_settings_input.c:62
-msgid "Use joystick input"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:58
+msgid "Gun model swaying"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:65
-#: qcsrc/menu/xonotic/dialog_settings_input.c:67
-msgid "Turn off OS mouse acceleration"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:63
+msgid "Gun model bobbing"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:69
-msgid "\"enter console\" also closes"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:68
+msgid "VWMDL^Scale"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:72
-msgid "Holding jump key keeps jumping"
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4
+msgid "Panel HUD Setup"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4
-msgid "Vote Panel"
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21
+msgid "Panel background defaults:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22
-msgid "Alpha after voting:"
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89
+msgid "Team color:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/slider_decibels.c:50
-msgid "VOL^OFF"
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68
+msgid "HUD Dock:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/slider_decibels.c:52
-msgid "VOL^MAX"
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70
+msgid "DOCK^Disabled"
 msgstr ""
 
-#: qcsrc/menu/xonotic/slider_decibels.c:53
-#, c-format
-msgid "%s dB"
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71
+msgid "DOCK^Small"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_news.c:4
-msgid "News"
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72
+msgid "DOCK^Medium"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_news.c:18
-msgid "http://www.xonotic.org/team/blog/"
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73
+msgid "DOCK^Large"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_quit.c:4
-msgid "Quit"
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96
+msgid "Grid settings:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_quit.c:17
-msgid "Are you sure you want to quit?"
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99
+msgid "Snap panels to grid"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_quit.c:20
-msgid "Yes"
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102
+msgid "Grid size:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_quit.c:21
-msgid "No"
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:103
+msgid "X:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:109
+msgid "Y:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:117
+msgid "Exit setup"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5
+msgid "Map Information"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49
+msgid "Full item placement"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49
+msgid "MinstaGib only"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81
+msgid "Title:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:87
+msgid "Author:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:93
+msgid "Features:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:98
+msgid "Game types:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:124
+msgid "MAP^Play"
+msgstr ""
+
+#: qcsrc/menu/xonotic/campaign.c:289
+#, c-format
+msgid "Level %d: %s"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4
+msgid "Health/Armor Panel"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22
+msgid "Enable status bar"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24
+msgid "Status bar alignment:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:28
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:40
+#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:29
+#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:36
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:28
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:40
+msgid "Left"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:30
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:41
+#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:30
+#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:38
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:30
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:41
+msgid "Right"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:32
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:42
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:32
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:42
+msgid "Inward"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:34
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:43
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:34
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:43
+msgid "Outward"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37
+msgid "Icon alignment:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45
+msgid "Flip health and armor positions"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4
+msgid "Demo"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28
+msgid "Automatically record demos while playing"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:31
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28
+msgid "Filter:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:32
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:29
+#: qcsrc/menu/xonotic/dialog_settings_input.c:40
+msgid "Clear"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:45
+msgid "Timedemo"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:48
+msgid "DEMO^Play"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:6
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:169
+msgid "HUD settings"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:40
+msgid "Damage:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:43
+msgid "Overlay:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:47
+msgid "Factor:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:52
+msgid "Fade rate:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:58
+msgid "Waypoints"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:61
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46
+msgid "Scale:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:71
+msgid "Edge offset:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:80
+msgid "Show names above players"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:83
+msgid "Only when near crosshair"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:86
+msgid "Display health and armor"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c:90
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c:4
+msgid "Enter HUD editor"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4
+msgid "Pressed Keys Panel"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:22
+msgid "Panel disabled"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22
+msgid "Panel enabled when spectating"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23
+msgid "Panel always enabled"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30
+msgid "Forced aspect:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:5
+msgid "Team Selection"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:41
+msgid "join 'best' team (auto-select)"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:45
+msgid "red"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:46
+msgid "blue"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:47
+msgid "yellow"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:48
+msgid "pink"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:51
+msgid "spectate"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7
+msgid "Mutators"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33
+msgid "All Weapons Arena"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35
+msgid "Most Weapons Arena"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56
+#, c-format
+msgid "%s Arena"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173
+msgid "Dodging"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:258
+msgid "MinstaGib"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:261
+msgid "NIX"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:74
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:213
+msgid "Rocket Flying"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:76
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:210
+msgid "Invincible Projectiles"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:272
+msgid "No start weapons"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:195
+msgid "Low gravity"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176
+msgid "Cloaked"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86
+msgid "Hook"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:179
+msgid "Midair"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:90
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:182
+msgid "Vampire"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:92
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:216
+msgid "Piñata"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:219
+msgid "Weapons stay"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:186
+msgid "Blood loss"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:207
+msgid "Jet pack"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:100
+msgid "No powerups"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:102
+msgid "Powerups"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:104
+msgid "MUT^None"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170
+msgid "Gameplay mutators:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4
-msgid "Mod Icons Panel"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:201
+msgid "Weapon & item mutators:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4
-msgid "Panel HUD Setup"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:204
+msgid "Grappling hook"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21
-msgid "Panel background defaults:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:223
+msgid "Weapon arenas:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89
-msgid "Team color:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:226
+msgid "Regular (no arena)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68
-msgid "HUD Dock:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264
+msgid "with laser"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70
-msgid "DOCK^Disabled"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:255
+msgid "Special arenas:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71
-msgid "DOCK^Small"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:268
+msgid "Most weapons"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72
-msgid "DOCK^Medium"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6
+msgid "Advanced server settings"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73
-msgid "DOCK^Large"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25
+msgid "Game settings:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96
-msgid "Grid settings:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28
+msgid "Allow spectating"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99
-msgid "Snap panels to grid"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31
+msgid "Spawn shield:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102
-msgid "Grid size:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36
+msgid "Game speed:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:103
-msgid "X:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40
+msgid "Teamplay settings:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:109
-msgid "Y:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43
+msgid "Friendly fire scale:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:117
-msgid "Exit setup"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47
+msgid "Virtual friendly fire (effect only)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4
-msgid "Radar Panel"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50
+msgid "Friendly fire penalty:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22
-msgid "Panel enabled in teamgames"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54
+msgid "Virtual penalty (effect only)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23
-#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23
-msgid "Panel always enabled"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57
+msgid "Teams:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29
-msgid "Radar:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66
+msgid "Map voting:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36
-msgid "Rotation:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68
+msgid "No voting"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38
-msgid "Forward"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69
+msgid "2 choices"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39
-msgid "West"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70
+msgid "3 choices"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40
-msgid "South"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71
+msgid "4 choices"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41
-msgid "East"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72
+msgid "5 choices"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42
-msgid "North"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73
+msgid "6 choices"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46
-msgid "Scale:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74
+msgid "7 choices"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50
-msgid "Zoom mode:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75
+msgid "8 choices"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52
-msgid "Zoomed in"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76
+msgid "9 choices"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53
-msgid "Zoomed out"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79
+msgid "Simple majority wins vcall"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54
-msgid "Always zoomed"
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4
+msgid "Chat Panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55
-msgid "Never zoomed"
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22
+msgid "Chat entries:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25
+msgid "Chat size:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29
+msgid "Chat lifetime:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33
+msgid "Chat beep sound"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4
+msgid "Ammo Panel"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22
+msgid "Ammunition display:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25
+msgid "Show only current ammo type"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:28
+msgid "Align icon:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings.c:4
+msgid "Settings"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings.c:18
+#: qcsrc/menu/xonotic/dialog_settings_input.c:4
+msgid "Input"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings.c:19
+#: qcsrc/menu/xonotic/dialog_settings_video.c:4
+msgid "Video"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings.c:20
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:4
+msgid "Effects"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:4
 #: qcsrc/menu/xonotic/dialog_settings.c:21
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:4
 msgid "Audio"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:27
-msgid "Master:"
+#: qcsrc/menu/xonotic/dialog_settings.c:23
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:4
+msgid "Misc"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:33
-msgid "Music:"
+#: qcsrc/menu/xonotic/playermodel.c:177
+msgid "<no model found>"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:41
-msgid "VOL^Ambient:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4
+msgid "Score Panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:48
-msgid "Info:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:22
+msgid "Score:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:55
-msgid "Items:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:25
+msgid "Rankings:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:62
-msgid "Pain:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:26
+msgid "Off"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:69
-msgid "Player:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:27
+msgid "And me"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:76
-msgid "Shots:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:28
+msgid "Pure"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:83
-msgid "Voice:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4
+msgid "Mod Icons Panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:91
-msgid "Weapons:"
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5
+msgid "Advanced settings"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:98
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:158
-msgid "Frequency:"
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:31
+msgid "Cvar filter:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:100
-msgid "8 kHz"
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:44
+msgid "Setting:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:101
-msgid "11.025 kHz"
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:48
+msgid "Type:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:52
+msgid "Value:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:68
+msgid "Description:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/slider_decibels.c:50
+msgid "VOL^OFF"
+msgstr ""
+
+#: qcsrc/menu/xonotic/slider_decibels.c:52
+msgid "VOL^MAX"
+msgstr ""
+
+#: qcsrc/menu/xonotic/slider_decibels.c:53
+#, c-format
+msgid "%s dB"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c:28
+msgid "In order for the HUD editor to show, you must first be in game."
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c:30
+msgid "Do you wish to start a local game to set up the HUD?"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c:33
+msgid "HDCNFRM^Yes"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c:36
+msgid "HDCNFRM^No"
+msgstr ""
+
+#: qcsrc/menu/xonotic/mainwindow.c:39 qcsrc/menu/xonotic/mainwindow.c:42
+msgid "Do not press this button again!"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:26
+msgid "Resolution:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:29
+msgid "Font/UI size:"
+msgstr ""
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:31
+msgid "SZ^Unreadable"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:102
-msgid "16 kHz"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:32
+msgid "SZ^Tiny"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:103
-msgid "22.05 kHz"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:33
+msgid "SZ^Little"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:104
-msgid "24 kHz"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:34
+msgid "SZ^Small"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:105
-msgid "32 kHz"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:35
+msgid "SZ^Medium"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:106
-msgid "44.1 kHz"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:36
+msgid "SZ^Large"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:107
-msgid "48 kHz"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:37
+msgid "SZ^Huge"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:110
-msgid "Channels:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:38
+msgid "SZ^Gigantic"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:112
-msgid "Mono"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:39
+msgid "SZ^Colossal"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:113
-msgid "Stereo"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:42
+msgid "Color depth:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:114
-msgid "2.1"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:44
+msgid "16bit"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:115
-msgid "4"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:45
+msgid "32bit"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:116
-msgid "5"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:48
+msgid "Full screen"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:117
-msgid "5.1"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:49
+msgid "Vertical Synchronization"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:118
-msgid "6.1"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:53
+msgid "Anisotropy:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:119
-msgid "7.1"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:55
+msgid "ANISO^Disabled"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:123
-msgid "Swap Stereo"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:56
+#: qcsrc/menu/xonotic/dialog_settings_video.c:66
+msgid "2x"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:127
-msgid "Headphone friendly mode"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:57
+#: qcsrc/menu/xonotic/dialog_settings_video.c:67
+msgid "4x"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:131
-msgid "New style sound attenuation"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:58
+msgid "8x"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:133
-msgid "Spatial voices:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:59
+msgid "16x"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:134
-msgid "VOCS^None"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:62
+msgid "Antialiasing:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:135
-msgid "VOCS^Taunts"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:65
+msgid "AA^Disabled"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:136
-msgid "VOCS^All"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:71
+msgid "High-quality frame buffer"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:139
-msgid "Taunt range:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:76
+msgid "Depth first:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:142
-msgid "RNG^Very short"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:78
+msgid "DF^Disabled"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:143
-msgid "RNG^Short"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:79
+msgid "DF^World"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:144
-msgid "RNG^Normal"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:80
+msgid "DF^All"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:145
-msgid "RNG^Long"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:83
+msgid "Vertex Buffer Objects (VBOs)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:146
-msgid "RNG^Full"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:86
+msgid "VBO^Off"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:153
-msgid "Automatic taunts"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:87
+msgid "Vertices, some Tris (compatible)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:162
-msgid "Time warning:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:90
+msgid "Vertices"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:164
-msgid "WRN^None"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:91
+msgid "Vertices and Triangles"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:165
-msgid "1 minute"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:94
+msgid "Brightness:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:166
-msgid "5 minutes"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:97
+msgid "Contrast:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:167
-msgid "WRN^Both"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:100
+msgid "Gamma:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:170
-msgid "Hit indicator"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:105
+msgid "Contrast boost:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:172
-msgid "Menu sounds"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:110
+msgid "Saturation:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_credits.c:5
-msgid "Credits"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:116
+msgid "LIT^Ambient:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/slider_resolution.c:65
-#, c-format
-msgid "%dx%d"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:119
+msgid "Intensity:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6
-msgid "Advanced server settings"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:123
+msgid "Use OpenGL 2.0 shaders (GLSL)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25
-msgid "Game settings:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:125
+msgid "Use GLSL to handle color control"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28
-msgid "Allow spectating"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:128
+msgid "Wait for GPU to finish each frame"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31
-msgid "Spawn shield:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:132
+msgid "Psycho coloring (easter egg)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36
-msgid "Game speed:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:135
+msgid "Trippy vertices (easter egg)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40
-msgid "Teamplay settings:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:138
+msgid "Flip view horizontally"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43
-msgid "Friendly fire scale:"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:4
+msgid "Sandbox Tools"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47
-msgid "Virtual friendly fire (effect only)"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:19
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:60
+msgid "Model:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50
-msgid "Friendly fire penalty:"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:24
+msgid "Spawn"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54
-msgid "Virtual penalty (effect only)"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:25
+msgid "Remove *"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57
-msgid "Teams:"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:27
+msgid "Copy *"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66
-msgid "Map voting:"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:28
+msgid "Paste"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68
-msgid "No voting"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:30
+msgid "Bone:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69
-msgid "2 choices"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:35
+msgid "Set * as child"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70
-msgid "3 choices"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:36
+msgid "Attach to *"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71
-msgid "4 choices"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:38
+msgid "Detach from *"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72
-msgid "5 choices"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:41
+msgid "Visual object properties for *:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73
-msgid "6 choices"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:43
+msgid "Set skin:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74
-msgid "7 choices"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:45
+msgid "Set alpha:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75
-msgid "8 choices"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:48
+msgid "Set color main:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76
-msgid "9 choices"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:50
+msgid "Set color glow:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79
-msgid "Simple majority wins vcall"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:54
+msgid "Set frame:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/skinlist.c:105
-msgid "<TITLE>"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:58
+msgid "Physical object properties for *:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/skinlist.c:106
-msgid "<AUTHOR>"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:60
+msgid "Set material:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/skinlist.c:163 qcsrc/common/mapinfo.qc:1097
-#, c-format
-msgid "%s: %s"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:66
+msgid "Set solidity:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4
-msgid "Join"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:67
+msgid "Non-solid"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32
-msgid "Filter:"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:68
+msgid "Solid"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36
-msgid "SRVS^Empty"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:69
+msgid "Set physics:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40
-msgid "SRVS^Full"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:70
+msgid "Static"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44
-msgid "Pause"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:71
+msgid "Movable"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56
-msgid "Address:"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:72
+msgid "Physical"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:67
-msgid "Info..."
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:74
+msgid "Set scale:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:72
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:320
-msgid "Join!"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:76
+msgid "Set force:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4
-msgid "Weapons Panel"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:80
+msgid "Claim *"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24
-msgid "Fade out after:"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:82
+msgid "* object info"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26
-msgid "Never"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:83
+msgid "* mesh info"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:28
-#, c-format
-msgid "%ds"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:84
+msgid "* attachment info"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:32
-msgid "Fade effect:"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:85
+msgid "Show help"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35
-msgid "EF^None"
+#: qcsrc/menu/xonotic/dialog_sandboxtools.c:86
+msgid "* is the object you are facing"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:36
-msgid "Slide"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4
+msgid "Join"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37
-msgid "Alpha"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36
+msgid "SRVS^Empty"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:38
-msgid "EF^Both"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40
+msgid "SRVS^Full"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:42
-msgid "Weapon icons:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44
+msgid "Pause"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45
-msgid "Show only owned weapons"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:67
+msgid "Info..."
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:48
-msgid "Show weapon ID as:"
+#: qcsrc/menu/xonotic/dialog_credits.c:5
+msgid "Credits"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49
-msgid "SHOWAS^None"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:26
+msgid "Network:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50
-msgid "Number"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:29
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:44
+msgid "Speed:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:51
-msgid "Bind"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:31
+msgid "56k"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:54
-msgid "Show Accuracy"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:32
+msgid "ISDN"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:55
-msgid "Show Ammo"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:33
+msgid "Slow ADSL"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:58
-msgid "Ammo bar color:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:34
+msgid "Fast ADSL"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:64
-msgid "Ammo bar alpha:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:35
+msgid "Broadband"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:4
-msgid "Singleplayer"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:39
+msgid "Input packets/s:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:116
-msgid "Instant action! (random map with bots)"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:45
+msgid "Local latency:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:123
-#: qcsrc/menu/xonotic/campaign.c:284
-msgid "???"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:50
+msgid "Client UDP port:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:137
-msgid "Start Singleplayer!"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:55
+msgid "Show netgraph"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5
-msgid "Map Information"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:59
+msgid "Client-side movement prediction"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49
-msgid "Full item placement"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:62
+msgid "Movement error compensation"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49
-msgid "MinstaGib only"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:66
+msgid "Downloads:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78
-msgid "Title:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:69
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:81
+msgid "Maximum:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84
-msgid "Author:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:73
+msgid "Speed (kB/s):"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90
-msgid "Features:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:78
+msgid "Framerate:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95
-msgid "Game types:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:83
+msgid "MAXFPS^5 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:118
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317
-msgid "Close"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:84
+msgid "MAXFPS^10 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:121
-msgid "MAP^Play"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:85
+msgid "MAXFPS^20 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4
-msgid "Timer Panel"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:86
+msgid "MAXFPS^30 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22
-msgid "Timer:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:87
+msgid "MAXFPS^40 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25
-msgid "Show elapsed time"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:88
+msgid "MAXFPS^50 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings.c:4
-msgid "Settings"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:89
+msgid "MAXFPS^60 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings.c:20
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:4
-msgid "Effects"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:90
+msgid "MAXFPS^70 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings.c:22
-#: qcsrc/menu/xonotic/dialog_settings_network.c:4
-msgid "Network"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:91
+msgid "MAXFPS^100 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings.c:23
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:4
-msgid "Misc"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:92
+msgid "MAXFPS^125 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer.c:4
-msgid "Multiplayer"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:93
+msgid "MAXFPS^200 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer.c:18
-msgid "Servers"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:94
+msgid "MAXFPS^Unlimited"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer.c:19
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5
-msgid "Create"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:98
+msgid "Target:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer.c:20
-msgid "Demos"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:100
+msgid "TRGT^Disabled"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer.c:21
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5
-msgid "Player Setup"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:101
+msgid "TRGT^30 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4
-msgid "Pressed Keys Panel"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:102
+msgid "TRGT^40 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22
-msgid "Panel enabled when spectating"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:103
+msgid "TRGT^50 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30
-msgid "Forced aspect:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:104
+msgid "TRGT^60 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:34
-msgid "Game type:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:105
+msgid "TRGT^100 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:46
-msgid "Match settings:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:106
+msgid "TRGT^125 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:49
-msgid "Time limit:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:107
+msgid "TRGT^200 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:53
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:61
-msgid "Use map specified default"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:111
+msgid "Idle limit:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:56
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:156
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:157
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:162
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163
-msgid "Point limit:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:113
+msgid "IDLFPS^10 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:64
-msgid "Player slots:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:114
+msgid "IDLFPS^20 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:67
-msgid "Number of bots:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:115
+msgid "IDLFPS^30 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:71
-msgid "Bot skill:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:116
+msgid "IDLFPS^60 fps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:74
-msgid "Botlike"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:117
+msgid "IDLFPS^Unlimited"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75
-msgid "Beginner"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:122
+msgid "Show frames per second"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76
-msgid "You will win"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:125
+msgid "Save processing time for other apps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77
-msgid "You can win"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:129
+msgid "Menu tooltips:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78
-msgid "You might win"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:131
+msgid "TLTIP^Disabled"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:62
-msgid "Advanced"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:132
+msgid "TLTIP^Standard"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80
-msgid "Expert"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:133
+msgid "TLTIP^Advanced"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81
-msgid "Pro"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:137
+msgid "Show current time"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82
-msgid "Assassin"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:139
+msgid "Show current date"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83
-msgid "Unhuman"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:141
+msgid "Enable developer mode"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84
-msgid "Godlike"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:145
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:96
+msgid "Advanced settings..."
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:88
-msgid "Mutators..."
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4
+msgid "Notification Panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:97
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:68
-msgid "Advanced settings..."
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22
+msgid "Notifications:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:104
-msgid "Map list:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25
+msgid "Also print notifications to the console"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:110
-msgid "Select all"
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28
+msgid "Flip notify order"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:113
-msgid "Select none"
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31
+msgid "Entry lifetime:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:119
-msgid "Start Multiplayer!"
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35
+msgid "Entry fadetime:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:154
-msgid "Capture limit:"
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5
+msgid "User defined key bind"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:158
-msgid "Lives:"
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:39
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:37
+#: qcsrc/menu/xonotic/dialog_firstrun.c:46
+msgid "Name:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159
-msgid "Laps:"
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42
+msgid "Command when pressed:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160
-msgid "Goals:"
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45
+msgid "Command when released:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:164
-msgid "Frag limit:"
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48
+msgid "Save"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5
-msgid "Waypoints"
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51
+msgid "Cancel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23
-msgid "Show base waypoints"
+#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4
+msgid "Vote Panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25
-msgid "Waypoint scale:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22
+msgid "Alpha after voting:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29
-msgid "Waypoint alpha:"
+#: qcsrc/menu/xonotic/util.qh:50
+msgid "Enable panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:33
-msgid "Show names above players"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:19
+msgid "Create"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4
-msgid "Health/Armor Panel"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:34
+msgid "Game type:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45
-msgid "Flip health and armor positions"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:48
+msgid "Time limit:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:26
-msgid "Menu skins:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:52
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:60
+msgid "Use map specified default"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:47
-msgid "Show current time"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:55
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:154
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:156
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:162
+msgid "Point limit:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:49
-msgid "Show current date"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:63
+msgid "Player slots:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:51
-msgid "Show frames per second"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:66
+msgid "Number of bots:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:53
-msgid "Minimize input latency"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:69
+msgid "Bot skill:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:59
-msgid "Menu Tooltips:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72
+msgid "Botlike"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:61
-msgid "Standard"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:73
+msgid "Beginner"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:26
-msgid "Client-side movement prediction"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:74
+msgid "You will win"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:30
-msgid "Show netgraph"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75
+msgid "You can win"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:33
-msgid "Network speed:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76
+msgid "You might win"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:35
-msgid "56k"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77
+msgid "Advanced"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:36
-msgid "ISDN"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78
+msgid "Expert"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:37
-msgid "Slow ADSL"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79
+msgid "Pro"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:38
-msgid "Fast ADSL"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80
+msgid "Assassin"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:39
-msgid "Broadband"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81
+msgid "Unhuman"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:42
-msgid "Input packets/s:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82
+msgid "Godlike"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:46
-msgid "HTTP downloads:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:87
+msgid "Mutators..."
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:49
-msgid "Downloads:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:103
+msgid "Map list:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:53
-msgid "Speed (kB/s):"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:109
+msgid "Select all"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:57
-msgid "Client UDP port:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:112
+msgid "Select none"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4
-msgid "Engine Info Panel"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:118
+msgid "Start Multiplayer!"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22
-msgid "Engine info:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:153
+msgid "Capture limit:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25
-msgid "Use an averaging algorithm for fps"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:157
+msgid "Lives:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/campaign.c:285
-#, c-format
-msgid "Level %d: %s"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:158
+msgid "Laps:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5
-msgid "Server Information"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159
+msgid "Goals:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:115
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:116
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:186
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:192
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:202
-msgid "N/A"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163
+msgid "Frag limit:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:161
-#, c-format
-msgid "%d/%d, %d free player slots"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4
+msgid "Radar Panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:175
-msgid "Official settings"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22
+msgid "Panel enabled in teamgames"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:175
-#, c-format
-msgid "%d modified settings"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29
+msgid "Radar:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:200
-msgid "N/A (can't connect)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36
+msgid "Rotation:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:208
-msgid "not supported (can't connect)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38
+msgid "Forward"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:210
-msgid "not supported (won't encrypt)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39
+msgid "West"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:214
-msgid "supported (will encrypt)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40
+msgid "South"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:216
-msgid "supported (won't encrypt)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41
+msgid "East"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:220
-msgid "requested (will encrypt)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42
+msgid "North"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:222
-msgid "requested (won't encrypt)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50
+msgid "Zoom mode:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:226
-msgid "required (can't connect)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52
+msgid "Zoomed in"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:228
-msgid "required (will encrypt)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53
+msgid "Zoomed out"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:249
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:272
-msgid "Players:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54
+msgid "Always zoomed"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:262
-msgid "Map:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55
+msgid "Never zoomed"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:267
-msgid "Gameplay:"
+#: qcsrc/menu/xonotic/maplist.c:282
+msgid ""
+"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:277
-msgid "Bots:"
+#: qcsrc/menu/xonotic/maplist.c:290
+#, c-format
+msgid "%s's Xonotic Server"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:282
-msgid "Mod:"
+#: qcsrc/menu/xonotic/maplist.c:295
+msgid ""
+"Huh? Can't play this (invalid game type). Refiltering so this won't happen "
+"again.\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:287
-msgid "Version:"
+#: qcsrc/menu/xonotic/slider_resolution.c:65
+#, c-format
+msgid "%dx%d"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:292
-msgid "Ping:"
+#: qcsrc/menu/xonotic/dialog_quit.c:4
+msgid "Quit"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:298
-msgid "CA:"
+#: qcsrc/menu/xonotic/dialog_quit.c:18
+msgid "Are you sure you want to quit?"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:304
-msgid "Key:"
+#: qcsrc/menu/xonotic/dialog_quit.c:21
+msgid "Yes"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:310
-msgid "Encryption:"
+#: qcsrc/menu/xonotic/dialog_quit.c:22
+msgid "No"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:38
-msgid "Quality preset:"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:26
+msgid "Key bindings:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:41
-msgid "PRE^OMG!"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:30
+msgid "Change key..."
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:42
-msgid "PRE^Low"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:34
+msgid "Edit..."
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:43
-msgid "PRE^Medium"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:45
+msgid "Pressing \"enter console\" key also closes it"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:44
-msgid "PRE^Normal"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:47
+msgid "Automatically repeat jumping if holding jump"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:45
-msgid "PRE^High"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:51
+#: qcsrc/menu/xonotic/dialog_settings_input.c:53
+#: qcsrc/menu/xonotic/dialog_settings_input.c:56
+msgid "Use joystick input"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:46
-msgid "PRE^Ultra"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:61
+msgid "Mouse:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:48
-msgid "PRE^Ultimate"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:64
+msgid "Sensitivity:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:52
-msgid "Geometry detail:"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:68
+msgid "Smooth aiming"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:54
-msgid "DET^Lowest"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:71
+msgid "Invert aiming"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:55
-msgid "DET^Low"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:75
+#: qcsrc/menu/xonotic/dialog_settings_input.c:77
+#: qcsrc/menu/xonotic/dialog_settings_input.c:80
+msgid "Disable system mouse acceleration"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:56
-msgid "DET^Normal"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:85
+msgid "Enable built in mouse acceleration"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:57
-msgid "DET^Good"
+#: qcsrc/menu/xonotic/cvarlist.c:85
+msgid "will be saved to config.cfg"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:58
-msgid "DET^Best"
+#: qcsrc/menu/xonotic/cvarlist.c:87
+msgid "will not be saved"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:59
-msgid "DET^Insane"
+#: qcsrc/menu/xonotic/cvarlist.c:89
+msgid "private"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:62
-msgid "Antialiasing:"
+#: qcsrc/menu/xonotic/cvarlist.c:91
+msgid "engine setting"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:64
-msgid "AA^Disabled"
+#: qcsrc/menu/xonotic/cvarlist.c:93
+msgid "read only"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:65
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:106
-msgid "2x"
+#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4
+msgid "Winner"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:66
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:107
-msgid "4x"
+#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4
+msgid "Timer Panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:70
-msgid "High-quality frame buffer"
+#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22
+msgid "Timer:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:73
-msgid "Texture resolution:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25
+msgid "Show elapsed time"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:76
-msgid "RES^Leet"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:21
+msgid "Player Setup"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:77
-msgid "RES^Lowest"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88
+msgid "No crosshair"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:78
-msgid "RES^Low"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:90
+msgid "Per weapon crosshair"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:79
-msgid "RES^Normal"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:93
+msgid "Custom crosshair"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:80
-msgid "RES^Good"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:112
+msgid "Crosshair size:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:81
-msgid "RES^Best"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:117
+msgid "Crosshair alpha:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:94
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:97
-msgid "Avoid lossy texture compression"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:123
+msgid "Crosshair color:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:103
-msgid "Anisotropy:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:125
+msgid "Per weapon"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:105
-msgid "ANISO^Disabled"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:127
+msgid "By health"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:108
-msgid "8x"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:139
+msgid "Other crosshair settings"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:109
-msgid "16x"
+#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4
+msgid "Info Messages Panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:113
-msgid "Particle quality:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22
+msgid "Info messages:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:116
-msgid "Particle distance:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25
+msgid "Flip align"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:120
-msgid "Decals"
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:4
+msgid "Multiplayer"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:121
-msgid "Decals on models"
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:18
+msgid "Servers"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:125
-msgid "Distance:"
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:20
+msgid "Demos"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:131
-msgid "Time:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4
+msgid "Race Timer Panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:137
-msgid "Use lightmaps"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:4
+msgid "Physics Panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:138
-msgid "Deluxe mapping"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:23
+msgid "Panel enabled"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:140
-msgid "Gloss"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:24
+msgid "Panel enabled even observing"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:143
-msgid "Offset mapping"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:25
+msgid "Panel enabled only in Race/CTS"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:145
-msgid "Relief mapping"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:31
+msgid "Status bar"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:148
-msgid "Reflections:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:35
+msgid "Inward align"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:151
-msgid "Blurred"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:36
+msgid "Outward align"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:152
-msgid "REFL^Good"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:40
+msgid "Flip speed/acceleration positions"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:153
-msgid "Sharp"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:45
+msgid "Include vertical speed"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:158
-msgid "Show surfaces"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:56
+msgid "Speed unit:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:160
-msgid "No dynamic lighting"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:58
+msgid "qu/s"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:162
-msgid "Flash blend approximation"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:59
+msgid "m/s"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:164
-msgid "Realtime dynamic lighting"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:60
+msgid "km/h"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:165
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:169
-msgid "Shadows"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:61
+msgid "mph"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:168
-msgid "Realtime world lighting"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:62
+msgid "knots"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:173
-msgid "Use normal maps"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:64
+msgid "Show"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:175
-msgid "Soft shadows"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:67
+msgid "Top speed"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:178
-msgid "Coronas"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:73
+msgid "Acceleration:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:179
-msgid "Use Occlusion Queries"
+#: qcsrc/menu/xonotic/dialog_hudpanel_physics.c:74
+msgid "Include vertical acceleration"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:181
-msgid "High Dynamic Range (HDR)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:4
+msgid "Centerprint"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:185
-msgid "Motion blur:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:23
+msgid "Message duration:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:190
-msgid "Blur and sharpen postprocessing"
+#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:27
+msgid "Fade time:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/cvarlist.c:85
-msgid "will be saved to config.cfg"
+#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:31
+msgid "Flip messages order"
 msgstr ""
 
-#: qcsrc/menu/xonotic/cvarlist.c:87
-msgid "will not be saved"
+#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:33
+msgid "Text alignment:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/cvarlist.c:89
-msgid "private"
+#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:41
+msgid "Font scale:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/cvarlist.c:91
-msgid "engine setting"
+#: qcsrc/menu/xonotic/dialog_firstrun.c:4
+msgid "Welcome"
 msgstr ""
 
-#: qcsrc/menu/xonotic/cvarlist.c:93
-msgid "read only"
+#: qcsrc/menu/xonotic/dialog_firstrun.c:40
+msgid ""
+"Welcome to Xonotic, please select your language preference and enter your "
+"player name to get started.  You can change these options later through the "
+"menu system."
 msgstr ""
 
-#: qcsrc/menu/xonotic/playermodel.c:174
-msgid "<no model found>"
+#: qcsrc/menu/xonotic/dialog_firstrun.c:77
+msgid "Allow player statistics to use your nickname at stats.xonotic.org?"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4
-msgid "Chat Panel"
+#: qcsrc/menu/xonotic/dialog_firstrun.c:81
+msgid "ALWU2N^Yes"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22
-msgid "Chat entries:"
+#: qcsrc/menu/xonotic/dialog_firstrun.c:82
+msgid "ALWU2N^No"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25
-msgid "Chat size:"
+#: qcsrc/menu/xonotic/dialog_firstrun.c:83
+msgid "ALWU2N^Undecided"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29
-msgid "Chat lifetime:"
+#: qcsrc/menu/xonotic/dialog_firstrun.c:87
+msgid "Save settings"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33
-msgid "Chat beep sound"
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4
+msgid "Powerups Panel"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4
-msgid "Race Timer Panel"
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45
+msgid "Flip strength and shield positions"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:4
-msgid "Sandbox Tools"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:38
+msgid "Quality preset:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:19
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63
-msgid "Model:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:41
+msgid "PRE^OMG!"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:24
-msgid "Spawn"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:42
+msgid "PRE^Low"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:25
-msgid "Remove *"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:43
+msgid "PRE^Medium"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:27
-msgid "Copy *"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:44
+msgid "PRE^Normal"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:28
-msgid "Paste"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:45
+msgid "PRE^High"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:30
-msgid "Bone:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:46
+msgid "PRE^Ultra"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:35
-msgid "Set * as child"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:48
+msgid "PRE^Ultimate"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:36
-msgid "Attach to *"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:52
+msgid "Geometry detail:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:38
-msgid "Detach from *"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:54
+msgid "DET^Lowest"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:41
-msgid "Visual object properties for *:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:55
+msgid "DET^Low"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:43
-msgid "Set skin:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:56
+msgid "DET^Normal"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:45
-msgid "Set alpha:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:57
+msgid "DET^Good"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:48
-msgid "Set color main:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:58
+msgid "DET^Best"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:50
-msgid "Set color glow:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:59
+msgid "DET^Insane"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:54
-msgid "Set frame:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:62
+msgid "Texture resolution:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:58
-msgid "Physical object properties for *:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:65
+msgid "RES^Leet"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:60
-msgid "Set material:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:66
+msgid "RES^Lowest"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:66
-msgid "Set solidity:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:67
+msgid "RES^Very low"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:67
-msgid "Non-solid"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:68
+msgid "RES^Low"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:68
-msgid "Solid"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:69
+msgid "RES^Normal"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:69
-msgid "Set physics:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:70
+msgid "RES^Good"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:70
-msgid "Static"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:71
+msgid "RES^Best"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:71
-msgid "Movable"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:84
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:87
+msgid "Avoid lossy texture compression"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:72
-msgid "Physical"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:93
+msgid "Use lightmaps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:74
-msgid "Set scale:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:94
+msgid "Deluxe mapping"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:76
-msgid "Set force:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:96
+msgid "Gloss"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:80
-msgid "Claim *"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:100
+msgid "Particles quality:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:82
-msgid "* object info"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:103
+msgid "Particles distance:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:83
-msgid "* mesh info"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:106
+msgid "Damage effects:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:84
-msgid "* attachment info"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:108
+msgid "DMGPRTCLS^Disabled"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:85
-msgid "Show help"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:109
+msgid "DMGPRTCLS^Skeletal"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_sandboxtools.c:86
-msgid "* is the object you are facing"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:110
+msgid "DMGPRTCLS^All"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:87
-msgid "Force player models to mine"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:114
+msgid "Decals"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:90
-msgid "Field of view:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:115
+msgid "Decals on models"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:94
-msgid "View bobbing:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:119
+msgid "Distance:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:98
-msgid "Zoom factor:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:125
+msgid "Time:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:102
-msgid "Zoom speed:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:131
+msgid "Coronas"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:105
-msgid "Weapon settings..."
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:132
+msgid "Use Occlusion Queries"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:112
-msgid "Crosshair:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:134
+msgid "No dynamic lighting"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:113
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:141
-msgid "Per weapon"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:136
+msgid "Fake corona lighting"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:132
-msgid "Crosshair size:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:138
+msgid "Realtime dynamic lighting"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:136
-msgid "Crosshair alpha:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:139
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:143
+msgid "Shadows"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:140
-msgid "Crosshair color:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:142
+msgid "Realtime world lighting"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:142
-msgid "By health"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:147
+msgid "Use normal maps"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145
-msgid "Custom"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:149
+msgid "Soft shadows"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:150
-msgid "Enable center dot"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:153
+msgid "Show surfaces"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:153
-msgid "Size:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:155
+msgid "Offset mapping"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:160
-msgid "Hit test:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:157
+msgid "Relief mapping"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161
-msgid "HTST^None"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:159
+msgid "LOD"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:162
-msgid "TrueAim"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:162
+msgid "Bloom"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:163
-msgid "Enemies"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:164
+msgid "Reflections:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:166
-msgid "Waypoints setup..."
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:167
+msgid "Blurred"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:171
-msgid "Enter HUD editor"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:168
+msgid "REFL^Good"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176
-msgid "Force models:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:169
+msgid "Sharp"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177
-msgid "MDL^None"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:174
+msgid "Motion blur:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:178
-msgid "MDL^Custom"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:179
+msgid "Extra postprocessing effects"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179
-msgid "MDL^All"
+#: qcsrc/menu/xonotic/skinlist.c:105
+msgid "<TITLE>"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:182
-msgid "Disable gore effects"
+#: qcsrc/menu/xonotic/skinlist.c:106
+msgid "<AUTHOR>"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184
-msgid "Gibs:"
+#: qcsrc/menu/xonotic/skinlist.c:166 qcsrc/common/mapinfo.qc:1057
+#, c-format
+msgid "%s: %s"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186
-msgid "GIBS^None"
+#: qcsrc/menu/xonotic/serverlist.c:185
+msgid "Remove"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:187
-msgid "GIBS^Few"
+#: qcsrc/menu/xonotic/serverlist.c:187
+msgid "Bookmark"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:188
-msgid "GIBS^Many"
+#: qcsrc/menu/xonotic/serverlist.c:548
+msgid "Ping"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:189
-msgid "GIBS^Lots"
+#: qcsrc/menu/xonotic/serverlist.c:549
+msgid "Host name"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:193
-msgid "Damage splash:"
+#: qcsrc/menu/xonotic/serverlist.c:550
+msgid "Map"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4
-msgid "Notification Panel"
+#: qcsrc/menu/xonotic/serverlist.c:551
+msgid "Type"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22
-msgid "Notifications:"
+#: qcsrc/menu/xonotic/serverlist.c:552
+msgid "Players"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25
-msgid "Also print notifications to the console"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:27
+msgid "Master:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28
-msgid "Flip notify order"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:35
+msgid "Music:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31
-msgid "Entry lifetime:"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:45
+msgid "VOL^Ambient:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35
-msgid "Entry fadetime:"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:54
+msgid "Info:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:4
-msgid "Centerprint"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:63
+msgid "Items:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:23
-msgid "Message duration:"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:72
+msgid "Pain:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:27
-msgid "Fade time:"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:81
+msgid "Player:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:31
-msgid "Flip messages order"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:90
+msgid "Shots:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:33
-msgid "Text alignment:"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:99
+msgid "Voice:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.c:41
-msgid "Font scale:"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:109
+msgid "Weapons:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4
-msgid "Demo"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:117
+msgid "New style sound attenuation"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28
-msgid "Record demos while playing"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:119
+msgid "Mute sounds when not active"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43
-msgid "Timedemo"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:122
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:194
+msgid "Frequency:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46
-msgid "DEMO^Play"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:124
+msgid "8 kHz"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4
-msgid "Winner"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:125
+msgid "11.025 kHz"
 msgstr ""
 
-#: qcsrc/menu/xonotic/maplist.c:278
-msgid ""
-"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:126
+msgid "16 kHz"
 msgstr ""
 
-#: qcsrc/menu/xonotic/maplist.c:286
-#, c-format
-msgid "%s's Xonotic Server"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:127
+msgid "22.05 kHz"
 msgstr ""
 
-#: qcsrc/menu/xonotic/maplist.c:291
-msgid ""
-"Huh? Can't play this (invalid game type). Refiltering so this won't happen "
-"again.\n"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:128
+msgid "24 kHz"
 msgstr ""
 
-#: qcsrc/menu/xonotic/util.qh:48
-msgid "Enable panel"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:129
+msgid "32 kHz"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4
-msgid "Info Messages Panel"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:130
+msgid "44.1 kHz"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22
-msgid "Info messages:"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:131
+msgid "48 kHz"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25
-msgid "Flip align"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:134
+msgid "Channels:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:5
-msgid "Team Selection"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:136
+msgid "Mono"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:41
-msgid "join 'best' team (auto-select)"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:137
+msgid "Stereo"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:45
-msgid "red"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:138
+msgid "2.1"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:46
-msgid "blue"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:139
+msgid "4"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:47
-msgid "yellow"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:140
+msgid "5"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:48
-msgid "pink"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:141
+msgid "5.1"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:51
-msgid "spectate"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:142
+msgid "6.1"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7
-msgid "Mutators"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:143
+msgid "7.1"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33
-msgid "All Weapons Arena"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:146
+msgid "Swap Stereo"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35
-msgid "Most Weapons Arena"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:148
+msgid "Headphone friendly mode"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56
-#, c-format
-msgid "%s Arena"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:170
+msgid "Hit indication sound"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173
-msgid "Dodging"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:172
+msgid "Chat message sound"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:258
-msgid "MinstaGib"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:174
+msgid "Menu sounds"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:261
-msgid "NIX"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:177
+msgid "Time announcer:"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:74
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:213
-msgid "Rocket Flying"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:179
+msgid "WRN^Disabled"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:76
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:210
-msgid "Invincible Projectiles"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:180
+msgid "1 minute"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:272
-msgid "No start weapons"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:181
+msgid "5 minutes"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:195
-msgid "Low gravity"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:182
+msgid "WRN^Both"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176
-msgid "Cloaked"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:189
+msgid "Automatic taunts"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86
-msgid "Hook"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:199
+msgid "Debug info about sounds"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:179
-msgid "Midair"
+#: qcsrc/menu/command/menu_cmd.qc:41
+#, c-format
+msgid "error: status is %d\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:90
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:182
-msgid "Vampire"
+#: qcsrc/menu/command/menu_cmd.qc:64
+msgid "Usage: menu_cmd command..., where possible commands are:\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:92
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:216
-msgid "Piñata"
+#: qcsrc/menu/command/menu_cmd.qc:65
+msgid "  sync - reloads all cvars on the current menu page\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:219
-msgid "Weapons stay"
+#: qcsrc/menu/command/menu_cmd.qc:66
+msgid "  directmenu ITEM - select a menu item as main item\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:186
-msgid "Blood loss"
+#: qcsrc/menu/command/menu_cmd.qc:179
+msgid "error creating curl handle\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:207
-msgid "Jet pack"
+#: qcsrc/menu/command/menu_cmd.qc:186
+msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:100
-msgid "No powerups"
+#: qcsrc/menu/menu.qc:37
+#, c-format
+msgid "^4MQC Build information: ^1%s\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:102
-msgid "Powerups"
+#: qcsrc/menu/item/listbox.c:300
+#, c-format
+msgid "Item %d"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:104
-msgid "MUT^None"
+#: qcsrc/menu/item/gecko.c:49
+msgid "Browser not initialized!"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170
-msgid "Gameplay mutators:"
+#: qcsrc/menu/item/label.c:63
+#, c-format
+msgid "NOTE: label text %s too wide for label, condensed by factor %f\n"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:201
-msgid "Weapon & item mutators:"
+#: qcsrc/menu/item/slider.c:64
+#, c-format
+msgid "%d (%s)"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:204
-msgid "Grappling hook"
+#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31
+msgid "custom"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:223
-msgid "Weapon arenas:"
+#: qcsrc/common/mapinfo.qc:665
+#, c-format
+msgid "@!#%'n Tuba Throwing"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:226
-msgid "Regular (no arena)"
+#: qcsrc/common/mapinfo.qh:36
+msgid "Deathmatch"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264
-msgid "with laser"
+#: qcsrc/common/mapinfo.qh:39
+msgid "Last Man Standing"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:255
-msgid "Special arenas:"
+#: qcsrc/common/mapinfo.qh:42
+msgid "Arena"
 msgstr ""
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:268
-msgid "Most weapons"
+#: qcsrc/common/mapinfo.qh:45
+msgid "Runematch"
 msgstr ""
 
-#: qcsrc/menu/gamecommand.qc:47
-#, c-format
-msgid "error: status is %d\n"
+#: qcsrc/common/mapinfo.qh:48
+msgid "Race"
 msgstr ""
 
-#: qcsrc/menu/gamecommand.qc:70
-msgid "Usage: menu_cmd command..., where possible commands are:\n"
+#: qcsrc/common/mapinfo.qh:51
+msgid "Race CTS"
 msgstr ""
 
-#: qcsrc/menu/gamecommand.qc:71
-msgid "  sync - reloads all cvars on the current menu page\n"
+#: qcsrc/common/mapinfo.qh:54
+msgid "Team Deathmatch"
 msgstr ""
 
-#: qcsrc/menu/gamecommand.qc:72
-msgid "  directmenu ITEM - select a menu item as main item\n"
+#: qcsrc/common/mapinfo.qh:57
+msgid "Capture the Flag"
 msgstr ""
 
-#: qcsrc/menu/gamecommand.qc:185
-msgid "error creating curl handle\n"
+#: qcsrc/common/mapinfo.qh:60
+msgid "Clan Arena"
 msgstr ""
 
-#: qcsrc/menu/gamecommand.qc:192
-msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n"
+#: qcsrc/common/mapinfo.qh:63
+msgid "Domination"
 msgstr ""
 
-#: qcsrc/menu/menu.qc:37
-#, c-format
-msgid "^4MQC Build information: ^1%s\n"
+#: qcsrc/common/mapinfo.qh:66
+msgid "Key Hunt"
 msgstr ""
 
-#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31
-msgid "custom"
+#: qcsrc/common/mapinfo.qh:69
+msgid "Assault"
 msgstr ""
 
-#: qcsrc/menu/item/slider.c:64
-#, c-format
-msgid "%d (%s)"
+#: qcsrc/common/mapinfo.qh:72
+msgid "Onslaught"
 msgstr ""
 
-#: qcsrc/menu/item/label.c:63
-#, c-format
-msgid "NOTE: label text %s too wide for label, condensed by factor %f\n"
+#: qcsrc/common/mapinfo.qh:75
+msgid "Nexball"
 msgstr ""
 
-#: qcsrc/menu/item/listbox.c:300
-#, c-format
-msgid "Item %d"
+#: qcsrc/common/mapinfo.qh:78
+msgid "Freeze Tag"
 msgstr ""
 
-#: qcsrc/menu/item/gecko.c:49
-msgid "Browser not initialized!"
+#: qcsrc/common/mapinfo.qh:81
+msgid "Keepaway"
 msgstr ""
 
 #: weapons.qc.tmp:1
-msgid "Crylink"
+msgid "Rifle"
 msgstr ""
 
 #: weapons.qc.tmp:2
-msgid "Heavy Laser Assault Cannon"
+msgid "Machine Gun"
 msgstr ""
 
 #: weapons.qc.tmp:3
-msgid "MinstaNex"
+msgid "Rocket Launcher"
 msgstr ""
 
 #: weapons.qc.tmp:4
-msgid "Mortar"
+msgid "Port-O-Launch"
 msgstr ""
 
 #: weapons.qc.tmp:5
-msgid "Laser"
+msgid "Grappling Hook"
 msgstr ""
 
 #: weapons.qc.tmp:6
-msgid "Nex"
+msgid "Electro"
 msgstr ""
 
 #: weapons.qc.tmp:7
-msgid "Grappling Hook"
+msgid "Laser"
 msgstr ""
 
 #: weapons.qc.tmp:8
-msgid "Rocket Launcher"
+msgid "Shotgun"
 msgstr ""
 
 #: weapons.qc.tmp:9
-msgid "Port-O-Launch"
+#, c-format
+msgid "@!#%'n Tuba"
 msgstr ""
 
 #: weapons.qc.tmp:10
-msgid "Electro"
+msgid "MinstaNex"
 msgstr ""
 
 #: weapons.qc.tmp:11
-msgid "Hagar"
+msgid "Crylink"
 msgstr ""
 
 #: weapons.qc.tmp:12
-msgid "Shotgun"
+msgid "Heavy Laser Assault Cannon"
 msgstr ""
 
 #: weapons.qc.tmp:13
-#, c-format
-msgid "@!#%'n Tuba"
+msgid "Mortar"
 msgstr ""
 
 #: weapons.qc.tmp:14
-msgid "Mine Layer"
+msgid "Hagar"
 msgstr ""
 
 #: weapons.qc.tmp:15
-msgid "Rifle"
+msgid "T.A.G. Seeker"
 msgstr ""
 
 #: weapons.qc.tmp:16
-msgid "Machine Gun"
+msgid "Fireball"
 msgstr ""
 
 #: weapons.qc.tmp:17
-msgid "Fireball"
+msgid "Mine Layer"
 msgstr ""
 
 #: weapons.qc.tmp:18
-msgid "T.A.G. Seeker"
+msgid "Nex"
 msgstr ""
diff --git a/models/null.md3 b/models/null.md3
deleted file mode 100644 (file)
index 288e88f..0000000
Binary files a/models/null.md3 and /dev/null differ
index a05d13ff841e2c09a12ce3318baefa9d51540ca3..618e3ad4e234fc465e927bd80493429d9d5bcc16 100644 (file)
@@ -3,7 +3,7 @@ FTEQCC ?= fteqcc
 PERL ?= perl
 
 FTEQCCFLAGS_WATERMARK ?= -DWATERMARK='"$(shell git describe)"' -DCVAR_POPCON
-FTEQCCFLAGS ?= -Werror -Wno-Q302 -O3 -Ono-c -Ono-cs -fno-fastarrays $(FTEQCCFLAGS_EXTRA) $(FTEQCCFLAGS_WATERMARK)
+FTEQCCFLAGS ?= -Werror -Wno-Q302 -O3 -fno-fastarrays $(FTEQCCFLAGS_EXTRA) $(FTEQCCFLAGS_WATERMARK)
 FTEQCCFLAGS_PROGS ?=
 FTEQCCFLAGS_MENU ?=
 
index 2a1c9e67c7970f44d8418607809b5299306c6f31..9bd8e8c8a35807e0bd5cab007646136a3159edbb 100644 (file)
@@ -275,3 +275,5 @@ float uid2name_dialog;
 .float csqcmodel_isdead; // used by shownames and miscfunctions (float getplayerisdead(float) {}) to know when a player is dead
 
 #define player_currententnum (spectatee_status > 0 ? spectatee_status : player_localnum + 1)
+
+float g_balance_porto_secondary;
index 81c1369a0e61e45b660d73dd82130eeaf33388c7..d09f5ebb24edc94fdf9158c1b371d6fe71d1c0cf 100644 (file)
@@ -881,6 +881,7 @@ void Ent_Init()
        hagar_maxrockets = ReadByte();
 
        g_trueaim_minrange = ReadCoord();
+       g_balance_porto_secondary = ReadByte();
 
        if(!postinit)
                PostInit();
index afccaf45dc6ab6f217fb0503381ed1ca2a17148b..f1112b33aa47fbb574dea670058a1ef191dca75c 100644 (file)
@@ -12,6 +12,8 @@ void Porto_Draw()
 
        if(activeweapon != WEP_PORTO || spectatee_status || gametype == MAPINFO_TYPE_NEXBALL)
                return;
+       if(g_balance_porto_secondary)
+               return;
        if(intermission == 1)
                return;
        if(intermission == 2)
@@ -157,7 +159,7 @@ vector GetCurrentFov(float fov)
                
        makevectors(view_angles);
 
-       if(autocvar_cl_velocityzoom)
+       if(autocvar_cl_velocityzoom && autocvar_cl_velocityzoom_type) // _type = 0 disables velocity zoom too
        {
                switch(autocvar_cl_velocityzoom_type)
                {
@@ -1015,7 +1017,11 @@ void CSQC_UpdateView(float w, float h)
                                CSQC_common_hud();
 
                // crosshair goes VERY LAST
-               if(!scoreboard_active && !camera_active && intermission != 2 && spectatee_status != -1 && hud == HUD_NORMAL) {
+               if(!scoreboard_active && !camera_active && intermission != 2 && spectatee_status != -1 && hud == HUD_NORMAL) 
+               {
+                       if not(autocvar_crosshair_enabled) // main toggle for crosshair rendering
+                               return;
+                               
                        string wcross_style;
                        float wcross_alpha, wcross_resolution;
                        wcross_style = autocvar_crosshair;
@@ -1367,8 +1373,10 @@ void CSQC_UpdateView(float w, float h)
                                {
                                        vector wcross_color_old;
                                        wcross_color_old = wcross_color;
-                                       if(autocvar_crosshair_dot_color != "0")
+                                       
+                                       if((autocvar_crosshair_dot_color_custom) && (autocvar_crosshair_dot_color != "0"))
                                                wcross_color = stov(autocvar_crosshair_dot_color);
+                                               
                                        CROSSHAIR_DRAW(wcross_resolution * autocvar_crosshair_dot_size, "gfx/crosshairdot.tga", f * autocvar_crosshair_dot_alpha);
                                        // FIXME why don't we use wcross_alpha here?
                                        wcross_color = wcross_color_old;
index 5c05e2feec513b1438ac12a7d9f53ae30c1eee70..56963fcd17e3b90e2228cf260d904abb554525e5 100644 (file)
@@ -68,7 +68,7 @@ float autocvar_cl_stripcolorcodes;
 var float autocvar_cl_vehicle_spiderbot_cross_alpha = 0.6;
 var float autocvar_cl_vehicle_spiderbot_cross_size = 1;
 float autocvar_cl_velocityzoom;
-float autocvar_cl_velocityzoom_type;
+var float autocvar_cl_velocityzoom_type = 3;
 float autocvar_cl_velocityzoom_speed;
 float autocvar_cl_velocityzoom_time;
 string autocvar_cl_weaponpriority;
@@ -89,9 +89,11 @@ float autocvar_crosshair_color_per_weapon;
 float autocvar_crosshair_dot;
 float autocvar_crosshair_dot_alpha;
 string autocvar_crosshair_dot_color;
+var float autocvar_crosshair_dot_color_custom = 1;
 float autocvar_crosshair_dot_size;
 float autocvar_crosshair_effect_scalefade;
 float autocvar_crosshair_effect_speed;
+var float autocvar_crosshair_enabled = 1;
 float autocvar_crosshair_hitindication;
 string autocvar_crosshair_hitindication_color;
 float autocvar_crosshair_hitindication_speed;
@@ -374,6 +376,13 @@ var float autocvar_cl_eventchase_distance = 140;
 var float autocvar_cl_eventchase_speed = 1.3;
 float autocvar_cl_lerpexcess;
 string autocvar__togglezoom;
+float autocvar_cl_damageeffect;
+float autocvar_cl_damageeffect_ticrate;
+float autocvar_cl_damageeffect_bones;
+float autocvar_cl_damageeffect_distribute;
+float autocvar_cl_damageeffect_lifetime;
+float autocvar_cl_damageeffect_lifetime_min;
+float autocvar_cl_damageeffect_lifetime_max;
 float autocvar_cl_playerdetailreduction;
 float autocvar_cl_loddistance1 = 1024;
 float autocvar_cl_loddistance2 = 4096;
index 1e2d4fbd8c92a3e1cec90f6710e16ba9a1cb2b15..d4d1041c80b5b2bfb63cbf1208021b9cb3ad55af 100644 (file)
@@ -15,6 +15,8 @@ void Casing_Draw()
        }
 
        Movetype_Physics_MatchTicrate(autocvar_cl_casings_ticrate, autocvar_cl_casings_sloppy);
+       if(wasfreed(self))
+               return; // deleted by touch function
 
        self.renderflags = 0;
        self.alpha = bound(0, self.cnt - time, 1);
index 5910dba3e41d13f4cf4636e34cf1983de9b9f5ef..34c15837acc26fe3e9cade3ce1430bd218b9da87 100644 (file)
@@ -1,6 +1,119 @@
+void DamageEffect_Think()
+{
+       // if particle distribution is enabled, slow ticrate by total number of damages
+       if(autocvar_cl_damageeffect_distribute)
+               self.nextthink = time + autocvar_cl_damageeffect_ticrate * self.owner.total_damages;
+       else
+               self.nextthink = time + autocvar_cl_damageeffect_ticrate;
+
+       if(time >= self.cnt || !self.owner || !self.owner.modelindex || !self.owner.drawmask)
+       {
+               // time is up or the player got gibbed / disconnected
+               self.owner.total_damages = max(0, self.owner.total_damages - 1);
+               remove(self);
+               return;
+       }
+       if(self.state && !self.owner.csqcmodel_isdead)
+       {
+               // if the player was dead but is now alive, it means he respawned
+               // if so, clear his damage effects, or damages from his dead body will be copied back
+               self.owner.total_damages = max(0, self.owner.total_damages - 1);
+               remove(self);
+               return;
+       }
+       self.state = self.owner.csqcmodel_isdead;
+#ifdef COMPAT_XON050_ENGINE
+       if(self.owner.isplayermodel && (self.owner.entnum == player_localentnum || self.owner.entnum == spectatee_status) && !autocvar_chase_active)
+#else
+       if(self.owner.isplayermodel && (self.owner.entnum == player_localentnum) && !autocvar_chase_active)
+#endif
+               return; // if we aren't using a third person camera, hide our own effects
+
+       // now generate the particles
+       vector org;
+       org = gettaginfo(self, 0); // origin at attached location
+       pointparticles(self.team, org, '0 0 0', 1);
+}
+
+void DamageEffect(vector hitorg, float dmg, float type, float specnum)
+{
+       // particle effects for players and objects damaged by weapons (eg: flames coming out of victims shot with rockets)
+
+       float life, nearestbone;
+       string specstr, effectname;
+       entity e;
+
+       if(!autocvar_cl_damageeffect || autocvar_cl_gentle || autocvar_cl_gentle_damage)
+               return;
+       if(!self || !self.modelindex || !self.drawmask)
+               return;
+
+       // if this is a rigged mesh, the effect will show on the bone where damage was dealt
+       // we do this by choosing the skeletal bone closest to the impact, and attaching our entity to it
+       // if there's no skeleton, object origin will automatically be selected
+       FOR_EACH_TAG(self)
+       {
+               if(!tagnum)
+                       continue; // skip empty bones
+               // blacklist bones positioned outside the mesh, or the effect will be floating
+               // TODO: Do we have to do it this way? Why do these bones exist at all?
+               if(gettaginfo_name == "master" || gettaginfo_name == "knee_L" || gettaginfo_name == "knee_R" || gettaginfo_name == "leg_L" || gettaginfo_name == "leg_R")
+                       continue; // player model bone blacklist
+
+               // now choose the bone closest to impact origin
+               if(vlen(hitorg - gettaginfo(self, tagnum)) <= vlen(hitorg - gettaginfo(self, nearestbone)))
+                       nearestbone = tagnum;
+       }
+       gettaginfo(self, nearestbone); // set gettaginfo_name
+
+       // return if we reached our damage effect limit or damages are disabled
+       // TODO: When the limit is reached, it would be better if the oldest damage was removed instead of not adding a new one
+       if(nearestbone)
+       {
+               if(self.total_damages >= autocvar_cl_damageeffect_bones)
+                       return; // allow multiple damages on skeletal models
+       }
+       else
+       {
+               if(autocvar_cl_damageeffect < 2 || self.total_damages)
+                       return; // allow a single damage on non-skeletal models
+       }
+
+       life = bound(autocvar_cl_damageeffect_lifetime_min, dmg * autocvar_cl_damageeffect_lifetime, autocvar_cl_damageeffect_lifetime_max);
+       specstr = species_prefix(specnum);
+       type = DEATH_WEAPONOF(type);
+       e = get_weaponinfo(type);
+
+       effectname = strcat("damage_", e.netname);
+       
+       // if damage was dealt with a bullet weapon, our effect is blood
+       // since blood is species dependent, include the species tag
+       if(type == WEP_SHOTGUN || type == WEP_UZI || type == WEP_RIFLE)
+       {
+               if(self.isplayermodel)
+               {
+                       effectname = strcat(effectname, "_", specstr);
+                       effectname = substring(effectname, 0, strlen(effectname) - 1); // remove the _ symbol at the end of the species tag
+               }
+               else
+                       return; // objects don't bleed
+       }
+
+       e = spawn();
+       setmodel(e, "null"); // necessary to attach and read origin // samual: FIXME: this is weird, is there some better way to do this?
+       setattachment(e, self, gettaginfo_name); // attach to the given bone
+       e.classname = "damage";
+       e.owner = self;
+       e.cnt = time + life;
+       e.team = particleeffectnum(effectname);
+       e.think = DamageEffect_Think;
+       e.nextthink = time;
+       self.total_damages += 1;
+}
+
 void Ent_DamageInfo(float isNew)
 {
-       float dmg, rad, edge, thisdmg, forcemul;
+       float dmg, rad, edge, thisdmg, forcemul, species;
        vector force, thisforce;
        entity oldself;
 
@@ -18,6 +131,7 @@ void Ent_DamageInfo(float isNew)
        rad = ReadByte();
        edge = ReadByte();
        force = decompressShortVector(ReadShort());
+       species = ReadByte();
 
        if not(isNew)
                return;
@@ -72,140 +186,141 @@ void Ent_DamageInfo(float isNew)
 
                if(self.event_damage)
                        self.event_damage(thisdmg, w_deathtype, w_org, thisforce);
+
+               DamageEffect(w_org, thisdmg, w_deathtype, species);
        }
 
        self = oldself;
        
        if(DEATH_ISVEHICLE(w_deathtype))
        {
-           traceline(w_org - normalize(force) * 16, w_org + normalize(force) * 16, MOVE_NOMONSTERS, world);
-           if(trace_plane_normal != '0 0 0')       
-            w_backoff = trace_plane_normal;
-        else
-            w_backoff = -1 * normalize(w_org - (w_org + normalize(force) * 16));
-           
-           setorigin(self, w_org + w_backoff * 2); // for sound() calls
-           
-           switch(w_deathtype)
-           {            
-            case DEATH_VHCRUSH:
-                break;
-                
-            case DEATH_SBMINIGUN:
-                string _snd;
-                _snd = strcat("weapons/ric", ftos(1 + rint(random() * 2)), ".waw");
-                sound(self, CH_SHOTS, _snd, VOL_BASE, ATTN_NORM);
-                pointparticles(particleeffectnum("spiderbot_minigun_impact"), self.origin, w_backoff * 1000, 1);
-                break;
-            case DEATH_SBROCKET:
-                sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
-                pointparticles(particleeffectnum("spiderbot_rocket_explode"), self.origin, w_backoff * 1000, 1);
-                break;
-            case DEATH_SBBLOWUP:
-                sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_MIN);
-                pointparticles(particleeffectnum("explosion_big"), self.origin, w_backoff * 1000, 1);
-                break;
-                
-            case DEATH_WAKIGUN:
-                sound(self, CH_SHOTS, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM);
-                pointparticles(particleeffectnum("wakizashi_gun_impact"), self.origin, w_backoff * 1000, 1);
-                break;
-            case DEATH_WAKIROCKET:
-                sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
-                pointparticles(particleeffectnum("wakizashi_rocket_explode"), self.origin, w_backoff * 1000, 1);
-                break;
-            case DEATH_WAKIBLOWUP:
-                sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_MIN);
-                pointparticles(particleeffectnum("explosion_big"), self.origin, w_backoff * 1000, 1);
-                break;
-                
-            case DEATH_RAPTOR_CANNON:
-                sound(self, CH_SHOTS, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM);
-                pointparticles(particleeffectnum("raptor_cannon_impact"), self.origin, w_backoff * 1000, 1);
-                break;
-            case DEATH_RAPTOR_BOMB_SPLIT:
-                float i;
-                vector ang, vel;
-                for(i = 1; i < 4; ++i)
-                {
-                    vel = normalize(w_org - (w_org + normalize(force) * 16)) + randomvec() * 128;
-                    ang = vectoangles(vel);
-                    RaptorCBShellfragToss(w_org, vel, ang + '0 0 1' * (120 * i));
-                }
-                    
-                
-                sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
-                pointparticles(particleeffectnum("raptor_bomb_spread"), self.origin, w_backoff * 1000, 1);
-                break;
-            case DEATH_RAPTOR_BOMB:
-                sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
-                pointparticles(particleeffectnum("raptor_bomb_impact"), self.origin, w_backoff * 1000, 1);
-                break;
-            case DEATH_RAPTOR_DEATH:
-                sound(self, CH_SHOTS, "weapons/laserimpact.wav", VOL_BASE, ATTN_MIN);
-                pointparticles(particleeffectnum("explosion_big"), self.origin, w_backoff * 1000, 1);
-                break;
-           }
+               traceline(w_org - normalize(force) * 16, w_org + normalize(force) * 16, MOVE_NOMONSTERS, world);
+               if(trace_plane_normal != '0 0 0')
+                       w_backoff = trace_plane_normal;
+               else
+                       w_backoff = -1 * normalize(w_org - (w_org + normalize(force) * 16));
+               
+               setorigin(self, w_org + w_backoff * 2); // for sound() calls
+               
+               switch(w_deathtype)
+               {
+                       case DEATH_VHCRUSH:
+                               break;
+                               
+                       // spiderbot
+                       case DEATH_SBMINIGUN:
+                               string _snd;
+                               _snd = strcat("weapons/ric", ftos(1 + rint(random() * 2)), ".waw");
+                               sound(self, CH_SHOTS, _snd, VOL_BASE, ATTN_NORM);
+                               pointparticles(particleeffectnum("spiderbot_minigun_impact"), self.origin, w_backoff * 1000, 1);
+                               break;
+                       case DEATH_SBROCKET:
+                               sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
+                               pointparticles(particleeffectnum("spiderbot_rocket_explode"), self.origin, w_backoff * 1000, 1);
+                               break;
+                       case DEATH_SBBLOWUP:
+                               sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_MIN);
+                               pointparticles(particleeffectnum("explosion_big"), self.origin, w_backoff * 1000, 1);
+                               break;
+                               
+                       case DEATH_WAKIGUN:
+                               sound(self, CH_SHOTS, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM);
+                               pointparticles(particleeffectnum("wakizashi_gun_impact"), self.origin, w_backoff * 1000, 1);
+                               break;
+                       case DEATH_WAKIROCKET:
+                               sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
+                               pointparticles(particleeffectnum("wakizashi_rocket_explode"), self.origin, w_backoff * 1000, 1);
+                               break;
+                       case DEATH_WAKIBLOWUP:
+                               sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_MIN);
+                               pointparticles(particleeffectnum("explosion_big"), self.origin, w_backoff * 1000, 1);
+                               break;
+                               
+                       case DEATH_RAPTOR_CANNON:
+                               sound(self, CH_SHOTS, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM);
+                               pointparticles(particleeffectnum("raptor_cannon_impact"), self.origin, w_backoff * 1000, 1);
+                               break;
+                       case DEATH_RAPTOR_BOMB_SPLIT:
+                               float i;
+                               vector ang, vel;
+                               for(i = 1; i < 4; ++i)
+                               {
+                                       vel = normalize(w_org - (w_org + normalize(force) * 16)) + randomvec() * 128;
+                                       ang = vectoangles(vel);
+                                       RaptorCBShellfragToss(w_org, vel, ang + '0 0 1' * (120 * i));
+                               }
+                               sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
+                               pointparticles(particleeffectnum("raptor_bomb_spread"), self.origin, w_backoff * 1000, 1);
+                               break;
+                       case DEATH_RAPTOR_BOMB:
+                               sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
+                               pointparticles(particleeffectnum("raptor_bomb_impact"), self.origin, w_backoff * 1000, 1);
+                               break;
+                       case DEATH_RAPTOR_DEATH:
+                               sound(self, CH_SHOTS, "weapons/laserimpact.wav", VOL_BASE, ATTN_MIN);
+                               pointparticles(particleeffectnum("explosion_big"), self.origin, w_backoff * 1000, 1);
+                               break;
+               }
        }
        
        
        if(DEATH_ISTURRET(w_deathtype))
-       {           
-           string _snd;
-           traceline(w_org - normalize(force) * 16, w_org + normalize(force) * 16, MOVE_NOMONSTERS, world);
-           if(trace_plane_normal != '0 0 0')       
-            w_backoff = trace_plane_normal;
-        else
-            w_backoff = -1 * normalize(w_org - (w_org + normalize(force) * 16));
-           
-           setorigin(self, w_org + w_backoff * 2); // for sound() calls
-           
-           switch(w_deathtype)
-           {   
-             case DEATH_TURRET_EWHEEL:
-                sound(self, CH_SHOTS, "weapons/laserimpact.wav", VOL_BASE, ATTN_MIN);
-                pointparticles(particleeffectnum("laser_impact"), self.origin, w_backoff * 1000, 1);
-                break;
-             
-             case DEATH_TURRET_FLAC:
-                pointparticles(particleeffectnum("hagar_explode"), w_org, '0 0 0', 1);
-                _snd = strcat("weapons/hagexp", ftos(1 + rint(random() * 2)), ".waw");
-                sound(self, CH_SHOTS, _snd, VOL_BASE, ATTN_NORM);                
-                break;
-                
-             case DEATH_TURRET_MLRS:
-             case DEATH_TURRET_HK:
-             case DEATH_TURRET_WALKER_ROCKET:
-             case DEATH_TURRET_HELLION:
-                sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_MIN);
-                pointparticles(particleeffectnum("rocket_explode"), self.origin, w_backoff * 1000, 1);
-                break;
-             
-             case DEATH_TURRET_MACHINEGUN:
-             case DEATH_TURRET_WALKER_GUN:
-                _snd = strcat("weapons/ric", ftos(1 + rint(random() * 2)), ".waw");
-                sound(self, CH_SHOTS, _snd, VOL_BASE, ATTN_NORM);
-                pointparticles(particleeffectnum("machinegun_impact"), self.origin, w_backoff * 1000, 1);
-                break;
-                          
-             case DEATH_TURRET_PLASMA:
-                sound(self, CH_SHOTS, "weapons/electro_impact.wav", VOL_BASE, ATTN_MIN);
-                pointparticles(particleeffectnum("electro_impact"), self.origin, w_backoff * 1000, 1);
-                break;
-                          
-             case DEATH_TURRET_WALKER_MEELE:
-                sound(self, CH_SHOTS, "weapons/ric1.wav", VOL_BASE, ATTN_MIN);
-                pointparticles(particleeffectnum("TE_SPARK"), self.origin, w_backoff * 1000, 1);
-                break;
-
-             case DEATH_TURRET_PHASER:
-                break;
-                
-             case DEATH_TURRET_TESLA:
-                te_smallflash(self.origin);
-                break;
-
-        }        
+       {
+               string _snd;
+               traceline(w_org - normalize(force) * 16, w_org + normalize(force) * 16, MOVE_NOMONSTERS, world);
+               if(trace_plane_normal != '0 0 0')
+                       w_backoff = trace_plane_normal;
+               else
+                       w_backoff = -1 * normalize(w_org - (w_org + normalize(force) * 16));
+               
+               setorigin(self, w_org + w_backoff * 2); // for sound() calls
+               
+               switch(w_deathtype)
+               {   
+                        case DEATH_TURRET_EWHEEL:
+                               sound(self, CH_SHOTS, "weapons/laserimpact.wav", VOL_BASE, ATTN_MIN);
+                               pointparticles(particleeffectnum("laser_impact"), self.origin, w_backoff * 1000, 1);
+                               break;
+                        
+                        case DEATH_TURRET_FLAC:
+                               pointparticles(particleeffectnum("hagar_explode"), w_org, '0 0 0', 1);
+                               _snd = strcat("weapons/hagexp", ftos(1 + rint(random() * 2)), ".waw");
+                               sound(self, CH_SHOTS, _snd, VOL_BASE, ATTN_NORM);
+                               break;
+                               
+                        case DEATH_TURRET_MLRS:
+                        case DEATH_TURRET_HK:
+                        case DEATH_TURRET_WALKER_ROCKET:
+                        case DEATH_TURRET_HELLION:
+                               sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_MIN);
+                               pointparticles(particleeffectnum("rocket_explode"), self.origin, w_backoff * 1000, 1);
+                               break;
+                        
+                        case DEATH_TURRET_MACHINEGUN:
+                        case DEATH_TURRET_WALKER_GUN:
+                               _snd = strcat("weapons/ric", ftos(1 + rint(random() * 2)), ".waw");
+                               sound(self, CH_SHOTS, _snd, VOL_BASE, ATTN_NORM);
+                               pointparticles(particleeffectnum("machinegun_impact"), self.origin, w_backoff * 1000, 1);
+                               break;
+                                                 
+                        case DEATH_TURRET_PLASMA:
+                               sound(self, CH_SHOTS, "weapons/electro_impact.wav", VOL_BASE, ATTN_MIN);
+                               pointparticles(particleeffectnum("electro_impact"), self.origin, w_backoff * 1000, 1);
+                               break;
+                                                 
+                        case DEATH_TURRET_WALKER_MEELE:
+                               sound(self, CH_SHOTS, "weapons/ric1.wav", VOL_BASE, ATTN_MIN);
+                               pointparticles(particleeffectnum("TE_SPARK"), self.origin, w_backoff * 1000, 1);
+                               break;
+
+                        case DEATH_TURRET_PHASER:
+                               break;
+                               
+                        case DEATH_TURRET_TESLA:
+                               te_smallflash(self.origin);
+                               break;
+
+               }
        }
        
        // TODO spawn particle effects and sounds based on w_deathtype
diff --git a/qcsrc/client/damage.qh b/qcsrc/client/damage.qh
new file mode 100644 (file)
index 0000000..23982f1
--- /dev/null
@@ -0,0 +1 @@
+.float total_damages; // number of effects which currently are attached to a player
\ No newline at end of file
index 6f6316bec1d4c46e2fd474e874316b8563f0af29..22825bc4f38d4912b70c51922098c20213308581 100644 (file)
@@ -115,6 +115,7 @@ void TossGib (string mdlname, vector safeorg, vector org, vector vconst, vector
 
        // TODO remove some gibs according to cl_nogibs
        gib = RubbleNew("gib");
+       gib.classname = "gib";
        gib.move_movetype = MOVETYPE_BOUNCE;
        gib.gravity = 1;
        gib.solid = SOLID_CORPSE;
index a33570a2f9c3291b7402ea61a7d9eb6a39914e9a..972efb6a0ae5df9cbf5d777507a3bd6af53a980e 100644 (file)
@@ -27,6 +27,8 @@ command/cl_cmd.qh
 
 autocvars.qh
 
+damage.qh
+
 ../csqcmodellib/interpolate.qh
 teamradar.qh
 hud.qh
index e47a28369f783589cfae824b6b603a61e0b91a03..4e73886d3c98cd970066fbe4099790a4566e7114 100644 (file)
@@ -140,6 +140,7 @@ string MapInfo_ListAllowedMaps(float pFlagsRequired, float pFlagsForbidden);
 string MapInfo_ListAllAllowedMaps(float pFlagsRequired, float pFlagsForbidden);
 
 // gets a gametype from a string
+string _MapInfo_GetDefaultEx(float t);
 float MapInfo_Type_FromString(string t);
 string MapInfo_Type_ToString(float t);
 string MapInfo_Type_ToText(float t);
index 09a58c0997bc9a312b3cdd12307e814200562453..23354397aacfd044f30d1ea744d64211fc1cd922 100644 (file)
@@ -1580,6 +1580,10 @@ void check_unacceptable_compiler_bugs()
        tokenize_console("foo bar");
        if(strcat(argv(0), substring("foo bar", 4, 7 - argv_start_index(1))) == "barbar")
                error("fteqcc bug introduced with revision 3178 detected. Please upgrade fteqcc to a later revision, downgrade fteqcc to revision 3177, or pester Spike until he fixes it. You can set _allow_unacceptable_compiler_bugs 1 to skip this check, but expect stuff to be horribly broken then.");
+
+       string s = "";
+       if not(s)
+               error("The empty string counts as false. We do not want that!");
 }
 
 float compressShotOrigin(vector v)
@@ -2213,6 +2217,22 @@ float ReadApproxPastTime()
 }
 #endif
 
+#ifndef MENUQC
+.float skeleton_bones_index;
+void Skeleton_SetBones(entity e)
+{
+       // set skeleton_bones to the total number of bones on the model
+       if(e.skeleton_bones_index == e.modelindex)
+               return; // same model, nothing to update
+
+       float skelindex;
+       skelindex = skel_create(e.modelindex);
+       e.skeleton_bones = skel_get_numbones(skelindex);
+       skel_delete(skelindex);
+       e.skeleton_bones_index = e.modelindex;
+}
+#endif
+
 string to_execute_next_frame;
 void execute_next_frame()
 {
index 485e190b9e47b0550a4e5cbaf3e809357f7548b8..5685f4db27d42ec177e03e666a6939c2eb8f8489 100644 (file)
@@ -291,6 +291,12 @@ float InterpretBoolean(string input);
 // generic shutdown handler
 void Shutdown();
 
+#ifndef MENUQC
+.float skeleton_bones;
+void Skeleton_SetBones(entity e);
+// loops through the tags of model v using counter tagnum
+#define FOR_EACH_TAG(v) float tagnum; Skeleton_SetBones(v); for(tagnum = 0; tagnum < v.skeleton_bones; tagnum++, gettaginfo(v, tagnum))
+#endif
 #ifdef SVQC
 void WriteApproxPastTime(float dst, float t);
 #endif
index 623fb01c781a6db13f031fb69c6a16dcb3c307e4..2d376d4fe41cf0f16832856850e3239cda1b72f5 100644 (file)
@@ -1077,6 +1077,15 @@ float MOVETYPE_FLY_WORLDONLY = 33;
 //description:
 //like MOVETYPE_FLY, but does all traces with MOVE_WORLDONLY, and is ignored by MOVETYPE_PUSH. Should only be combined with SOLID_NOT and SOLID_TRIGGER.
 
+//DP_PRECACHE_PIC_FLAGS
+//idea: divVerent
+//darkplaces implementation: divVerent
+//constant definitions:
+float PRECACHE_PIC_FROMWAD = 1; // this one actually is part of EXT_CSQC
+float PRECACHE_PIC_NOTPERSISTENT = 2; // picture may get deallocated when unused
+float PRECACHE_PIC_MIPMAP = 8; // mipmap the texture for possibly better downscaling at memory expense
+//notes: these constants are given as optional second argument to precache_pic()
+
 //DP_QC_TRACE_MOVETYPE_WORLDONLY
 //idea: LordHavoc
 //darkplaces implementation: LordHavoc
@@ -1410,3 +1419,10 @@ float trace_networkentity;
 const float RF_FULLBRIGHT      = 256;
 const float RF_NOSHADOW        = 512;
 float RF_DYNAMICMODELLIGHT = 8192;
+
+float gettaginfo_parent;
+string gettaginfo_name;
+vector gettaginfo_offset;
+vector gettaginfo_forward;
+vector gettaginfo_right;
+vector gettaginfo_up;
index 74bfdc8602384bd24bdbce931a55f51e357a599c..ad8666ed3548786759d2faeb6b9c59dcd5711377 100644 (file)
@@ -293,7 +293,7 @@ void        WriteEntity(entity data, float dest, float desto) = #408;
 //////////////////////////////////////////////////
 
 float  iscachedpic(string name)        = #451;
-string precache_pic(string name)       = #452;
+string precache_pic(string name, ...)  = #452;
 void   freepic(string name)            = #453;
 
 float  drawcharacter(vector position, float character, vector scale, vector rgb, float alpha, float flag) = #454;
@@ -404,6 +404,15 @@ float(string s1, string s2, float len) strncmp = #228;
 float(string s1, string s2) strcasecmp = #229;
 float(string s1, string s2, float len) strncasecmp = #230;
 
+//DP_PRECACHE_PIC_FLAGS
+//idea: divVerent
+//darkplaces implementation: divVerent
+//constant definitions:
+float PRECACHE_PIC_FROMWAD = 1; // this one actually is part of EXT_CSQC
+float PRECACHE_PIC_NOTPERSISTENT = 2; // picture may get deallocated when unused
+float PRECACHE_PIC_MIPMAP = 8; // mipmap the texture for possibly better downscaling at memory expense
+//notes: these constants are given as optional second argument to precache_pic()
+
 //DP_QC_CRC16
 //idea: div0
 //darkplaces implementation: div0
index c0a9780471e3689ca0f1490c51459d9ce05c84ed..f838257c564d9c7899b694da1c73ecec1254b40c 100644 (file)
@@ -34,7 +34,7 @@
 #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_user.c"
 #include "xonotic/dialog_settings_misc.c"
 #include "xonotic/dialog_multiplayer.c"
 #include "xonotic/dialog_multiplayer_playersetup.c"
 #include "xonotic/dialog_singleplayer_winner.c"
 #include "xonotic/dialog_credits.c"
 #include "xonotic/credits.c"
+#include "xonotic/dialog_multiplayer_playersetup_crosshair.c"
+#include "xonotic/dialog_multiplayer_playersetup_hud.c"
+#include "xonotic/dialog_multiplayer_playersetup_hudconfirm.c"
+#include "xonotic/dialog_multiplayer_playersetup_model.c"
+#include "xonotic/dialog_multiplayer_playersetup_view.c"
 #include "xonotic/dialog_multiplayer_playersetup_weapons.c"
 #include "xonotic/weaponslist.c"
-#include "xonotic/dialog_multiplayer_playersetup_waypoint.c"
 #include "xonotic/dialog_multiplayer_demo.c"
 #include "xonotic/demolist.c"
 #include "xonotic/colorpicker.c"
index 7fe4aea3bdc38e57c99eb976b90326f8658198ca..1f223f281affc2bc9ba5a42e90c1b3b3160f8981 100644 (file)
@@ -59,6 +59,12 @@ string draw_PreloadPicture(string pic)
        return precache_pic(pic);
 }
 
+string draw_PreloadPictureWithFlags(string pic, float f)
+{
+       pic = draw_UseSkinFor(pic);
+       return precache_pic(pic, f);
+}
+
 void draw_Picture(vector theOrigin, string pic, vector theSize, vector theColor, float theAlpha)
 {
        if(theSize_x == 0 || theSize_y <= 0) // no default sizing please
index 0f5811713d6f3c1b66f3f38ae2742d3bb2b810ed..301a5f440f80fbf768c77182b3f24e2207c64f5a 100644 (file)
@@ -15,6 +15,7 @@ void draw_setMousePointer(string pic, vector theSize, vector theOffset);
 void draw_drawMousePointer(vector where);
 
 string draw_PreloadPicture(string pic);
+string draw_PreloadPictureWithFlags(string pic, float f);
 void draw_ButtonPicture(vector theOrigin, string pic, vector theSize, vector theColor, float theAlpha);
 void draw_VertButtonPicture(vector theOrigin, string pic, vector theSize, vector theColor, float theAlpha);
 void draw_BorderPicture(vector theOrigin, string pic, vector theSize, vector theColor, float theAlpha, vector theBorderSize);
index 52b960e456c5893fb2bebcc6c1e146169fa44c3d..d055b1a051d535dbfd18736751eb2357c25003a0 100644 (file)
@@ -44,8 +44,41 @@ void Item_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOr
        me.size = absSize;
 }
 
+float autocvar_menu_showboxes;
 void Item_draw(entity me)
 {
+       if(autocvar_menu_showboxes)
+       {
+               vector rgb = '1 0 1';
+               float a = fabs(autocvar_menu_showboxes);
+
+               // don't draw containers and border images
+               if(me.instanceOfContainer || me.instanceOfBorderImage)
+               {
+                       rgb = '0 0 0';
+                       a = 0;
+               }
+
+#if 0
+               // hack to detect multi drawing
+               float r = random() * 3;
+               if(r >= 2)
+                       rgb = '1 0 0';
+               else if(r >= 1)
+                       rgb = '0 1 0';
+               else
+                       rgb = '0 0 1';
+#endif
+               if(autocvar_menu_showboxes < 0)
+               {
+                       draw_Fill('0 0 0', '0.5 0.5 0', rgb, a);
+                       draw_Fill('0.5 0.5 0', '0.5 0.5 0', rgb, a);
+               }
+               if(autocvar_menu_showboxes > 0)
+               {
+                       draw_Fill('0 0 0', '1 1 0', rgb, a);
+               }
+       }
 }
 
 void Item_showNotify(entity me)
index bdeed2bb16dd941b2c4ec008e63e5448b77f2c01..b5dc52d05107eeacccec166b60cdd0c37f424bf8 100644 (file)
@@ -85,5 +85,9 @@ void BorderImage_draw(entity me)
                        draw_fontscale = df;
                }
        }
+       else
+       {
+               SUPER(BorderImage).draw(me);
+       }
 }
 #endif
index 71ca11c7c3a439327f888e8edc605b7d6fa36e35..20bc4ab9c911459c109cb7ebf57001b108a00a46 100644 (file)
@@ -158,8 +158,6 @@ void Button_draw(entity me)
 
        draw_alpha = save;
 
-       SUPER(Button).draw(me);
-
        if(me.clickTime > 0 && me.clickTime <= frametime)
        {
                // keyboard click timer expired? Fire the event then.
@@ -167,5 +165,7 @@ void Button_draw(entity me)
                        me.onClick(me, me.onClickEntity);
        }
        me.clickTime -= frametime;
+
+       SUPER(Button).draw(me);
 }
 #endif
index 5ae92d6122f097bf2d9b4e6060f6377d27229cad..94f67ba709ef7422b1d0b3a76e488b1b9f8f5acf 100644 (file)
@@ -42,7 +42,7 @@ void CheckBox_draw(entity me)
        }
        else
                me.srcSuffix = (me.checked ? "1" : "0");
-       SUPER(CheckBox).draw(me);
        me.pressed = s;
+       SUPER(CheckBox).draw(me);
 }
 #endif
index 5e924a0eebf7726cc10825984f6e3563e352b312..0e8fa9ea0a6d1d627e780759e33edb3dac1fa557 100644 (file)
@@ -177,6 +177,8 @@ void Container_draw(entity me)
                e.draw(e);
                me.leaveSubitem(me);
        }
+
+       SUPER(Container).draw(me);
 }
 
 void Container_focusLeave(entity me)
index a47e5d6b4d89df9b42086d692fc9d24d5022d17b..5a69c3b87c17ffa7e032ea2ef0b0768a486cd361 100644 (file)
@@ -48,6 +48,7 @@ void Gecko_draw(entity me)
                fontsize_z = 0.0;
                draw_Text( '0 0 0', _("Browser not initialized!"), fontsize, '1 1 1', 1.0, 0 );
        }
+       SUPER(Gecko).draw(me);
 }
 
 float Gecko_keyDown(entity me, float scan, float ascii, float shift)
index c64561b39b4d0e2f625cab044956fae9408db48c..a7e63b0e116f88c2c1327794a436a7a03fda599b 100644 (file)
@@ -25,6 +25,7 @@ void Image_configureImage(entity me, string path)
 void Image_draw(entity me)
 {
        draw_Picture(me.imgOrigin, me.src, me.imgSize, me.color, 1);
+       SUPER(Image).draw(me);
 }
 void Image_updateAspect(entity me)
 {
index 5b07afd4eef2997d11b9ec5057379fd5ec89d478..13351cfd32c8f2586a37157f2f0e4677c6a42818 100644 (file)
@@ -287,11 +287,14 @@ void InputBox_draw(entity me)
        }
        else
                draw_Text(me.realOrigin - eX * me.scrollPos, me.text, me.realFontSize, '1 1 1', 1, 0);
-               // skipping SUPER(InputBox).draw(me);
+
        if(!me.focused || (time - me.lastChangeTime) < floor(time - me.lastChangeTime) + 0.5)
                draw_Text(me.realOrigin + eX * (cursorPosInWidths - me.scrollPos), CURSOR, me.realFontSize, '1 1 1', 1, 0);
 
        draw_ClearClip();
+
+       // skipping SUPER(InputBox).draw(me);
+       Item_draw(me);
 }
 
 void InputBox_showNotify(entity me)
index e3a6bee409897fb494704607e93db32da15af739..85df8a7179d1b909da51bd0e20e96b0862d0a587 100644 (file)
@@ -169,5 +169,7 @@ void Label_draw(entity me)
 
                        draw_fontscale = dfs;
                }
+
+       SUPER(Label).draw(me);
 }
 #endif
index 9664e93765575014aab68a8198ee3fc22bb3ca14..4f8dca622c239e0294ba023b68f8101f737c6f15 100644 (file)
@@ -288,6 +288,10 @@ void ListBox_draw(entity me)
                me.drawListBoxItem(me, i, absSize, (me.selectedItem == i));
        }
        draw_ClearClip();
+
+       draw_shift = oldshift;
+       draw_scale = oldscale;
+       SUPER(ListBox).draw(me);
 }
 
 void ListBox_clickListBoxItem(entity me, float i, vector where)
index c097f99b963833366276363fffc9aebebcf8d3c5..96793fb7749c3a476b5989de8dfcdda6cfc82150 100644 (file)
@@ -54,6 +54,12 @@ void m_init()
        // needs to be done so early because of the constants they create
        RegisterWeapons();
        RegisterGametypes();
+
+       float ddsload = cvar("r_texture_dds_load");
+       float texcomp = cvar("gl_texturecompression");
+       updateCompression();
+       if(ddsload != cvar("r_texture_dds_load") || texcomp != cvar("gl_texturecompression"))
+               localcmd("\nr_restart\n");
 }
 
 float MENU_ASPECT = 1.25; // 1280x1024
index e8cfba3689a7bcca7ed0fe1fa1eaffa4549dd904..3eb91ee9d4038ec1c21d1b2f13453ff184c75670 100644 (file)
@@ -64,9 +64,13 @@ SKINBEGIN
        SKINVECTOR(COLOR_DIALOG_SINGLEPLAYER, '1 1 0.7');
        SKINVECTOR(COLOR_DIALOG_CREDITS, '0.7 0.7 1');
        SKINVECTOR(COLOR_DIALOG_WEAPONS, '1 0.7 0.7');
-       SKINVECTOR(COLOR_DIALOG_WAYPOINTS, '0.7 0.7 1');
+       SKINVECTOR(COLOR_DIALOG_VIEW, '1 0.7 0.7');
+       SKINVECTOR(COLOR_DIALOG_MODEL, '1 0.7 0.7');
+       SKINVECTOR(COLOR_DIALOG_CROSSHAIR, '1 0.7 0.7');
+       SKINVECTOR(COLOR_DIALOG_HUD, '1 0.7 0.7');
        SKINVECTOR(COLOR_DIALOG_SERVERINFO, '0.7 0.7 1');
        SKINVECTOR(COLOR_DIALOG_CVARS, '1 0 0');
+       SKINVECTOR(COLOR_DIALOG_HUDCONFIRM, '1 0 0');
 
        // nexposee positions of windows (they are the scale transformation
        // centers, NOT the actual positions of the windows!)
@@ -142,8 +146,8 @@ SKINBEGIN
        SKINFLOAT(ALPHA_CVARLIST_SAVED, 1);
        SKINFLOAT(ALPHA_CVARLIST_TEMPORARY, 0.7);
        SKINVECTOR(COLOR_CVARLIST_CHANGED, '1 1 0.4');
-       SKINVECTOR(COLOR_CVARLIST_REVERTBUTTON, '1 0 0');
        SKINVECTOR(COLOR_CVARLIST_UNCHANGED, '1 1 1');
+       SKINVECTOR(COLOR_CVARLIST_CONTROLS, '1 0 0');
 
        // item: dialog
        SKINSTRING(GFX_DIALOGBORDER, "border");
index f57c768a5fcb3d80ce4da5bc16d65845fcb5164a..c3593056c284d6f75339a8c93c180cbcb665170c 100644 (file)
@@ -5,6 +5,8 @@ CLASS(XonoticColorpickerString) EXTENDS(Image)
        METHOD(XonoticColorpickerString, mouseRelease, float(entity, vector))
        METHOD(XonoticColorpickerString, mouseDrag, float(entity, vector))
        ATTRIB(XonoticColorpickerString, cvarName, string, string_null)
+       METHOD(XonoticColorPickerString, loadCvars, void(entity))
+       METHOD(XonoticColorPickerString, saveCvars, void(entity))
        ATTRIB(XonoticColorpickerString, prevcoords, vector, '0 0 0')
        ATTRIB(XonoticColorpickerString, image, string, SKINGFX_COLORPICKER)
        ATTRIB(XonoticColorpickerString, imagemargin, vector, SKINMARGIN_COLORPICKER)
@@ -28,10 +30,45 @@ void XonoticColorpickerString_configureXonoticColorpickerString(entity me, strin
 {
        me.cvarName = theCvar;
        me.configureImage(me, me.image);
-       if(cvar_string(theCvar) != "")
-               me.prevcoords = color_hslimage(stov(cvar_string(theCvar)), me.imagemargin);
-       else // use default
-               me.prevcoords = color_hslimage(stov(cvar_string(theDefaultCvar)), me.imagemargin);
+       if(theCvar)
+       {
+               me.cvarName = theCvar;
+               me.tooltip = getZonedTooltipForIdentifier(theCvar);
+               me.loadCvars(me);
+       }
+}
+
+void XonoticColorPickerString_loadCvars(entity me)
+{
+       if not(me.cvarName)
+               return;
+
+       if(substring(me.cvarName, -1, 1) == "_")
+       {
+               me.prevcoords = color_hslimage(
+                       eX * cvar(strcat(me.cvarName, "red")) +
+                       eY * cvar(strcat(me.cvarName, "green")) +
+                       eZ * cvar(strcat(me.cvarName, "blue")),
+                       me.imagemargin);
+       }
+       else
+               me.prevcoords = color_hslimage(stov(cvar_string(me.cvarName)), me.imagemargin);
+}
+
+void XonoticColorPickerString_saveCvars(entity me)
+{
+       if not(me.cvarName)
+               return;
+
+       if(substring(me.cvarName, -1, 1) == "_")
+       {
+               vector v = hslimage_color(me.prevcoords, me.imagemargin);
+               cvar_set(strcat(me.cvarName, "red"), ftos(v_x));
+               cvar_set(strcat(me.cvarName, "green"), ftos(v_y));
+               cvar_set(strcat(me.cvarName, "blue"), ftos(v_z));
+       }
+       else
+               cvar_set(me.cvarName, sprintf("%v", hslimage_color(me.prevcoords, me.imagemargin)));
 }
 
 float XonoticColorpickerString_mousePress(entity me, vector coords)
@@ -52,6 +89,7 @@ float XonoticColorpickerString_mouseDrag(entity me, vector coords)
        if(coords_y <= 1 - margin_y)
        {
                me.prevcoords = coords;
+               me.saveCvars(me);
        }
 
        return 1;
@@ -77,10 +115,8 @@ void XonoticColorpickerString_draw(entity me)
        sz = globalToBoxSize(sz, draw_scale);
 
        if(!me.disabled)
-       {
-               cvar_set(me.cvarName, sprintf("%v", hslimage_color(me.prevcoords, me.imagemargin)));
                draw_Picture(me.imgOrigin + me.prevcoords - 0.5 * sz, strcat(me.src, "_selected"), sz, '1 1 1', 1);
-       }
+
        draw_alpha = save;
 }
 #endif
index 9456cd66da2d2f22fdb48dd0db6d9560e1ccc086..0b501f5b642dfa181ff11d6b164ba51812949664 100644 (file)
@@ -118,10 +118,11 @@ void XonoticCrosshairButton_draw(entity me)
 
        draw_Picture('0.5 0.5 0' - 0.5 * sz, me.src3, sz, rgb, a);
        if(cvar("crosshair_dot"))
-    {
-        if(cvar_string("crosshair_dot_color") != "0")
-            rgb = stov(cvar_string("crosshair_dot_color"));
+       {
+               if(cvar("crosshair_dot_color_custom") && (cvar_string("crosshair_dot_color") != "0"))
+                       rgb = stov(cvar_string("crosshair_dot_color"));
+                       
                draw_Picture('0.5 0.5 0' - 0.5 * sz * cvar("crosshair_dot_size"), me.src4, sz * cvar("crosshair_dot_size"), rgb, a * cvar("crosshair_dot_alpha"));
-    }
+       }
 }
 #endif
index c16e4ae0008efe802b593f6be86b6e1d4b3d1569..2daed8bcbca504b33ea1993b954680304b5915c9 100644 (file)
@@ -1,26 +1,28 @@
 #ifdef INTERFACE
 CLASS(XonoticDemoList) EXTENDS(XonoticListBox)
-    METHOD(XonoticDemoList, configureXonoticDemoList, void(entity))
-    ATTRIB(XonoticDemoList, rowsPerItem, float, 1)
-    METHOD(XonoticDemoList, resizeNotify, void(entity, vector, vector, vector, vector))
-    METHOD(XonoticDemoList, drawListBoxItem, void(entity, float, vector, float))
-    METHOD(XonoticDemoList, getDemos, void(entity))
-    METHOD(XonoticDemoList, startDemo, void(entity))    
-    METHOD(XonoticDemoList, demoName, string(entity, float))
-    METHOD(XonoticDemoList, clickListBoxItem, void(entity, float, vector))
-    METHOD(XonoticDemoList, keyDown, float(entity, float, float, float))
-    METHOD(XonoticDemoList, destroy, void(entity))
-    METHOD(XonoticDemoList, showNotify, void(entity))
-    ATTRIB(XonoticDemoList, listDemo, float, -1)
-    ATTRIB(XonoticDemoList, realFontSize, vector, '0 0 0')
-    ATTRIB(XonoticDemoList, columnNameOrigin, float, 0)
-    ATTRIB(XonoticDemoList, columnNameSize, float, 0)
-    ATTRIB(XonoticDemoList, realUpperMargin, float, 0)
-    ATTRIB(XonoticDemoList, origin, vector, '0 0 0')
-    ATTRIB(XonoticDemoList, itemAbsSize, vector, '0 0 0')
-    ATTRIB(XonoticDemoList, lastClickedDemo, float, -1)
-    ATTRIB(XonoticDemoList, lastClickedTime, float, 0)
-    ATTRIB(XonoticDemoList, filterString, string, string_null)    
+       METHOD(XonoticDemoList, configureXonoticDemoList, void(entity))
+       ATTRIB(XonoticDemoList, rowsPerItem, float, 1)
+       METHOD(XonoticDemoList, resizeNotify, void(entity, vector, vector, vector, vector))
+       METHOD(XonoticDemoList, drawListBoxItem, void(entity, float, vector, float))
+       METHOD(XonoticDemoList, getDemos, void(entity))
+       METHOD(XonoticDemoList, startDemo, void(entity))        
+       METHOD(XonoticDemoList, demoName, string(entity, float))
+       METHOD(XonoticDemoList, clickListBoxItem, void(entity, float, vector))
+       METHOD(XonoticDemoList, keyDown, float(entity, float, float, float))
+       METHOD(XonoticDemoList, destroy, void(entity))
+       METHOD(XonoticDemoList, showNotify, void(entity))
+       
+       ATTRIB(XonoticDemoList, listDemo, float, -1)
+       ATTRIB(XonoticDemoList, realFontSize, vector, '0 0 0')
+       ATTRIB(XonoticDemoList, columnNameOrigin, float, 0)
+       ATTRIB(XonoticDemoList, columnNameSize, float, 0)
+       ATTRIB(XonoticDemoList, realUpperMargin, float, 0)
+       ATTRIB(XonoticDemoList, origin, vector, '0 0 0')
+       ATTRIB(XonoticDemoList, itemAbsSize, vector, '0 0 0')
+       
+       ATTRIB(XonoticDemoList, lastClickedDemo, float, -1)
+       ATTRIB(XonoticDemoList, lastClickedTime, float, 0)
+       ATTRIB(XonoticDemoList, filterString, string, string_null)      
 ENDCLASS(XonoticDemoList)
 
 entity makeXonoticDemoList();
@@ -33,134 +35,136 @@ void DemoList_Filter_Change(entity box, entity me);
 
 entity makeXonoticDemoList()
 {
-    entity me;
-    me = spawnXonoticDemoList();
-    me.configureXonoticDemoList(me);
-    return me;
+       entity me;
+       me = spawnXonoticDemoList();
+       me.configureXonoticDemoList(me);
+       return me;
 }
 
 void XonoticDemoList_configureXonoticDemoList(entity me)
 {
-    me.configureXonoticListBox(me);
-    me.getDemos(me);    
+       me.configureXonoticListBox(me);
+       me.getDemos(me);        
 }
 
 string XonoticDemoList_demoName(entity me, float i )
 {
-    string s;
-    s = search_getfilename(me.listDemo, i);
-    s = substring(s, 6, strlen(s) - 6 - 4);  // demos/, .dem
-    return s;
+       string s;
+       s = search_getfilename(me.listDemo, i);
+       s = substring(s, 6, strlen(s) - 6 - 4);  // demos/, .dem
+       return s;
 }
 
 
 void XonoticDemoList_getDemos(entity me)
 {
-    string s;
-    
-    if(me.filterString)
-       //subdirectory in filterString allowed    
-       s=strcat("demos/*", me.filterString, "*.dem");          
-    else
-       s="demos/*.dem";
+       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");    
+       //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);                          
+               
+       me.listDemo = search_begin(s, FALSE, TRUE);
+
+       if(me.listDemo < 0)
+               me.nItems=0;
+       else
+               me.nItems=search_getsize(me.listDemo);                          
 }
 
 void XonoticDemoList_destroy(entity me)
 {
-    search_end(me.listDemo);
+       search_end(me.listDemo);
 }
 
 void XonoticDemoList_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
 {
-    me.itemAbsSize = '0 0 0';
-    SUPER(XonoticDemoList).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
+       me.itemAbsSize = '0 0 0';
+       SUPER(XonoticDemoList).resizeNotify(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.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;
+       me.columnNameOrigin = me.realFontSize_x;
+       me.columnNameSize = 1 - 2 * me.realFontSize_x;
 }
 
 void XonoticDemoList_drawListBoxItem(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);
+       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);              
+       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 XonoticDemoList_showNotify(entity me)
 {
-    me.getDemos(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;
+       if(me.filterString)
+               strunzone(me.filterString);
+       
+       if(box.text != "")
+               me.filterString = strzone(box.text);
+       else
+               me.filterString = string_null;
                
-    me.getDemos(me);
+       me.getDemos(me);
 }
 
 void XonoticDemoList_startDemo(entity me)
 {
-    string s;
-    s = me.demoName(me,me.selectedItem);
-    localcmd("playdemo demos/", s, ".dem\nwait\ntogglemenu\n");        
+       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);
+       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");        
+       string s;
+       s = me.demoName(me,me.selectedItem);
+       localcmd("timedemo \"demos/", s, ".dem\" \nwait \ntogglemenu\n");       
 }
 
 void XonoticDemoList_clickListBoxItem(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;
+       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 XonoticDemoList_keyDown(entity me, float scan, float ascii, float shift)
 {
-    if(scan == K_ENTER || scan == K_KP_ENTER) {
-        me.startDemo(me);
-        return 1;
-    }
-    else
-        return SUPER(XonoticDemoList).keyDown(me, scan, ascii, shift);
+       if(scan == K_ENTER || scan == K_KP_ENTER) {
+               me.startDemo(me);
+               return 1;
+       }
+       else
+               return SUPER(XonoticDemoList).keyDown(me, scan, ascii, shift);
 }
 #endif
 
index 6568a7198f301ef4ad9571fe9521ea8af0b6e3a3..95273901a264349f6ccc043eeef1ad1da8821739 100644 (file)
@@ -3,9 +3,9 @@ CLASS(XonoticFirstRunDialog) EXTENDS(XonoticRootDialog)
        METHOD(XonoticFirstRunDialog, fill, void(entity)) // to be overridden by user to fill the dialog with controls
        ATTRIB(XonoticFirstRunDialog, title, string, _("Welcome"))
        ATTRIB(XonoticFirstRunDialog, color, vector, SKINCOLOR_DIALOG_FIRSTRUN)
-       ATTRIB(XonoticFirstRunDialog, intendedWidth, float, 0.6)
-       ATTRIB(XonoticFirstRunDialog, rows, float, 15)
-       ATTRIB(XonoticFirstRunDialog, columns, float, 3)
+       ATTRIB(XonoticFirstRunDialog, intendedWidth, float, 0.7)
+       ATTRIB(XonoticFirstRunDialog, rows, float, 16)
+       ATTRIB(XonoticFirstRunDialog, columns, float, 6)
        ATTRIB(XonoticFirstRunDialog, name, string, "FirstRun")
        ATTRIB(XonoticFirstRunDialog, playerNameLabel, entity, NULL)
        ATTRIB(XonoticFirstRunDialog, playerNameLabelAlpha, float, 0)
@@ -19,8 +19,13 @@ float CheckFirstRunButton(entity me)
 {
        if(cvar_string("_cl_name") != "Player")
                return 1;
+               
        if(cvar_string("prvm_language") != prvm_language)
                return 1; // OK will then reopen the dialog in another language
+               
+       if(cvar_string("cl_allow_uid2name") != "-1")
+               return 1; 
+               
        return 0;
 }
 
@@ -30,43 +35,56 @@ void XonoticFirstRunDialog_fill(entity me)
        entity label, box;
 
        me.TR(me);
-               me.TD(me, 2, 3, e = makeXonoticTextLabel(0, _("Welcome to Xonotic, please select your language preference and enter your player name to get started.  You can change these options later through the menu system.")));
+       me.TR(me);
+               me.TDempty(me, 1);
+               me.TD(me, 2, 4, e = makeXonoticTextLabel(0, _("Welcome to Xonotic, please select your language preference and enter your player name to get started.  You can change these options later through the menu system.")));
                e.allowWrap = 1;
        me.TR(me);
 
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Text language:")));
-       me.TR(me);
-               me.TD(me, 3, 3, e = makeXonoticLanguageList());
-                       e.name = "languageselector_firstrun";
-                       e.doubleClickCommand = "saveconfig; menu_restart; togglemenu";
-       me.TR(me);
-       me.TR(me);
-
        me.TR(me);
                me.TD(me, 1, 0.5, me.playerNameLabel = makeXonoticTextLabel(0, _("Name:")));
                        me.playerNameLabelAlpha = me.playerNameLabel.alpha;
-               me.TD(me, 1, 2.5, label = makeXonoticTextLabel(0, string_null));
+               me.TD(me, 1, 3.25, label = makeXonoticTextLabel(0, string_null));
                        label.allowCut = 1;
                        label.allowColors = 1;
                        label.alpha = 1;
        me.TR(me);
-               me.TD(me, 1, 3.0, box = makeXonoticInputBox(1, "_cl_name"));
+               me.TD(me, 1, 3.75, box = makeXonoticInputBox(1, "_cl_name"));
                        box.forbiddenCharacters = "\r\n\\\"$"; // don't care, isn't getting saved
                        box.maxLength = -127; // negative means encoded length in bytes
                        box.saveImmediately = 1;
                        label.textEntity = box;
        me.TR(me);
-               me.TD(me, 5, 1, e = makeXonoticColorpicker(box));
-               me.TD(me, 5, 2, e = makeXonoticCharmap(box));
+               me.TD(me, 5, 1.25, e = makeXonoticColorpicker(box));
+               me.TD(me, 5, 2.5, e = makeXonoticCharmap(box));
        me.TR(me);
        me.TR(me);
        me.TR(me);
        me.TR(me);
+       
+       me.gotoRC(me, 3, 4); me.setFirstColumn(me, me.currentColumn);
+       me.TR(me);
+               me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Text language:")));
+       me.TR(me);
+               me.TD(me, 6, 2, e = makeXonoticLanguageList());
+                       e.name = "languageselector_firstrun";
+                       e.doubleClickCommand = "saveconfig; menu_restart; togglemenu";
+       me.TR(me);
+       me.TR(me);
+
+       me.gotoRC(me, me.rows - 4, 0);
+       me.TD(me, 1, me.columns, e = makeXonoticTextLabel(0.5, _("Allow player statistics to use your nickname at stats.xonotic.org?")));
+       
+       me.gotoRC(me, me.rows - 3, 0);
+       me.TDempty(me, 1.5);
+       me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_allow_uid2name", "1", ZCTX(_("ALWU2N^Yes"))));
+       me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_allow_uid2name", "0", ZCTX(_("ALWU2N^No"))));
+       me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_allow_uid2name", "-1", ZCTX(_("ALWU2N^Undecided"))));
 
        // because of the language selector, this is a menu_restart!
        me.gotoRC(me, me.rows - 1, 0);
-               me.TD(me, 1, me.columns, e = makeXonoticCommandButton(_("Save settings"), '0 0 0', "saveconfig; menu_restart; togglemenu", COMMANDBUTTON_APPLY));
+       me.TD(me, 1, me.columns, e = makeXonoticCommandButton(_("Save settings"), '0 0 0', "saveconfig; menu_restart; togglemenu", COMMANDBUTTON_APPLY));
                setDependentWeird(e, CheckFirstRunButton);
 }
 #endif
index 2492581d0603178b2b43dd9b372b38e57c7f667f..2c86f79c38fe322dfe77e8a16cd862a17c896029 100644 (file)
@@ -5,7 +5,7 @@ CLASS(XonoticMultiplayerDialog) EXTENDS(XonoticDialog)
        ATTRIB(XonoticMultiplayerDialog, color, vector, SKINCOLOR_DIALOG_MULTIPLAYER)
        ATTRIB(XonoticMultiplayerDialog, intendedWidth, float, 0.96)
        ATTRIB(XonoticMultiplayerDialog, rows, float, 24)
-       ATTRIB(XonoticMultiplayerDialog, columns, float, 6)
+       ATTRIB(XonoticMultiplayerDialog, columns, float, 4)
 ENDCLASS(XonoticMultiplayerDialog)
 #endif
 
@@ -15,10 +15,10 @@ void XonoticMultiplayerDialog_fill(entity me)
        entity mc, e;
        mc = makeXonoticTabController(me.rows - 2);
        me.TR(me);
-               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Servers"),  makeXonoticServerListTab()));
-               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Create"),  makeXonoticServerCreateTab()));
-               me.TD(me, 1, 1, mc.makeTabButton(mc, _("Demos"),   makeXonoticDemoBrowserTab()));
-               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Player Setup"),  makeXonoticPlayerSettingsTab()));
+               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Servers"), makeXonoticServerListTab()));
+               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Create"), makeXonoticServerCreateTab()));
+               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Demos"), makeXonoticDemoBrowserTab()));
+               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Player Setup"), makeXonoticPlayerSettingsTab()));
 
        me.TR(me);
        me.TR(me);
index b9b5896804ddc99de65c0f74dee9a6e60192d6d7..a5340169319d1b47b15df0c01bbc0bb09e99c143 100644 (file)
@@ -5,7 +5,7 @@ CLASS(XonoticServerCreateTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticServerCreateTab, title, string, _("Create"))
        ATTRIB(XonoticServerCreateTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticServerCreateTab, rows, float, 22)
-       ATTRIB(XonoticServerCreateTab, columns, float, 6.5)
+       ATTRIB(XonoticServerCreateTab, columns, float, 6.2) // added extra .2 for center space 
 
        ATTRIB(XonoticServerCreateTab, mapListBox, entity, NULL)
        ATTRIB(XonoticServerCreateTab, sliderFraglimit, entity, NULL)
@@ -33,7 +33,7 @@ void XonoticServerCreateTab_fill(entity me)
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Game type:")));
        me.TR(me);
-               me.TD(me, 9, 3, e = makeXonoticGametypeList());
+               me.TD(me, 8, 3, e = makeXonoticGametypeList());
        me.TR(me);
        me.TR(me);
        me.TR(me);
@@ -42,10 +42,9 @@ void XonoticServerCreateTab_fill(entity me)
        me.TR(me);
        me.TR(me);
        me.TR(me);
+               //me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Match settings:"))); // pointless, overcrowds the dialog imo
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Match settings:")));
-       me.TR(me);
-               me.sliderTimelimit = makeXonoticSlider(1.0, 60.0, 0.5, "timelimit_override");
+               me.sliderTimelimit = makeXonoticSlider(1.0, 60.0, 1, "timelimit_override");
                me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, me.sliderTimelimit, _("Time limit:")));
                me.TD(me, 1, 2, me.sliderTimelimit);
        me.TR(me);
@@ -67,8 +66,7 @@ void XonoticServerCreateTab_fill(entity me)
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Number of bots:")));
                me.TD(me, 1, 2, makeXonoticSlider(0, 9, 1, "bot_number"));
        me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Bot skill:")));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Bot skill:")));
                        setDependent(e, "bot_number", 0, -1);
                me.TD(me, 1, 2, e = makeXonoticTextSlider("skill"));
                        e.addValue(e, _("Botlike"), "0");
@@ -84,6 +82,7 @@ void XonoticServerCreateTab_fill(entity me)
                        e.addValue(e, _("Godlike"), "10");
                        e.configureXonoticTextSliderValues(e);
                        setDependent(e, "bot_number", 0, -1);
+       me.TR(me);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticButton(_("Mutators..."), '0 0 0'));
                        e.onClick = DialogOpenButton_Click;
@@ -99,7 +98,7 @@ void XonoticServerCreateTab_fill(entity me)
                        e.onClickEntity = main.advancedDialog;
                        main.advancedDialog.refilterEntity = me.mapListBox;
 
-       me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
                me.mapListBox = makeXonoticMapList();
                me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Map list:")));
                        makeCallback(e, me.mapListBox, me.mapListBox.refilterCallback);
index 169e9734b16a6b69ae1b0633abb69ab75f5613e9..8e4bc5a23cb153c815da6a06a48477b154229a06 100644 (file)
@@ -43,8 +43,8 @@ void XonoticMapInfoDialog_loadMapInfo(entity me, float i, entity mlb)
                strunzone(me.currentMapFeaturesText);
        }
        me.currentMapBSPName = strzone(MapInfo_Map_bspname);
-       me.currentMapTitle = strzone(MapInfo_Map_title);
-       me.currentMapAuthor = strzone(MapInfo_Map_author);
+       me.currentMapTitle = strzone(strdecolorize(MapInfo_Map_title));
+       me.currentMapAuthor = strzone(strdecolorize(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));
index 99f5a179b5ca6ab2bf6711bf20ea1a705c1ff291..9538c9afd249c4e843d9bd3e8e84b475fdbe00a8 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticDemoBrowserTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticDemoBrowserTab, title, string, _("Demo"))
        ATTRIB(XonoticDemoBrowserTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticDemoBrowserTab, rows, float, 22)
-       ATTRIB(XonoticDemoBrowserTab, columns, float, 6.5)
+       ATTRIB(XonoticDemoBrowserTab, columns, float, 4)
        ATTRIB(XonoticDemoBrowserTab, name, string, "DemoBroswer")      
 ENDCLASS(XonoticDemoBrowserTab)
 entity makeXonoticDemoBrowserTab();
@@ -25,20 +25,22 @@ void XonoticDemoBrowserTab_fill(entity me)
        entity dlist;
 
        me.TR(me);
-               me.TD(me, 1, me.columns, e = makeXonoticCheckBox(0, "cl_autodemo", _("Record demos while playing")));
+               me.TD(me, 1, 4, e = makeXonoticCheckBox(0, "cl_autodemo", _("Automatically record demos while playing")));
        me.TR(me);
-       dlist = makeXonoticDemoList();
        me.TR(me);
                me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Filter:")));
                me.TD(me, 1, 0.5, btn = makeXonoticButton(_("Clear"), '0 0 0'));
-                       btn.onClick = InputBox_Clear_Click;
-               me.TD(me, 1, me.columns - 1, e = makeXonoticInputBox(0, string_null));
+                       btn.onClick = InputBox_Clear_Click;     
+               me.TD(me, 1, 3, e = makeXonoticInputBox(0, string_null));
+                       dlist = makeXonoticDemoList();
                        e.onChange = DemoList_Filter_Change;
                        e.onChangeEntity = dlist;
                        btn.onClickEntity = e;
                        dlist.controlledTextbox = e;
+                       
        me.TR(me);
                me.TD(me, me.rows - 4, me.columns, dlist);
+               
        me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns / 2, e = makeXonoticButton(_("Timedemo"), '0 0 0'));
                        e.onClick = TimeDemo_Click;
index 8bf090fe4b7320062c97628fff5427d8651f6f62..3687857056e98bd899b6068f47f8a97d9f38b915 100644 (file)
@@ -5,8 +5,8 @@ CLASS(XonoticServerInfoDialog) EXTENDS(XonoticDialog)
        ATTRIB(XonoticServerInfoDialog, title, string, _("Server Information"))
        ATTRIB(XonoticServerInfoDialog, color, vector, SKINCOLOR_DIALOG_SERVERINFO)
        ATTRIB(XonoticServerInfoDialog, intendedWidth, float, 0.8)
-       ATTRIB(XonoticServerInfoDialog, rows, float, 15)
-       ATTRIB(XonoticServerInfoDialog, columns, float, 12)
+       ATTRIB(XonoticServerInfoDialog, rows, float, 18)
+       ATTRIB(XonoticServerInfoDialog, columns, float, 6.2)
 
        ATTRIB(XonoticServerInfoDialog, currentServerName, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerCName, string, string_null)
@@ -15,9 +15,9 @@ CLASS(XonoticServerInfoDialog) EXTENDS(XonoticDialog)
        ATTRIB(XonoticServerInfoDialog, currentServerPlayers, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerNumPlayers, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerNumBots, string, string_null)
+       ATTRIB(XonoticServerInfoDialog, currentServerNumFreeSlots, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerMod, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerVersion, string, string_null)
-       ATTRIB(XonoticServerInfoDialog, currentServerPing, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerKey, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerID, string, string_null)
        ATTRIB(XonoticServerInfoDialog, currentServerEncrypt, string, string_null)
@@ -30,9 +30,9 @@ CLASS(XonoticServerInfoDialog) EXTENDS(XonoticDialog)
        ATTRIB(XonoticServerInfoDialog, rawPlayerList, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, numPlayersLabel, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, numBotsLabel, entity, NULL)
+       ATTRIB(XonoticServerInfoDialog, numFreeSlotsLabel, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, modLabel, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, versionLabel, entity, NULL)
-       ATTRIB(XonoticServerInfoDialog, pingLabel, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, keyLabel, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, idLabel, entity, NULL)
        ATTRIB(XonoticServerInfoDialog, encryptLabel, entity, NULL)
@@ -49,7 +49,6 @@ float SLIST_FIELD_NUMHUMANS;
 float SLIST_FIELD_MAXPLAYERS;
 float SLIST_FIELD_NUMBOTS;
 float SLIST_FIELD_MOD;
-float SLIST_FIELD_PING;
 void Join_Click(entity btn, entity me);
 #endif
 
@@ -59,42 +58,49 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i)
        float m, pure, freeslots, j, numh, maxp, numb, sflags;
        string s, typestr, versionstr, k, v;
 
+       // ====================================
+       //  First clear and unzone the strings
+       // ====================================
        if(me.currentServerName)
                strunzone(me.currentServerName);
        me.currentServerName = string_null;
+       
        if(me.currentServerCName)
                strunzone(me.currentServerCName);
        me.currentServerCName = string_null;
+       
        if(me.currentServerType)
                strunzone(me.currentServerType);
        me.currentServerType = string_null;
+       
        if(me.currentServerMap)
                strunzone(me.currentServerMap);
        me.currentServerMap = string_null;
+       
        if(me.currentServerPlayers)
                strunzone(me.currentServerPlayers);
        me.currentServerPlayers = string_null;
+       
        if(me.currentServerNumPlayers)
                strunzone(me.currentServerNumPlayers);
        me.currentServerNumPlayers = string_null;
+       
        if(me.currentServerNumBots)
                strunzone(me.currentServerNumBots);
        me.currentServerNumBots = string_null;
+       
+       if(me.currentServerNumFreeSlots)
+               strunzone(me.currentServerNumFreeSlots);
+       me.currentServerNumFreeSlots = string_null;
+       
        if(me.currentServerMod)
                strunzone(me.currentServerMod);
        me.currentServerMod = string_null;
+       
        if(me.currentServerVersion)
                strunzone(me.currentServerVersion);
        me.currentServerVersion = string_null;
-       if(me.currentServerPing)
-               strunzone(me.currentServerPing);
-       me.currentServerPing = string_null;
-       if(me.currentServerKey)
-               strunzone(me.currentServerKey);
-       me.currentServerKey = string_null;
-       if(me.currentServerID)
-               strunzone(me.currentServerID);
-       me.currentServerID = string_null;
+       
        // not zoned!
        //if(me.currentServerEncrypt)
        //      strunzone(me.currentServerEncrypt);
@@ -102,7 +108,18 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i)
        if(me.currentServerPure)
                strunzone(me.currentServerPure);
        me.currentServerPure = string_null;
+       
+       if(me.currentServerKey)
+               strunzone(me.currentServerKey);
+       me.currentServerKey = string_null;
+       
+       if(me.currentServerID)
+               strunzone(me.currentServerID);
+       me.currentServerID = string_null;
 
+       // ==========================
+       //  Now, fill in the strings
+       // ==========================
        SLIST_FIELD_NAME = gethostcacheindexforkey("name");
        me.currentServerName = strzone(gethostcachestring(SLIST_FIELD_NAME, i));
        me.nameLabel.setText(me.nameLabel, me.currentServerName);
@@ -139,6 +156,9 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i)
                        sflags = stof(v);
        }
 
+       j = MapInfo_Type_FromString(typestr); // try and get the real name of the game type
+       if(j) { typestr = MapInfo_Type_ToText(j); } // only set it if we actually found it
+       
        me.currentServerType = strzone(typestr);
        me.typeLabel.setText(me.typeLabel, me.currentServerType);
 
@@ -156,168 +176,170 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i)
        maxp = gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i);
        SLIST_FIELD_NUMBOTS = gethostcacheindexforkey("numbots");
        numb = gethostcachenumber(SLIST_FIELD_NUMBOTS, i);
-       if(freeslots < 0)
-               freeslots = maxp - numh - numb;
-       me.currentServerNumPlayers = strzone(sprintf(_("%d/%d, %d free player slots"), numh, maxp, freeslots));
+       me.currentServerNumPlayers = strzone(sprintf(_("%d/%d"), numh, maxp));
        me.numPlayersLabel.setText(me.numPlayersLabel, me.currentServerNumPlayers);
 
        s = ftos(numb);
        me.currentServerNumBots = strzone(s);
        me.numBotsLabel.setText(me.numBotsLabel, me.currentServerNumBots);
+       
+       if(freeslots < 0) { freeslots = maxp - numh - numb; }
+       s = ftos(freeslots);
+       me.currentServerNumFreeSlots = strzone(s);
+       me.numFreeSlotsLabel.setText(me.numFreeSlotsLabel, me.currentServerNumFreeSlots);
 
        SLIST_FIELD_MOD = gethostcacheindexforkey("mod");
-       me.currentServerMod = strzone(gethostcachestring(SLIST_FIELD_MOD, i));
+       s = gethostcachestring(SLIST_FIELD_MOD, i);
+       s = ((s == "data") ? _("Default") : s);
+       me.currentServerMod = strzone(s);
        me.modLabel.setText(me.modLabel, me.currentServerMod);
 
        me.currentServerVersion = strzone(versionstr);
        me.versionLabel.setText(me.versionLabel, me.currentServerVersion);
 
-       me.currentServerPure = ((pure < 0) ? "N/A" : (pure == 0) ? _("Official settings") : sprintf(_("%d modified settings"), pure));
+       me.currentServerPure = ((pure < 0) ? "N/A" : (pure == 0) ? _("Official") : sprintf(_("%d modified"), pure));
        me.currentServerPure = strzone(me.currentServerPure);
        me.pureLabel.setText(me.pureLabel, me.currentServerPure);
 
-       SLIST_FIELD_PING = gethostcacheindexforkey("ping");
-       s = ftos(gethostcachenumber(SLIST_FIELD_PING, i));
-       me.currentServerPing = strzone(s);
-       me.pingLabel.setText(me.pingLabel, me.currentServerPing);
-
-       s = crypto_getidfp(me.currentServerCName);
-       if not(s)
-               s = _("N/A");
-       me.currentServerID = strzone(s);
-       me.idLabel.setText(me.idLabel, me.currentServerID);
-
-       s = crypto_getkeyfp(me.currentServerCName);
-       if not(s)
-               s = _("N/A");
-       me.currentServerKey = strzone(s);
-       me.keyLabel.setText(me.keyLabel, me.currentServerKey);
-
        s = crypto_getencryptlevel(me.currentServerCName);
        if(s == "")
        {
                if(cvar("crypto_aeslevel") >= 3)
-                       me.currentServerEncrypt = _("N/A (can't connect)");
+                       me.currentServerEncrypt = _("N/A (auth library missing, can't connect)");
                else
-                       me.currentServerEncrypt = _("N/A");
+                       me.currentServerEncrypt = _("N/A (auth library missing)");
        }
        else switch(stof(substring(s, 0, 1)))
        {
                case 0:
                        if(cvar("crypto_aeslevel") >= 3)
-                               me.currentServerEncrypt = _("not supported (can't connect)");
+                               me.currentServerEncrypt = _("Not supported (can't connect)");
                        else
-                               me.currentServerEncrypt = _("not supported (won't encrypt)");
+                               me.currentServerEncrypt = _("Not supported (won't encrypt)");
                        break;
                case 1:
                        if(cvar("crypto_aeslevel") >= 2)
-                               me.currentServerEncrypt = _("supported (will encrypt)");
+                               me.currentServerEncrypt = _("Supported (will encrypt)");
                        else
-                               me.currentServerEncrypt = _("supported (won't encrypt)");
+                               me.currentServerEncrypt = _("Supported (won't encrypt)");
                        break;
                case 2:
                        if(cvar("crypto_aeslevel") >= 1)
-                               me.currentServerEncrypt = _("requested (will encrypt)");
+                               me.currentServerEncrypt = _("Requested (will encrypt)");
                        else
-                               me.currentServerEncrypt = _("requested (won't encrypt)");
+                               me.currentServerEncrypt = _("Requested (won't encrypt)");
                        break;
                case 3:
                        if(cvar("crypto_aeslevel") <= 0)
-                               me.currentServerEncrypt = _("required (can't connect)");
+                               me.currentServerEncrypt = _("Required (can't connect)");
                        else
-                               me.currentServerEncrypt = _("required (will encrypt)");
+                               me.currentServerEncrypt = _("Required (will encrypt)");
                        break;
        }
        me.encryptLabel.setText(me.encryptLabel, me.currentServerEncrypt);
+       
+       s = crypto_getidfp(me.currentServerCName);
+       if not(s) { s = _("N/A"); }
+       me.currentServerID = strzone(s);
+       me.idLabel.setText(me.idLabel, me.currentServerID);
+
+       s = crypto_getkeyfp(me.currentServerCName);
+       if not(s) { s = _("N/A"); }
+       me.currentServerKey = strzone(s);
+       me.keyLabel.setText(me.keyLabel, me.currentServerKey);
 }
 
 void XonoticServerInfoDialog_fill(entity me)
 {
        entity e;
        me.TR(me);
-               me.TD(me, 1, me.columns, e = makeXonoticTextLabel(0.5, ""));
-                       e.colorL = SKINCOLOR_SERVERINFO_NAME;
-                       e.allowCut = 1;
-                       me.nameLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Hostname:")));
+               me.TD(me, 1, 4.6, e = makeXonoticTextLabel(0.5, ""));
+               e.colorL = SKINCOLOR_SERVERINFO_NAME;
+               e.allowCut = 1;
+               me.nameLabel = e;
        me.TR(me);
-               me.TD(me, 1, me.columns, e = makeXonoticTextLabel(0.5, ""));
-                       e.colorL = SKINCOLOR_SERVERINFO_IP;
-                       e.allowCut = 1;
-                       me.cnameLabel = e;
-
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Address:")));
+               me.TD(me, 1, 4.6, e = makeXonoticTextLabel(0.5, ""));
+               e.colorL = SKINCOLOR_SERVERINFO_IP;
+               e.allowCut = 1;
+               me.cnameLabel = e;
+               
        me.TR(me);
-               me.TD(me, 1, 5.5, e = makeXonoticTextLabel(0, _("Players:")));
        me.TR(me);
-               me.TD(me, me.rows - 4, 6, e = makeXonoticPlayerList());
-                       me.rawPlayerList = e;
-
-       me.gotoRC(me, 1, 6.25); me.setFirstColumn(me, me.currentColumn);
-
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Gametype:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.typeLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Type:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.typeLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Map:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.mapLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Map:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.mapLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Mod:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.modLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Gameplay:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.pureLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Version:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.versionLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Players:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.numPlayersLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Settings:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.pureLabel = e;
+               
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Bots:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.numBotsLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Mod:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.modLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Players:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.numPlayersLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Version:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.versionLabel = e;
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Bots:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.numBotsLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Ping:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Free slots:")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, ""));
+               e.allowCut = 1;
+               me.numFreeSlotsLabel = e;
+               
+       me.gotoRC(me, me.rows - 5, 0);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Encryption:")));
+               me.TD(me, 1, 5.4, e = makeXonoticTextLabel(0, ""));
                        e.allowCut = 1;
-                       me.pingLabel = e;
-
+                       me.encryptLabel = e;
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("CA:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("ID:")));
+               me.TD(me, 1, 5.4, e = makeXonoticTextLabel(0, ""));
                        e.allowCut = 1;
                        me.keyLabel = e;
-
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Key:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Key:")));
+               me.TD(me, 1, 5.4, e = makeXonoticTextLabel(0, ""));
                        e.allowCut = 1;
                        me.idLabel = e;
 
+       me.gotoRC(me, 2, 2.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Players:")));
        me.TR(me);
-               me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Encryption:")));
-               me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, ""));
-                       e.allowCut = 1;
-                       me.encryptLabel = e;
+               me.TD(me, me.rows - 8, 4, e = makeXonoticPlayerList());
+                       me.rawPlayerList = e;
 
        me.gotoRC(me, me.rows - 1, 0);
-
-               me.TD(me, 1, me.columns - 6, e = makeXonoticButton(_("Close"), '0 0 0'));
+               me.TD(me, 1, me.columns/2, e = makeXonoticButton(_("Close"), '0 0 0'));
                        e.onClick = Dialog_Close;
                        e.onClickEntity = me;
-               me.TD(me, 1, me.columns - 6, e = makeXonoticButton(_("Join!"), '0 0 0'));
+               //me.TD(me, 1, me.columns/3, e = makeXonoticButton("", '0 0 0')); // TODO: Add bookmark button here
+               //      e.onClick = ServerList_Favorite_Click;
+               //      e.onClickEntity = slist;
+               //      slist.favoriteButton = e;
+               me.TD(me, 1, me.columns/2, e = makeXonoticButton(_("Join!"), '0 0 0'));
                        e.onClick = Join_Click;
                        e.onClickEntity = me;
 }
index 6365081658c2553d69f566d710c9bbe8e3562e56..b187c007a3ce627b554428df682a20c177742918 100644 (file)
@@ -5,17 +5,14 @@ CLASS(XonoticPlayerSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticPlayerSettingsTab, title, string, _("Player Setup"))
        ATTRIB(XonoticPlayerSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticPlayerSettingsTab, rows, float, 22)
-       ATTRIB(XonoticPlayerSettingsTab, columns, float, 6.5)
+       ATTRIB(XonoticPlayerSettingsTab, columns, float, 6.2) // added extra .2 for center space 
        ATTRIB(XonoticPlayerSettingsTab, playerNameLabel, entity, NULL)
        ATTRIB(XonoticPlayerSettingsTab, playerNameLabelAlpha, float, 0)
 ENDCLASS(XonoticPlayerSettingsTab)
 entity makeXonoticPlayerSettingsTab();
-
-void HUDSetup_Join_Click(entity me, entity btn);
 #endif
 
 #ifdef IMPLEMENTATION
-
 entity makeXonoticPlayerSettingsTab()
 {
        entity me;
@@ -64,13 +61,13 @@ void XonoticPlayerSettingsTab_fill(entity me)
                me.TD(me, 1, 0.3, e = makeXonoticButton("<<", '0 0 0'));
                        e.onClick = PlayerModelSelector_Prev_Click;
                        e.onClickEntity = pms;
-               me.TD(me, me.rows - (me.currentRow + 3), 1.8, pms);
+               me.TD(me, me.rows - (me.currentRow + 2), 1.8, pms);
                me.TD(me, 1, 0.3, e = makeXonoticButton(">>", '0 0 0'));
                        e.onClick = PlayerModelSelector_Next_Click;
                        e.onClickEntity = pms;
        me.TR(me);
                r = me.currentRow;
-               m = me.rows - (r + 4);
+               m = me.rows - (r + 3);
                n = 16 - !cvar("developer");
                m = m / (n - 1);
                for(i = 0; i < n; ++i)
@@ -83,129 +80,98 @@ void XonoticPlayerSettingsTab_fill(entity me)
                        me.gotoRC(me, r + i * m, 0.4);
                        me.TDNoMargin(me, m, 0.2, e = makeXonoticColorButton(2, 1, i), '0 1 0');
                }
-       me.gotoRC(me, me.rows - 3, 0);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_forceplayermodels", _("Force player models to mine")));
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_forceplayercolors", _("Force player colors to mine")));
 
-       me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Field of view:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(60, 130, 1, "fov"));
-       me.TR(me);
-               sl = makeXonoticSlider(0.45, 0.75, 0.01, "cl_bobcycle");
-               me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, sl, _("View bobbing:")));
-               makeMulti(sl, "cl_bob2cycle");
-               me.TD(me, 1, 2, sl);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Zoom factor:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(2, 16, 0.5, "cl_zoomfactor"));
-       me.TR(me);
-               sl = makeXonoticSlider(1, 8, 0.5, "cl_zoomspeed");
-               me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1, 1, sl, _("Zoom speed:")));
-               me.TD(me, 1, 2, sl);
+
+       // crosshair_enabled: 0 = no crosshair options, 1 = no crosshair selection, but everything else enabled, 2 = all crosshair options enabled
+       // FIXME: In the future, perhaps make one global crosshair_type cvar which has 0 for disabled, 1 for custom, 2 for per weapon, etc?
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 3, e = makeXonoticRadioButton(3, "crosshair_enabled", "0", _("No crosshair")));
        me.TR(me);
-               me.TD(me, 1, 1.5, e = makeXonoticButton(_("Weapon settings..."), '0 0 0'));
-                       e.onClick = DialogOpenButton_Click;
-                       e.onClickEntity = main.weaponsDialog;
-               me.TD(me, 1, 1.5, e0 = makeXonoticTextLabel(0, string_null));
-                       e0.textEntity = main.weaponsDialog;
-                       e0.allowCut = 1;
+               me.TD(me, 1, 3, e = makeXonoticRadioButton(3, "crosshair_per_weapon", string_null, _("Per weapon crosshair")));
+               makeMulti(e, "crosshair_enabled");
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair:")));
-               me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "crosshair_per_weapon", _("Per weapon")));
+               me.TD(me, 1, 3, e = makeXonoticRadioButton(3, "crosshair_enabled", "2", _("Custom crosshair")));
        me.TR(me);
-               me.TDempty(me, 0.2);
+               me.TDempty(me, 0.1);
                for(i = 1; i <= 14; ++i) {
-                       me.TDNoMargin(me, 1, 2 / 14, e = makeXonoticCrosshairButton(3, i), '1 1 0');
-                       setDependent(e, "crosshair_per_weapon", 0, 0);
+                       me.TDNoMargin(me, 1, 2 / 14, e = makeXonoticCrosshairButton(4, i), '1 1 0');
+                               setDependentAND(e, "crosshair_per_weapon", 0, 0, "crosshair_enabled", 1, 2);
                }
                // show a larger preview of the selected crosshair
-               me.TDempty(me, 0.2);
-               me.TDNoMargin(me, 2, 2 / 5, e = makeXonoticCrosshairButton(7, -1), '1 1 0'); // crosshair -1 makes this a preview
-               setDependent(e, "crosshair_per_weapon", 0, 0);
+               me.TDempty(me, 0.1);
+               me.TDNoMargin(me, 3, 0.8, e = makeXonoticCrosshairButton(7, -1), '1 1 0'); // crosshair -1 makes this a preview
+                       setDependentAND(e, "crosshair_per_weapon", 0, 0, "crosshair_enabled", 1, 2);
        me.TR(me);
-               me.TDempty(me, 0.2);
+               me.TDempty(me, 0.1);
                for(i = 15; i <= 28; ++i) {
-                       me.TDNoMargin(me, 1, 2 / 14, e = makeXonoticCrosshairButton(3, i), '1 1 0');
-                       setDependent(e, "crosshair_per_weapon", 0, 0);
+                       me.TDNoMargin(me, 1, 2 / 14, e = makeXonoticCrosshairButton(4, i), '1 1 0');
+                               setDependentAND(e, "crosshair_per_weapon", 0, 0, "crosshair_enabled", 1, 2);
                }
        me.TR(me);
-               me.TDempty(me, 0.2);
+       me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair size:")));
-               me.TD(me, 1, 1.8, e = makeXonoticSlider(0.1, 1.0, 0.01, "crosshair_size"));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0.1, 1.0, 0.01, "crosshair_size"));
+                       setDependent(e, "crosshair_enabled", 1, 2);
        me.TR(me);
-               me.TDempty(me, 0.2);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair alpha:")));
-               me.TD(me, 1, 1.8, e = makeXonoticSlider(0, 1, 0.1, "crosshair_alpha"));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.1, "crosshair_alpha"));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+       me.TR(me);
        me.TR(me);
-               me.TDempty(me, 0.2);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair color:")));
-               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(4, "crosshair_color_per_weapon", string_null, _("Per weapon")));
-               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(4, "crosshair_color_by_health", string_null, _("By health")));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+               me.TD(me, 1, 1, e = makeXonoticRadioButton(5, "crosshair_color_per_weapon", string_null, _("Per weapon")));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+               me.TD(me, 1, 1, e = makeXonoticRadioButton(5, "crosshair_color_by_health", string_null, _("By health")));
+                       setDependent(e, "crosshair_enabled", 1, 2);
        me.TR(me);
-               me.TDempty(me, 0.3);
-               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(4, string_null, string_null, _("Custom")));
-               me.TD(me, 2, 1.8, e = makeXonoticColorpickerString("crosshair_color", "crosshair_color"));
-                       setDependentAND(e, "crosshair_color_per_weapon", 0, 0, "crosshair_color_by_health", 0, 0);
+               me.TDempty(me, 0.1);
+               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(5, string_null, string_null, _("Custom")));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+               me.TD(me, 2, 2, e = makeXonoticColorpickerString("crosshair_color", "crosshair_color"));
+                       setDependentAND3(e, "crosshair_color_per_weapon", 0, 0, "crosshair_color_by_health", 0, 0, "crosshair_enabled", 1, 2);
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "crosshair_dot", _("Enable center dot")));
        me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Size:")));
-               me.TD(me, 1, 0.9, e = makeXonoticSlider(0.2, 2, 0.1, "crosshair_dot_size"));
-                       setDependent(e, "crosshair_dot", 1, 1);
-               me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Alpha:")));
-               me.TD(me, 1, 0.9, e = makeXonoticSlider(0.10, 1, 0.1, "crosshair_dot_alpha"));
-                       setDependent(e, "crosshair_dot", 1, 1);
+               me.TDempty(me, 0.5);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("Other crosshair settings"), '0 0 0'));
+                       e.onClick = DialogOpenButton_Click;
+                       e.onClickEntity = main.crosshairDialog;
+               setDependent(e, "crosshair_enabled", 1, 2);
+               // TODO: show status of crosshair dot and hittest and pickups and such here with text
+       me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Hit test:")));
-               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "0",    ZCTX(_("HTST^None"))));
-               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "1",    _("TrueAim")));
-               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "1.25", _("Enemies")));
+               me.TDempty(me, 0.5);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("Model settings"), '0 0 0'));
+                       e.onClick = DialogOpenButton_Click;
+                       e.onClickEntity = main.modelDialog;
+               // TODO: show csqc model settings like forcemyplayer and deglowing/ghosting bodies with text here
+       me.TR(me);
+               me.TDempty(me, 0.5);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("View settings"), '0 0 0'));
+                       e.onClick = DialogOpenButton_Click;
+                       e.onClickEntity = main.viewDialog;
+               // TODO: show fov and other settings with text here
        me.TR(me);
-               me.TDempty(me, 0.4);
-               me.TD(me, 1, 2.2, e = makeXonoticButton(_("Waypoints setup..."), '0 0 0'));
+               me.TDempty(me, 0.5);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("Weapon settings"), '0 0 0'));
                        e.onClick = DialogOpenButton_Click;
-                       e.onClickEntity = main.waypointDialog;
-       me.TR(me);
-               me.TDempty(me, 0.4);
-               me.TD(me, 1, 2.2, e = makeXonoticButton(_("Enter HUD editor"), '0 0 0'));
-                       e.onClick = HUDSetup_Join_Click;
-                       e.onClickEntity = me;
-       #ifdef ALLOW_FORCEMODELS
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Force models:")));
-               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, string_null, string_null, ZCTX(_("MDL^None"))));
-               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodelsfromxonotic", string_null, ZCTX(_("MDL^Custom"))));
-               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodels", string_null, ZCTX(_("MDL^All"))));
-       #endif
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_gentle", _("Disable gore effects")));
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gibs:")));
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_nogibs"));
-                       e.addValue(e, ZCTX(_("GIBS^None")), "1");
-                       e.addValue(e, ZCTX(_("GIBS^Few")), "0.75");
-                       e.addValue(e, ZCTX(_("GIBS^Many")), "0.5");
-                       e.addValue(e, ZCTX(_("GIBS^Lots")), "0");
-                       e.configureXonoticTextSliderValues(e);
-                       setDependent(e, "cl_gentle", 0, 0);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Damage splash:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.05, "hud_damage"));
+                       e.onClickEntity = main.weaponsDialog;
+               // I don't really think this is useful as is, and especially it doesn't look very clean...
+               // In the future, if ALL of these buttons had some information, then it would be justified/clean
+               //me.TD(me, 1, 1, e0 = makeXonoticTextLabel(0, string_null)); 
+               //      e0.textEntity = main.weaponsDialog;
+               //      e0.allowCut = 1;
+       me.TR(me);
+               me.TDempty(me, 0.5);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("HUD settings"), '0 0 0'));
+                       e.onClick = DialogOpenButton_Click;
+                       e.onClickEntity = main.hudDialog;
+               // TODO: show hud config name with text here 
 
        me.gotoRC(me, me.rows - 1, 0);
-               me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "color -1 -1;name \"$_cl_name\";cl_cmd sendcvar cl_weaponpriority;sendcvar cl_zoomfactor;sendcvar cl_zoomspeed;sendcvar cl_autoswitch;sendcvar cl_forceplayermodelsfromxonotic;sendcvar cl_forceplayermodels;playermodel $_cl_playermodel;playerskin $_cl_playerskin", COMMANDBUTTON_APPLY));
-}
-void HUDSetup_Join_Click(entity me, entity btn)
-{
-       if(! (gamestatus & (GAME_CONNECTED | GAME_ISSERVER)))
-       {
-               localcmd("map hudsetup/hudsetup", "\n");
-       }
-       else
-               localcmd("togglemenu 0\n");
-       localcmd("_hud_configure 1", "\n");
+               me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "color -1 -1;name \"$_cl_name\";sendcvar cl_weaponpriority;sendcvar cl_autoswitch;sendcvar cl_forceplayermodels;sendcvar cl_forceplayermodelsfromxonotic;playermodel $_cl_playermodel;playerskin $_cl_playerskin", COMMANDBUTTON_APPLY));
 }
 #endif
diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c
new file mode 100644 (file)
index 0000000..a18fec1
--- /dev/null
@@ -0,0 +1,95 @@
+#ifdef INTERFACE
+CLASS(XonoticCrosshairDialog) EXTENDS(XonoticDialog)
+       METHOD(XonoticCrosshairDialog, toString, string(entity))
+       METHOD(XonoticCrosshairDialog, fill, void(entity))
+       METHOD(XonoticCrosshairDialog, showNotify, void(entity))
+       ATTRIB(XonoticCrosshairDialog, title, string, _("Crosshair settings"))
+       ATTRIB(XonoticCrosshairDialog, color, vector, SKINCOLOR_DIALOG_CROSSHAIR)
+       ATTRIB(XonoticCrosshairDialog, intendedWidth, float, 0.5)
+       ATTRIB(XonoticCrosshairDialog, rows, float, 18)
+       ATTRIB(XonoticCrosshairDialog, columns, float, 3)
+ENDCLASS(XonoticCrosshairDialog)
+#endif
+
+#ifdef IMPLEMENTATION
+void XonoticCrosshairDialog_showNotify(entity me)
+{
+       loadAllCvars(me);
+}
+string XonoticCrosshairDialog_toString(entity me)
+{
+       return "hi"; // TODO: show status of crosshair dot and hittest and pickups and such here with text
+}
+void XonoticCrosshairDialog_fill(entity me)
+{
+       entity e;
+       
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "crosshair_dot", _("Enable center crosshair dot")));
+               setDependent(e, "crosshair_enabled", 1, 2);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Dot size:")));
+                       setDependentAND(e, "crosshair_dot", 1, 1, "crosshair_enabled", 1, 2);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0.2, 2, 0.1, "crosshair_dot_size"));
+                       setDependentAND(e, "crosshair_dot", 1, 1, "crosshair_enabled", 1, 2);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Dot alpha:")));
+                       setDependentAND(e, "crosshair_dot", 1, 1, "crosshair_enabled", 1, 2);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0.1, 1, 0.1, "crosshair_dot_alpha"));
+                       setDependentAND(e, "crosshair_dot", 1, 1, "crosshair_enabled", 1, 2);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Dot color:")));
+                       setDependentAND(e, "crosshair_dot", 1, 1, "crosshair_enabled", 1, 2);
+               me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "crosshair_dot_color_custom", "0", _("Use normal crosshair color")));
+                       setDependentAND(e, "crosshair_dot", 1, 1, "crosshair_enabled", 1, 2);
+       me.TR(me);
+               me.TDempty(me, 0.1);
+               me.TD(me, 1, 0.8, e = makeXonoticRadioButton(1, "crosshair_dot_color_custom", "1", _("Custom")));
+                       setDependentAND(e, "crosshair_dot", 1, 1, "crosshair_enabled", 1, 2);
+               me.TD(me, 2, 2, e = makeXonoticColorpickerString("crosshair_dot_color", "crosshair_dot_color"));
+                       setDependentAND3(e, "crosshair_dot", 1, 1, "crosshair_enabled", 1, 2, "crosshair_dot_color_custom", 1, 1);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Crosshair animations:")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "crosshair_effect_scalefade", _("Smooth effects of crosshairs")));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "crosshair_ring", _("Use rings to indicate weapon status")));
+                       makeMulti(e, "crosshair_ring_reload");
+                       setDependent(e, "crosshair_enabled", 1, 2);
+       me.TR(me);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Hit testing:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("crosshair_hittest"));
+                       e.addValue(e, ZCTX(_("HTTST^Disabled")), "0");
+                       e.addValue(e, ZCTX(_("HTTST^TrueAim")), "1");
+                       e.addValue(e, ZCTX(_("HTTST^Enemies")), "1.25");
+                       e.configureXonoticTextSliderValues(e);
+                       setDependent(e, "crosshair_enabled", 1, 2);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "crosshair_hittest_blur", _("Blur crosshair if the shot is obstructed")));
+                       setDependentAND(e, "crosshair_hittest", 1, 100, "crosshair_enabled", 1, 2);
+       me.TR(me);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(0.5, 0, "crosshair_hitindication", _("Animate when hitting an enemy")));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(0.25, 0, "crosshair_pickup", _("Animate when picking up an item")));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+                       
+       me.TR(me);
+                       
+       me.gotoRC(me, me.rows - 1, 0);
+               me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
+                       e.onClick = Dialog_Close;
+                       e.onClickEntity = me;
+}
+#endif
diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c
new file mode 100644 (file)
index 0000000..e53f99b
--- /dev/null
@@ -0,0 +1,103 @@
+#ifdef INTERFACE
+CLASS(XonoticHUDDialog) EXTENDS(XonoticDialog)
+       METHOD(XonoticHUDDialog, toString, string(entity))
+       METHOD(XonoticHUDDialog, fill, void(entity))
+       METHOD(XonoticHUDDialog, showNotify, void(entity))
+       ATTRIB(XonoticHUDDialog, title, string, _("HUD settings"))
+       ATTRIB(XonoticHUDDialog, color, vector, SKINCOLOR_DIALOG_HUD)
+       ATTRIB(XonoticHUDDialog, intendedWidth, float, 0.5)
+       ATTRIB(XonoticHUDDialog, rows, float, 18)
+       ATTRIB(XonoticHUDDialog, columns, float, 3)
+ENDCLASS(XonoticHUDDialog)
+void HUDSetup_Start(entity me, entity btn);
+#endif
+
+#ifdef IMPLEMENTATION
+void HUDSetup_Check_Gamestatus(entity me, entity btn)
+{
+       if not(gamestatus & (GAME_CONNECTED | GAME_ISSERVER)) // we're not in a match, ask the player if they want to start one anyway
+       {
+               DialogOpenButton_Click(me, main.hudconfirmDialog);
+       }
+       else // already in a match, lets just cut to the point and open up the hud editor directly
+       {
+               HUDSetup_Start(me, btn);
+       }
+}
+void XonoticHUDDialog_showNotify(entity me)
+{
+       loadAllCvars(me);
+}
+string XonoticHUDDialog_toString(entity me)
+{
+       return "hi"; // TODO: show hud config name with text here 
+}
+void XonoticHUDDialog_fill(entity me)
+{
+       entity e;
+       
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Damage:")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Overlay:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.05, "hud_damage"));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Factor:")));
+               setDependent(e, "hud_damage", 0.001, 100);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0.025, 0.1, 0.025, "hud_damage_factor"));
+               setDependent(e, "hud_damage", 0.001, 100);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Fade rate:")));
+               setDependent(e, "hud_damage", 0.001, 100);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0.25, 1, 0.05, "hud_damage_fade_rate"));
+               setDependent(e, "hud_damage", 0.001, 100);
+       me.TR(me);
+       
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_hidewaypoints", _("Waypoints")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Scale:")));
+               setDependent(e, "cl_hidewaypoints", 0, 0);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 1.5, 0.05, "g_waypointsprite_scale"));
+               setDependent(e, "cl_hidewaypoints", 0, 0);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Alpha:")));
+               setDependent(e, "cl_hidewaypoints", 0, 0);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0.1, 1, 0.05, "g_waypointsprite_alpha"));
+               setDependent(e, "cl_hidewaypoints", 0, 0);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Edge offset:")));
+               setDependent(e, "cl_hidewaypoints", 0, 0);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0, 0.3, 0.01, "g_waypointsprite_edgeoffset_bottom"));
+               makeMulti(e, "g_waypointsprite_edgeoffset_top g_waypointsprite_edgeoffset_left g_waypointsprite_edgeoffset_right");
+               setDependent(e, "cl_hidewaypoints", 0, 0);
+       me.TR(me);
+       
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_shownames", _("Show names above players")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(25, 0, "hud_shownames_crosshairdistance", _("Only when near crosshair")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "hud_shownames_status", _("Display health and armor")));
+       me.TR(me);
+       me.TR(me);
+               me.TDempty(me, 0.5);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("Enter HUD editor"), '0 0 0'));
+                       e.onClick = HUDSetup_Check_Gamestatus;
+                       e.onClickEntity = me;
+               // TODO: show hud config name with text here 
+               
+       me.gotoRC(me, me.rows - 1, 0);
+               me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
+                       e.onClick = Dialog_Close;
+                       e.onClickEntity = me;
+}
+#endif
\ No newline at end of file
diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c
new file mode 100644 (file)
index 0000000..b06dc92
--- /dev/null
@@ -0,0 +1,40 @@
+#ifdef INTERFACE
+CLASS(XonoticHUDConfirmDialog) EXTENDS(XonoticDialog)
+       METHOD(XonoticHUDConfirmDialog, fill, void(entity))
+       ATTRIB(XonoticHUDConfirmDialog, title, string, _("Enter HUD editor"))
+       ATTRIB(XonoticHUDConfirmDialog, color, vector, SKINCOLOR_DIALOG_HUDCONFIRM)
+       ATTRIB(XonoticHUDConfirmDialog, intendedWidth, float, 0.5)
+       ATTRIB(XonoticHUDConfirmDialog, rows, float, 4)
+       ATTRIB(XonoticHUDConfirmDialog, columns, float, 2)
+ENDCLASS(XonoticHUDConfirmDialog)
+#endif
+
+#ifdef IMPLEMENTATION
+void HUDSetup_Start(entity me, entity btn)
+{
+       if not(gamestatus & (GAME_CONNECTED | GAME_ISSERVER))
+               localcmd("map hudsetup/hudsetup", "\n");
+       else
+               localcmd("togglemenu 0\n");
+               
+       localcmd("_hud_configure 1", "\n");
+}
+
+void XonoticHUDConfirmDialog_fill(entity me)
+{
+       entity e;
+
+       me.TR(me);
+               me.TD(me, 1, 2, e = makeXonoticTextLabel(0.5, _("In order for the HUD editor to show, you must first be in game.")));
+       me.TR(me);
+               me.TD(me, 1, 2, e = makeXonoticTextLabel(0.5, _("Do you wish to start a local game to set up the HUD?")));
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticButton(ZCTX(_("HDCNFRM^Yes")), '1 0 0'));
+                       e.onClick = HUDSetup_Start;
+                       e.onClickEntity = me;
+               me.TD(me, 1, 1, e = makeXonoticButton(ZCTX(_("HDCNFRM^No")), '0 1 0'));
+                       e.onClick = Dialog_Close;
+                       e.onClickEntity = me;
+}
+#endif
diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c
new file mode 100644 (file)
index 0000000..5098250
--- /dev/null
@@ -0,0 +1,60 @@
+#ifdef INTERFACE
+CLASS(XonoticModelDialog) EXTENDS(XonoticDialog)
+       METHOD(XonoticModelDialog, toString, string(entity))
+       METHOD(XonoticModelDialog, fill, void(entity))
+       METHOD(XonoticModelDialog, showNotify, void(entity))
+       ATTRIB(XonoticModelDialog, title, string, _("Model settings"))
+       ATTRIB(XonoticModelDialog, color, vector, SKINCOLOR_DIALOG_MODEL)
+       ATTRIB(XonoticModelDialog, intendedWidth, float, 0.5)
+       ATTRIB(XonoticModelDialog, rows, float, 8)
+       ATTRIB(XonoticModelDialog, columns, float, 3)
+ENDCLASS(XonoticModelDialog)
+#endif
+
+#ifdef IMPLEMENTATION
+void XonoticModelDialog_showNotify(entity me)
+{
+       loadAllCvars(me);
+}
+string XonoticModelDialog_toString(entity me)
+{
+       return "hi"; // TODO: show csqc model settings like forcemyplayer and deglowing/ghosting bodies with text here
+}
+void XonoticModelDialog_fill(entity me)
+{
+       entity e;
+       
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Body fading:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(0, 2, 0.2, "cl_deathglow"));
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gibs:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_nogibs"));
+                       e.addValue(e, ZCTX(_("GIBS^None")), "1");
+                       e.addValue(e, ZCTX(_("GIBS^Few")), "0.75");
+                       e.addValue(e, ZCTX(_("GIBS^Many")), "0.5");
+                       e.addValue(e, ZCTX(_("GIBS^Lots")), "0");
+                       e.configureXonoticTextSliderValues(e);
+                       setDependent(e, "cl_gentle", 0, 0);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Playermodel LOD:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(0, 10, 1, "cl_playerdetailreduction"));
+       me.TR(me);
+       #ifdef ALLOW_FORCEMODELS
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Force models:")));
+               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, string_null, string_null, ZCTX(_("MDL^None"))));
+               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodelsfromxonotic", string_null, ZCTX(_("MDL^Custom"))));
+               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodels", string_null, ZCTX(_("MDL^All"))));
+       #endif
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_forceplayermodels", _("Force player models to mine")));
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_forceplayercolors", _("Force player colors to mine")));
+       me.TR(me);
+               
+       me.gotoRC(me, me.rows - 1, 0);
+               me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
+                       e.onClick = Dialog_Close;
+                       e.onClickEntity = me;
+}
+#endif
diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c
new file mode 100644 (file)
index 0000000..bfa52ec
--- /dev/null
@@ -0,0 +1,117 @@
+#ifdef INTERFACE
+CLASS(XonoticViewDialog) EXTENDS(XonoticDialog)
+       METHOD(XonoticViewDialog, toString, string(entity))
+       METHOD(XonoticViewDialog, fill, void(entity))
+       METHOD(XonoticViewDialog, showNotify, void(entity))
+       ATTRIB(XonoticViewDialog, title, string, _("View settings"))
+       ATTRIB(XonoticViewDialog, color, vector, SKINCOLOR_DIALOG_VIEW)
+       ATTRIB(XonoticViewDialog, intendedWidth, float, 0.9)
+       ATTRIB(XonoticViewDialog, rows, float, 11)
+       ATTRIB(XonoticViewDialog, columns, float, 6.2) // added extra .2 for center space 
+ENDCLASS(XonoticViewDialog)
+#endif
+
+#ifdef IMPLEMENTATION
+void XonoticViewDialog_showNotify(entity me)
+{
+       loadAllCvars(me);
+}
+string XonoticViewDialog_toString(entity me)
+{
+       return "hi"; // TODO: show fov and other settings with text here
+}
+void XonoticViewDialog_fill(entity me)
+{
+       entity e;
+       
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Field of view:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(60, 130, 5, "fov"));
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Zoom:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_reticle"));
+                       e.addValue(e, ZCTX(_("RETICLE^Fullscreen")), "0");
+                       e.addValue(e, ZCTX(_("RETICLE^With reticle")), "1");
+                       e.configureXonoticTextSliderValues(e);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, ZCTX(_("ZOOM^Factor:"))));
+               me.TD(me, 1, 2, e = makeXonoticSlider(2, 16, 0.5, "cl_zoomfactor"));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, ZCTX(_("ZOOM^Speed:"))));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_zoomspeed"));
+                       e.addValue(e, "1", "1"); // Samual: for() loop doesn't work here, even though it would make sense.
+                       e.addValue(e, "2", "2");
+                       e.addValue(e, "3", "3");
+                       e.addValue(e, "4", "4");
+                       e.addValue(e, "5", "5");
+                       e.addValue(e, "6", "6");
+                       e.addValue(e, "7", "7");
+                       e.addValue(e, "8", "8");
+                       e.addValue(e, ZCTX(_("ZOOM^Instant")), "-1");
+                       e.configureXonoticTextSliderValues(e);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, ZCTX(_("ZOOM^Sensitivity:"))));
+               me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.1, "cl_zoomsensitivity"));
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Velocity zoom:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_velocityzoom_type"));
+                       e.addValue(e, ZCTX(_("VZOOM^Disabled")), "0");
+                       e.addValue(e, ZCTX(_("VZOOM^Forward only")), "3");
+                       e.addValue(e, ZCTX(_("VZOOM^All directions")), "1");
+                       e.configureXonoticTextSliderValues(e);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, ZCTX(_("VZOOM^Speed"))));
+               me.TD(me, 1, 2, e = makeXonoticSlider(-1, 1, 0.2, "cl_velocityzoom"));
+               setDependent(e, "cl_velocityzoom_type", 1, 3);
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_clippedspectating", _("Allow passing through walls while spectating")));
+       
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "chase_active", "0", _("1st person perspective")));
+               makeMulti(e, "crosshair_hittest_showimpact");
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(0.05, 0, "cl_bobfall", _("Smooth the view when landing from a jump")));
+               setDependent(e, "chase_active", -1, 0);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(0.05, 0, "cl_smoothviewheight", _("Smooth the view while crouching")));
+               setDependent(e, "chase_active", -1, 0);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(1, 0, "v_idlescale", _("View waving while idle")));
+               setDependent(e, "chase_active", -1, 0);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(0.65, 0, "cl_bobcycle", _("View bobbing while walking around")));
+               makeMulti(e, "cl_bob2cycle");
+               setDependent(e, "chase_active", -1, 0);
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "chase_active", "1", _("3rd person perspective")));
+               makeMulti(e, "crosshair_hittest_showimpact");
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Back distance")));
+               setDependent(e, "chase_active", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticSlider(10, 100, 1, "chase_back"));
+               setDependent(e, "chase_active", 1, 1);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Up distance")));
+               setDependent(e, "chase_active", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticSlider(10, 50, 1, "chase_up"));
+               setDependent(e, "chase_active", 1, 1);
+       me.TR(me);
+               
+       me.gotoRC(me, me.rows - 1, 0);
+               me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
+                       e.onClick = Dialog_Close;
+                       e.onClickEntity = me;
+}
+#endif
diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c
deleted file mode 100644 (file)
index 7ded2c5..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifdef INTERFACE
-CLASS(XonoticWaypointDialog) EXTENDS(XonoticDialog)
-       METHOD(XonoticWaypointDialog, fill, void(entity))
-       METHOD(XonoticWaypointDialog, showNotify, void(entity))
-       ATTRIB(XonoticWaypointDialog, title, string, _("Waypoints"))
-       ATTRIB(XonoticWaypointDialog, color, vector, SKINCOLOR_DIALOG_WAYPOINTS)
-       ATTRIB(XonoticWaypointDialog, intendedWidth, float, 0.5)
-       ATTRIB(XonoticWaypointDialog, rows, float, 5)
-       ATTRIB(XonoticWaypointDialog, columns, float, 3)
-ENDCLASS(XonoticWaypointDialog)
-#endif
-
-#ifdef IMPLEMENTATION
-void XonoticWaypointDialog_showNotify(entity me)
-{
-       loadAllCvars(me);
-}
-void XonoticWaypointDialog_fill(entity me)
-{
-       entity e;
-
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_hidewaypoints", _("Show base waypoints")));
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Waypoint scale:")));
-                       me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 1.5, 0.05, "g_waypointsprite_scale"));
-                               setDependent(e, "cl_hidewaypoints", 0, 0);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Waypoint alpha:")));
-                       me.TD(me, 1, 2, e = makeXonoticSlider(0.1, 1, 0.05, "g_waypointsprite_alpha"));
-                               setDependent(e, "cl_hidewaypoints", 0, 0);
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "hud_shownames", _("Show names above players")));
-       me.gotoRC(me, me.rows - 1, 0);
-               me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
-                       e.onClick = Dialog_Close;
-                       e.onClickEntity = me;
-}
-#endif
index 2c960d36886b12a2c717162fac022dd08a32859c..418d41c340b287af46de6f780dbc83d142450ddf 100644 (file)
@@ -5,9 +5,9 @@ CLASS(XonoticWeaponsDialog) EXTENDS(XonoticDialog)
        METHOD(XonoticWeaponsDialog, showNotify, void(entity))
        ATTRIB(XonoticWeaponsDialog, title, string, _("Weapon settings"))
        ATTRIB(XonoticWeaponsDialog, color, vector, SKINCOLOR_DIALOG_WEAPONS)
-       ATTRIB(XonoticWeaponsDialog, intendedWidth, float, 0.4)
-       ATTRIB(XonoticWeaponsDialog, rows, float, 18)
-       ATTRIB(XonoticWeaponsDialog, columns, float, 3)
+       ATTRIB(XonoticWeaponsDialog, intendedWidth, float, 0.7)
+       ATTRIB(XonoticWeaponsDialog, rows, float, 12)
+       ATTRIB(XonoticWeaponsDialog, columns, float, 5.2)
        ATTRIB(XonoticWeaponsDialog, weaponsList, entity, NULL)
 ENDCLASS(XonoticWeaponsDialog)
 #endif
@@ -26,21 +26,22 @@ void XonoticWeaponsDialog_fill(entity me)
        entity e;
 
        me.TR(me);
-               me.TD(me, 1, 3, makeXonoticTextLabel(0, _("Weapon priority list:")));
+               me.TD(me, 1, 2, makeXonoticTextLabel(0, _("Weapon priority list:")));
        me.TR(me);
-               me.TD(me, 10, 3, e = me.weaponsList = makeXonoticWeaponsList());
-       me.gotoRC(me, 11, 0);
-               me.TDempty(me, 0.5);
+               me.TD(me, 8, 2, e = me.weaponsList = makeXonoticWeaponsList());
+       me.gotoRC(me, 9, 0);
                me.TD(me, 1, 1, e = makeXonoticButton(_("Up"), '0 0 0'));
                        e.onClick = WeaponsList_MoveUp_Click;
                        e.onClickEntity = me.weaponsList;
                me.TD(me, 1, 1, e = makeXonoticButton(_("Down"), '0 0 0'));
                        e.onClick = WeaponsList_MoveDown_Click;
                        e.onClickEntity = me.weaponsList;
-       me.TR(me);
+                       
+       me.gotoRC(me, 0, 2.2); me.setFirstColumn(me, me.currentColumn);
                me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_weaponpriority_useforcycling", _("Use priority list for weapon cycling")));
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_autoswitch", _("Auto switch weapons on pickup")));
+       me.TR(me);
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_drawviewmodel", _("Draw 1st person weapon model")));
        me.TR(me);
@@ -52,8 +53,24 @@ void XonoticWeaponsDialog_fill(entity me)
                me.TD(me, 1, 1.0, e = makeXonoticRadioButton(1, "cl_gunalign", "3", _("Right align")));
                        setDependent(e, "r_drawviewmodel", 1, 1);
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_flipped", _("Flip view horizontally")));
        me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_followmodel", _("Gun model swaying")));
+               makeMulti(e, "cl_leanmodel");
+               setDependent(e, "r_drawviewmodel", 1, 1);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_bobmodel", _("Gun model bobbing")));
+               setDependent(e, "r_drawviewmodel", 1, 1);
+       me.TR(me);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, ZCTX(_("VWMDL^Scale"))));
+               setDependent(e, "r_drawviewmodel", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0.1, 2, 0.1, "cl_viewmodel_scale"));
+               setDependent(e, "r_drawviewmodel", 1, 1);
+                       
+       me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
                        e.onClick = Dialog_Close;
                        e.onClickEntity = me;
index 1f084a16cc0e9600cc4743626a9b8789a8c4d157..930fa7df9789c02dcabc26860d90f540e63b89b0 100644 (file)
@@ -19,7 +19,7 @@ void XonoticSettingsDialog_fill(entity me)
                me.TD(me, 1, 1, mc.makeTabButton(mc, _("Video"),   makeXonoticVideoSettingsTab()));
                me.TD(me, 1, 1, mc.makeTabButton(mc, _("Effects"), makeXonoticEffectsSettingsTab()));
                me.TD(me, 1, 1, mc.makeTabButton(mc, _("Audio"),   makeXonoticAudioSettingsTab()));
-               me.TD(me, 1, 1, mc.makeTabButton(mc, _("Network"), makeXonoticNetworkSettingsTab()));
+               me.TD(me, 1, 1, mc.makeTabButton(mc, _("User"),    makeXonoticUserSettingsTab()));
                me.TD(me, 1, 1, mc.makeTabButton(mc, _("Misc"),    makeXonoticMiscSettingsTab()));
        me.TR(me);
        me.TR(me);
index bf3406142c4c91f188a09f2c98e66267adfcdb80..8e80495321436beaeeeed91eca8447e5ee00cdd5 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticAudioSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticAudioSettingsTab, title, string, _("Audio"))
        ATTRIB(XonoticAudioSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticAudioSettingsTab, rows, float, 17)
-       ATTRIB(XonoticAudioSettingsTab, columns, float, 6.5)
+       ATTRIB(XonoticAudioSettingsTab, columns, float, 6.2) // added extra .2 for center space 
 ENDCLASS(XonoticAudioSettingsTab)
 entity makeXonoticAudioSettingsTab();
 #endif
@@ -25,12 +25,16 @@ void XonoticAudioSettingsTab_fill(entity me)
        me.TR(me);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "mastervolume");
                me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Master:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
        me.TR(me);
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "bgmvolume");
                makeMulti(s, "snd_channel8volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Music:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -39,6 +43,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_staticvolume");
                makeMulti(s, "snd_channel9volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, ZCTX(_("VOL^Ambient:"))));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -46,6 +52,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel0volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Info:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -53,6 +61,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel3volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Items:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -60,6 +70,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel6volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Pain:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -67,6 +79,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel7volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Player:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -74,6 +88,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel4volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Shots:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -81,6 +97,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel2volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Voice:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -89,12 +107,18 @@ void XonoticAudioSettingsTab_fill(entity me)
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel1volume");
                makeMulti(s, "snd_channel5volume"); // @!#%'n Tuba
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Weapons:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
        me.TR(me);
-
-       me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "menu_snd_attenuation_method", _("New style sound attenuation")));
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "snd_mutewhenidle", _("Mute sounds when not active")));
+       
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Frequency:")));
                me.TD(me, 1, 2, e = makeXonoticTextSlider("snd_speed"));
                        e.addValue(e, _("8 kHz"), "8000");
@@ -119,17 +143,12 @@ void XonoticAudioSettingsTab_fill(entity me)
                        e.addValue(e, _("7.1"), "8");
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "snd_swapstereo", _("Swap Stereo")));
+               me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "snd_swapstereo", _("Swap Stereo")));
                setDependent(e, "snd_channels", 1.5, 0.5);
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "snd_spatialization_control", _("Headphone friendly mode")));
+               me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "snd_spatialization_control", _("Headphone friendly mode")));
                setDependent(e, "snd_channels", 1.5, 0.5);
        me.TR(me);
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "menu_snd_attenuation_method", _("New style sound attenuation")));
-       me.TR(me);
+       /*me.TR(me); // Samual: I REALLY don't think these are relevant to anyone, and just clutter up the menu pointlessly. The defaults are fine.
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Spatial voices:")));
                me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "0", ZCTX(_("VOCS^None"))));
                me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "2", ZCTX(_("VOCS^Taunts"))));
@@ -146,6 +165,23 @@ void XonoticAudioSettingsTab_fill(entity me)
                        e.addValue(e, ZCTX(_("RNG^Full")), "0.015625");
                        e.configureXonoticTextSliderValues(e);
                setDependent(e, "cl_voice_directional", 0.5, -0.5);
+       me.TR(me);*/
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_hitsound", _("Hit indication sound")));
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_chatsound", _("Chat message sound")));
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "menu_sounds", _("Menu sounds")));
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Time announcer:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_announcer_maptime"));
+                       e.addValue(e, ZCTX(_("WRN^Disabled")), "0");
+                       e.addValue(e, _("1 minute"), "1");
+                       e.addValue(e, _("5 minutes"), "2");
+                       e.addValue(e, ZCTX(_("WRN^Both")), "3");
+                       e.configureXonoticTextSliderValues(e);
+       me.TR(me);
        me.TR(me);
                sl = makeXonoticSlider(0.15, 1, 0.05, "cl_autotaunt");
                        sl.valueDisplayMultiplier = 100;
@@ -159,17 +195,9 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TD(me, 1, 2, sl);
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Time warning:")));
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_sound_maptime_warning"));
-                       e.addValue(e, ZCTX(_("WRN^None")), "0");
-                       e.addValue(e, _("1 minute"), "1");
-                       e.addValue(e, _("5 minutes"), "2");
-                       e.addValue(e, ZCTX(_("WRN^Both")), "3");
-                       e.configureXonoticTextSliderValues(e);
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_hitsound", _("Hit indicator")));
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "menu_sounds", _("Menu sounds")));
+               if(cvar("developer"))
+                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showsound", _("Debug info about sounds")));
+       
 
        me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "snd_restart; snd_attenuation_method_$menu_snd_attenuation_method; sendcvar cl_hitsound; sendcvar cl_autotaunt; sendcvar cl_voice_directional; sendcvar cl_voice_directional_taunt_attenuation", COMMANDBUTTON_APPLY));
index 385252bcb106f9d1c432212b8042a8792ccfa8c6..8ef2e9d6313b7b8e038e66b80f31e6ee2bd4f297 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticEffectsSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticEffectsSettingsTab, title, string, _("Effects"))
        ATTRIB(XonoticEffectsSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticEffectsSettingsTab, rows, float, 17)
-       ATTRIB(XonoticEffectsSettingsTab, columns, float, 6.5)
+       ATTRIB(XonoticEffectsSettingsTab, columns, float, 6.2) // added extra .2 for center space 
 ENDCLASS(XonoticEffectsSettingsTab)
 entity makeXonoticEffectsSettingsTab();
 float updateCompression();
@@ -38,18 +38,18 @@ void XonoticEffectsSettingsTab_fill(entity me)
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Quality preset:")));
                n = 5 + 2 * !!cvar("developer");
                if(cvar("developer"))
-                       me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^OMG!")), '1 0 1', "exec effects-omg.cfg", 0));
-               me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Low")), '0 0 0', "exec effects-low.cfg", 0));
-               me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Medium")), '0 0 0', "exec effects-med.cfg", 0));
-               me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Normal")), '0 0 0', "exec effects-normal.cfg", 0));
-               me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^High")), '0 0 0', "exec effects-high.cfg", 0));
-               me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Ultra")), '0 0 0', "exec effects-ultra.cfg", 0));
+                       me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^OMG!")), '1 0 1', "exec effects-omg.cfg", 0));
+               me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Low")), '0 0 0', "exec effects-low.cfg", 0));
+               me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Medium")), '0 0 0', "exec effects-med.cfg", 0));
+               me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Normal")), '0 0 0', "exec effects-normal.cfg", 0));
+               me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^High")), '0 0 0', "exec effects-high.cfg", 0));
+               me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Ultra")), '0 0 0', "exec effects-ultra.cfg", 0));
                if(cvar("developer"))
-                       me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Ultimate")), '0 0 0', "exec effects-ultimate.cfg", 0));
+                       me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Ultimate")), '0.5 0 0', "exec effects-ultimate.cfg", 0));
 
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Geometry detail:")));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Geometry detail:")));
                me.TD(me, 1, 2, e = makeXonoticTextSlider("r_subdivisions_tolerance"));
                        e.addValue(e, ZCTX(_("DET^Lowest")), "16");
                        e.addValue(e, ZCTX(_("DET^Low")), "8");
@@ -59,29 +59,19 @@ void XonoticEffectsSettingsTab_fill(entity me)
                        e.addValue(e, ZCTX(_("DET^Insane")), "1");
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
-               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Antialiasing:")));
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("vid_samples"));
-                       e.addValue(e, ZCTX(_("AA^Disabled")), "1");
-                       e.addValue(e, _("2x"), "2");
-                       e.addValue(e, _("4x"), "4");
-                       e.configureXonoticTextSliderValues(e);
-                       setDependent(e, "r_viewfbo", 0, 0);
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "r_viewfbo", _("High-quality frame buffer")));
-                       setDependent(e, "vid_samples", 1, 1);
-       me.TR(me);
-               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Texture resolution:")));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Texture resolution:")));
                me.TD(me, 1, 2, e = makeXonoticPicmipSlider());
                        if(cvar("developer"))
                                e.addValue(e, ZCTX(_("RES^Leet")), "1337");
-                       e.addValue(e, ZCTX(_("RES^Lowest")), "2");
+                       e.addValue(e, ZCTX(_("RES^Lowest")), "3");
+                       e.addValue(e, ZCTX(_("RES^Very low")), "2");
                        e.addValue(e, ZCTX(_("RES^Low")), "1");
                        e.addValue(e, ZCTX(_("RES^Normal")), "0");
                        e.addValue(e, ZCTX(_("RES^Good")), "-1");
                        e.addValue(e, ZCTX(_("RES^Best")), "-2");
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
-               me.TDempty(me, 0.2);
+       me.TR(me);
                {
                        // detect texture compression method
                        float f;
@@ -91,75 +81,59 @@ void XonoticEffectsSettingsTab_fill(entity me)
                                case 0:
                                        break;
                                case 1:
-                                       me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", _("Avoid lossy texture compression")));
+                                       me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "r_texture_dds_load", _("Avoid lossy texture compression")));
                                        break;
                                case 2:
-                                       me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", _("Avoid lossy texture compression")));
+                                       me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "r_texture_dds_load", _("Avoid lossy texture compression")));
                                                makeMulti(e, "gl_texturecompression");
                                        break;
                        }
                }
        me.TR(me);
-       me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Anisotropy:")));
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("gl_texture_anisotropy"));
-                       e.addValue(e, ZCTX(_("ANISO^Disabled")), "1");
-                       e.addValue(e, _("2x"), "2");
-                       e.addValue(e, _("4x"), "4");
-                       e.addValue(e, _("8x"), "8");
-                       e.addValue(e, _("16x"), "16");
-                       e.configureXonoticTextSliderValues(e);
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(1, "mod_q3bsp_nolightmaps", _("Use lightmaps")));
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_glsl_deluxemapping", _("Deluxe mapping")));
+                       setDependentAND(e, "vid_gl20", 1, 1, "mod_q3bsp_nolightmaps", 0, 0);
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_gloss", _("Gloss")));
+                       setDependentAND3(e, "vid_gl20", 1, 1, "mod_q3bsp_nolightmaps", 0, 0, "r_glsl_deluxemapping", 1, 1);
+       me.TR(me);
        me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Particles quality:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(0.2, 1.0, 0.1, "cl_particles_quality"));
        me.TR(me);
-               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Particle quality:")));
-               me.TD(me, 1, 1.9, e = makeXonoticSlider(0.2, 1.0, 0.1, "cl_particles_quality"));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Particles distance:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(500, 2000, 100, "r_drawparticles_drawdistance"));
        me.TR(me);
-               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Particle distance:")));
-               me.TD(me, 1, 1.9, e = makeXonoticSlider(500, 2000, 100, "r_drawparticles_drawdistance"));
+       me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Damage effects:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_damageeffect"));
+                       e.addValue(e, ZCTX(_("DMGPRTCLS^Disabled")), "0");
+                       e.addValue(e, ZCTX(_("DMGPRTCLS^Skeletal")), "1");
+                       e.addValue(e, ZCTX(_("DMGPRTCLS^All")), "2");
+                       e.configureXonoticTextSliderValues(e);
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1.5, e = makeXonoticCheckBox(0, "cl_decals", _("Decals")));
-               me.TD(me, 1, 1.5, e = makeXonoticCheckBox(0, "cl_decals_models", _("Decals on models")));
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "cl_decals", _("Decals")));
+               me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "cl_decals_models", _("Decals on models")));
                        setDependent(e, "cl_decals", 1, 1);
        me.TR(me);
                me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, _("Distance:")));
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Distance:")));
                        setDependent(e, "cl_decals", 1, 1);
-               me.TD(me, 1, 1.9, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance"));
+               me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance"));
                        setDependent(e, "cl_decals", 1, 1);
        me.TR(me);
                me.TDempty(me, 0.2);
-           me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, _("Time:")));
+           me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Time:")));
                setDependent(e, "cl_decals", 1, 1);
-           me.TD(me, 1, 1.9, e = makeXonoticSlider(1, 20, 1, "cl_decals_time"));
+           me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_time"));
                setDependent(e, "cl_decals", 1, 1);
 
-       me.gotoRC(me, 2, 3.5); me.setFirstColumn(me, me.currentColumn);
-       me.TD(me, 1, 1.2, e = makeXonoticCheckBox(1, "mod_q3bsp_nolightmaps", _("Use lightmaps")));
-       me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_glsl_deluxemapping", _("Deluxe mapping")));
-               setDependentAND(e, "vid_gl20", 1, 1, "mod_q3bsp_nolightmaps", 0, 0);
-       me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "r_shadow_gloss", _("Gloss"))); // FIXME move this box elsewhere, it has nothing to do with Q3BSP lightmaps
-               setDependent(e, "vid_gl20", 1, 1);
-       me.TR(me);
-               me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping", _("Offset mapping")));
-                       setDependent(e, "vid_gl20", 1, 1);
-               me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping_reliefmapping", _("Relief mapping")));
-                       setDependentAND(e, "vid_gl20", 1, 1, "r_glsl_offsetmapping", 1, 1);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_water", _("Reflections:")));
-                       setDependent(e, "vid_gl20", 1, 1);
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("r_water_resolutionmultiplier"));
-                       e.addValue(e, _("Blurred"), "0.25");
-                       e.addValue(e, ZCTX(_("REFL^Good")), "0.5");
-                       e.addValue(e, _("Sharp"), "1");
-                       e.configureXonoticTextSliderValues(e);
-                       setDependentAND(e, "vid_gl20", 1, 1, "r_water", 1, 1);
-       me.TR(me);
-               if(cvar("developer"))
-                       me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(3, 0, "r_showsurfaces", _("Show surfaces")));
+       me.gotoRC(me, 2, 3.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_coronas", _("Coronas")));
+               me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "r_coronas_occlusionquery", _("Use Occlusion Queries")));
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticRadioButton(1, string_null, string_null, _("No dynamic lighting")));
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "gl_flashblend", string_null, _("Flash blend approximation")));
+               me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "gl_flashblend", string_null, _("Fake corona lighting")));
        me.TR(me);
                me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "r_shadow_realtime_dlight", string_null, _("Realtime dynamic lighting")));
                me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_realtime_dlight_shadows", _("Shadows")));
@@ -175,22 +149,37 @@ void XonoticEffectsSettingsTab_fill(entity me)
                me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_shadowmapping", _("Soft shadows")));
                        setDependentWeird(e, someShadowCvarIsEnabled);
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_coronas", _("Coronas")));
-               me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "r_coronas_occlusionquery", _("Use Occlusion Queries")));
+               if(cvar("developer"))
+                       me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(3, 0, "r_showsurfaces", _("Show surfaces")));
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping", _("Offset mapping")));
+                       setDependent(e, "vid_gl20", 1, 1);
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping_reliefmapping", _("Relief mapping")));
+                       setDependentAND(e, "vid_gl20", 1, 1, "r_glsl_offsetmapping", 1, 1);
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping_lod", _("LOD")));
+                       setDependentAND(e, "vid_gl20", 1, 1, "r_glsl_offsetmapping", 1, 1);
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_bloom", _("Bloom")));
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_bloom", _("High Dynamic Range (HDR)")));
-       
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_water", _("Reflections:")));
+                       setDependent(e, "vid_gl20", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("r_water_resolutionmultiplier"));
+                       e.addValue(e, _("Blurred"), "0.25");
+                       e.addValue(e, ZCTX(_("REFL^Good")), "0.5");
+                       e.addValue(e, _("Sharp"), "1");
+                       e.configureXonoticTextSliderValues(e);
+                       setDependentAND(e, "vid_gl20", 1, 1, "r_water", 1, 1);
        me.TR(me);
                s = makeXonoticSlider(0.1, 1, 0.1, "r_motionblur");
                me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, s, _("Motion blur:")));
                if(s.value != e.savedValue)
-                       e.savedValue = 0.5; // default
+                       e.savedValue = 0.4; // default
                me.TD(me, 1, 2, s);
        me.TR(me);
-               e = makeXonoticCheckBoxEx(0.5, 0, "hud_postprocessing_maxbluralpha", _("Blur and sharpen postprocessing"));
+               me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(0.5, 0, "hud_postprocessing_maxbluralpha", _("Extra postprocessing effects")));
                makeMulti(e, "hud_powerup");
-               me.TD(me, 1, 2, e);
-       
+               setDependent(e, "vid_gl20", 1, 1);
+                       
        me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "vid_restart", COMMANDBUTTON_APPLY));
 }
index 440d00d8b1aefc0b07d7f555ec7c45a8abb4780e..96bf5e5c67d207f3b8b864535eca34c2a6628a85 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticInputSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticInputSettingsTab, title, string, _("Input"))
        ATTRIB(XonoticInputSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticInputSettingsTab, rows, float, 17)
-       ATTRIB(XonoticInputSettingsTab, columns, float, 6.5)
+       ATTRIB(XonoticInputSettingsTab, columns, float, 6.2) // added extra .2 for center space 
 ENDCLASS(XonoticInputSettingsTab)
 entity makeXonoticInputSettingsTab();
 #endif
@@ -25,51 +25,66 @@ void XonoticInputSettingsTab_fill(entity me)
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Key bindings:")));
        me.TR(me);
-               me.TD(me, me.rows - 4, 3.3, kb = makeXonoticKeyBinder());
+               me.TD(me, me.rows - 4, 3, kb = makeXonoticKeyBinder());
        me.gotoRC(me, me.rows - 3, 0);
-       me.TR(me);
-               me.TD(me, 1, 1.1, e = makeXonoticButton(_("Change key..."), '0 0 0'));
+               me.TD(me, 1, 1, e = makeXonoticButton(_("Change key..."), '0 0 0'));
                        e.onClick = KeyBinder_Bind_Change;
                        e.onClickEntity = kb;
                        kb.keyGrabButton = e;
-               me.TD(me, 1, 1.1, e = makeXonoticButton(_("Edit..."), '0 0 0'));
+               me.TD(me, 1, 1, e = makeXonoticButton(_("Edit..."), '0 0 0'));
                        e.onClick = KeyBinder_Bind_Edit;
                        e.onClickEntity = kb;
                        kb.userbindEditButton = e;
                        kb.userbindEditDialog = main.userbindEditDialog;
                        main.userbindEditDialog.keybindBox = kb;
-               me.TD(me, 1, 1.1, e = makeXonoticButton(_("Clear"), '0 0 0'));
+               me.TD(me, 1, 1, e = makeXonoticButton(_("Clear"), '0 0 0'));
                        e.onClick = KeyBinder_Bind_Clear;
                        e.onClickEntity = kb;
 
-       me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Sensitivity:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(1, 32, 0.2, "sensitivity"));
-       me.TR(me);
-               if(cvar("menu_mouse_absolute") == 0) // TODO remove this entirely later
-               {
-                       me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("UI mouse speed:")));
-                       me.TD(me, 1, 2, e = makeXonoticSlider(0.2, 4.0, 0.1, "menu_mouse_speed"));
-               }
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_closeontoggleconsole", _("Pressing \"enter console\" key also closes it")));
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "m_filter", _("Mouse filter")));
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_movement_track_canjump", _("Automatically repeat jumping if holding jump")));
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(1.022, "m_pitch", _("Invert mouse")));
        me.TR(me);
                if(cvar_type("joy_enable") & CVAR_TYPEFLAG_ENGINE)
                        me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joy_enable", _("Use joystick input")));
                else if(cvar_type("joystick") & CVAR_TYPEFLAG_ENGINE)
                        me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joystick", _("Use joystick input")));
+               else
+               {
+                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, string_null, _("Use joystick input")));
+                       e.disabled = 1; // the option is never available in this case, just there for show
+               }
        me.TR(me);
-               if(cvar_type("vid_dgamouse") & CVAR_TYPEFLAG_ENGINE)
-                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_dgamouse", _("Turn off OS mouse acceleration")));
-               else if(cvar_type("apple_mouse_noaccel") & CVAR_TYPEFLAG_ENGINE)
-                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "apple_mouse_noaccel", _("Turn off OS mouse acceleration")));
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_closeontoggleconsole", _("\"enter console\" also closes")));
+               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Mouse:")));
        me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Sensitivity:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(1, 32, 0.2, "sensitivity"));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "m_filter", _("Smooth aiming")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1.022, "m_pitch", _("Invert aiming")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               if(cvar_type("vid_dgamouse") & CVAR_TYPEFLAG_ENGINE)
+                       me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "vid_dgamouse", _("Disable system mouse acceleration")));
+               else if(cvar_type("apple_mouse_noaccel") & CVAR_TYPEFLAG_ENGINE)
+                       me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "apple_mouse_noaccel", _("Disable system mouse acceleration")));
+               else
+               {
+                       me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, string_null, _("Disable system mouse acceleration")));
+                       e.disabled = 1; // the option is never available in this case, just there for show
+               }
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_movement_track_canjump", _("Holding jump key keeps jumping")));
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "m_accelerate", _("Enable built in mouse acceleration")));
+               
+       
        me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "sendcvar cl_movement_track_canjump", COMMANDBUTTON_APPLY));
 }
index 61295359aa67fe2e4ddf71a5783b3ac112d96f68..e743ccf2e4ef6cdfb9bcc13aae27b5f64a9b63eb 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticMiscSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticMiscSettingsTab, title, string, _("Misc"))
        ATTRIB(XonoticMiscSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticMiscSettingsTab, rows, float, 17)
-       ATTRIB(XonoticMiscSettingsTab, columns, float, 6.5)
+       ATTRIB(XonoticMiscSettingsTab, columns, float, 6.2)
 ENDCLASS(XonoticMiscSettingsTab)
 entity makeXonoticMiscSettingsTab();
 #endif
@@ -23,50 +23,128 @@ void XonoticMiscSettingsTab_fill(entity me)
        entity sk;
 
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Menu skins:")));
+               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Network:")));
        me.TR(me);
-               me.TD(me, me.rows - 2, 3, sk = makeXonoticSkinList());
-       me.gotoRC(me, me.rows - 1, 0);
-               me.TD(me, 1, 3, e = makeXonoticButton(_("Apply immediately"), '0 0 0'));
-                       e.onClick = SetSkin_Click;
-                       e.onClickEntity = sk;
-
-       me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
-               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Text language:")));
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Speed:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("_cl_rate"));
+                       e.addValue(e, _("56k"), "4000");
+                       e.addValue(e, _("ISDN"), "7000");
+                       e.addValue(e, _("Slow ADSL"), "15000");
+                       e.addValue(e, _("Fast ADSL"), "20000");
+                       e.addValue(e, _("Broadband"), "66666");
+                       e.configureXonoticTextSliderValues(e);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Input packets/s:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(20, 100, 5, "cl_netfps"));
+       me.TR(me);
+               if(cvar("developer"))
+               {
+                       me.TDempty(me, 0.2);
+                       me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Local latency:")));
+                       me.TD(me, 1, 2, e = makeXonoticSlider(0, 1000, 25, "cl_netlocalping"));
+               }
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 1.8, e = makeXonoticTextLabel(0, _("Client UDP port:")));
+               me.TD(me, 1, 1, e = makeXonoticInputBox(0, "cl_port"));
+       me.TR(me);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "shownetgraph", _("Show netgraph")));
        me.TR(me);
-               me.TD(me, 3, 3, sk = makeXonoticLanguageList());
        me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_movement", _("Client-side movement prediction")));
        me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_movement_errorcompensation", _("Movement error compensation")));
+               setDependent(e, "cl_movement", 1, 1);
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Downloads:")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Maximum:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(1, 5, 1, "cl_curl_maxdownloads"));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Speed (kB/s):")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(10, 1500, 10, "cl_curl_maxspeed"));
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticButton(_("Apply immediately"), '0 0 0'));
-                       e.onClick = SetLanguage_Click;
-                       e.onClickEntity = sk;
 
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Framerate:")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Maximum:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_maxfps"));
+                       e.addValue(e, ZCTX(_("MAXFPS^5 fps")), "5");
+                       e.addValue(e, ZCTX(_("MAXFPS^10 fps")), "10");
+                       e.addValue(e, ZCTX(_("MAXFPS^20 fps")), "20");
+                       e.addValue(e, ZCTX(_("MAXFPS^30 fps")), "30");
+                       e.addValue(e, ZCTX(_("MAXFPS^40 fps")), "40");
+                       e.addValue(e, ZCTX(_("MAXFPS^50 fps")), "50");
+                       e.addValue(e, ZCTX(_("MAXFPS^60 fps")), "60");
+                       e.addValue(e, ZCTX(_("MAXFPS^70 fps")), "70");
+                       e.addValue(e, ZCTX(_("MAXFPS^100 fps")), "100");
+                       e.addValue(e, ZCTX(_("MAXFPS^125 fps")), "125");
+                       e.addValue(e, ZCTX(_("MAXFPS^200 fps")), "200");
+                       e.addValue(e, ZCTX(_("MAXFPS^Unlimited")), "0");
+                       e.configureXonoticTextSliderValues(e);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Target:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_minfps"));
+                       e.addValue(e, ZCTX(_("TRGT^Disabled")), "0");
+                       e.addValue(e, ZCTX(_("TRGT^30 fps")), "30");
+                       e.addValue(e, ZCTX(_("TRGT^40 fps")), "40");
+                       e.addValue(e, ZCTX(_("TRGT^50 fps")), "50");
+                       e.addValue(e, ZCTX(_("TRGT^60 fps")), "60");
+                       e.addValue(e, ZCTX(_("TRGT^100 fps")), "100");
+                       e.addValue(e, ZCTX(_("TRGT^125 fps")), "125");
+                       e.addValue(e, ZCTX(_("TRGT^200 fps")), "200");
+                       e.configureXonoticTextSliderValues(e);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Idle limit:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_maxidlefps"));
+                       e.addValue(e, ZCTX(_("IDLFPS^10 fps")), "10");
+                       e.addValue(e, ZCTX(_("IDLFPS^20 fps")), "20");
+                       e.addValue(e, ZCTX(_("IDLFPS^30 fps")), "30");
+                       e.addValue(e, ZCTX(_("IDLFPS^60 fps")), "60");
+                       e.addValue(e, ZCTX(_("IDLFPS^Unlimited")), "0");
+                       e.configureXonoticTextSliderValues(e);
+       me.TR(me);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "showfps", _("Show frames per second")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_maxfps_alwayssleep", _("Save processing time for other apps")));
+               setDependent(e, "cl_maxfps", 1, 1000);
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Menu tooltips:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("menu_tooltips"));
+                       e.addValue(e, ZCTX(_("TLTIP^Disabled")), "0");
+                       e.addValue(e, ZCTX(_("TLTIP^Standard")), "1");
+                       e.addValue(e, ZCTX(_("TLTIP^Advanced")), "2");
+                       e.configureXonoticTextSliderValues(e);
        me.TR(me);
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showtime", _("Show current time")));
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showdate", _("Show current date")));
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showfps", _("Show frames per second")));
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_maxfps_alwayssleep", _("Minimize input latency")));
-
-       if(cvar("developer"))
-       {
-               me.TR(me);
-               me.TR(me);
-                       me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Menu Tooltips:")));
-                       me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_tooltips", "0", _("Off")));
-                       me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "menu_tooltips", "1", _("Standard")));
-                       me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "menu_tooltips", "2", _("Advanced")));
-       }
-
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "developer", _("Enable developer mode")));
        me.TR(me);
        me.TR(me);
                me.TDempty(me, 0.5);
                me.TD(me, 1, 2, e = makeXonoticButton(_("Advanced settings..."), '0 0 0'));
                        e.onClick = DialogOpenButton_Click;
                        e.onClickEntity = main.cvarsDialog;
+       me.TR(me);
 }
 #endif
index be2b64259cf15bf615835df26f44833247873dae..7ebca4162ce78174a5c9e6a93ffcbaeb8bb09b94 100644 (file)
@@ -5,7 +5,7 @@ CLASS(XonoticCvarsDialog) EXTENDS(XonoticDialog)
        ATTRIB(XonoticCvarsDialog, title, string, _("Advanced settings"))
        ATTRIB(XonoticCvarsDialog, color, vector, SKINCOLOR_DIALOG_CVARS)
        ATTRIB(XonoticCvarsDialog, intendedWidth, float, 0.8)
-       ATTRIB(XonoticCvarsDialog, rows, float, 25)
+       ATTRIB(XonoticCvarsDialog, rows, float, 24)
        ATTRIB(XonoticCvarsDialog, columns, float, 6)
 ENDCLASS(XonoticCvarsDialog)
 #endif
@@ -15,14 +15,24 @@ void XonoticCvarsDialog_showNotify(entity me)
 {
        loadAllCvars(me);
 }
-void XonoticCvarsDialog_fill(entity me)
+void XonoticCvarsDialog_fill(entity me) // in this dialog, use SKINCOLOR_CVARLIST_CONTROLS to color ALL controls 
 {
        entity e, cvarlist, btn;
+       
        cvarlist = makeXonoticCvarList();
+       
+       cvarlist.color = 
+               cvarlist.colorF = 
+               cvarlist.color2 = 
+               cvarlist.colorC = 
+               SKINCOLOR_CVARLIST_CONTROLS;
+       
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Cvar filter:")));
-               me.TD(me, 1, 0.5, btn = makeXonoticButton(_("Clear"), '0 0 0'));
+               me.TD(me, 1, 0.5, btn = makeXonoticButton(_("Clear"), SKINCOLOR_CVARLIST_CONTROLS));
                me.TD(me, 1, me.columns - 1.5, e = makeXonoticInputBox(0, string_null));
+                       e.color = SKINCOLOR_CVARLIST_CONTROLS;
+                       e.colorF = SKINCOLOR_CVARLIST_CONTROLS;
                        e.onChange = CvarList_Filter_Change;
                        e.onChangeEntity = cvarlist;
                        btn.onClick = InputBox_Clear_Click;
@@ -30,7 +40,7 @@ void XonoticCvarsDialog_fill(entity me)
                        cvarlist.controlledTextbox = e; // this COULD also be the Value box, but this leads to accidentally editing stuff
        me.TR(me);
                me.TD(me, me.rows - me.currentRow - 7, me.columns, cvarlist);
-       me.gotoRC(me, me.rows - 7, 0);
+       me.gotoRC(me, me.rows - 6, 0);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Setting:")));
                me.TD(me, 1, me.columns - 1, e = makeXonoticTextLabel(0, string_null));
                        cvarlist.cvarNameBox = e;
@@ -42,11 +52,13 @@ void XonoticCvarsDialog_fill(entity me)
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Value:")));
                me.TD(me, 1, me.columns - 2, e = makeXonoticInputBox(0, string_null));
                        cvarlist.cvarValueBox = e;
+                       e.color = SKINCOLOR_CVARLIST_CONTROLS;
+                       e.colorF = SKINCOLOR_CVARLIST_CONTROLS;
                        e.onChange = CvarList_Value_Change;
                        e.onChangeEntity = cvarlist;
                        e.onEnter = CvarList_End_Editing;
                        e.onEnterEntity = cvarlist;
-               me.TD(me, 1, 1, e = makeXonoticButton(string_null, SKINCOLOR_CVARLIST_REVERTBUTTON));
+               me.TD(me, 1, 1, e = makeXonoticButton(string_null, SKINCOLOR_CVARLIST_CONTROLS));
                        cvarlist.cvarDefaultBox = e;
                        e.onClick = CvarList_Revert_Click;
                        e.onClickEntity = cvarlist;
@@ -58,7 +70,7 @@ void XonoticCvarsDialog_fill(entity me)
                        cvarlist.cvarDescriptionBox = e;
                        e.allowWrap = 1;
        me.gotoRC(me, me.rows - 1, 0);
-               me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
+               me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), SKINCOLOR_CVARLIST_CONTROLS));
                        e.onClick = Dialog_Close;
                        e.onClickEntity = me;
 }
diff --git a/qcsrc/menu/xonotic/dialog_settings_network.c b/qcsrc/menu/xonotic/dialog_settings_network.c
deleted file mode 100644 (file)
index 9f489a8..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifdef INTERFACE
-CLASS(XonoticNetworkSettingsTab) EXTENDS(XonoticTab)
-       METHOD(XonoticNetworkSettingsTab, fill, void(entity))
-       ATTRIB(XonoticNetworkSettingsTab, title, string, _("Network"))
-       ATTRIB(XonoticNetworkSettingsTab, intendedWidth, float, 0.9)
-       ATTRIB(XonoticNetworkSettingsTab, rows, float, 17)
-       ATTRIB(XonoticNetworkSettingsTab, columns, float, 6.5)
-ENDCLASS(XonoticNetworkSettingsTab)
-entity makeXonoticNetworkSettingsTab();
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeXonoticNetworkSettingsTab()
-{
-       entity me;
-       me = spawnXonoticNetworkSettingsTab();
-       me.configureDialog(me);
-       return me;
-}
-
-void XonoticNetworkSettingsTab_fill(entity me)
-{
-       entity e;
-
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_movement", _("Client-side movement prediction")));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_movement_errorcompensation", _("Movement error compensation")));
-                       setDependent(e, "cl_movement", 1, 1);
-       me.TR(me);
-               //me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_nolerp", _("Network update smoothing")));
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "shownetgraph", _("Show netgraph")));
-       me.TR(me);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Network speed:")));
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("_cl_rate"));
-                       e.addValue(e, _("56k"), "4000");
-                       e.addValue(e, _("ISDN"), "7000");
-                       e.addValue(e, _("Slow ADSL"), "15000");
-                       e.addValue(e, _("Fast ADSL"), "20000");
-                       e.addValue(e, _("Broadband"), "66666");
-                       e.configureXonoticTextSliderValues(e);
-    me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Input packets/s:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(20, 100, 1, "cl_netfps"));
-       me.TR(me);
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("HTTP downloads:")));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Downloads:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(1, 5, 1, "cl_curl_maxdownloads"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Speed (kB/s):")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(10, 1500, 10, "cl_curl_maxspeed"));
-       me.TR(me);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Client UDP port:")));
-               me.TD(me, 1, 0.64, e = makeXonoticInputBox(0, "cl_port"));
-}
-#endif
diff --git a/qcsrc/menu/xonotic/dialog_settings_user.c b/qcsrc/menu/xonotic/dialog_settings_user.c
new file mode 100644 (file)
index 0000000..9a1710a
--- /dev/null
@@ -0,0 +1,91 @@
+#ifdef INTERFACE
+CLASS(XonoticUserSettingsTab) EXTENDS(XonoticTab)
+       METHOD(XonoticUserSettingsTab, fill, void(entity))
+       ATTRIB(XonoticUserSettingsTab, title, string, _("User"))
+       ATTRIB(XonoticUserSettingsTab, intendedWidth, float, 0.9)
+       ATTRIB(XonoticUserSettingsTab, rows, float, 17)
+       ATTRIB(XonoticUserSettingsTab, columns, float, 5)
+ENDCLASS(XonoticUserSettingsTab)
+entity makeXonoticUserSettingsTab();
+#endif
+
+#ifdef IMPLEMENTATION
+entity makeXonoticUserSettingsTab()
+{
+       entity me;
+       me = spawnXonoticUserSettingsTab();
+       me.configureDialog(me);
+       return me;
+}
+
+void XonoticUserSettingsTab_fill(entity me)
+{
+       entity e;
+       entity sk;
+
+       me.TR(me);
+               me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Menu skins:")));
+       me.TR(me);
+               me.TD(me, me.rows - 2, 2, sk = makeXonoticSkinList());
+       me.gotoRC(me, me.rows - 1, 0);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("Set skin"), '0 0 0'));
+                       e.onClick = SetSkin_Click;
+                       e.onClickEntity = sk;
+
+       /* AFTER 0.6 RELEASE TODO: Add a listbox which has fonts too, this way user can select the font they want.
+       me.gotoRC(me, 0, 2.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Text language:")));
+       me.TR(me);
+               me.TD(me, 6, 1, sk = makeXonoticLanguageList());
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticButton(_("Set language"), '0 0 0'));
+                       e.onClick = SetLanguage_Click;
+                       e.onClickEntity = sk;
+
+       me.gotoRC(me, 0, 3.3); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 1.5, e = makeXonoticTextLabel(0, _("Font:")));
+       me.TR(me);
+               me.TD(me, 2, 1.5, sk = makeXonoticLanguageList());
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1.5, e = makeXonoticButton(_("Set font"), '0 0 0'));
+                       e.onClick = SetLanguage_Click;
+                       e.onClickEntity = sk;*/
+                       
+       me.gotoRC(me, 0, 3.1); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Text language:")));
+       me.TR(me);
+               me.TD(me, 6, 1, sk = makeXonoticLanguageList());
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticButton(_("Set language"), '0 0 0'));
+                       e.onClick = SetLanguage_Click;
+                       e.onClickEntity = sk;
+               
+       me.gotoRC(me, 9, 2.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_gentle", _("Disable gore effects and harsh language")));
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_allow_uidtracking", _("Allow player statistics to track your client")));
+       me.TR(me);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_allow_uid2name", _("Allow player statistics to use your nickname")));
+               setDependent(e, "cl_allow_uidtracking", 1, 1);
+               
+       me.gotoRC(me, me.rows - 3, 2.6);
+               me.TD(me, 1, 2, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "sendcvar cl_gentle; sendcvar cl_allow_uidtracking; sendcvar cl_allow_uid2name;", COMMANDBUTTON_APPLY));
+
+}
+#endif
index 474798c1785fdd98e601d941adaa8072034586ea..81b89f7afc5e6bac15a3d2cb4a6537fc96594201 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticVideoSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticVideoSettingsTab, title, string, _("Video"))
        ATTRIB(XonoticVideoSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticVideoSettingsTab, rows, float, 17)
-       ATTRIB(XonoticVideoSettingsTab, columns, float, 6.5)
+       ATTRIB(XonoticVideoSettingsTab, columns, float, 6.2) // added extra .2 for center space 
        ATTRIB(XonoticVideoSettingsTab, name, string, "videosettings")
 ENDCLASS(XonoticVideoSettingsTab)
 entity makeXonoticVideoSettingsTab();
@@ -40,27 +40,37 @@ void XonoticVideoSettingsTab_fill(entity me)
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Color depth:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(16, 32, 16, "vid_bitsperpixel"));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("vid_bitsperpixel"));
+                       e.addValue(e, _("16bit"), "16");
+                       e.addValue(e, _("32bit"), "32");
+                       e.configureXonoticTextSliderValues(e);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "vid_fullscreen", _("Full screen")));
                me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "vid_vsync", _("Vertical Synchronization")));
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_gl20", _("Use OpenGL 2.0 shaders (GLSL)")));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "v_glslgamma", _("Use GLSL to handle color control")));
-                       setDependent(e, "vid_gl20", 1, 1);
+               
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Vertex Buffer Objects (VBOs)")));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Anisotropy:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("gl_texture_anisotropy"));
+                       e.addValue(e, ZCTX(_("ANISO^Disabled")), "1");
+                       e.addValue(e, _("2x"), "2");
+                       e.addValue(e, _("4x"), "4");
+                       e.addValue(e, _("8x"), "8");
+                       e.addValue(e, _("16x"), "16");
+                       e.configureXonoticTextSliderValues(e);
        me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "0", ZCTX(_("VBO^Off"))));
-               me.TD(me, 1, 1.9, e = makeXonoticRadioButton(1, "gl_vbo", "3", _("Vertices, some Tris (compatible)")));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Antialiasing:")));
+                       setDependent(e, "r_viewfbo", 0, 0);
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("vid_samples"));
+                       e.addValue(e, ZCTX(_("AA^Disabled")), "1");
+                       e.addValue(e, _("2x"), "2");
+                       e.addValue(e, _("4x"), "4");
+                       e.configureXonoticTextSliderValues(e);
+                       setDependent(e, "r_viewfbo", 0, 0);
        me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "2", _("Vertices")));
-               me.TD(me, 1, 1.9, e = makeXonoticRadioButton(1, "gl_vbo", "1", _("Vertices and Triangles")));
+               me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "r_viewfbo", _("High-quality frame buffer")));
+                       setDependent(e, "vid_samples", 1, 1);
+               
        me.TR(me);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Depth first:")));
@@ -70,9 +80,17 @@ void XonoticVideoSettingsTab_fill(entity me)
                        e.addValue(e, ZCTX(_("DF^All")), "2");
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "gl_finish", _("Wait for GPU to finish each frame")));
+               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Vertex Buffer Objects (VBOs)")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "0", ZCTX(_("VBO^Off"))));
+               me.TD(me, 1, 1.9, e = makeXonoticRadioButton(1, "gl_vbo", "3", _("Vertices, some Tris (compatible)")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "2", _("Vertices")));
+               me.TD(me, 1, 1.9, e = makeXonoticRadioButton(1, "gl_vbo", "1", _("Vertices and Triangles")));
 
-       me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Brightness:")));
                me.TD(me, 1, 2, e = makeXonoticSlider(0.0, 0.5, 0.02, "v_brightness"));
        me.TR(me);
@@ -80,19 +98,19 @@ void XonoticVideoSettingsTab_fill(entity me)
                me.TD(me, 1, 2, e = makeXonoticSlider(1.0, 3.0, 0.05, "v_contrast"));
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gamma:")));
-                       setDependentAND(e, "r_glsl", 1, 1, "v_glslgamma", 1, 1);
+                       setDependentAND(e, "vid_gl20", 1, 1, "v_glslgamma", 1, 1);
                me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 2.0, 0.05, "v_gamma"));
-                       setDependentAND(e, "r_glsl", 1, 1, "v_glslgamma", 1, 1);
+                       setDependentAND(e, "vid_gl20", 1, 1, "v_glslgamma", 1, 1);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Contrast boost:")));
-                       setDependentAND(e, "r_glsl", 1, 1, "v_glslgamma", 1, 1);
+                       setDependentAND(e, "vid_gl20", 1, 1, "v_glslgamma", 1, 1);
                me.TD(me, 1, 2, e = makeXonoticSlider(1.0, 5.0, 0.1, "v_contrastboost"));
-                       setDependentAND(e, "r_glsl", 1, 1, "v_glslgamma", 1, 1);
+                       setDependentAND(e, "vid_gl20", 1, 1, "v_glslgamma", 1, 1);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Saturation:")));
-                       setDependent(e, "r_glsl", 1, 1);
+                       setDependent(e, "vid_gl20", 1, 1);
                me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 2.0, 0.05, "r_glsl_saturation"));
-                       setDependent(e, "r_glsl", 1, 1);
+                       setDependent(e, "vid_gl20", 1, 1);
        me.TR(me);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, ZCTX(_("LIT^Ambient:"))));
@@ -100,6 +118,26 @@ void XonoticVideoSettingsTab_fill(entity me)
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Intensity:")));
                me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 2.0, 0.05, "r_hdr_scenebrightness"));
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "gl_finish", _("Wait for GPU to finish each frame")));
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_gl20", _("Use OpenGL 2.0 shaders (GLSL)")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "v_glslgamma", _("Use GLSL to handle color control")));
+                       setDependent(e, "vid_gl20", 1, 1);
+       if(cvar("developer"))
+       {
+               me.TR(me);
+                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_psycho", _("Psycho coloring (easter egg)")));
+                               setDependent(e, "vid_gl20", 1, 1);
+               me.TR(me);
+                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_trippy", _("Trippy vertices (easter egg)")));
+                               setDependent(e, "vid_gl20", 1, 1);
+               me.TR(me);
+                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_flipped", _("Flip view horizontally")));
+       }
 
        me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "menu_cmd sync; vid_restart; menu_restart; togglemenu; defer 0.1 \"menu_cmd videosettings\"", COMMANDBUTTON_APPLY));
index 6e1be0067a075606c74b13fba4aafabe8d63788b..c37cb7e4055f105508ec1770c56eb12ffdcc5cc0 100644 (file)
@@ -123,7 +123,7 @@ void XonoticSingleplayerDialog_fill(entity me)
                me.TD(me, 1, me.columns - 2, lblTitle = makeXonoticTextLabel(0.5, _("???")));
                me.TD(me, 1, 1, btnNext = makeXonoticButton(">>", '0 0 0'));
        me.TR(me);
-               me.TD(me, me.rows - 5, me.columns, me.campaignBox = makeXonoticCampaignList());
+               me.TD(me, me.rows - 6, me.columns, me.campaignBox = makeXonoticCampaignList());
                        btnPrev.onClick = MultiCampaign_Prev;
                        btnPrev.onClickEntity = me.campaignBox;
                        btnNext.onClick = MultiCampaign_Next;
@@ -133,7 +133,12 @@ void XonoticSingleplayerDialog_fill(entity me)
                        me.campaignBox.labelTitle = lblTitle;
                        me.campaignBox.campaignGo(me.campaignBox, 0);
 
-       me.gotoRC(me, me.rows - 1, 0);
+       me.gotoRC(me, me.rows - 2, 0);
+               me.TD(me, 1, 2, e = makeXonoticTextLabel(0.5, _("Campaign Difficulty:")));
+               me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "g_campaign_skill", "-2", ZCTX(_("CSKL^Easy"))));
+               me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "g_campaign_skill", "-1", ZCTX(_("CSKL^Medium"))));
+               me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "g_campaign_skill", "0", ZCTX(_("CSKL^Hard"))));
+               me.TR(me);
                me.TD(me, 1, me.columns, e = makeXonoticButton(_("Start Singleplayer!"), '0 0 0'));
                        e.onClick = CampaignList_LoadMap;
                        e.onClickEntity = me.campaignBox;
index cbc239946a70112b25f1818756dbf930b4c63a2a..531c761f637d124dccf7b46f0cc24605b2a9d2f5 100644 (file)
@@ -1,7 +1,7 @@
 #ifdef INTERFACE
 CLASS(XonoticGametypeList) EXTENDS(XonoticListBox)
        METHOD(XonoticGametypeList, configureXonoticGametypeList, void(entity))
-       ATTRIB(XonoticGametypeList, rowsPerItem, float, 1)
+       ATTRIB(XonoticGametypeList, rowsPerItem, float, 2)
        METHOD(XonoticGametypeList, drawListBoxItem, void(entity, float, vector, float))
        METHOD(XonoticGametypeList, resizeNotify, void(entity, vector, vector, vector, vector))
        METHOD(XonoticGametypeList, setSelected, void(entity, float))
@@ -9,7 +9,10 @@ CLASS(XonoticGametypeList) EXTENDS(XonoticListBox)
        METHOD(XonoticGametypeList, saveCvars, void(entity))
 
        ATTRIB(XonoticGametypeList, realFontSize, vector, '0 0 0')
-       ATTRIB(XonoticGametypeList, realUpperMargin, float, 0)
+       ATTRIB(XonoticGametypeList, realUpperMargin1, float, 0)
+       ATTRIB(XonoticGametypeList, realUpperMargin2, float, 0)
+       ATTRIB(XonoticGametypeList, columnIconOrigin, float, 0)
+       ATTRIB(XonoticGametypeList, columnIconSize, float, 0)
        ATTRIB(XonoticGametypeList, columnNameOrigin, float, 0)
        ATTRIB(XonoticGametypeList, columnNameSize, float, 0)
 ENDCLASS(XonoticGametypeList)
@@ -27,9 +30,15 @@ entity makeXonoticGametypeList(void)
 }
 void XonoticGametypeList_configureXonoticGametypeList(entity me)
 {
-       me.loadCvars(me);
+       float i;
        me.configureXonoticListBox(me);
        me.nItems = GameType_GetCount();
+
+       // we want the pics mipmapped
+       for(i = 0; i < GameType_GetCount(); ++i)
+               draw_PreloadPictureWithFlags(GameType_GetIcon(i), PRECACHE_PIC_MIPMAP);
+
+       me.loadCvars(me);
 }
 void XonoticGametypeList_setSelected(entity me, float i)
 {
@@ -68,18 +77,28 @@ void XonoticGametypeList_saveCvars(entity me)
 void XonoticGametypeList_drawListBoxItem(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 = MapInfo_Type_ToText(GameType_GetID(i));
-       draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize)) * 0.5) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);
+
+       draw_Picture(me.columnIconOrigin * eX, GameType_GetIcon(i), me.columnIconSize * eX + eY, '1 1 1', SKINALPHA_LISTBOX_SELECTED);
+       s = GameType_GetName(i);
+       draw_Text(me.realUpperMargin1 * eY + (me.columnNameOrigin + 0.5 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);
+       //s = GameType_GetTeams(i);
+       //draw_Text(me.realUpperMargin1 * eY + (me.columnNameOrigin + 1.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);
 }
 void XonoticGametypeList_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
 {
+       me.itemAbsSize = '0 0 0';
        SUPER(XonoticServerList).resizeNotify(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.columnNameSize = 1;
+       
+       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 * (1 - me.realFontSize_y);
+       me.realUpperMargin2 = me.realUpperMargin1 + me.realFontSize_y;
+       me.columnIconOrigin = 0;
+       me.columnIconSize = me.itemAbsSize_y / me.itemAbsSize_x;
+       me.columnNameOrigin = me.columnIconOrigin + me.columnIconSize;
+       me.columnNameSize = 1 - me.columnIconSize - 2 * me.realFontSize_x;
 }
 #endif
index 20627c7a579d25adee8be4192d7e00c8264640e5..2adb9343e491b7f70f1355ad14865463753b5857 100644 (file)
@@ -9,9 +9,13 @@ CLASS(MainWindow) EXTENDS(ModalController)
        ATTRIB(MainWindow, mapInfoDialog, entity, NULL)
        ATTRIB(MainWindow, userbindEditDialog, entity, NULL)
        ATTRIB(MainWindow, winnerDialog, entity, NULL)
-       ATTRIB(MainWindow, waypointDialog, entity, NULL)
        ATTRIB(MainWindow, serverInfoDialog, entity, NULL)
        ATTRIB(MainWindow, cvarsDialog, entity, NULL)
+       ATTRIB(MainWindow, viewDialog, entity, NULL)
+       ATTRIB(MainWindow, modelDialog, entity, NULL)
+       ATTRIB(MainWindow, crosshairDialog, entity, NULL)
+       ATTRIB(MainWindow, hudDialog, entity, NULL)
+       ATTRIB(MainWindow, hudconfirmDialog, entity, NULL)
        ATTRIB(MainWindow, mainNexposee, entity, NULL)
        ATTRIB(MainWindow, fadedAlpha, float, SKINALPHA_BEHIND)
        ATTRIB(MainWindow, dialogToShow, entity, NULL)
@@ -42,18 +46,13 @@ void MainWindow_configureMainWindow(entity me)
 {
        entity n, i;
 
+       // dialog run upon startup
        me.firstRunDialog = i = spawnXonoticFirstRunDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
-
-       i = spawnXonoticTeamSelectDialog();
-       i.configureDialog(i);
-       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
-
-       i = spawnXonoticSandboxToolsDialog();
-       i.configureDialog(i);
-       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
        
+       
+       // hud_configure dialogs
        i = spawnXonoticHUDExitDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
@@ -125,7 +124,35 @@ void MainWindow_configureMainWindow(entity me)
        i = spawnXonoticHUDCenterprintDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
-
+       
+       
+       // dialogs used by settings
+       me.userbindEditDialog = i = spawnXonoticUserbindEditDialog();
+       i.configureDialog(i);
+       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
+       me.cvarsDialog = i = spawnXonoticCvarsDialog();
+       i.configureDialog(i);
+       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
+       
+       // dialog used by singleplayer
+       me.winnerDialog = i = spawnXonoticWinnerDialog();
+       i.configureDialog(i);
+       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
+       
+       // dialog used by multiplayer/join
+       me.serverInfoDialog = i = spawnXonoticServerInfoDialog();
+       i.configureDialog(i);
+       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
+       
+       // dialogs used by multiplayer/create
+       me.mapInfoDialog = i = spawnXonoticMapInfoDialog();
+       i.configureDialog(i);
+       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
        me.advancedDialog = i = spawnXonoticAdvancedDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
@@ -133,35 +160,47 @@ void MainWindow_configureMainWindow(entity me)
        me.mutatorsDialog = i = spawnXonoticMutatorsDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
 
-       me.mapInfoDialog = i = spawnXonoticMapInfoDialog();
+       // dialogs used by multiplayer/player setup
+       me.crosshairDialog = i = spawnXonoticCrosshairDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
-
-       me.userbindEditDialog = i = spawnXonoticUserbindEditDialog();
+       
+       me.hudDialog = i = spawnXonoticHUDDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
 
-       me.winnerDialog = i = spawnXonoticWinnerDialog();
+       me.hudconfirmDialog = i = spawnXonoticHUDConfirmDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
-
-       me.weaponsDialog = i = spawnXonoticWeaponsDialog();
+       
+       me.modelDialog = i = spawnXonoticModelDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
-
-       me.waypointDialog = i = spawnXonoticWaypointDialog();
+       
+       me.viewDialog = i = spawnXonoticViewDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
        
-       me.serverInfoDialog = i = spawnXonoticServerInfoDialog();
+       me.weaponsDialog = i = spawnXonoticWeaponsDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
        
-       me.cvarsDialog = i = spawnXonoticCvarsDialog();
+
+       // mutator dialogs
+       i = spawnXonoticSandboxToolsDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
        
+       
+       // miscellaneous dialogs
+       i = spawnXonoticTeamSelectDialog();
+       i.configureDialog(i);
+       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
+       
+       // main dialogs/windows
        me.mainNexposee = n = spawnXonoticNexposee();
        /*
                if(checkextension("DP_GECKO_SUPPORT"))
@@ -198,6 +237,7 @@ void MainWindow_configureMainWindow(entity me)
                n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
                n.setNexposee(n, i, SKINPOSITION_DIALOG_QUIT, SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
                n.pullNexposee(n, i, eY * (SKINHEIGHT_TITLE * SKINFONTSIZE_TITLE / conheight));
+               
        me.addItem(me, n, '0 0 0', '1 1 0', SKINALPHAS_MAINMENU_z);
        me.moveItemAfter(me, n, NULL);
 
index 14bf48ec9edf0f00282075f5549ce40f3456587b..54b9554a80456d1ccc25a2f7df2c02790c1f961a 100644 (file)
@@ -193,9 +193,9 @@ void XonoticMapList_drawListBoxItem(entity me, float i, vector absSize, float is
 
        if(included)
                draw_Picture(me.checkMarkOrigin, "checkmark", me.checkMarkSize, '1 1 1', 1);
-       s = draw_TextShortenToWidth(MapInfo_Map_titlestring, me.columnNameSize, 0, me.realFontSize);
+       s = draw_TextShortenToWidth(strdecolorize(MapInfo_Map_titlestring), 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, SKINCOLOR_MAPLIST_TITLE, theAlpha, 0);
-       s = draw_TextShortenToWidth(MapInfo_Map_author, me.columnNameSize, 0,  me.realFontSize);
+       s = draw_TextShortenToWidth(strdecolorize(MapInfo_Map_author), me.columnNameSize, 0,  me.realFontSize);
        draw_Text(me.realUpperMargin2 * eY + (me.columnNameOrigin + 1.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, SKINCOLOR_MAPLIST_AUTHOR, theAlpha, 0);
 
        MapInfo_ClearTemps();
index b3a658e3bd5732850058723633eb3ce8b12259a2..4c1c62af26d6319350776e9526782f1d5702b440 100644 (file)
@@ -84,7 +84,7 @@ void XonoticPlayerList_resizeNotify(entity me, vector relOrigin, vector relSize,
        me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
 
        // this list does 1 char left and right margin
-       me.columnScoreSize = 3 * me.realFontSize_x;
+       me.columnScoreSize = 5 * me.realFontSize_x;
        me.columnNameSize = 1 - 3 * me.realFontSize_x - me.columnScoreSize;
 
        me.columnNameOrigin = me.realFontSize_x;
@@ -115,7 +115,7 @@ void XonoticPlayerList_drawListBoxItem(entity me, float i, vector absSize, float
 
        if(substring(score, strlen(score) - 10, 10) == ":spectator")
        {
-               score = "-666";
+               score = _("spectator");
        }
        else
        {
@@ -123,6 +123,9 @@ void XonoticPlayerList_drawListBoxItem(entity me, float i, vector absSize, float
                        score = substring(score, 0, t);
                if((t = strstrofs(score, ",", 0)) >= 0)
                        score = substring(score, 0, t);
+                       
+               if(stof(score) == -666)
+                       score = _("spectator");
        }
 
        s = draw_TextShortenToWidth(s, me.columnNameSize, 1, me.realFontSize);
index 74fe810fe74759d9d015e69f1248c4207e4cb8a4..486bcce8dd0ac10095c3557131fada9592a32a82 100644 (file)
@@ -565,21 +565,62 @@ float GameType_GetID(float cnt)
 {
        float i;
        i = 0;
-#define GAMETYPE(id) if(i++ == cnt) return id;
+       
+       #define GAMETYPE(id) if(i++ == cnt) return id;
        GAMETYPES
-#undef GAMETYPE
+       #undef GAMETYPE
+       
        return 0;
 }
+
 float GameType_GetCount()
 {
        float i;
        i = 0;
-#define GAMETYPE(id) ++i;
+       
+       #define GAMETYPE(id) ++i;
        GAMETYPES
-#undef GAMETYPE
+       #undef GAMETYPE
+       
        return i;
 }
 
+string GameType_GetName(float cnt)
+{
+       float i = GameType_GetID(cnt);
+       
+       if(i)
+               return MapInfo_Type_ToText(i);
+       
+       return "";
+}
+
+string GameType_GetIcon(float cnt)
+{
+       float i = GameType_GetID(cnt);
+       
+       if(i)
+               return strcat("gametype_", MapInfo_Type_ToString(i));
+       
+       return "";
+}
+
+/*string GameType_GetTeams(float cnt) // poor implementation, later something else could be done that's better?
+{
+       float i = GameType_GetID(cnt);
+       string s = _MapInfo_GetDefaultEx(i);
+       
+       if(i)
+       {
+               if(strstrofs(s, "teams", 0) >= 0)
+                       return _("teamplay");
+               else
+                       return _("free for all");
+       }
+       
+       return _("tuba for all");
+}*/
+
 void dialog_hudpanel_common_notoggle(entity me, string panelname)
 {
        float i;
index 6165fb3606b945968910c437bf76732d931c3ad5..f682fd30fd39116221344e16fea723a4424fd1bf 100644 (file)
@@ -37,6 +37,9 @@ void URI_Get_Callback(float id, float status, string data);
 // game type list box stuff (does not NEED to contain all game types, other
 // types stay available via console)
 float GameType_GetID(float cnt);
+string GameType_GetName(float cnt);
+string GameType_GetIcon(float cnt);
+//string GameType_GetTeams(float cnt);
 float GameType_GetCount();
 
 void dialog_hudpanel_common_notoggle(entity me, string panelname);
index aa47110bee63eeec644582a2b99e8b356d955d15..952c3c956af14273fa62a3ecded70b9935dfeb42 100644 (file)
@@ -10,7 +10,6 @@ CLASS(XonoticWeaponsList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticWeaponsList, realFontSize, vector, '0 0 0')
        ATTRIB(XonoticWeaponsList, realUpperMargin, float, 0)
        METHOD(XonoticWeaponsList, mouseDrag, float(entity, vector))
-       ATTRIB(XonoticWeaponsList, scrollbarWidth, float, 0)
 ENDCLASS(XonoticWeaponsList)
 entity makeXonoticWeaponsList();
 void WeaponsList_MoveUp_Click(entity btn, entity me);
@@ -66,11 +65,16 @@ void XonoticWeaponsList_resizeNotify(entity me, vector relOrigin, vector relSize
 }
 float XonoticWeaponsList_mouseDrag(entity me, vector pos)
 {
-       float f, i;
+       float f, i, scrollbar;
        i = me.selectedItem;
        f = SUPER(XonoticWeaponsList).mouseDrag(me, pos);
-       if(me.selectedItem != i)
-               cvar_set("cl_weaponpriority", swapInPriorityList(cvar_string("cl_weaponpriority"), me.selectedItem, i));
+       
+       if(me.pressed != 1) // don't change priority if the person is just scrolling
+       {
+               if(me.selectedItem != i)
+                       cvar_set("cl_weaponpriority", swapInPriorityList(cvar_string("cl_weaponpriority"), me.selectedItem, i));
+       }
+       
        return f;
 }
 string XonoticWeaponsList_toString(entity me)
index 1111909b3ea194fcbb6df6ddc698912dcaebff24..e336efc538db42d1d1f737b96713047762903fe5 100644 (file)
@@ -236,7 +236,6 @@ float autocvar_g_balance_falldamage_deadminspeed;
 float autocvar_g_balance_falldamage_factor;
 float autocvar_g_balance_falldamage_maxdamage;
 float autocvar_g_balance_falldamage_minspeed;
-float autocvar_g_balance_fireball_primary_ammo;
 float autocvar_g_balance_fireball_primary_animtime;
 float autocvar_g_balance_fireball_primary_bfgdamage;
 float autocvar_g_balance_fireball_primary_bfgforce;
@@ -255,7 +254,6 @@ float autocvar_g_balance_fireball_primary_radius;
 float autocvar_g_balance_fireball_primary_refire;
 float autocvar_g_balance_fireball_primary_refire2;
 float autocvar_g_balance_fireball_primary_speed;
-float autocvar_g_balance_fireball_secondary_ammo;
 float autocvar_g_balance_fireball_secondary_animtime;
 float autocvar_g_balance_fireball_secondary_damage;
 float autocvar_g_balance_fireball_secondary_damageforcescale;
@@ -268,8 +266,6 @@ float autocvar_g_balance_fireball_secondary_lifetime;
 float autocvar_g_balance_fireball_secondary_refire;
 float autocvar_g_balance_fireball_secondary_speed;
 float autocvar_g_balance_fireball_secondary_speed_up;
-float autocvar_g_balance_fireball_reload_ammo;
-float autocvar_g_balance_fireball_reload_time;
 float autocvar_g_balance_firetransfer_damage;
 float autocvar_g_balance_firetransfer_time;
 float autocvar_g_balance_fuel_limit;
@@ -561,6 +557,11 @@ float autocvar_g_balance_porto_primary_animtime;
 float autocvar_g_balance_porto_primary_lifetime;
 float autocvar_g_balance_porto_primary_refire;
 float autocvar_g_balance_porto_primary_speed;
+float autocvar_g_balance_porto_secondary;
+float autocvar_g_balance_porto_secondary_animtime;
+float autocvar_g_balance_porto_secondary_lifetime;
+float autocvar_g_balance_porto_secondary_refire;
+float autocvar_g_balance_porto_secondary_speed;
 float autocvar_g_balance_powerup_invincible_takedamage;
 float autocvar_g_balance_powerup_invincible_time;
 float autocvar_g_balance_powerup_strength_damage;
@@ -1211,3 +1212,4 @@ float autocvar_g_sandbox_object_scale_min;
 float autocvar_g_sandbox_object_scale_max;
 float autocvar_g_sandbox_object_material_velocity_min;
 float autocvar_g_sandbox_object_material_velocity_factor;
+float autocvar_g_max_info_autoscreenshot;
index 2fdbdd3f4fe8c0a1a7ea237ec1725cf3d1459c72..63a6cb336d4054c90d3aa0283be057005139bed0 100644 (file)
@@ -1106,7 +1106,7 @@ float bot_cmd_debug_assert_canfire()
                if(f)
                {
                        self.colormod = '0 8 8';
-                       print("Bot wants to fire, inhibited by weaponentity state\n");
+                       print("Bot ", self.netname, " using ", self.weaponname, " wants to fire, inhibited by weaponentity state\n");
                }
        }
        else if(ATTACK_FINISHED(self) > time)
@@ -1114,7 +1114,7 @@ float bot_cmd_debug_assert_canfire()
                if(f)
                {
                        self.colormod = '8 0 8';
-                       print("Bot wants to fire, inhibited by ATTACK_FINISHED\n");
+                       print("Bot ", self.netname, " using ", self.weaponname, " wants to fire, inhibited by ATTACK_FINISHED (", ftos(ATTACK_FINISHED(self) - time), " seconds left)\n");
                }
        }
        else if(self.tuba_note)
@@ -1122,7 +1122,7 @@ float bot_cmd_debug_assert_canfire()
                if(f)
                {
                        self.colormod = '8 0 0';
-                       print("Bot wants to fire, bot still has an active tuba note\n");
+                       print("Bot ", self.netname, " using ", self.weaponname, " wants to fire, bot still has an active tuba note\n");
                }
        }
        else
@@ -1130,7 +1130,7 @@ float bot_cmd_debug_assert_canfire()
                if(!f)
                {
                        self.colormod = '8 8 0';
-                       print("Bot thinks it has fired, but apparently did not\n");
+                       print("Bot ", self.netname, " using ", self.weaponname, " thinks it has fired, but apparently did not; ATTACK_FINISHED says ", ftos(ATTACK_FINISHED(self) - time), " seconds left\n");
                }
        }
 
index e7154b7f52f17617b9a79c7560aba4e551f99161..5ba860940a014344a3338f27551448ddbce0ad31 100644 (file)
@@ -92,9 +92,32 @@ float CheatsAllowed(float i, float argc, float fr) // the cheat gets passed as a
        if((++attempting, !CheatsAllowed(i,argc,fr))) \
                break
 
+float num_autoscreenshot;
+void info_autoscreenshot_findtarget()
+{
+       entity e;
+       e = find(world, targetname, self.target);
+       if(!e)
+       {
+               objerror("Missing target. FAIL!");
+               return;
+       }
+       vector a = vectoangles(e.origin - self.origin);
+       a_x = -a_x; // don't ask
+       self.angles_x = a_x;
+       self.angles_y = a_y;
+       // we leave Rick Roll alone
+}
 void spawnfunc_info_autoscreenshot()
 {
-       // empty spawnfunc just so this entity can exist
+       if(++num_autoscreenshot > autocvar_g_max_info_autoscreenshot)
+       {
+               objerror("Too many info_autoscreenshot entitites. FAIL!");
+               return;
+       }
+       if(self.target != "")
+               InitializeEntity(self, info_autoscreenshot_findtarget, INITPRIO_FINDTARGET);
+       // this one just has to exist
 }
 
 float CheatImpulse(float i)
index ebf4abc4b4d85bc7181fd408221f03c75df988a4..ba4249744eb90862ab299b96b151ebdad0cd41da 100644 (file)
@@ -967,6 +967,7 @@ float ClientInit_SendEntity(entity to, float sf)
        WriteByte(MSG_ENTITY, autocvar_g_balance_minelayer_limit); // minelayer max mines
        WriteByte(MSG_ENTITY, autocvar_g_balance_hagar_secondary_load_max); // hagar max loadable rockets
        WriteCoord(MSG_ENTITY, autocvar_g_trueaim_minrange);
+       WriteByte(MSG_ENTITY, autocvar_g_balance_porto_secondary);
        return TRUE;
 }
 
@@ -1895,7 +1896,8 @@ void player_powerups (void)
                }
                if (self.items & IT_SUPERWEAPON)
                {
-                       self.effects = self.effects | EF_RED;
+                       //if(W_WeaponBit(self.weapon) & WEPBIT_SUPERWEAPONS)
+                       //      self.effects = self.effects | EF_RED;
                        if (!(self.weapons & WEPBIT_SUPERWEAPONS))
                        {
                                self.superweapons_finished = 0;
@@ -1917,15 +1919,22 @@ void player_powerups (void)
                                }
                        }
                }
-               else
+               else if(self.weapons & WEPBIT_SUPERWEAPONS)
                {
-                       if (time < self.superweapons_finished)
+                       if (time < self.superweapons_finished || (self.items & IT_UNLIMITED_SUPERWEAPONS))
                        {
                                self.items = self.items | IT_SUPERWEAPON;
                                sprint(self, "^3You now have a superweapon\n");
                        }
                        else
+                       {
+                               self.superweapons_finished = 0;
                                self.weapons &~= WEPBIT_SUPERWEAPONS; // just in case
+                       }
+               }
+               else
+               {
+                       self.superweapons_finished = 0;
                }
        }
        
index 15173b9ad4bfccb434c1d52980ccee57e3e21d76..49b52555f6ebb0734b8ee371a3b33f08b5cf8466 100644 (file)
@@ -198,6 +198,8 @@ void CopyBody(float keepvelocity)
 
        Drag_MoveDrag(oldself, self);
 
+       self.owner = oldself;
+
        if(self.colormap <= maxclients && self.colormap > 0)
                self.colormap = 1024 + oldself.clientcolors;
 
@@ -421,6 +423,7 @@ void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float
                Violence_GibSplash(self, 1, 1, attacker);
                self.alpha = -1;
                self.solid = SOLID_NOT; // restore later
+               self.takedamage = DAMAGE_NO; // restore later
        }
 }
 
index 4a12ce1850323e10f7b11282a76874cb0f426e66..fac0d73aa2cbf09b30f36ed949e7bb97a9d26085 100644 (file)
@@ -318,7 +318,7 @@ float W_IsWeaponThrowable(float w)
                return 0;
        if (g_cts)
                return 0;
-       if (g_nexball && w == WEP_GRENADE_LAUNCHER)
+       if (g_nexball && w == WEP_PORTO)
                return 0;
 
        wb = W_WeaponBit(w);
index bd4426c3aaa68e30ad4705208bf04fbcb2d81b42..bdaeef0a53d19d3ed48ae81cf3468b560350ffb4 100644 (file)
@@ -14,10 +14,11 @@ float Damage_DamageInfo_SendEntity(entity to, float sf)
        WriteByte(MSG_ENTITY, bound(0, self.dmg_radius, 255));
        WriteByte(MSG_ENTITY, bound(1, self.dmg_edge, 255));
        WriteShort(MSG_ENTITY, self.oldorigin_x);
+       WriteByte(MSG_ENTITY, self.species);
        return TRUE;
 }
 
-void Damage_DamageInfo(vector org, float coredamage, float edgedamage, float rad, vector force, float deathtype, entity dmgowner)
+void Damage_DamageInfo(vector org, float coredamage, float edgedamage, float rad, vector force, float deathtype, float bloodtype, entity dmgowner)
 {
        // TODO maybe call this from non-edgedamage too?
        // TODO maybe make the client do the particle effects for the weapons and the impact sounds using this info?
@@ -35,8 +36,8 @@ void Damage_DamageInfo(vector org, float coredamage, float edgedamage, float rad
        e.dmg_radius = rad;
        e.dmg_force = vlen(force);
        e.velocity = force;
-
        e.oldorigin_x = compressShortVector(e.velocity);
+       e.species = bloodtype;
 
        Net_LinkEntity(e, FALSE, 0.2, Damage_DamageInfo_SendEntity);
 }
@@ -996,9 +997,9 @@ float RadiusDamage (entity inflictor, entity attacker, float coredamage, float e
                else
                        force = normalize(force);
                if(forceintensity >= 0)
-                       Damage_DamageInfo(blastorigin, coredamage, edgedamage, rad, forceintensity * force, deathtype, attacker);
+                       Damage_DamageInfo(blastorigin, coredamage, edgedamage, rad, forceintensity * force, deathtype, 0, attacker);
                else
-                       Damage_DamageInfo(blastorigin, coredamage, edgedamage, -rad, (-forceintensity) * force, deathtype, attacker);
+                       Damage_DamageInfo(blastorigin, coredamage, edgedamage, -rad, (-forceintensity) * force, deathtype, 0, attacker);
        }
 
        stat_damagedone = 0;
index f5def6a7dd68e4dd9660d62f4a1d7811372509bc..cae5e3520bc5043939e32f5abeb20952b0eb40b4 100644 (file)
@@ -25,6 +25,14 @@ void Violence_GibSplash_At(vector org, vector dir, float type, float amount, ent
        if(!sound_allowed(MSG_BROADCAST, gibowner) || !sound_allowed(MSG_BROADCAST, attacker))
                e.state |= 0x40; // "silence" bit
        e.state |= 8 * self.species; // gib type, ranges from 0 to 15
+
+       // if this is a copied dead body, send the num of its player instead
+       // TODO: remove this field, read from model txt files
+       if(self.classname == "body")
+               e.team = num_for_edict(self.owner);
+       else
+               e.team = num_for_edict(self);
+
        setorigin(e, org);
        e.velocity = dir;
 
index 4b19730adcd3d15f9708bebbe7846a608598ea77..b780a8511a882f96ace60faa8e8a82a9223002c3 100644 (file)
@@ -926,6 +926,9 @@ void readplayerstartcvars()
        if(!cvar("g_use_ammunition"))
                start_items |= IT_UNLIMITED_AMMO;
 
+       if(cvar("g_nexball"))
+               start_items |= IT_UNLIMITED_SUPERWEAPONS; // FIXME BAD BAD BAD BAD HACK, NEXBALL SHOULDN'T ABUSE PORTO'S WEAPON SLOT
+
        if(g_minstagib)
        {
                start_ammo_cells = cvar("g_minstagib_ammo_start");
index 66377d1d84aade6398814d045f04926cefdc7d17..e7f51aa887f7931445f0006452db6110a7e8928f 100644 (file)
@@ -744,7 +744,7 @@ MUTATOR_HOOKFUNCTION(sandbox_PlayerCommand)
                                                        print_to(self, strcat("^2SANDBOX - INFO: ^7Object is owned by \"^7", e.netname, "^7\", created \"^3", e.message, "^7\", last edited \"^3", e.message2, "^7\""));
                                                        return TRUE;
                                                case "mesh":
-                                                       for(i = 1; gettaginfo(e, i); i++)
+                                                       FOR_EACH_TAG(e)
                                                                s = strcat(s, "^7\"^5", gettaginfo_name, "^7\", ");
                                                        print_to(self, strcat("^2SANDBOX - INFO: ^7Object mesh is \"^3", e.model, "^7\" at animation frame ^3", ftos(e.frame), " ^7containing the following tags: ", s));
                                                        return TRUE;
index bf50c9d3cada867c7d4d2034244a5a75a0d8caa4..76af253dca5c0f3bd3b5785134f9c378687fdf8c 100644 (file)
@@ -645,11 +645,7 @@ float Portal_SpawnInPortalAtTrace(entity own, vector dir, float portal_id_val)
 
        portal = Portal_Spawn(own, org, ang);
        if(!portal)
-       {
-               // if(!own.portal_out || own.portal_out.portal_id == portal_id_val)
-                       Portal_ClearAll_PortalsOnly(own);
                return 0;
-       }
 
        portal.portal_id = portal_id_val;
        Portal_SetInPortal(own, portal);
@@ -669,11 +665,7 @@ float Portal_SpawnOutPortalAtTrace(entity own, vector dir, float portal_id_val)
 
        portal = Portal_Spawn(own, org, ang);
        if(!portal)
-       {
-               // if(!own.portal_in || own.portal_in.portal_id == portal_id_val)
-                       Portal_ClearAll_PortalsOnly(own);
                return 0;
-       }
 
        portal.portal_id = portal_id_val;
        Portal_SetOutPortal(own, portal);
index b2d282cf2b137e68978e0a64c08b4e0874d3ee3b..cd0bc0408097b737ee604ef1bd9aa654232ce42a 100644 (file)
@@ -8,3 +8,4 @@ float Portal_SpawnInPortalAtTrace(entity own, vector dir, float id);
 void Portal_ClearWithID(entity own, float id);
 
 vector Portal_ApplyTransformToPlayerAngle(vector transform, vector vangle);
+void Portal_ClearAll_PortalsOnly(entity own);
index cd4ab6ceb21d29f956d3ce8af4cab46bdc66a1cb..4afccd9bee8c7c385177e0038ef677281783ce4b 100644 (file)
@@ -440,7 +440,7 @@ float Item_GiveTo(entity item, entity player)
                pickedup |= Item_GiveAmmoTo(item, player, armorvalue, item.max_armorvalue, ITEM_MODE_ARMOR);
 
                if (item.flags & FL_WEAPON)
-               if ((it = item.weapons - (item.weapons & player.weapons)) || (item.spawnshieldtime && g_pickup_weapons_anyway))
+               if ((it = item.weapons - (item.weapons & player.weapons)) || (item.spawnshieldtime && self.pickup_anyway))
                {
                        pickedup = TRUE;
                        for(i = WEP_FIRST; i <= WEP_LAST; ++i)
@@ -483,7 +483,6 @@ float Item_GiveTo(entity item, entity player)
        if (!pickedup)
                return 0;
 
-       sound (player, CH_TRIGGER, item.item_pickupsound, VOL_BASE, ATTN_NORM);
        if (_switchweapon)
                if (player.switchweapon != w_getbestweapon(player))
                        W_SwitchWeapon_Force(player, w_getbestweapon(player));
@@ -525,13 +524,14 @@ void Item_Touch (void)
                        self.strength_finished += time;
                        self.invincible_finished += time;
                        self.superweapons_finished += time;
-                       return;
                }
+               return;
        }
 
        other.last_pickup = time;
 
        pointparticles(particleeffectnum("item_pickup"), self.origin, '0 0 0', 1);
+       sound (other, CH_TRIGGER, self.item_pickupsound, VOL_BASE, ATTN_NORM);
 
        if (self.classname == "droppedweapon")
                remove (self);
@@ -987,6 +987,7 @@ void weapon_defaultspawnfunc(float wpn)
        string s;
        entity oldself;
        float i, j;
+       float f;
 
        if(self.classname != "droppedweapon" && self.classname != "replacedweapon")
        {
@@ -1084,15 +1085,21 @@ void weapon_defaultspawnfunc(float wpn)
                }
        }
 
+       // pickup anyway
+       if(g_pickup_weapons_anyway)
+               self.pickup_anyway = TRUE;
+
+       f = FL_WEAPON;
+
        // no weapon-stay on superweapons
-       if(self.weapons & WEPBIT_SUPERWEAPONS)
-               self.flags |= FL_NO_WEAPON_STAY;
+       if(e.weapons & WEPBIT_SUPERWEAPONS)
+               f |= FL_NO_WEAPON_STAY;
 
        // weapon stay isn't supported for teamed weapons
        if(self.team)
-               self.flags |= FL_NO_WEAPON_STAY;
+               f |= FL_NO_WEAPON_STAY;
 
-       StartItem(e.model, "weapons/weaponpickup.wav", self.respawntime, self.respawntimejitter, e.message, 0, e.weapons, FL_WEAPON, weapon_pickupevalfunc, e.bot_pickupbasevalue);
+       StartItem(e.model, "weapons/weaponpickup.wav", self.respawntime, self.respawntimejitter, e.message, 0, e.weapons, f, weapon_pickupevalfunc, e.bot_pickupbasevalue);
        if (self.modelindex) // don't precache if self was removed
                weapon_action(e.weapon, WR_PRECACHE);
 }
index bf17e3faf0ece436d0508dc64c4a9bc517103566..cce0aab32bb5f062ca66a853f2a7996dfafef5c4 100644 (file)
@@ -200,6 +200,7 @@ void trigger_push_touch()
                                other.lastteleporttime = time;
 
                        if (!other.animstate_override)
+                       if (other.deadflag == DEAD_NO)
                        {
                                if (other.crouch)
                                        setanim(other, other.anim_duckjump, FALSE, TRUE, TRUE);
index 4973859259be48a3619eabdba70de148b87b8366..ab0d388155bf7ca8d17c674d31507770656533e4 100644 (file)
@@ -111,7 +111,7 @@ void raptor_bomb_burst()
     entity bomblet;
     float i;
 
-    Damage_DamageInfo(self.origin, 0, 0, 0, '0 0 0', DEATH_RAPTOR_BOMB_SPLIT, self);
+    Damage_DamageInfo(self.origin, 0, 0, 0, '0 0 0', DEATH_RAPTOR_BOMB_SPLIT, 0, self);
 
     for(i = 0; i < autocvar_g_vehicle_raptor_bomblets; ++i)
     {
index a05c17bd4b40f7dbd392f0a8b45970824d4bb6e8..fab3b41b22808002cca28a5316f0664d65346d21 100644 (file)
@@ -66,6 +66,9 @@ void FireRailgunBullet (vector start, vector end, float bdamage, float bforce, f
                        continue;
                }
 
+               if(trace_ent.solid == SOLID_BSP || trace_ent.solid == SOLID_SLIDEBOX)
+                       Damage_DamageInfo(trace_endpos, bdamage, 0, 0, force, deathtype, trace_ent.species, self);
+
                // if it is world we can't hurt it so stop now
                if (trace_ent == world || trace_fraction == 1)
                        break;
@@ -173,8 +176,8 @@ void W_BallisticBullet_Hit (void)
        f = pow(bound(0, vlen(self.velocity) / vlen(self.oldvelocity), 1), 2); // energy multiplier
        q = 1 + self.dmg_edge / self.dmg;
 
-       if(other.solid == SOLID_BSP)
-               Damage_DamageInfo(self.origin, self.dmg * f, 0, 0, max(1, self.dmg_force) * normalize(self.velocity) * f, self.projectiledeathtype, self);
+       if(other.solid == SOLID_BSP || other.solid == SOLID_SLIDEBOX)
+               Damage_DamageInfo(self.origin, self.dmg * f, 0, 0, max(1, self.dmg_force) * normalize(self.velocity) * f, self.projectiledeathtype, other.species, self);
 
        if(other && other != self.enemy)
        {
@@ -232,7 +235,7 @@ void W_BallisticBullet_LeaveSolid_think()
        {
                float f;
                f = pow(bound(0, vlen(self.velocity) / vlen(self.oldvelocity), 1), 2); // energy multiplier
-               Damage_DamageInfo(self.origin, 0, 0, 0, max(1, self.dmg_force) * normalize(self.velocity) * -f, self.projectiledeathtype, self);
+               Damage_DamageInfo(self.origin, 0, 0, 0, max(1, self.dmg_force) * normalize(self.velocity) * -f, self.projectiledeathtype, 0, self);
        }
 
        UpdateCSQCProjectile(self);
@@ -526,10 +529,10 @@ void fireBullet (vector start, vector dir, float spread, float damage, float for
 
        end = trace_endpos;
 
-       if ((trace_fraction != 1.0) && (pointcontents (trace_endpos) != CONTENT_SKY))
+       if (pointcontents (trace_endpos) != CONTENT_SKY)
        {
                if not (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
-                       Damage_DamageInfo(trace_endpos, damage, 0, 0, dir * max(1, force), dtype, self);                    
+                       Damage_DamageInfo(trace_endpos, damage, 0, 0, dir * max(1, force), dtype, trace_ent.species, self);                    
 
                Damage (trace_ent, self, self, damage, dtype, trace_endpos, dir * force);
        }
index 02463c2c007444ec0b3305b55fd1c7b6cf1b222e..77c67b46bb9f96e548731ad022d702ae1f005fdd 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(FIREBALL, w_fireball, IT_FUEL, 9, WEP_FLAG_RELOADABLE | WEP_FLAG_SUPERWEAPON | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "fireball", "fireball", _("Fireball"));
+REGISTER_WEAPON(FIREBALL, w_fireball, 0, 9, WEP_FLAG_SUPERWEAPON | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "fireball", "fireball", _("Fireball"));
 #else
 #ifdef SVQC
 .float bot_primary_fireballmooth; // whatever a mooth is
@@ -198,8 +198,6 @@ void W_Fireball_Attack1_Frame1()
 
 void W_Fireball_Attack1_Frame0()
 {
-       W_DecreaseAmmo(ammo_fuel, autocvar_g_balance_fireball_primary_ammo, autocvar_g_balance_fireball_reload_ammo);
-
        W_Fireball_AttackEffect(0, '-1.25 -3.75 0');
        sound (self, CH_WEAPON_SINGLE, "weapons/fireball_prefire2.wav", VOL_BASE, ATTN_NORM);
        weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_fireball_primary_animtime, W_Fireball_Attack1_Frame1);
@@ -249,8 +247,6 @@ void W_Fireball_Attack2()
        vector f_diff;
        float c;
 
-       W_DecreaseAmmo(ammo_fuel, autocvar_g_balance_fireball_secondary_ammo, autocvar_g_balance_fireball_reload_ammo);
-
        c = mod(self.bulletcounter, 4);
        switch(c)
        {
@@ -330,9 +326,7 @@ float w_fireball(float req)
        }
        else if (req == WR_THINK)
        {
-               if(autocvar_g_balance_fireball_reload_ammo && self.clip_load < min(autocvar_g_balance_fireball_primary_ammo, autocvar_g_balance_fireball_secondary_ammo)) // forced reload
-                       weapon_action(self.weapon, WR_RELOAD);
-               else if (self.BUTTON_ATCK)
+               if (self.BUTTON_ATCK)
                {
                        if (time >= self.fireball_primarytime)
                        if (weapon_prepareattack(0, autocvar_g_balance_fireball_primary_refire))
@@ -364,32 +358,20 @@ float w_fireball(float req)
        else if (req == WR_SETUP)
        {
                weapon_setup(WEP_FIREBALL);
-               self.current_ammo = ammo_fuel;
+               self.current_ammo = ammo_none;
        }
        else if (req == WR_CHECKAMMO1)
        {
-               ammo_amount = self.ammo_fuel >= autocvar_g_balance_fireball_primary_ammo;
-               ammo_amount += self.(weapon_load[WEP_FIREBALL]) >= autocvar_g_balance_fireball_primary_ammo;
-               return ammo_amount;
+               return 1;
        }
        else if (req == WR_CHECKAMMO2)
        {
-               ammo_amount = self.ammo_fuel >= autocvar_g_balance_fireball_secondary_ammo;
-               ammo_amount += self.(weapon_load[WEP_FIREBALL]) >= autocvar_g_balance_fireball_secondary_ammo;
-               return ammo_amount;
+               return 1;
        }
        else if (req == WR_RESETPLAYER)
        {
                self.fireball_primarytime = time;
        }
-       else if (req == WR_RELOAD)
-       {
-               // fuel can be a non-whole number, which brakes stuff here when between 0 and 1
-               if(self.ammo_fuel < 1)
-                       self.ammo_fuel = 0;
-
-               W_Reload(min(autocvar_g_balance_fireball_primary_ammo, autocvar_g_balance_fireball_secondary_ammo), autocvar_g_balance_fireball_reload_ammo, autocvar_g_balance_fireball_reload_time, "weapons/reload.wav");
-       }
        return TRUE;
 }
 #endif
index f688219bd32b0a350a3a052faf58b7f9d68d5b09..b66386d50a59229309d6f1409648b895b3e93e68 100644 (file)
@@ -77,10 +77,6 @@ void W_MinstaNex_Attack (void)
        else
         WarpZone_TrailParticles(world, particleeffectnum("TE_TEI_G3"), w_shotorg, v);
 
-       // flash and burn the wall
-       if (trace_ent.solid == SOLID_BSP && !(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT))
-               Damage_DamageInfo(trace_endpos, 10000, 0, 0, 800 * w_shotdir, WEP_MINSTANEX, self);
-
        if (g_minstagib)
                W_DecreaseAmmo(ammo_cells, 1, autocvar_g_balance_minstanex_reload_ammo);
        else
index cdcabc86688996cde0ce04f43dd94816ab9eb88e..51afdd00f100bcb7a3847960c43ec561619c08dd 100644 (file)
@@ -71,10 +71,6 @@ void W_Nex_Attack (float issecondary)
        //beam and muzzle flash done on client
        SendCSQCNexBeamParticle(charge);
 
-       // flash and burn the wall
-       if (trace_ent.solid == SOLID_BSP && !(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT))
-               Damage_DamageInfo(trace_endpos, mydmg, 0, 0, myforce * w_shotdir, WEP_NEX, self);
-
        W_DecreaseAmmo(ammo_cells, myammo, autocvar_g_balance_nex_reload_ammo);
 }
 
index fb8e427cc141c67d64dee696496b431fa72549b1..c919c497e661f7a098eb44199efa7cdfdb6c6c26 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(PORTO, w_porto, 0, 0, WEP_TYPE_OTHER, 0, "porto" , "porto", _("Port-O-Launch"))
+REGISTER_WEAPON(PORTO, w_porto, 0, 0, WEP_TYPE_OTHER | WEP_FLAG_SUPERWEAPON, 0, "porto" , "porto", _("Port-O-Launch"))
 #else
 #ifdef SVQC
 .entity porto_current;
@@ -29,10 +29,14 @@ void W_Porto_Fail (float failhard)
        }
 
        // no portals here!
-       Portal_ClearWithID(self.realowner, self.portal_id);
+       if(self.cnt < 0)
+       {
+               Portal_ClearWithID(self.realowner, self.portal_id);
+       }
+
        self.realowner.porto_current = world;
 
-       if(!failhard && self.realowner.playerid == self.playerid && self.realowner.deadflag == DEAD_NO && !(self.realowner.weapons & WEPBIT_PORTO))
+       if(self.cnt < 0 && !failhard && self.realowner.playerid == self.playerid && self.realowner.deadflag == DEAD_NO && !(self.realowner.weapons & WEPBIT_PORTO))
        {
                setsize (self, '-16 -16 0', '16 16 32');
                setorigin(self, self.origin + trace_plane_normal);
@@ -77,6 +81,7 @@ void W_Porto_Touch (void)
        vector norm;
 
        // do not use PROJECTILE_TOUCH here
+       // FIXME but DO handle warpzones!
 
        if(other.classname == "portal")
                return; // handled by the portal
@@ -109,6 +114,42 @@ void W_Porto_Touch (void)
        {
                sound(self, CH_SHOTS, "porto/unsupported.wav", VOL_BASE, ATTN_NORM);
                W_Porto_Fail(0);
+               if(self.cnt < 0)
+                       Portal_ClearAll_PortalsOnly(self.realowner);
+       }
+       else if(self.cnt == 0)
+       {
+               // in-portal only
+               if(Portal_SpawnInPortalAtTrace(self.realowner, self.right_vector, self.portal_id))
+               {
+                       sound(self, CH_SHOTS, "porto/create.wav", VOL_BASE, ATTN_NORM);
+                       trace_plane_normal = norm;
+                       centerprint(self.realowner, "^1In^7-portal created.");
+                       W_Porto_Success();
+               }
+               else
+               {
+                       sound(self, CH_SHOTS, "porto/unsupported.wav", VOL_BASE, ATTN_NORM);
+                       trace_plane_normal = norm;
+                       W_Porto_Fail(0);
+               }
+       }
+       else if(self.cnt == 1)
+       {
+               // out-portal only
+               if(Portal_SpawnOutPortalAtTrace(self.realowner, self.right_vector, self.portal_id))
+               {
+                       sound(self, CH_SHOTS, "porto/create.wav", VOL_BASE, ATTN_NORM);
+                       trace_plane_normal = norm;
+                       centerprint(self.realowner, "^1Out^7-portal created.");
+                       W_Porto_Success();
+               }
+               else
+               {
+                       sound(self, CH_SHOTS, "porto/unsupported.wav", VOL_BASE, ATTN_NORM);
+                       trace_plane_normal = norm;
+                       W_Porto_Fail(0);
+               }
        }
        else if(self.effects & EF_RED)
        {
@@ -126,6 +167,7 @@ void W_Porto_Touch (void)
                {
                        sound(self, CH_SHOTS, "porto/unsupported.wav", VOL_BASE, ATTN_NORM);
                        trace_plane_normal = norm;
+                       Portal_ClearAll_PortalsOnly(self.realowner);
                        W_Porto_Fail(0);
                }
        }
@@ -143,23 +185,29 @@ void W_Porto_Touch (void)
                        else
                        {
                                sound(self, CH_SHOTS, "porto/unsupported.wav", VOL_BASE, ATTN_NORM);
+                               Portal_ClearAll_PortalsOnly(self.realowner);
                                W_Porto_Fail(0);
                        }
                }
                else
                {
                        sound(self, CH_SHOTS, "porto/unsupported.wav", VOL_BASE, ATTN_NORM);
+                       Portal_ClearAll_PortalsOnly(self.realowner);
                        W_Porto_Fail(0);
                }
        }
 }
 
-void W_Porto_Attack (void)
+void W_Porto_Attack (float type)
 {
        entity gren;
 
-       if not(self.items & IT_UNLIMITED_SUPERWEAPONS)
-               self.weapons = self.weapons - (self.weapons & WEPBIT_PORTO);
+       if(type == -1)
+       {
+               if not(self.items & IT_UNLIMITED_SUPERWEAPONS)
+                       self.weapons = self.weapons - (self.weapons & WEPBIT_PORTO);
+       }
+
        W_SetupShot (self, FALSE, 4, "porto/fire.wav", CH_WEAPON_A, 0);
        // always shoot from the eye
        w_shotdir = v_forward;
@@ -168,6 +216,7 @@ void W_Porto_Attack (void)
        //pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
 
        gren = spawn ();
+       gren.cnt = type;
        gren.owner = gren.realowner = self;
        gren.playerid = self.playerid;
        gren.classname = "porto";
@@ -180,13 +229,27 @@ void W_Porto_Attack (void)
        setorigin(gren, w_shotorg);
        setsize(gren, '0 0 0', '0 0 0');
 
-       gren.nextthink = time + autocvar_g_balance_porto_primary_lifetime;
+       if(type > 0)
+               gren.nextthink = time + autocvar_g_balance_porto_secondary_lifetime;
+       else
+               gren.nextthink = time + autocvar_g_balance_porto_primary_lifetime;
        gren.think = W_Porto_Think;
        gren.touch = W_Porto_Touch;
-       if(self.items & IT_STRENGTH)
-               W_SetupProjectileVelocity(gren, autocvar_g_balance_porto_primary_speed * autocvar_g_balance_powerup_strength_force, 0);
+
+       if(type > 0)
+       {
+               if(self.items & IT_STRENGTH)
+                       W_SetupProjectileVelocity(gren, autocvar_g_balance_porto_secondary_speed * autocvar_g_balance_powerup_strength_force, 0);
+               else
+                       W_SetupProjectileVelocity(gren, autocvar_g_balance_porto_secondary_speed, 0);
+       }
        else
-               W_SetupProjectileVelocity(gren, autocvar_g_balance_porto_primary_speed, 0);
+       {
+               if(self.items & IT_STRENGTH)
+                       W_SetupProjectileVelocity(gren, autocvar_g_balance_porto_primary_speed * autocvar_g_balance_powerup_strength_force, 0);
+               else
+                       W_SetupProjectileVelocity(gren, autocvar_g_balance_porto_primary_speed, 0);
+       }
 
        gren.angles = vectoangles (gren.velocity);
        gren.flags = FL_PROJECTILE;
@@ -199,7 +262,10 @@ void W_Porto_Attack (void)
 
        gren.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP;
 
-       CSQCProjectile(gren, TRUE, PROJECTILE_PORTO_RED, TRUE);
+       if(type > 0)
+               CSQCProjectile(gren, TRUE, PROJECTILE_PORTO_BLUE, TRUE);
+       else
+               CSQCProjectile(gren, TRUE, PROJECTILE_PORTO_RED, TRUE);
 
        other = gren; MUTATOR_CALLHOOK(EditProjectile);
 }
@@ -219,41 +285,65 @@ float w_porto(float req)
        {
                self.BUTTON_ATCK = FALSE;
                self.BUTTON_ATCK2 = FALSE;
-               if(bot_aim(autocvar_g_balance_porto_primary_speed, 0, autocvar_g_balance_grenadelauncher_primary_lifetime, FALSE))
-                       self.BUTTON_ATCK = TRUE;
+               if(!autocvar_g_balance_porto_secondary)
+                       if(bot_aim(autocvar_g_balance_porto_primary_speed, 0, autocvar_g_balance_grenadelauncher_primary_lifetime, FALSE))
+                               self.BUTTON_ATCK = TRUE;
        }
        else if (req == WR_THINK)
        {
-               if(self.porto_v_angle_held)
+               if(autocvar_g_balance_porto_secondary)
                {
-                       if(!self.BUTTON_ATCK2)
+                       if (self.BUTTON_ATCK)
+                       if (!self.porto_current)
+                       if (!self.porto_forbidden)
+                       if (weapon_prepareattack(0, autocvar_g_balance_porto_primary_refire))
                        {
-                               self.porto_v_angle_held = 0;
+                               W_Porto_Attack(0);
+                               weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_porto_primary_animtime, w_ready);
+                       }
 
-                               ClientData_Touch(self);
+                       if (self.BUTTON_ATCK2)
+                       if (!self.porto_current)
+                       if (!self.porto_forbidden)
+                       if (weapon_prepareattack(1, autocvar_g_balance_porto_secondary_refire))
+                       {
+                               W_Porto_Attack(1);
+                               weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_porto_secondary_animtime, w_ready);
                        }
                }
                else
                {
-                       if(self.BUTTON_ATCK2)
+                       if(self.porto_v_angle_held)
                        {
-                               self.porto_v_angle = self.v_angle;
-                               self.porto_v_angle_held = 1;
+                               if(!self.BUTTON_ATCK2)
+                               {
+                                       self.porto_v_angle_held = 0;
 
-                               ClientData_Touch(self);
+                                       ClientData_Touch(self);
+                               }
+                       }
+                       else
+                       {
+                               if(self.BUTTON_ATCK2)
+                               {
+                                       self.porto_v_angle = self.v_angle;
+                                       self.porto_v_angle_held = 1;
+
+                                       ClientData_Touch(self);
+                               }
+                       }
+                       v_angle_save = self.v_angle;
+                       if(self.porto_v_angle_held)
+                               makevectors(self.porto_v_angle); // override the previously set angles
+
+                       if (self.BUTTON_ATCK)
+                       if (!self.porto_current)
+                       if (!self.porto_forbidden)
+                       if (weapon_prepareattack(0, autocvar_g_balance_porto_primary_refire))
+                       {
+                               W_Porto_Attack(-1);
+                               weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_porto_primary_animtime, w_ready);
                        }
-               }
-               v_angle_save = self.v_angle;
-               if(self.porto_v_angle_held)
-                       makevectors(self.porto_v_angle); // override the previously set angles
-
-               if (self.BUTTON_ATCK)
-               if (!self.porto_current)
-               if (!self.porto_forbidden)
-               if (weapon_prepareattack(0, autocvar_g_balance_porto_primary_refire))
-               {
-                       W_Porto_Attack();
-                       weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_porto_primary_animtime, w_ready);
                }
        }
        else if (req == WR_PRECACHE)
index c4c08bb51230983d2b80abe456a567eff56f53c0..7cf9f58d8ce8026a94aa1748754122add077aa86 100644 (file)
@@ -393,7 +393,7 @@ void Seeker_Tag_Explode ()
 {
        //if(other==self.realowner)
        //    return;
-       Damage_DamageInfo(self.origin, 0, 0, 0, self.velocity, WEP_SEEKER | HITTYPE_BOUNCE, self);
+       Damage_DamageInfo(self.origin, 0, 0, 0, self.velocity, WEP_SEEKER | HITTYPE_BOUNCE, other.species, self);
 
        remove (self);
 }
@@ -421,7 +421,7 @@ void Seeker_Tag_Touch()
        te_knightspike(org2);
 
        self.event_damage = SUB_Null;
-       Damage_DamageInfo(self.origin, 0, 0, 0, self.velocity, WEP_SEEKER | HITTYPE_HEADSHOT, self);
+       Damage_DamageInfo(self.origin, 0, 0, 0, self.velocity, WEP_SEEKER | HITTYPE_HEADSHOT, other.species, self);
 
        if (other.takedamage == DAMAGE_AIM && other.deadflag == DEAD_NO)
        {
index 5e2a0e83b1c7014ab6b1f6e04492c703cbd57ddd..1301bda978a75ff5d4fe3d0d7ed17798d780a3cf 100644 (file)
 \vid_bitsperpixel\How many bits per pixel (BPP) to render at, 32 is recommended
 \vid_fullscreen\Enable fullscreen mode (default: enabled)
 \vid_vsync\Enable vertical synchronization to prevent tearing, will cap your fps to the screen refresh rate (default: disabled)
+\gl_texture_anisotropy\Anisotropic filtering quality (default: 1x)
 \r_glsl\Enable OpenGL 2.0 pixel shaders for lightning (default: enabled)
 \gl_vbo\Make use of Vertex Buffer Objects to store static geometry in video memory for faster rendering (default: Vertex and Triangles)
 \r_depthfirst\Eliminate overdraw by rendering a depth-only version of the scene before the normal rendering starts (default: disabled)
 \gl_picmip\Change the sharpness of the textures. Lowering it will effectively reduce texture memory usage, but make the textures appear very blurry. (default: good)
 \r_picmipworld\If set, only reduce the texture quality of models (default: enabled)
 \mod_q3bsp_nolightmaps\Use high resolution lightmaps, which will look pretty but use up some extra video memory (default: enabled)
-\cl_particles_quality\Multiplier for amount of particles. Less means less particles, which in turn gives for better performance (default: 0.5)
+\cl_particles_quality\Multiplier for amount of particles. Less means less particles, which in turn gives for better performance (default: 1)
 \r_drawparticles_drawdistance\Particles further away than this will not be drawn (default: 1000)
 \cl_decals\Enable decals (bullet holes and blood) (default: enabled)
 \r_drawdecals_drawdistance\Decals further away than this will not be drawn (default: 300)
 \cl_gentle\Replace blood and gibs with content that does not have any gore effects (default: disabled)
 \cl_nogibs\Reduce the amount of gibs or remove them completely (default: lots)
 \v_kicktime\How long a view kick from damage lasts (default: 0)
-\gl_texture_anisotropy\Anisotropic filtering quality (default: 1x)
 \r_glsl_deluxemapping\Use per-pixel lighting effects (default: enabled)
 \r_shadow_gloss\Enable the use of glossmaps on textures supporting it (default: enabled)
 \gl_flashblend\Enable faster but uglier dynamic lights by rendering bright coronas instead of real dynamic lights (default: disabled)
 \r_coronas_occlusionquery\Fade coronas according to visibility (default: enabled)
 \r_bloom\Enable bloom effect, which brightens the neighboring pixels of very bright pixels. Has a big impact on performance. (default: disabled)
 \r_hdr\Higher quality version of bloom, which has a huge impact on performance. (default: disabled)
-\r_motionblur\Motion blur strength - 0.5 recommended
-\r_damageblur\Amount of motion blur when hurt - 0.4 recommended
+\r_motionblur\Motion blur strength - 0.4 recommended
 
 \XonoticSettingsDialog/Audio\Audio settings
 \mastervolume\-
index 08a30a97b34a1e081773a0d9252b672a935c677e..aaf616158f373cd5ce429fd5ec9ab7b9c2bbae3f 100644 (file)
@@ -1,81 +1,80 @@
-0
 \XonoticSingleplayerDialog\Spiele die Einzelspieler-Kampagne oder habe Instant-Action Spiele gegen Bots
 
 
-\XonoticMultiplayerDialog\Spiele online, gegen deine Freunde im LAN, gucke dir Demos an oder ändere deine Spieler-Einstellungen
+\XonoticMultiplayerDialog\Spiele online, gegen deine Freunde im LAN, schaue dir Demos an oder ändere deine Spieler-Einstellungen
 \XonoticMultiplayerDialog/Server\Finde Server und spiele online
 \menu_slist_showempty\Aktiviere die Anzeige von leeren Servern
 \menu_slist_showfull\Aktiviere die Anzeige von vollen Servern, die keinen freien Platz mehr haben
 \net_slist_pause\Unterbreche die automatische Aktualisierung der Serverliste um ein "Herumspringen" zu verhindern
-\XonoticMultiplayerDialog/Info...\Lass dir mehr Informationen über den markierten Server anzeigen
-\XonoticMultiplayerDialog/Speichern\Setze ein Lesezeichen für den markierten Server um ihn beim nächsten mal schneller wiederzufinden
+\XonoticMultiplayerDialog/Info...\Lass dir mehr Informationen über den markierten Server anzeigen
+\XonoticMultiplayerDialog/Speichern\Setze ein Lesezeichen für den markierten Server um ihn beim nächsten Mal schneller wiederzufinden
 \XonoticMultiplayerDialog/Starten\Hoste dein eigenes Spiel
-\XonoticMultiplayerDialog/Demos\Gucke dir Demos an
-\XonoticMultiplayerDialog/Spieler-Einstellungen\Ändere deine Spieler-Einstellungen
-
+\XonoticMultiplayerDialog/Demos\Schaue dir Demos an
+\XonoticMultiplayerDialog/Spieler-Einstellungen\Ändere deine Spieler-Einstellungen
 \XonoticTeamSelectDialog/'bestem' Team beitreten\Automatische Auswahl des Teams (bevorzugt)
 \XonoticTeamSelectDialog/rot\Trete dem roten Team bei
 \XonoticTeamSelectDialog/blau\Trete dem blauen Team bei
 \XonoticTeamSelectDialog/gelb\Trete dem gelben Team bei
 \XonoticTeamSelectDialog/pink\Trete dem pinken Team bei
 
-\timelimit_override\Wähle ein Zeitlimit bei dem die Map endet oder verwende den Map-Standard für diese Option.
-\fraglimit_override\Wähle die Anzahl an Frags die benötigt wird, damit die Map endet oder verwende den Map-Standard für diese Option.
-\menu_maxplayers\Wähle die maximale Anzahl der Spieler, welche sich mit deinem Server gleichzeitig verbinden dürfen. Freie Plätze können mit Bots aufgefüllt werden.
-\bot_number\Wähle die maximale Anzahl von Bots auf dem Server.
-\skill\Stelle die Stärke der Bots ein.
-\g_maplist_votable\Anzahl von Maps, welche am Ende des Spiels zur Wahl stehen.
-\sv_vote_simple_majority_factor\Die einfache Mehrheit gewinnt die Abstimmung.
-\XonoticMultiplayerDialog/Erweiterte Einstellungen...\Erweiterte Einstellungen für den Server
-\XonoticMultiplayerDialog/Mutators...\Wähle Mutators und Waffen-Arenen.
-\g_dodging\Ausweichmodus: Es ist möglich rasch zur Seite zu springen (spezielle Bewegung).
-\g_cloaked\Tarnmodus: Alle Spieler sind fast unsichtbar.
-\g_footsteps\Schrittklang: Schritte von Spielern erzeugen Geräusche.
-\g_midair\"Luft"modus: Dem Gegner Schaden zuzufügen ist nur möglich, wenn er sich in der Luft befindet.
-\g_vampire\Vampirmodus: Der Schaden dem du anderen Spielern zufügst, wird deiner eigenen Lebensenergie hinzugefügt.
-\g_bloodloss\Blutverlust: Aktiviere diesen Modus und stelle den Wert der Lebensenergie, bei der Spieler auf Grund von Blutverlust betäubt wirken, ein.
-\sv_gravity\Verringere die Schwerkraft und lass Gegenstände langsamer zu Boden fallen, ein niedrigerer Wert verringert die Gravitation.
-\g_grappling_hook\Neu erzeugte/auferstandene Spieler starten mit dem Enterhaken.
-\g_jetpack\Neu erzeugte/auferstandene Spieler starten mit dem Jetpack.
-\g_pinata\Gestorbene Spieler lassen alle Waffen fallen, die sie besaßen - Waffen verschwinden nicht.
-\g_rocket_flying\Raketen fliegen in allen Physikeinstellungen.
-\g_weapon_stay\Alle Waffen bleiben liegen, auch wenn sie aufgenommen wurden.
-\g_weaponarena\Waffen-Arenen: Die Auswahl einer Waffen-Arena führt dazu, dass jeder Spieler mit der gewählten Waffe startet. Diese hat unendlich viel Munition, andere Waffen sind nicht vorhanden. - Spezielle Waffen-Arenen: Spieler starten mit allen Waffen und unendlich viel Munition
-\menu_weaponarena_with_laser\Aktiviere auch den Laser in der Waffen-Arena.
-\g_minstagib\Alle Spieler starten mit der Minstanex, eine elektromagnetische Schienenkanone mit unendlich viel Schaden. Wenn ein Spieler keine Munition mehr hat, bleiben ihm 10 Sekunden um neue zu finden, ansonsten stirbt er. Der 2. Feuermodus ist Laser, welcher keinen Schaden hinzufügen kann. Dieser eignet sich gut für Tricksprünge.
-\g_nix\Es gibt keine aufzusammelnden Gegenstände in Xonotic - Anstelle der Möglichkeit Waffen aufzusammeln, spielen alle mit der gleichen Waffe. Nach einiger Zeit startet ein Countdown, danach wechseln alle Spieler zu einer neuen gleichen Waffe.
-\g_nix_with_laser\In Nix ist als zweite Waffe der Laser vorhanden.
-\XonoticMultiplayerDialog/Select all\Wähle alle Maps.
-\XonoticMultiplayerDialog/Select none\Wähle alle Maps ab.
-
-
-\XonoticMultiplayerDialog/Timedemo\Mache einen Benchmark-Test der markierten Demo. Die Demo wird in Zeitraffer, -lupe abgespielt. Das Ergebnis wird in "gamedir/data/benchmark.log" gespeichert.
-
-\fov\Stelle den Wert für das Sichtfeld in Grad (60-130) ein - Standard ist 90.
-\cl_bobcycle\Setze einen Wert für das Sicht-Wackeln oder deaktiviere es vollständig.
-\cl_zoomfactor\Setze den Vergrößerungsfaktor.
-\cl_zoomsensitivity\Bestimme die Änderung der Empfindlichkeit während des Vergrößerns. Werte von 0 (geringste Sensiviät) bis 1 (keine Änderung der Sensivität sind möglich).
-\cl_zoomspeed\Bestimme wie schnell der angegebene Vergrößerungsfaktor erreicht werden soll, deaktivieren für sofortige Vergrößerung.
-\XonoticMultiplayerDialog/Waffeneinstellungen...\Lege deine bevorzugten Waffen fest, den automatischen Wechsel der Waffen und weiteres.
-
-\cl_weaponpriority_useforcycling\Verwende die oben angegebene Liste, wenn die Waffen mit Hilfe des Mausrads gewechselt werden.
-\cl_autoswitch\Wechsel automatisch zu der neu aufgesammelten Waffe, wenn diese in der Liste weiter oben steht als die, welche Du gerade trägst.
-\r_drawviewmodel\Darstellung der Waffe im Spiel.
-\cl_gunalign\Position der Waffe, links oder rechts; erfordert Neustart.
-
-\crosshair_per_weapon\Ermögliche unterschiedliche Fadenkreuze für unterschiedliche Waffen. Diese Option ist zu empfehlen, wenn du ohne dargstelltes Waffenmodel spielst.
-\crosshair_color_override\Ermögliche unterschiedliche Farben für unterschiedliche Fandenkreuze, abhängig von der Waffe die gerade getragen wird.
-\crosshair_size\Lege die Größe des Fadenkreuzes fest.
-\crosshair_color_alpha\Lege die Opazität des Fadenkreuzes fest.
-\crosshair_color_by_health\Die Einfärbung des Fadenkreuzes ist abhängig von der Lebensenergie.
-\crosshair_color_red\Roter Farbanteil des Fadenkreuzes.
-\crosshair_color_green\Grüner Farbanteil des Fadenkreuzes.
-\crosshair_color_blue\Blauer Farbanteil des Fadenkreuzes.
-\sbar_hudselector\Verwende das alte HUD Layout.
+\timelimit_override\Wähle ein Zeitlimit bei dem die Map endet oder verwende den Map-Standard für diese Option
+\fraglimit_override\Wähle die Anzahl an Frags die benötigt wird, damit die Map endet oder verwende den Map-Standard für diese Option
+\menu_maxplayers\Wähle die maximale Anzahl der Spieler, welche sich mit deinem Server gleichzeitig verbinden dürfen. Freie Plätze können mit Bots aufgefüllt werden
+\bot_number\Wähle die maximale Anzahl von Bots auf dem Server
+\skill\Stelle die Stärke der Bots ein
+\g_maplist_votable\Anzahl von Maps, welche am Ende des Spiels zur Wahl stehen
+\sv_vote_simple_majority_factor\Die einfache Mehrheit gewinnt die Abstimmung
+\XonoticMultiplayerDialog/Erweiterte Einstellungen...\Erweiterte Einstellungen für den Server
+\XonoticMultiplayerDialog/Mutators...\Wähle Mutators und Waffen-Arenen
+\g_dodging\Ausweichmodus: Es ist möglich rasch zur Seite zu springen (spezielle Bewegung)
+\g_cloaked\Tarnmodus: Alle Spieler sind fast unsichtbar
+\g_footsteps\Schrittklang: Schritte von Spielern erzeugen Geräusche
+\g_midair\"Luft"modus: Dem Gegner Schaden zuzufügen ist nur möglich, wenn er sich in der Luft befindet
+\g_vampire\Vampirmodus: Der Schaden dem du anderen Spielern zufügst, wird deiner eigenen Lebensenergie hinzugefügt
+\g_bloodloss\Blutverlust: Aktiviere diesen Modus und stelle den Wert der Lebensenergie, bei der Spieler auf Grund von Blutverlust betäubt wirken, ein
+\sv_gravity\Verringere die Schwerkraft und lass Gegenstände langsamer zu Boden fallen, ein niedrigerer Wert verringert die Gravitation
+\g_grappling_hook\Neu erzeugte/auferstandene Spieler starten mit dem Enterhaken
+\g_jetpack\Neu erzeugte/auferstandene Spieler starten mit dem Jetpack
+\g_pinata\Gestorbene Spieler lassen alle Waffen fallen, die sie besaßen - Waffen verschwinden nicht
+\g_rocket_flying\Raketen fliegen in allen Physikeinstellungen
+\g_weapon_stay\Alle Waffen bleiben liegen, auch wenn sie aufgenommen wurden
+\g_weaponarena\Waffen-Arenen: Die Auswahl einer Waffen-Arena führt dazu, dass jeder Spieler mit der gewählten Waffe startet. Diese hat unendlich viel Munition, andere Waffen sind nicht vorhanden - Spezielle Waffen-Arenen: Spieler starten mit allen Waffen und unendlich viel Munition
+\menu_weaponarena_with_laser\Aktiviere auch den Laser in der Waffen-Arena
+\g_minstagib\Alle Spieler starten mit der MinstaNex, eine elektromagnetische Schienenkanone mit unendlich viel Schaden. Wenn ein Spieler keine Munition mehr hat, bleiben ihm 10 Sekunden um neue zu finden, ansonsten stirbt er. Der 2. Feuermodus ist Laser, welcher keinen Schaden hinzufügen kann. Dieser eignet sich gut für Tricksprünge
+\g_nix\Es gibt keine aufzusammelnden Gegenstände in Xonotic - Anstelle der Möglichkeit Waffen aufzusammeln, spielen alle mit der gleichen Waffe. Nach einiger Zeit startet ein Countdown, danach wechseln alle Spieler zu einer neuen gleichen Waffe
+\g_nix_with_laser\In Nix ist als zweite Waffe der Laser vorhanden
+\XonoticMultiplayerDialog/Select all\Wähle alle Maps
+\XonoticMultiplayerDialog/Select none\Wähle alle Maps ab
+
+
+\XonoticMultiplayerDialog/Timedemo\Mache einen Benchmark-Test der markierten Demo. Die Demo wird in Zeitraffer, -lupe abgespielt. Das Ergebnis wird in "gamedir/data/benchmark.log" gespeichert
+
+\fov\Stelle den Wert für das Sichtfeld in Grad (60-130) ein - Standard ist 90
+\cl_bobcycle\Setze einen Wert für das Sicht-Wackeln oder deaktiviere es vollständig
+\cl_zoomfactor\Setze den Vergrößerungsfaktor
+\cl_zoomsensitivity\Bestimme die Änderung der Empfindlichkeit während des Vergrößerns. Werte von 0 (geringste Sensitivität) bis 1 (keine Änderung der Sensitivität sind möglich)
+\cl_zoomspeed\Bestimme wie schnell der angegebene Vergrößerungsfaktor erreicht werden soll, deaktivieren für sofortige Vergrößerung
+\XonoticMultiplayerDialog/Waffeneinstellungen...\Lege deine bevorzugten Waffen fest, den automatischen Wechsel der Waffen und weiteres
+
+\cl_weaponpriority_useforcycling\Verwende die oben angegebene Liste, wenn die Waffen mit Hilfe des Mausrads gewechselt werden
+\cl_autoswitch\Wechsel automatisch zu der neu aufgesammelten Waffe, wenn diese in der Liste weiter oben steht als die, welche Du gerade trägst
+\r_drawviewmodel\Darstellung der Waffe im Spiel
+\cl_gunalign\Position der Waffe, links oder rechts; erfordert Neustart
+
+\crosshair_per_weapon\Ermögliche unterschiedliche Fadenkreuze für unterschiedliche Waffen. Diese Option ist zu empfehlen, wenn du ohne dargestelltes Waffenmodel spielst
+\crosshair_color_override\Ermögliche unterschiedliche Farben für unterschiedliche Fadenkreuze, abhängig von der Waffe die gerade getragen wird
+\crosshair_size\Lege die Größe des Fadenkreuzes fest
+\crosshair_color_alpha\Lege die Opazität des Fadenkreuzes fest
+\crosshair_color_by_health\Die Einfärbung des Fadenkreuzes ist abhängig von der Lebensenergie
+\crosshair_color_red\Roter Farbanteil des Fadenkreuzes
+\crosshair_color_green\Grüner Farbanteil des Fadenkreuzes
+\crosshair_color_blue\Blauer Farbanteil des Fadenkreuzes
+\sbar_hudselector\Verwende das alte HUD Layout
 \XonoticMultiplayerDialog/Waypoints setup...\-
-\_cl_name\Lege deinen Namen im Spiel fest.
+\_cl_name\Lege deinen Namen im Spiel fest
 
-\XonoticSettingsDialog\Ändere die Spiel-Einstellungen
+\XonoticSettingsDialog\Ändere die Spiel-Einstellungen
 \XonoticCreditsDialog\Die Xonotic Entwickler
 \XonoticTeamSelectDialog\-
 \XonoticMutatorsDialog\-
 \XonoticCvarsDialog\-
 
 \XonoticQuitDialog\Beende das Spiel
-\XonoticQuitDialog/Ja\Zurück an die Arbeit...
+\XonoticQuitDialog/Ja\Zurück an die Arbeit...
 \XonoticQuitDialog/Nein\Ich muss noch ein paar Typen fraggen!
-
 \XonoticSettingsDialog/Eingabe\Einstellungen der Eingabe
-\sensitivity\Geschwindigkeitsmultiplikator um die Sensivität der Maus einzustellen.
-\menu_mouse_speed\Multiplikator für die Geschwindigkeit der Maus im Menü, hat keinen Effekt auf die Mausbewegung im Spiel.
-\m_filter\Glättet die Mausbewegung, aber verringert die Reaktion des Zielens etwas.
-\m_pitch\Umkehren der Mausbewegung entlang der Y-Achse.
-\vid_dgamouse\Verwende die DGA Maus Eingabe.
-\joy_enable\Zur Verwendung eines Joysticks aktivieren.
-\con_closeontoggleconsole\Schließen der Konsole auch mit der Taste, die zum Öffnen verwendet wird
-\sbar_showbinds\Darstellung von gedrückten Aktionen / gedrückten Tasten, während des Spielens.
-\cl_showpressedkeys\Lass dir die gedrückten Tasten während des Spielens anzeigen.
+\sensitivity\Geschwindigkeitsmultiplikator um die Sensitivität der Maus einzustellen
+\menu_mouse_speed\Multiplikator für die Geschwindigkeit der Maus im Menü, hat keinen Effekt auf die Mausbewegung im Spiel
+\m_filter\Glättet die Mausbewegung, aber verringert leicht die Reaktion des Zielens
+\m_pitch\Umkehren der Mausbewegung entlang der Y-Achse
+\vid_dgamouse\Verwende die DGA Maus Eingabe
+\joy_enable\Zur Verwendung eines Joysticks aktivieren
+\con_closeontoggleconsole\Schließen der Konsole auch mit der Taste, die zum Öffnen verwendet wird
+\sbar_showbinds\Darstellung von gedrückten Aktionen / gedrückten Tasten, während des Spielens
+\cl_showpressedkeys\Lass dir die gedrückten Tasten während des Spielens anzeigen
 
 \XonoticSettingsDialog/Grafik\Grafik Einstellungen
 
-\vid_width\Einstellung der zu verwendenden Bildschirmauflösung
+\vid_width\Einstellung der zu verwendenden Bildschirmauflösung
 \vid_bitsperpixel\Bestimme wie viele Bits pro Pixel (BPP) gerendert werden sollen, 32 ist der bevorzugte Wert
 \vid_fullscreen\Aktiviere den Vollbildmodus (Standard: aktiviert)
-\vid_vsync\Aktiviere die vertikale Synchronization um ein Zeilenreißen zu unterdrücken, die FPS werden auf den Wert der Bildwiederholungsrate deines Monitors gesetzt (Standard: deaktiviert)
-\vid_gl20\Aktiviere OpenGL 2.0 für Lichteffekte (Standard: aktiviert)
-\gl_vbo\Speicher Eckpunkte und/oder Dreiecke der statischen Geometrie im Videospeicher um ein schnelleres Rendern zu ermöglichen (Standard: Eckpunkte, einige Dreiecke)
-\r_depthfirst\Verhindere das Überblenden, in dem das Tiefenbild der Szene vor dem Licht gerendert wird (Standard: nur Map)
-\gl_texturecompression\Komprimiere die Texturen für Grafikkarten mit einem geringen Grafikspeicher (Standard: deaktiviert)
-\gl_finish\Die Grafikkarte wartet bis die CPU die Berechnung eines jeden Frames beendet hat, dies kann bei merkwürdigen Verhalten der Eingabe helfen (Standard: deaktiviert)
+\vid_vsync\Aktiviere die vertikale Synchronisation um ein Zeilenreißen zu unterdrücken, die FPS werden auf den Wert der Bildwiederholungsrate deines Monitors gesetzt (Standard: deaktiviert)
+\vid_gl20\Aktiviere OpenGL 2.0 für Lichteffekte (Standard: aktiviert)
+\gl_vbo\Speicher Eckpunkte und/oder Dreiecke der statischen Geometrie im Videospeicher um ein schnelleres Rendern zu ermöglichen (Standard: Eckpunkte, einige Dreiecke)
+\r_depthfirst\Verhindere das Überblenden, in dem das Tiefenbild der Szene vor dem Licht gerendert wird (Standard: nur Map)
+\gl_texturecompression\Komprimiere die Texturen für Grafikkarten mit einem geringen Grafikspeicher (Standard: deaktiviert)
+\gl_finish\Die Grafikkarte wartet bis die CPU die Berechnung eines jeden Frames beendet hat, dies kann bei merkwürdigen Verhalten der Eingabe helfen (Standard: deaktiviert)
 \v_brightness\Helligkeit von Schwarz (Standard: 0)
-\v_contrast\Helligkeit von Weiß (Standard: 1)
-\v_gamma\Korrekturwert für die Kontraststärke (Gamma-Wert), Helligkeitseffekt, der keinen Einfluss auf Weiß und Schwarz hat (Standard: 1)
-\v_contrastboost\Faktor für die Änderung des Kontrasts in dunklen Bildteilen (Standard: 1)
-\r_glsl_saturation\Sättigungskorrektur (0 = Graustufenbild, 1 = normales Bild, 2 = übersättigtes Bild), benötigt GLSL Farbkontrolle (Standard: 1)
-\v_glslgamma\Aktiviere die Verwendung von GLSL um die Gamma-Korrektur zu ermöglichen, kann die Leistung stark verringern (Standard: Aus)
-\r_ambient\Umgebungslicht, ein zu hoch eingestellter Wert lässt die Map matt und flach erscheinen (Standard: 4)
-\r_hdr_scenebrightness\Globales Rendern der Lichtstärke (Standard: 1)
-\vid_samples\Aktiviere Antialiasing um Ecken der 3D-Geometire zu glätten. Kann die Leistung stark verringern (Standard: Aus)
-\v_flipped\Linkshänder Modus (Standard: deaktiviert)
+\v_contrast\Helligkeit von Weiß (Standard: 1)
+\v_gamma\Korrekturwert für die Kontraststärke (Gamma-Wert), Helligkeitseffekt, der keinen Einfluss auf Weiß und Schwarz hat (Standard: 1)
+\v_contrastboost\Faktor für die Änderung des Kontrasts in dunklen Bildteilen (Standard: 1)
+\r_glsl_saturation\Sättigungskorrektur (0 = Graustufenbild, 1 = normales Bild, 2 = übersättigtes Bild), benötigt GLSL Farbkontrolle (Standard: 1)
+\v_glslgamma\Aktiviere die Verwendung von GLSL um die Gamma-Korrektur zu ermöglichen, kann die Leistung stark verringern (Standard: Aus)
+\r_ambient\Umgebungslicht, ein zu hoch eingestellter Wert lässt die Map matt und flach erscheinen (Standard: 4)
+\r_hdr_scenebrightness\Globales Rendern der Lichtstärke (Standard: 1)
+\vid_samples\Aktiviere Antialiasing um Ecken der 3D-Geometire zu glätten. Kann die Leistung stark verringern (Standard: Aus)
+\v_flipped\Linkshänder Modus (Standard: deaktiviert)
 
 \XonoticSettingsDialog/Effekte\Einstellungen der Effekte
-\r_subdivisions_tolerance\Ändere die Qualität der Geometrie in der Map - Rundheit/Glattheit von Kurven (Standard: Gut)
-\gl_picmip\Ändere die Auflösung von Texturen. Ein geringerer Wert verringert die Auslastung des Speichers, aber lässt die Texturen verschwommen aussehen. (Standard: Gut)
+\r_subdivisions_tolerance\Ändere die Qualität der Geometrie in der Map - Rundheit/Glattheit von Kurven (Standard: Gut)
+\gl_picmip\Ändere die Auflösung von Texturen. Ein geringerer Wert verringert die Auslastung des Speichers, aber lässt die Texturen verschwommen aussehen. (Standard: Gut)
 \gl_texturecompression\Wenn aktiviert, wird die Kompression von Texturen verhindert.
-\r_picmipworld\Wenn aktiviert, wird nur die Texturqualität von Modellen verringert (Standard: aktiviert)
-\mod_q3bsp_nolightmaps\Verwende hochauflösende Lightmaps, welche sehr schön aussehen, aber etwas mehr Videospeicher benötigen. (Standard: aktiviert)
-\cl_particles_quality\Faktor für die Anzahl von Partikel. Weniger beudetet weniger Parikel, was zu einer besseren Performance führt. (Standard: 1.0)
+\r_picmipworld\Wenn aktiviert, wird nur die Texturqualität von Modellen verringert (Standard: aktiviert)
+\mod_q3bsp_nolightmaps\Verwende hochauflösende Lightmaps, welche sehr schön aussehen, aber etwas mehr Videospeicher benötigen (Standard: aktiviert)
+\cl_particles_quality\Faktor für die Anzahl von Partikel. Weniger bedeutet weniger Partikel, was zu einer besseren Leistung führt (Standard: 1.0)
 \r_drawparticles_drawdistance\Weiter, als eingestellt, entfernte Partikel werden nicht dargestellt (Standard 1000)
-\cl_decals\Aktiviere Dekore (Einschusslöcher und Blut) (Standard: aktiviert)
+\cl_decals\Aktiviere Dekore (Einschusslöcher und Blut) (Standard: aktiviert)
 \r_drawdecals_drawdistance\Weiter, als eingestellt, entfernte Dekore werden nicht dargestellt (Standard: 300)
 \cl_decals_time\Zeit in Sekunden nach dem Dekore verschwinden (Standard: 2)
 \cl_gentle\Blut und Fleischteile werden durch andere, nicht blutige, Effekte ersetzt
-\cl_nogibs\Verringere die Anzahl von Fleischteilen oder entferne sie vollständig (Standard: Viele)
-\v_kicktime\Wert für die Dauer der Beeinträchtigung der Sicht durch einen Schaden (Standard: 0)
-\gl_texture_anisotropy\Qualität für das Filtern von Anisotropie (Standard: Aus)
+\cl_nogibs\Verringere die Anzahl von Fleischteilen oder entferne sie vollständig (Standard: Viele)
+\v_kicktime\Wert für die Dauer der Beeinträchtigung der Sicht durch einen Schaden (Standard: 0)
+\gl_texture_anisotropy\Qualität für das Filtern von Anisotropie (Standard: Aus)
 \r_glsl_deluxemapping\Verwende ein-Pixel Lichteffekte (Standard: aktiviert)
-\r_shadow_gloss\Aktiviere Glanzeffekte für Texturen, wenn die Textur es unterstützt. (Standard: aktiviert)
-\gl_flashblend\Aktiviere schnell gerenderte dynamische Lichter. Es wird eine große Korona anstelle von eines richtigen dynamischen Lichts dargestellt. (Standard: aktiviert)
-\r_shadow_realtime_dlight\Aktiviere das Rendern von dynamischen Lichtern, wie Explosionen und Raketen-Lichter. (Standard: aktiviert) 
+\r_shadow_gloss\Aktiviere Glanzeffekte für Texturen, wenn die Textur es unterstützt. (Standard: aktiviert)
+\gl_flashblend\Aktiviere schnell gerenderte dynamische Lichter. Es wird eine große Korona anstelle von eines richtigen dynamischen Lichts dargestellt (Standard: aktiviert)
+\r_shadow_realtime_dlight\Aktiviere das Rendern von dynamischen Lichtern, wie Explosionen und Raketen-Lichter (Standard: aktiviert) 
 \r_shadow_realtime_dlight_shadows\Aktiviere das Rendern von Schatten von dynamischen Lichtern (Standard: deaktiviert)
-\r_shadow_realtime_world\Aktiviere das Rendern der gesamten Echtzeit-Welt-Lichter. Hat einen großen Einfluss auf die Performance (Standard: deaktiviert)
+\r_shadow_realtime_world\Aktiviere das Rendern der gesamten Echtzeit-Welt-Lichter. Hat einen großen Einfluss auf die Leistung (Standard: deaktiviert)
 \r_shadow_realtime_world_shadows\Aktiviere das Rendern von Schatten von Echtzeit-Welt-Lichter (Standard: deaktiviert)
 \r_shadow_usenormalmap\Aktiviere die Verwendung von gerichteter Schattierung auf Texturen (Standard: aktiviert)
-\r_showsurfaces\Komplettes Deaktivieren von Texturen für sehr langsame Hardware. Starke Verbesserung der Performace, sieht aber sehr komisch aus. (Standard: deaktiviert)
-\r_glsl_offsetmapping\Effekt für den Tiefendruck von Texturen, dieser Effekt lässt Texturen mit Bumpmap aus der 2D Ebene "herausgedrückt" erscheinen (Deaktiviert: deaktiviert)
-\r_glsl_offsetmapping_reliefmapping\Bessere Qualität des Offsetmappings, hat einen großen Einfluss auf die Leistung (Standard: deaktiviert)
-\r_water\Reflektions- und Refraktionsqualität, hat einen großen Einfluss auf die Performance von Maps mit reflektierenden Oberflächen (Standard: deaktiviert)
-\r_water_resolutionmultiplier\Auflösung von Reflektion und Refraktion (Standard: gut)
+\r_showsurfaces\Komplettes Deaktivieren von Texturen für sehr langsame Hardware. Starke Verbesserung der Leistung, sieht aber sehr komisch aus (Standard: deaktiviert)
+\r_glsl_offsetmapping\Effekt für den Tiefendruck von Texturen, dieser Effekt lässt Texturen mit Bumpmap aus der 2D Ebene "herausgedrückt" erscheinen (Deaktiviert: deaktiviert)
+\r_glsl_offsetmapping_reliefmapping\Bessere Qualität des Offsetmappings, hat einen großen Einfluss auf die Leistung (Standard: deaktiviert)
+\r_water\Reflektions- und Refraktionsqualität, hat einen großen Einfluss auf die Leistung von Maps mit reflektierenden Oberflächen (Standard: deaktiviert)
+\r_water_resolutionmultiplier\Auflösung von Reflektion und Refraktion (Standard: gut)
 \r_coronas\Aktiviere die Korona um bestimmte Lichter (Standard: aktiviert)
 \r_coronas_occlusionquery\Verringern der Korona - Angepasst an die Sichtbarkeit (Standard: deaktiviert)
-\r_bloom\Aktiviere Überstrahlung, welche die umgebenden Pixel sehr hell erleuchteter Pixel erhellt. Dieser Effekt hat einen großen Einfluss auf die Leistung (Standard: deaktiviert)
-\r_hdr\Bessere Qualität des Überstrahlunseffekts, hat einen sehr großen Einfluss auf die Leistung (Standard: deaktiviert)
-\r_motionblur\Wert für die Bewegungsunschärfe - 0.5 empfohlen
-\r_damageblur\Wert für die Unschärfe bei einer Verletzung - 0.4 empfohlen
+\r_bloom\Aktiviere Überstrahlung, welche die umgebenden Pixel sehr hell erleuchteter Pixel erhellt. Dieser Effekt hat einen großen Einfluss auf die Leistung (Standard: deaktiviert)
+\r_hdr\Bessere Qualität des Überstrahlungseffekts, hat einen sehr großen Einfluss auf die Leistung (Standard: deaktiviert)
+\r_motionblur\Wert für die Bewegungsunschärfe - 0.5 empfohlen
+\r_damageblur\Wert für die Unschärfe bei einer Verletzung - 0.4 empfohlen
 
-\XonoticSettingsDialog/Ton\Audio-Einstellungen
+\XonoticSettingsDialog/Ton\Audio Einstellungen
 \mastervolume\-
 \bgmvolume\-
 \snd_staticvolume\-
 \snd_channel2volume\-
 \snd_channel1volume\-
 \snd_speed\Ausgangsfrequenz des Tons
-\snd_channels\Anzahl der Kanäle für die Audiowiedergabe
-\snd_swapstereo\Linken und rechten Kanal der Stereowiedergabe tauschen
-\snd_spatialization_control\Aktiviere "räumlicheren" Klang (Mischung des linken und rechten Kanals um die Stereo-Trennung leicht zu verringern, für Kopfhörer).
-\cl_voice_directional\Aktiviere richtungsunabhängige Geräusche.
-\cl_voice_directional_taunt_attenuation\Distanz in der spöttige Bemerkungen anderer Spieler gehört werden können.
-\cl_autotaunt\Automatisches Abspielen einer spöttigen Bemerkung, wenn Gegner gefraggt wurden. 
-\cl_sound_maptime_warning\Abspielen einer Ansage für die verbleibenden Minuten des Spiels.
-\cl_hitsound\Spiele einen Treffer-Sound, wenn der Spieler auf den gezielt wurde, getroffen wurde.
-\menu_sounds\Sound abspielen, wenn auf ein Menüitem geklickt wird oder mit dem Mauszeiger auf das Menüitem gezeit wird.
+\snd_channels\Anzahl der Kanäle für die Audiowiedergabe
+\snd_swapstereo\Linken und Rechten Kanal der Stereowiedergabe tauschen
+\snd_spatialization_control\Aktiviere "räumlicheren" Klang (Mischung des linken und rechten Kanals um die Stereo-Trennung leicht zu verringern, für Kopfhörer)
+\cl_voice_directional\Aktiviere richtungsunabhängige Geräusche
+\cl_voice_directional_taunt_attenuation\Distanz in der spöttige Bemerkungen anderer Spieler gehört werden können
+\cl_autotaunt\Automatisches Abspielen einer spöttigen Bemerkung, wenn Gegner gefraggt wurden 
+\cl_sound_maptime_warning\Abspielen einer Ansage für die verbleibenden Minuten des Spiels
+\cl_hitsound\Spiele einen Treffer-Sound, wenn der Spieler auf den gezielt wurde, getroffen wurde
+\menu_sounds\Sound abspielen, wenn auf ein Menüitem geklickt wird oder mit dem Mauszeiger auf das Menüitem gezeigt wird
 
 \XonoticSettingsDialog/Netzwerk\Netzwerk Einstellungen
 \cl_movement\Aktiviere die Client-seitige Bewegungssimulation
-\cl_nolerp\Enable network update smoothing
-\shownetgraph\Anzeige eines Netzwerkgraphens für gesendete/empfangene Pakete und weitere Informationen
-\_cl_rate\Gib deine Netzwerkgeschwindigkeit mit dem Schieberegler an.
-\cl_netfps\Anzahl der Pakete die pro Sekunde zum Server, mit dem du verbunden bist, geschickt werden sollen.
+\cl_nolerp\Aktiviere die Netzwerk Update Glättung
+\shownetgraph\Anzeige eines Netzwerkgraphs für gesendete/empfangene Pakete und weitere Informationen
+\_cl_rate\Gib deine Netzwerkgeschwindigkeit mit dem Schieberegler an
+\cl_netfps\Anzahl der Pakete die pro Sekunde zum Server, mit dem du verbunden bist, geschickt werden sollen
 \cl_curl_maxdownloads\Maximale Anzahl der gleichzeitigen HTTP/FTP Downloads
-\cl_curl_maxspeed\Stelle die maximale Download Geschwindigkeit ein.
-\cl_port\Stelle den zu verwendenden UDP Port als Client ein.  Wenn der Port auf 0 gesetzt ist, wird kein Port erzwungen.
+\cl_curl_maxspeed\Stelle die maximale Download Geschwindigkeit ein
+\cl_port\Stelle den zu verwendenden UDP Port als Client ein.  Wenn der Port auf 0 gesetzt ist, wird kein Port erzwungen
 
-\XonoticSettingsDialog/Sonstiges\Sonstige Einstellungen, wie Sprache, Menü-Skins
-\showtime\Uhrzeit im Spiel anzeigen, geeignet für Screenshots
-\showdate\Datum im Spiel anzeigen, geeignet für Screenshots
+\XonoticSettingsDialog/Sonstiges\Sonstige Einstellungen, wie Sprache, Menü-Skins
+\showtime\Uhrzeit im Spiel anzeigen, geeignet für Screenshots
+\showdate\Datum im Spiel anzeigen, geeignet für Screenshots
 \showfps\Zeige die gerenderten Frames pro Sekunde
-\cl_showspeed\Zeige die Gescheindigkeit des Spielers
-\cl_showspeed_unit\Wähle die Einheit, in der die Geschindigkeit angezeigt werden soll, qu/s = in/s
+\cl_showspeed\Zeige die Geschwindigkeit des Spielers
+\cl_showspeed_unit\Wähle die Einheit, in der die Geschwindigkeit angezeigt werden soll, qu/s = in/s
 \cl_showacceleration\Zeige die Beschleunigung des Spielers
-\cl_showacceleration_scale\Skalierungsfaktor für das Akzelerometer
+\cl_showacceleration_scale\Skalierungsfaktor für das Akzelerometer
 
-\XonoticSettingsDialog/Erweiterte Einstellungen...\Erweiterte Einstellungen, in denen du jede beliebige Variable des Spiels ändern kannst
-\g_friendlyfire\Prozentualer Anteil des Schadens, der Mitspielern hinzugefügt wird
-\g_mirrordamage\Percentage of teamdamage that will be mirrored to you
-\g_tdm_teams_override\Überschreibe die Standardgröße eines Teams in Teammodi
+\XonoticSettingsDialog/Erweiterte Einstellungen...\Erweiterte Einstellungen, in denen du jede beliebige Variable des Spiels ändern kannst
+\g_friendlyfire\Prozentualer Anteil des Schadens, der Mitspielern hinzugefügt wird
+\g_mirrordamage\Prozentualer Anteil des Team-Schadens der auf dich zurückgeworfen wird
+\g_tdm_teams_override\Überschreibe die Standardgröße eines Teams in Teammodi
 
 \cl_teamradar_position\-
 \cl_teamradar_size\-
 \cl_teamradar_rotation\-
 \cl_teamradar_scale\-
 \cl_teamradar_foreground_alpha\-
-\cl_teamradar_background_alpha\Wert für die Opazität des Radar-Hintergrunds
+\cl_teamradar_background_alpha\Wert für die Opazität des Radar-Hintergrunds
 \viewsize\Aktiviere/Deaktiviere den HUD-Hintergrund
-\sbar_alpha_bg\Wert für die Opazität des HUD-Hintergrunds
+\sbar_alpha_bg\Wert für die Opazität des HUD-Hintergrunds
 \sbar_color_bg_r\Roter Farbanteil des HUD-Hintergrunds
-\sbar_color_bg_g\Grüner Farbanteil des HUD-Hintergrunds
+\sbar_color_bg_g\Grüner Farbanteil des HUD-Hintergrunds
 \sbar_color_bg_b\Blauer Farbanteil des HUD-Hintergrunds
-\sbar_color_bg_team\Team-Farben Sättigung des HUD-Hintergrunds
+\sbar_color_bg_team\Team-Farben Sättigung des HUD-Hintergrunds
 \cl_hidewaypoints\Lass dir verschiedene Spieltyp spezifische Wegpunkte anzeigen
-\g_waypointsprite_scale\Skalierungsfaktor für Wegpunkte
-\g_waypointsprite_alpha\Verändere den Wert der Transparenz von der Anzeige der Wegpunkte
-\cl_shownames\Lass dir den Namen des Spielers anzeigen auf den du gerade zielst.
+\g_waypointsprite_scale\Skalierungsfaktor für Wegpunkte
+\g_waypointsprite_alpha\Verändere den Wert der Transparenz von der Anzeige der Wegpunkte
+\cl_shownames\Lass dir den Namen des Spielers anzeigen auf den du gerade zielst
+
+\crosshair_hittest\Aus: Führe keinen Treffer-Test für das Fadenkreuz aus; TrueAim: Trübe das Fadenkreuz, wenn du nicht die Wand treffen würdest; Gegner: Vergrößere zudem das Fadenkreuz, wenn du einen Gegner treffen würdest
 
-\crosshair_hittest\None: do not do hit tests for the crosshair; TrueAim: blur the crosshair when you would not hit the wall; Enemies: also enlarge the crosshair when you would hit an enemy
index 21bc586bcdef5ab933c933432c67e4d66c85dad1..17c8939df8251912bc633e44e38003c1e81a18b1 100644 (file)
 \gl_picmip\Cambiar la dureza de las texturas. Bajándolo efectivamente reducira el uso de la memoria de la textura, pero hará que las texturas aparezcan muy borrosas. (por defecto: bueno)
 \r_picmipworld\Si se activa, solo reduce la calidad de texturas de los modelos (activado por defecto)
 \mod_q3bsp_nolightmaps\Use mapas de alta resolución, hara que se vea lindo pero reducira la memoria de video (activado por defecto)
-\cl_particles_quality\Multiplicador de cantidad de partículas. Menos significa menos partículas, lo cual dara mejor rendimiento (por defecto: 0.5)
+\cl_particles_quality\Multiplicador de cantidad de partículas. Menos significa menos partículas, lo cual dara mejor rendimiento (por defecto: 1.0)
 \r_drawparticles_drawdistance\Las partículas que se alejen de esto no se dibujarán (por defecto: 1000)
 \cl_decals\Activar decals (agujeros de balas y sangre) (habilitado por defecto)
 \r_drawdecals_drawdistance\Los decals que se alejen de esta distancia no se dibujarán (por defecto: 300)
index e365df9ba55d595523fa7e7247e6a36f9d257cde..4762f8f2a8f720913cc0b3adcc2195b8cfeb4e5b 100644 (file)
 \gl_picmip\Ajuster la qualité des textures. La baisser diminue l'utilisation des ressources, mais rend les textures floues. (par défaut: normal)
 \r_picmipworld\If set, only reduce the texture quality of models (default: enabled)
 \mod_q3bsp_nolightmaps\Utiliser des lightmaps haute résolution, augmente l'utilisation des resources, mais rend les lightmaps plus nettes (par défaut: activé)
-\cl_particles_quality\Nombre de particules; moins de particules consomment moins de ressources (par défaut: 0.5)
+\cl_particles_quality\Nombre de particules; moins de particules consomment moins de ressources (par défaut: 1.0)
 \r_drawparticles_drawdistance\Toutes les particules qui sont plus loin que cette distance ne seront pas affichées (par défaut: 1000)
 \cl_decals\Activer les marques d'impacts et de sang (par défaut: activé)
 \r_drawdecals_drawdistance\Toutes les marques d'impacts qui sont plus loin que cette distance ne seront pas affichées (par défaut: 300)
index dffb1853cbda228276fbc014da82c2d95c6309c3..3335a0e8a07e8badbc70fccfcdba3209094ca768 100644 (file)
 \gl_picmip\ A textúrák élességének változtatása. Kisebb érték hatásosan csökkenti a textúra memória használatot, de a textúrák megjelenése homályosabb lehet. (alapértelmezett: jó)
 \r_picmipworld\Ha ha be van állítva, csak a modellek textúra minősége csökken (alapértelmezett: engedélyezve)
 \mod_q3bsp_nolightmaps\Magas felbontású fény térképek használata, ami szépen néz ki, de megemeli a szükséges videó memória mennyiségét (alapértelmezett: engedélyezve)
-\cl_particles_quality\A részecskék számának megtöbbszörözése. Kisebb érték kevesebb részecskét jelent, ami jobb teljesítményt ad (alapérték: 0,5)
+\cl_particles_quality\A részecskék számának megtöbbszörözése. Kisebb érték kevesebb részecskét jelent, ami jobb teljesítményt ad (alapérték: 1,0)
 \r_drawparticles_drawdistance\A részecskék csak eddig a távolsági rajzolódnak ki  (alapérték: 1000)
 \cl_decals\Foltok engedélyzése (égési és robbanási nyomok, vérfoltok)  (alapértelmezett: engedélyezve)
 \r_drawdecals_drawdistance\A minták csak eddig a távolsági rajzolódnak ki (alapérték: 300)
index e8ec95a985d609d49676a2a4e74d08f93d34a2d8..edc75b504675db5ff289c19364aa54b2a202ae01 100644 (file)
 \gl_picmip\Cambia la nitidezza delle textures. Valori più bassi riducono l'uso della memoria per le texture, però faranno apparire quest'ultime molto sfuocate. (predefinito: buona)
 \r_picmipworld\Se impostato, riduce solo la qualità delle texture dei modelli (predefinito: abilitato)
 \mod_q3bsp_nolightmaps\Usa le mappe di luce ad alta risoluzione, che appaiono più gradite alla vista, però sfruttano più memoria video (predefinito: abilitato)
-\cl_particles_quality\Moltiplicatore del numero di particelle. Valori inferiori significano meno particelle, che di conseguenza incrementano le performance (predefinito: 0.5)
+\cl_particles_quality\Moltiplicatore del numero di particelle. Valori inferiori significano meno particelle, che di conseguenza incrementano le performance (predefinito: 1.0)
 \r_drawparticles_drawdistance\Distanza per cui le particelle non vengono mostrate (predefinito: 1000)
 \cl_decals\Abilita i decal (buchi dei proiettili e sangue) (predefinito: abilitati)
 \r_drawdecals_drawdistance\I decal più lontano di questa distanza non vengono mostrati (predefinito: 300)
index f8e286210aba77769fc1e1a0b0defa3e9d339999..aebb0b35b1f6952d576dcba91e85c87bb296aefd 100644 (file)
 \gl_picmip\Change the sharpness of the textures. Lowering it will effectively reduce texture memory usage, but make the textures appear very blurry. (default: good)
 \r_picmipworld\If set, only reduce the texture quality of models (default: enabled)
 \mod_q3bsp_nolightmaps\Use high resolution lightmaps, which will look pretty but use up some extra video memory (default: enabled)
-\cl_particles_quality\Multiplier for amount of particles. Less means less particles, which in turn gives for better performance (default: 0.5)
+\cl_particles_quality\Multiplier for amount of particles. Less means less particles, which in turn gives for better performance (default: 1.0)
 \r_drawparticles_drawdistance\Particles further away than this will not be drawn (default: 1000)
 \cl_decals\Enable decals (bullet holes and blood) (default: enabled)
 \r_drawdecals_drawdistance\Decals further away than this will not be drawn (default: 300)
index 97dec8cba756272159c947fd213e0b0b01d4c2df..18df45040b6e82620cb3cc323c015eba43304ce6 100644 (file)
 \gl_picmip\Чіткість текстур. Зниження параметру зменшить використання відеопам'яті, але зробить текстури нечіткими (за замовчуванням: добре)
 \r_picmipworld\Знижує якість текстур тільки на моделях (за замовчуванням: увімкнуто)
 \mod_q3bsp_nolightmaps\Використовувати мапи освітлення з високою роздільністю, красиві, але використовують більше відеопам'яті (за замовчуванням: увімкнуто)
-\cl_particles_quality\Кількість часток, чим менша кількість тим менший вплив на продуктивність (за замовчуванням: 0.5)
+\cl_particles_quality\Кількість часток, чим менша кількість тим менший вплив на продуктивність (за замовчуванням: 1.0)
 \r_drawparticles_drawdistance\Частки на відстані більшій ніж ця не будуть створюватись (за замовчуванням: 1000)
 \cl_decals\Сліди від куль та пострілів (за замовчуванням: увімкнуто)
 \r_drawdecals_drawdistance\Сліди на відстані більшій ніж ця не будуть створюватись (за замовчуванням: 300)
index 2e60c679fc341d4b3cf000f758b1e84ee8b9bad8..207b8f79df7274765bda82e78b454a204fc667ed 100644 (file)
@@ -120,6 +120,7 @@ chooksta
 cortez
 Cuinn "Cuinnton" Herrick
 Florian Paul "lda17h" Schmidt
+Jope “Sless” Withers
 kojn
 Kristian "morfar" Johansson
 kuniuthefrogg