]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into terencehill/newpanelhud
authorterencehill <piuntn@gmail.com>
Sat, 19 Mar 2011 22:57:17 +0000 (23:57 +0100)
committerterencehill <piuntn@gmail.com>
Sat, 19 Mar 2011 22:57:17 +0000 (23:57 +0100)
Conflicts:
qcsrc/client/hud.qc

78 files changed:
balance25.cfg
balanceLeeStricklin.cfg
balanceSamual.cfg
balanceXonotic.cfg
balancetZork.cfg
defaultXonotic.cfg
gfx/crosshair_ring_nexgun.tga [new file with mode: 0644]
gfx/crosshair_ring_sniperrifle.tga [new file with mode: 0644]
gfx/menu/luminos/background.tga
gfx/menu/luminos/background_ingame_l2.tga
gfx/menu/luminos/background_l2.tga
gfx/menu/luminos/checkbox_c0.tga
gfx/menu/luminos/checkbox_c1.tga
gfx/menu/luminos/checkbox_d0.tga
gfx/menu/luminos/checkbox_d1.tga
gfx/menu/luminos/checkbox_f0.tga
gfx/menu/luminos/checkbox_f1.tga
gfx/menu/luminos/checkbox_n0.tga
gfx/menu/luminos/checkbox_n1.tga
gfx/menu/luminos/slider_c.tga
gfx/menu/luminos/slider_d.tga
gfx/menu/luminos/slider_f.tga
gfx/menu/luminos/slider_n.tga
hook-firing_swap.cfg
input-tuba.cfg
menu.dat.de.po
menu.dat.fi.po
menu.dat.fr.po
menu.dat.it.po [new file with mode: 0644]
menu.dat.pt.po
qcsrc/client/Defs.qc
qcsrc/client/Main.qc
qcsrc/client/View.qc
qcsrc/client/autocvars.qh
qcsrc/client/hud.qc
qcsrc/common/constants.qh
qcsrc/common/gamecommand.qc
qcsrc/common/items.qh
qcsrc/menu/anim/animhost.c
qcsrc/menu/item/button.c
qcsrc/menu/item/slider.c
qcsrc/menu/menu.qc
qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c
qcsrc/server/autocvars.qh
qcsrc/server/bot/havocbot/havocbot.qc
qcsrc/server/cl_client.qc
qcsrc/server/cl_impulse.qc
qcsrc/server/cl_weapons.qc
qcsrc/server/cl_weaponsystem.qc
qcsrc/server/defs.qh
qcsrc/server/g_world.qc
qcsrc/server/miscfunctions.qc
qcsrc/server/t_items.qc
qcsrc/server/teamplay.qc
qcsrc/server/w_crylink.qc
qcsrc/server/w_electro.qc
qcsrc/server/w_fireball.qc
qcsrc/server/w_grenadelauncher.qc
qcsrc/server/w_hagar.qc
qcsrc/server/w_hlac.qc
qcsrc/server/w_hook.qc
qcsrc/server/w_laser.qc
qcsrc/server/w_minelayer.qc
qcsrc/server/w_minstanex.qc
qcsrc/server/w_nex.qc
qcsrc/server/w_porto.qc
qcsrc/server/w_rocketlauncher.qc
qcsrc/server/w_seeker.qc
qcsrc/server/w_shotgun.qc
qcsrc/server/w_sniperrifle.qc
qcsrc/server/w_tuba.qc
qcsrc/server/w_uzi.qc
sound/weapons/campingrifle_reload.ogg [deleted file]
sound/weapons/reload.ogg [new file with mode: 0644]
tooltips.db
tooltips.db.de
xonotic-credits.txt
xonotic-credits.txt.fr

index 864d169c3baa3d23ff3a00fbfb28ee0b2a278b5b..665dda5c90682f44730e5c33a4901e2239934e28 100644 (file)
@@ -243,6 +243,8 @@ set g_balance_laser_secondary_gauntlet 0
 set g_balance_laser_secondary_force_zscale 1
 set g_balance_laser_secondary_force_velocitybias 0
 set g_balance_laser_secondary_force_other_scale 1
+set g_balance_laser_reload_ammo 0 //default: 6
+set g_balance_laser_reload_time 2
 // }}}
 // {{{ shotgun
 set g_balance_shotgun_primary_bullets 6
@@ -263,6 +265,8 @@ set g_balance_shotgun_secondary_damage 115
 set g_balance_shotgun_secondary_force 150
 set g_balance_shotgun_secondary_refire 1.1
 set g_balance_shotgun_secondary_animtime 1
+set g_balance_shotgun_reload_ammo 0 //default: 5
+set g_balance_shotgun_reload_time 2
 // }}}
 // {{{ uzi
 set g_balance_uzi_mode 0                               // Activates varible spread for sustained & burst mode secondary
@@ -294,6 +298,9 @@ set g_balance_uzi_sustained_ammo 1
 
 set g_balance_uzi_speed 18000
 set g_balance_uzi_bulletconstant 115 // 13.1qu
+
+set g_balance_uzi_reload_ammo 0 //default: 30
+set g_balance_uzi_reload_time 2
 // }}}
 // {{{ mortar
 set g_balance_grenadelauncher_primary_type 0
@@ -334,6 +341,9 @@ set g_balance_grenadelauncher_secondary_remote_detonateprimary 0
 
 set g_balance_grenadelauncher_bouncefactor 0.5
 set g_balance_grenadelauncher_bouncestop 0.075
+
+set g_balance_grenadelauncher_reload_ammo 0 //default: 12
+set g_balance_grenadelauncher_reload_time 2
 // }}}
 // {{{ minelayer
 set g_balance_minelayer_damage 35
@@ -357,6 +367,8 @@ set g_balance_minelayer_remote_damage 45
 set g_balance_minelayer_remote_edgedamage 40
 set g_balance_minelayer_remote_radius 200
 set g_balance_minelayer_remote_force 300
+set g_balance_minelayer_reload_ammo 0 //default: 15
+set g_balance_minelayer_reload_time 2
 // }}}
 // {{{ electro
 set g_balance_electro_lightning 0
@@ -400,6 +412,8 @@ set g_balance_electro_combo_force 200
 set g_balance_electro_combo_radius 250
 set g_balance_electro_combo_comboradius 0
 set g_balance_electro_combo_speed 2000
+set g_balance_electro_reload_ammo 0 //default: 20
+set g_balance_electro_reload_time 2
 // }}}
 // {{{ crylink
 set g_balance_crylink_primary_damage 18
@@ -456,6 +470,9 @@ set g_balance_crylink_secondary_middle_lifetime 5 // range: 35000 full, fades to
 set g_balance_crylink_secondary_middle_fadetime 5
 set g_balance_crylink_secondary_line_lifetime 2 // range: 35000 full, fades to 70000
 set g_balance_crylink_secondary_line_fadetime 2
+
+set g_balance_crylink_reload_ammo 0 //default: 10
+set g_balance_crylink_reload_time 2
 // }}}
 // {{{ nex
 set g_balance_nex_primary_damage 100
@@ -497,11 +514,17 @@ set g_balance_nex_charge_shot_multiplier 0.5
 set g_balance_nex_charge_velocity_rate 0.2
 set g_balance_nex_charge_minspeed 400
 set g_balance_nex_charge_maxspeed 1000
+
+set g_balance_nex_reload_ammo 0 //default: 25
+set g_balance_nex_reload_time 2
 // }}}
 // {{{ minstanex
 set g_balance_minstanex_refire 1
 set g_balance_minstanex_animtime 0.3
 set g_balance_minstanex_ammo 10
+set g_balance_minstanex_laser_ammo 0
+set g_balance_minstanex_reload_ammo 0 //default: 50
+set g_balance_minstanex_reload_time 2
 // }}}
 // {{{ hagar
 set g_balance_hagar_primary_damage 37
@@ -524,6 +547,8 @@ set g_balance_hagar_secondary_lifetime_min 30
 set g_balance_hagar_secondary_lifetime_rand 0
 set g_balance_hagar_secondary_refire 0.15
 set g_balance_hagar_secondary_ammo 1
+set g_balance_hagar_reload_ammo 0 //default: 25
+set g_balance_hagar_reload_time 2
 // }}}
 // {{{ rocketlauncher
 set g_balance_rocketlauncher_damage 105
@@ -549,6 +574,8 @@ set g_balance_rocketlauncher_remote_damage 105
 set g_balance_rocketlauncher_remote_edgedamage 40
 set g_balance_rocketlauncher_remote_radius 150
 set g_balance_rocketlauncher_remote_force 600
+set g_balance_rocketlauncher_reload_ammo 0 //default: 25
+set g_balance_rocketlauncher_reload_time 2
 // }}}
 // {{{ porto
 set g_balance_porto_primary_refire 1.5
@@ -610,11 +637,11 @@ set g_balance_hlac_secondary_refire 1
 set g_balance_hlac_secondary_animtime 0.3
 set g_balance_hlac_secondary_ammo 10
 set g_balance_hlac_secondary_shots 6
+
+set g_balance_hlac_reload_ammo 0 //default: 20
+set g_balance_hlac_reload_time 2
 // }}}
 // {{{ sniperrifle
-set g_balance_sniperrifle_magazinecapacity 8
-set g_balance_sniperrifle_reloadtime 2 // matches reload anim
-set g_balance_sniperrifle_auto_reload_on_switch 0
 set g_balance_sniperrifle_bursttime 0
 set g_balance_sniperrifle_primary_tracer 0
 set g_balance_sniperrifle_primary_damage 60
@@ -644,6 +671,8 @@ set g_balance_sniperrifle_secondary_ammo 10
 set g_balance_sniperrifle_secondary_bulletconstant 130 // 18.3qu
 set g_balance_sniperrifle_secondary_burstcost 0
 set g_balance_sniperrifle_secondary_bullethail 0 // empty magazine on shot
+set g_balance_sniperrifle_reload_ammo 80 //default: 80
+set g_balance_sniperrifle_reload_time 2
 // }}}
 // {{{ tuba
 set g_balance_tuba_refire 0.05
@@ -693,6 +722,8 @@ 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_flac_ammo 0.5
@@ -743,4 +774,6 @@ set g_balance_seeker_tag_lifetime 15
 set g_balance_seeker_tag_refire 0.7
 set g_balance_seeker_tag_speed 9000
 set g_balance_seeker_tag_spread 0
+set g_balance_seeker_reload_ammo 0 //default: 15
+set g_balance_seeker_reload_time 2
 // End new seeker
index 547a040ae2ab0b32652f1210e10891156c603961..77aac858a72abb42b7f3ac1b53828439df052670 100644 (file)
@@ -243,6 +243,8 @@ set g_balance_laser_secondary_gauntlet 1
 set g_balance_laser_secondary_force_zscale 1.25
 set g_balance_laser_secondary_force_velocitybias 0
 set g_balance_laser_secondary_force_other_scale 1
+set g_balance_laser_reload_ammo 0 //default: 6
+set g_balance_laser_reload_time 2
 // }}}
 // {{{ shotgun
 set g_balance_shotgun_primary_bullets 5
@@ -263,6 +265,8 @@ set g_balance_shotgun_secondary_damage 84
 set g_balance_shotgun_secondary_force 147
 set g_balance_shotgun_secondary_refire 1.1
 set g_balance_shotgun_secondary_animtime 1
+set g_balance_shotgun_reload_ammo 0 //default: 5
+set g_balance_shotgun_reload_time 2
 // }}}
 // {{{ uzi
 set g_balance_uzi_mode 0                               // Activates varible spread for sustained & burst mode secondary
@@ -294,6 +298,9 @@ set g_balance_uzi_sustained_ammo 1
 
 set g_balance_uzi_speed 18000
 set g_balance_uzi_bulletconstant 300 // 13.1qu
+
+set g_balance_uzi_reload_ammo 0 //default: 30
+set g_balance_uzi_reload_time 2
 // }}}
 // {{{ mortar
 set g_balance_grenadelauncher_primary_type 0
@@ -334,6 +341,9 @@ set g_balance_grenadelauncher_secondary_remote_detonateprimary 0
 
 set g_balance_grenadelauncher_bouncefactor 0.7
 set g_balance_grenadelauncher_bouncestop 0.12
+
+set g_balance_grenadelauncher_reload_ammo 0 //default: 12
+set g_balance_grenadelauncher_reload_time 2
 // }}}
 // {{{ minelayer
 set g_balance_minelayer_damage 65
@@ -357,6 +367,8 @@ set g_balance_minelayer_remote_damage 45
 set g_balance_minelayer_remote_edgedamage 40
 set g_balance_minelayer_remote_radius 200
 set g_balance_minelayer_remote_force 300
+set g_balance_minelayer_reload_ammo 0 //default: 15
+set g_balance_minelayer_reload_time 2
 // }}}
 // {{{ electro
 set g_balance_electro_lightning 0
@@ -400,6 +412,8 @@ set g_balance_electro_combo_force 200
 set g_balance_electro_combo_radius 250
 set g_balance_electro_combo_comboradius 70
 set g_balance_electro_combo_speed 400
+set g_balance_electro_reload_ammo 0 //default: 20
+set g_balance_electro_reload_time 2
 // }}}
 // {{{ crylink
 set g_balance_crylink_primary_damage 23
@@ -456,6 +470,9 @@ set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to
 set g_balance_crylink_secondary_middle_fadetime 5
 set g_balance_crylink_secondary_line_lifetime 2 // range: 4000 full, fades to 8000
 set g_balance_crylink_secondary_line_fadetime 2
+
+set g_balance_crylink_reload_ammo 0 //default: 10
+set g_balance_crylink_reload_time 2
 // }}}
 // {{{ nex
 set g_balance_nex_primary_damage 72
@@ -497,11 +514,17 @@ set g_balance_nex_charge_shot_multiplier 0
 set g_balance_nex_charge_velocity_rate 0.2
 set g_balance_nex_charge_minspeed ""
 set g_balance_nex_charge_maxspeed ""
+
+set g_balance_nex_reload_ammo 0 //default: 25
+set g_balance_nex_reload_time 2
 // }}}
 // {{{ minstanex
 set g_balance_minstanex_refire 1
 set g_balance_minstanex_animtime 0.278
 set g_balance_minstanex_ammo 10
+set g_balance_minstanex_laser_ammo 0
+set g_balance_minstanex_reload_ammo 0 //default: 50
+set g_balance_minstanex_reload_time 2
 // }}}
 // {{{ hagar
 set g_balance_hagar_primary_damage 43
@@ -524,6 +547,8 @@ set g_balance_hagar_secondary_lifetime_min 5
 set g_balance_hagar_secondary_lifetime_rand 0
 set g_balance_hagar_secondary_refire 0.15
 set g_balance_hagar_secondary_ammo 2
+set g_balance_hagar_reload_ammo 0 //default: 25
+set g_balance_hagar_reload_time 2
 // }}}
 // {{{ rocketlauncher
 set g_balance_rocketlauncher_damage 65
@@ -549,6 +574,8 @@ set g_balance_rocketlauncher_remote_damage 120
 set g_balance_rocketlauncher_remote_edgedamage 46
 set g_balance_rocketlauncher_remote_radius 185
 set g_balance_rocketlauncher_remote_force 590
+set g_balance_rocketlauncher_reload_ammo 0 //default: 25
+set g_balance_rocketlauncher_reload_time 2
 // }}}
 // {{{ porto
 set g_balance_porto_primary_refire 1.5
@@ -610,11 +637,11 @@ set g_balance_hlac_secondary_refire 1
 set g_balance_hlac_secondary_animtime 0.3
 set g_balance_hlac_secondary_ammo 11
 set g_balance_hlac_secondary_shots 6
+
+set g_balance_hlac_reload_ammo 0 //default: 20
+set g_balance_hlac_reload_time 2
 // }}}
 // {{{ sniperrifle
-set g_balance_sniperrifle_magazinecapacity 8
-set g_balance_sniperrifle_reloadtime 2 // matches reload anim
-set g_balance_sniperrifle_auto_reload_on_switch 0
 set g_balance_sniperrifle_bursttime 0.85 // 0.35 - 0.1 + 0.35 - 0.1 + 0.35 = three secondaries
 set g_balance_sniperrifle_primary_tracer 0
 set g_balance_sniperrifle_primary_damage 75
@@ -644,6 +671,8 @@ set g_balance_sniperrifle_secondary_ammo 10
 set g_balance_sniperrifle_secondary_bulletconstant 130 // 18.3qu
 set g_balance_sniperrifle_secondary_burstcost 0
 set g_balance_sniperrifle_secondary_bullethail 0
+set g_balance_sniperrifle_reload_ammo 80 //default: 80
+set g_balance_sniperrifle_reload_time 2
 // }}}
 // {{{ tuba
 set g_balance_tuba_refire 0.05
@@ -693,6 +722,8 @@ set g_balance_fireball_secondary_speed 650
 set g_balance_fireball_secondary_speed_up 0
 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_flac_ammo 0.5
@@ -743,4 +774,6 @@ set g_balance_seeker_tag_lifetime 15
 set g_balance_seeker_tag_refire 0.7
 set g_balance_seeker_tag_speed 9000
 set g_balance_seeker_tag_spread 0
+set g_balance_seeker_reload_ammo 0 //default: 15
+set g_balance_seeker_reload_time 2
 // End new seeker
index 83a1db0a7cab6a242bc5760f354b19cb0710e4f2..0183a3b5bda2c9afe786a62dd3d3d44192653b22 100644 (file)
@@ -24,7 +24,7 @@ set g_start_ammo_nails 0
 set g_start_ammo_rockets 0
 set g_start_ammo_cells 0
 set g_start_ammo_fuel 0
-set g_warmup_start_health 200 "starting values when being in warmup-stage"
+set g_warmup_start_health 100 "starting values when being in warmup-stage"
 set g_warmup_start_armor 100 "starting values when being in warmup-stage"
 set g_warmup_start_ammo_shells 50 "starting values when being in warmup-stage"
 set g_warmup_start_ammo_nails 150 "starting values when being in warmup-stage"
@@ -57,21 +57,21 @@ set g_pickup_ammo_anyway 1
 set g_pickup_weapons_anyway 1
 set g_pickup_shells 15
 set g_pickup_shells_weapon 15
-set g_pickup_shells_max 90
+set g_pickup_shells_max 60
 set g_pickup_nails 80
 set g_pickup_nails_weapon 80
 set g_pickup_nails_max 320
 set g_pickup_rockets 40
 set g_pickup_rockets_weapon 40
 set g_pickup_rockets_max 160
-set g_pickup_cells 50
-set g_pickup_cells_weapon 50
-set g_pickup_cells_max 200
+set g_pickup_cells 30
+set g_pickup_cells_weapon 30
+set g_pickup_cells_max 180
 set g_pickup_fuel 50
 set g_pickup_fuel_weapon 50
 set g_pickup_fuel_jetpack 100
 set g_pickup_fuel_max 100
-set g_pickup_armorsmall 10
+set g_pickup_armorsmall 5
 set g_pickup_armorsmall_max 200
 set g_pickup_armorsmall_anyway 1
 set g_pickup_armormedium 25
@@ -83,7 +83,7 @@ set g_pickup_armorbig_anyway 1
 set g_pickup_armorlarge 100
 set g_pickup_armorlarge_max 200
 set g_pickup_armorlarge_anyway 1
-set g_pickup_healthsmall 10
+set g_pickup_healthsmall 5
 set g_pickup_healthsmall_max 250
 set g_pickup_healthsmall_anyway 1
 set g_pickup_healthmedium 25
@@ -104,7 +104,7 @@ set g_pickup_respawntime_ammo 10
 set g_pickup_respawntimejitter_short 0
 set g_pickup_respawntimejitter_medium 0
 set g_pickup_respawntimejitter_long 0
-set g_pickup_respawntimejitter_powerup 10
+set g_pickup_respawntimejitter_powerup 30
 set g_pickup_respawntimejitter_weapon 0
 set g_pickup_respawntimejitter_ammo 0
 // }}}
@@ -114,18 +114,18 @@ set g_balance_health_regen 0
 set g_balance_health_regenlinear 5
 set g_balance_pause_health_regen 5
 set g_balance_pause_health_regen_spawn 0
-set g_balance_health_rot 0
-set g_balance_health_rotlinear 4
-set g_balance_pause_health_rot 3
+set g_balance_health_rot 0.05
+set g_balance_health_rotlinear 2
+set g_balance_pause_health_rot 0.5
 set g_balance_pause_health_rot_spawn 5
 set g_balance_health_regenstable 100
 set g_balance_health_rotstable 150
 set g_balance_health_limit 999
 set g_balance_armor_regen 0
 set g_balance_armor_regenlinear 0
-set g_balance_armor_rot 0
+set g_balance_armor_rot 0.05
 set g_balance_armor_rotlinear 2
-set g_balance_pause_armor_rot 3
+set g_balance_pause_armor_rot 1
 set g_balance_pause_armor_rot_spawn 5
 set g_balance_armor_regenstable 100
 set g_balance_armor_rotstable 100
@@ -220,7 +220,7 @@ set g_balance_laser_primary_speed 6000
 set g_balance_laser_primary_spread 0
 set g_balance_laser_primary_refire 0.7
 set g_balance_laser_primary_animtime 0.3
-set g_balance_laser_primary_lifetime 30
+set g_balance_laser_primary_lifetime 5
 set g_balance_laser_primary_shotangle 0
 set g_balance_laser_primary_delay 0
 set g_balance_laser_primary_gauntlet 0
@@ -236,19 +236,21 @@ set g_balance_laser_secondary_speed 12000
 set g_balance_laser_secondary_spread 0
 set g_balance_laser_secondary_refire 0.7
 set g_balance_laser_secondary_animtime 0.3
-set g_balance_laser_secondary_lifetime 30
+set g_balance_laser_secondary_lifetime 5
 set g_balance_laser_secondary_shotangle -90
 set g_balance_laser_secondary_delay 0
 set g_balance_laser_secondary_gauntlet 0
 set g_balance_laser_secondary_force_zscale 1.25
 set g_balance_laser_secondary_force_velocitybias 0
 set g_balance_laser_secondary_force_other_scale 1
+set g_balance_laser_reload_ammo 0 //default: 6
+set g_balance_laser_reload_time 2
 // }}}
 // {{{ shotgun
-set g_balance_shotgun_primary_bullets 12
-set g_balance_shotgun_primary_damage 5
+set g_balance_shotgun_primary_bullets 14
+set g_balance_shotgun_primary_damage 4
 set g_balance_shotgun_primary_force 15
-set g_balance_shotgun_primary_spread 0.11
+set g_balance_shotgun_primary_spread 0.12
 set g_balance_shotgun_primary_refire 0.75
 set g_balance_shotgun_primary_animtime 0.2
 set g_balance_shotgun_primary_ammo 1
@@ -263,6 +265,8 @@ set g_balance_shotgun_secondary_damage 115
 set g_balance_shotgun_secondary_force 150
 set g_balance_shotgun_secondary_refire 1.1
 set g_balance_shotgun_secondary_animtime 1
+set g_balance_shotgun_reload_ammo 0 //default: 5
+set g_balance_shotgun_reload_time 2
 // }}}
 // {{{ uzi
 set g_balance_uzi_mode 1                               // Activates varible spread for sustained & burst mode secondary
@@ -273,7 +277,7 @@ set g_balance_uzi_spread_add 0.012
 set g_balance_uzi_burst 3                              // # of bullets in a burst (if set to 2 or more)
 set g_balance_uzi_burst_animtime 0.3
 set g_balance_uzi_burst_refire 0.06            // refire between burst bullets
-set g_balance_uzi_burst_refire2 0.75   // refire after burst
+set g_balance_uzi_burst_refire2 0.45   // refire after burst
 set g_balance_uzi_burst_spread 0.03
 set g_balance_uzi_burst_damage 25              
 set g_balance_uzi_burst_force 20
@@ -294,6 +298,9 @@ set g_balance_uzi_sustained_ammo 1
 
 set g_balance_uzi_speed 18000
 set g_balance_uzi_bulletconstant 115 // 13.1qu
+
+set g_balance_uzi_reload_ammo 0 //default: 30
+set g_balance_uzi_reload_time 2
 // }}}
 // {{{ mortar
 set g_balance_grenadelauncher_primary_type 0
@@ -305,7 +312,7 @@ set g_balance_grenadelauncher_primary_speed 1900
 set g_balance_grenadelauncher_primary_speed_up 225
 set g_balance_grenadelauncher_primary_speed_z 0
 set g_balance_grenadelauncher_primary_spread 0.02
-set g_balance_grenadelauncher_primary_lifetime 30
+set g_balance_grenadelauncher_primary_lifetime 5
 set g_balance_grenadelauncher_primary_lifetime2 1
 set g_balance_grenadelauncher_primary_refire 0.8
 set g_balance_grenadelauncher_primary_animtime 0.3
@@ -334,6 +341,9 @@ set g_balance_grenadelauncher_secondary_remote_detonateprimary 0
 
 set g_balance_grenadelauncher_bouncefactor 0.5
 set g_balance_grenadelauncher_bouncestop 0.075
+
+set g_balance_grenadelauncher_reload_ammo 0 //default: 12
+set g_balance_grenadelauncher_reload_time 2
 // }}}
 // {{{ minelayer
 set g_balance_minelayer_damage 40
@@ -346,7 +356,7 @@ set g_balance_minelayer_lifetime 10
 set g_balance_minelayer_lifetime_countdown 0.5
 set g_balance_minelayer_refire 1.5
 set g_balance_minelayer_animtime 0.4
-set g_balance_minelayer_ammo 5
+set g_balance_minelayer_ammo 4
 set g_balance_minelayer_health 15
 set g_balance_minelayer_limit 4 // 0 disables the limit
 set g_balance_minelayer_protection 1 // don't explode if the mine would hurt the owner or a team mate
@@ -357,6 +367,8 @@ set g_balance_minelayer_remote_damage 45
 set g_balance_minelayer_remote_edgedamage 40
 set g_balance_minelayer_remote_radius 200
 set g_balance_minelayer_remote_force 300
+set g_balance_minelayer_reload_ammo 0 //default: 15
+set g_balance_minelayer_reload_time 2
 // }}}
 // {{{ electro
 set g_balance_electro_lightning 0
@@ -368,7 +380,7 @@ set g_balance_electro_primary_radius 100
 set g_balance_electro_primary_comboradius 150
 set g_balance_electro_primary_speed 2500
 set g_balance_electro_primary_spread 0
-set g_balance_electro_primary_lifetime 30
+set g_balance_electro_primary_lifetime 5
 set g_balance_electro_primary_refire 0.6
 set g_balance_electro_primary_animtime 0.1
 set g_balance_electro_primary_ammo 4
@@ -400,6 +412,8 @@ set g_balance_electro_combo_force 200
 set g_balance_electro_combo_radius 250
 set g_balance_electro_combo_comboradius 0
 set g_balance_electro_combo_speed 2000
+set g_balance_electro_reload_ammo 0 //default: 20
+set g_balance_electro_reload_time 2
 // }}}
 // {{{ crylink 
 set g_balance_crylink_primary_damage 10
@@ -412,7 +426,7 @@ set g_balance_crylink_primary_shots 7
 set g_balance_crylink_primary_bounces 1
 set g_balance_crylink_primary_refire 0.5
 set g_balance_crylink_primary_animtime 0.3
-set g_balance_crylink_primary_ammo 4
+set g_balance_crylink_primary_ammo 3
 set g_balance_crylink_primary_bouncedamagefactor 0.5
 set g_balance_crylink_primary_joindelay 0
 set g_balance_crylink_primary_joinspread 0.4
@@ -456,13 +470,16 @@ set g_balance_crylink_secondary_middle_lifetime 5 // range: 35000 full, fades to
 set g_balance_crylink_secondary_middle_fadetime 5
 set g_balance_crylink_secondary_line_lifetime 5 
 set g_balance_crylink_secondary_line_fadetime 5
+
+set g_balance_crylink_reload_ammo 0 //default: 10
+set g_balance_crylink_reload_time 2
 // }}}
 // {{{ nex
 set g_balance_nex_primary_damage 90
 set g_balance_nex_primary_force 400
 set g_balance_nex_primary_refire 1.5
 set g_balance_nex_primary_animtime 0.3
-set g_balance_nex_primary_ammo 5
+set g_balance_nex_primary_ammo 6
 set g_balance_nex_primary_damagefalloff_mindist 0 // 1000    For tZork ;3
 set g_balance_nex_primary_damagefalloff_maxdist 0 // 3000
 set g_balance_nex_primary_damagefalloff_halflife 0 // 1500
@@ -487,7 +504,7 @@ set g_balance_nex_secondary_damagefalloff_forcehalflife 0
 
 set g_balance_nex_charge 1
 set g_balance_nex_charge_mindmg 40
-set g_balance_nex_charge_start 0.5
+set g_balance_nex_charge_start 0
 set g_balance_nex_charge_rate 0.3
 set g_balance_nex_charge_animlimit 0.5
 set g_balance_nex_charge_limit 1
@@ -497,11 +514,17 @@ set g_balance_nex_charge_shot_multiplier 0.25
 set g_balance_nex_charge_velocity_rate 0
 set g_balance_nex_charge_minspeed 400
 set g_balance_nex_charge_maxspeed 800
+
+set g_balance_nex_reload_ammo 0 //default: 25
+set g_balance_nex_reload_time 2
 // }}}
 // {{{ minstanex
 set g_balance_minstanex_refire 1
 set g_balance_minstanex_animtime 0.3
 set g_balance_minstanex_ammo 10
+set g_balance_minstanex_laser_ammo 0
+set g_balance_minstanex_reload_ammo 0 //default: 50
+set g_balance_minstanex_reload_time 2
 // }}}
 // {{{ hagar
 set g_balance_hagar_primary_damage 30
@@ -510,7 +533,7 @@ set g_balance_hagar_primary_force 50
 set g_balance_hagar_primary_radius 70
 set g_balance_hagar_primary_spread 0.08
 set g_balance_hagar_primary_speed 2000
-set g_balance_hagar_primary_lifetime 0.12
+set g_balance_hagar_primary_lifetime 5
 set g_balance_hagar_primary_refire 0.15
 set g_balance_hagar_primary_ammo 1
 set g_balance_hagar_secondary 1
@@ -520,10 +543,12 @@ set g_balance_hagar_secondary_force 100
 set g_balance_hagar_secondary_radius 65
 set g_balance_hagar_secondary_spread 0.015
 set g_balance_hagar_secondary_speed 2000
-set g_balance_hagar_secondary_lifetime_min 30
+set g_balance_hagar_secondary_lifetime_min 10
 set g_balance_hagar_secondary_lifetime_rand 0
 set g_balance_hagar_secondary_refire 0.15
 set g_balance_hagar_secondary_ammo 1
+set g_balance_hagar_reload_ammo 0 //default: 25
+set g_balance_hagar_reload_time 2
 // }}}
 // {{{ rocketlauncher
 set g_balance_rocketlauncher_damage 80
@@ -533,22 +558,24 @@ set g_balance_rocketlauncher_radius 100
 set g_balance_rocketlauncher_speed 1500
 set g_balance_rocketlauncher_speedaccel 1500
 set g_balance_rocketlauncher_speedstart 800
-set g_balance_rocketlauncher_lifetime 30
+set g_balance_rocketlauncher_lifetime 10
 set g_balance_rocketlauncher_refire 1.1
 set g_balance_rocketlauncher_animtime 0.3
-set g_balance_rocketlauncher_ammo 3
+set g_balance_rocketlauncher_ammo 4
 set g_balance_rocketlauncher_health 30 // 5 hitpoints above maximum laser value -- this way lasers can't blow it up, but grenadelauncher still can most the time.
 set g_balance_rocketlauncher_damageforcescale 4
 set g_balance_rocketlauncher_detonatedelay 0.05 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time
-set g_balance_rocketlauncher_guiderate 130 // max degrees per second
+set g_balance_rocketlauncher_guiderate 110 // max degrees per second
 set g_balance_rocketlauncher_guideratedelay 0.01 // immediate
 set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic)
-set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in
+set g_balance_rocketlauncher_guidedelay 0.2 // delay before guiding kicks in
 set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again
 set g_balance_rocketlauncher_remote_damage 70
 set g_balance_rocketlauncher_remote_edgedamage 35
 set g_balance_rocketlauncher_remote_radius 100
 set g_balance_rocketlauncher_remote_force 400
+set g_balance_rocketlauncher_reload_ammo 0 //default: 25
+set g_balance_rocketlauncher_reload_time 2
 // }}}
 // {{{ porto
 set g_balance_porto_primary_refire 1.5
@@ -584,7 +611,7 @@ set g_balance_hlac_primary_spread_max 0.25
 set g_balance_hlac_primary_spread_add 0.0045
 set g_balance_hlac_primary_spread_crouchmod 0.25
 
-set g_balance_hlac_primary_damage 20
+set g_balance_hlac_primary_damage 18
 set g_balance_hlac_primary_edgedamage 10
 set g_balance_hlac_primary_force 100
 set g_balance_hlac_primary_radius 70
@@ -599,7 +626,7 @@ set g_balance_hlac_secondary 1
 set g_balance_hlac_secondary_spread 0.15
 set g_balance_hlac_secondary_spread_crouchmod 0.5
 
-set g_balance_hlac_secondary_damage 20
+set g_balance_hlac_secondary_damage 16
 set g_balance_hlac_secondary_edgedamage 10
 set g_balance_hlac_secondary_force 100
 set g_balance_hlac_secondary_radius 70
@@ -610,11 +637,11 @@ set g_balance_hlac_secondary_refire 1
 set g_balance_hlac_secondary_animtime 0.3
 set g_balance_hlac_secondary_ammo 10
 set g_balance_hlac_secondary_shots 6
+
+set g_balance_hlac_reload_ammo 0 //default: 20
+set g_balance_hlac_reload_time 2
 // }}}
 // {{{ sniperrifle
-set g_balance_sniperrifle_magazinecapacity 8 // make it pretty much useless in close combat
-set g_balance_sniperrifle_reloadtime 2 // matches reload anim
-set g_balance_sniperrifle_auto_reload_on_switch 0
 set g_balance_sniperrifle_bursttime 0
 set g_balance_sniperrifle_primary_tracer 1
 set g_balance_sniperrifle_primary_damage 50
@@ -644,6 +671,8 @@ set g_balance_sniperrifle_secondary_ammo 10
 set g_balance_sniperrifle_secondary_bulletconstant 110 // 15.5qu
 set g_balance_sniperrifle_secondary_burstcost 0
 set g_balance_sniperrifle_secondary_bullethail 0 // empty magazine on shot
+set g_balance_sniperrifle_reload_ammo 80 //default: 80
+set g_balance_sniperrifle_reload_time 2
 // }}}
 // {{{ tuba
 set g_balance_tuba_refire 0.05
@@ -693,6 +722,8 @@ 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_flac_ammo 0.5
@@ -743,4 +774,6 @@ set g_balance_seeker_tag_lifetime 15
 set g_balance_seeker_tag_refire 0.7
 set g_balance_seeker_tag_speed 9000
 set g_balance_seeker_tag_spread 0
+set g_balance_seeker_reload_ammo 0 //default: 15
+set g_balance_seeker_reload_time 2
 // End new seeker
index 1842dabd4fc62c50990ffba826fc57c647de658a..a782c6387927577d9e0b0d92a39d7d61c1deb534 100644 (file)
@@ -243,6 +243,8 @@ set g_balance_laser_secondary_gauntlet 1
 set g_balance_laser_secondary_force_zscale 1.25
 set g_balance_laser_secondary_force_velocitybias 0
 set g_balance_laser_secondary_force_other_scale 0
+set g_balance_laser_reload_ammo 0 //default: 6
+set g_balance_laser_reload_time 2
 // }}}
 // {{{ shotgun
 set g_balance_shotgun_primary_bullets 18
@@ -263,6 +265,8 @@ set g_balance_shotgun_secondary_damage 110
 set g_balance_shotgun_secondary_force 150
 set g_balance_shotgun_secondary_refire 1.1
 set g_balance_shotgun_secondary_animtime 1
+set g_balance_shotgun_reload_ammo 0 //default: 5
+set g_balance_shotgun_reload_time 2
 // }}}
 // {{{ uzi
 set g_balance_uzi_mode 1                               // Activates varible spread for sustained & burst mode secondary
@@ -294,6 +298,9 @@ set g_balance_uzi_sustained_ammo 1
 
 set g_balance_uzi_speed 18000
 set g_balance_uzi_bulletconstant 115 // 13.1qu
+
+set g_balance_uzi_reload_ammo 0 //default: 30
+set g_balance_uzi_reload_time 2
 // }}}
 // {{{ mortar
 set g_balance_grenadelauncher_primary_type 0
@@ -334,6 +341,9 @@ set g_balance_grenadelauncher_secondary_remote_detonateprimary 0
 
 set g_balance_grenadelauncher_bouncefactor 0.5
 set g_balance_grenadelauncher_bouncestop 0.12
+
+set g_balance_grenadelauncher_reload_ammo 0 //default: 12
+set g_balance_grenadelauncher_reload_time 2
 // }}}
 // {{{ minelayer
 set g_balance_minelayer_damage 42
@@ -357,6 +367,8 @@ set g_balance_minelayer_remote_damage 45
 set g_balance_minelayer_remote_edgedamage 40
 set g_balance_minelayer_remote_radius 200
 set g_balance_minelayer_remote_force 300
+set g_balance_minelayer_reload_ammo 0 //default: 15
+set g_balance_minelayer_reload_time 2
 // }}}
 // {{{ electro
 set g_balance_electro_lightning 1
@@ -400,6 +412,8 @@ set g_balance_electro_combo_force 80
 set g_balance_electro_combo_radius 250
 set g_balance_electro_combo_comboradius 0
 set g_balance_electro_combo_speed 400
+set g_balance_electro_reload_ammo 0 //default: 20
+set g_balance_electro_reload_time 2
 // }}}
 // {{{ crylink
 set g_balance_crylink_primary_damage 7 // LOG: 10 -> 7
@@ -456,6 +470,9 @@ set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to
 set g_balance_crylink_secondary_middle_fadetime 5
 set g_balance_crylink_secondary_line_lifetime 2 // range: 4000 full, fades to 8000
 set g_balance_crylink_secondary_line_fadetime 0.25
+
+set g_balance_crylink_reload_ammo 0 //default: 10
+set g_balance_crylink_reload_time 2
 // }}}
 // {{{ nex
 set g_balance_nex_primary_damage 90
@@ -497,11 +514,17 @@ set g_balance_nex_charge_shot_multiplier 0
 set g_balance_nex_charge_velocity_rate 0
 set g_balance_nex_charge_minspeed 600
 set g_balance_nex_charge_maxspeed 1000
+
+set g_balance_nex_reload_ammo 0 //default: 25
+set g_balance_nex_reload_time 2
 // }}}
 // {{{ minstanex
 set g_balance_minstanex_refire 1
 set g_balance_minstanex_animtime 0.50
 set g_balance_minstanex_ammo 10
+set g_balance_minstanex_laser_ammo 0
+set g_balance_minstanex_reload_ammo 0 //default: 50
+set g_balance_minstanex_reload_time 2
 // }}}
 // {{{ hagar
 set g_balance_hagar_primary_damage 14
@@ -524,6 +547,8 @@ set g_balance_hagar_secondary_lifetime_min 5
 set g_balance_hagar_secondary_lifetime_rand 0
 set g_balance_hagar_secondary_refire 0.12
 set g_balance_hagar_secondary_ammo 1
+set g_balance_hagar_reload_ammo 0 //default: 25
+set g_balance_hagar_reload_time 2
 // }}}
 // {{{ rocketlauncher
 set g_balance_rocketlauncher_damage 82
@@ -549,6 +574,8 @@ set g_balance_rocketlauncher_remote_damage 60
 set g_balance_rocketlauncher_remote_edgedamage 20
 set g_balance_rocketlauncher_remote_radius 120
 set g_balance_rocketlauncher_remote_force 350
+set g_balance_rocketlauncher_reload_ammo 0 //default: 25
+set g_balance_rocketlauncher_reload_time 2
 // }}}
 // {{{ porto
 set g_balance_porto_primary_refire 1.5
@@ -610,11 +637,11 @@ set g_balance_hlac_secondary_refire 0.8
 set g_balance_hlac_secondary_animtime 0.4
 set g_balance_hlac_secondary_ammo 4
 set g_balance_hlac_secondary_shots 6
+
+set g_balance_hlac_reload_ammo 0 //default: 20
+set g_balance_hlac_reload_time 2
 // }}}
 // {{{ sniperrifle
-set g_balance_sniperrifle_magazinecapacity 8 // make it pretty much useless in close combat
-set g_balance_sniperrifle_reloadtime 2 // matches reload anim
-set g_balance_sniperrifle_auto_reload_on_switch 0
 set g_balance_sniperrifle_bursttime 0
 set g_balance_sniperrifle_primary_tracer 1
 set g_balance_sniperrifle_primary_damage 60
@@ -644,6 +671,8 @@ set g_balance_sniperrifle_secondary_ammo 10
 set g_balance_sniperrifle_secondary_bulletconstant 110 // 15.5qu
 set g_balance_sniperrifle_secondary_burstcost 0
 set g_balance_sniperrifle_secondary_bullethail 0 // empty magazine on shot
+set g_balance_sniperrifle_reload_ammo 80 //default: 80
+set g_balance_sniperrifle_reload_time 2
 // }}}
 // {{{ tuba
 set g_balance_tuba_refire 0.05
@@ -693,6 +722,8 @@ 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_flac_ammo 0.5
@@ -743,4 +774,6 @@ set g_balance_seeker_tag_lifetime 15
 set g_balance_seeker_tag_refire 0.75 // LOG: 0.7 -> 0.75
 set g_balance_seeker_tag_speed 5000
 set g_balance_seeker_tag_spread 0
+set g_balance_seeker_reload_ammo 0 //default: 15
+set g_balance_seeker_reload_time 2
 // End new seeker
index ed8ea42d58d687ea2a77f4e3053c2d7c9b20bd18..2fb726764c7bae06ccea84a81d78af958fbd8171 100644 (file)
@@ -243,6 +243,8 @@ set g_balance_laser_secondary_gauntlet 0
 set g_balance_laser_secondary_force_zscale 1
 set g_balance_laser_secondary_force_velocitybias 0
 set g_balance_laser_secondary_force_other_scale 1
+set g_balance_laser_reload_ammo 0 //default: 6
+set g_balance_laser_reload_time 2
 // }}}
 // {{{ shotgun
 set g_balance_shotgun_primary_bullets 10
@@ -263,6 +265,8 @@ set g_balance_shotgun_secondary_damage 110
 set g_balance_shotgun_secondary_force 150
 set g_balance_shotgun_secondary_refire 1.1
 set g_balance_shotgun_secondary_animtime 1
+set g_balance_shotgun_reload_ammo 0 //default: 5
+set g_balance_shotgun_reload_time 2
 // }}}
 // {{{ uzi
 set g_balance_uzi_mode 1                               // Activates varible spread for sustained & burst mode secondary
@@ -294,6 +298,9 @@ set g_balance_uzi_sustained_ammo 1
 
 set g_balance_uzi_speed 18000
 set g_balance_uzi_bulletconstant 115 // 13.1qu
+
+set g_balance_uzi_reload_ammo 0 //default: 30
+set g_balance_uzi_reload_time 2
 // }}}
 // {{{ mortar
 set g_balance_grenadelauncher_primary_type 0
@@ -334,6 +341,9 @@ set g_balance_grenadelauncher_secondary_remote_detonateprimary 0
 
 set g_balance_grenadelauncher_bouncefactor 0.5
 set g_balance_grenadelauncher_bouncestop 0.075
+
+set g_balance_grenadelauncher_reload_ammo 0 //default: 12
+set g_balance_grenadelauncher_reload_time 2
 // }}}
 // {{{ minelayer
 set g_balance_minelayer_damage 35
@@ -357,6 +367,8 @@ set g_balance_minelayer_remote_damage 45
 set g_balance_minelayer_remote_edgedamage 40
 set g_balance_minelayer_remote_radius 200
 set g_balance_minelayer_remote_force 300
+set g_balance_minelayer_reload_ammo 0 //default: 15
+set g_balance_minelayer_reload_time 2
 // }}}
 // {{{ electro
 set g_balance_electro_lightning 0
@@ -400,6 +412,8 @@ set g_balance_electro_combo_force 150
 set g_balance_electro_combo_radius 250
 set g_balance_electro_combo_comboradius 0
 set g_balance_electro_combo_speed 1000
+set g_balance_electro_reload_ammo 0 //default: 20
+set g_balance_electro_reload_time 2
 // }}}
 // {{{ crylink
 set g_balance_crylink_primary_damage 5
@@ -456,6 +470,8 @@ set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to
 set g_balance_crylink_secondary_middle_fadetime 5
 set g_balance_crylink_secondary_line_lifetime 2 // range: 4000 full, fades to 8000
 set g_balance_crylink_secondary_line_fadetime 2
+set g_balance_crylink_reload_ammo 0 //default: 10
+set g_balance_crylink_reload_time 2
 // }}}
 // {{{ nex
 set g_balance_nex_primary_damage 100
@@ -497,11 +513,17 @@ set g_balance_nex_charge_shot_multiplier 0
 set g_balance_nex_charge_velocity_rate 0
 set g_balance_nex_charge_minspeed 400
 set g_balance_nex_charge_maxspeed 1000
+
+set g_balance_nex_reload_ammo 0 //default: 25
+set g_balance_nex_reload_time 2
 // }}}
 // {{{ minstanex
 set g_balance_minstanex_refire 1
 set g_balance_minstanex_animtime 0.3
 set g_balance_minstanex_ammo 10
+set g_balance_minstanex_laser_ammo 0
+set g_balance_minstanex_reload_ammo 0 //default: 50
+set g_balance_minstanex_reload_time 2
 // }}}
 // {{{ hagar
 set g_balance_hagar_primary_damage 25
@@ -524,6 +546,8 @@ set g_balance_hagar_secondary_lifetime_min 30
 set g_balance_hagar_secondary_lifetime_rand 0
 set g_balance_hagar_secondary_refire 0.15
 set g_balance_hagar_secondary_ammo 1
+set g_balance_hagar_reload_ammo 0 //default: 25
+set g_balance_hagar_reload_time 2
 // }}}
 // {{{ rocketlauncher
 set g_balance_rocketlauncher_damage 120
@@ -549,6 +573,8 @@ set g_balance_rocketlauncher_remote_damage 90
 set g_balance_rocketlauncher_remote_edgedamage 20
 set g_balance_rocketlauncher_remote_radius 125
 set g_balance_rocketlauncher_remote_force 350
+set g_balance_rocketlauncher_reload_ammo 0 //default: 25
+set g_balance_rocketlauncher_reload_time 2
 // }}}
 // {{{ porto
 set g_balance_porto_primary_refire 1.5
@@ -610,11 +636,11 @@ set g_balance_hlac_secondary_refire 1
 set g_balance_hlac_secondary_animtime 0.7
 set g_balance_hlac_secondary_ammo 10
 set g_balance_hlac_secondary_shots 6
+
+set g_balance_hlac_reload_ammo 0 //default: 20
+set g_balance_hlac_reload_time 2
 // }}}
 // {{{ sniperrifle
-set g_balance_sniperrifle_magazinecapacity 8 // make it pretty much useless in close combat
-set g_balance_sniperrifle_reloadtime 2 // matches reload anim
-set g_balance_sniperrifle_auto_reload_on_switch 0
 set g_balance_sniperrifle_bursttime 0
 set g_balance_sniperrifle_primary_tracer 1
 set g_balance_sniperrifle_primary_damage 40
@@ -644,6 +670,8 @@ set g_balance_sniperrifle_secondary_ammo 10
 set g_balance_sniperrifle_secondary_bulletconstant 110 // 15.5qu
 set g_balance_sniperrifle_secondary_burstcost 0
 set g_balance_sniperrifle_secondary_bullethail 0 // empty magazine on shot
+set g_balance_sniperrifle_reload_ammo 80 //default: 80
+set g_balance_sniperrifle_reload_time 2
 // }}}
 // {{{ tuba
 set g_balance_tuba_refire 0.05
@@ -693,6 +721,8 @@ 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_flac_ammo 0.5
@@ -743,4 +773,6 @@ set g_balance_seeker_tag_lifetime 15
 set g_balance_seeker_tag_refire 1
 set g_balance_seeker_tag_speed 9000
 set g_balance_seeker_tag_spread 0
+set g_balance_seeker_reload_ammo 0 //default: 15
+set g_balance_seeker_reload_time 2
 // End new seeker
index 57f7a27a813cc477b2cec83c22c6c0a5c08ea5de..ca87620ef749adbda251d3e5022b3c49dfab699b 100644 (file)
@@ -188,12 +188,13 @@ 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_size 2     "bullet counter ring size for Rifle, velocity ring for Nex"
+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_sniperrifle_alpha 0.15
-
-seta crosshair_ring_nex_outer_alpha 0.15
+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
@@ -201,6 +202,14 @@ 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_reload 1 "main cvar to enable or disable ammo crosshair rings"
+seta crosshair_ring_reload_inner 1 "allow switching to inner ring when the main ring is already used by the weapon"
+seta crosshair_ring_reload_size 2.5    "reload ring size"
+seta crosshair_ring_reload_alpha 0.2   "reload ring alpha"
+
 seta cl_reticle_stretch 0 "whether to stretch reticles so they fit the screen (brakes image proportions)"
 seta cl_reticle_item_nex 1 "draw aiming reticle for the nex weapon's zoom, 0 disables and values between 0 and 1 change alpha"
 seta cl_reticle_item_normal 1 "draw reticle when zooming with the zoom button, 0 disables and values between 0 and 1 change alpha"
@@ -481,7 +490,7 @@ set g_powerup_superhealth 1 "if set to 0 the mega health powerup will not spawn
 set g_powerup_strength 1 "if set to 0 the strength powerup will not spawn on the map"
 set g_powerup_shield 1 "if set to 0 the shield (invincibility) powerup will not spawn on the map"
 set g_balance_powerup_timer 1 "if set to 0 the powerups dont wear off"
-set g_use_ammunition 1 "if set to 0 all weapons you pick up have unlimited ammunition"
+set g_use_ammunition 1 "if set to 0 all weapons have unlimited ammunition"
 set g_pickup_items 1 "if set to 0 all items (health, armor, ammo, weapons...) are removed from the map"
 set g_minstagib 0      "enable minstagib"
 set g_minstagib_extralives 2   "how many extra lives you will get per powerup"
diff --git a/gfx/crosshair_ring_nexgun.tga b/gfx/crosshair_ring_nexgun.tga
new file mode 100644 (file)
index 0000000..6100096
Binary files /dev/null and b/gfx/crosshair_ring_nexgun.tga differ
diff --git a/gfx/crosshair_ring_sniperrifle.tga b/gfx/crosshair_ring_sniperrifle.tga
new file mode 100644 (file)
index 0000000..b25e350
Binary files /dev/null and b/gfx/crosshair_ring_sniperrifle.tga differ
index 67e31a5402b569b3a01df542002003b6b84c41b4..7497ddc52b928aa2da40ed85118a8953ed86257c 100644 (file)
Binary files a/gfx/menu/luminos/background.tga and b/gfx/menu/luminos/background.tga differ
index f134814f71a9de111bfbc4ed11ea774756eb7f2d..d77948c2d49af0b9c725ead0630896cce8a42bd3 100644 (file)
Binary files a/gfx/menu/luminos/background_ingame_l2.tga and b/gfx/menu/luminos/background_ingame_l2.tga differ
index f134814f71a9de111bfbc4ed11ea774756eb7f2d..d77948c2d49af0b9c725ead0630896cce8a42bd3 100644 (file)
Binary files a/gfx/menu/luminos/background_l2.tga and b/gfx/menu/luminos/background_l2.tga differ
index 37dbf737ff70c0f669a88bee9f07b22e7faf4fc6..af82c92b847d0bf57cd67f2019c68e75e731f81e 100644 (file)
Binary files a/gfx/menu/luminos/checkbox_c0.tga and b/gfx/menu/luminos/checkbox_c0.tga differ
index 37dbf737ff70c0f669a88bee9f07b22e7faf4fc6..af82c92b847d0bf57cd67f2019c68e75e731f81e 100644 (file)
Binary files a/gfx/menu/luminos/checkbox_c1.tga and b/gfx/menu/luminos/checkbox_c1.tga differ
index f94884483987e7133d11eb4bfd06477248720fd0..d7a8be78f882ac7d6421ef4a2efc32bd0bbbc1fc 100644 (file)
Binary files a/gfx/menu/luminos/checkbox_d0.tga and b/gfx/menu/luminos/checkbox_d0.tga differ
index a1dad7eae341a7bbe883cb566868ba44e39afa4f..b0f7cccaa376113f43ceff2992912fd7b9f86529 100644 (file)
Binary files a/gfx/menu/luminos/checkbox_d1.tga and b/gfx/menu/luminos/checkbox_d1.tga differ
index c04496827e11423beeb305a2cbf804eeb3d6a25f..257f544e43bcfa71bfb3888bd61f0fc7e7a01936 100644 (file)
Binary files a/gfx/menu/luminos/checkbox_f0.tga and b/gfx/menu/luminos/checkbox_f0.tga differ
index 71aad7afb298eb3ff42639e4b5b353dfb16cc21d..5286cfa4e0a71e3c3cfe8989f1560e416ad80ee4 100644 (file)
Binary files a/gfx/menu/luminos/checkbox_f1.tga and b/gfx/menu/luminos/checkbox_f1.tga differ
index b0efdda8380af4a3917399988459bba8d24e6c5b..b26d7ba91246948254f8dab4a1404fa0823d3f34 100644 (file)
Binary files a/gfx/menu/luminos/checkbox_n0.tga and b/gfx/menu/luminos/checkbox_n0.tga differ
index 37dbf737ff70c0f669a88bee9f07b22e7faf4fc6..af82c92b847d0bf57cd67f2019c68e75e731f81e 100644 (file)
Binary files a/gfx/menu/luminos/checkbox_n1.tga and b/gfx/menu/luminos/checkbox_n1.tga differ
index fe43eb9c7ebd5993312a3d2b2f5ba97dfe244160..a198d7a4856152825c028c2d5aa1c02ea1a0b5fb 100644 (file)
Binary files a/gfx/menu/luminos/slider_c.tga and b/gfx/menu/luminos/slider_c.tga differ
index aaa80f05134774ab9e10849294671cd00999c0e5..da81872a1ce544f80fdfa2cd0b4881be3bfaced9 100644 (file)
Binary files a/gfx/menu/luminos/slider_d.tga and b/gfx/menu/luminos/slider_d.tga differ
index 3dea5852d6457b7a9ab4cc142e3c8a60b7f02a21..38b7140adf977fd5393dec452cf0ff4e2e7e35af 100644 (file)
Binary files a/gfx/menu/luminos/slider_f.tga and b/gfx/menu/luminos/slider_f.tga differ
index e270201fc18e56b74d5dc58613b85c9c19c03592..2584eecb5329723db6b5330ad0e38cd7359bf490 100644 (file)
Binary files a/gfx/menu/luminos/slider_n.tga and b/gfx/menu/luminos/slider_n.tga differ
index 42d8379c5514dd9c7ee9fa579571936f3200267a..a24a98c93330dc85b675e4c59a581e3038008083 100644 (file)
@@ -9,23 +9,24 @@
 // after exec'ing them all from your autoexec.cfg
 
 // Set the cvars for each gun
-seta cl_swapattacks_tuba 0
 seta cl_swapattacks_laser 0
 seta cl_swapattacks_shotgun 0
 seta cl_swapattacks_uzi 0
-seta cl_swapattacks_sniperrifle 0
 seta cl_swapattacks_grenadelauncher 0
+seta cl_swapattacks_minelayer 0
 seta cl_swapattacks_electro 0
-seta cl_swapattacks_hlac 0
 seta cl_swapattacks_crylink 0
-seta cl_swapattacks_minstanex 0
 seta cl_swapattacks_nex 0
 seta cl_swapattacks_hagar 0
-seta cl_swapattacks_seeker 0
-seta cl_swapattacks_fireball 0
 seta cl_swapattacks_rocketlauncher 0
-seta cl_swapattacks_hook 0
 seta cl_swapattacks_porto 0
+seta cl_swapattacks_minstanex 0
+seta cl_swapattacks_hook 0
+seta cl_swapattacks_hlac 0
+seta cl_swapattacks_tuba 0
+seta cl_swapattacks_sniperrifle 0
+seta cl_swapattacks_fireball 0
+seta cl_swapattacks_seeker 0
 
 // This part of the code is necessary to keep us firing when we switch weapons while holding a fire button pressed
 // Also updates the keys before firing, so we don't have to switch to another weapon and back to apply the changes
index b83af0752b254b09140a61142f3432e00795cef6..a129ed766f79e13a9898cf35b743c4fca4a0c6cd 100644 (file)
 // Then, grab a Tuba, then play notes on your MIDI keyboard!
 //
 // If you have no keyboard input, you can map the tuba notes to your keyboard:
+// for German keyboard layout
 //   in_bindmap 3 0
-// for US keyboard layout, and
+// for US keyboard layout
 //   in_bindmap 4 0
-// for German keyboard layout
 
 alias +tuba_l "+moveleft; +tuba_$*"
 alias -tuba_l "-moveleft; -tuba_$*"
index eab0ff082ad0bdd564e26089d59c71621727f9e5..93773ddd0fe97fa859b53b3d5b9ebc74e079b5cd 100644 (file)
@@ -1333,7 +1333,7 @@ msgstr "Beenden"
 
 #: qcsrc/menu/xonotic/dialog_quit.c:17
 msgid "Are you sure you want to quit?"
-msgstr "Wollen Sie wirklich das Spiel beenden?"
+msgstr "Wollen Sie das Spiel wirklich beenden?"
 
 #: qcsrc/menu/xonotic/dialog_quit.c:20
 msgid "Yes"
index 3e39c97d731ed9557b620301515b82ecd86aea2a..04f96094ffcf008aa3f164e0282de827f5253632 100644 (file)
@@ -8,15 +8,42 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 0.1preview\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-07 07:50+0100\n"
+"POT-Creation-Date: 2011-01-18 17:06+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Henry 'Exitium' Sanmark <henry.sanmark@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: qcsrc/menu/menu.qc:29
+#, c-format
+msgid "^4MQC Build information: %s\n"
+msgstr "^4MQC Version tiedot: %s\n"
+
+#: qcsrc/menu/item/slider.c:64
+#, c-format
+msgid "%d (%s)"
+msgstr "%d (%s)"
+
+#: qcsrc/menu/item/label.c:63
+#, c-format
+msgid "NOTE: label text %s too wide for label, condensed by factor %f\n"
+msgstr "HUOM: tekstikentän teksti %s on liian pitkä, joten se lyhennetään %f\n"
+
+#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31
+msgid "custom"
+msgstr "omavalintainen"
+
+#: qcsrc/menu/item/gecko.c:49
+msgid "Browser not initialized!"
+msgstr "Selainta ei ole alustettu!"
+
+#: qcsrc/menu/item/listbox.c:300
+#, c-format
+msgid "Item %d"
+msgstr "Esine %d"
+
 #: qcsrc/menu/gamecommand.qc:47
 #, c-format
 msgid "error: status is %d\n"
@@ -40,440 +67,161 @@ msgstr "virhe luodessa curl handlea\n"
 
 #: qcsrc/menu/gamecommand.qc:239
 msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n"
-msgstr ""
-"Komentoa ei löydy. Saadaksesi listan kaikista tuetuista komennoista, kokeile "
-"menu_cmd help.\n"
+msgstr "Komentoa ei löydy. Saadaksesi listan kaikista tuetuista komennoista, kokeile menu_cmd help.\n"
 
-#: qcsrc/menu/item/gecko.c:49
-msgid "Browser not initialized!"
-msgstr "Selainta ei ole alustettu!"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:4
+#: qcsrc/menu/xonotic/dialog_settings.c:19
+msgid "Video"
+msgstr "Video"
 
-#: qcsrc/menu/item/label.c:63
-#, c-format
-msgid "NOTE: label text %s too wide for label, condensed by factor %f\n"
-msgstr "HUOM: tekstikentän teksti %s on liian pitkä, joten se lyhennetään %f\n"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:26
+msgid "Resolution:"
+msgstr "Näytön tarkkuus:"
 
-#: qcsrc/menu/item/listbox.c:300
-#, c-format
-msgid "Item %d"
-msgstr "Esine %d"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:29
+msgid "Font/UI size:"
+msgstr "Kirjainten/käyttöliittymän koko:"
 
-#: qcsrc/menu/item/slider.c:64
-#, c-format
-msgid "%d (%s)"
-msgstr "%d (%s)"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:31
+msgid "SZ^Unreadable"
+msgstr "SZ^Miltein näkymätön"
 
-#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31
-msgid "custom"
-msgstr "omavalintainen"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:32
+msgid "SZ^Tiny"
+msgstr "SZ^Pikkuruinen"
 
-#: qcsrc/menu/menu.qc:29
-#, c-format
-msgid "^4MQC Build information: %s\n"
-msgstr "^4MQC Version tiedot: %s\n"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:33
+msgid "SZ^Little"
+msgstr "SZ^Hyvin pieni"
 
-#: qcsrc/menu/xonotic/campaign.c:284
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:66
-msgid "???"
-msgstr "???"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:34
+msgid "SZ^Small"
+msgstr "SZ^Pieni"
 
-#: qcsrc/menu/xonotic/campaign.c:285
-#, c-format
-msgid "Level %d: %s"
-msgstr "Taso %d: %s"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:35
+msgid "SZ^Medium"
+msgstr "SZ^Keskikokoinen"
 
-#: qcsrc/menu/xonotic/cvarlist.c:85
-msgid "will be saved to config.cfg"
-msgstr "tallennetaan config.cfg-tiedostoon"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:36
+msgid "SZ^Large"
+msgstr "SZ^Suuri"
 
-#: qcsrc/menu/xonotic/cvarlist.c:87
-msgid "will not be saved"
-msgstr "ei tallenneta"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:37
+msgid "SZ^Huge"
+msgstr "SZ^Valtava"
 
-#: qcsrc/menu/xonotic/cvarlist.c:89
-msgid "private"
-msgstr "yksityinen"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:38
+msgid "SZ^Gigantic"
+msgstr "SZ^Jättiläismäinen"
 
-#: qcsrc/menu/xonotic/cvarlist.c:91
-msgid "engine setting"
-msgstr "pelimoottorin asetus"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:39
+msgid "SZ^Colossal"
+msgstr "SZ^Massiivinen"
 
-#: qcsrc/menu/xonotic/cvarlist.c:93
-msgid "read only"
-msgstr "vain luku"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:42
+msgid "Color depth:"
+msgstr "Värisävy:"
 
-#: qcsrc/menu/xonotic/dialog_credits.c:5
-msgid "Credits"
-msgstr "Tekijät"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:45
+msgid "Full screen"
+msgstr "Kokoruutu"
 
-#: 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:55
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:61
-#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21
-msgid "OK"
-msgstr "OK"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:46
+msgid "Vertical Synchronization"
+msgstr "VSYNC"
 
-#: qcsrc/menu/xonotic/dialog_firstrun.c:4
-msgid "Welcome"
-msgstr "Tervetuloa"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:49
+msgid "Use OpenGL 2.0 shaders (GLSL)"
+msgstr "Käytä OpenGL 2.0 shaders-varjostuksia (GLSL)"
 
-#: 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."
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_video.c:52
+msgid "Use Occlusion Queries"
+msgstr "Käytä Occlusion Queryä"
 
-#: qcsrc/menu/xonotic/dialog_firstrun.c:38
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:35
-msgid "Text language:"
-msgstr "Tekstin kieli:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:55
+msgid "Vertex Buffer Objects (VBOs)"
+msgstr "Vertex Buffer Object (VBO)"
 
-#: qcsrc/menu/xonotic/dialog_firstrun.c:47
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:40
-#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:39
-msgid "Name:"
-msgstr "Nimi:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:58
+msgid "VBO^Off"
+msgstr "VBO^Pois"
 
-#: qcsrc/menu/xonotic/dialog_firstrun.c:69
-msgid "Save settings"
-msgstr "Tallenna asetukset"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:59
+msgid "Vertices, some Tris (compatible)"
+msgstr "Verteksit, vähän kolmioita (yhteensopivin)"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4
-msgid "Ammo Panel"
-msgstr "Ammuspaneeli"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:62
+msgid "Vertices"
+msgstr "Verteksit"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22
-msgid "Ammunition display:"
-msgstr "Ammuksien näyttö:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:63
+msgid "Vertices and Triangles"
+msgstr "Verteksit ja kolmiot"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25
-msgid "Show only current ammo type"
-msgstr "Näytä vain nykyinen ammustyyppi"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:65
+msgid "Depth first:"
+msgstr "Syvyys ensin (Depth First):"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:29
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:28
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:40
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:28
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:40
-msgid "Left"
-msgstr "Vasen"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:67
+msgid "DF^Disabled"
+msgstr "DF^Pois"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:30
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:30
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:41
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:30
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:41
-msgid "Right"
-msgstr "Oikea"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:68
+msgid "DF^World"
+msgstr "DF^Maailma"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4
-msgid "Chat Panel"
-msgstr "Keskustelupaneeli"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:69
+msgid "DF^All"
+msgstr "DF^Kaikki"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22
-msgid "Chat entries:"
-msgstr "Keskustelun sisältö:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:73
+msgid "Disable multithreaded OpenGL"
+msgstr "Ota monisäkeinen OpenGL pois päältä"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25
-msgid "Chat size:"
-msgstr "Keskustelun koko"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:75
+msgid "Wait for GPU to finish each frame"
+msgstr "Anna näytönohjaimen viimeistellä jokainen ruutu"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29
-msgid "Chat lifetime:"
-msgstr "Keskustelun kesto:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:78
+msgid "Brightness:"
+msgstr "Kirkkaus:"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33
-msgid "Chat beep sound"
-msgstr "Keskustelun piippausääni"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:81
+msgid "Contrast:"
+msgstr "Kontrasti:"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4
-msgid "Engine Info Panel"
-msgstr "Pelimoottorin tietopaneeli"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:84
+msgid "Gamma:"
+msgstr "Gamma:"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22
-msgid "Engine info:"
-msgstr "Pelimoottorin tiedot:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:87
+msgid "Contrast boost:"
+msgstr "Kontrastin lisäys:"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25
-msgid "Use an averaging algorithm for fps"
-msgstr "Käytä tasoittavaa algoritmia ruudunpäivitykselle (fps)"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:90
+msgid "Saturation:"
+msgstr "Kylläisyys:"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4
-msgid "Health/Armor Panel"
-msgstr "Elämä/panssaripaneeli"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:95
+msgid "Use GLSL to handle color control"
+msgstr "Käytä GLSL:ää värien hallinnassa"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22
-msgid "Enable status bar"
-msgstr "Ota tilapalkki käyttöön"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:99
+msgid "LIT^Ambient:"
+msgstr "LIT^Ympäristö:"
 
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24
-msgid "Status bar alignment:"
-msgstr "Tilapalkin kohdistus:"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:102
+msgid "Intensity:"
+msgstr "Intensiivisyys:"
 
-#: 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 "Sisäänpäin"
-
-#: 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 "Ulospäin"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37
-msgid "Icon alignment:"
-msgstr "Kuvakkeen kohdistus:"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45
-msgid "Flip health and armor positions"
-msgstr "Vaihda elämän ja panssarin paikkaa"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4
-msgid "Info Messages Panel"
-msgstr "Tiedotuspaneeli"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22
-msgid "Info messages:"
-msgstr "Tiedoitukset"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25
-msgid "Flip align"
-msgstr "Tasoita"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4
-msgid "Mod Icons Panel"
-msgstr "Modi-ikonit paneeli"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4
-msgid "Notification Panel"
-msgstr "Ilmoituspaneeli"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22
-msgid "Notifications:"
-msgstr "Ilmoitukset:"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25
-msgid "Also print notifications to the console"
-msgstr "Laita ilmoitukset myös komentoriville"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28
-msgid "Flip notify order"
-msgstr "Käännä ilmoitusjärjestys"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31
-msgid "Entry lifetime:"
-msgstr "Sisääntulon kesto"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35
-msgid "Entry fadetime:"
-msgstr "Sisääntulon häivennyksen kesto"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4
-msgid "Powerups Panel"
-msgstr "Tehonlisäyspaneeli"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45
-msgid "Flip strength and shield positions"
-msgstr "Käännä voimakkuuden ja suojauksen sijainnit"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4
-msgid "Pressed Keys Panel"
-msgstr "Painettujen näppäinten paneeli"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21
-msgid "Panel disabled"
-msgstr "Paneeli pois päältä"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22
-msgid "Panel enabled when spectating"
-msgstr "Paneeli päällä kun katsojana"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23
-msgid "Panel always enabled"
-msgstr "Paneeli aina päällä"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30
-msgid "Forced aspect:"
-msgstr "Pakotettu näkymä:"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4
-msgid "Race Timer Panel"
-msgstr "Kilpajuoksun ajanoton paneeli"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4
-msgid "Radar Panel"
-msgstr "Tutkapaneeli"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22
-msgid "Panel enabled in teamgames"
-msgstr "Paneeli käytössä joukkuepeleissä"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29
-msgid "Radar:"
-msgstr "Tutka:"
-
-#: 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:151
-#: qcsrc/menu/xonotic/util.qc:608
-msgid "Alpha:"
-msgstr "Alpha:"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36
-msgid "Rotation:"
-msgstr "Pyöriminen:"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38
-msgid "Forward"
-msgstr "Eteenpäin"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39
-msgid "West"
-msgstr "Länsi"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40
-msgid "South"
-msgstr "Etelä"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41
-msgid "East"
-msgstr "Itä"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42
-msgid "North"
-msgstr "Pohjoinen"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46
-msgid "Scale:"
-msgstr "Skaala:"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50
-msgid "Zoom mode:"
-msgstr "Tarkennus:"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52
-msgid "Zoomed in"
-msgstr "Tarkennettu kohteeseen"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53
-msgid "Zoomed out"
-msgstr "Tarkennuksen poisto"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54
-msgid "Always zoomed"
-msgstr "Aina tarkennettuna"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55
-msgid "Never zoomed"
-msgstr "Tarkennus ei ikinä päällä"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4
-msgid "Score Panel"
-msgstr "Tulospaneeli"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4
-msgid "Timer Panel"
-msgstr "Ajastinpaneeli"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22
-msgid "Timer:"
-msgstr "Ajastin:"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25
-msgid "Show elapsed time"
-msgstr "Näytä kulutettu aika"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4
-msgid "Vote Panel"
-msgstr "Äänestyspaneeli"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22
-msgid "Alpha after voting:"
-msgstr "Alpha äänestyksen jälkeen"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4
-msgid "Weapons Panel"
-msgstr "Asepaneeli"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24
-msgid "Fade out after:"
-msgstr "Himmennä jälkikäteen"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36
-msgid "Never"
-msgstr "Ei ikinä"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:28
-#, c-format
-msgid "%ds"
-msgstr "%dt"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:32
-msgid "Fade effect:"
-msgstr "Himmennyseffekti:"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33
-msgid "EF^None"
-msgstr "EF^Ei mikään"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35
-msgid "Slide"
-msgstr "Liukuminen"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37
-msgid "Alpha"
-msgstr "Alpha"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40
-msgid "Weapon icons:"
-msgstr "Aseiden kuvakkeet:"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43
-msgid "Show weapon ID as:"
-msgstr "Näytä aseen tunniste:"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44
-msgid "SHOWAS^None"
-msgstr "SHOWAS^Ei mitään."
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45
-msgid "Number"
-msgstr "Numero"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46
-msgid "Bind"
-msgstr "Näppäin"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49
-msgid "Show Accuracy"
-msgstr "Näytä tarkkuus"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50
-msgid "Show Ammo"
-msgstr "Näytä panokset"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53
-msgid "Ammo bar color:"
-msgstr "Ammuskotelon väri"
-
-#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59
-msgid "Ammo bar alpha:"
-msgstr "Ammuskotelon alpha"
+#: qcsrc/menu/xonotic/dialog_settings_video.c:106
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:30
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:41
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:194
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:193
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:178
+msgid "Apply immediately"
+msgstr "Ota heti käyttöön"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4
 msgid "Panel HUD Setup"
@@ -486,30 +234,38 @@ msgstr "Paneelin taustan perusasetukset:"
 #: 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:586
-#: qcsrc/menu/xonotic/util.qc:602 qcsrc/menu/xonotic/util.qc:619
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:91 qcsrc/menu/xonotic/util.qc:602
+#: qcsrc/menu/xonotic/util.qc:618 qcsrc/menu/xonotic/util.qc:635
 msgid "Disable"
 msgstr "Pois päältä"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:591
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:607
 msgid "Color:"
 msgstr "Väri:"
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:599
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:615
 msgid "Border size:"
 msgstr "Reunan koko:"
 
+#: 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:151
+#: qcsrc/menu/xonotic/util.qc:624
+msgid "Alpha:"
+msgstr "Alpha:"
+
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89
 msgid "Team color:"
 msgstr "Joukkueen väri:"
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:625
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:641
 msgid "Test team color in configure mode"
-msgstr "Kokeile joukkueen väirä muokaustilassa"
+msgstr "Kokeile joukkueen väriä muokkaustilassa"
 
-#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:628
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:644
 msgid "Padding:"
 msgstr "Pehmustus:"
 
@@ -557,433 +313,378 @@ msgstr "Y:"
 msgid "Exit setup"
 msgstr "Poistu asetuksista"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer.c:4
-msgid "Multiplayer"
-msgstr "Moninpeli"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer.c:18
-msgid "Servers"
-msgstr "Palvelimet"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer.c:19
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5
-msgid "Create"
-msgstr "Luo"
+#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4
+msgid "Vote Panel"
+msgstr "Äänestyspaneeli"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer.c:20
-msgid "Demos"
-msgstr "Demot"
+#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22
+msgid "Alpha after voting:"
+msgstr "Alpha äänestyksen jälkeen"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer.c:21
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5
-msgid "Player Setup"
-msgstr "Pelaajan asetukset"
+#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4
+msgid "Mod Icons Panel"
+msgstr "Modi-ikonit paneeli"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35
-msgid "Game type:"
-msgstr "Pelityyppi"
+#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4
+msgid "Info Messages Panel"
+msgstr "Tiedotuspaneeli"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47
-msgid "Match settings:"
-msgstr "Ottelun asetukset"
+#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22
+msgid "Info messages:"
+msgstr "Tiedoitukset"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50
-msgid "Time limit:"
-msgstr "Aikaraja"
+#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25
+msgid "Flip align"
+msgstr "Tasoita"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62
-msgid "Use map specified default"
-msgstr "Käytä kartan omaa oletusarvoa"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5
+msgid "Waypoints"
+msgstr "Välimatkat"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:57
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:156
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:157
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:158
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:162
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:164
-msgid "Point limit:"
-msgstr "Pisteraja"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23
+msgid "Waypoint settings:"
+msgstr "Välimatkojen asetukset:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65
-msgid "Player slots:"
-msgstr "Pelaajamäärä"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26
+msgid "Show base waypoints"
+msgstr "Näytä päämäärien välimatkat"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68
-msgid "Number of bots:"
-msgstr "Bottien lukumäärä"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29
+msgid "Waypoint scale:"
+msgstr "Välimatkan skaala:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72
-msgid "Bot skill:"
-msgstr "Bottien taitotaso"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34
+msgid "Waypoint alpha:"
+msgstr "Välimatkojen alpha:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75
-msgid "Botlike"
-msgstr "Typerä kone"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39
+msgid "Show names:"
+msgstr "Näytä nimet:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76
-msgid "Beginner"
-msgstr "Aloittelija"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26
+msgid "Never"
+msgstr "Ei ikinä"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77
-msgid "You will win"
-msgstr "Helppoa kauraa"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42
+msgid "Teammates"
+msgstr "Oma joukkue"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78
-msgid "You can win"
-msgstr "Helppo voitto"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43
+msgid "All players"
+msgstr "Kaikki pelaajat"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79
-msgid "You might win"
-msgstr "Voittoon on mahdollisuus"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:46
+#: qcsrc/menu/xonotic/dialog_credits.c:21
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:59
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:269
+#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:82
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:55
+msgid "OK"
+msgstr "OK"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80
-msgid "Advanced"
-msgstr "Kehittynyt"
+#: qcsrc/menu/xonotic/dialog_credits.c:5
+msgid "Credits"
+msgstr "Tekijät"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81
-msgid "Expert"
-msgstr "Ekspertti"
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5
+msgid "Advanced settings"
+msgstr "Edistyneet asetukset"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82
-msgid "Pro"
-msgstr "Mestari"
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23
+msgid "Cvar filter:"
+msgstr "Cvar suodatin"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83
-msgid "Assassin"
-msgstr "Murhaaja"
+#: 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"
+msgstr "Tyhjennä"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84
-msgid "Unhuman"
-msgstr "Epäinhimillinen"
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34
+msgid "Setting:"
+msgstr "Asetus:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85
-msgid "Godlike"
-msgstr "Jumalainen"
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:248
+msgid "Type:"
+msgstr "Tyyppi:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89
-msgid "Mutators..."
-msgstr "Muokkaukset..."
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42
+msgid "Value:"
+msgstr "Arvo:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:84
-msgid "Advanced settings..."
-msgstr "Edistyneet asetukset..."
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54
+msgid "Description:"
+msgstr "Kuvaus:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105
-msgid "Map list:"
-msgstr "Karttalista"
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4
+msgid "Pressed Keys Panel"
+msgstr "Painettujen näppäinten paneeli"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111
-msgid "Select all"
-msgstr "Valitse kaikki"
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21
+msgid "Panel disabled"
+msgstr "Paneeli pois päältä"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114
-msgid "Select none"
-msgstr "Poista kaikki valinnat"
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22
+msgid "Panel enabled when spectating"
+msgstr "Paneeli päällä kun katsojana"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120
-msgid "Start Multiplayer!"
-msgstr "Aloita moninpeli!"
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23
+msgid "Panel always enabled"
+msgstr "Paneeli aina päällä"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155
-msgid "Capture limit:"
-msgstr "Lipunryöstöraja"
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30
+msgid "Forced aspect:"
+msgstr "Pakotettu näkymä:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159
-msgid "Lives:"
-msgstr "Elämät:"
+#: qcsrc/menu/xonotic/dialog_teamselect.c:5
+msgid "Team Selection"
+msgstr "Joukkueen valinta"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160
-msgid "Laps:"
-msgstr "Kierrokset:"
+#: qcsrc/menu/xonotic/dialog_teamselect.c:41
+msgid "join 'best' team (auto-select)"
+msgstr "liity 'parhaimpaan' joukkueeseen"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161
-msgid "Goals:"
-msgstr "Maalit:"
+#: qcsrc/menu/xonotic/dialog_teamselect.c:45
+msgid "red"
+msgstr "punainen"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165
-msgid "Frag limit:"
-msgstr "Tapporaja:"
+#: qcsrc/menu/xonotic/dialog_teamselect.c:46
+msgid "blue"
+msgstr "sininen"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6
-msgid "Advanced server settings"
-msgstr "Kehittyneet palvelinasetukset"
+#: qcsrc/menu/xonotic/dialog_teamselect.c:47
+msgid "yellow"
+msgstr "keltainen"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25
-msgid "Game settings:"
-msgstr "Peliasetukset:"
+#: qcsrc/menu/xonotic/dialog_teamselect.c:48
+msgid "pink"
+msgstr "pinkki"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28
-msgid "Allow spectating"
-msgstr "Salli sivustakatsominen"
+#: qcsrc/menu/xonotic/dialog_teamselect.c:51
+msgid "spectate"
+msgstr "seuraa sivusta"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31
-msgid "Spawn shield:"
-msgstr "Uudelleensyntymissuoja:"
+#: qcsrc/menu/xonotic/slider_resolution.c:65
+#, c-format
+msgid "%dx%d"
+msgstr "%dx%d"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36
-msgid "Game speed:"
-msgstr "Pelinopeus:"
+#: qcsrc/menu/xonotic/dialog_settings.c:4
+msgid "Settings"
+msgstr "Asetukset"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40
-msgid "Teamplay settings:"
-msgstr "Joukkuepeliasetukset:"
+#: qcsrc/menu/xonotic/dialog_settings.c:18
+#: qcsrc/menu/xonotic/dialog_settings_input.c:4
+msgid "Input"
+msgstr "Ohjaus"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43
-msgid "Friendly fire scale:"
-msgstr "Joukkuevahingon skaala:"
+#: qcsrc/menu/xonotic/dialog_settings.c:20
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:4
+msgid "Effects"
+msgstr "Effektit"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47
-msgid "Virtual friendly fire (effect only)"
-msgstr "Virtuaalinen joukkuevahinko (vain effekti)"
+#: qcsrc/menu/xonotic/dialog_settings.c:21
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:4
+msgid "Audio"
+msgstr "Ääni"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50
-msgid "Friendly fire penalty:"
-msgstr "Joukkuevahinkorangaistus:"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54
-msgid "Virtual penalty (effect only)"
-msgstr "Virtuaalinen rangaistus (vain effekti)"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57
-msgid "Teams:"
-msgstr "Joukkueet:"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66
-msgid "Map voting:"
-msgstr "Kartan äänestys:"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68
-msgid "No voting"
-msgstr "Ei äänestystä"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69
-msgid "2 choices"
-msgstr "2 valintaa"
+#: qcsrc/menu/xonotic/dialog_settings.c:22
+#: qcsrc/menu/xonotic/dialog_settings_network.c:4
+msgid "Network"
+msgstr "Verkko"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70
-msgid "3 choices"
-msgstr "3 valintaa"
+#: qcsrc/menu/xonotic/dialog_settings.c:23
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:4
+msgid "Misc"
+msgstr "Sekalainen"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71
-msgid "4 choices"
-msgstr "4 valintaa"
+#: qcsrc/menu/xonotic/dialog_firstrun.c:4
+msgid "Welcome"
+msgstr "Tervetuloa"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72
-msgid "5 choices"
-msgstr "5 valintaa"
+#: qcsrc/menu/xonotic/dialog_firstrun.c:32
+msgid "Please answer a few initial questions to enhance the game experience."
+msgstr "Ole hyvä ja vastaa muutamaan alustavaan kysymykseen parantaaksesi pelikokemustasi."
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73
-msgid "6 choices"
-msgstr "6 valintaa"
+#: qcsrc/menu/xonotic/dialog_firstrun.c:36
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:35
+msgid "Text language:"
+msgstr "Tekstin kieli:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74
-msgid "7 choices"
-msgstr "7 valintaa"
+#: qcsrc/menu/xonotic/dialog_firstrun.c:45
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:39
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:40
+msgid "Name:"
+msgstr "Nimi:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75
-msgid "8 choices"
-msgstr "8 valintaa"
+#: qcsrc/menu/xonotic/dialog_firstrun.c:67
+msgid "Save settings"
+msgstr "Tallenna asetukset"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76
-msgid "9 choices"
-msgstr "9 valintaa"
+#: qcsrc/menu/xonotic/campaign.c:284
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:66
+msgid "???"
+msgstr "???"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79
-msgid "Simple majority wins vcall"
-msgstr "Suurempi äänimäärä voittaa vcall"
+#: qcsrc/menu/xonotic/campaign.c:285
+#, c-format
+msgid "Level %d: %s"
+msgstr "Taso %d: %s"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5
-msgid "Map Information"
-msgstr "Kartan tiedot"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:26
+msgid "Key bindings:"
+msgstr "Näppäimet:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49
-msgid "Full item placement"
-msgstr "Esineiden täysi sijoittaminen"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:31
+msgid "Change key..."
+msgstr "Vaihda näppäin..."
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49
-msgid "MinstaGib only"
-msgstr "Vain MinstaGib"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:35
+msgid "Edit..."
+msgstr "Muokkaa..."
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78
-msgid "Title:"
-msgstr "Otsikko:"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:46
+msgid "Sensitivity:"
+msgstr "Herkkyys:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84
-msgid "Author:"
-msgstr "Tekijä:"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:49
+msgid "UI mouse speed:"
+msgstr "Käyttöliittymän hiiren nopeus:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90
-msgid "Features:"
-msgstr "Ominaisuudet:"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:52
+msgid "Mouse filter"
+msgstr "Hiiren suodatin"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95
-msgid "Game types:"
-msgstr "Pelityypit:"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:54
+msgid "Invert mouse"
+msgstr "Käännä hiiren suunta"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314
-msgid "Close"
-msgstr "Sulje"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:57
+#: qcsrc/menu/xonotic/dialog_settings_input.c:59
+msgid "Use joystick input"
+msgstr "Käytä peliohjainta"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46
-msgid "Play"
-msgstr "Pelaa"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:62
+#: qcsrc/menu/xonotic/dialog_settings_input.c:64
+msgid "Turn off OS mouse acceleration"
+msgstr "Laita käyttöjärjestelmän hiiren kiihtyvyys pois päältä"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7
-msgid "Mutators"
-msgstr "Muokatut pelitilat"
+#: qcsrc/menu/xonotic/dialog_settings_input.c:66
+msgid "\"enter console\" also closes"
+msgstr "\"avaa komentorivi\" myös sulkee komentorivin"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33
-msgid "All Weapons Arena"
-msgstr "Kaikkien aseiden taistelukenttä"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4
+msgid "Weapons Panel"
+msgstr "Asepaneeli"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35
-msgid "Most Weapons Arena"
-msgstr "Suurimman osan aseiden taistelukenttä"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24
+msgid "Fade out after:"
+msgstr "Himmennä jälkikäteen:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:28
 #, c-format
-msgid "%s Arena"
-msgstr "%s taistelukenttä"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167
-msgid "Dodging"
-msgstr "Väistely"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:250
-msgid "MinstaGib"
-msgstr "MinstaGib"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:253
-msgid "NIX"
-msgstr "NIX"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:74
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:205
-msgid "Rocket Flying"
-msgstr "Rakettilentely"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264
-msgid "No start weapons"
-msgstr "Ei aloitusasetta"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189
-msgid "Low gravity"
-msgstr "Vajaa painovoima"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170
-msgid "Cloaked"
-msgstr "Näkymätön"
+msgid "%ds"
+msgstr "%dt"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84
-msgid "Hook"
-msgstr "Köysi"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:32
+msgid "Fade effect:"
+msgstr "Himmennyseffekti:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173
-msgid "Midair"
-msgstr "Jalat irti maasta"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33
+msgid "EF^None"
+msgstr "EF^Ei mikään"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176
-msgid "Vampire"
-msgstr "Vampyyri"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35
+msgid "Slide"
+msgstr "Liukuminen"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:90
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208
-msgid "Piñata"
-msgstr "Piñata"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37
+msgid "Alpha"
+msgstr "Alpha"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:92
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:211
-msgid "Weapons stay"
-msgstr "Aseet jäävät"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40
+msgid "Weapon icons:"
+msgstr "Aseiden kuvakkeet:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180
-msgid "Blood loss"
-msgstr "Verenvuodatus"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43
+msgid "Show weapon ID as:"
+msgstr "Näytä aseen tunniste:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202
-msgid "Jet pack"
-msgstr "Rakettireppu"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44
+msgid "SHOWAS^None"
+msgstr "SHOWAS^Ei mitään."
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98
-msgid "MUT^None"
-msgstr "MUT^Ei mitään"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45
+msgid "Number"
+msgstr "Numero"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164
-msgid "Gameplay mutators:"
-msgstr "Pelityylin muokkaukset:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46
+msgid "Bind"
+msgstr "Näppäin"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196
-msgid "Weapon & item mutators:"
-msgstr "Aseiden ja esineiden muokkaukset:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49
+msgid "Show Accuracy"
+msgstr "Näytä tarkkuus"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199
-msgid "Grappling hook"
-msgstr "Köysi"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50
+msgid "Show Ammo"
+msgstr "Näytä panokset"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215
-msgid "Weapon arenas:"
-msgstr "Tietyn aseen taistelukenttä"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53
+msgid "Ammo bar color:"
+msgstr "Ammuskotelon väri"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218
-msgid "Regular (no arena)"
-msgstr "Perinteinen"
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59
+msgid "Ammo bar alpha:"
+msgstr "Ammuskotelon alpha"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256
-msgid "with laser"
-msgstr "laserilla"
+#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38
+msgid "Do not press this button again!"
+msgstr "Älä paina enää näppäintä!"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247
-msgid "Special arenas:"
-msgstr "Erikoistaistelukentät"
+#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4
+msgid "Engine Info Panel"
+msgstr "Pelimoottorin tietopaneeli"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260
-msgid "Most weapons"
-msgstr "Suurin osa aseista"
+#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22
+msgid "Engine info:"
+msgstr "Pelimoottorin tiedot:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4
-msgid "Demo"
-msgstr "Demo"
+#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25
+msgid "Use an averaging algorithm for fps"
+msgstr "Käytä tasoittavaa algoritmia ruudunpäivitykselle (FPS)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28
-msgid "Record demos while playing"
-msgstr "Tallenna demoja pelin aikana"
+#: qcsrc/menu/xonotic/dialog_quit.c:4
+msgid "Quit"
+msgstr "Lopeta"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32
-#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28
-msgid "Filter:"
-msgstr "Suodatin:"
+#: qcsrc/menu/xonotic/dialog_quit.c:17
+msgid "Are you sure you want to quit?"
+msgstr "Haluatko aivan varmasti lopettaa pelin?"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:33
-#: 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
-msgid "Clear"
-msgstr "Tyhjennä"
+#: qcsrc/menu/xonotic/dialog_quit.c:20
+msgid "Yes"
+msgstr "Kyllä"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43
-msgid "Timedemo"
-msgstr "Aikademo"
+#: qcsrc/menu/xonotic/dialog_quit.c:21
+msgid "No"
+msgstr "Ei"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4
 msgid "Join"
 msgstr "Liity"
 
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32
+msgid "Filter:"
+msgstr "Suodatin:"
+
 #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36
 msgid "SRVS^Empty"
 msgstr "SRVS^Tyhjä"
@@ -1005,1771 +706,1689 @@ msgid "Info..."
 msgstr "Tietoa..."
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311
 msgid "Join!"
 msgstr "Liity!"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5
-msgid "Server Information"
-msgstr "Palvelimen tiedot"
-
-#: 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
-msgid "N/A"
-msgstr "N/A"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:158
-#, c-format
-msgid "%d/%d, %d free player slots"
-msgstr ""
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172
-#, c-format
-msgid "%d modified settings"
-msgstr "%d muokatut asetukset"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172
-msgid "Official settings"
-msgstr "Viralliset asetukset"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197
-msgid "N/A (can't connect)"
-msgstr "N/A (ei voida yhdistää)"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205
-msgid "not supported (can't connect)"
-msgstr "ei tuettu (ei voida yhdistää)"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207
-msgid "not supported (won't encrypt)"
-msgstr "ei tuettu (salauksen purku ei onnistu)"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211
-msgid "supported (will encrypt)"
-msgstr "tuettu (salauksen purku onnistuu)"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213
-msgid "supported (won't encrypt)"
-msgstr "tuettu (salauksen purku ei onnistu)"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217
-msgid "requested (will encrypt)"
-msgstr "pyydetty (salauksen purku onnistuu)"
-
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219
-msgid "requested (won't encrypt)"
-msgstr "pyydetty (salauksen purku ei onnistu)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4
+msgid "Notification Panel"
+msgstr "Ilmoituspaneeli"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223
-msgid "required (can't connect)"
-msgstr "vaadittu (ei voida yhdistää)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22
+msgid "Notifications:"
+msgstr "Ilmoitukset:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225
-msgid "required (will encrypt)"
-msgstr "vaadittu (salauksen purku onnistuu)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25
+msgid "Also print notifications to the console"
+msgstr "Laita ilmoitukset myös komentoriville"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:246
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:269
-msgid "Players:"
-msgstr "Pelaajat:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28
+msgid "Flip notify order"
+msgstr "Käännä ilmoitusjärjestys"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:254
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38
-msgid "Type:"
-msgstr "Tyyppi:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31
+msgid "Entry lifetime:"
+msgstr "Sisääntulon kesto"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259
-msgid "Map:"
-msgstr "Kartta:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35
+msgid "Entry fadetime:"
+msgstr "Sisääntulon häivennyksen kesto"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264
-msgid "Gameplay:"
-msgstr "Pelitila:"
+#: qcsrc/menu/xonotic/util.qh:49
+msgid "Enable panel"
+msgstr "Ota paneeli käyttöön"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274
-msgid "Bots:"
-msgstr "Botit:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:26
+msgid "Menu skins:"
+msgstr "Päävalikon ulkoasu:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279
-msgid "Mod:"
-msgstr "Modi:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:47
+msgid "Show current time"
+msgstr "Näytä nykyinen kellonaika"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284
-msgid "Version:"
-msgstr "Versio:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:49
+msgid "Show current date"
+msgstr "Näytä nykyinen päivämäärä"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289
-msgid "Ping:"
-msgstr "Viive:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:51
+msgid "Show frames per second"
+msgstr "Näytä ruudunpäivitysnopeus (FPS)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295
-msgid "CA:"
-msgstr "Lipunryöstö (CTF)"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:53
+msgid "Speedometer"
+msgstr "Nopeusmittari"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301
-msgid "Key:"
-msgstr "Avain (Key)"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:56
+msgid "qu/s (hidden)"
+msgstr "qu/s (kätketty)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307
-msgid "Encryption:"
-msgstr "Salaus:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:58
+msgid "qu/s"
+msgstr "qu/s"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63
-msgid "Model:"
-msgstr "Malli:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:60
+msgid "m/s"
+msgstr "m/s"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88
-msgid "Field of view:"
-msgstr "Näkökenttä:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:64
+msgid "km/h"
+msgstr "km/h"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92
-msgid "View bobbing:"
-msgstr "Näytä huojunta:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:66
+msgid "mph"
+msgstr "mph"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96
-msgid "Zoom factor:"
-msgstr "Tarkennuskerroin:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:68
+msgid "knots"
+msgstr "knots"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100
-msgid "Zoom speed:"
-msgstr "Tarkennuksen nopeus:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:71
+msgid "Show accelerometer"
+msgstr "Näytä kiihtyvyysmittari"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103
-msgid "Weapon settings..."
-msgstr "Aseiden asetukset..."
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:74
+msgid "Accelerometer scale:"
+msgstr "Kiihtyvyysmittarin skaala:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110
-msgid "Crosshair:"
-msgstr "Tähtäin:"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:80
+msgid "Minimize input latency"
+msgstr "Minimoi syötteen viive"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143
-msgid "Per weapon"
-msgstr "Asekohtainen"
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:84
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98
+msgid "Advanced settings..."
+msgstr "Edistyneet asetukset..."
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130
-msgid "Crosshair size:"
-msgstr "Tähtäimen suuruus:"
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:4
+msgid "Singleplayer"
+msgstr "Yksinpeli"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134
-msgid "Crosshair alpha:"
-msgstr "Tähtäimen alpha:"
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:59
+msgid "Instant action! (random map with bots)"
+msgstr "Suoraan taisteluun! (satunnainen kartta bottien kera)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138
-msgid "Crosshair color:"
-msgstr "Tähtäimen väri:"
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:80
+msgid "Start Singleplayer!"
+msgstr "Aloita yksinpeli!"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145
-msgid "Enable center dot"
-msgstr "Ota keskipiste käyttöön"
+#: qcsrc/menu/xonotic/skinlist.c:105
+msgid "<TITLE>"
+msgstr "<TITLE>"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148
-msgid "Size:"
-msgstr "Koko:"
+#: qcsrc/menu/xonotic/skinlist.c:106
+msgid "<AUTHOR>"
+msgstr "<AUTHOR>"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155
-msgid "Hit test:"
-msgstr "Osumatesti:"
+#: qcsrc/menu/xonotic/skinlist.c:163
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156
-msgid "HTST^None"
-msgstr "HTST^Ei mitään."
+#: qcsrc/menu/xonotic/dialog_news.c:4
+msgid "News"
+msgstr "Uutiset"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157
-msgid "TrueAim"
-msgstr "TrueAim"
+#: qcsrc/menu/xonotic/dialog_news.c:18
+msgid "http://www.xonotic.org/team/blog/"
+msgstr "http://www.xonotic.org/team/blog/"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158
-msgid "Enemies"
-msgstr "Viholliset"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5
+msgid "Server Information"
+msgstr "Palvelimen tiedot"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161
-msgid "Waypoints setup..."
-msgstr "Välimatkojen asetukset..."
+#: 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:177
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193
+msgid "N/A"
+msgstr "N/A"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167
-msgid "Enter HUD editor"
-msgstr "Mene näkymän muokkaimeen"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:151
+#, c-format
+msgid "%d/%d"
+msgstr "%d/%d"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174
-msgid "Force models:"
-msgstr "Pakota hahmojen ulkomuoto samanlaiseksi:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166
+msgid "Official settings"
+msgstr "Viralliset asetukset"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175
-msgid "MDL^None"
-msgstr "MDL^Ei mitään."
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166
+#, c-format
+msgid "%d modified settings"
+msgstr "%d muokatut asetukset"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176
-msgid "MDL^Custom"
-msgstr "MDL^Omavalintainen"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191
+msgid "N/A (can't connect)"
+msgstr "N/A (ei voida yhdistää)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177
-msgid "MDL^All"
-msgstr "MDL^Kaikki"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199
+msgid "not supported (can't connect)"
+msgstr "ei tuettu (ei voida yhdistää)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179
-msgid "Disable gore effects"
-msgstr "Ota ylimitoitettu raakuus pois päältä"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:201
+msgid "not supported (won't encrypt)"
+msgstr "ei tuettu (salaus ei onnistu)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181
-msgid "Gibs:"
-msgstr "Raajat:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205
+msgid "supported (will encrypt)"
+msgstr "tuettu (salaus onnistuu)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183
-msgid "GIBS^None"
-msgstr "GIBS^Ei mitään"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207
+msgid "supported (won't encrypt)"
+msgstr "tuettu (salaus ei onnistu)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184
-msgid "GIBS^Few"
-msgstr "GIBS^Vähän"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211
+msgid "requested (will encrypt)"
+msgstr "pyydetty (salaus onnistuu)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185
-msgid "GIBS^Many"
-msgstr "GIBS^Paljon"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213
+msgid "requested (won't encrypt)"
+msgstr "pyydetty (salaus ei onnistu)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186
-msgid "GIBS^Lots"
-msgstr "GIBS^Runsaasti"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217
+msgid "required (can't connect)"
+msgstr "vaadittu (ei voida yhdistää)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190
-msgid "Damage splash:"
-msgstr "Vahinkoroiskeet"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219
+msgid "required (will encrypt)"
+msgstr "vaadittu (salaus onnistuu)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:194
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:178
-#: 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:105
-msgid "Apply immediately"
-msgstr "Ota saman tien käyttöön"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:240
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263
+msgid "Players:"
+msgstr "Pelaajat:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5
-msgid "Waypoints"
-msgstr "Välimatkat"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:253
+msgid "Map:"
+msgstr "Kartta:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23
-msgid "Show base waypoints"
-msgstr "Näytä tukikohtien välimatkat"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258
+msgid "Gameplay:"
+msgstr "Pelitila:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25
-msgid "Waypoint scale:"
-msgstr "Välimatkan skaala:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268
+msgid "Bots:"
+msgstr "Botit:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29
-msgid "Waypoint alpha:"
-msgstr "Välimatkojen alpha:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273
+msgid "Mod:"
+msgstr "Modi:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34
-msgid "Show names:"
-msgstr "Näytä nimet:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278
+msgid "Version:"
+msgstr "Versio:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37
-msgid "Teammates"
-msgstr "Oma joukkue"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283
+msgid "Ping:"
+msgstr "Viive:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38
-msgid "All players"
-msgstr "Kaikki pelaajat"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289
+msgid "CA:"
+msgstr "Lipunryöstö (CTF)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6
-msgid "Weapon settings"
-msgstr "Aseiden asetukset"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295
+msgid "Key:"
+msgstr "Avain (Key)"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29
-msgid "Weapon priority list:"
-msgstr "Aseiden prioriteetti:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301
+msgid "Encryption:"
+msgstr "Salaus:"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34
-msgid "Up"
-msgstr "Ylös"
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119
+msgid "Close"
+msgstr "Sulje"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37
-msgid "Down"
-msgstr "Alas"
+#: qcsrc/menu/xonotic/slider_decibels.c:50
+msgid "VOL^OFF"
+msgstr "VOL^OFF"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41
-msgid "Use priority list for weapon cycling"
-msgstr "Käytä prioriteettiä aseiden vaihdossa"
+#: qcsrc/menu/xonotic/slider_decibels.c:52
+msgid "VOL^MAX"
+msgstr "VOL^MAX"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43
-msgid "Auto switch weapons on pickup"
-msgstr "Vaihda ase automaattisesti poimimisen jälkeen"
+#: qcsrc/menu/xonotic/slider_decibels.c:53
+#, c-format
+msgid "%s dB"
+msgstr "%s dB"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45
-msgid "Draw 1st person weapon model"
-msgstr "Piirrä ensimmäisen persoonan asemalli"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7
+msgid "Mutators"
+msgstr "Muokatut pelitilat"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48
-msgid "Left align"
-msgstr "Vasen tasaus"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33
+msgid "All Weapons Arena"
+msgstr "Kaikkien aseiden taistelukenttä"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50
-msgid "Right align"
-msgstr "Oikea tasaus"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35
+msgid "Most Weapons Arena"
+msgstr "Suurimman osan aseiden taistelukenttä"
 
-#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53
-msgid "Flip view horizontally"
-msgstr "Käännä näkymä horisontaalisesti"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56
+#, c-format
+msgid "%s Arena"
+msgstr "%s taistelukenttä"
 
-#: qcsrc/menu/xonotic/dialog_news.c:4
-msgid "News"
-msgstr "Uutiset"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167
+msgid "Dodging"
+msgstr "Väistely"
 
-#: qcsrc/menu/xonotic/dialog_news.c:18
-msgid "http://www.xonotic.org/team/blog/"
-msgstr "http://www.xonotic.org/team/blog/"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:250
+msgid "MinstaGib"
+msgstr "MinstaGib"
 
-#: qcsrc/menu/xonotic/dialog_quit.c:4
-msgid "Quit"
-msgstr "Lopeta"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:253
+msgid "NIX"
+msgstr "NIX"
 
-#: qcsrc/menu/xonotic/dialog_quit.c:17
-msgid "Are you sure you want to quit?"
-msgstr "Haluatko aivan varmasti lopettaa pelin?"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:74
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:205
+msgid "Rocket Flying"
+msgstr "Rakettilentely"
 
-#: qcsrc/menu/xonotic/dialog_quit.c:20
-msgid "Yes"
-msgstr "Kyllä"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264
+msgid "No start weapons"
+msgstr "Ei aloitusasetta"
 
-#: qcsrc/menu/xonotic/dialog_quit.c:21
-msgid "No"
-msgstr "Ei"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189
+msgid "Low gravity"
+msgstr "Vajaa painovoima"
 
-#: qcsrc/menu/xonotic/dialog_settings.c:4
-msgid "Settings"
-msgstr "Asetukset"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170
+msgid "Cloaked"
+msgstr "Näkymätön"
 
-#: qcsrc/menu/xonotic/dialog_settings.c:18
-#: qcsrc/menu/xonotic/dialog_settings_input.c:4
-msgid "Input"
-msgstr "Syöte"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84
+msgid "Hook"
+msgstr "Köysi"
 
-#: qcsrc/menu/xonotic/dialog_settings.c:19
-#: qcsrc/menu/xonotic/dialog_settings_video.c:4
-msgid "Video"
-msgstr "Video"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173
+msgid "Midair"
+msgstr "Jalat irti maasta"
 
-#: qcsrc/menu/xonotic/dialog_settings.c:20
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:4
-msgid "Effects"
-msgstr "Effektit"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176
+msgid "Vampire"
+msgstr "Vampyyri"
 
-#: qcsrc/menu/xonotic/dialog_settings.c:21
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:4
-msgid "Audio"
-msgstr "Ääni"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:90
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208
+msgid "Piñata"
+msgstr "Piñata"
 
-#: qcsrc/menu/xonotic/dialog_settings.c:22
-#: qcsrc/menu/xonotic/dialog_settings_network.c:4
-msgid "Network"
-msgstr "Verkko"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:92
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:211
+msgid "Weapons stay"
+msgstr "Aseet jäävät"
 
-#: qcsrc/menu/xonotic/dialog_settings.c:23
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:4
-msgid "Misc"
-msgstr "Sekalainen"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180
+msgid "Blood loss"
+msgstr "Verenvuodatus"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:27
-msgid "Master:"
-msgstr "Pääkanava:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202
+msgid "Jet pack"
+msgstr "Rakettireppu"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:33
-msgid "Music:"
-msgstr "Musiikki:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98
+msgid "MUT^None"
+msgstr "MUT^Ei mitään"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:40
-msgid "VOL^Ambient:"
-msgstr "VOL^Ympäröivä:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164
+msgid "Gameplay mutators:"
+msgstr "Pelityylin muokkaukset:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:48
-msgid "Info:"
-msgstr "Tietoja:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196
+msgid "Weapon & item mutators:"
+msgstr "Aseiden ja esineiden muokkaukset:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:57
-msgid "Items:"
-msgstr "Esineet:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199
+msgid "Grappling hook"
+msgstr "Köysi"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:65
-msgid "Pain:"
-msgstr "Kipu:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215
+msgid "Weapon arenas:"
+msgstr "Tietyn aseen taistelukenttä"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:73
-msgid "Player:"
-msgstr "Pelaaja:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218
+msgid "Regular (no arena)"
+msgstr "Perinteinen"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:81
-msgid "Shots:"
-msgstr "Laukaukset:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256
+msgid "with laser"
+msgstr "laserilla"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:88
-msgid "Voice:"
-msgstr "Ääni:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247
+msgid "Special arenas:"
+msgstr "Erikoistaistelukentät:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:96
-msgid "Weapons:"
-msgstr "Aseet:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260
+msgid "Most weapons"
+msgstr "Suurin osa aseista"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:103
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:161
-msgid "Frequency:"
-msgstr "Tiheys:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4
+msgid "Radar Panel"
+msgstr "Tutkapaneeli"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:105
-msgid "8 kHz"
-msgstr "8 kHz"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22
+msgid "Panel enabled in teamgames"
+msgstr "Paneeli käytössä joukkuepeleissä"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:106
-msgid "11.025 kHz"
-msgstr "11.025 kHz"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29
+msgid "Radar:"
+msgstr "Tutka:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:107
-msgid "16 kHz"
-msgstr "16 kHz"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36
+msgid "Rotation:"
+msgstr "Pyöriminen:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:108
-msgid "22.05 kHz"
-msgstr "22.05 Khz"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38
+msgid "Forward"
+msgstr "Eteenpäin"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:109
-msgid "24 kHz"
-msgstr "24 kHz"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39
+msgid "West"
+msgstr "Länsi"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:110
-msgid "32 kHz"
-msgstr "32 kHz"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40
+msgid "South"
+msgstr "Etelä"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:111
-msgid "44.1 kHz"
-msgstr "44.1 kHz"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41
+msgid "East"
+msgstr "Itä"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:112
-msgid "48 kHz"
-msgstr "48 kHz"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42
+msgid "North"
+msgstr "Pohjoinen"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:115
-msgid "Channels:"
-msgstr "Kanavat:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46
+msgid "Scale:"
+msgstr "Skaala:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:117
-msgid "Mono"
-msgstr "Mono"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50
+msgid "Zoom mode:"
+msgstr "Tarkennus:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:118
-msgid "Stereo"
-msgstr "Stereo"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52
+msgid "Zoomed in"
+msgstr "Tarkennettu kohteeseen"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:119
-msgid "2.1"
-msgstr "2.1"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53
+msgid "Zoomed out"
+msgstr "Tarkennuksen poisto"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:120
-msgid "4"
-msgstr "4"
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54
+msgid "Always zoomed"
+msgstr "Aina tarkennettuna"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:121
-msgid "5"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55
+msgid "Never zoomed"
+msgstr "Tarkennus ei ikinä päällä"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:122
-msgid "5.1"
-msgstr "5.1"
+#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4
+msgid "Race Timer Panel"
+msgstr "Kilpajuoksun ajanoton paneeli"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:123
-msgid "6.1"
-msgstr "6.1"
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4
+msgid "Chat Panel"
+msgstr "Keskustelupaneeli"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:124
-msgid "7.1"
-msgstr "7.1"
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22
+msgid "Chat entries:"
+msgstr "Keskustelun sisältö:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:128
-msgid "Swap Stereo"
-msgstr "Vaihda stereoäänilähteiden paikkaa"
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25
+msgid "Chat size:"
+msgstr "Keskustelun koko"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:132
-msgid "Headphone friendly mode"
-msgstr "Kuulokeystävällinen tila"
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29
+msgid "Chat lifetime:"
+msgstr "Keskustelun kesto:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:136
-msgid "Spatial voices:"
-msgstr "Tilanneäänet:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33
+msgid "Chat beep sound"
+msgstr "Keskustelun piippausääni"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:137
-msgid "VOCS^None"
-msgstr "VOCS^Ei mitään"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:19
+msgid "Create"
+msgstr "Luo"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:138
-msgid "VOCS^Taunts"
-msgstr "VOCS^Huudahdukset"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35
+msgid "Game type:"
+msgstr "Pelityyppi"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:139
-msgid "VOCS^All"
-msgstr "VOCS^Kaikki"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47
+msgid "Match settings:"
+msgstr "Ottelun asetukset"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:142
-msgid "Taunt range:"
-msgstr "Huudahduksen kantama"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50
+msgid "Time limit:"
+msgstr "Aikaraja"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:145
-msgid "RNG^Very short"
-msgstr "RNG^Hyvin lyhyt"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62
+msgid "Use map specified default"
+msgstr "Käytä kartan omaa oletusarvoa"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:146
-msgid "RNG^Short"
-msgstr "RNG^Lyhyt"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:57
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:156
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:157
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:158
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:162
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:164
+msgid "Point limit:"
+msgstr "Pisteraja:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:147
-msgid "RNG^Normal"
-msgstr "RNG^Normaali"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65
+msgid "Player slots:"
+msgstr "Pelaajamäärä:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:148
-msgid "RNG^Long"
-msgstr "RNG^Pitkä"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68
+msgid "Number of bots:"
+msgstr "Bottien lukumäärä:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:149
-msgid "RNG^Full"
-msgstr "RNG^Täysi"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72
+msgid "Bot skill:"
+msgstr "Bottien taitotaso:"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:156
-msgid "Automatic taunts"
-msgstr "Automaattiset huudahdukset"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75
+msgid "Botlike"
+msgstr "Typerä kone"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:165
-msgid "Time warning:"
-msgstr "Aikavaroitus:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76
+msgid "Beginner"
+msgstr "Aloittelija"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:167
-msgid "WRN^None"
-msgstr "WRN^Ei mitään"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77
+msgid "You will win"
+msgstr "Helppo voitto"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78
+msgid "You can win"
+msgstr "Helpohko"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:168
-msgid "1 minute"
-msgstr "1 minuutti"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79
+msgid "You might win"
+msgstr "Keskitaso"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:169
-msgid "5 minutes"
-msgstr "5 minuuttia"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80
+msgid "Advanced"
+msgstr "Kehittynyt"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:170
-msgid "WRN^Both"
-msgstr "WRN^Molemmat"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81
+msgid "Expert"
+msgstr "Ekspertti"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:173
-msgid "Hit indicator"
-msgstr "Osumailmaisin"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82
+msgid "Pro"
+msgstr "Mestari"
 
-#: qcsrc/menu/xonotic/dialog_settings_audio.c:175
-msgid "Menu sounds"
-msgstr "Valikon äänet"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83
+msgid "Assassin"
+msgstr "Murhaaja"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:38
-msgid "Quality preset:"
-msgstr "Laadun esiasetus:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84
+msgid "Unhuman"
+msgstr "Epäinhimillinen"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:41
-msgid "PRE^OMG!"
-msgstr "PRE^JUMALAUTA!"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85
+msgid "Godlike"
+msgstr "Jumalainen"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:42
-msgid "PRE^Low"
-msgstr "PRE^Matala"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89
+msgid "Mutators..."
+msgstr "Muokkaukset..."
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:43
-msgid "PRE^Medium"
-msgstr "PRE^Keskitaso"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105
+msgid "Map list:"
+msgstr "Karttalista"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:44
-msgid "PRE^Normal"
-msgstr "PRE^Normaali"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111
+msgid "Select all"
+msgstr "Valitse kaikki"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:45
-msgid "PRE^High"
-msgstr "PRE^Korkea"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114
+msgid "Select none"
+msgstr "Poista kaikki valinnat"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:46
-msgid "PRE^Ultra"
-msgstr "PRE^Hyvin korkea"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120
+msgid "Start Multiplayer!"
+msgstr "Aloita moninpeli!"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:48
-msgid "PRE^Ultimate"
-msgstr "PRE^Äärimmäinen"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155
+msgid "Capture limit:"
+msgstr "Lipunryöstöraja"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:52
-msgid "Geometry detail:"
-msgstr "Geometriset yksityiskohdat:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159
+msgid "Lives:"
+msgstr "Elämät:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:54
-msgid "DET^Lowest"
-msgstr "DET^Matalin"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160
+msgid "Laps:"
+msgstr "Kierrokset:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:55
-msgid "DET^Low"
-msgstr "DET^Matala"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161
+msgid "Goals:"
+msgstr "Maalit:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:56
-msgid "DET^Normal"
-msgstr "DET^Normaali"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165
+msgid "Frag limit:"
+msgstr "Tapporaja:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:57
-msgid "DET^Good"
-msgstr "DET^Hyvä"
+#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4
+msgid "Winner"
+msgstr "Voittaja"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:58
-msgid "DET^Best"
-msgstr "DET^Paras"
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5
+msgid "User defined key bind"
+msgstr "Käyttäjän määrittelemä näppäinasetus"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:59
-msgid "DET^Insane"
-msgstr "DET^Sekopäinen"
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42
+msgid "Command when pressed:"
+msgstr "Komento painaessa:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:62
-msgid "Antialiasing:"
-msgstr "Reunojenpehmennys (Antialiasing):"
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45
+msgid "Command when released:"
+msgstr "Komento painamisen jälkeen:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:64
-msgid "AA^Disabled"
-msgstr "AA^Pois päältä"
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48
+msgid "Save"
+msgstr "Tallenna"
 
-#: 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_input_userbind.c:51
+msgid "Cancel"
+msgstr "Peruuta"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:66
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:104
-msgid "4x"
-msgstr "4x"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:21
+msgid "Player Setup"
+msgstr "Pelaajan asetukset"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:70
-msgid "Texture resolution:"
-msgstr "Tekstuurien tarkkuus:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63
+msgid "Model:"
+msgstr "Malli:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:73
-msgid "RES^Leet"
-msgstr "RES^Leet"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88
+msgid "Field of view:"
+msgstr "Näkökenttä:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:74
-msgid "RES^Lowest"
-msgstr "RES^Matalin"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92
+msgid "View bobbing:"
+msgstr "Näytä huojunta:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:75
-msgid "RES^Low"
-msgstr "RES^Matala"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96
+msgid "Zoom factor:"
+msgstr "Tarkennuskerroin:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:76
-msgid "RES^Normal"
-msgstr "RES^Normaali"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100
+msgid "Zoom speed:"
+msgstr "Tarkennuksen nopeus:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:77
-msgid "RES^Good"
-msgstr "RES^Hyvä"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103
+msgid "Weapon settings..."
+msgstr "Aseiden asetukset..."
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:78
-msgid "RES^Best"
-msgstr "RES^Paras"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110
+msgid "Crosshair:"
+msgstr "Tähtäin:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:91
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:94
-msgid "Avoid lossy texture compression"
-msgstr "Vältä häviöllistä tekstuurien pakkaamista"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143
+msgid "Per weapon"
+msgstr "Asekohtainen"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:100
-msgid "Anisotropy:"
-msgstr "Anisotropia:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130
+msgid "Crosshair size:"
+msgstr "Tähtäimen suuruus:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:102
-msgid "ANISO^Disabled"
-msgstr "ANISO^Pois päältä"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134
+msgid "Crosshair alpha:"
+msgstr "Tähtäimen alpha:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:105
-msgid "8x"
-msgstr "8x"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138
+msgid "Crosshair color:"
+msgstr "Tähtäimen väri:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:106
-msgid "16x"
-msgstr "16x"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145
+msgid "Enable center dot"
+msgstr "Ota keskipiste käyttöön"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:110
-msgid "Particle quality:"
-msgstr "Pienosien laatu:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148
+msgid "Size:"
+msgstr "Koko:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:113
-msgid "Particle distance:"
-msgstr "Pienosien etäisyys:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155
+msgid "Hit test:"
+msgstr "Osumatesti:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:117
-msgid "Decals"
-msgstr "Siirtokuvat"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156
+msgid "HTST^None"
+msgstr "HTST^Ei mitään."
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:120
-msgid "Distance:"
-msgstr "Etäisyys:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157
+msgid "TrueAim"
+msgstr "TrueAim"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:126
-msgid "Time:"
-msgstr "Aika:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158
+msgid "Enemies"
+msgstr "Viholliset"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:132
-msgid "Use lightmaps"
-msgstr "Käytä valaistuksia"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161
+msgid "Waypoints setup..."
+msgstr "Välimatkojen asetukset..."
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:133
-msgid "Deluxe mapping"
-msgstr "Loistokartoitus"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167
+msgid "Enter HUD editor"
+msgstr "Mene näkymän muokkaimeen"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:135
-msgid "Gloss"
-msgstr "Kiilto"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174
+msgid "Force models:"
+msgstr "Pakota hahmojen ulkomuoto samanlaiseksi:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:138
-msgid "Offset mapping"
-msgstr "Vastapainoinen kartoitus"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175
+msgid "MDL^None"
+msgstr "MDL^Ei mitään."
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:140
-msgid "Relief mapping"
-msgstr "Keveä kartoitus"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176
+msgid "MDL^Custom"
+msgstr "MDL^Omavalintainen"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:143
-msgid "Reflections:"
-msgstr "Heijastukset:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177
+msgid "MDL^All"
+msgstr "MDL^Kaikki"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:146
-msgid "Blurred"
-msgstr "Sumea"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179
+msgid "Disable gore effects"
+msgstr "Ota ylimitoitettu raakuus pois päältä"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:147
-msgid "REFL^Good"
-msgstr "REFL^Hyvä"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181
+msgid "Gibs:"
+msgstr "Raajat:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:148
-msgid "Sharp"
-msgstr "Terävä"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183
+msgid "GIBS^None"
+msgstr "GIBS^Ei mitään"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:153
-msgid "Show surfaces"
-msgstr "Näytä pinnat"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184
+msgid "GIBS^Few"
+msgstr "GIBS^Vähän"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:155
-msgid "No dynamic lighting"
-msgstr "Ei dynaamista valaistusta"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185
+msgid "GIBS^Many"
+msgstr "GIBS^Paljon"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:157
-msgid "Flash blend approximation"
-msgstr "Väläytä blend approximation"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186
+msgid "GIBS^Lots"
+msgstr "GIBS^Runsaasti"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:159
-msgid "Realtime dynamic lighting"
-msgstr "Reaaliaikainen dynaaminen valaitus"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190
+msgid "Damage splash:"
+msgstr "Vahinkoroiskeet"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:160
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:164
-msgid "Shadows"
-msgstr "Varjot"
+#: qcsrc/menu/xonotic/cvarlist.c:84
+msgid "will be saved to config.cfg"
+msgstr "tallennetaan config.cfg-tiedostoon"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:163
-msgid "Realtime world lighting"
-msgstr "Reaaliaikainen ympäristön valaistus"
+#: qcsrc/menu/xonotic/cvarlist.c:86
+msgid "will not be saved"
+msgstr "ei tallenneta"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:168
-msgid "Use normal maps"
-msgstr "Käytä normaaleja karttoja"
+#: qcsrc/menu/xonotic/cvarlist.c:88
+msgid "private"
+msgstr "yksityinen"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:170
-msgid "Soft shadows"
-msgstr "Pehmeät varjot"
+#: qcsrc/menu/xonotic/cvarlist.c:90
+msgid "engine setting"
+msgstr "pelimoottorin asetus"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:173
-msgid "Coronas"
-msgstr "Valokehät"
+#: qcsrc/menu/xonotic/cvarlist.c:92
+msgid "read only"
+msgstr "vain luku"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:174
-msgid "Use Occlusion Queries"
-msgstr "Säätele grafiikkapiirron osia (Occlusion Query)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4
+msgid "Score Panel"
+msgstr "Tulospaneeli"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:176
-msgid "Bloom"
-msgstr "Hehku"
+#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4
+msgid "Timer Panel"
+msgstr "Ajastinpaneeli"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:178
-msgid "High Dynamic Range (HDR)"
-msgstr "High Dynamic Range (HDR)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22
+msgid "Timer:"
+msgstr "Ajastin:"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:182
-msgid "Motion blur:"
-msgstr "Liikkeestä johtuva sumeus:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25
+msgid "Show elapsed time"
+msgstr "Näytä kulutettu aika"
 
-#: qcsrc/menu/xonotic/dialog_settings_effects.c:188
-msgid "Damage blur:"
-msgstr "Vahingosta johtuva sumaus:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5
+msgid "Map Information"
+msgstr "Kartan tiedot"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:26
-msgid "Key bindings:"
-msgstr "Näppäimet"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49
+msgid "Full item placement"
+msgstr "Esineiden täysi sijoittaminen"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:31
-msgid "Change key..."
-msgstr "Vaihda näppäin..."
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49
+msgid "MinstaGib only"
+msgstr "Vain MinstaGib"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:35
-msgid "Edit..."
-msgstr "Muokkaa..."
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78
+msgid "Title:"
+msgstr "Otsikko:"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:46
-msgid "Sensitivity:"
-msgstr "Herkkyys:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84
+msgid "Author:"
+msgstr "Tekijä:"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:49
-msgid "UI mouse speed:"
-msgstr "Käyttöliittymän hiiren nopeus:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90
+msgid "Features:"
+msgstr "Ominaisuudet:"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:52
-msgid "Mouse filter"
-msgstr "Hiiren suodatin"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95
+msgid "Game types:"
+msgstr "Pelityypit:"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:54
-msgid "Invert mouse"
-msgstr "Käännä hiiren suunta"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46
+msgid "Play"
+msgstr "Pelaa"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:57
-#: qcsrc/menu/xonotic/dialog_settings_input.c:59
-msgid "Use joystick input"
-msgstr "Käytä peliohjainta"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6
+msgid "Advanced server settings"
+msgstr "Kehittyneet palvelinasetukset"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:62
-#: qcsrc/menu/xonotic/dialog_settings_input.c:64
-msgid "Turn off OS mouse acceleration"
-msgstr "Laita käyttöjärjestelmän hiiren kiihtyvyys pois päältä"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25
+msgid "Game settings:"
+msgstr "Peliasetukset:"
 
-#: qcsrc/menu/xonotic/dialog_settings_input.c:66
-msgid "\"enter console\" also closes"
-msgstr "\"avaa komentorivi\" myös sulkee"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28
+msgid "Allow spectating"
+msgstr "Salli sivustakatsominen"
 
-#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5
-msgid "User defined key bind"
-msgstr "Käyttäjän määrittelemä näppäinasetus"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31
+msgid "Spawn shield:"
+msgstr "Uudelleensyntymissuoja:"
 
-#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42
-msgid "Command when pressed:"
-msgstr "Komento painaessa:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36
+msgid "Game speed:"
+msgstr "Pelinopeus:"
 
-#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45
-msgid "Command when released:"
-msgstr "Komento painamisen jälkeen:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40
+msgid "Teamplay settings:"
+msgstr "Joukkuepeliasetukset:"
 
-#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48
-msgid "Save"
-msgstr "Tallenna"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43
+msgid "Friendly fire scale:"
+msgstr "Joukkuevahingon skaala:"
 
-#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51
-msgid "Cancel"
-msgstr "Peruuta"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47
+msgid "Virtual friendly fire (effect only)"
+msgstr "Virtuaalinen joukkuevahinko (vain effekti)"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:26
-msgid "Menu skins:"
-msgstr "Päävalikon ulkoasu:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50
+msgid "Friendly fire penalty:"
+msgstr "Joukkuevahinkorangaistus:"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:47
-msgid "Show current time"
-msgstr "Näytä nykyinen kellonaika"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54
+msgid "Virtual penalty (effect only)"
+msgstr "Virtuaalinen rangaistus (vain effekti)"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:49
-msgid "Show current date"
-msgstr "Näytä nykyinen päivämäärä"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57
+msgid "Teams:"
+msgstr "Joukkueet:"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:51
-msgid "Show frames per second"
-msgstr "Näytä ruudunpäivitysnopeus (FPS)"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66
+msgid "Map voting:"
+msgstr "Kartan äänestys:"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:53
-msgid "Speedometer"
-msgstr "Nopeusmittari"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68
+msgid "No voting"
+msgstr "Ei äänestystä"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:56
-msgid "qu/s (hidden)"
-msgstr "qu/s (kätketty)"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69
+msgid "2 choices"
+msgstr "2 valintaa"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:58
-msgid "qu/s"
-msgstr "qu/s"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70
+msgid "3 choices"
+msgstr "3 valintaa"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:60
-msgid "m/s"
-msgstr "m/s"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71
+msgid "4 choices"
+msgstr "4 valintaa"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:64
-msgid "km/h"
-msgstr "km/h"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72
+msgid "5 choices"
+msgstr "5 valintaa"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:66
-msgid "mph"
-msgstr "mph"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73
+msgid "6 choices"
+msgstr "6 valintaa"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:68
-msgid "knots"
-msgstr "knots"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74
+msgid "7 choices"
+msgstr "7 valintaa"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:71
-msgid "Show accelerometer"
-msgstr "Näytä kiihtyvyysmittari"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75
+msgid "8 choices"
+msgstr "8 valintaa"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:74
-msgid "Accelerometer scale:"
-msgstr "Kiihtyvyysmittarin skaala:"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76
+msgid "9 choices"
+msgstr "9 valintaa"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc.c:80
-msgid "Minimize input latency"
-msgstr "Minimoi syötteen viive"
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79
+msgid "Simple majority wins vcall"
+msgstr "Suurempi äänimäärä voittaa"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5
-msgid "Advanced settings"
-msgstr "Edistyneet asetukset"
+#: qcsrc/menu/xonotic/util.qc:263
+#, c-format
+msgid "Received HTTP request data for an invalid id %d.\n"
+msgstr "Vastaanotettiin epäkelpo HTTP datapyyntö: %d.\n"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23
-msgid "Cvar filter:"
-msgstr "Cvar suodatin"
+#: qcsrc/menu/xonotic/util.qc:278
+#, c-format
+msgid "error receiving update notification: status is %d\n"
+msgstr "virhe vastaanottaessa päivitystiedotetta: tilanne %d\n"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34
-msgid "Setting:"
-msgstr "Asetus:"
+#: qcsrc/menu/xonotic/util.qc:283
+msgid "error: received HTML instead of an update notification\n"
+msgstr "virhe: vastaanotettiin HTML päivitystiedotteen asemesta\n"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42
-msgid "Value:"
-msgstr "Arvo:"
+#: qcsrc/menu/xonotic/util.qc:288
+msgid "error: received carriage returns from update notification server\n"
+msgstr "virhe: vastaanotettiin tyhjää dataa päivitystiedotepalvelimelta\n"
 
-#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56
-msgid "Description:"
-msgstr "Kuvaus:"
+#: qcsrc/menu/xonotic/util.qc:309
+#, c-format
+msgid ""
+"Update can be downloaded at:\n"
+"%s\n"
+msgstr "Päivitys on ladattavissa:\n"
+"%s\n"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:26
-msgid "Client-side movement prediction"
-msgstr "Asiakasohjelman liikkeen ennustus"
+#: qcsrc/menu/xonotic/util.qc:330
+msgid "Autogenerating mapinfo for newly added maps..."
+msgstr "Luodaan automaattisesti karttatietoja vastikään lisätyille kartoille..."
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:30
-msgid "Show netgraph"
-msgstr "Näytä verkkograafi"
+#: qcsrc/menu/xonotic/util.qc:425
+#, c-format
+msgid "Update to %s now!"
+msgstr "Päivitä versioon %s nyt!"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:33
-msgid "Network speed:"
-msgstr "Verkon nopeus:"
+#: qcsrc/menu/xonotic/util.qc:502
+msgid ""
+"^1ERROR: Texture compression is required but not supported.\n"
+"^1Expect visual problems.\n"
+msgstr "^1VIRHE: Tekstuurien pakkaus vaaditaan mutta ei ole tuettuna.\n"
+"^1Grafiikkavirheitä odotettavissa.\n"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:35
-msgid "56k"
-msgstr "56k"
+#: qcsrc/menu/xonotic/util.qc:524
+msgid "Arena"
+msgstr "Areena"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:36
-msgid "ISDN"
-msgstr "ISDN"
+#: qcsrc/menu/xonotic/util.qc:525
+msgid "Assault"
+msgstr "Rynnäkkö (Assault)"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:37
-msgid "Slow ADSL"
-msgstr "Hidas ASL"
+#: qcsrc/menu/xonotic/util.qc:526
+msgid "Capture The Flag"
+msgstr "Lipunryöstö (CTF)"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:38
-msgid "Fast ADSL"
-msgstr "Nopea ADSL"
+#: qcsrc/menu/xonotic/util.qc:527
+msgid "Clan Arena"
+msgstr "Klaaniareena (Clan Arena)"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:39
-msgid "Broadband"
-msgstr "Laajakaista"
+#: qcsrc/menu/xonotic/util.qc:528
+msgid "Deathmatch"
+msgstr "Mättö (Deathmatch)"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:42
-msgid "Input packets/s:"
-msgstr "Vastaanottopaketit /s:"
+#: qcsrc/menu/xonotic/util.qc:529
+msgid "Domination"
+msgstr "Hallinta (Domination)"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:46
-msgid "HTTP downloads:"
-msgstr "HTTP lataukset:"
+#: qcsrc/menu/xonotic/util.qc:530
+msgid "Freeze Tag"
+msgstr "Pakkashippa (Freeze Tag)"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:49
-msgid "Downloads:"
-msgstr "Lataukset:"
+#: qcsrc/menu/xonotic/util.qc:531
+msgid "Keepaway"
+msgstr "Pakomatka (Keepaway)"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:53
-msgid "Speed (kB/s):"
-msgstr "Nopeus (kb/s)"
+#: qcsrc/menu/xonotic/util.qc:532
+msgid "Key Hunt"
+msgstr "Avaimenmetsästys (Key Hunt)"
 
-#: qcsrc/menu/xonotic/dialog_settings_network.c:57
-msgid "Client UDP port:"
-msgstr "Asiakkaan UDP portti"
+#: qcsrc/menu/xonotic/util.qc:533
+msgid "Last Man Standing"
+msgstr "Viimeiseen mieheen (Last Man Standing)"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:26
-msgid "Resolution:"
-msgstr "Näytön tarkkuus:"
+#: qcsrc/menu/xonotic/util.qc:534
+msgid "Nexball"
+msgstr "Nexpallo (Nexball)"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:29
-msgid "Font/UI size:"
-msgstr "Kirjainkoko/käyttöliittymän koko:"
+#: qcsrc/menu/xonotic/util.qc:535
+msgid "Onslaught"
+msgstr "Suurtaistelu (Onslaught)"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:31
-msgid "SZ^Unreadable"
-msgstr "SZ^Miltein näkymätön"
+#: qcsrc/menu/xonotic/util.qc:536
+msgid "Race"
+msgstr "Kilpailu (RACE)"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:32
-msgid "SZ^Tiny"
-msgstr "SZ^Pikkuruinen"
+#: qcsrc/menu/xonotic/util.qc:537
+msgid "Race CTS"
+msgstr "Kilpailu CTS"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:33
-msgid "SZ^Little"
-msgstr "SZ^Hyvin pieni"
+#: qcsrc/menu/xonotic/util.qc:538
+msgid "Runematch"
+msgstr "Riimu-ottelu (Runematch)"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:34
-msgid "SZ^Small"
-msgstr "SZ^Pieni"
+#: qcsrc/menu/xonotic/util.qc:539
+msgid "Team Deathmatch"
+msgstr "Joukkuemättö (Team Deatchmatch)"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:35
-msgid "SZ^Medium"
-msgstr "SZ^Keskikokoinen"
+#: qcsrc/menu/xonotic/util.qc:558
+#, c-format
+msgid "@!#%'n Tuba Throwing"
+msgstr "@!#% tuubanheitto!"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:36
-msgid "SZ^Large"
-msgstr "SZ^Suuri"
+#: qcsrc/menu/xonotic/util.qc:599
+msgid "Background:"
+msgstr "Tausta:"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:37
-msgid "SZ^Huge"
-msgstr "SZ^Valtava"
+#: qcsrc/menu/xonotic/util.qc:601 qcsrc/menu/xonotic/util.qc:617
+#: qcsrc/menu/xonotic/util.qc:626 qcsrc/menu/xonotic/util.qc:634
+#: qcsrc/menu/xonotic/util.qc:646
+msgid "Default"
+msgstr "Perusasetus"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:38
-msgid "SZ^Gigantic"
-msgstr "SZ^Jättiläismäinen"
+#: qcsrc/menu/xonotic/util.qc:612
+msgid "Use default"
+msgstr "Käytä perusasetusta"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:39
-msgid "SZ^Colossal"
-msgstr "SZ^Massiivinen"
+#: qcsrc/menu/xonotic/util.qc:632
+msgid "Team Color:"
+msgstr "Joukkueen väri"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:42
-msgid "Color depth:"
-msgstr "Värisävy:"
+#: qcsrc/menu/xonotic/playermodel.c:174
+msgid "<no model found>"
+msgstr "<mallia ei löytynyt>"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:45
-msgid "Full screen"
-msgstr "Kokoruutu"
+#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4
+msgid "Ammo Panel"
+msgstr "Ammuspaneeli"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:46
-msgid "Vertical Synchronization"
-msgstr "VSYNC"
+#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22
+msgid "Ammunition display:"
+msgstr "Ammuksien näyttö:"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:49
-msgid "Use OpenGL 2.0 shaders (GLSL)"
-msgstr "Käytä OpenGL 2.0 shaders-varjostuksia (GLSL)"
+#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25
+msgid "Show only current ammo type"
+msgstr "Näytä vain nykyinen ammustyyppi"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:52
-msgid "Use GLSL to handle color control"
-msgstr "Käytä GLSL:ää värien hallinnassa"
+#: 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
+msgid "Left"
+msgstr "Vasen"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:56
-msgid "Vertex Buffer Objects (VBOs)"
-msgstr "Vertex Buffer Object (VBO)"
+#: 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
+msgid "Right"
+msgstr "Oikea"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:59
-msgid "VBO^Off"
-msgstr "VBO^Pois"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6
+msgid "Weapon settings"
+msgstr "Aseiden asetukset"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:60
-msgid "Vertices, some Tris (compatible)"
-msgstr "Vertices, jonkun verran Tris (yhteensopivin)"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29
+msgid "Weapon priority list:"
+msgstr "Aseiden prioriteetti:"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:63
-msgid "Vertices"
-msgstr "Vertices"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34
+msgid "Up"
+msgstr "Ylös"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:64
-msgid "Vertices and Triangles"
-msgstr "Vertices ja Triangles"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37
+msgid "Down"
+msgstr "Alas"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:67
-msgid "Depth first:"
-msgstr "Syvyys ensin (Depth First):"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41
+msgid "Use priority list for weapon cycling"
+msgstr "Käytä prioriteettiä aseiden vaihdossa"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:69
-msgid "DF^Disabled"
-msgstr "DF^Pois"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43
+msgid "Auto switch weapons on pickup"
+msgstr "Vaihda ase automaattisesti poimimisen jälkeen"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:70
-msgid "DF^World"
-msgstr "DF^Maailma"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45
+msgid "Draw 1st person weapon model"
+msgstr "Piirrä ensimmäisen persoonan asemalli"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:71
-msgid "DF^All"
-msgstr "DF^Kaikki"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48
+msgid "Left align"
+msgstr "Vasen tasaus"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:75
-msgid "Disable multithreaded OpenGL"
-msgstr "Ota monisäkeinen OpenGL pois päältä"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50
+msgid "Right align"
+msgstr "Oikea tasaus"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:77
-msgid "Wait for GPU to finish each frame"
-msgstr "Anna näytönohjaimen viimeistellä jokainen ruutu"
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53
+msgid "Flip view horizontally"
+msgstr "Käännä näkymä horisontaalisesti"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:80
-msgid "Brightness:"
-msgstr "Kirkkaus:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:38
+msgid "Quality preset:"
+msgstr "Laadun esiasetus:"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:83
-msgid "Contrast:"
-msgstr "Kontrasti:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:41
+msgid "PRE^OMG!"
+msgstr "PRE^Nörtti"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:86
-msgid "Gamma:"
-msgstr "Gamma:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:42
+msgid "PRE^Low"
+msgstr "PRE^Matala"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:89
-msgid "Contrast boost:"
-msgstr "Kontrastin lisäys:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:43
+msgid "PRE^Medium"
+msgstr "PRE^Keskitaso"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:92
-msgid "Saturation:"
-msgstr "Kylläisyys:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:44
+msgid "PRE^Normal"
+msgstr "PRE^Normaali"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:98
-msgid "LIT^Ambient:"
-msgstr "LIT^Ympäröivä"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:45
+msgid "PRE^High"
+msgstr "PRE^Korkea"
 
-#: qcsrc/menu/xonotic/dialog_settings_video.c:101
-msgid "Intensity:"
-msgstr "Intensiivisyys:"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:46
+msgid "PRE^Ultra"
+msgstr "PRE^Hyvin korkea"
 
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:4
-msgid "Singleplayer"
-msgstr "Yksinpeli"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:48
+msgid "PRE^Ultimate"
+msgstr "PRE^Äärimmäinen"
 
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:59
-msgid "Instant action! (random map with bots)"
-msgstr ""
-"Suoraan taisteluun! (satunnainen kartta tietokoneohjattujen vastustajien "
-"kera)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:52
+msgid "Geometry detail:"
+msgstr "Geometriset yksityiskohdat:"
 
-#: qcsrc/menu/xonotic/dialog_singleplayer.c:80
-msgid "Start Singleplayer!"
-msgstr "Aloita yksinpeli!"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:54
+msgid "DET^Lowest"
+msgstr "DET^Matalin"
 
-#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4
-msgid "Winner"
-msgstr "Voittaja"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:55
+msgid "DET^Low"
+msgstr "DET^Matala"
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:5
-msgid "Team Selection"
-msgstr "Joukkueen valinta"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:56
+msgid "DET^Normal"
+msgstr "DET^Normaali"
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:41
-msgid "join 'best' team (auto-select)"
-msgstr "liity 'parhaimpaan' joukkueeseen (automaattisesti)'"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:57
+msgid "DET^Good"
+msgstr "DET^Hyvä"
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:45
-msgid "red"
-msgstr "punainen"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:58
+msgid "DET^Best"
+msgstr "DET^Paras"
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:46
-msgid "blue"
-msgstr "sininen"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:59
+msgid "DET^Insane"
+msgstr "DET^Sekopäinen"
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:47
-msgid "yellow"
-msgstr "keltainen"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:62
+msgid "Antialiasing:"
+msgstr "Reunojenpehmennys (Antialiasing):"
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:48
-msgid "pink"
-msgstr "pinkki"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:64
+msgid "AA^Disabled"
+msgstr "AA^Pois päältä"
 
-#: qcsrc/menu/xonotic/dialog_teamselect.c:51
-msgid "spectate"
-msgstr "katso sivusta"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:65
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:103
+msgid "2x"
+msgstr "2x"
 
-#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38
-msgid "Do not press this button again!"
-msgstr "Älä paina enää näppäintä, prkl!"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:66
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:104
+msgid "4x"
+msgstr "4x"
 
-#: qcsrc/menu/xonotic/maplist.c:278
-msgid ""
-"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n"
-msgstr ""
-"Höh? Tätä ei voida pelata (m on NULL). Uudelleensuodatetaan jottei vastaava "
-"enää toistuisi, anteeksi häiriö.\n"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:70
+msgid "Texture resolution:"
+msgstr "Tekstuurien tarkkuus:"
 
-#: qcsrc/menu/xonotic/maplist.c:286
-#, c-format
-msgid "%s's Xonotic Server"
-msgstr "%s Xonotic-palvelin"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:73
+msgid "RES^Leet"
+msgstr "RES^Leet"
 
-#: qcsrc/menu/xonotic/maplist.c:291
-msgid ""
-"Huh? Can't play this (invalid game type). Refiltering so this won't happen "
-"again.\n"
-msgstr ""
-"Höh? Tätä ei voida pelata (epäkelpo pelityyppi). Uudelleensuodatetaan jottei "
-"vastaava enää toistuisi.\n"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:74
+msgid "RES^Lowest"
+msgstr "RES^Matalin"
 
-#: qcsrc/menu/xonotic/playermodel.c:174
-msgid "<no model found>"
-msgstr "<mallia ei löytynyt>"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:75
+msgid "RES^Low"
+msgstr "RES^Matala"
 
-#: qcsrc/menu/xonotic/serverlist.c:360
-msgid "Remove"
-msgstr "Poista"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:76
+msgid "RES^Normal"
+msgstr "RES^Normaali"
 
-#: qcsrc/menu/xonotic/serverlist.c:362
-msgid "Bookmark"
-msgstr "Kirjanmerkki"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:77
+msgid "RES^Good"
+msgstr "RES^Hyvä"
 
-#: qcsrc/menu/xonotic/serverlist.c:518
-msgid "Ping"
-msgstr "Viive"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:78
+msgid "RES^Best"
+msgstr "RES^Paras"
 
-#: qcsrc/menu/xonotic/serverlist.c:519
-msgid "Host name"
-msgstr "Palvelimen nimi"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:91
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:94
+msgid "Avoid lossy texture compression"
+msgstr "Vältä häviöllistä tekstuurien pakkaamista"
 
-#: qcsrc/menu/xonotic/serverlist.c:520
-msgid "Map"
-msgstr "Kartta"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:100
+msgid "Anisotropy:"
+msgstr "Anisotropia:"
 
-#: qcsrc/menu/xonotic/serverlist.c:521
-msgid "Type"
-msgstr "Tyyppi"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:102
+msgid "ANISO^Disabled"
+msgstr "ANISO^Pois päältä"
 
-#: qcsrc/menu/xonotic/serverlist.c:522
-msgid "Players"
-msgstr "Pelaajat"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:105
+msgid "8x"
+msgstr "8x"
 
-#: qcsrc/menu/xonotic/skinlist.c:105
-msgid "<TITLE>"
-msgstr "<TITLE>"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:106
+msgid "16x"
+msgstr "16x"
 
-#: qcsrc/menu/xonotic/skinlist.c:106
-msgid "<AUTHOR>"
-msgstr "<AUTHOR>"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:110
+msgid "Particle quality:"
+msgstr "Kappaleiden laatu:"
 
-#: qcsrc/menu/xonotic/skinlist.c:163
-#, c-format
-msgid "%s: %s"
-msgstr "%s: %s"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:113
+msgid "Particle distance:"
+msgstr "Kappaleiden etäisyys:"
 
-#: qcsrc/menu/xonotic/slider_decibels.c:50
-msgid "VOL^OFF"
-msgstr "VOL^OFF"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:117
+msgid "Decals"
+msgstr "Siirtokuvat"
 
-#: qcsrc/menu/xonotic/slider_decibels.c:52
-msgid "VOL^MAX"
-msgstr "VOL^MAX"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:120
+msgid "Distance:"
+msgstr "Etäisyys:"
 
-#: qcsrc/menu/xonotic/slider_decibels.c:53
-#, c-format
-msgid "%s dB"
-msgstr "%s dB"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:126
+msgid "Time:"
+msgstr "Aika:"
 
-#: qcsrc/menu/xonotic/slider_resolution.c:65
-#, c-format
-msgid "%dx%d"
-msgstr "%dx%d"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:132
+msgid "Use lightmaps"
+msgstr "Käytä valaistuksia"
 
-#: qcsrc/menu/xonotic/util.qc:270
-#, c-format
-msgid "Received HTTP request data for an invalid id %d.\n"
-msgstr "Vastaanotettiin epäkelpo HTTP datapyyntö: %d.\n"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:133
+msgid "Deluxe mapping"
+msgstr "Pikselikohtainen valaistus"
 
-#: qcsrc/menu/xonotic/util.qc:285
-#, c-format
-msgid "error receiving update notification: status is %d\n"
-msgstr "virhe vastaanottaessa päivitystiedotetta: tilanne %d\n"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:135
+msgid "Gloss"
+msgstr "Kiilto"
 
-#: qcsrc/menu/xonotic/util.qc:290
-msgid "error: received HTML instead of an update notification\n"
-msgstr "virhe: vastaanotettiin HTML päivitystiedotteen asemesta\n"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:138
+msgid "Offset mapping"
+msgstr "Korosta tekstuurien kuhmuja"
 
-#: qcsrc/menu/xonotic/util.qc:295
-msgid "error: received carriage returns from update notification server\n"
-msgstr "virhe: vastaanotettiin tyhjää dataa päivitystiedotepalvelimelta\n"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:140
+msgid "Relief mapping"
+msgstr "Tehokas tekstuurien kuhmujen korostus"
 
-#: qcsrc/menu/xonotic/util.qc:316
-#, c-format
-msgid ""
-"Update can be downloaded at:\n"
-"%s\n"
-msgstr ""
-"Päivitys on ladattavissa:\n"
-"%s\n"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:143
+msgid "Reflections:"
+msgstr "Heijastukset:"
 
-#: qcsrc/menu/xonotic/util.qc:337
-msgid "Autogenerating mapinfo for newly added maps..."
-msgstr ""
-"Luodaan automaattisesti karttatietoja vastikään lisätyille kartoille..."
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:146
+msgid "Blurred"
+msgstr "Sumea"
 
-#: qcsrc/menu/xonotic/util.qc:432
-#, c-format
-msgid "Update to %s now!"
-msgstr "Päivitä versioon %s nyt!"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:147
+msgid "REFL^Good"
+msgstr "REFL^Hyvä"
 
-#: qcsrc/menu/xonotic/util.qc:509
-msgid ""
-"^1ERROR: Texture compression is required but not supported.\n"
-"^1Expect visual problems.\n"
-msgstr ""
-"^1VIRHE: Tekstuurien pakkaus vaaditaan mutta ei ole tuettuna.\n"
-"^1Grafiikkavirheitä odotettavissa.\n"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:148
+msgid "Sharp"
+msgstr "Terävä"
 
-#: qcsrc/menu/xonotic/util.qc:531
-msgid "Arena"
-msgstr "Areena"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:153
+msgid "Show surfaces"
+msgstr "Näytä pinnat"
 
-#: qcsrc/menu/xonotic/util.qc:532
-msgid "Assault"
-msgstr "Rynnäkkö (Assault)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:155
+msgid "No dynamic lighting"
+msgstr "Ei dynaamista valaistusta"
 
-#: qcsrc/menu/xonotic/util.qc:533
-msgid "Capture The Flag"
-msgstr "Lipunryöstö (CTF)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:157
+msgid "Flash blend approximation"
+msgstr "Yksinkertaiset valot"
 
-#: qcsrc/menu/xonotic/util.qc:534
-msgid "Clan Arena"
-msgstr "Klaaniareena (Clan Arena)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:159
+msgid "Realtime dynamic lighting"
+msgstr "Reaaliaikainen dynaaminen valaitus"
 
-#: qcsrc/menu/xonotic/util.qc:535
-msgid "Deathmatch"
-msgstr "Mättö (Deathmatch)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:160
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:164
+msgid "Shadows"
+msgstr "Varjot"
 
-#: qcsrc/menu/xonotic/util.qc:536
-msgid "Domination"
-msgstr "Hallinta (Domination)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:163
+msgid "Realtime world lighting"
+msgstr "Reaaliaikainen ympäristön valaistus"
 
-#: qcsrc/menu/xonotic/util.qc:537
-msgid "Freeze Tag"
-msgstr "Pakkashippa (Freeze Tag)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:168
+msgid "Use normal maps"
+msgstr "Käytä tekstuurien suunnattua varjostamista"
 
-#: qcsrc/menu/xonotic/util.qc:538
-msgid "Keepaway"
-msgstr "Pakomatka (Keepaway)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:170
+msgid "Soft shadows"
+msgstr "Pehmeät varjot"
 
-#: qcsrc/menu/xonotic/util.qc:539
-msgid "Key Hunt"
-msgstr "Avaimenmetsästys (Key Hunt)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:173
+msgid "Coronas"
+msgstr "Valokehät"
 
-#: qcsrc/menu/xonotic/util.qc:540
-msgid "Last Man Standing"
-msgstr "Viimeiseen mieheen (Last Man Standing)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:175
+msgid "Bloom"
+msgstr "Hehku"
 
-#: qcsrc/menu/xonotic/util.qc:541
-msgid "Nexball"
-msgstr "Nexpallo (Nexball)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:177
+msgid "High Dynamic Range (HDR)"
+msgstr "HDR"
 
-#: qcsrc/menu/xonotic/util.qc:542
-msgid "Onslaught"
-msgstr "Suurtaistelu (Onslaught)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:181
+msgid "Motion blur:"
+msgstr "Liikesumeus:"
 
-#: qcsrc/menu/xonotic/util.qc:543
-msgid "Race"
-msgstr "Kilpailu (RACE)"
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:187
+msgid "Damage blur:"
+msgstr "Vahinkosumeus:"
 
-#: qcsrc/menu/xonotic/util.qc:544
-msgid "Race CTS"
-msgstr "Kilpailu CTS"
+#: qcsrc/menu/xonotic/dialog_settings_network.c:26
+msgid "Client-side movement prediction"
+msgstr "Asiakasohjelman liikkeen ennustus"
 
-#: qcsrc/menu/xonotic/util.qc:545
-msgid "Runematch"
-msgstr "Riimu-ottelu (Runematch)"
+#: qcsrc/menu/xonotic/dialog_settings_network.c:30
+msgid "Show netgraph"
+msgstr "Näytä verkkograafi"
 
-#: qcsrc/menu/xonotic/util.qc:546
-msgid "Team Deathmatch"
-msgstr "Joukkuemättö (Team Deatchmatch)"
+#: qcsrc/menu/xonotic/dialog_settings_network.c:33
+msgid "Network speed:"
+msgstr "Verkon nopeus:"
 
-#: qcsrc/menu/xonotic/util.qc:565
-#, c-format
-msgid "@!#%'n Tuba Throwing"
-msgstr "Perkeleen tuubanheitto!"
+#: qcsrc/menu/xonotic/dialog_settings_network.c:35
+msgid "56k"
+msgstr "56k"
 
-#: qcsrc/menu/xonotic/util.qc:583
-msgid "Background:"
-msgstr "Tausta:"
+#: qcsrc/menu/xonotic/dialog_settings_network.c:36
+msgid "ISDN"
+msgstr "ISDN"
 
-#: qcsrc/menu/xonotic/util.qc:585 qcsrc/menu/xonotic/util.qc:601
-#: qcsrc/menu/xonotic/util.qc:610 qcsrc/menu/xonotic/util.qc:618
-#: qcsrc/menu/xonotic/util.qc:630
-msgid "Default"
-msgstr "Perusasetus"
+#: qcsrc/menu/xonotic/dialog_settings_network.c:37
+msgid "Slow ADSL"
+msgstr "Hidas ASL"
 
-#: qcsrc/menu/xonotic/util.qc:596
-msgid "Use default"
-msgstr "Käytä perusasetusta"
+#: qcsrc/menu/xonotic/dialog_settings_network.c:38
+msgid "Fast ADSL"
+msgstr "Nopea ADSL"
 
-#: qcsrc/menu/xonotic/util.qc:616
-msgid "Team Color:"
-msgstr "Joukkueen väri"
+#: qcsrc/menu/xonotic/dialog_settings_network.c:39
+msgid "Broadband"
+msgstr "Laajakaista"
 
-#: qcsrc/menu/xonotic/util.qh:49
-msgid "Enable panel"
-msgstr "Ota paneeli käyttöön"
+#: qcsrc/menu/xonotic/dialog_settings_network.c:42
+msgid "Input packets/s:"
+msgstr "Vastaanottopaketit /s:"
 
-#: qcsrc/server/w_crylink.qc:2
-msgid "Crylink"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_network.c:46
+msgid "HTTP downloads:"
+msgstr "HTTP lataukset:"
 
-#: qcsrc/server/w_crylink.qc:645
-#, c-format
-msgid "%s succeeded at self-destructing themself with the Crylink"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_network.c:49
+msgid "Downloads:"
+msgstr "Lataukset:"
 
-#: qcsrc/server/w_crylink.qc:650
-#, c-format
-msgid "%s could not hide from %s's Crylink"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_network.c:53
+msgid "Speed (kB/s):"
+msgstr "Nopeus (kb/s)"
 
-#: qcsrc/server/w_crylink.qc:652
-#, c-format
-msgid "%s was too close to %s's Crylink"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_network.c:57
+msgid "Client UDP port:"
+msgstr "Asiakkaan UDP portti"
 
-#: qcsrc/server/w_crylink.qc:654
-#, c-format
-msgid "%s took a close look at %s's Crylink"
-msgstr ""
+#: qcsrc/menu/xonotic/serverlist.c:357
+msgid "Remove"
+msgstr "Poista"
 
-#: qcsrc/server/w_electro.qc:2
-msgid "Electro"
-msgstr ""
+#: qcsrc/menu/xonotic/serverlist.c:359
+msgid "Bookmark"
+msgstr "Kirjanmerkki"
 
-#: qcsrc/server/w_electro.qc:503
-#, c-format
-msgid "%s could not remember where they put plasma"
-msgstr ""
+#: qcsrc/menu/xonotic/serverlist.c:515
+msgid "Ping"
+msgstr "Viive"
 
-#: qcsrc/server/w_electro.qc:505
-#, c-format
-msgid "%s played with plasma"
-msgstr ""
+#: qcsrc/menu/xonotic/serverlist.c:516
+msgid "Host name"
+msgstr "Palvelimen nimi"
 
-#: qcsrc/server/w_electro.qc:512
-#, c-format
-msgid "%s just noticed %s's blue ball"
-msgstr ""
+#: qcsrc/menu/xonotic/serverlist.c:517
+msgid "Map"
+msgstr "Kartta"
 
-#: qcsrc/server/w_electro.qc:514
-#, c-format
-msgid "%s got in touch with %s's blue ball"
-msgstr ""
+#: qcsrc/menu/xonotic/serverlist.c:518
+msgid "Type"
+msgstr "Tyyppi"
 
-#: qcsrc/server/w_electro.qc:519
-#, c-format
-msgid "%s felt the electrifying air of %s's combo"
-msgstr ""
+#: qcsrc/menu/xonotic/serverlist.c:519
+msgid "Players"
+msgstr "Pelaajat"
 
-#: qcsrc/server/w_electro.qc:521
-#, c-format
-msgid "%s got too close to %s's blue beam"
+#: qcsrc/menu/xonotic/maplist.c:278
+msgid ""
+"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n"
 msgstr ""
+"Höh? Tätä ei voida pelata (m on NULL). Uudelleensuodatetaan jottei vastaava enää toistuisi, anteeksi häiriö.\n"
 
-#: qcsrc/server/w_electro.qc:523
+#: qcsrc/menu/xonotic/maplist.c:286
 #, c-format
-msgid "%s was blasted by %s's blue beam"
-msgstr ""
-
-#: qcsrc/server/w_fireball.qc:2
-#, fuzzy
-msgid "Fireball"
-msgstr "Nexpallo (Nexball)"
+msgid "%s's Xonotic Server"
+msgstr "%s Xonotic-palvelin"
 
-#: qcsrc/server/w_fireball.qc:392
-#, c-format
-msgid "%s forgot about some firemine"
+#: qcsrc/menu/xonotic/maplist.c:291
+msgid ""
+"Huh? Can't play this (invalid game type). Refiltering so this won't happen "
+"again.\n"
 msgstr ""
+"Höh? Tätä ei voida pelata (epäkelpo pelityyppi). Uudelleensuodatetaan jottei "
+"vastaava enää toistuisi.\n"
 
-#: qcsrc/server/w_fireball.qc:394 qcsrc/server/w_hlac.qc:223
-#, c-format
-msgid "%s should have used a smaller gun"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4
+msgid "Demo"
+msgstr "Demo"
 
-#: qcsrc/server/w_fireball.qc:401
-#, c-format
-msgid "%s tried to catch %s's firemine"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28
+msgid "Record demos while playing"
+msgstr "Tallenna demoja pelin aikana"
 
-#: qcsrc/server/w_fireball.qc:403
-#, c-format
-msgid "%s fatefully ignored %s's firemine"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43
+msgid "Timedemo"
+msgstr "Aikademo"
 
-#: qcsrc/server/w_fireball.qc:410
-#, c-format
-msgid "%s could not hide from %s's fireball"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4
+msgid "Powerups Panel"
+msgstr "Tehonlisäyspaneeli"
 
-#: qcsrc/server/w_fireball.qc:412
-#, c-format
-msgid "%s saw the pretty lights of %s's fireball"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22
+msgid "Enable status bar"
+msgstr "Ota tilapalkki käyttöön"
 
-#: qcsrc/server/w_fireball.qc:415
-#, c-format
-msgid "%s got too close to %s's fireball"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24
+msgid "Status bar alignment:"
+msgstr "Tilapalkin kohdistus:"
 
-#: qcsrc/server/w_fireball.qc:417
-#, c-format
-msgid "%s tasted %s's fireball"
-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"
+msgstr "Sisäänpäin"
 
-#: qcsrc/server/w_grenadelauncher.qc:2
-msgid "Mortar"
-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"
+msgstr "Ulospäin"
 
-#: qcsrc/server/w_grenadelauncher.qc:357
-#, c-format
-msgid "%s tried out his own grenade"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37
+msgid "Icon alignment:"
+msgstr "Kuvakkeen kohdistus:"
 
-#: qcsrc/server/w_grenadelauncher.qc:359
-#, c-format
-msgid "%s detonated"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45
+msgid "Flip strength and shield positions"
+msgstr "Käännä voimakkuuden ja suojauksen sijainnit"
 
-#: qcsrc/server/w_grenadelauncher.qc:365
-#, c-format
-msgid "%s didn't see %s's grenade"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:27
+msgid "Master:"
+msgstr "Pääkanava:"
 
-#: qcsrc/server/w_grenadelauncher.qc:367
-#, c-format
-msgid "%s almost dodged %s's grenade"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:33
+msgid "Music:"
+msgstr "Musiikki:"
 
-#: qcsrc/server/w_grenadelauncher.qc:369
-#, c-format
-msgid "%s ate %s's grenade"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:40
+msgid "VOL^Ambient:"
+msgstr "VOL^Ympäristö:"
 
-#: qcsrc/server/w_hagar.qc:2
-msgid "Hagar"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:48
+msgid "Info:"
+msgstr "Tiedoitukset:"
 
-#: qcsrc/server/w_hagar.qc:185 qcsrc/server/w_seeker.qc:523
-#, c-format
-msgid "%s played with tiny rockets"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:57
+msgid "Items:"
+msgstr "Esineet:"
 
-#: qcsrc/server/w_hagar.qc:189
-#, c-format
-msgid "%s hoped %s's missiles wouldn't bounce"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:65
+msgid "Pain:"
+msgstr "Kipu:"
 
-#: qcsrc/server/w_hagar.qc:191
-#, c-format
-msgid "%s was pummeled by %s"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:73
+msgid "Player:"
+msgstr "Pelaaja:"
 
-#: qcsrc/server/w_hlac.qc:2
-msgid "Heavy Laser Assault Cannon"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:81
+msgid "Shots:"
+msgstr "Laukaukset:"
 
-#: qcsrc/server/w_hlac.qc:225
-#, c-format
-msgid "%s was cut down by %s"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:88
+msgid "Voice:"
+msgstr "Puhe:"
 
-#: qcsrc/server/w_hook.qc:2
-#, fuzzy
-msgid "Grappling Hook"
-msgstr "Köysi"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:96
+msgid "Weapons:"
+msgstr "Aseet:"
 
-#: qcsrc/server/w_hook.qc:267 qcsrc/server/w_minstanex.qc:257
-#: qcsrc/server/w_nex.qc:224 qcsrc/server/w_porto.qc:293
-#: qcsrc/server/w_shotgun.qc:179 qcsrc/server/w_uzi.qc:287
-#, c-format
-msgid "%s did the impossible"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:103
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:161
+msgid "Frequency:"
+msgstr "Taajuus:"
 
-#: qcsrc/server/w_hook.qc:269
-#, c-format
-msgid "%s has run into %s's gravity bomb"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:105
+msgid "8 kHz"
+msgstr "8 kHz"
 
-#: qcsrc/server/w_laser.qc:2
-msgid "Laser"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:106
+msgid "11.025 kHz"
+msgstr "11.025 kHz"
 
-#: qcsrc/server/w_laser.qc:285
-#, c-format
-msgid "%s lasered themself to hell"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:107
+msgid "16 kHz"
+msgstr "16 kHz"
 
-#: qcsrc/server/w_laser.qc:289
-#, c-format
-msgid "%s was cut in half by %s's gauntlet"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:108
+msgid "22.05 kHz"
+msgstr "22.05 Khz"
 
-#: qcsrc/server/w_laser.qc:291
-#, c-format
-msgid "%s was lasered to death by %s"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:109
+msgid "24 kHz"
+msgstr "24 kHz"
 
-#: qcsrc/server/w_minelayer.qc:2
-#, fuzzy
-msgid "Mine Layer"
-msgstr "Yksinpeli"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:110
+msgid "32 kHz"
+msgstr "32 kHz"
 
-#: qcsrc/server/w_minelayer.qc:438 qcsrc/server/w_rocketlauncher.qc:480
-#, c-format
-msgid "%s exploded"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:111
+msgid "44.1 kHz"
+msgstr "44.1 kHz"
 
-#: qcsrc/server/w_minelayer.qc:442
-#, c-format
-msgid "%s got too close to %s's mine"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:112
+msgid "48 kHz"
+msgstr "48 kHz"
 
-#: qcsrc/server/w_minelayer.qc:444
-#, c-format
-msgid "%s almost dodged %s's mine"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:115
+msgid "Channels:"
+msgstr "Kanavat:"
 
-#: qcsrc/server/w_minelayer.qc:446
-#, c-format
-msgid "%s stepped on %s's mine"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:117
+msgid "Mono"
+msgstr "Mono"
 
-#: qcsrc/server/w_minstanex.qc:2
-#, fuzzy
-msgid "MinstaNex"
-msgstr "MinstaGib"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:118
+msgid "Stereo"
+msgstr "Stereo"
 
-#: qcsrc/server/w_minstanex.qc:259 qcsrc/server/w_nex.qc:226
-#, c-format
-msgid "%s has been vaporized by %s"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:119
+msgid "2.1"
+msgstr "2.1"
 
-#: qcsrc/server/w_nex.qc:2
-#, fuzzy
-msgid "Nex"
-msgstr "Nexpallo (Nexball)"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:120
+msgid "4"
+msgstr "4"
 
-#: qcsrc/server/w_porto.qc:2
-msgid "Port-O-Launch"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:121
+msgid "5"
 msgstr ""
 
-#: qcsrc/server/w_porto.qc:295
-#, c-format
-msgid "%s felt %s doing the impossible to him"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:122
+msgid "5.1"
+msgstr "5.1"
 
-#: qcsrc/server/w_rocketlauncher.qc:2
-msgid "Rocket Launcher"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:123
+msgid "6.1"
+msgstr "6.1"
 
-#: qcsrc/server/w_rocketlauncher.qc:484
-#, c-format
-msgid "%s got too close to %s's rocket"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:124
+msgid "7.1"
+msgstr "7.1"
 
-#: qcsrc/server/w_rocketlauncher.qc:486
-#, c-format
-msgid "%s almost dodged %s's rocket"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:128
+msgid "Swap Stereo"
+msgstr "Vaihda stereoäänilähteiden paikkaa"
 
-#: qcsrc/server/w_rocketlauncher.qc:488
-#, c-format
-msgid "%s ate %s's rocket"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:132
+msgid "Headphone friendly mode"
+msgstr "Kuulokeystävällinen tila"
 
-#: qcsrc/server/w_seeker.qc:2
-msgid "T.A.G. Seeker"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:136
+msgid "Spatial voices:"
+msgstr "Tilanneäänet:"
 
-#: qcsrc/server/w_seeker.qc:527
-#, c-format
-msgid "%s ran into %s's flac"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:137
+msgid "VOCS^None"
+msgstr "VOCS^Ei mitään"
 
-#: qcsrc/server/w_seeker.qc:529
-#, c-format
-msgid "%s was tagged by %s"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:138
+msgid "VOCS^Taunts"
+msgstr "VOCS^Huudahdukset"
 
-#: qcsrc/server/w_shotgun.qc:2
-#, fuzzy
-msgid "Shotgun"
-msgstr "Laukaukset:"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:139
+msgid "VOCS^All"
+msgstr "VOCS^Kaikki"
 
-#: qcsrc/server/w_shotgun.qc:183
-#, c-format
-msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:142
+msgid "Taunt range:"
+msgstr "Huudahduksen kantama"
 
-#: qcsrc/server/w_shotgun.qc:185
-#, c-format
-msgid "%s was gunned by %s"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:145
+msgid "RNG^Very short"
+msgstr "RNG^Hyvin lyhyt"
 
-#: qcsrc/server/w_sniperrifle.qc:2
-msgid "Sniper Rifle"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:146
+msgid "RNG^Short"
+msgstr "RNG^Lyhyt"
 
-#: qcsrc/server/w_sniperrifle.qc:321
-#, c-format
-msgid "%s shot themself automatically"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:147
+msgid "RNG^Normal"
+msgstr "RNG^Normaali"
 
-#: qcsrc/server/w_sniperrifle.qc:323
-#, c-format
-msgid "%s sniped themself somehow"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:148
+msgid "RNG^Long"
+msgstr "RNG^Pitkä"
 
-#: qcsrc/server/w_sniperrifle.qc:330
-#, c-format
-msgid "%s failed to hide from %s's bullet hail"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:149
+msgid "RNG^Full"
+msgstr "RNG^Täysi"
 
-#: qcsrc/server/w_sniperrifle.qc:332
-#, c-format
-msgid "%s died in %s's bullet hail"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:156
+msgid "Automatic taunts"
+msgstr "Automaattiset huudahdukset"
 
-#: qcsrc/server/w_sniperrifle.qc:339
-#, c-format
-msgid "%s failed to hide from %s's rifle"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:165
+msgid "Time warning:"
+msgstr "Aikavaroitus:"
 
-#: qcsrc/server/w_sniperrifle.qc:344
-#, c-format
-msgid "%s got hit in the head by %s"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:167
+msgid "WRN^None"
+msgstr "WRN^Ei mitään"
 
-#: qcsrc/server/w_sniperrifle.qc:346 qcsrc/server/w_uzi.qc:291
-#, c-format
-msgid "%s was sniped by %s"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:168
+msgid "1 minute"
+msgstr "1 minuutti"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:169
+msgid "5 minutes"
+msgstr "5 minuuttia"
 
-#: qcsrc/server/w_tuba.qc:2
-#, fuzzy, c-format
-msgid "@!#%'n Tuba"
-msgstr "Perkeleen tuubanheitto!"
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:170
+msgid "WRN^Both"
+msgstr "WRN^Molemmat"
 
-#: qcsrc/server/w_tuba.qc:260
-#, c-format
-msgid "%s hurt his own ears with the @!#%%'n Tuba"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:173
+msgid "Hit indicator"
+msgstr "Osumailmaisin"
 
-#: qcsrc/server/w_tuba.qc:264
-#, c-format
-msgid "%s died of %s's great playing on the @!#%%'n Tuba"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:175
+msgid "Menu sounds"
+msgstr "Valikon äänet"
 
-#: qcsrc/server/w_uzi.qc:2
-msgid "Machine Gun"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:4
+msgid "Multiplayer"
+msgstr "Moninpeli"
 
-#: qcsrc/server/w_uzi.qc:293
-#, c-format
-msgid "%s was riddled full of holes by %s"
-msgstr ""
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:18
+msgid "Servers"
+msgstr "Palvelimet"
 
-#~ msgid "%d/%d"
-#~ msgstr "%d/%d"
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:20
+msgid "Demos"
+msgstr "Demot"
 
-#~ msgid ""
-#~ "Please answer a few initial questions to enhance the game experience."
-#~ msgstr ""
-#~ "Ole hyvä ja vastaa muutamaan alustavaan kysymykseen parantaaksesi "
-#~ "pelikokemustasi."
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4
+msgid "Health/Armor Panel"
+msgstr "Elämä/panssaripaneeli"
 
-#~ msgid "Waypoint settings:"
-#~ msgstr "Välimatkojen asetukset:"
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45
+msgid "Flip health and armor positions"
+msgstr "Vaihda elämän ja panssarin paikkaa"
index 72dd5c75b47e584a466d61da29eb0e546a5c26cc..031125cb192a6dc4165899690e82d5fa45fbf387 100644 (file)
@@ -1,21 +1,23 @@
 # Xonotic French Translation.
 # Copyright (C) 2011
 # This file is distributed under the same license as the PACKAGE package.
-# Calinou <hugohachel@gmail.com>, 2011.
 #
-#, fuzzy
+# Calinou <hugohachel@gmail.com>, 2011.
+# Maxime Paradis <taximus.micro@gmail.com>, 2011.
 msgid ""
 msgstr ""
 "Project-Id-Version: Xonotic 0.1preview\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2011-02-07 07:50+0100\n"
-"PO-Revision-Date: 2011-01-18 11:53+0100\t\n"
-"Last-Translator: Calinou <hugohachel@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2011-03-09 15:48-0500\n"
+"Last-Translator: Maxime Paradis <taximus.micro@gmail.com>\n"
+"Language-Team: French <kde-i18n-doc@kde.org>\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.2\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 #: qcsrc/menu/gamecommand.qc:47
 #, c-format
@@ -33,7 +35,7 @@ msgstr "  sync - recharge toutes les variables sur la page actuelle\n"
 #: qcsrc/menu/gamecommand.qc:67
 msgid "  directmenu ITEM - select a menu item as main item\n"
 msgstr ""
-"  directmenu OBJET - séléctionner un objet de menu comme objet principal\n"
+"  directmenu OBJET - sélectionner un objet de menu comme objet principal\n"
 
 #: qcsrc/menu/gamecommand.qc:193
 msgid "error creating curl handle\n"
@@ -68,7 +70,7 @@ msgstr "%d (%s)"
 
 #: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31
 msgid "custom"
-msgstr "personalisé"
+msgstr "personnalisé"
 
 #: qcsrc/menu/menu.qc:29
 #, c-format
@@ -129,7 +131,7 @@ msgid ""
 "player name to get started.  You can change these options later through the "
 "menu system."
 msgstr ""
-"Bienvenue sur Xonotic, veuillez séléctionner votre langue et entrer votre "
+"Bienvenue sur Xonotic, veuillez sélectionner votre langue et entrer votre "
 "pseudonyme pour commencer. Vous pouvez changer ces options plus tard dans "
 "les menus."
 
@@ -304,12 +306,12 @@ msgstr "Panneau désactivé"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22
 msgid "Panel enabled when spectating"
-msgstr "Paneau activé en spectateur"
+msgstr "Panneau activé en spectateur"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23
 #: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23
 msgid "Panel always enabled"
-msgstr "Paneau toujours activé"
+msgstr "Panneau toujours activé"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30
 msgid "Forced aspect:"
@@ -471,7 +473,7 @@ msgstr "Monter la précision"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50
 msgid "Show Ammo"
-msgstr "Montrer barre de monitions"
+msgstr "Montrer barre de munitions"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53
 msgid "Ammo bar color:"
@@ -513,7 +515,7 @@ msgstr "Couleur d'équipe:"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:625
 msgid "Test team color in configure mode"
-msgstr "Affichier la couleur d'équipe en mode configuration"
+msgstr "Afficher la couleur d'équipe en mode configuration"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:628
 msgid "Padding:"
@@ -549,7 +551,7 @@ msgstr "Paramètres grille:"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99
 msgid "Snap panels to grid"
-msgstr "Coller paneaux sur la grille"
+msgstr "Coller panneaux sur la grille"
 
 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102
 msgid "Grid size:"
@@ -658,7 +660,7 @@ msgstr "Expert"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82
 msgid "Pro"
-msgstr "Professionel"
+msgstr "Professionnel"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83
 msgid "Assassin"
@@ -687,11 +689,11 @@ msgstr "Liste de cartes:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111
 msgid "Select all"
-msgstr "Tout séléctionner"
+msgstr "Tout sélectionner"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114
 msgid "Select none"
-msgstr "Ne rien séléctionner"
+msgstr "Ne rien sélectionner"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120
 msgid "Start Multiplayer!"
@@ -1067,11 +1069,11 @@ msgstr "supporté (pas de cryptage)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217
 msgid "requested (will encrypt)"
-msgstr "démandé (cryptage)"
+msgstr "demandé (cryptage)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219
 msgid "requested (won't encrypt)"
-msgstr "démandé (pas de cryptage)"
+msgstr "demandé (pas de cryptage)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223
 msgid "required (can't connect)"
@@ -1194,7 +1196,7 @@ msgstr "TrueAim"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158
 msgid "Enemies"
-msgstr "Enemis"
+msgstr "Ennemis"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161
 msgid "Waypoints setup..."
@@ -1323,7 +1325,7 @@ msgstr "À droite"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53
 msgid "Flip view horizontally"
-msgstr "Vue Mirroir"
+msgstr "Vue Miroir"
 
 #: qcsrc/menu/xonotic/dialog_news.c:4
 msgid "News"
@@ -1392,9 +1394,8 @@ msgid "Music:"
 msgstr "Musique:"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:40
-#, fuzzy
 msgid "VOL^Ambient:"
-msgstr "Ambience:"
+msgstr "Ambiance:"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.c:48
 msgid "Info:"
@@ -1690,7 +1691,7 @@ msgstr "Éviter la compression rapide"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:100
 msgid "Anisotropy:"
-msgstr "Filtrage Anistrope:"
+msgstr "Filtrage Anisotrope:"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:102
 msgid "ANISO^Disabled"
@@ -1746,7 +1747,7 @@ msgstr "Textures relief avancé"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:143
 msgid "Reflections:"
-msgstr "Réflections:"
+msgstr "Réflexions:"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.c:146
 msgid "Blurred"
@@ -1831,7 +1832,7 @@ msgstr "Éditer..."
 
 #: qcsrc/menu/xonotic/dialog_settings_input.c:46
 msgid "Sensitivity:"
-msgstr "Senstitivité:"
+msgstr "Sensibilité:"
 
 #: qcsrc/menu/xonotic/dialog_settings_input.c:49
 msgid "UI mouse speed:"
@@ -1861,7 +1862,7 @@ msgstr "\"ouvrir la console\" ferme aussi la console"
 
 #: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5
 msgid "User defined key bind"
-msgstr "Touche d'éxécution:"
+msgstr "Touche d'exécution:"
 
 #: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42
 msgid "Command when pressed:"
@@ -1869,7 +1870,7 @@ msgstr "Commande quand appuyée:"
 
 #: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45
 msgid "Command when released:"
-msgstr "Commande quand relachée:"
+msgstr "Commande quand relâchée:"
 
 #: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48
 msgid "Save"
@@ -2061,18 +2062,18 @@ msgstr "Plein écran"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:46
 msgid "Vertical Synchronization"
-msgstr "Syncronisation verticale"
+msgstr "Synchronisation verticale"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:49
 msgid "Use OpenGL 2.0 shaders (GLSL)"
-msgstr "Utiliser OpenGL 2.0 (GLSL)"
+msgstr "Utiliser shader OpenGL 2.0 (GLSL)"
 
 #: 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:56
-msgid "Vertex Buffer Objects (VBOs)"ourd
+msgid "Vertex Buffer Objects (VBOs)\"ourd"
 msgstr "Objets en tampon mémoire (VBOs)"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:59
@@ -2093,6 +2094,7 @@ msgid "Vertices and Triangles"
 msgstr "Points et Triangles"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:67
+#, fuzzy
 msgid "Depth first:"
 msgstr "Fixeur profondeur:"
 
@@ -2140,9 +2142,8 @@ msgid "Saturation:"
 msgstr "Saturation:"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:98
-#, fuzzy
 msgid "LIT^Ambient:"
-msgstr "Ambience:"
+msgstr "Ambiance:"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.c:101
 msgid "Intensity:"
@@ -2166,11 +2167,11 @@ msgstr "Gagné"
 
 #: qcsrc/menu/xonotic/dialog_teamselect.c:5
 msgid "Team Selection"
-msgstr "Séléction d'équipe"
+msgstr "Sélection d'équipe"
 
 #: qcsrc/menu/xonotic/dialog_teamselect.c:41
 msgid "join 'best' team (auto-select)"
-msgstr "auto-séléction équipe (recommandé)"
+msgstr "auto-sélection équipe (recommandé)"
 
 #: qcsrc/menu/xonotic/dialog_teamselect.c:45
 msgid "red"
@@ -2286,7 +2287,8 @@ msgstr "A reçu la demande HTTP d'ID invalide %d.\n"
 #: qcsrc/menu/xonotic/util.qc:285
 #, c-format
 msgid "error receiving update notification: status is %d\n"
-msgstr "error pour recevoir la notification de mise à jour: le statut est %d\n"
+msgstr ""
+"erreur pour recevoir la notification de mise à jour: le statut est %d\n"
 
 #: qcsrc/menu/xonotic/util.qc:290
 msgid "error: received HTML instead of an update notification\n"
@@ -2467,7 +2469,7 @@ msgstr "%s s'est fait toucher par la boule plasma de %s"
 #: qcsrc/server/w_electro.qc:519
 #, c-format
 msgid "%s felt the electrifying air of %s's combo"
-msgstr "%s se sent éléctrisé par le combo de %s"
+msgstr "%s se sent électrisé par le combo de %s"
 
 #: qcsrc/server/w_electro.qc:521
 #, c-format
diff --git a/menu.dat.it.po b/menu.dat.it.po
new file mode 100644 (file)
index 0000000..f0baa2b
--- /dev/null
@@ -0,0 +1,2401 @@
+# 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.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Xonotic Menu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-01-18 17:06+0100\n"
+"PO-Revision-Date: 2011-01-21 22:41+0100\n"
+"Last-Translator: Felice Sallustio <fel.sallustio@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+
+#: qcsrc/menu/menu.qc:29
+#, c-format
+msgid "^4MQC Build information: %s\n"
+msgstr "^4MQC Build information: %s\n"
+
+#: qcsrc/menu/item/slider.c:64
+#, c-format
+msgid "%d (%s)"
+msgstr "%d (%s)"
+
+#: qcsrc/menu/item/label.c:63
+#, c-format
+msgid "NOTE: label text %s too wide for label, condensed by factor %f\n"
+msgstr "NOTA: l'etichetta %s è troppo grande, compensato di un fattore %f\n"
+
+#: qcsrc/menu/item/textslider.c:29
+#: qcsrc/menu/item/textslider.c:31
+msgid "custom"
+msgstr "personalizzato"
+
+#: qcsrc/menu/item/gecko.c:49
+msgid "Browser not initialized!"
+msgstr "Browser non inizializzato!"
+
+#: qcsrc/menu/item/listbox.c:300
+#, c-format
+msgid "Item %d"
+msgstr "Oggetto %d"
+
+#: qcsrc/menu/gamecommand.qc:47
+#, c-format
+msgid "error: status is %d\n"
+msgstr "errore: lo stato è impostato su %d\n"
+
+#: qcsrc/menu/gamecommand.qc:65
+msgid "Usage: menu_cmd command..., where possible commands are:\n"
+msgstr "Uso: menu_cmd command..., dove è possibile i comandi sono:\n"
+
+#: qcsrc/menu/gamecommand.qc:66
+msgid "  sync - reloads all cvars on the current menu page\n"
+msgstr "sync - ricarica tutti i cvar sulla corrente pagina\n"
+
+#: qcsrc/menu/gamecommand.qc:67
+msgid "  directmenu ITEM - select a menu item as main item\n"
+msgstr "directmenu ITEM - seleziona un oggetto come il principale\n"
+
+#: qcsrc/menu/gamecommand.qc:193
+msgid "error creating curl handle\n"
+msgstr "error creating curl handle\n"
+
+#: qcsrc/menu/gamecommand.qc:239
+msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n"
+msgstr "Comando non valido. Per una lista dei comandi supportati, prova menu_cmd help.\n"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:4
+#: qcsrc/menu/xonotic/dialog_settings.c:19
+msgid "Video"
+msgstr "Video"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:26
+msgid "Resolution:"
+msgstr "Risoluzione:"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:29
+msgid "Font/UI size:"
+msgstr "Dimensioni caratteri:"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:31
+msgid "SZ^Unreadable"
+msgstr "SZ^Illeggibile"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:32
+msgid "SZ^Tiny"
+msgstr "SZ^Minuscolo"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:33
+msgid "SZ^Little"
+msgstr "SZ^Molto piccolo"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:34
+msgid "SZ^Small"
+msgstr "SZ^Piccolo"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:35
+msgid "SZ^Medium"
+msgstr "SZ^Medio"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:36
+msgid "SZ^Large"
+msgstr "SZ^Largo"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:37
+msgid "SZ^Huge"
+msgstr "SZ^Enorme"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:38
+msgid "SZ^Gigantic"
+msgstr "SZ^Gigante"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:39
+msgid "SZ^Colossal"
+msgstr "SZ^Colossale"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:42
+msgid "Color depth:"
+msgstr "Profondità colore:"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:45
+msgid "Full screen"
+msgstr "Schermo intero"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:46
+msgid "Vertical Synchronization"
+msgstr "Sincronizzazione Verticale"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:49
+msgid "Use OpenGL 2.0 shaders (GLSL)"
+msgstr "Usa gli shader OpenGL 2.0 (GLSL)"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:52
+msgid "Use Occlusion Queries"
+msgstr "Usa le Occlusion Queries"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:55
+msgid "Vertex Buffer Objects (VBOs)"
+msgstr "Vertex Buffer Objects (VBOs)"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:58
+msgid "VBO^Off"
+msgstr "VBO^Off"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:59
+msgid "Vertices, some Tris (compatible)"
+msgstr "Vertici, alcuni Triangoli (compatibile)"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:62
+msgid "Vertices"
+msgstr "Vertici"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:63
+msgid "Vertices and Triangles"
+msgstr "Vertici e Triangoli"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:65
+msgid "Depth first:"
+msgstr "Profondità primaria:"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:67
+msgid "DF^Disabled"
+msgstr "DF^Disabilitata"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:68
+msgid "DF^World"
+msgstr "DF^Globale"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:69
+msgid "DF^All"
+msgstr "DF^Tutto"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:73
+msgid "Disable multithreaded OpenGL"
+msgstr "Disabilita il multithreading OpenGL"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:75
+msgid "Wait for GPU to finish each frame"
+msgstr "Attendi che la GPU finisca di elaborare ogni frame"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:78
+msgid "Brightness:"
+msgstr "Luminosità:"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:81
+msgid "Contrast:"
+msgstr "Contrasto:"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:84
+msgid "Gamma:"
+msgstr "Gamma:"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:87
+msgid "Contrast boost:"
+msgstr "Boost contrasto:"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:90
+msgid "Saturation:"
+msgstr "Saturazione:"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:95
+msgid "Use GLSL to handle color control"
+msgstr "Usa i GLSL per trattare il controllo del colore"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:99
+msgid "LIT^Ambient:"
+msgstr "LIT^Ambiente"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:102
+msgid "Intensity:"
+msgstr "Intensità:"
+
+#: qcsrc/menu/xonotic/dialog_settings_video.c:106
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:30
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:41
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:194
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:193
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:178
+msgid "Apply immediately"
+msgstr "Applica immediatamente"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4
+msgid "Panel HUD Setup"
+msgstr "Setup del Panel HUD"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21
+msgid "Panel background defaults:"
+msgstr "Sfondo del pannello predefinito:"
+
+#: 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:602
+#: qcsrc/menu/xonotic/util.qc:618
+#: qcsrc/menu/xonotic/util.qc:635
+msgid "Disable"
+msgstr "Disabilita"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77
+#: qcsrc/menu/xonotic/util.qc:607
+msgid "Color:"
+msgstr "Colore:"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35
+#: qcsrc/menu/xonotic/util.qc:615
+msgid "Border size:"
+msgstr "Dimensioni del bordo:"
+
+#: 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:151
+#: qcsrc/menu/xonotic/util.qc:624
+msgid "Alpha:"
+msgstr "Opacità:"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89
+msgid "Team color:"
+msgstr "Colore team:"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58
+#: qcsrc/menu/xonotic/util.qc:641
+msgid "Test team color in configure mode"
+msgstr "Testa il colore del team in modalità di configurazione"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61
+#: qcsrc/menu/xonotic/util.qc:644
+msgid "Padding:"
+msgstr "Riempimento:"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68
+msgid "HUD Dock:"
+msgstr "Bordo dell'HUD:"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70
+msgid "DOCK^Disabled"
+msgstr "DOCK^Disabilitato"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71
+msgid "DOCK^Small"
+msgstr "DOCK^Piccolo"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72
+msgid "DOCK^Medium"
+msgstr "DOCK^Medio"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73
+msgid "DOCK^Large"
+msgstr "DOCK^Largo"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96
+msgid "Grid settings:"
+msgstr "Impostazioni griglia:"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99
+msgid "Snap panels to grid"
+msgstr "Incolla i pannelli alla griglia"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102
+msgid "Grid size:"
+msgstr "Dimensioni griglia:"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:103
+msgid "X:"
+msgstr "X:"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:109
+msgid "Y:"
+msgstr "Y:"
+
+#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:117
+msgid "Exit setup"
+msgstr "Esci dal setup"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4
+msgid "Vote Panel"
+msgstr "Pannello di voto"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22
+msgid "Alpha after voting:"
+msgstr "Opacità dopo aver votato:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4
+msgid "Mod Icons Panel"
+msgstr "Pannello delle icone delle Mod"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4
+msgid "Info Messages Panel"
+msgstr "Pannello delle informazioni"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22
+msgid "Info messages:"
+msgstr "Informazioni"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25
+msgid "Flip align"
+msgstr "Cambiare allineazione"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5
+msgid "Waypoints"
+msgstr "Waypoint"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23
+msgid "Waypoint settings:"
+msgstr "Impostazioni dei Waypoint"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26
+msgid "Show base waypoints"
+msgstr "Mostra i Waypoint della base"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29
+msgid "Waypoint scale:"
+msgstr "Gradazioni dei Waypoint:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34
+msgid "Waypoint alpha:"
+msgstr "Opacità dei Waypoint"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39
+msgid "Show names:"
+msgstr "Mostra nomi:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26
+msgid "Never"
+msgstr "Mai"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42
+msgid "Teammates"
+msgstr "Compagni del team"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43
+msgid "All players"
+msgstr "Tutti i giocatori"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:46
+#: qcsrc/menu/xonotic/dialog_credits.c:21
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:59
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:269
+#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:82
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:55
+msgid "OK"
+msgstr "OK"
+
+#: qcsrc/menu/xonotic/dialog_credits.c:5
+msgid "Credits"
+msgstr "Crediti"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5
+msgid "Advanced settings"
+msgstr "Impostazioni avanzate"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23
+msgid "Cvar filter:"
+msgstr "Filtro dei Cvar:"
+
+#: 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"
+msgstr "Pulisci"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34
+msgid "Setting:"
+msgstr "Impostazioni:"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:248
+msgid "Type:"
+msgstr "Tipo:"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42
+msgid "Value:"
+msgstr "Valori:"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54
+msgid "Description:"
+msgstr "Descrizione:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4
+msgid "Pressed Keys Panel"
+msgstr "Pannello dei tasto premuti"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21
+msgid "Panel disabled"
+msgstr "Pannello disabilitato"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22
+msgid "Panel enabled when spectating"
+msgstr "Pannello abilitato in modalità spettatore"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23
+msgid "Panel always enabled"
+msgstr "Pannello sempre abilitato"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30
+msgid "Forced aspect:"
+msgstr "Forza aspetto:"
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:5
+msgid "Team Selection"
+msgstr "Selezione team"
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:41
+msgid "join 'best' team (auto-select)"
+msgstr "entra nel 'miglior' team (auto-selezione)"
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:45
+msgid "red"
+msgstr "rosso"
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:46
+msgid "blue"
+msgstr "blu"
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:47
+msgid "yellow"
+msgstr "giallo"
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:48
+msgid "pink"
+msgstr "rosa"
+
+#: qcsrc/menu/xonotic/dialog_teamselect.c:51
+msgid "spectate"
+msgstr "spettatore"
+
+#: qcsrc/menu/xonotic/slider_resolution.c:65
+#, c-format
+msgid "%dx%d"
+msgstr "%dx%d"
+
+#: qcsrc/menu/xonotic/dialog_settings.c:4
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: qcsrc/menu/xonotic/dialog_settings.c:18
+#: qcsrc/menu/xonotic/dialog_settings_input.c:4
+msgid "Input"
+msgstr "Comandi"
+
+#: qcsrc/menu/xonotic/dialog_settings.c:20
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:4
+msgid "Effects"
+msgstr "Effetti"
+
+#: qcsrc/menu/xonotic/dialog_settings.c:21
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:4
+msgid "Audio"
+msgstr "Audio"
+
+#: qcsrc/menu/xonotic/dialog_settings.c:22
+#: qcsrc/menu/xonotic/dialog_settings_network.c:4
+msgid "Network"
+msgstr "Rete"
+
+#: qcsrc/menu/xonotic/dialog_settings.c:23
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:4
+msgid "Misc"
+msgstr "Altro"
+
+#: qcsrc/menu/xonotic/dialog_firstrun.c:4
+msgid "Welcome"
+msgstr "Benvenuti"
+
+#: qcsrc/menu/xonotic/dialog_firstrun.c:32
+msgid "Please answer a few initial questions to enhance the game experience."
+msgstr "Per favore rispondi a poche domande iniziali per migliorare l'esperienza di gioco"
+
+#: qcsrc/menu/xonotic/dialog_firstrun.c:36
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:35
+msgid "Text language:"
+msgstr "Lingua:"
+
+#: qcsrc/menu/xonotic/dialog_firstrun.c:45
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:39
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:40
+msgid "Name:"
+msgstr "Nome:"
+
+#: qcsrc/menu/xonotic/dialog_firstrun.c:67
+msgid "Save settings"
+msgstr "Salva impostazioni"
+
+#: qcsrc/menu/xonotic/campaign.c:284
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:66
+msgid "???"
+msgstr "???"
+
+#: qcsrc/menu/xonotic/campaign.c:285
+#, c-format
+msgid "Level %d: %s"
+msgstr "Livello %d: %s"
+
+#: qcsrc/menu/xonotic/dialog_settings_input.c:26
+msgid "Key bindings:"
+msgstr "Tasti \"bind\":"
+
+#: qcsrc/menu/xonotic/dialog_settings_input.c:31
+msgid "Change key..."
+msgstr "Cambia tasto..."
+
+#: qcsrc/menu/xonotic/dialog_settings_input.c:35
+msgid "Edit..."
+msgstr "Modifica..."
+
+#: qcsrc/menu/xonotic/dialog_settings_input.c:46
+msgid "Sensitivity:"
+msgstr "Sensibilità:"
+
+#: qcsrc/menu/xonotic/dialog_settings_input.c:49
+msgid "UI mouse speed:"
+msgstr "Velocità UI mouse:"
+
+#: qcsrc/menu/xonotic/dialog_settings_input.c:52
+msgid "Mouse filter"
+msgstr "Filtro mouse"
+
+#: qcsrc/menu/xonotic/dialog_settings_input.c:54
+msgid "Invert mouse"
+msgstr "Inverti mouse"
+
+#: qcsrc/menu/xonotic/dialog_settings_input.c:57
+#: qcsrc/menu/xonotic/dialog_settings_input.c:59
+msgid "Use joystick input"
+msgstr "Usa joystick"
+
+#: qcsrc/menu/xonotic/dialog_settings_input.c:62
+#: qcsrc/menu/xonotic/dialog_settings_input.c:64
+msgid "Turn off OS mouse acceleration"
+msgstr "Disattiva l'accelerazione mouse dell'OS"
+
+#: qcsrc/menu/xonotic/dialog_settings_input.c:66
+msgid "\"enter console\" also closes"
+msgstr "\"apri console\" chiude anche"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4
+msgid "Weapons Panel"
+msgstr "Pannello armi"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24
+msgid "Fade out after:"
+msgstr "Dissolvi dopo:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:28
+#, c-format
+msgid "%ds"
+msgstr "%ds"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:32
+msgid "Fade effect:"
+msgstr "Effetto dissolvenza:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33
+msgid "EF^None"
+msgstr "EF^Nessuno"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35
+msgid "Slide"
+msgstr "Slide"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37
+msgid "Alpha"
+msgstr "Opacità"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40
+msgid "Weapon icons:"
+msgstr "Icone armi:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43
+msgid "Show weapon ID as:"
+msgstr "Mostra ID arma come:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44
+msgid "SHOWAS^None"
+msgstr "SHOWAS^Nessuno"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45
+msgid "Number"
+msgstr "Numero"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46
+msgid "Bind"
+msgstr "Bind"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49
+msgid "Show Accuracy"
+msgstr "Mostra precisione"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50
+msgid "Show Ammo"
+msgstr "Mostra munizioni"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53
+msgid "Ammo bar color:"
+msgstr "Colore barra munizioni:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59
+msgid "Ammo bar alpha:"
+msgstr "Opacità barra munizioni:"
+
+#: qcsrc/menu/xonotic/mainwindow.c:35
+#: qcsrc/menu/xonotic/mainwindow.c:38
+msgid "Do not press this button again!"
+msgstr "Non premere questo tasto di nuovo!"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4
+msgid "Engine Info Panel"
+msgstr "Pannello info motore"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22
+msgid "Engine info:"
+msgstr "Info motore:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25
+msgid "Use an averaging algorithm for fps"
+msgstr "Usa un algoritmo mediano per gli fps"
+
+#: qcsrc/menu/xonotic/dialog_quit.c:4
+msgid "Quit"
+msgstr "Esci"
+
+#: qcsrc/menu/xonotic/dialog_quit.c:17
+msgid "Are you sure you want to quit?"
+msgstr "Sei sicuro di voler uscire?"
+
+#: qcsrc/menu/xonotic/dialog_quit.c:20
+msgid "Yes"
+msgstr "Si"
+
+#: qcsrc/menu/xonotic/dialog_quit.c:21
+msgid "No"
+msgstr "No"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4
+msgid "Join"
+msgstr "Entra"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32
+msgid "Filter:"
+msgstr "Filtro:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36
+msgid "SRVS^Empty"
+msgstr "SRVS^Vuoti"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40
+msgid "SRVS^Full"
+msgstr "SRVS^Pieni"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44
+msgid "Pause"
+msgstr "In pausa"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56
+msgid "Address:"
+msgstr "Indirizzo:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:65
+msgid "Info..."
+msgstr "Info..."
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311
+msgid "Join!"
+msgstr "Entra!"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4
+msgid "Notification Panel"
+msgstr "Pannello di notifica"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22
+msgid "Notifications:"
+msgstr "Notifiche:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25
+msgid "Also print notifications to the console"
+msgstr "Mostra anche le notifiche sulla console"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28
+msgid "Flip notify order"
+msgstr "Cambia ordine delle notifiche"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31
+msgid "Entry lifetime:"
+msgstr "Tempo di transizione:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35
+msgid "Entry fadetime:"
+msgstr "Tempo di dissolvenza:"
+
+#: qcsrc/menu/xonotic/util.qh:49
+msgid "Enable panel"
+msgstr "Abilita pannello"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:26
+msgid "Menu skins:"
+msgstr "Tema del menu:"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:47
+msgid "Show current time"
+msgstr "Mostra orario corrente"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:49
+msgid "Show current date"
+msgstr "Mostra data corrente"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:51
+msgid "Show frames per second"
+msgstr "Mostra fotogrammi al secondo"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:53
+msgid "Speedometer"
+msgstr "Tachimetro"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:56
+msgid "qu/s (hidden)"
+msgstr "qu/s (nascosto)"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:58
+msgid "qu/s"
+msgstr "qu/s"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:60
+msgid "m/s"
+msgstr "m/s"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:64
+msgid "km/h"
+msgstr "km/h"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:66
+msgid "mph"
+msgstr "mph"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:68
+msgid "knots"
+msgstr "nodi"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:71
+msgid "Show accelerometer"
+msgstr "Mostra accelerometro"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:74
+msgid "Accelerometer scale:"
+msgstr "Scala accelerometro:"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:80
+msgid "Minimize input latency"
+msgstr "Minimizza latenza in entrata"
+
+#: qcsrc/menu/xonotic/dialog_settings_misc.c:84
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98
+msgid "Advanced settings..."
+msgstr "Impostazioni avanzate..."
+
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:4
+msgid "Singleplayer"
+msgstr "Giocatore singolo"
+
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:59
+msgid "Instant action! (random map with bots)"
+msgstr "Inizia ora! (mappe casuale con bot)"
+
+#: qcsrc/menu/xonotic/dialog_singleplayer.c:80
+msgid "Start Singleplayer!"
+msgstr "Inizia modalità Giocatore Singolo!"
+
+#: qcsrc/menu/xonotic/skinlist.c:105
+msgid "<TITLE>"
+msgstr "<TITLE>"
+
+#: qcsrc/menu/xonotic/skinlist.c:106
+msgid "<AUTHOR>"
+msgstr "<AUTHOR>"
+
+#: qcsrc/menu/xonotic/skinlist.c:163
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: qcsrc/menu/xonotic/dialog_news.c:4
+msgid "News"
+msgstr "Notizie"
+
+#: qcsrc/menu/xonotic/dialog_news.c:18
+msgid "http://www.xonotic.org/team/blog/"
+msgstr "http://www.xonotic.org/team/blog/"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5
+msgid "Server Information"
+msgstr "Informazioni del server"
+
+#: 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:177
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193
+msgid "N/A"
+msgstr "N/A"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:151
+#, c-format
+msgid "%d/%d"
+msgstr "%d/%d"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166
+msgid "Official settings"
+msgstr "Impostazioni originali"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166
+#, c-format
+msgid "%d modified settings"
+msgstr "%d impostazioni modificate"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191
+msgid "N/A (can't connect)"
+msgstr "N/A (impossibile connettersi)"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199
+msgid "not supported (can't connect)"
+msgstr "non supportato (impossibile connettersi)"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:201
+msgid "not supported (won't encrypt)"
+msgstr "non supportato (non criptato)"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205
+msgid "supported (will encrypt)"
+msgstr "supportato (criptato)"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207
+msgid "supported (won't encrypt)"
+msgstr "supportato (non criptato)"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211
+msgid "requested (will encrypt)"
+msgstr "richiesto (criptato)"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213
+msgid "requested (won't encrypt)"
+msgstr "richiesto (non criptato)"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217
+msgid "required (can't connect)"
+msgstr "richiesto (impossibile connettersi)"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219
+msgid "required (will encrypt)"
+msgstr "richiesto (criptato)"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:240
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263
+msgid "Players:"
+msgstr "Giocatori:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:253
+msgid "Map:"
+msgstr "Mappa:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258
+msgid "Gameplay:"
+msgstr "Gameplay:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268
+msgid "Bots:"
+msgstr "Bot:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273
+msgid "Mod:"
+msgstr "Mod:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278
+msgid "Version:"
+msgstr "Versione:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283
+msgid "Ping:"
+msgstr "Ping:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289
+msgid "CA:"
+msgstr "CA:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295
+msgid "Key:"
+msgstr "Chiave:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301
+msgid "Encryption:"
+msgstr "Crittografia:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119
+msgid "Close"
+msgstr "Chiudi"
+
+#: qcsrc/menu/xonotic/slider_decibels.c:50
+msgid "VOL^OFF"
+msgstr "VOL^OFF"
+
+#: qcsrc/menu/xonotic/slider_decibels.c:52
+msgid "VOL^MAX"
+msgstr "VOL^MAX"
+
+#: qcsrc/menu/xonotic/slider_decibels.c:53
+#, c-format
+msgid "%s dB"
+msgstr "%s dB"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7
+msgid "Mutators"
+msgstr "Mutatori"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33
+msgid "All Weapons Arena"
+msgstr "Arena con tutte le armi"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35
+msgid "Most Weapons Arena"
+msgstr "Arena con la maggior parte delle armi"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56
+#, c-format
+msgid "%s Arena"
+msgstr "%s Arena"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167
+msgid "Dodging"
+msgstr "Dodging"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:250
+msgid "MinstaGib"
+msgstr "MinstaGib"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:253
+msgid "NIX"
+msgstr "NIX"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:74
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:205
+msgid "Rocket Flying"
+msgstr "Rocket Flying"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264
+msgid "No start weapons"
+msgstr "Senza armi all'inizio"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189
+msgid "Low gravity"
+msgstr "Bassa gravità"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170
+msgid "Cloaked"
+msgstr "Cloaked"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84
+msgid "Hook"
+msgstr "Hook"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173
+msgid "Midair"
+msgstr "A mezz'aria"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176
+msgid "Vampire"
+msgstr "Vampiro"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:90
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208
+msgid "Piñata"
+msgstr "Piñata"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:92
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:211
+msgid "Weapons stay"
+msgstr "Solo un'arma"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180
+msgid "Blood loss"
+msgstr "Perdita di sangue"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202
+msgid "Jet pack"
+msgstr "Jet pack"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98
+msgid "MUT^None"
+msgstr "MUT^Nessuno"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164
+msgid "Gameplay mutators:"
+msgstr "Mutatori di gioco:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196
+msgid "Weapon & item mutators:"
+msgstr "Mutatori di armi ed oggetti:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199
+msgid "Grappling hook"
+msgstr "Grappling hook"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215
+msgid "Weapon arenas:"
+msgstr "Arene di armi:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218
+msgid "Regular (no arena)"
+msgstr "Regolare (no arena)"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256
+msgid "with laser"
+msgstr "con laser"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247
+msgid "Special arenas:"
+msgstr "Arene speciali:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260
+msgid "Most weapons"
+msgstr "La maggior parte delle armi"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4
+msgid "Radar Panel"
+msgstr "Pannello Radar"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22
+msgid "Panel enabled in teamgames"
+msgstr "Pannello abilitato nei teamgames"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29
+msgid "Radar:"
+msgstr "Radar:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36
+msgid "Rotation:"
+msgstr "Rotazione:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38
+msgid "Forward"
+msgstr "Avanti"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39
+msgid "West"
+msgstr "Ovest"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40
+msgid "South"
+msgstr "Sud"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41
+msgid "East"
+msgstr "Est"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42
+msgid "North"
+msgstr "Nord"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46
+msgid "Scale:"
+msgstr "Scala:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50
+msgid "Zoom mode:"
+msgstr "Modalità zoom:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52
+msgid "Zoomed in"
+msgstr "Aumenta zoom"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53
+msgid "Zoomed out"
+msgstr "Diminuisci zoom"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54
+msgid "Always zoomed"
+msgstr "Sempre zoomato"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55
+msgid "Never zoomed"
+msgstr "Mai zoomato"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4
+msgid "Race Timer Panel"
+msgstr "Pannello tempi Corsa"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4
+msgid "Chat Panel"
+msgstr "Pannello Chat"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22
+msgid "Chat entries:"
+msgstr "Chat entries:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25
+msgid "Chat size:"
+msgstr "Dimensioni chat:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29
+msgid "Chat lifetime:"
+msgstr "Durata chat:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33
+msgid "Chat beep sound"
+msgstr "Suoni chat"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:19
+msgid "Create"
+msgstr "Crea"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35
+msgid "Game type:"
+msgstr "Tipo di gioco:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47
+msgid "Match settings:"
+msgstr "Impostazioni partita:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50
+msgid "Time limit:"
+msgstr "Limite di tempo:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62
+msgid "Use map specified default"
+msgstr "Usa le impostazioni di default della mappa"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:57
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:156
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:157
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:158
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:162
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:164
+msgid "Point limit:"
+msgstr "Limiti di punteggio:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65
+msgid "Player slots:"
+msgstr "Slot di giocatori:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68
+msgid "Number of bots:"
+msgstr "Numero di bot:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72
+msgid "Bot skill:"
+msgstr "Abilità bot:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75
+msgid "Botlike"
+msgstr "\"Botlike\""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76
+msgid "Beginner"
+msgstr "Principiante"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77
+msgid "You will win"
+msgstr "Vincerai"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78
+msgid "You can win"
+msgstr "Puoi vincere"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79
+msgid "You might win"
+msgstr "Potresti vincere"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80
+msgid "Advanced"
+msgstr "Avanzato"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81
+msgid "Expert"
+msgstr "Esperto"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82
+msgid "Pro"
+msgstr "Pro"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83
+msgid "Assassin"
+msgstr "Assassino"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84
+msgid "Unhuman"
+msgstr "Inumano"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85
+msgid "Godlike"
+msgstr "\"Godlike\""
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89
+msgid "Mutators..."
+msgstr "Mutatori..."
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105
+msgid "Map list:"
+msgstr "Lista delle mappe:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111
+msgid "Select all"
+msgstr "Seleziona tutto"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114
+msgid "Select none"
+msgstr "Deseleziona tutto"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120
+msgid "Start Multiplayer!"
+msgstr "Inizia Multiplayer!"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155
+msgid "Capture limit:"
+msgstr "Limiti catture:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159
+msgid "Lives:"
+msgstr "Vite:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160
+msgid "Laps:"
+msgstr "Giri:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161
+msgid "Goals:"
+msgstr "Goal:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165
+msgid "Frag limit:"
+msgstr "Limiti di frag:"
+
+#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4
+msgid "Winner"
+msgstr "Vincitore"
+
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5
+msgid "User defined key bind"
+msgstr "Tasti \"bind\" definiti dall'utente"
+
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42
+msgid "Command when pressed:"
+msgstr "Comando mentre premuto:"
+
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45
+msgid "Command when released:"
+msgstr "Comando mentre rilasciato:"
+
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48
+msgid "Save"
+msgstr "Salva"
+
+#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51
+msgid "Cancel"
+msgstr "Annulla"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:21
+msgid "Player Setup"
+msgstr "Setup giocatore"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63
+msgid "Model:"
+msgstr "Modello:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88
+msgid "Field of view:"
+msgstr "Campo di vista:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92
+msgid "View bobbing:"
+msgstr "View bobbing:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96
+msgid "Zoom factor:"
+msgstr "Moltiplicatore zoom:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100
+msgid "Zoom speed:"
+msgstr "Velocità zoom:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103
+msgid "Weapon settings..."
+msgstr "Impostazioni arma..."
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110
+msgid "Crosshair:"
+msgstr "Mirino:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143
+msgid "Per weapon"
+msgstr "Per ogni arma"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130
+msgid "Crosshair size:"
+msgstr "Dimensioni mirino:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134
+msgid "Crosshair alpha:"
+msgstr "Opacità mirino:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138
+msgid "Crosshair color:"
+msgstr "Colore mirino:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145
+msgid "Enable center dot"
+msgstr "Abilita puntino al centro"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148
+msgid "Size:"
+msgstr "Dimensioni:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155
+msgid "Hit test:"
+msgstr "Test colpi:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156
+msgid "HTST^None"
+msgstr "HTST^Nessuno"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157
+msgid "TrueAim"
+msgstr "TrueAim"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158
+msgid "Enemies"
+msgstr "Nemici"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161
+msgid "Waypoints setup..."
+msgstr "Setup dei Waypoint..."
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167
+msgid "Enter HUD editor"
+msgstr "Apri HUD editor"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174
+msgid "Force models:"
+msgstr "Forza modelli:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175
+msgid "MDL^None"
+msgstr "MDL^Nessuno"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176
+msgid "MDL^Custom"
+msgstr "MDL^Personalizzaoto"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177
+msgid "MDL^All"
+msgstr "MDL^Tutti"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179
+msgid "Disable gore effects"
+msgstr "Disabilita effetti gore"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181
+msgid "Gibs:"
+msgstr "Gib:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183
+msgid "GIBS^None"
+msgstr "GIBS^Nessuno"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184
+msgid "GIBS^Few"
+msgstr "GIBS^Pochi"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185
+msgid "GIBS^Many"
+msgstr "GIBS^Molti"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186
+msgid "GIBS^Lots"
+msgstr "GIBS^Parecchi"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190
+msgid "Damage splash:"
+msgstr "Damage splash:"
+
+#: qcsrc/menu/xonotic/cvarlist.c:84
+msgid "will be saved to config.cfg"
+msgstr "sarà salvato su config.cfg"
+
+#: qcsrc/menu/xonotic/cvarlist.c:86
+msgid "will not be saved"
+msgstr "non sarà salvato"
+
+#: qcsrc/menu/xonotic/cvarlist.c:88
+msgid "private"
+msgstr "privato"
+
+#: qcsrc/menu/xonotic/cvarlist.c:90
+msgid "engine setting"
+msgstr "impostazioni motore"
+
+#: qcsrc/menu/xonotic/cvarlist.c:92
+msgid "read only"
+msgstr "sola lettura"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4
+msgid "Score Panel"
+msgstr "Pannello punteggio"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4
+msgid "Timer Panel"
+msgstr "Pannello tempo"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22
+msgid "Timer:"
+msgstr "Tempo:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25
+msgid "Show elapsed time"
+msgstr "Mostra tempo trascorso"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5
+msgid "Map Information"
+msgstr "Informazioni mappa"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49
+msgid "Full item placement"
+msgstr "Posizionamento oggetti completo"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49
+msgid "MinstaGib only"
+msgstr "Solo MinstaGib"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78
+msgid "Title:"
+msgstr "Titolo:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84
+msgid "Author:"
+msgstr "Autore:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90
+msgid "Features:"
+msgstr "Caratteristiche:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95
+msgid "Game types:"
+msgstr "Tipi di gioco:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46
+msgid "Play"
+msgstr "Gioca"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6
+msgid "Advanced server settings"
+msgstr "Impostazioni avanzate server"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25
+msgid "Game settings:"
+msgstr "Impostazioni gioco:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28
+msgid "Allow spectating"
+msgstr "Permetti spettatori"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31
+msgid "Spawn shield:"
+msgstr "Protezione dallo Spawn:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36
+msgid "Game speed:"
+msgstr "Velocità gioco:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40
+msgid "Teamplay settings:"
+msgstr "Impostazioni Teamplay:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43
+msgid "Friendly fire scale:"
+msgstr "Fattore di fuoco amico:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47
+msgid "Virtual friendly fire (effect only)"
+msgstr "Penalità virtuale (solo effetto)"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50
+msgid "Friendly fire penalty:"
+msgstr "Penalità fuoco amico:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54
+msgid "Virtual penalty (effect only)"
+msgstr "Penalità virtuale (solo effetto)"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57
+msgid "Teams:"
+msgstr "Team:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66
+msgid "Map voting:"
+msgstr "Voto della mappa:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68
+msgid "No voting"
+msgstr "Nessun voto"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69
+msgid "2 choices"
+msgstr "2 voti"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70
+msgid "3 choices"
+msgstr "3 voti"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71
+msgid "4 choices"
+msgstr "4 voti"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72
+msgid "5 choices"
+msgstr "5 voti"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73
+msgid "6 choices"
+msgstr "6 voti"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74
+msgid "7 choices"
+msgstr "7 voti"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75
+msgid "8 choices"
+msgstr "8 voti"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76
+msgid "9 choices"
+msgstr "9 voti"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79
+msgid "Simple majority wins vcall"
+msgstr "La semplice maggioranza vince il vcall"
+
+#: qcsrc/menu/xonotic/util.qc:263
+#, c-format
+msgid "Received HTTP request data for an invalid id %d.\n"
+msgstr "Ricevuta richiesta HTTP per un invalido id %d.\n"
+
+#: qcsrc/menu/xonotic/util.qc:278
+#, c-format
+msgid "error receiving update notification: status is %d\n"
+msgstr "errore durante notifica aggiornamento: lo stato è impostato su %d\n"
+
+#: qcsrc/menu/xonotic/util.qc:283
+msgid "error: received HTML instead of an update notification\n"
+msgstr "errore: ricevuto HTML invece di una notifica d'aggiornamento\n"
+
+#: qcsrc/menu/xonotic/util.qc:288
+msgid "error: received carriage returns from update notification server\n"
+msgstr "error: received carriage returns from update notification server\n"
+
+#: qcsrc/menu/xonotic/util.qc:309
+#, c-format
+msgid ""
+"Update can be downloaded at:\n"
+"%s\n"
+msgstr ""
+"L'aggiornamento può essere scaricato da:\n"
+"%s\n"
+
+#: qcsrc/menu/xonotic/util.qc:330
+msgid "Autogenerating mapinfo for newly added maps..."
+msgstr "Autogenerando le mapinfo per le nuove mappe..."
+
+#: qcsrc/menu/xonotic/util.qc:425
+#, c-format
+msgid "Update to %s now!"
+msgstr "Aggiorna da %s ora!"
+
+#: qcsrc/menu/xonotic/util.qc:502
+msgid ""
+"^1ERROR: Texture compression is required but not supported.\n"
+"^1Expect visual problems.\n"
+msgstr ""
+"^1ERRORE: La compressione texture è richiesta ma non supportata.\n"
+"^1Previsti problemi di visione.\n"
+
+#: qcsrc/menu/xonotic/util.qc:524
+msgid "Arena"
+msgstr "Arena"
+
+#: qcsrc/menu/xonotic/util.qc:525
+msgid "Assault"
+msgstr "Assalto"
+
+#: qcsrc/menu/xonotic/util.qc:526
+msgid "Capture The Flag"
+msgstr "Capture The Flag"
+
+#: qcsrc/menu/xonotic/util.qc:527
+msgid "Clan Arena"
+msgstr "Clan Arena"
+
+#: qcsrc/menu/xonotic/util.qc:528
+msgid "Deathmatch"
+msgstr "Deathmatch"
+
+#: qcsrc/menu/xonotic/util.qc:529
+msgid "Domination"
+msgstr "Dominazione"
+
+#: qcsrc/menu/xonotic/util.qc:530
+msgid "Freeze Tag"
+msgstr "Freeze Tag"
+
+#: qcsrc/menu/xonotic/util.qc:531
+msgid "Keepaway"
+msgstr "Keepaway"
+
+#: qcsrc/menu/xonotic/util.qc:532
+msgid "Key Hunt"
+msgstr "Key Hunt"
+
+#: qcsrc/menu/xonotic/util.qc:533
+msgid "Last Man Standing"
+msgstr "Last Man Standing"
+
+#: qcsrc/menu/xonotic/util.qc:534
+msgid "Nexball"
+msgstr "Nexball"
+
+#: qcsrc/menu/xonotic/util.qc:535
+msgid "Onslaught"
+msgstr "Onslaught"
+
+#: qcsrc/menu/xonotic/util.qc:536
+msgid "Race"
+msgstr "Corsa"
+
+#: qcsrc/menu/xonotic/util.qc:537
+msgid "Race CTS"
+msgstr "Corsa CTS"
+
+#: qcsrc/menu/xonotic/util.qc:538
+msgid "Runematch"
+msgstr "Runematch"
+
+#: qcsrc/menu/xonotic/util.qc:539
+msgid "Team Deathmatch"
+msgstr "Team Deathmatch"
+
+#: qcsrc/menu/xonotic/util.qc:558
+#, c-format
+msgid "@!#%'n Tuba Throwing"
+msgstr "@!#%'n Tuba Throwing"
+
+#: qcsrc/menu/xonotic/util.qc:599
+msgid "Background:"
+msgstr "Sfondo:"
+
+#: qcsrc/menu/xonotic/util.qc:601
+#: qcsrc/menu/xonotic/util.qc:617
+#: qcsrc/menu/xonotic/util.qc:626
+#: qcsrc/menu/xonotic/util.qc:634
+#: qcsrc/menu/xonotic/util.qc:646
+msgid "Default"
+msgstr "Prefefinito"
+
+#: qcsrc/menu/xonotic/util.qc:612
+msgid "Use default"
+msgstr "Usa predefinito"
+
+#: qcsrc/menu/xonotic/util.qc:632
+msgid "Team Color:"
+msgstr "Colore Team:"
+
+#: qcsrc/menu/xonotic/playermodel.c:174
+msgid "<no model found>"
+msgstr "<no model found>"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4
+msgid "Ammo Panel"
+msgstr "Pannello munizioni"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22
+msgid "Ammunition display:"
+msgstr "Mostra munizioni:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25
+msgid "Show only current ammo type"
+msgstr "Mostra solo il tipo corrente di munizioni"
+
+#: 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
+msgid "Left"
+msgstr "Sinistra"
+
+#: 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
+msgid "Right"
+msgstr "Destra"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6
+msgid "Weapon settings"
+msgstr "Impostazioni arma"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29
+msgid "Weapon priority list:"
+msgstr "Lista priorità armi:"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34
+msgid "Up"
+msgstr "Su"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37
+msgid "Down"
+msgstr "Giù"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41
+msgid "Use priority list for weapon cycling"
+msgstr "Usa la lista di priorità per ciclare le armi"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43
+msgid "Auto switch weapons on pickup"
+msgstr "Cambia automaticamente armi dopo raccolta"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45
+msgid "Draw 1st person weapon model"
+msgstr "Mostra modello arma in 1^ persona"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48
+msgid "Left align"
+msgstr "Allina a sinistra"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50
+msgid "Right align"
+msgstr "Allinea a destra"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53
+msgid "Flip view horizontally"
+msgstr "Volta la vista orizzontalmente"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:38
+msgid "Quality preset:"
+msgstr "Preset qualità:"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:41
+msgid "PRE^OMG!"
+msgstr "PRE^OMG!"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:42
+msgid "PRE^Low"
+msgstr "PRE^Bassa"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:43
+msgid "PRE^Medium"
+msgstr "PRE^Media"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:44
+msgid "PRE^Normal"
+msgstr "PRE^Normale"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:45
+msgid "PRE^High"
+msgstr "PRE^Alta"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:46
+msgid "PRE^Ultra"
+msgstr "PRE^Ultra"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:48
+msgid "PRE^Ultimate"
+msgstr "PRE^Massima"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:52
+msgid "Geometry detail:"
+msgstr "Dettagli geometrici:"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:54
+msgid "DET^Lowest"
+msgstr "DET^Molto Bassi"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:55
+msgid "DET^Low"
+msgstr "DET^Bassi"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:56
+msgid "DET^Normal"
+msgstr "DET^Normali"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:57
+msgid "DET^Good"
+msgstr "DET^Buoni"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:58
+msgid "DET^Best"
+msgstr "DET^Ottimi"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:59
+msgid "DET^Insane"
+msgstr "DET^Bestiali"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:62
+msgid "Antialiasing:"
+msgstr "Antialiasing:"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:64
+msgid "AA^Disabled"
+msgstr "AA^Disabilitato"
+
+#: 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 "Risoluzione texture:"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:73
+msgid "RES^Leet"
+msgstr "RES^Leet"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:74
+msgid "RES^Lowest"
+msgstr "RES^Molto bassa"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:75
+msgid "RES^Low"
+msgstr "RES^Bassa"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:76
+msgid "RES^Normal"
+msgstr "RES^Normale"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:77
+msgid "RES^Good"
+msgstr "RES^Buona"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:78
+msgid "RES^Best"
+msgstr "RES^Ottima"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:91
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:94
+msgid "Avoid lossy texture compression"
+msgstr "Evita compressione lossy delle texture"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:100
+msgid "Anisotropy:"
+msgstr "Filtro Anisotropico:"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:102
+msgid "ANISO^Disabled"
+msgstr "ANISO^Disabilitato"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:105
+msgid "8x"
+msgstr "8x"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:106
+msgid "16x"
+msgstr "16x"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:110
+msgid "Particle quality:"
+msgstr "Qualità dei particolari:"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:113
+msgid "Particle distance:"
+msgstr "Distanza dei particolari:"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:117
+msgid "Decals"
+msgstr "Simboli"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:120
+msgid "Distance:"
+msgstr "Distanza:"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:126
+msgid "Time:"
+msgstr "Tempo:"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:132
+msgid "Use lightmaps"
+msgstr "Usa lightmaps"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:133
+msgid "Deluxe mapping"
+msgstr "Deluxe mapping"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:135
+msgid "Gloss"
+msgstr "Lucidezza"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:138
+msgid "Offset mapping"
+msgstr "Offset mapping"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:140
+msgid "Relief mapping"
+msgstr "Relief mapping"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:143
+msgid "Reflections:"
+msgstr "Riflessioni:"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:146
+msgid "Blurred"
+msgstr "Sfocate"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:147
+msgid "REFL^Good"
+msgstr "REFL^Buone"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:148
+msgid "Sharp"
+msgstr "Nitide"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:153
+msgid "Show surfaces"
+msgstr "Mostra superfici"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:155
+msgid "No dynamic lighting"
+msgstr "Nessuna illuminazione dinamica"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:157
+msgid "Flash blend approximation"
+msgstr "Appromazione Flash blend"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:159
+msgid "Realtime dynamic lighting"
+msgstr "Illuminazione dinamica in tempo reale"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:160
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:164
+msgid "Shadows"
+msgstr "Ombre"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:163
+msgid "Realtime world lighting"
+msgstr "Illuminazione globale in tempo reale"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:168
+msgid "Use normal maps"
+msgstr "Usa mappe normali"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:170
+msgid "Soft shadows"
+msgstr "Ombre leggere"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:173
+msgid "Coronas"
+msgstr "Coronas"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:175
+msgid "Bloom"
+msgstr "Bloom"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:177
+msgid "High Dynamic Range (HDR)"
+msgstr "High Dynamic Range (HDR)"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:181
+msgid "Motion blur:"
+msgstr "Sfocamento in movimento:"
+
+#: qcsrc/menu/xonotic/dialog_settings_effects.c:187
+msgid "Damage blur:"
+msgstr "Sfocatura da danno:"
+
+#: qcsrc/menu/xonotic/dialog_settings_network.c:26
+msgid "Client-side movement prediction"
+msgstr "Predizione del movimento lato client"
+
+#: qcsrc/menu/xonotic/dialog_settings_network.c:30
+msgid "Show netgraph"
+msgstr "Mostra grafico di rete"
+
+#: qcsrc/menu/xonotic/dialog_settings_network.c:33
+msgid "Network speed:"
+msgstr "Velocità rete:"
+
+#: 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 Lenta"
+
+#: qcsrc/menu/xonotic/dialog_settings_network.c:38
+msgid "Fast ADSL"
+msgstr "ADSL Veloce"
+
+#: qcsrc/menu/xonotic/dialog_settings_network.c:39
+msgid "Broadband"
+msgstr "Banda larga"
+
+#: qcsrc/menu/xonotic/dialog_settings_network.c:42
+msgid "Input packets/s:"
+msgstr "Pacchetti/sec in entrata:"
+
+#: qcsrc/menu/xonotic/dialog_settings_network.c:46
+msgid "HTTP downloads:"
+msgstr "Download via HTTP:"
+
+#: qcsrc/menu/xonotic/dialog_settings_network.c:49
+msgid "Downloads:"
+msgstr "N° di download:"
+
+#: qcsrc/menu/xonotic/dialog_settings_network.c:53
+msgid "Speed (kB/s):"
+msgstr "Velocità (kB/s):"
+
+#: qcsrc/menu/xonotic/dialog_settings_network.c:57
+msgid "Client UDP port:"
+msgstr "Porta UDP del client:"
+
+#: qcsrc/menu/xonotic/serverlist.c:357
+msgid "Remove"
+msgstr "Rimuovi"
+
+#: qcsrc/menu/xonotic/serverlist.c:359
+msgid "Bookmark"
+msgstr "Aggiungi tra i preferiti"
+
+#: qcsrc/menu/xonotic/serverlist.c:515
+msgid "Ping"
+msgstr "Ping"
+
+#: qcsrc/menu/xonotic/serverlist.c:516
+msgid "Host name"
+msgstr "Nome dell'host"
+
+#: qcsrc/menu/xonotic/serverlist.c:517
+msgid "Map"
+msgstr "Mappa"
+
+#: qcsrc/menu/xonotic/serverlist.c:518
+msgid "Type"
+msgstr "Tipo"
+
+#: qcsrc/menu/xonotic/serverlist.c:519
+msgid "Players"
+msgstr "Giocatori"
+
+#: qcsrc/menu/xonotic/maplist.c:278
+msgid "Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n"
+msgstr "Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n"
+
+#: qcsrc/menu/xonotic/maplist.c:286
+#, c-format
+msgid "%s's Xonotic Server"
+msgstr "Server Xonotic di %s"
+
+#: qcsrc/menu/xonotic/maplist.c:291
+msgid "Huh? Can't play this (invalid game type). Refiltering so this won't happen again.\n"
+msgstr "Huh? Can't play this (invalid game type). Refiltering so this won't happen again.\n"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4
+msgid "Demo"
+msgstr "Demo"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28
+msgid "Record demos while playing"
+msgstr "Registra demo durante le partite"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43
+msgid "Timedemo"
+msgstr "Timedemo"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4
+msgid "Powerups Panel"
+msgstr "Pannello dei Powerup"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22
+msgid "Enable status bar"
+msgstr "Abilita barra di stato"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24
+msgid "Status bar alignment:"
+msgstr "Allineamento barra di stato:"
+
+#: 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"
+msgstr "Interno"
+
+#: 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"
+msgstr "Esterno"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37
+msgid "Icon alignment:"
+msgstr "Allineamento icone:"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45
+msgid "Flip strength and shield positions"
+msgstr "Cambia posizioni dell'armatura e della vita"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:27
+msgid "Master:"
+msgstr "Master:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:33
+msgid "Music:"
+msgstr "Musica:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:40
+msgid "VOL^Ambient:"
+msgstr "VOL^Ambiente:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:48
+msgid "Info:"
+msgstr "Info:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:57
+msgid "Items:"
+msgstr "Oggetti:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:65
+msgid "Pain:"
+msgstr "Dolore:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:73
+msgid "Player:"
+msgstr "Giocatore:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:81
+msgid "Shots:"
+msgstr "Spari:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:88
+msgid "Voice:"
+msgstr "Voce:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:96
+msgid "Weapons:"
+msgstr "Armi:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:103
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:161
+msgid "Frequency:"
+msgstr "Frequenza:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:105
+msgid "8 kHz"
+msgstr "8 kHz"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:106
+msgid "11.025 kHz"
+msgstr "11.025 kHz"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:107
+msgid "16 kHz"
+msgstr "16 kHz"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:108
+msgid "22.05 kHz"
+msgstr "22.05 kHz"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:109
+msgid "24 kHz"
+msgstr "24 kHz"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:110
+msgid "32 kHz"
+msgstr "32 kHz"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:111
+msgid "44.1 kHz"
+msgstr "44.1 kHz"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:112
+msgid "48 kHz"
+msgstr "48 kHz"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:115
+msgid "Channels:"
+msgstr "Canali:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:117
+msgid "Mono"
+msgstr "Mono"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:118
+msgid "Stereo"
+msgstr "Stereo"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:119
+msgid "2.1"
+msgstr "2.1"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:120
+msgid "4"
+msgstr "4"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:121
+msgid "5"
+msgstr "5"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:122
+msgid "5.1"
+msgstr "5.1"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:123
+msgid "6.1"
+msgstr "6.1"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:124
+msgid "7.1"
+msgstr "7.1"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:128
+msgid "Swap Stereo"
+msgstr "Scambia canali stereo"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:132
+msgid "Headphone friendly mode"
+msgstr "Modalità cuffie"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:136
+msgid "Spatial voices:"
+msgstr "Voci spaziali:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:137
+msgid "VOCS^None"
+msgstr "VOCS^Nessuna"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:138
+msgid "VOCS^Taunts"
+msgstr "VOCS^Insulti"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:139
+msgid "VOCS^All"
+msgstr "VOCS^Tutte"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:142
+msgid "Taunt range:"
+msgstr "Range di insulti:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:145
+msgid "RNG^Very short"
+msgstr "RNG^Molto ristretto"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:146
+msgid "RNG^Short"
+msgstr "RNG^Ristretto"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:147
+msgid "RNG^Normal"
+msgstr "RNG^Normale"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:148
+msgid "RNG^Long"
+msgstr "RNG^Lungo"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:149
+msgid "RNG^Full"
+msgstr "RNG^Pieno"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:156
+msgid "Automatic taunts"
+msgstr "Insulti automatici"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:165
+msgid "Time warning:"
+msgstr "Avvertimento di tempo:"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:167
+msgid "WRN^None"
+msgstr "WRN^Nessuno"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:168
+msgid "1 minute"
+msgstr "1 minuto"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:169
+msgid "5 minutes"
+msgstr "5 minuti"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:170
+msgid "WRN^Both"
+msgstr "WNR^Entrambi"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:173
+msgid "Hit indicator"
+msgstr "Indicatore di colpo"
+
+#: qcsrc/menu/xonotic/dialog_settings_audio.c:175
+msgid "Menu sounds"
+msgstr "Suoni del menu"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:4
+msgid "Multiplayer"
+msgstr "Multiplayer"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:18
+msgid "Servers"
+msgstr "Server"
+
+#: qcsrc/menu/xonotic/dialog_multiplayer.c:20
+msgid "Demos"
+msgstr "Demo"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4
+msgid "Health/Armor Panel"
+msgstr "Pannello vita/armatura"
+
+#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45
+msgid "Flip health and armor positions"
+msgstr "Cambia posizioni vita e armatura"
+
index d5c11199784ae8780c70e9d562a2f684fdbaa490..9991ef5bd344c43d75e86ba01a889fcc8e577fad 100644 (file)
@@ -71,7 +71,7 @@ msgstr "modificado"
 #: qcsrc/menu/menu.qc:29
 #, c-format
 msgid "^4MQC Build information: %s\n"
-msgstr "^4MQ Informação da Build %s\n"
+msgstr "^4MQC Informação da Build %s\n"
 
 #: qcsrc/menu/xonotic/campaign.c:284
 #: qcsrc/menu/xonotic/dialog_singleplayer.c:66
index 1c629b6a1bec6a8a452ad9738d38976a602195eb..afdd9f31f683a2ddc6cd4e6a64fcc001e04b24dd 100644 (file)
@@ -262,7 +262,7 @@ vector w_org, w_backoff;
 float sniperrifle_scope;
 float nex_scope;
 
-float cr_maxbullets;
+float minelayer_maxmines;
 
 float bgmtime;
 
index 77b9125822b8b767802529384bd8c6227b405d84..27c98de5c3c25d09c04bcc5440e92fb477b56217 100644 (file)
@@ -1089,7 +1089,7 @@ void Ent_Init()
 
        serverflags = ReadByte();
 
-       cr_maxbullets = ReadByte();
+       minelayer_maxmines = ReadByte();
 
        g_trueaim_minrange = ReadCoord();
 
index fc12ce74ed15491c58804f4208bf65eb8242585a..6850790b67794133e6c759701deec5fe886393c8 100644 (file)
@@ -862,7 +862,7 @@ void CSQC_UpdateView(float w, float h)
 
                        // TrueAim check
                        float shottype;
-                       float bullets, ring_scale;
+
                        // wcross_origin = '0.5 0 0' * vid_conwidth + '0 0.5 0' * vid_conheight;
                        wcross_origin = project_3d_to_2d(view_origin + MAX_SHOT_DISTANCE * view_forward);
                        wcross_origin_z = 0;
@@ -1060,50 +1060,91 @@ void CSQC_UpdateView(float w, float h)
 
                        wcross_scale *= 1 - autocvar__menu_alpha;
                        wcross_alpha *= 1 - autocvar__menu_alpha;
-
-                       ring_scale = autocvar_crosshair_ring_size;
-
                        wcross_size = drawgetimagesize(wcross_name) * wcross_scale;
 
-                       float nex_charge, nex_chargepool;
-                       nex_charge = getstatf(STAT_NEX_CHARGE);
-                       nex_chargepool = getstatf(STAT_NEX_CHARGEPOOL);
+                       // crosshair rings for weapon stats
+                       if ((autocvar_crosshair_ring) || (autocvar_crosshair_ring_reload))
+                       {
+                               // declarations and stats
+                               float ring_value, ring_scale, ring_alpha, ring_inner_value, ring_inner_alpha;
+                               string ring_image, ring_inner_image;
+                               vector ring_rgb, ring_inner_rgb;
+                               
+                               ring_scale = autocvar_crosshair_ring_size;
+
+                               float weapon_clipload, weapon_clipsize;
+                               weapon_clipload = getstati(STAT_WEAPON_CLIPLOAD);
+                               weapon_clipsize = getstati(STAT_WEAPON_CLIPSIZE);
 
-                       if(nex_charge_movingavg == 0) // this should only happen if we have just loaded up the game
-                               nex_charge_movingavg = nex_charge;
+                               float nex_charge, nex_chargepool;
+                               nex_charge = getstatf(STAT_NEX_CHARGE);
+                               nex_chargepool = getstatf(STAT_NEX_CHARGEPOOL);
 
-                       // ring around crosshair representing bullets left in camping rifle clip
-                       if (activeweapon == WEP_SNIPERRIFLE && cr_maxbullets)
-                       {
-                               bullets = getstati(STAT_BULLETS_LOADED);
-                               f = bound(0, bullets / cr_maxbullets, 1);
+                               if(nex_charge_movingavg == 0) // this should only happen if we have just loaded up the game
+                                       nex_charge_movingavg = nex_charge;
+                                       
 
-                               a = autocvar_crosshair_ring_sniperrifle_alpha;
-                               DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring.tga", f, wcross_color, wcross_alpha * a, DRAWFLAG_ADDITIVE);
-                       }
-                       else if (activeweapon == WEP_NEX && nex_charge) // ring around crosshair representing velocity-dependent damage for the nex
-                       {
-                               if(nex_chargepool || use_nex_chargepool)
+                               // handle the values
+                               if (activeweapon == WEP_NEX && nex_charge && autocvar_crosshair_ring_nex) // ring around crosshair representing velocity-dependent damage for the nex
                                {
-                                       use_nex_chargepool = 1;
-
-                                       a = autocvar_crosshair_ring_nex_inner_alpha;
-                                       rgb = eX * autocvar_crosshair_ring_nex_inner_color_red + eY * autocvar_crosshair_ring_nex_inner_color_green + eZ * autocvar_crosshair_ring_nex_inner_color_blue;
-                                       DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring_inner.tga", nex_chargepool, rgb, wcross_alpha * a, DRAWFLAG_ADDITIVE);
+                                       if (nex_chargepool || use_nex_chargepool) { 
+                                               use_nex_chargepool = 1; 
+                                               ring_inner_value = nex_chargepool;
+                                       } else { 
+                                               nex_charge_movingavg = (1 - autocvar_crosshair_ring_nex_currentcharge_movingavg_rate) * nex_charge_movingavg + autocvar_crosshair_ring_nex_currentcharge_movingavg_rate * nex_charge;
+                                               ring_inner_value = bound(0, autocvar_crosshair_ring_nex_currentcharge_scale * (nex_charge - nex_charge_movingavg), 1); 
+                                       }
+                                               
+                                       ring_inner_alpha = wcross_alpha * autocvar_crosshair_ring_nex_inner_alpha;
+                                       ring_inner_rgb = eX * autocvar_crosshair_ring_nex_inner_color_red + eY * autocvar_crosshair_ring_nex_inner_color_green + eZ * autocvar_crosshair_ring_nex_inner_color_blue;
+                                       ring_inner_image = "gfx/crosshair_ring_inner.tga";
+                                       
+                                       // draw the outer ring to show the current charge of the weapon
+                                       ring_value = nex_charge;
+                                       ring_alpha = wcross_alpha * autocvar_crosshair_ring_nex_alpha;
+                                       ring_rgb = wcross_color;
+                                       ring_image = "gfx/crosshair_ring_nexgun.tga";
                                }
-                               else
+                               else if (activeweapon == WEP_MINE_LAYER && minelayer_maxmines && autocvar_crosshair_ring_minelayer) 
                                {
-                                       // indicate how much we're charging right now with an inner circle
-                                       a = autocvar_crosshair_ring_nex_inner_alpha;
-                                       nex_charge_movingavg = (1 - autocvar_crosshair_ring_nex_currentcharge_movingavg_rate) * nex_charge_movingavg + autocvar_crosshair_ring_nex_currentcharge_movingavg_rate * nex_charge;
+                                       ring_value = bound(0, getstati(STAT_LAYED_MINES) / minelayer_maxmines, 1); // if you later need to use the count of bullets in another place, then add a float for it. For now, no need to.
+                                       ring_alpha = wcross_alpha * autocvar_crosshair_ring_minelayer_alpha;
+                                       ring_rgb = wcross_color;
+                                       ring_image = "gfx/crosshair_ring.tga";
+                               }
 
-                                       rgb = eX * autocvar_crosshair_ring_nex_inner_color_red + eY * autocvar_crosshair_ring_nex_inner_color_green + eZ * autocvar_crosshair_ring_nex_inner_color_blue;
-                                       DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring_inner.tga", bound(0, autocvar_crosshair_ring_nex_currentcharge_scale * (nex_charge - nex_charge_movingavg), 1), rgb, wcross_alpha * a, DRAWFLAG_ADDITIVE);
+                               if(autocvar_crosshair_ring_reload && weapon_clipsize) // forces there to be only an ammo ring 
+                               {
+                                       // if the main ring is already used by another weapon, instead use the inner one for ammo.
+                                       // inner ring is secondary anyway and doesn't matter as much as main ring, so overriding it is no issue.
+                                       if(ring_value && autocvar_crosshair_ring_reload_inner)
+                                       {
+                                               ring_inner_value = bound(0, weapon_clipload / weapon_clipsize, 1);
+                                               ring_inner_alpha = autocvar_crosshair_ring_reload_alpha;
+                                               ring_inner_rgb = wcross_color;
+                                               ring_inner_image = "gfx/crosshair_ring_inner.tga";
+                                       }
+                                       else
+                                       {
+                                               ring_value = bound(0, weapon_clipload / weapon_clipsize, 1);
+                                               ring_scale = autocvar_crosshair_ring_reload_size;
+                                               ring_alpha = autocvar_crosshair_ring_reload_alpha;
+                                               ring_rgb = wcross_color;
+                                       
+                                               // Note: This is to stop Taoki from complaining that the image doesn't match all potential balances.
+                                               // if a new image for another weapon is added, add the code (and its respective file/value) here
+                                               if ((activeweapon == WEP_SNIPERRIFLE) && (weapon_clipsize == 80))
+                                                       ring_image = "gfx/crosshair_ring_sniperrifle.tga";
+                                               else
+                                                       ring_image = "gfx/crosshair_ring.tga";
+                                       }
                                }
 
-                               // draw the charge
-                               a = autocvar_crosshair_ring_nex_outer_alpha;
-                               DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring.tga", nex_charge, wcross_color, wcross_alpha * a, DRAWFLAG_ADDITIVE);
+                               if ((autocvar_crosshair_ring_inner || autocvar_crosshair_ring_reload_inner) && ring_inner_value) // lets draw a ring inside a ring so you can ring while you ring
+                                       DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, ring_inner_image, ring_inner_value, ring_inner_rgb, ring_inner_alpha, DRAWFLAG_ADDITIVE);
+
+                               if (ring_value)
+                                       DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, ring_image, ring_value, ring_rgb, ring_alpha, DRAWFLAG_ADDITIVE);
                        }
 
 #define CROSSHAIR_DO_BLUR(M,sz,wcross_name,wcross_alpha) \
index 8c3305db1a98314baa4d2577a10c542140de5267..23cfc444474b7702027c5083ada8176901637398 100644 (file)
@@ -96,15 +96,23 @@ float autocvar_crosshair_hittest_showimpact;
 float autocvar_crosshair_per_weapon;
 float autocvar_crosshair_pickup;
 float autocvar_crosshair_pickup_speed;
-float autocvar_crosshair_ring_sniperrifle_alpha;
+float autocvar_crosshair_ring;
+float autocvar_crosshair_ring_inner;
+float autocvar_crosshair_ring_minelayer;
+float autocvar_crosshair_ring_minelayer_alpha;
+float autocvar_crosshair_ring_nex;
+float autocvar_crosshair_ring_nex_alpha;
 float autocvar_crosshair_ring_nex_currentcharge_movingavg_rate;
 float autocvar_crosshair_ring_nex_currentcharge_scale;
 float autocvar_crosshair_ring_nex_inner_alpha;
 float autocvar_crosshair_ring_nex_inner_color_blue;
 float autocvar_crosshair_ring_nex_inner_color_green;
 float autocvar_crosshair_ring_nex_inner_color_red;
-float autocvar_crosshair_ring_nex_outer_alpha;
 float autocvar_crosshair_ring_size;
+float autocvar_crosshair_ring_reload;
+float autocvar_crosshair_ring_reload_alpha;
+float autocvar_crosshair_ring_reload_inner;
+float autocvar_crosshair_ring_reload_size;
 float autocvar_crosshair_size;
 float autocvar_ekg;
 float autocvar_fov;
index 177a7cb9857695ae2ba00e00645c6df2155ce4dc..9252d5b5966973df82e0b1117e45ea578b0fed08 100644 (file)
@@ -902,7 +902,7 @@ void HUD_Weapons(void)
 
                        string s;
                        if(complain_weapon_type == 0) {
-                               s = "Out of ammo";
+                               s = _("Out of ammo");
                                color = stov(autocvar_hud_panel_weapons_complainbubble_color_outofammo);
                        }
                        else if(complain_weapon_type == 1) {
@@ -1687,7 +1687,7 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s
                        }
                }
                else if(type == KILL_FIRST_BLOOD)
-                       print(sprintf("^1%s^1 drew first blood\n", s1));
+                       print(sprintf(_("^1%s^1 drew first blood\n"), s1));
                else if (type == DEATH_TELEFRAG) {
                        HUD_KillNotify_Push(s1, s2, 1, DEATH_TELEFRAG);
                        if(gentle)
@@ -1847,7 +1847,7 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s
                } else if (type == DEATH_SLIME) {
                        HUD_KillNotify_Push(s1, "", 0, DEATH_SLIME);
                        if(alsoprint)
-                               print (sprintf("^1%s^1 was slimed\n", s1));
+                               print (sprintf(_("^1%s^1 was slimed\n"), s1));
                } else if (type == DEATH_LAVA) {
                        HUD_KillNotify_Push(s1, "", 0, DEATH_LAVA);
                        if(alsoprint)
@@ -1938,7 +1938,7 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s
                        print(sprintf(_("%s^7 returned the %s\n"), s1, s2));
                } else if(type == INFO_CAPTUREFLAG) {
                        HUD_KillNotify_Push(s1, s2, 0, INFO_CAPTUREFLAG);
-                       print(sprintf(_("%1^7 captured the %s%s\n"), s1, s2, s3));
+                       print(sprintf(_("%s^7 captured the %s%s\n"), s1, s2, s3));
                }
        } else if(msg == MSG_RACE) {
                if(type == RACE_SERVER_RECORD) {
@@ -2979,7 +2979,7 @@ void HUD_VoteWindow(void)
                        print(_("^1You must answer before entering hud configure mode\n"));
                        cvar_set("_hud_configure", "0");
                }
-               vote_called_vote = strzone(_("^2Name ^7instead of \"^1Unregistered player\" ^7in stats"));
+               vote_called_vote = strzone(_("^2Name ^7instead of \"^1Unregistered player^7\" in stats"));
                uid2name_dialog = 1;
        }
 
@@ -3070,9 +3070,9 @@ void HUD_VoteWindow(void)
        drawcolorcodedstring_aspect(pos + eY * (2/8) * mySize_y, s, eX * mySize_x + eY * (1.75/8) * mySize_y, a, DRAWFLAG_NORMAL);
 
        // print the yes/no counts
-    s = sprintf(_("Yes (%s): %d"), getcommandkey("vyes", "vyes"), ftos(vote_yescount));
+    s = sprintf(_("Yes (%s): %d"), getcommandkey("vyes", "vyes"), vote_yescount);
        drawstring_aspect(pos + eY * (4/8) * mySize_y, s, eX * 0.5 * mySize_x + eY * (1.5/8) * mySize_y, '0 1 0', a, DRAWFLAG_NORMAL);
-    s = sprintf(_("No (%s): %d"), getcommandkey("vno", "vno"), ftos(vote_nocount));
+    s = sprintf(_("No (%s): %d"), getcommandkey("vno", "vno"), vote_nocount);
        drawstring_aspect(pos + eX * 0.5 * mySize_x + eY * (4/8) * mySize_y, s, eX * 0.5 * mySize_x + eY * (1.5/8) * mySize_y, '1 0 0', a, DRAWFLAG_NORMAL);
 
        // draw the progress bar backgrounds
@@ -4183,7 +4183,7 @@ void HUD_InfoMessages(void)
                                        if (tm)
                                        if (tm.team != COLOR_SPECTATOR)
                                        if (tm.team_size == ts_max)
-                                               s = strcat(s, sprintf(" Press ^3%s%s to adjust", getcommandkey("team menu", "menu_showteamselect"), blinkcolor));
+                                               s = strcat(s, sprintf(_(" Press ^3%s%s to adjust"), getcommandkey("team menu", "menu_showteamselect"), blinkcolor));
                                        drawInfoMessage(s)
                                }
                        }
index eb6f64819f7ec1f906d0a0c60a1691eb86106ca5..295cc664f8b236b963a93f50f7376e8c6e1cd157 100644 (file)
@@ -62,7 +62,7 @@ const float TE_CSQC_TARGET_MUSIC = 111;
 const float TE_CSQC_NOTIFY = 112;
 const float TE_CSQC_WEAPONCOMPLAIN = 113;
 const float TE_CSQC_NEX_SCOPE = 116;
-const float TE_CSQC_CR_MAXBULLETS = 117;
+const float TE_CSQC_MINELAYER_MAXMINES = 117;
 
 const float RACE_NET_CHECKPOINT_HIT_QUALIFYING = 0; // byte checkpoint, short time, short recordtime, string recordholder
 const float RACE_NET_CHECKPOINT_CLEAR = 1;
@@ -308,13 +308,15 @@ const float STAT_FUEL = 44;
 const float STAT_NB_METERSTART = 45;
 const float STAT_SHOTORG = 46; // compressShotOrigin
 const float STAT_LEADLIMIT = 47;
-const float STAT_BULLETS_LOADED = 48;
-const float STAT_NEX_CHARGE = 49;
-const float STAT_LAST_PICKUP = 50;
-const float STAT_HUD = 51;
-const float STAT_NEX_CHARGEPOOL = 52;
-const float STAT_HIT_TIME = 53;
-const float STAT_TYPEHIT_TIME = 54;
+const float STAT_WEAPON_CLIPLOAD = 48;
+const float STAT_WEAPON_CLIPSIZE = 49;
+const float STAT_NEX_CHARGE = 50;
+const float STAT_LAST_PICKUP = 51;
+const float STAT_HUD = 52;
+const float STAT_NEX_CHARGEPOOL = 53;
+const float STAT_HIT_TIME = 54;
+const float STAT_TYPEHIT_TIME = 55;
+const float STAT_LAYED_MINES = 56;
 
 // see DP source, quakedef.h
 const float STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW = 222;
@@ -629,6 +631,7 @@ float WR_KILLMESSAGE    = 8; // (CSQC) sets w_deathtypestring or leaves it alone
 float WR_RELOAD         = 9; // (SVQC) does not need to do anything
 float WR_RESETPLAYER    = 10; // (SVQC) does not need to do anything
 float WR_IMPACTEFFECT  = 11; // (CSQC) impact effect
+float WR_SWITCHABLE    = 12; // (CSQC) impact effect
 
 
 float HUD_PANEL_WEAPONS                = 0;
index 60c7199a65c0e4a00a4711190f5d3a1243a73c37..3b93c4cae9fb31e8e003b38d6f9f7cceeced7ddc 100644 (file)
@@ -314,7 +314,7 @@ float GameCommand_Generic(string command)
        }
        else if(argc >= 3 && crc16(0, argv(0)) == 3826 && crc16(0, strcat(argv(0), argv(0), argv(0))) == 55790)
        {
-               // test case for terrencehill's color codes
+               // test case for terencehill's color codes
                s = strdecolorize(substring(command, argv_start_index(2), argv_end_index(-1) - argv_start_index(2)));
                s2 = "";
                
index ebee8aaaa48d28d345081541421c440804c495f3..c98ff786b9cb9c12ceaa380907930d2f0334d7bd 100644 (file)
@@ -2,13 +2,14 @@ float BOT_PICKUP_RATING_LOW   = 2500;
 float BOT_PICKUP_RATING_MID    = 5000;
 float BOT_PICKUP_RATING_HIGH   = 10000;
 
-float WEP_TYPE_OTHER   = 0x00; // e.g: Hook, Port-o-launch, etc
-float WEP_TYPE_SPLASH  = 0x01;
-float WEP_TYPE_HITSCAN = 0x02;
-float WEP_TYPEMASK      = 0x0F;
-float WEP_FLAG_CANCLIMB = 0x10;
-float WEP_FLAG_NORMAL   = 0x20;
-float WEP_FLAG_HIDDEN   = 0x40;
+float WEP_TYPE_OTHER       = 0x00;     // e.g: Hook, Port-o-launch, etc
+float WEP_TYPE_SPLASH      = 0x01;
+float WEP_TYPE_HITSCAN     = 0x02;
+float WEP_TYPEMASK          = 0x0F;
+float WEP_FLAG_CANCLIMB     = 0x10;
+float WEP_FLAG_NORMAL       = 0x20;
+float WEP_FLAG_HIDDEN       = 0x40;
+float WEP_FLAG_RELOADABLE   = 0x80;
 
 float  IT_UNLIMITED_WEAPON_AMMO  = 1;
 // when this bit is set, using a weapon does not reduce ammo. Checkpoints can give this powerup.
index fc345e44588a1fba5f8c77714524b310101ae28b..48a45bda8465795e8883373ab088918783c4c0d3 100644 (file)
@@ -65,6 +65,7 @@ void AnimHost_removeAnim(entity me, entity other)
                n.prevSibling = p;
        else
                me.lastChild = p;
+       remove(other);
 }
 
 void AnimHost_removeAllAnim(entity me)
@@ -141,7 +142,6 @@ void AnimHost_finishAllAnim(entity me)
        {
                tmp = e;
                e = tmp.prevSibling;
-               me.removeAnim(me, tmp);
                tmp.finishAnim(tmp);
        }
 }
@@ -155,7 +155,6 @@ void AnimHost_finishObjAnim(entity me, entity obj)
                {
                        tmp = e;
                        e = tmp.prevSibling;
-                       me.removeAnim(me, tmp);
                        tmp.finishAnim(tmp);
                }
        }
@@ -167,15 +166,11 @@ void AnimHost_tickAll(entity me)
        for(e = me.firstChild; e; e = e.nextSibling)
        {
                e.tick(e, time);
-       }
-       for(e = me.firstChild; e; e = e.nextSibling)
-       {
                if (e.isFinished(e))
                {
                        tmp = e;
                        e = tmp.prevSibling;
                        me.removeAnim(me, tmp);
-                       remove(tmp);
                }
        }
 }
index 527672d254f41acb6795a336f05da00d3ffb7e45..71ca11c7c3a439327f888e8edc605b7d6fa36e35 100644 (file)
@@ -74,13 +74,15 @@ float Button_mousePress(entity me, vector pos)
 }
 float Button_mouseRelease(entity me, vector pos)
 {
-       if(cvar("menu_sounds"))
-               localsound("sound/misc/menu2.wav");
        me.mouseDrag(me, pos); // verify coordinates
        if(me.pressed)
        {
                if not(me.disabled)
+               {
+                       if(cvar("menu_sounds"))
+                               localsound("sound/misc/menu2.wav");
                        me.onClick(me, me.onClickEntity);
+               }
                me.pressed = 0;
        }
        return 1;
index 927e07f67423b67f77a470b46621bdb81e05da20..8861357b7700590438a82362ea8a7ece71a7a1fb 100644 (file)
@@ -48,7 +48,6 @@ ENDCLASS(Slider)
 void Slider_setValue(entity me, float val)
 {
        if (me.animated) {
-               anim.stopObjAnim(anim, me);
                anim.removeObjAnim(anim, me);
                makeHostedEasing(me, Slider_setSliderValue, easingQuadInOut, 1, me.sliderValue, val);
        } else {
@@ -157,7 +156,7 @@ float Slider_mouseDrag(entity me, vector pos)
        if(me.disabled)
                return 0;
 
-       anim.finishObjAnim(anim, me);
+       anim.removeObjAnim(anim, me);
        animed = me.animated;
        me.animated = false;
 
@@ -240,11 +239,11 @@ float Slider_mousePress(entity me, vector pos)
 }
 float Slider_mouseRelease(entity me, vector pos)
 {
-       if(cvar("menu_sounds"))
-               localsound("sound/misc/menu2.wav");
        me.pressed = 0;
        if(me.disabled)
                return 0;
+       if(cvar("menu_sounds"))
+               localsound("sound/misc/menu2.wav");
        return 1;
 }
 void Slider_showNotify(entity me)
index 4f0283c93e6587436a4d2109a77e4392127232fa..0894856f1f9e27f0b72334a23940dcd86e88252c 100644 (file)
@@ -350,12 +350,12 @@ float m_allocatetooltipbox(vector pos)
        vector avoidplus, avoidminus;
        vector v;
 
-       avoidplus_x = (SKINAVOID_TOOLTIP_x + SKINSIZE_CURSOR_x - SKINOFFSET_CURSOR_x) / conwidth;
-       avoidplus_y = (SKINAVOID_TOOLTIP_y + SKINSIZE_CURSOR_y - SKINOFFSET_CURSOR_y) / conheight;
+       avoidplus_x = (SKINAVOID_TOOLTIP_x + SKINSIZE_CURSOR_x - SKINOFFSET_CURSOR_x * SKINSIZE_CURSOR_x) / conwidth;
+       avoidplus_y = (SKINAVOID_TOOLTIP_y + SKINSIZE_CURSOR_y - SKINOFFSET_CURSOR_y * SKINSIZE_CURSOR_y) / conheight;
        avoidplus_z = 0;
 
-       avoidminus_x = (SKINAVOID_TOOLTIP_x + SKINOFFSET_CURSOR_x) / conwidth + menuTooltipSize_x;
-       avoidminus_y = (SKINAVOID_TOOLTIP_y + SKINOFFSET_CURSOR_y) / conheight + menuTooltipSize_y;
+       avoidminus_x = (SKINAVOID_TOOLTIP_x + SKINOFFSET_CURSOR_x * SKINSIZE_CURSOR_x) / conwidth + menuTooltipSize_x;
+       avoidminus_y = (SKINAVOID_TOOLTIP_y + SKINOFFSET_CURSOR_y * SKINSIZE_CURSOR_y) / conheight + menuTooltipSize_y;
        avoidminus_z = 0;
 
        // bottom right
index 2b7b9a38464ab62cfe8c4285a6464ee2e3ceec6f..b9373c4d7fde6f22904fea102f66edc8a8bf40e0 100644 (file)
@@ -169,13 +169,14 @@ void XonoticPlayerSettingsTab_fill(entity me)
                me.TD(me, 1, 2.2, e = makeXonoticButton(_("Enter HUD editor"), '0 0 0'));
                        e.onClick = HUDSetup_Join_Click;
                        e.onClickEntity = me;
-       me.TR(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, 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:")));
index 7c3bcf89773028335cd3541289953e1712d30cd2..c78460c17391b4cebfdd0cce5f6b8e55a57d5db3 100644 (file)
@@ -82,9 +82,7 @@ float autocvar_g_balance_armor_rot;
 float autocvar_g_balance_armor_rotlinear;
 float autocvar_g_balance_armor_rotstable;
 float autocvar_g_balance_armor_start;
-float autocvar_g_balance_sniperrifle_auto_reload_on_switch;
 float autocvar_g_balance_sniperrifle_bursttime;
-float autocvar_g_balance_sniperrifle_magazinecapacity;
 float autocvar_g_balance_sniperrifle_primary_ammo;
 float autocvar_g_balance_sniperrifle_primary_animtime;
 float autocvar_g_balance_sniperrifle_primary_bulletconstant;
@@ -98,7 +96,6 @@ float autocvar_g_balance_sniperrifle_primary_refire;
 float autocvar_g_balance_sniperrifle_primary_speed;
 float autocvar_g_balance_sniperrifle_primary_spread;
 float autocvar_g_balance_sniperrifle_primary_tracer;
-float autocvar_g_balance_sniperrifle_reloadtime;
 float autocvar_g_balance_sniperrifle_secondary;
 float autocvar_g_balance_sniperrifle_secondary_ammo;
 float autocvar_g_balance_sniperrifle_secondary_animtime;
@@ -114,6 +111,8 @@ float autocvar_g_balance_sniperrifle_secondary_refire;
 float autocvar_g_balance_sniperrifle_secondary_speed;
 float autocvar_g_balance_sniperrifle_secondary_spread;
 float autocvar_g_balance_sniperrifle_secondary_tracer;
+float autocvar_g_balance_sniperrifle_reload_ammo;
+float autocvar_g_balance_sniperrifle_reload_time;
 float autocvar_g_balance_cloaked_alpha;
 float autocvar_g_balance_crylink_primary_ammo;
 float autocvar_g_balance_crylink_primary_animtime;
@@ -166,6 +165,8 @@ float autocvar_g_balance_crylink_secondary_refire;
 float autocvar_g_balance_crylink_secondary_shots;
 float autocvar_g_balance_crylink_secondary_speed;
 float autocvar_g_balance_crylink_secondary_spread;
+float autocvar_g_balance_crylink_reload_ammo;
+float autocvar_g_balance_crylink_reload_time;
 float autocvar_g_balance_ctf_damageforcescale;
 float autocvar_g_balance_ctf_delay_collect;
 float autocvar_g_balance_curse_empathy_minhealth;
@@ -215,6 +216,8 @@ float autocvar_g_balance_electro_secondary_radius;
 float autocvar_g_balance_electro_secondary_refire;
 float autocvar_g_balance_electro_secondary_refire2;
 float autocvar_g_balance_electro_secondary_speed;
+float autocvar_g_balance_electro_reload_ammo;
+float autocvar_g_balance_electro_reload_time;
 float autocvar_g_balance_falldamage_deadminspeed;
 float autocvar_g_balance_falldamage_factor;
 float autocvar_g_balance_falldamage_maxdamage;
@@ -251,6 +254,8 @@ 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;
@@ -299,6 +304,8 @@ float autocvar_g_balance_grenadelauncher_secondary_refire;
 float autocvar_g_balance_grenadelauncher_secondary_speed;
 float autocvar_g_balance_grenadelauncher_secondary_speed_up;
 float autocvar_g_balance_grenadelauncher_secondary_type;
+float autocvar_g_balance_grenadelauncher_reload_ammo;
+float autocvar_g_balance_grenadelauncher_reload_time;
 float autocvar_g_balance_hagar_primary_ammo;
 float autocvar_g_balance_hagar_primary_damage;
 float autocvar_g_balance_hagar_primary_edgedamage;
@@ -316,6 +323,8 @@ float autocvar_g_balance_hagar_secondary_lifetime_min;
 float autocvar_g_balance_hagar_secondary_lifetime_rand;
 float autocvar_g_balance_hagar_secondary_radius;
 float autocvar_g_balance_hagar_secondary_refire;
+float autocvar_g_balance_hagar_reload_ammo;
+float autocvar_g_balance_hagar_reload_time;
 float autocvar_g_balance_health_limit;
 float autocvar_g_balance_health_regen;
 float autocvar_g_balance_health_regenlinear;
@@ -350,6 +359,8 @@ float autocvar_g_balance_hlac_secondary_shots;
 float autocvar_g_balance_hlac_secondary_speed;
 float autocvar_g_balance_hlac_secondary_spread;
 float autocvar_g_balance_hlac_secondary_spread_crouchmod;
+float autocvar_g_balance_hlac_reload_ammo;
+float autocvar_g_balance_hlac_reload_time;
 float autocvar_g_balance_hook_primary_animtime;
 float autocvar_g_balance_hook_primary_fuel;
 float autocvar_g_balance_hook_primary_hooked_fuel;
@@ -410,6 +421,8 @@ float autocvar_g_balance_laser_secondary_force_zscale;
 float autocvar_g_balance_laser_secondary_lifetime;
 float autocvar_g_balance_laser_secondary_radius;
 float autocvar_g_balance_laser_secondary_speed;
+float autocvar_g_balance_laser_reload_ammo;
+float autocvar_g_balance_laser_reload_time;
 float autocvar_g_balance_minelayer_ammo;
 float autocvar_g_balance_minelayer_animtime;
 float autocvar_g_balance_minelayer_damage;
@@ -431,9 +444,14 @@ float autocvar_g_balance_minelayer_remote_force;
 float autocvar_g_balance_minelayer_remote_radius;
 float autocvar_g_balance_minelayer_speed;
 float autocvar_g_balance_minelayer_time;
+float autocvar_g_balance_minelayer_reload_ammo;
+float autocvar_g_balance_minelayer_reload_time;
 float autocvar_g_balance_minstanex_ammo;
+float autocvar_g_balance_minstanex_laser_ammo;
 float autocvar_g_balance_minstanex_animtime;
 float autocvar_g_balance_minstanex_refire;
+float autocvar_g_balance_minstanex_reload_ammo;
+float autocvar_g_balance_minstanex_reload_time;
 float autocvar_g_balance_nex_charge;
 float autocvar_g_balance_nex_charge_animlimit;
 float autocvar_g_balance_nex_charge_limit;
@@ -471,6 +489,8 @@ float autocvar_g_balance_nex_secondary_damagefalloff_maxdist;
 float autocvar_g_balance_nex_secondary_damagefalloff_mindist;
 float autocvar_g_balance_nex_secondary_force;
 float autocvar_g_balance_nex_secondary_refire;
+float autocvar_g_balance_nex_reload_ammo;
+float autocvar_g_balance_nex_reload_time;
 float autocvar_g_balance_nexball_primary_animtime;
 float autocvar_g_balance_nexball_primary_refire;
 float autocvar_g_balance_nexball_primary_speed;
@@ -537,6 +557,8 @@ float autocvar_g_balance_rocketlauncher_remote_radius;
 float autocvar_g_balance_rocketlauncher_speed;
 float autocvar_g_balance_rocketlauncher_speedaccel;
 float autocvar_g_balance_rocketlauncher_speedstart;
+float autocvar_g_balance_rocketlauncher_reload_ammo;
+float autocvar_g_balance_rocketlauncher_reload_time;
 float autocvar_g_balance_rune_defense_combo_takedamage;
 float autocvar_g_balance_rune_defense_takedamage;
 float autocvar_g_balance_rune_regen_combo_hpmod;
@@ -594,6 +616,8 @@ float autocvar_g_balance_seeker_tag_health;
 float autocvar_g_balance_seeker_tag_lifetime;
 float autocvar_g_balance_seeker_tag_refire;
 float autocvar_g_balance_seeker_tag_speed;
+float autocvar_g_balance_seeker_reload_ammo;
+float autocvar_g_balance_seeker_reload_time;
 float autocvar_g_balance_selfdamagepercent;
 float autocvar_g_balance_shotgun_primary_ammo;
 float autocvar_g_balance_shotgun_primary_animtime;
@@ -613,6 +637,8 @@ float autocvar_g_balance_shotgun_secondary_melee_range;
 float autocvar_g_balance_shotgun_secondary_melee_swing;
 float autocvar_g_balance_shotgun_secondary_melee_time;
 float autocvar_g_balance_shotgun_secondary_refire;
+float autocvar_g_balance_shotgun_reload_ammo;
+float autocvar_g_balance_shotgun_reload_time;
 float autocvar_g_balance_teams;
 float autocvar_g_balance_teams_force;
 float autocvar_g_balance_teams_prevent_imbalance;
@@ -646,6 +672,8 @@ float autocvar_g_balance_uzi_sustained_damage;
 float autocvar_g_balance_uzi_sustained_force;
 float autocvar_g_balance_uzi_sustained_refire;
 float autocvar_g_balance_uzi_sustained_spread;
+float autocvar_g_balance_uzi_reload_ammo;
+float autocvar_g_balance_uzi_reload_time;
 float autocvar_g_balance_weaponswitchdelay;
 float autocvar_g_ballistics_density_corpse;
 float autocvar_g_ballistics_density_player;
index fde9a26db2751c9dba3a4262081624dd0fccf792..e67bc214e6edefe7aa36f1b4163bdd33d11b01d0 100644 (file)
@@ -145,6 +145,31 @@ void havocbot_ai()
                bot_aimdir(v, -1);
        }
        havocbot_movetogoal();
+
+       // if the bot is not attacking, consider reloading weapons
+       if not(self.aistatus & AI_STATUS_ATTACKING)
+       {
+               float i;
+               entity e;
+
+               // we are currently holding a weapon that's not fully loaded, reload it
+               if(skill >= 2) // bots can only reload the held weapon on purpose past this skill
+               if(self.clip_load < self.clip_size)
+                       self.impulse = 20; // "press" the reload button, not sure if this is done right
+
+               // if we're not reloading a weapon, switch to any weapon in our invnetory that's not fully loaded to reload it next
+               // the code above executes next frame, starting the reloading then
+               if(skill >= 5) // bots can only look for unloaded weapons past this skill
+               if(self.clip_load >= 0) // only if we're not reloading a weapon already
+               {
+                       for(i = WEP_FIRST; i <= WEP_LAST; ++i)
+                       {
+                               e = get_weaponinfo(i);
+                               if ((e.spawnflags & WEP_FLAG_RELOADABLE) && (self.weapon_load[i] < cvar(strcat("g_balance_", e.netname, "_reload_ammo"))))
+                                       self.switchweapon = i;
+                       }
+               }
+       }
 };
 
 void havocbot_keyboard_movement(vector destorg)
@@ -914,6 +939,31 @@ void havocbot_chooseenemy()
        self.havocbot_stickenemy = TRUE;
 };
 
+float havocbot_chooseweapon_checkreload(float new_weapon)
+{
+       // bots under this skill cannot find unloaded weapons to reload idly when not in combat,
+       // so skip this for them, or they'll never get to reload their weapons at all.
+       // this also allows bots under this skill to be more stupid, and reload more often during combat :)
+       if(skill < 5)
+               return FALSE;
+
+       // if this weapon is scheduled for reloading, don't switch to it during combat
+       if (self.weapon_load[new_weapon] < 0)
+       {
+               local float i, other_weapon_available;
+               for(i = WEP_FIRST; i <= WEP_LAST; ++i)
+               {
+                       // if we are out of ammo for all other weapons, it's an emergency to switch to anything else
+                       if (weapon_action(i, WR_CHECKAMMO1) + weapon_action(i, WR_CHECKAMMO2))
+                               other_weapon_available = TRUE;
+               }
+               if(other_weapon_available)
+                       return TRUE;
+       }
+
+       return FALSE;
+}
+
 void havocbot_chooseweapon()
 {
        local float i;
@@ -946,11 +996,6 @@ void havocbot_chooseweapon()
        if(i < 1)
                return;
 
-       // Workaround for rifle reloading (..)
-       if(self.weapon == WEP_SNIPERRIFLE)
-       if(i < autocvar_g_balance_sniperrifle_reloadtime + 1)
-               return;
-
        local float w;
        local float distance; distance=bound(10,vlen(self.origin-self.enemy.origin)-200,10000);
 
@@ -983,8 +1028,9 @@ void havocbot_chooseweapon()
                if ( distance > bot_distance_far ) {
                        for(i=0; i < WEP_COUNT && bot_weapons_far[i] != -1 ; ++i){
                                w = bot_weapons_far[i];
-                               if ( client_hasweapon(self, w, TRUE, FALSE) ){
-                                       if ( self.weapon == w && combo)
+                               if ( client_hasweapon(self, w, TRUE, FALSE) )
+                               {
+                                       if ((self.weapon == w && combo) || havocbot_chooseweapon_checkreload(w))
                                                continue;
                                        self.switchweapon = w;
                                        return;
@@ -996,8 +1042,9 @@ void havocbot_chooseweapon()
                if ( distance > bot_distance_close) {
                        for(i=0; i < WEP_COUNT && bot_weapons_mid[i] != -1 ; ++i){
                                w = bot_weapons_mid[i];
-                               if ( client_hasweapon(self, w, TRUE, FALSE) ){
-                                       if ( self.weapon == w && combo)
+                               if ( client_hasweapon(self, w, TRUE, FALSE) )
+                               {
+                                       if ((self.weapon == w && combo) || havocbot_chooseweapon_checkreload(w))
                                                continue;
                                        self.switchweapon = w;
                                        return;
@@ -1008,8 +1055,9 @@ void havocbot_chooseweapon()
                // Choose weapons for close distance
                for(i=0; i < WEP_COUNT && bot_weapons_close[i] != -1 ; ++i){
                        w = bot_weapons_close[i];
-                       if ( client_hasweapon(self, w, TRUE, FALSE) ){
-                               if ( self.weapon == w && combo)
+                       if ( client_hasweapon(self, w, TRUE, FALSE) )
+                       {
+                               if ((self.weapon == w && combo) || havocbot_chooseweapon_checkreload(w))
                                        continue;
                                self.switchweapon = w;
                                return;
index b8966f6f6de56e216942d7d7258bdb80b8f9ce39..166f36dab5b23a5ae8077b8ad65eb1433d32299b 100644 (file)
@@ -1050,8 +1050,16 @@ void PutClientInServer (void)
 
                // reset fields the weapons may use
                for (j = WEP_FIRST; j <= WEP_LAST; ++j)
+               {
                        weapon_action(j, WR_RESETPLAYER);
 
+                       // all weapons must be fully loaded when we spawn
+                       entity e;
+                       e = get_weaponinfo(j);
+                       if(e.spawnflags & WEP_FLAG_RELOADABLE) // prevent accessing undefined cvars
+                               self.weapon_load[j] = cvar(strcat("g_balance_", e.netname, "_reload_ammo"));
+               }
+
                oldself = self;
                self = spot;
                        activator = oldself;
@@ -1065,8 +1073,6 @@ void PutClientInServer (void)
                self.cnt = self.switchweapon;
                self.weapon = 0;
 
-        self.wish_reload = 0;
-
                if(!self.alivetime)
                        self.alivetime = time;
        } else if(self.classname == "observer" || (g_ca && !allowed_to_spawn)) {
@@ -1109,7 +1115,7 @@ float ClientInit_SendEntity(entity to, float sf)
        WriteByte(MSG_ENTITY, autocvar_g_balance_nex_secondary); // client has to know if it should zoom or not
        WriteByte(MSG_ENTITY, autocvar_g_balance_sniperrifle_secondary); // client has to know if it should zoom or not
        WriteByte(MSG_ENTITY, serverflags); // client has to know if it should zoom or not
-       WriteByte(MSG_ENTITY, autocvar_g_balance_sniperrifle_magazinecapacity); // rifle max bullets
+       WriteByte(MSG_ENTITY, autocvar_g_balance_minelayer_limit); // minelayer max mines
        WriteCoord(MSG_ENTITY, autocvar_g_trueaim_minrange);
        return TRUE;
 }
@@ -2345,6 +2351,8 @@ void SpectateCopy(entity spectatee) {
        self.ammo_nails = spectatee.ammo_nails;
        self.ammo_rockets = spectatee.ammo_rockets;
        self.ammo_fuel = spectatee.ammo_fuel;
+       self.clip_load = spectatee.clip_load;
+       self.clip_size = spectatee.clip_size;
        self.effects = spectatee.effects & EFMASK_CHEAP; // eat performance
        self.health = spectatee.health;
        self.impulse = 0;
@@ -2358,6 +2366,9 @@ void SpectateCopy(entity spectatee) {
        self.weapons = spectatee.weapons;
        self.switchweapon = spectatee.switchweapon;
        self.weapon = spectatee.weapon;
+       self.nex_charge = spectatee.nex_charge;
+       self.nex_chargepool_ammo = spectatee.nex_chargepool_ammo;
+       self.minelayer_mines = spectatee.minelayer_mines;
        self.punchangle = spectatee.punchangle;
        self.view_ofs = spectatee.view_ofs;
        self.v_angle = spectatee.v_angle;
@@ -2947,6 +2958,10 @@ void PlayerPreThink (void)
        }
 
        target_voicescript_next(self);
+
+       // if a player goes unarmed after holding a loaded weapon, empty his clip size and remove the crosshair ammo ring
+       if(!self.weapon)
+               self.clip_load = self.clip_size = 0;
 }
 
 float isInvisibleString(string s)
index ff3903cbad4f9d8e29f5c1c5e55d39c32b2b75a2..7bde8b32f7e8633acad1f53b1befd14e9ba20e30 100644 (file)
@@ -98,7 +98,7 @@ void ImpulseCommands (void)
                                        W_PreviousWeapon (1);
                                        break;
                                case 20:
-                                       W_Reload ();
+                                       W_TriggerReload ();
                                        break;
                        }
                }
index 864dd77fce788cc1696e7bbdee82ac3309748a89..7b0bbce3c8ff83ab2b4314ab087b252f5a10b30f 100644 (file)
@@ -1,6 +1,6 @@
-void W_Reload()
+void W_TriggerReload()
 {
-    self.wish_reload = 1;
+    weapon_action(self.weapon, WR_RELOAD);
 }
 
 // switch between weapons
@@ -15,7 +15,7 @@ void W_SwitchWeapon(float imp)
        }
        else
        {
-               W_Reload();
+               W_TriggerReload();
        }
 };
 
@@ -221,6 +221,13 @@ string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vecto
                                        wep.ammofield = thisammo;
                                        own.ammofield -= thisammo;
                                        s = strcat(s, " and ", ftos(thisammo), " ", Item_CounterFieldName(j));
+
+                                       // if our weapon is loaded, give its load back to the player
+                                       if(self.weapon_load[self.weapon] > 0)
+                                       {
+                                               own.ammofield += self.weapon_load[self.weapon];
+                                               self.weapon_load[self.weapon] = -1; // schedule the weapon for reloading
+                                       }
                                }
                        }
                        s = substring(s, 5, -1);
@@ -340,6 +347,18 @@ void W_WeaponFrame()
                        setanim(self, self.anim_draw, FALSE, TRUE, TRUE);
                        self.weaponentity.state = WS_RAISE;
                        weapon_action(self.switchweapon, WR_SETUP);
+
+                       // set our clip load to the load of the weapon we switched to, if it's reloadable
+                       entity e;
+                       e = get_weaponinfo(self.switchweapon);
+                       if(e.spawnflags & WEP_FLAG_RELOADABLE && cvar(strcat("g_balance_", e.netname, "_reload_ammo"))) // prevent accessing undefined cvars
+                       {
+                               self.clip_load = self.weapon_load[self.switchweapon];
+                               self.clip_size = cvar(strcat("g_balance_", e.netname, "_reload_ammo"));
+                       }
+                       else
+                               self.clip_load = self.clip_size = 0;
+
                        // VorteX: add player model weapon select frame here
                        // setcustomframe(PlayerWeaponRaise);
                        weapon_thinkf(WFRAME_IDLE, autocvar_g_balance_weaponswitchdelay, w_ready);
index 057c5cb1dc767fde25d85b66a61ca8ee519cbf32..2e5a8434d74a91848f20eb9891a3ba735948dfc6 100644 (file)
@@ -1611,3 +1611,127 @@ void W_SetupProjectileVelocity(entity missile, float pSpeed, float spread)
 
 #define W_SETUPPROJECTILEVELOCITY_UP(m,s) W_SetupProjectileVelocityEx(m, w_shotdir, v_up, cvar(#s "_speed"), cvar(#s "_speed_up"), cvar(#s "_speed_z"), cvar(#s "_spread"), FALSE)
 #define W_SETUPPROJECTILEVELOCITY(m,s) W_SetupProjectileVelocityEx(m, w_shotdir, v_up, cvar(#s "_speed"), 0, 0, cvar(#s "_spread"), FALSE)
+
+void W_DecreaseAmmo(.float ammo_type, float ammo_use, float ammo_reload)
+{
+       if((self.items & IT_UNLIMITED_WEAPON_AMMO) && !ammo_reload)
+               return;
+
+       // if this weapon is reloadable, decrease its load. Else decrease the player's ammo
+       if(ammo_reload)
+       {
+               self.clip_load -= ammo_use;
+               self.weapon_load[self.weapon] = self.clip_load;
+       }
+       else
+               self.(self.current_ammo) -= ammo_use;
+}
+
+// weapon reloading code
+
+.float reload_ammo_amount, reload_ammo_min, reload_time;
+.float reload_complain;
+.string reload_sound;
+
+void W_ReloadedAndReady()
+{
+       // finish the reloading process, and do the ammo transfer
+
+       self.clip_load = self.old_clip_load; // restore the ammo counter, in case we still had ammo in the weapon before reloading
+
+       // if the gun uses no ammo, max out weapon load, else decrease ammo as we increase weapon load
+       if(!self.reload_ammo_min)
+               self.clip_load = self.reload_ammo_amount;
+       else
+       {
+               while(self.clip_load < self.reload_ammo_amount && self.(self.current_ammo)) // make sure we don't add more ammo than we have
+               {
+                       self.clip_load += 1;
+                       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
+                               self.(self.current_ammo) -= 1;
+               }
+       }
+       self.weapon_load[self.weapon] = self.clip_load;
+
+       // do not set ATTACK_FINISHED in reload code any more. This causes annoying delays if eg: You start reloading a weapon,
+       // then quickly switch to another weapon and back. Reloading is canceled, but the reload delay is still there,
+       // so your weapon is disabled for a few seconds without reason
+
+       //ATTACK_FINISHED(self) -= self.reload_time - 1;
+
+       w_ready();
+}
+
+void W_Reload(float sent_ammo_min, float sent_ammo_amount, float sent_time, string sent_sound)
+{
+       // set global values to work with
+
+       self.reload_ammo_min = sent_ammo_min;
+       self.reload_ammo_amount = sent_ammo_amount;
+       self.reload_time = sent_time;
+       self.reload_sound = sent_sound;
+
+       // check if we meet the necessary conditions to reload
+
+       entity e;
+       e = get_weaponinfo(self.weapon);
+
+       // don't reload weapons that don't have the RELOADABLE flag
+       if not(e.spawnflags & WEP_FLAG_RELOADABLE)
+       {
+               dprint("Warning: Attempted to reload a weapon that does not have the WEP_FLAG_RELOADABLE flag. Fix your code!\n");
+               return;
+       }
+
+       // return if reloading is disabled for this weapon
+       if(!self.reload_ammo_amount)
+               return;
+
+       // our weapon is fully loaded, no need to reload
+       if (self.clip_load >= self.reload_ammo_amount)
+               return;
+
+       // no ammo, so nothing to load
+       if(!self.(self.current_ammo) && self.reload_ammo_min)
+       {
+               if(clienttype(self) == CLIENTTYPE_REAL && self.reload_complain < time)
+               {
+                       play2(self, "weapons/unavailable.wav");
+                       sprint(self, strcat("You don't have enough ammo to reload the ^2", W_Name(self.weapon), "\n"));
+                       self.reload_complain = time + 1;
+               }
+               // switch away if the amount of ammo is not enough to keep using this weapon
+               if not(weapon_action(self.weapon, WR_CHECKAMMO1) + weapon_action(self.weapon, WR_CHECKAMMO2))
+               {
+                       self.clip_load = -1; // reload later
+                       W_SwitchToOtherWeapon(self);
+               }
+               return;
+       }
+
+       if (self.weaponentity)
+       {
+               if (self.weaponentity.wframe == WFRAME_RELOAD)
+                       return;
+
+               // allow switching away while reloading, but this will cause a new reload!
+               self.weaponentity.state = WS_READY;
+       }
+
+       // now begin the reloading process
+
+       sound (self, CHAN_WEAPON2, self.reload_sound, VOL_BASE, ATTN_NORM);
+
+       // do not set ATTACK_FINISHED in reload code any more. This causes annoying delays if eg: You start reloading a weapon,
+       // then quickly switch to another weapon and back. Reloading is canceled, but the reload delay is still there,
+       // so your weapon is disabled for a few seconds without reason
+
+       //ATTACK_FINISHED(self) = max(time, ATTACK_FINISHED(self)) + self.reload_time + 1;
+
+       weapon_thinkf(WFRAME_RELOAD, self.reload_time, W_ReloadedAndReady);
+
+       if(self.clip_load < 0)
+               self.clip_load = 0;
+       self.old_clip_load = self.clip_load;
+       self.clip_load = self.weapon_load[self.weapon] = -1;
+}
\ No newline at end of file
index 32ff5ab9879b081ac040d18da992e4442a3feeb1..ff6658d2959f3b1cdec4dc0852253d16e979f582 100644 (file)
@@ -611,8 +611,14 @@ float client_cefc_accumulator;
 float client_cefc_accumulatortime;
 #endif
 
-.float sniperrifle_bulletcounter;
-.float wish_reload;
+..float current_ammo;
+
+.float weapon_load[WEP_MAXCOUNT]; FTEQCC_YOU_SUCK_THIS_IS_NOT_UNREFERENCED(weapon_load);
+.float ammo_none; // used by the reloading system, must always be 0
+.float clip_load;
+.float old_clip_load;
+.float clip_size;
+.float minelayer_mines;
 
 #define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_CORPSE; (e).dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE
 // when doing this, hagar can go through clones
index 84402f0139441e3eda2e1e2945443006a013c67a..4c41852ebba66057b10d7d906c5b199a55994005 100644 (file)
@@ -823,10 +823,12 @@ void spawnfunc_worldspawn (void)
        addstat(STAT_FUEL, AS_INT, ammo_fuel);
        addstat(STAT_SHOTORG, AS_INT, stat_shotorg);
        addstat(STAT_LEADLIMIT, AS_FLOAT, stat_leadlimit);
-       addstat(STAT_BULLETS_LOADED, AS_INT, sniperrifle_bulletcounter);
+       addstat(STAT_WEAPON_CLIPLOAD, AS_INT, clip_load);
+       addstat(STAT_WEAPON_CLIPSIZE, AS_INT, clip_size);
        addstat(STAT_LAST_PICKUP, AS_FLOAT, last_pickup);
        addstat(STAT_HIT_TIME, AS_FLOAT, hit_time);
        addstat(STAT_TYPEHIT_TIME, AS_FLOAT, typehit_time);
+       addstat(STAT_LAYED_MINES, AS_INT, minelayer_mines);
 
        addstat(STAT_NEX_CHARGE, AS_FLOAT, nex_charge);
        addstat(STAT_NEX_CHARGEPOOL, AS_FLOAT, nex_chargepool_ammo);
index 364c925991a893ccb2a75749cb57d9bd8a573104..4cf479fa9fdaf34896db02d29aa555d8ade6a77d 100644 (file)
@@ -921,7 +921,11 @@ void readplayerstartcvars()
                        s = "most";
        }
 
-       if (s == "off")
+       if (s == "0" || s == "")
+       {
+               // no arena
+       }
+       else if (s == "off")
        {
                // forcibly turn off weaponarena
        }
@@ -1022,23 +1026,11 @@ void readplayerstartcvars()
        }
        else if(start_items & IT_UNLIMITED_WEAPON_AMMO)
        {
-               for (j = WEP_FIRST; j <= WEP_LAST; ++j)
-               {
-                       e = get_weaponinfo(j);
-                       if(start_weapons & e.weapons)
-                       {
-                               if(e.items & IT_ROCKETS)
-                                       start_ammo_rockets = 999;
-                               if(e.items & IT_SHELLS)
-                                       start_ammo_shells = 999;
-                               if(e.items & IT_CELLS)
-                                       start_ammo_cells = 999;
-                               if(e.items & IT_NAILS)
-                                       start_ammo_nails = 999;
-                               if(e.items & IT_FUEL)
-                                       start_ammo_fuel = 999;
-                       }
-               }
+               start_ammo_rockets = 999;
+               start_ammo_shells = 999;
+               start_ammo_cells = 999;
+               start_ammo_nails = 999;
+               start_ammo_fuel = 999;
        }
        else
        {
@@ -1664,6 +1656,7 @@ void precache()
     precache_model ("models/sprites/10.spr32");
 
     // common weapon precaches
+       precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound here
     precache_sound ("weapons/weapon_switch.wav");
     precache_sound ("weapons/weaponpickup.wav");
     precache_sound ("weapons/unavailable.wav");
index 5cd714b652a64f832e7c03633e40567596f6111f..5a591e03532d7ab0847c1c2ec656b900abb9c485 100644 (file)
@@ -96,7 +96,7 @@ void Item_Show (entity e, float mode)
        }
        else if((e.flags & FL_WEAPON) && (g_weapon_stay == 3))
        {
-               // make the item translucent green and not touchable
+               // make the item translucent and not touchable
                e.model = e.mdl;
                e.solid = SOLID_TRIGGER; // can STILL be picked up!
                e.colormod = '0 0 0';
@@ -108,7 +108,7 @@ void Item_Show (entity e, float mode)
        }
        else if(g_ghost_items)
        {
-               // make the item translucent green and not touchable
+               // make the item translucent and not touchable
                e.model = e.mdl;
                e.solid = SOLID_NOT;
                e.colormod = stov(autocvar_g_ghost_items_color);
@@ -123,7 +123,7 @@ void Item_Show (entity e, float mode)
                // hide the item completely
                e.model = string_null;
                e.solid = SOLID_NOT;
-               e.colormod = stov(autocvar_g_ghost_items_color);
+               e.colormod = '0 0 0';
                e.glowmod = e.colormod;
                e.alpha = 0;
                e.customizeentityforclient = func_null;
@@ -395,7 +395,7 @@ float Item_GiveTo(entity item, entity player)
                }
 
                if (item.flags & FL_WEAPON)
-               if ((it = item.weapons - (item.weapons & player.weapons)) || g_pickup_weapons_anyway)
+               if ((it = item.weapons - (item.weapons & player.weapons)) || (g_pickup_weapons_anyway && !(g_weapon_stay == 3 && !e.spawnshieldtime)))
                {
                        pickedup = TRUE;
                        for(i = WEP_FIRST; i <= WEP_LAST; ++i)
index 0363d35a091403521432241e81b531d544f085ae..f9321b8dbf0fdbab6b3af8caf9b833af7add3c20 100644 (file)
@@ -528,7 +528,7 @@ void PrintWelcomeMessage(entity pl)
        if(g_weapon_stay && !g_cts)
                modifications = strcat(modifications, ", Weapons stay");
        if(g_bloodloss > 0)
-               modifications = strcat(modifications, ", Bloodloss");
+               modifications = strcat(modifications, ", Blood loss");
        if(g_jetpack)
                modifications = strcat(modifications, ", Jet pack");
        modifications = substring(modifications, 2, strlen(modifications) - 2);
index 93a110dad8d2e44273c06ef6318e74021e528167..5f5037ceec0af2e3243fb9aecd2f48095bb2b3ba 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(CRYLINK, w_crylink, IT_CELLS, 6, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "crylink", "crylink", _("Crylink"));
+REGISTER_WEAPON(CRYLINK, w_crylink, IT_CELLS, 6, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "crylink", "crylink", _("Crylink"));
 #else
 #ifdef SVQC
 .float gravity;
@@ -329,8 +329,7 @@ void W_Crylink_Attack (void)
        vector forward, right, up;
        float maxdmg;
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_cells = self.ammo_cells - autocvar_g_balance_crylink_primary_ammo;
+       W_DecreaseAmmo(ammo_cells, autocvar_g_balance_crylink_primary_ammo, autocvar_g_balance_crylink_reload_ammo);
 
        maxdmg = autocvar_g_balance_crylink_primary_damage*autocvar_g_balance_crylink_primary_shots;
        maxdmg *= 1 + autocvar_g_balance_crylink_primary_bouncedamagefactor * autocvar_g_balance_crylink_primary_bounces;
@@ -433,8 +432,7 @@ void W_Crylink_Attack2 (void)
        local entity proj, prevproj, firstproj;
        float maxdmg;
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_cells = self.ammo_cells - autocvar_g_balance_crylink_secondary_ammo;
+       W_DecreaseAmmo(ammo_cells, autocvar_g_balance_crylink_secondary_ammo, autocvar_g_balance_crylink_reload_ammo);
 
        maxdmg = autocvar_g_balance_crylink_secondary_damage*autocvar_g_balance_crylink_secondary_shots;
        maxdmg *= 1 + autocvar_g_balance_crylink_secondary_bouncedamagefactor * autocvar_g_balance_crylink_secondary_bounces;
@@ -522,6 +520,7 @@ void spawnfunc_weapon_crylink (void)
 
 float w_crylink(float req)
 {
+       float ammo_amount;
        if (req == WR_AIM)
        {
                if (random() < 0.10)
@@ -531,7 +530,9 @@ float w_crylink(float req)
        }
        else if (req == WR_THINK)
        {
-               if (self.BUTTON_ATCK)
+               if(autocvar_g_balance_crylink_reload_ammo && self.clip_load < min(autocvar_g_balance_crylink_primary_ammo, autocvar_g_balance_crylink_secondary_ammo)) // forced reload
+                       weapon_action(self.weapon, WR_RELOAD);
+               else if (self.BUTTON_ATCK)
                {
                        if (!self.crylink_waitrelease)
                        if (weapon_prepareattack(0, autocvar_g_balance_crylink_primary_refire))
@@ -598,22 +599,36 @@ float w_crylink(float req)
                precache_sound ("weapons/crylink_fire.wav");
                precache_sound ("weapons/crylink_fire2.wav");
                precache_sound ("weapons/crylink_linkjoin.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
        }
        else if (req == WR_SETUP)
+       {
                weapon_setup(WEP_CRYLINK);
+               self.current_ammo = ammo_cells;
+       }
        else if (req == WR_CHECKAMMO1)
        {
                // don't "run out of ammo" and switch weapons while waiting for release
                if(self.crylink_lastgroup && self.crylink_waitrelease)
                        return TRUE;
-               return self.ammo_cells >= autocvar_g_balance_crylink_primary_ammo;
+
+               ammo_amount = self.ammo_cells >= autocvar_g_balance_crylink_primary_ammo;
+               ammo_amount += self.weapon_load[WEP_CRYLINK] >= autocvar_g_balance_crylink_primary_ammo;
+               return ammo_amount;
        }
        else if (req == WR_CHECKAMMO2)
        {
                // don't "run out of ammo" and switch weapons while waiting for release
                if(self.crylink_lastgroup && self.crylink_waitrelease)
                        return TRUE;
-               return self.ammo_cells >= autocvar_g_balance_crylink_secondary_ammo;
+
+               ammo_amount = self.ammo_cells >= autocvar_g_balance_crylink_secondary_ammo;
+               ammo_amount += self.weapon_load[WEP_CRYLINK] >= autocvar_g_balance_crylink_secondary_ammo;
+               return ammo_amount;
+       }
+       else if (req == WR_RELOAD)
+       {
+               W_Reload(min(autocvar_g_balance_crylink_primary_ammo, autocvar_g_balance_crylink_secondary_ammo), autocvar_g_balance_crylink_reload_ammo, autocvar_g_balance_crylink_reload_time, "weapons/reload.wav");
        }
        return TRUE;
 };
index f5491f39aa1054b2c112e70581731437f631d0f0..711c44c8bf363a39bd8672e5c9908c6b2993f9db 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(ELECTRO, w_electro, IT_CELLS, 5, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "electro", "electro", _("Electro"));
+REGISTER_WEAPON(ELECTRO, w_electro, IT_CELLS, 5, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "electro", "electro", _("Electro"));
 #else
 #ifdef SVQC
 .float electro_count;
@@ -110,6 +110,8 @@ void W_Electro_Attack()
 {
        local entity proj;
 
+       W_DecreaseAmmo(ammo_cells, autocvar_g_balance_electro_primary_ammo, autocvar_g_balance_electro_reload_ammo);
+
        W_SetupShot_ProjectileSize (self, '0 0 -3', '0 0 -3', FALSE, 2, "weapons/electro_fire.wav", CHAN_WEAPON, autocvar_g_balance_electro_primary_damage);
 
        pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
@@ -126,8 +128,6 @@ void W_Electro_Attack()
        proj.projectiledeathtype = WEP_ELECTRO;
        setorigin(proj, w_shotorg);
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_cells = self.ammo_cells - autocvar_g_balance_electro_primary_ammo;
        proj.movetype = MOVETYPE_FLY;
        W_SETUPPROJECTILEVELOCITY(proj, g_balance_electro_primary);
        proj.angles = vectoangles(proj.velocity);
@@ -147,6 +147,8 @@ void W_Electro_Attack2()
 {
        local entity proj;
 
+       W_DecreaseAmmo(ammo_cells, autocvar_g_balance_electro_secondary_ammo, autocvar_g_balance_electro_reload_ammo);
+
        W_SetupShot_ProjectileSize (self, '0 0 -4', '0 0 -4', FALSE, 2, "weapons/electro_fire2.wav", CHAN_WEAPON, autocvar_g_balance_electro_secondary_damage);
 
        w_shotdir = v_forward; // no TrueAim for grenades please
@@ -165,8 +167,6 @@ void W_Electro_Attack2()
        proj.projectiledeathtype = WEP_ELECTRO | HITTYPE_SECONDARY;
        setorigin(proj, w_shotorg);
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_cells = self.ammo_cells - autocvar_g_balance_electro_secondary_ammo;
        //proj.glow_size = 50;
        //proj.glow_color = 45;
        proj.movetype = MOVETYPE_BOUNCE;
@@ -193,7 +193,7 @@ void W_Electro_Attack2()
        CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO, FALSE); // no culling, it has sound
 
        other = proj; MUTATOR_CALLHOOK(EditProjectile);
-       }
+}
 
 .vector hook_start, hook_end;
 float lgbeam_send(entity to, float sf)
@@ -224,39 +224,64 @@ float lgbeam_send(entity to, float sf)
 }
 .entity lgbeam;
 .float prevlgfire;
+float lgbeam_checkammo()
+{
+       if(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)
+               return TRUE;
+       else if(autocvar_g_balance_electro_reload_ammo)
+               return self.owner.clip_load > 0;
+       else
+               return self.owner.ammo_cells > 0;
+}
+
 void lgbeam_think()
 {
-       self.owner.prevlgfire = time;
-       if (self != self.owner.lgbeam)
+       entity owner_player;
+       owner_player = self.owner;
+
+       owner_player.prevlgfire = time;
+       if (self != owner_player.lgbeam)
        {
                remove(self);
                return;
        }
-       if (self.owner.weaponentity.state != WS_INUSE || (self.owner.ammo_cells <= 0 && !(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)) || self.owner.deadflag != DEAD_NO || !self.owner.BUTTON_ATCK || self.owner.freezetag_frozen)
+
+       if (owner_player.weaponentity.state != WS_INUSE || !lgbeam_checkammo() || owner_player.deadflag != DEAD_NO || !owner_player.BUTTON_ATCK || owner_player.freezetag_frozen)
        {
-               if(self == self.owner.lgbeam)
-                       self.owner.lgbeam = world;
+               if(self == owner_player.lgbeam)
+                       owner_player.lgbeam = world;
                remove(self);
                return;
        }
 
        self.nextthink = time;
 
-       makevectors(self.owner.v_angle);
+       makevectors(owner_player.v_angle);
 
        float dt, f;
        dt = frametime;
-       if not(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)
+
+       // if this weapon is reloadable, decrease its load. Else decrease the player's ammo
+       if not(owner_player.items & IT_UNLIMITED_WEAPON_AMMO)
        {
                if(autocvar_g_balance_electro_primary_ammo)
                {
-                       dt = min(dt, self.owner.ammo_cells / autocvar_g_balance_electro_primary_ammo);
-                       self.owner.ammo_cells = max(0, self.owner.ammo_cells - autocvar_g_balance_electro_primary_ammo * frametime);
+                       if(autocvar_g_balance_electro_reload_ammo)
+                       {
+                               dt = min(dt, owner_player.clip_load / autocvar_g_balance_electro_primary_ammo);
+                               owner_player.clip_load = max(0, owner_player.clip_load - autocvar_g_balance_electro_primary_ammo * frametime);
+                               owner_player.weapon_load[WEP_ELECTRO] = owner_player.clip_load;
+                       }
+                       else
+                       {
+                               dt = min(dt, owner_player.ammo_cells / autocvar_g_balance_electro_primary_ammo);
+                               owner_player.ammo_cells = max(0, owner_player.ammo_cells - autocvar_g_balance_electro_primary_ammo * frametime);
+                       }
                }
        }
 
-       W_SetupShot_Range(self.owner, TRUE, 0, "", 0, autocvar_g_balance_electro_primary_damage * dt, autocvar_g_balance_electro_primary_range);
-       WarpZone_traceline_antilag(self.owner, w_shotorg, w_shotend, MOVE_NORMAL, self.owner, ANTILAG_LATENCY(self.owner));
+       W_SetupShot_Range(owner_player, TRUE, 0, "", 0, autocvar_g_balance_electro_primary_damage * dt, autocvar_g_balance_electro_primary_range);
+       WarpZone_traceline_antilag(owner_player, w_shotorg, w_shotend, MOVE_NORMAL, owner_player, ANTILAG_LATENCY(owner_player));
 
        // apply the damage
        if(trace_ent)
@@ -266,11 +291,11 @@ void lgbeam_think()
 
                f = ExponentialFalloff(autocvar_g_balance_electro_primary_falloff_mindist, autocvar_g_balance_electro_primary_falloff_maxdist, autocvar_g_balance_electro_primary_falloff_halflifedist, vlen(WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos) - w_shotorg));
 
-               if(accuracy_isgooddamage(self.owner, trace_ent))
-                       accuracy_add(self.owner, WEP_ELECTRO, 0, autocvar_g_balance_electro_primary_damage * dt * f);
-               Damage (trace_ent, self.owner, self.owner, autocvar_g_balance_electro_primary_damage * dt * f, WEP_ELECTRO, trace_endpos, force * dt);
+               if(accuracy_isgooddamage(owner_player, trace_ent))
+                       accuracy_add(owner_player, WEP_ELECTRO, 0, autocvar_g_balance_electro_primary_damage * dt * f);
+               Damage (trace_ent, owner_player, owner_player, autocvar_g_balance_electro_primary_damage * dt * f, WEP_ELECTRO, trace_endpos, force * dt);
        }
-       W_Plasma_TriggerCombo(trace_endpos, autocvar_g_balance_electro_primary_comboradius, self.owner);
+       W_Plasma_TriggerCombo(trace_endpos, autocvar_g_balance_electro_primary_comboradius, owner_player);
 
        // draw effect
        if(w_shotorg != self.hook_start)
@@ -344,6 +369,7 @@ void w_electro_checkattack()
 .float BUTTON_ATCK_prev;
 float w_electro(float req)
 {
+       float ammo_amount;
        if (req == WR_AIM)
        {
                self.BUTTON_ATCK=FALSE;
@@ -376,6 +402,24 @@ float w_electro(float req)
        }
        else if (req == WR_THINK)
        {
+               if(autocvar_g_balance_electro_reload_ammo) // forced reload
+               {
+                       if(autocvar_g_balance_electro_lightning)
+                       {
+                               if(self.clip_load > 0)
+                                       ammo_amount = 1;
+                       }
+                       else if(self.clip_load >= autocvar_g_balance_electro_primary_ammo)
+                               ammo_amount = 1;
+                       if(self.clip_load >= autocvar_g_balance_electro_secondary_ammo)
+                               ammo_amount += 1;
+
+                       if(!ammo_amount)
+                       {
+                               weapon_action(self.weapon, WR_RELOAD);
+                               return FALSE;
+                       }
+               }
                if (self.BUTTON_ATCK)
                {
                        if(autocvar_g_balance_electro_lightning)
@@ -417,16 +461,18 @@ float w_electro(float req)
                                }
                                self.BUTTON_ATCK_prev = 0;
                        }
-               }
 
-               if (self.BUTTON_ATCK2)
-               if (time >= self.electro_secondarytime)
-               if (weapon_prepareattack(1, autocvar_g_balance_electro_secondary_refire))
-               {
-                       W_Electro_Attack2();
-                       self.electro_count = autocvar_g_balance_electro_secondary_count;
-                       weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_electro_secondary_animtime, w_electro_checkattack);
-                       self.electro_secondarytime = time + autocvar_g_balance_electro_secondary_refire2 * W_WeaponRateFactor();
+                       if (self.BUTTON_ATCK2)
+                       {
+                               if (time >= self.electro_secondarytime)
+                               if (weapon_prepareattack(1, autocvar_g_balance_electro_secondary_refire))
+                               {
+                                       W_Electro_Attack2();
+                                       self.electro_count = autocvar_g_balance_electro_secondary_count;
+                                       weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_electro_secondary_animtime, w_electro_checkattack);
+                                       self.electro_secondarytime = time + autocvar_g_balance_electro_secondary_refire2 * W_WeaponRateFactor();
+                               }
+                       }
                }
        }
        else if (req == WR_PRECACHE)
@@ -439,26 +485,48 @@ float w_electro(float req)
                precache_sound ("weapons/electro_fire2.wav");
                precache_sound ("weapons/electro_impact.wav");
                precache_sound ("weapons/electro_impact_combo.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
                if(autocvar_g_balance_electro_lightning)
                {
                        precache_sound ("weapons/lgbeam_fire.wav");
                }
        }
        else if (req == WR_SETUP)
+       {
                weapon_setup(WEP_ELECTRO);
+               self.current_ammo = ammo_cells;
+       }
        else if (req == WR_CHECKAMMO1)
        {
                if(autocvar_g_balance_electro_lightning)
-                       return !autocvar_g_balance_electro_primary_ammo || (self.ammo_cells > 0);
+               {
+                       if(!autocvar_g_balance_electro_primary_ammo)
+                               ammo_amount = 1;
+                       else
+                               ammo_amount = self.ammo_cells > 0;
+                       ammo_amount += self.weapon_load[WEP_ELECTRO] > 0;
+               }
                else
-                       return self.ammo_cells >= autocvar_g_balance_electro_primary_ammo;
+               {
+                       ammo_amount = self.ammo_cells >= autocvar_g_balance_electro_primary_ammo;
+                       ammo_amount += self.weapon_load[WEP_ELECTRO] >= autocvar_g_balance_electro_primary_ammo;
+               }
+               return ammo_amount;
        }
        else if (req == WR_CHECKAMMO2)
-               return self.ammo_cells >= autocvar_g_balance_electro_secondary_ammo;
+       {
+               ammo_amount = self.ammo_cells >= autocvar_g_balance_electro_secondary_ammo;
+               ammo_amount += self.weapon_load[WEP_ELECTRO] >= autocvar_g_balance_electro_secondary_ammo;
+               return ammo_amount;
+       }
        else if (req == WR_RESETPLAYER)
        {
                self.electro_secondarytime = time;
        }
+       else if (req == WR_RELOAD)
+       {
+               W_Reload(min(autocvar_g_balance_electro_primary_ammo, autocvar_g_balance_electro_secondary_ammo), autocvar_g_balance_electro_reload_ammo, autocvar_g_balance_electro_reload_time, "weapons/reload.wav");
+       }
        return TRUE;
 };
 #endif
index 73ff1595a79752e395cbd8b3e9c8737b3d58fea0..4408ccf88f202ec907dc5252f9bb4545a8a5fa35 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(FIREBALL, w_fireball, IT_FUEL, 9, WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "fireball", "fireball", _("Fireball"));
+REGISTER_WEAPON(FIREBALL, w_fireball, IT_FUEL, 9, WEP_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "fireball", "fireball", _("Fireball"));
 #else
 #ifdef SVQC
 .float bot_primary_fireballmooth; // whatever a mooth is
@@ -194,8 +194,7 @@ void W_Fireball_Attack1_Frame1()
 
 void W_Fireball_Attack1_Frame0()
 {
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_fuel = self.ammo_fuel - autocvar_g_balance_fireball_primary_ammo;
+       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, CHAN_WEAPON, "weapons/fireball_prefire2.wav", VOL_BASE, ATTN_NORM);
@@ -246,8 +245,7 @@ void W_Fireball_Attack2()
        vector f_diff;
        float c;
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_fuel = self.ammo_fuel - autocvar_g_balance_fireball_secondary_ammo;
+       W_DecreaseAmmo(ammo_fuel, autocvar_g_balance_fireball_secondary_ammo, autocvar_g_balance_fireball_reload_ammo);
 
        c = mod(self.bulletcounter, 4);
        switch(c)
@@ -304,6 +302,7 @@ void spawnfunc_weapon_fireball (void)
 
 float w_fireball(float req)
 {
+       float ammo_amount;
        if (req == WR_AIM)
        {
                self.BUTTON_ATCK = FALSE;
@@ -327,18 +326,24 @@ float w_fireball(float req)
        }
        else if (req == WR_THINK)
        {
-               if (self.BUTTON_ATCK)
-               if (time >= self.fireball_primarytime)
-               if (weapon_prepareattack(0, autocvar_g_balance_fireball_primary_refire))
+               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)
                {
-                       W_Fireball_Attack1_Frame0();
-                       self.fireball_primarytime = time + autocvar_g_balance_fireball_primary_refire2;
+                       if (time >= self.fireball_primarytime)
+                       if (weapon_prepareattack(0, autocvar_g_balance_fireball_primary_refire))
+                       {
+                               W_Fireball_Attack1_Frame0();
+                               self.fireball_primarytime = time + autocvar_g_balance_fireball_primary_refire2;
+                       }
                }
-               if (self.BUTTON_ATCK2)
-               if (weapon_prepareattack(1, autocvar_g_balance_fireball_secondary_refire))
+               else if (self.BUTTON_ATCK2)
                {
-                       W_Fireball_Attack2();
-                       weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_fireball_secondary_animtime, w_ready);
+                       if (weapon_prepareattack(1, autocvar_g_balance_fireball_secondary_refire))
+                       {
+                               W_Fireball_Attack2();
+                               weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_fireball_secondary_animtime, w_ready);
+                       }
                }
        }
        else if (req == WR_PRECACHE)
@@ -350,17 +355,37 @@ float w_fireball(float req)
                precache_sound ("weapons/fireball_fire.wav");
                precache_sound ("weapons/fireball_fire2.wav");
                precache_sound ("weapons/fireball_prefire2.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
        }
        else if (req == WR_SETUP)
+       {
                weapon_setup(WEP_FIREBALL);
+               self.current_ammo = ammo_fuel;
+       }
        else if (req == WR_CHECKAMMO1)
-               return self.ammo_fuel >= autocvar_g_balance_fireball_primary_ammo;
+       {
+               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;
+       }
        else if (req == WR_CHECKAMMO2)
-               return self.ammo_fuel >= autocvar_g_balance_fireball_secondary_ammo;
+       {
+               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;
+       }
        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 d5f6c5d6827f13f213330b5012a74bdbf2fd9344..017a41a87a9a2bbb08ed1bcca99c1914227e439a 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(GRENADE_LAUNCHER, w_glauncher, IT_ROCKETS, 4, WEP_FLAG_NORMAL | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "gl", "grenadelauncher", _("Mortar"))
+REGISTER_WEAPON(GRENADE_LAUNCHER, w_glauncher, IT_ROCKETS, 4, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "gl", "grenadelauncher", _("Mortar"))
 #else
 #ifdef SVQC
 .float gl_detonate_later;
@@ -161,8 +161,8 @@ void W_Grenade_Attack (void)
 {
        local entity gren;
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_grenadelauncher_primary_ammo;
+       W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_grenadelauncher_primary_ammo, autocvar_g_balance_grenadelauncher_reload_ammo);
+
        W_SetupShot_ProjectileSize (self, '-3 -3 -3', '3 3 3', FALSE, 4, "weapons/grenade_fire.wav", CHAN_WEAPON, autocvar_g_balance_grenadelauncher_primary_damage);
        w_shotdir = v_forward; // no TrueAim for grenades please
 
@@ -208,8 +208,8 @@ void W_Grenade_Attack2 (void)
 {
        local entity gren;
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_grenadelauncher_secondary_ammo;
+       W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_grenadelauncher_secondary_ammo, autocvar_g_balance_grenadelauncher_reload_ammo);
+
        W_SetupShot_ProjectileSize (self, '-3 -3 -3', '3 3 3', FALSE, 4, "weapons/grenade_fire.wav", CHAN_WEAPON, autocvar_g_balance_grenadelauncher_secondary_damage);
        w_shotdir = v_forward; // no TrueAim for grenades please
 
@@ -260,6 +260,7 @@ float w_glauncher(float req)
 {
        entity nade;
        float nadefound;
+       float ammo_amount;
 
        if (req == WR_AIM)
        {
@@ -284,13 +285,17 @@ float w_glauncher(float req)
        }
        else if (req == WR_THINK)
        {
-               if (self.BUTTON_ATCK)
-               if (weapon_prepareattack(0, autocvar_g_balance_grenadelauncher_primary_refire))
+               if(autocvar_g_balance_grenadelauncher_reload_ammo && self.clip_load < min(autocvar_g_balance_grenadelauncher_primary_ammo, autocvar_g_balance_grenadelauncher_secondary_ammo)) // forced reload
+                       weapon_action(self.weapon, WR_RELOAD);
+               else if (self.BUTTON_ATCK)
                {
-                       W_Grenade_Attack();
-                       weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_grenadelauncher_primary_animtime, w_ready);
+                       if (weapon_prepareattack(0, autocvar_g_balance_grenadelauncher_primary_refire))
+                       {
+                               W_Grenade_Attack();
+                               weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_grenadelauncher_primary_animtime, w_ready);
+                       }
                }
-               if (self.BUTTON_ATCK2)
+               else if (self.BUTTON_ATCK2)
                {
                        if (cvar("g_balance_grenadelauncher_secondary_remote_detonateprimary"))
                        {
@@ -326,13 +331,29 @@ float w_glauncher(float req)
                precache_sound ("weapons/grenade_bounce6.wav");
                precache_sound ("weapons/grenade_stick.wav");
                precache_sound ("weapons/grenade_fire.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
        }
        else if (req == WR_SETUP)
+       {
                weapon_setup(WEP_GRENADE_LAUNCHER);
+               self.current_ammo = ammo_rockets;
+       }
        else if (req == WR_CHECKAMMO1)
-               return self.ammo_rockets >= autocvar_g_balance_grenadelauncher_primary_ammo;
+       {
+               ammo_amount = self.ammo_rockets >= autocvar_g_balance_grenadelauncher_primary_ammo;
+               ammo_amount += self.weapon_load[WEP_GRENADE_LAUNCHER] >= autocvar_g_balance_grenadelauncher_primary_ammo;
+               return ammo_amount;
+       }
        else if (req == WR_CHECKAMMO2)
-               return self.ammo_rockets >= autocvar_g_balance_grenadelauncher_secondary_ammo;
+       {
+               ammo_amount = self.ammo_rockets >= autocvar_g_balance_grenadelauncher_secondary_ammo;
+               ammo_amount += self.weapon_load[WEP_GRENADE_LAUNCHER] >= autocvar_g_balance_grenadelauncher_secondary_ammo;
+               return ammo_amount;
+       }
+       else if (req == WR_RELOAD)
+       {
+               W_Reload(min(autocvar_g_balance_grenadelauncher_primary_ammo, autocvar_g_balance_grenadelauncher_secondary_ammo), autocvar_g_balance_grenadelauncher_reload_ammo, autocvar_g_balance_grenadelauncher_reload_time, "weapons/reload.wav");
+       }
        return TRUE;
 };
 #endif
index 5fb25642e2fa41383515d11085393ac64c74707f..df0d96679890f3b824cfda07b5dbc5384f2f9ce2 100644 (file)
@@ -1,8 +1,9 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(HAGAR, w_hagar, IT_ROCKETS, 8, WEP_FLAG_NORMAL | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "hagar", "hagar", _("Hagar"))
+REGISTER_WEAPON(HAGAR, w_hagar, IT_ROCKETS, 8, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "hagar", "hagar", _("Hagar"))
 #else
 #ifdef SVQC
 // NO bounce protection, as bounces are limited!
+
 void W_Hagar_Explode (void)
 {
        self.event_damage = SUB_Null;
@@ -44,8 +45,8 @@ void W_Hagar_Attack (void)
 {
        local entity missile;
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_hagar_primary_ammo;
+       W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_hagar_primary_ammo, autocvar_g_balance_hagar_reload_ammo);
+
        W_SetupShot (self, FALSE, 2, "weapons/hagar_fire.wav", CHAN_WEAPON, autocvar_g_balance_hagar_primary_damage);
 
        pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
@@ -79,8 +80,8 @@ void W_Hagar_Attack2 (void)
 {
        local entity missile;
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_hagar_secondary_ammo;
+       W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_hagar_secondary_ammo, autocvar_g_balance_hagar_reload_ammo);
+
        W_SetupShot (self, FALSE, 2, "weapons/hagar_fire.wav", CHAN_WEAPON, autocvar_g_balance_hagar_secondary_damage);
 
        pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
@@ -118,6 +119,7 @@ void spawnfunc_weapon_hagar (void)
 
 float w_hagar(float req)
 {
+       float ammo_amount;
        if (req == WR_AIM)
                if (random()>0.15)
                        self.BUTTON_ATCK = bot_aim(autocvar_g_balance_hagar_primary_speed, 0, autocvar_g_balance_hagar_primary_lifetime, FALSE);
@@ -128,17 +130,23 @@ float w_hagar(float req)
                }
        else if (req == WR_THINK)
        {
-               if (self.BUTTON_ATCK)
-               if (weapon_prepareattack(0, autocvar_g_balance_hagar_primary_refire))
+               if(autocvar_g_balance_hagar_reload_ammo && self.clip_load < min(autocvar_g_balance_hagar_primary_ammo, autocvar_g_balance_hagar_secondary_ammo)) // forced reload
+                       weapon_action(self.weapon, WR_RELOAD);
+               else if (self.BUTTON_ATCK)
                {
-                       W_Hagar_Attack();
-                       weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_hagar_primary_refire, w_ready);
+                       if (weapon_prepareattack(0, autocvar_g_balance_hagar_primary_refire))
+                       {
+                               W_Hagar_Attack();
+                               weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_hagar_primary_refire, w_ready);
+                       }
                }
-               if (self.BUTTON_ATCK2 && autocvar_g_balance_hagar_secondary)
-               if (weapon_prepareattack(1, autocvar_g_balance_hagar_secondary_refire))
+               else if (self.BUTTON_ATCK2 && autocvar_g_balance_hagar_secondary)
                {
-                       W_Hagar_Attack2();
-                       weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_hagar_secondary_refire, w_ready);
+                       if (weapon_prepareattack(1, autocvar_g_balance_hagar_secondary_refire))
+                       {
+                               W_Hagar_Attack2();
+                               weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_hagar_secondary_refire, w_ready);
+                       }
                }
        }
        else if (req == WR_PRECACHE)
@@ -147,13 +155,29 @@ float w_hagar(float req)
                precache_model ("models/weapons/v_hagar.md3");
                precache_model ("models/weapons/h_hagar.iqm");
                precache_sound ("weapons/hagar_fire.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
        }
        else if (req == WR_SETUP)
+       {
                weapon_setup(WEP_HAGAR);
+               self.current_ammo = ammo_rockets;
+       }
        else if (req == WR_CHECKAMMO1)
-               return self.ammo_rockets >= autocvar_g_balance_hagar_primary_ammo;
+       {
+               ammo_amount = self.ammo_rockets >= autocvar_g_balance_hagar_primary_ammo;
+               ammo_amount += self.weapon_load[WEP_HAGAR] >= autocvar_g_balance_hagar_primary_ammo;
+               return ammo_amount;
+       }
        else if (req == WR_CHECKAMMO2)
-               return self.ammo_rockets >= autocvar_g_balance_hagar_secondary_ammo;
+       {
+               ammo_amount = self.ammo_rockets >= autocvar_g_balance_hagar_secondary_ammo;
+               ammo_amount += self.weapon_load[WEP_HAGAR] >= autocvar_g_balance_hagar_secondary_ammo;
+               return ammo_amount;
+       }
+       else if (req == WR_RELOAD)
+       {
+               W_Reload(min(autocvar_g_balance_hagar_primary_ammo, autocvar_g_balance_hagar_secondary_ammo), autocvar_g_balance_hagar_reload_ammo, autocvar_g_balance_hagar_reload_time, "weapons/reload.wav");
+       }
        return TRUE;
 };
 #endif
index 4bba3b8051b8d4d504caf0047c9b3d1579e53062..8bb4c1de9d8da41a36368aae8b1b94533f28c655 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(HLAC, w_hlac, IT_CELLS, 6, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "hlac", "hlac", _("Heavy Laser Assault Cannon"))
+REGISTER_WEAPON(HLAC, w_hlac, IT_CELLS, 6, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "hlac", "hlac", _("Heavy Laser Assault Cannon"))
 #else
 #ifdef SVQC
 
@@ -22,10 +22,7 @@ void W_HLAC_Attack (void)
        local entity missile;
     float spread;
 
-    if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-    {
-        self.ammo_cells = self.ammo_cells - autocvar_g_balance_hlac_primary_ammo;
-    }
+       W_DecreaseAmmo(ammo_cells, autocvar_g_balance_hlac_primary_ammo, autocvar_g_balance_hlac_reload_ammo);
 
     spread = autocvar_g_balance_hlac_primary_spread_min + (autocvar_g_balance_hlac_primary_spread_add * self.misc_bulletcounter);
     spread = min(spread,autocvar_g_balance_hlac_primary_spread_max);
@@ -116,10 +113,7 @@ void W_HLAC_Attack2 (void)
 {
     float i;
 
-    if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-    {
-        self.ammo_cells = self.ammo_cells - autocvar_g_balance_hlac_secondary_ammo;
-    }
+       W_DecreaseAmmo(ammo_cells, autocvar_g_balance_hlac_secondary_ammo, autocvar_g_balance_hlac_reload_ammo);
 
     for(i=autocvar_g_balance_hlac_secondary_shots;i>0;--i)
         W_HLAC_Attack2f();
@@ -167,25 +161,31 @@ void spawnfunc_weapon_hlac (void)
 
 float w_hlac(float req)
 {
+       float ammo_amount;
        if (req == WR_AIM)
         self.BUTTON_ATCK = bot_aim(autocvar_g_balance_hlac_primary_speed, 0, autocvar_g_balance_hlac_primary_lifetime, FALSE);
        else if (req == WR_THINK)
        {
-               if (self.BUTTON_ATCK)
-               if (weapon_prepareattack(0, autocvar_g_balance_hlac_primary_refire))
+               if(autocvar_g_balance_hlac_reload_ammo && self.clip_load < min(autocvar_g_balance_hlac_primary_ammo, autocvar_g_balance_hlac_secondary_ammo)) // forced reload
+                       weapon_action(self.weapon, WR_RELOAD);
+               else if (self.BUTTON_ATCK)
                {
-                       self.misc_bulletcounter = 0;
-                       W_HLAC_Attack();
-                       weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_hlac_primary_refire, HLAC_fire1_02);
+                       if (weapon_prepareattack(0, autocvar_g_balance_hlac_primary_refire))
+                       {
+                               self.misc_bulletcounter = 0;
+                               W_HLAC_Attack();
+                               weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_hlac_primary_refire, HLAC_fire1_02);
+                       }
                }
 
-               if (self.BUTTON_ATCK2 && autocvar_g_balance_hlac_secondary)
-               if (weapon_prepareattack(1, autocvar_g_balance_hlac_secondary_refire))
+               else if (self.BUTTON_ATCK2 && autocvar_g_balance_hlac_secondary)
                {
-                       W_HLAC_Attack2();
-                       weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_hlac_secondary_animtime, w_ready);
+                       if (weapon_prepareattack(1, autocvar_g_balance_hlac_secondary_refire))
+                       {
+                               W_HLAC_Attack2();
+                               weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_hlac_secondary_animtime, w_ready);
+                       }
                }
-
        }
        else if (req == WR_PRECACHE)
        {
@@ -193,14 +193,30 @@ float w_hlac(float req)
                precache_model ("models/weapons/v_hlac.md3");
                precache_model ("models/weapons/h_hlac.iqm");
                precache_sound ("weapons/lasergun_fire.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
 
        }
        else if (req == WR_SETUP)
+       {
                weapon_setup(WEP_HLAC);
+               self.current_ammo = ammo_cells;
+       }
        else if (req == WR_CHECKAMMO1)
-               return self.ammo_cells >= autocvar_g_balance_hlac_primary_ammo;
+       {
+               ammo_amount = self.ammo_cells >= autocvar_g_balance_hlac_primary_ammo;
+               ammo_amount += self.weapon_load[WEP_HLAC] >= autocvar_g_balance_hlac_primary_ammo;
+               return ammo_amount;
+       }
        else if (req == WR_CHECKAMMO2)
-               return self.ammo_cells >= autocvar_g_balance_hlac_secondary_ammo;
+       {
+               ammo_amount = self.ammo_cells >= autocvar_g_balance_hlac_secondary_ammo;
+               ammo_amount += self.weapon_load[WEP_HLAC] >= autocvar_g_balance_hlac_secondary_ammo;
+               return ammo_amount;
+       }
+       else if (req == WR_RELOAD)
+       {
+               W_Reload(min(autocvar_g_balance_hlac_primary_ammo, autocvar_g_balance_hlac_secondary_ammo), autocvar_g_balance_hlac_reload_ammo, autocvar_g_balance_hlac_reload_time, "weapons/reload.wav");
+       }
        return TRUE;
 };
 #endif
index da5e3f9423d086f6bdb236a2f744ed091fa4649d..c3a1768beb0ab9335031a8762284292ca8711cea 100644 (file)
@@ -63,7 +63,7 @@ void W_Hook_Attack2()
        local entity gren;
 
        if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_cells = self.ammo_cells - autocvar_g_balance_hook_secondary_ammo;
+               W_DecreaseAmmo(ammo_cells, autocvar_g_balance_hook_secondary_ammo, FALSE);
        W_SetupShot (self, FALSE, 4, "weapons/hookbomb_fire.wav", CHAN_WEAPON, autocvar_g_balance_hook_secondary_damage);
 
        gren = spawn ();
@@ -127,7 +127,7 @@ float w_hook(float req)
                        if (weapon_prepareattack(0, -1))
                        {
                                if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-                                       self.ammo_fuel = self.ammo_fuel - autocvar_g_balance_hook_primary_fuel;
+                                       W_DecreaseAmmo(ammo_fuel, autocvar_g_balance_hook_primary_fuel, FALSE);
                                self.hook_state |= HOOK_FIRING;
                                weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_hook_primary_animtime, w_ready);                         
                        }
@@ -170,7 +170,7 @@ float w_hook(float req)
                                        {
                                                if ( self.ammo_fuel >= (time - self.hook_time_fueldecrease) * hooked_fuel )
                                                {
-                                                       self.ammo_fuel -= (time - self.hook_time_fueldecrease) * hooked_fuel;
+                                                       W_DecreaseAmmo(ammo_fuel, (time - self.hook_time_fueldecrease) * hooked_fuel, FALSE);
                                                        self.hook_time_fueldecrease = time;
                                                        // decrease next frame again
                                                }
@@ -228,6 +228,7 @@ float w_hook(float req)
        else if (req == WR_SETUP)
        {
                weapon_setup(WEP_HOOK);
+               self.current_ammo = ammo_fuel;
                self.hook_state &~= HOOK_WAITING_FOR_RELEASE;
        }
        else if (req == WR_CHECKAMMO1)
index 4ce1331931628366bfaf35037c429edfbbe7f3b4..a7e5c4df7d272f785e3dd2fc7d4e576eed97806e 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(LASER, w_laser, 0, 1, WEP_FLAG_NORMAL | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, 0, "laser", "laser", _("Laser"))
+REGISTER_WEAPON(LASER, w_laser, 0, 1, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, 0, "laser", "laser", _("Laser"))
 #else
 #ifdef SVQC
 void(float imp) W_SwitchWeapon;
@@ -226,16 +226,24 @@ float w_laser(float req)
        }
        else if (req == WR_THINK)
        {
-               if (self.BUTTON_ATCK)
-               if (weapon_prepareattack(0, autocvar_g_balance_laser_primary_refire))
+               if(autocvar_g_balance_laser_reload_ammo && self.clip_load < 1) // forced reload
+                       weapon_action(self.weapon, WR_RELOAD);
+               else if (self.BUTTON_ATCK)
                {
-                       W_Laser_Attack(0);
-                       weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_laser_primary_animtime, w_ready);
+                       if (weapon_prepareattack(0, autocvar_g_balance_laser_primary_refire))
+                       {
+                               W_DecreaseAmmo(ammo_none, 1, TRUE);
+
+                               W_Laser_Attack(0);
+                               weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_laser_primary_animtime, w_ready);
+                       }
                }
-               if (self.BUTTON_ATCK2)
+               else if (self.BUTTON_ATCK2)
                {
                        if(autocvar_g_balance_laser_secondary)
                        {
+                               W_DecreaseAmmo(ammo_none, 1, TRUE);
+
                                if (weapon_prepareattack(0, 0))
                                {
                                        W_Laser_Attack2();
@@ -256,13 +264,25 @@ float w_laser(float req)
                precache_model ("models/weapons/h_laser.iqm");
                precache_sound ("weapons/lasergun_fire.wav");
                precache_sound ("weapons/gauntlet_fire.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
        }
        else if (req == WR_SETUP)
+       {
                weapon_setup(WEP_LASER);
+               self.current_ammo = ammo_none;
+       }
        else if (req == WR_CHECKAMMO1)
+       {
                return TRUE;
+       }
        else if (req == WR_CHECKAMMO2)
+       {
                return TRUE;
+       }
+       else if (req == WR_RELOAD)
+       {
+               W_Reload(0, autocvar_g_balance_laser_reload_ammo, autocvar_g_balance_laser_reload_time, "weapons/reload.wav");
+       }
        return TRUE;
 };
 #endif
index 7e4749cd543a7eb0736c9800ee8eb53fa21b3d27..8a6b421b5314b281e0b43e0f7be66d3a7f3d8056 100644 (file)
@@ -1,9 +1,9 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(MINE_LAYER, w_minelayer, IT_ROCKETS, 4, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "minelayer", "minelayer", _("Mine Layer"))
+REGISTER_WEAPON(MINE_LAYER, w_minelayer, IT_ROCKETS, 4, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "minelayer", "minelayer", _("Mine Layer"))
 #else
 #ifdef SVQC
 void W_Mine_Think (void);
-.float minelayer_detonate, minelayer_mines;
+.float minelayer_detonate, mine_explodeanyway;
 .float mine_time;
 
 void spawnfunc_weapon_minelayer (void)
@@ -66,13 +66,18 @@ void W_Mine_Explode ()
 
        if (self.owner.weapon == WEP_MINE_LAYER)
        {
-               if(self.owner.ammo_rockets < autocvar_g_balance_minelayer_ammo)
+               entity oldself;
+               oldself = self;
+               self = self.owner;
+               if (!weapon_action(WEP_MINE_LAYER, WR_CHECKAMMO1))
                {
-                       self.owner.cnt = WEP_MINE_LAYER;
-                       ATTACK_FINISHED(self.owner) = time;
-                       self.owner.switchweapon = w_getbestweapon(self.owner);
+                       self.cnt = WEP_MINE_LAYER;
+                       ATTACK_FINISHED(self) = time;
+                       self.switchweapon = w_getbestweapon(self);
                }
+               self = oldself;
        }
+       self.owner.minelayer_mines -= 1;
        remove (self);
 }
 
@@ -85,13 +90,18 @@ void W_Mine_DoRemoteExplode ()
 
        if (self.owner.weapon == WEP_MINE_LAYER)
        {
-               if(self.owner.ammo_rockets < autocvar_g_balance_minelayer_ammo)
+               entity oldself;
+               oldself = self;
+               self = self.owner;
+               if (!weapon_action(WEP_MINE_LAYER, WR_CHECKAMMO1))
                {
-                       self.owner.cnt = WEP_MINE_LAYER;
-                       ATTACK_FINISHED(self.owner) = time;
-                       self.owner.switchweapon = w_getbestweapon(self.owner);
+                       self.cnt = WEP_MINE_LAYER;
+                       ATTACK_FINISHED(self) = time;
+                       self.switchweapon = w_getbestweapon(self);
                }
+               self = oldself;
        }
+       self.owner.minelayer_mines -= 1;
        remove (self);
 }
 
@@ -110,7 +120,7 @@ void W_Mine_RemoteExplode ()
 void W_Mine_ProximityExplode ()
 {
        // make sure no friend is in the mine's radius. If there is any, explosion is delayed until he's at a safe distance
-       if(autocvar_g_balance_minelayer_protection && self.minelayer_mines == 0)
+       if(autocvar_g_balance_minelayer_protection && self.mine_explodeanyway == 0)
        {
                entity head;
                head = findradius(self.origin, autocvar_g_balance_minelayer_radius);
@@ -126,6 +136,16 @@ void W_Mine_ProximityExplode ()
        W_Mine_Explode();
 }
 
+float W_Mine_Count(entity e)
+{
+       float minecount;
+       entity mine;
+       for(mine = world; (mine = find(mine, classname, "mine")); ) if(mine.owner == e)
+               minecount += 1;
+               
+       return minecount;
+}
+
 void W_Mine_Think (void)
 {
        entity head;
@@ -139,7 +159,7 @@ void W_Mine_Think (void)
                if(autocvar_g_balance_minelayer_lifetime_countdown > 0)
                        spamsound (self, CHAN_PROJECTILE, "weapons/mine_trigger.wav", VOL_BASE, ATTN_NORM);
                self.mine_time = time + autocvar_g_balance_minelayer_lifetime_countdown;
-               self.minelayer_mines = 1; // make the mine super aggressive
+               self.mine_explodeanyway = 1; // make the mine super aggressive -- Samual: Rather, make it not care if a team mate is near.
        }
 
        // a player's mines shall explode if he disconnects or dies
@@ -207,11 +227,8 @@ void W_Mine_Attack (void)
        // scan how many mines we placed, and return if we reached our limit
        if(autocvar_g_balance_minelayer_limit)
        {
-               self.minelayer_mines = 0;
-               for(mine = world; (mine = find(mine, classname, "mine")); ) if(mine.owner == self)
-                       self.minelayer_mines += 1;
-
-               if(self.minelayer_mines >= autocvar_g_balance_minelayer_limit)
+       
+               if(W_Mine_Count(self) >= autocvar_g_balance_minelayer_limit)
                {
                        // the refire delay keeps this message from being spammed
                        sprint(self, strcat("You cannot place more than ^2", ftos(autocvar_g_balance_minelayer_limit), " ^7mines at a time\n") );
@@ -220,8 +237,7 @@ void W_Mine_Attack (void)
                }
        }
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_minelayer_ammo;
+       W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_minelayer_ammo, autocvar_g_balance_minelayer_reload_ammo);
 
        W_SetupShot_ProjectileSize (self, '-4 -4 -4', '4 4 4', FALSE, 5, "weapons/mine_fire.wav", CHAN_WEAPON, autocvar_g_balance_minelayer_damage);
        pointparticles(particleeffectnum("rocketlauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
@@ -268,14 +284,38 @@ void W_Mine_Attack (void)
        // common properties
 
        other = mine; MUTATOR_CALLHOOK(EditProjectile);
+       
+       self.minelayer_mines = W_Mine_Count(self);
 }
 
 void spawnfunc_weapon_minelayer (void); // defined in t_items.qc
 
-float w_minelayer(float req)
+float W_PlacedMines(float detonate)
 {
        entity mine;
        float minfound;
+
+       for(mine = world; (mine = find(mine, classname, "mine")); ) if(mine.owner == self)
+       {
+               if(detonate)
+               {
+                       if(!mine.minelayer_detonate)
+                       {
+                               mine.minelayer_detonate = TRUE;
+                               minfound = 1;
+                       }
+               }
+               else
+                       minfound = 1;
+       }
+       return minfound;
+}
+
+float w_minelayer(float req)
+{
+       entity mine;
+       float ammo_amount;
+
        if (req == WR_AIM)
        {
                // aim and decide to fire if appropriate
@@ -373,7 +413,13 @@ float w_minelayer(float req)
        }
        else if (req == WR_THINK)
        {
-               if (self.BUTTON_ATCK)
+               if(autocvar_g_balance_minelayer_reload_ammo && self.clip_load < autocvar_g_balance_minelayer_ammo) // forced reload
+               {
+                       // not if we're holding the minelayer without enough ammo, but can detonate existing mines
+                       if not (W_PlacedMines(FALSE) && self.ammo_rockets < autocvar_g_balance_minelayer_ammo)
+                               weapon_action(self.weapon, WR_RELOAD);
+               }
+               else if (self.BUTTON_ATCK)
                {
                        if(weapon_prepareattack(0, autocvar_g_balance_minelayer_refire))
                        {
@@ -384,16 +430,7 @@ float w_minelayer(float req)
 
                if (self.BUTTON_ATCK2)
                {
-                       minfound = 0;
-                       for(mine = world; (mine = find(mine, classname, "mine")); ) if(mine.owner == self)
-                       {
-                               if(!mine.minelayer_detonate)
-                               {
-                                       mine.minelayer_detonate = TRUE;
-                                       minfound = 1;
-                               }
-                       }
-                       if(minfound)
+                       if(W_PlacedMines(TRUE))
                                sound (self, CHAN_WEAPON2, "weapons/mine_det.wav", VOL_BASE, ATTN_NORM);
                }
        }
@@ -408,20 +445,34 @@ float w_minelayer(float req)
                precache_sound ("weapons/mine_fire.wav");
                precache_sound ("weapons/mine_stick.wav");
                precache_sound ("weapons/mine_trigger.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
        }
        else if (req == WR_SETUP)
        {
                weapon_setup(WEP_MINE_LAYER);
+               self.current_ammo = ammo_rockets;
        }
        else if (req == WR_CHECKAMMO1)
        {
                // don't switch while placing a mine
-               if ((ATTACK_FINISHED(self) <= time || self.weapon != WEP_MINE_LAYER)
-                       && self.ammo_rockets < autocvar_g_balance_minelayer_ammo)
-                       return FALSE;
+               if (ATTACK_FINISHED(self) <= time || self.weapon != WEP_MINE_LAYER)
+               {
+                       ammo_amount = self.ammo_rockets >= autocvar_g_balance_minelayer_ammo;
+                       ammo_amount += self.weapon_load[WEP_MINE_LAYER] >= autocvar_g_balance_minelayer_ammo;
+                       return ammo_amount;
+               }
        }
        else if (req == WR_CHECKAMMO2)
-               return FALSE;
+       {
+               if (W_PlacedMines(FALSE))
+                       return TRUE;
+               else
+                       return FALSE;
+       }
+       else if (req == WR_RELOAD)
+       {
+               W_Reload(autocvar_g_balance_minelayer_ammo, autocvar_g_balance_minelayer_reload_ammo, autocvar_g_balance_minelayer_reload_time, "weapons/reload.wav");
+       }
        return TRUE;
 };
 #endif
index 89f209937a83f0cd58f6d335489761e89bdb41f2..8efda9b07f279cea118cf0fd330f6455474d4d52 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(MINSTANEX, w_minstanex, IT_CELLS, 7, WEP_FLAG_HIDDEN | WEP_FLAG_CANCLIMB | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_HIGH, "minstanex", "minstanex", _("MinstaNex"))
+REGISTER_WEAPON(MINSTANEX, w_minstanex, IT_CELLS, 7, WEP_FLAG_HIDDEN | WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_HIGH, "minstanex", "minstanex", _("MinstaNex"))
 #else
 #ifdef SVQC
 .float minstanex_lasthit;
@@ -80,13 +80,10 @@ void W_MinstaNex_Attack (void)
        if (trace_ent.solid == SOLID_BSP && !(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT))
                Damage_DamageInfo(trace_endpos, 10000, 0, 0, 800 * w_shotdir, WEP_MINSTANEX, self);
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-       {
-               if (g_minstagib)
-                       self.ammo_cells = self.ammo_cells - 1;
-               else
-                       self.ammo_cells = self.ammo_cells - autocvar_g_balance_minstanex_ammo;
-       }
+       if (g_minstagib)
+               W_DecreaseAmmo(ammo_cells, 1, autocvar_g_balance_minstanex_reload_ammo);
+       else
+               W_DecreaseAmmo(ammo_cells, autocvar_g_balance_minstanex_ammo, autocvar_g_balance_minstanex_reload_ammo);
 }
 
 
@@ -171,18 +168,30 @@ void minstagib_ammocheck (void)
 
 void spawnfunc_weapon_minstanex (void); // defined in t_items.qc
 
+float minstanex_ammo;
 float w_minstanex(float req)
 {
+       float ammo_amount;
        if (req == WR_AIM)
        {
-               if(self.ammo_cells>0)
+               if(self.ammo_cells > 0)
                        self.BUTTON_ATCK = bot_aim(1000000, 0, 1, FALSE);
                else
                        self.BUTTON_ATCK2 = bot_aim(autocvar_g_balance_laser_primary_speed, 0, autocvar_g_balance_laser_primary_lifetime, FALSE);
        }
        else if (req == WR_THINK)
        {
-               if (self.BUTTON_ATCK)
+               if(g_minstagib)
+                       minstanex_ammo = 1;
+               else
+                       minstanex_ammo = autocvar_g_balance_minstanex_ammo;
+
+               // if the laser uses load, we also consider its ammo for reloading
+               if(autocvar_g_balance_minstanex_reload_ammo && autocvar_g_balance_minstanex_laser_ammo && self.clip_load < min(minstanex_ammo, autocvar_g_balance_minstanex_laser_ammo)) // forced reload
+                       weapon_action(self.weapon, WR_RELOAD);
+               else if(autocvar_g_balance_minstanex_reload_ammo && self.clip_load < minstanex_ammo) // forced reload
+                       weapon_action(self.weapon, WR_RELOAD);
+               else if (self.BUTTON_ATCK)
                {
                        if (weapon_prepareattack(0, autocvar_g_balance_minstanex_refire))
                        {
@@ -196,6 +205,10 @@ float w_minstanex(float req)
                        {
                                self.jump_interval = time + autocvar_g_balance_laser_primary_refire * W_WeaponRateFactor();
 
+                               // decrease ammo for the laser?
+                               if(autocvar_g_balance_minstanex_laser_ammo)
+                                       W_DecreaseAmmo(ammo_cells, autocvar_g_balance_minstanex_laser_ammo, autocvar_g_balance_minstanex_reload_ammo);
+
                                // ugly minstagib hack to reuse the fire mode of the laser
                                float w;
                                w = self.weapon;
@@ -215,26 +228,43 @@ float w_minstanex(float req)
                precache_sound ("weapons/nexwhoosh1.wav");
                precache_sound ("weapons/nexwhoosh2.wav");
                precache_sound ("weapons/nexwhoosh3.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
                w_laser(WR_PRECACHE);
        }
        else if (req == WR_SETUP)
        {
                weapon_setup(WEP_MINSTANEX);
+               self.current_ammo = ammo_cells;
                self.minstanex_lasthit = 0;
        }
        else if (req == WR_CHECKAMMO1)
        {
-               if (g_minstagib)
-                       return self.ammo_cells >= 1;
-               else
-                       return self.ammo_cells >= autocvar_g_balance_minstanex_ammo;
+               ammo_amount = self.ammo_cells >= autocvar_g_balance_minstanex_ammo;
+               ammo_amount += self.weapon_load[WEP_MINSTANEX] >= autocvar_g_balance_minstanex_ammo;
+               return ammo_amount;
        }
        else if (req == WR_CHECKAMMO2)
-               return TRUE;
+       {
+               if(!autocvar_g_balance_minstanex_laser_ammo)
+                       return TRUE;
+               ammo_amount = self.ammo_cells >= autocvar_g_balance_minstanex_laser_ammo;
+               ammo_amount += self.weapon_load[WEP_MINSTANEX] >= autocvar_g_balance_minstanex_laser_ammo;
+               return ammo_amount;
+       }
        else if (req == WR_RESETPLAYER)
        {
                self.minstanex_lasthit = 0;
        }
+       else if (req == WR_RELOAD)
+       {
+               float used_ammo;
+               if(autocvar_g_balance_minstanex_laser_ammo)
+                       used_ammo = min(autocvar_g_balance_minstanex_ammo, autocvar_g_balance_minstanex_laser_ammo);
+               else
+                       used_ammo = autocvar_g_balance_minstanex_ammo;
+
+               W_Reload(used_ammo, autocvar_g_balance_minstanex_reload_ammo, autocvar_g_balance_minstanex_reload_time, "weapons/reload.wav");
+       }
        return TRUE;
 };
 #endif
index e05698851fafd38020af629886c1221ee6a72168..a0fce6a31951bd82c0799c9e6399728ace37ada0 100644 (file)
@@ -1,7 +1,8 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(NEX, w_nex, IT_CELLS, 7, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_HIGH, "nex", "nex", _("Nex"))
+REGISTER_WEAPON(NEX, w_nex, IT_CELLS, 7, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_HIGH, "nex", "nex", _("Nex"))
 #else
 #ifdef SVQC
+
 void SendCSQCNexBeamParticle(float charge) {
        vector v;
        v = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos);
@@ -74,8 +75,7 @@ void W_Nex_Attack (float issecondary)
        if (trace_ent.solid == SOLID_BSP && !(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT))
                Damage_DamageInfo(trace_endpos, mydmg, 0, 0, myforce * w_shotdir, WEP_NEX, self);
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_cells = self.ammo_cells - myammo;
+       W_DecreaseAmmo(ammo_cells, myammo, autocvar_g_balance_nex_reload_ammo);
 }
 
 void spawnfunc_weapon_nex (void); // defined in t_items.qc
@@ -84,6 +84,7 @@ void spawnfunc_weapon_nex (void); // defined in t_items.qc
 float w_nex(float req)
 {
        float dt;
+       float ammo_amount;
        if (req == WR_AIM)
        {
                self.BUTTON_ATCK = bot_aim(1000000, 0, 1, FALSE);
@@ -102,70 +103,89 @@ float w_nex(float req)
                                self.pauseregen_finished = max(self.pauseregen_finished, time + autocvar_g_balance_nex_secondary_chargepool_pause_health_regen);
                        }
 
-               if (self.BUTTON_ATCK)
+               if(autocvar_g_balance_nex_reload_ammo && self.clip_load < min(autocvar_g_balance_nex_primary_ammo, autocvar_g_balance_nex_secondary_ammo)) // forced reload
+                       weapon_action(self.weapon, WR_RELOAD);
+               else
                {
-                       if (weapon_prepareattack(0, autocvar_g_balance_nex_primary_refire))
+                       if (self.BUTTON_ATCK)
                        {
-                               W_Nex_Attack(0);
-                               weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_nex_primary_animtime, w_ready);
+                               if (weapon_prepareattack(0, autocvar_g_balance_nex_primary_refire))
+                               {
+                                       W_Nex_Attack(0);
+                                       weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_nex_primary_animtime, w_ready);
+                               }
                        }
-               }
-               if ((autocvar_g_balance_nex_secondary_charge && !autocvar_g_balance_nex_secondary) ? self.BUTTON_ZOOM : self.BUTTON_ATCK2)
-               {
-                       if(autocvar_g_balance_nex_secondary_charge)
+                       if ((autocvar_g_balance_nex_secondary_charge && !autocvar_g_balance_nex_secondary) ? self.BUTTON_ZOOM : self.BUTTON_ATCK2)
                        {
-                               self.nex_charge_rottime = time + autocvar_g_balance_nex_charge_rot_pause;
-                               dt = frametime / W_TICSPERFRAME;
-
-                               if(self.nex_charge < 1)
+                               if(autocvar_g_balance_nex_secondary_charge)
                                {
-                                       if(autocvar_g_balance_nex_secondary_chargepool)
+                                       self.nex_charge_rottime = time + autocvar_g_balance_nex_charge_rot_pause;
+                                       dt = frametime / W_TICSPERFRAME;
+
+                                       if(self.nex_charge < 1)
                                        {
-                                               if(autocvar_g_balance_nex_secondary_ammo)
+                                               if(autocvar_g_balance_nex_secondary_chargepool)
                                                {
-                                                       // always deplete if secondary is held
-                                                       self.nex_chargepool_ammo = max(0, self.nex_chargepool_ammo - autocvar_g_balance_nex_secondary_ammo * dt);
+                                                       if(autocvar_g_balance_nex_secondary_ammo)
+                                                       {
+                                                               // always deplete if secondary is held
+                                                               self.nex_chargepool_ammo = max(0, self.nex_chargepool_ammo - autocvar_g_balance_nex_secondary_ammo * dt);
 
-                                                       dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate);
-                                                       self.nex_chargepool_pauseregen_finished = time + autocvar_g_balance_nex_secondary_chargepool_pause_regen;
-                                                       dt = min(dt, self.nex_chargepool_ammo);
-                                                       dt = max(0, dt);
+                                                               dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate);
+                                                               self.nex_chargepool_pauseregen_finished = time + autocvar_g_balance_nex_secondary_chargepool_pause_regen;
+                                                               dt = min(dt, self.nex_chargepool_ammo);
+                                                               dt = max(0, dt);
 
-                                                       self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate;
+                                                               self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate;
+                                                       }
                                                }
-                                       }
 
-                                       else if(autocvar_g_balance_nex_secondary_ammo)
-                                       {
-                                               if(self.BUTTON_ATCK2) // only eat ammo when the button is pressed
+                                               else if(autocvar_g_balance_nex_secondary_ammo)
                                                {
-                                                       dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate);
-                                                       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
+                                                       if(self.BUTTON_ATCK2) // only eat ammo when the button is pressed
                                                        {
-                                                               dt = min(dt, (self.ammo_cells - autocvar_g_balance_nex_primary_ammo) / autocvar_g_balance_nex_secondary_ammo);
-                                                               dt = max(0, dt);
-                                                               if(dt > 0)
+                                                               dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate);
+                                                               if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
                                                                {
-                                                                       self.ammo_cells = max(autocvar_g_balance_nex_secondary_ammo, self.ammo_cells - autocvar_g_balance_nex_secondary_ammo * dt);
+                                                                       // if this weapon is reloadable, decrease its load. Else decrease the player's ammo
+                                                                       if(autocvar_g_balance_nex_reload_ammo)
+                                                                       {
+                                                                               dt = min(dt, (self.clip_load - autocvar_g_balance_nex_primary_ammo) / autocvar_g_balance_nex_secondary_ammo);
+                                                                               dt = max(0, dt);
+                                                                               if(dt > 0)
+                                                                               {
+                                                                                       self.clip_load = max(autocvar_g_balance_nex_secondary_ammo, self.clip_load - autocvar_g_balance_nex_secondary_ammo * dt);
+                                                                               }
+                                                                               self.weapon_load[WEP_NEX] = self.clip_load;
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               dt = min(dt, (self.ammo_cells - autocvar_g_balance_nex_primary_ammo) / autocvar_g_balance_nex_secondary_ammo);
+                                                                               dt = max(0, dt);
+                                                                               if(dt > 0)
+                                                                               {
+                                                                                       self.ammo_cells = max(autocvar_g_balance_nex_secondary_ammo, self.ammo_cells - autocvar_g_balance_nex_secondary_ammo * dt);
+                                                                               }
+                                                                       }
                                                                }
+                                                               self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate;
                                                        }
-                                                       self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate;
                                                }
-                                       }
 
-                                       else
-                                       {
-                                               dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate);
-                                               self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate;
+                                               else
+                                               {
+                                                       dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate);
+                                                       self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate;
+                                               }
                                        }
                                }
-                       }
-                       else if(autocvar_g_balance_nex_secondary)
-                       {
-                               if (weapon_prepareattack(0, autocvar_g_balance_nex_secondary_refire))
+                               else if(autocvar_g_balance_nex_secondary)
                                {
-                                       W_Nex_Attack(1);
-                                       weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_nex_secondary_animtime, w_ready);
+                                       if (weapon_prepareattack(0, autocvar_g_balance_nex_secondary_refire))
+                                       {
+                                               W_Nex_Attack(1);
+                                               weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_nex_secondary_animtime, w_ready);
+                                       }
                                }
                        }
                }
@@ -195,13 +215,31 @@ float w_nex(float req)
                precache_sound ("weapons/nexwhoosh1.wav");
                precache_sound ("weapons/nexwhoosh2.wav");
                precache_sound ("weapons/nexwhoosh3.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
        }
        else if (req == WR_SETUP)
+       {
                weapon_setup(WEP_NEX);
+               self.current_ammo = ammo_cells;
+       }
        else if (req == WR_CHECKAMMO1)
-               return self.ammo_cells >= autocvar_g_balance_nex_primary_ammo;
+       {
+               ammo_amount = self.ammo_cells >= autocvar_g_balance_nex_primary_ammo;
+               ammo_amount += (autocvar_g_balance_nex_reload_ammo && self.weapon_load[WEP_NEX] >= autocvar_g_balance_nex_primary_ammo);
+               return ammo_amount;
+       }
        else if (req == WR_CHECKAMMO2)
-               return self.ammo_cells >= autocvar_g_balance_nex_primary_ammo; // don't allow charging if we don't have enough ammo
+       {
+               // don't allow charging if we don't have enough ammo
+               ammo_amount = self.ammo_cells >= autocvar_g_balance_nex_secondary_ammo;
+               ammo_amount += self.weapon_load[WEP_NEX] >= autocvar_g_balance_nex_secondary_ammo;
+               return ammo_amount;
+       }
+       else if (req == WR_RELOAD)
+       {
+               W_Reload(min(autocvar_g_balance_nex_primary_ammo, autocvar_g_balance_nex_secondary_ammo), autocvar_g_balance_nex_reload_ammo, autocvar_g_balance_nex_reload_time, "weapons/reload.wav");
+       }
+
        return TRUE;
 };
 #endif
index 4e9a2cd706d91b359c60f37dd0e92f079add2162..d6e92a53728203ff5f648e797e2304e00a652fc1 100644 (file)
@@ -270,7 +270,10 @@ float w_porto(float req)
                precache_sound ("porto/unsupported.wav");
        }
        else if (req == WR_SETUP)
+       {
                weapon_setup(WEP_PORTO);
+               self.current_ammo = ammo_none;
+       }
        else if (req == WR_RESETPLAYER)
        {
                self.porto_current = world;
index 21874b79053a00f3dafe378d763c82931a3edc6e..dfd2c3f1906fcc514685883bc828286307fd0afa 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(ROCKET_LAUNCHER, w_rlauncher, IT_ROCKETS, 9, WEP_FLAG_NORMAL | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "rl", "rocketlauncher", _("Rocket Launcher"))
+REGISTER_WEAPON(ROCKET_LAUNCHER, w_rlauncher, IT_ROCKETS, 9, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "rl", "rocketlauncher", _("Rocket Launcher"))
 #else
 #ifdef SVQC
 .float rl_release;
@@ -248,8 +248,7 @@ void W_Rocket_Attack (void)
        local entity missile;
        local entity flash;
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_rocketlauncher_ammo;
+       W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_rocketlauncher_ammo, autocvar_g_balance_rocketlauncher_reload_ammo);
 
        W_SetupShot_ProjectileSize (self, '-3 -3 -3', '3 3 3', FALSE, 5, "weapons/rocket_fire.wav", CHAN_WEAPON, autocvar_g_balance_rocketlauncher_damage);
        pointparticles(particleeffectnum("rocketlauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
@@ -305,6 +304,8 @@ float w_rlauncher(float req)
 {
        entity rock;
        float rockfound;
+       float ammo_amount;
+
        if (req == WR_AIM)
        {
                // aim and decide to fire if appropriate
@@ -402,32 +403,37 @@ float w_rlauncher(float req)
        }
        else if (req == WR_THINK)
        {
-               if (self.BUTTON_ATCK)
+               if(autocvar_g_balance_rocketlauncher_reload_ammo && self.clip_load < autocvar_g_balance_rocketlauncher_ammo) // forced reload
+                       weapon_action(self.weapon, WR_RELOAD);
+               else
                {
-                       if(self.rl_release || autocvar_g_balance_rocketlauncher_guidestop)
-                       if(weapon_prepareattack(0, autocvar_g_balance_rocketlauncher_refire))
+                       if (self.BUTTON_ATCK)
                        {
-                               W_Rocket_Attack();
-                               weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_rocketlauncher_animtime, w_ready);
-                               self.rl_release = 0;
+                               if(self.rl_release || autocvar_g_balance_rocketlauncher_guidestop)
+                               if(weapon_prepareattack(0, autocvar_g_balance_rocketlauncher_refire))
+                               {
+                                       W_Rocket_Attack();
+                                       weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_rocketlauncher_animtime, w_ready);
+                                       self.rl_release = 0;
+                               }
                        }
-               }
-               else
-                       self.rl_release = 1;
+                       else
+                               self.rl_release = 1;
 
-               if (self.BUTTON_ATCK2)
-               {
-                       rockfound = 0;
-                       for(rock = world; (rock = find(rock, classname, "rocket")); ) if(rock.owner == self)
+                       if (self.BUTTON_ATCK2)
                        {
-                               if(!rock.rl_detonate_later)
+                               rockfound = 0;
+                               for(rock = world; (rock = find(rock, classname, "rocket")); ) if(rock.owner == self)
                                {
-                                       rock.rl_detonate_later = TRUE;
-                                       rockfound = 1;
+                                       if(!rock.rl_detonate_later)
+                                       {
+                                               rock.rl_detonate_later = TRUE;
+                                               rockfound = 1;
+                                       }
                                }
+                               if(rockfound)
+                                       sound (self, CHAN_WEAPON2, "weapons/rocket_det.wav", VOL_BASE, ATTN_NORM);
                        }
-                       if(rockfound)
-                               sound (self, CHAN_WEAPON2, "weapons/rocket_det.wav", VOL_BASE, ATTN_NORM);
                }
        }
        else if (req == WR_PRECACHE)
@@ -439,18 +445,28 @@ float w_rlauncher(float req)
                precache_sound ("weapons/rocket_det.wav");
                precache_sound ("weapons/rocket_fire.wav");
                precache_sound ("weapons/rocket_mode.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
        }
        else if (req == WR_SETUP)
        {
                weapon_setup(WEP_ROCKET_LAUNCHER);
+               self.current_ammo = ammo_rockets;
                self.rl_release = 1;
        }
        else if (req == WR_CHECKAMMO1)
        {
                // don't switch while guiding a missile
-               if ((ATTACK_FINISHED(self) <= time || self.weapon != WEP_ROCKET_LAUNCHER)
-                       && self.ammo_rockets < autocvar_g_balance_rocketlauncher_ammo)
-                       return FALSE;
+               if (ATTACK_FINISHED(self) <= time || self.weapon != WEP_ROCKET_LAUNCHER)
+               {
+                       if(autocvar_g_balance_rocketlauncher_reload_ammo)
+                       {
+                               if(self.ammo_rockets < autocvar_g_balance_rocketlauncher_ammo && self.weapon_load[WEP_ROCKET_LAUNCHER] < autocvar_g_balance_rocketlauncher_ammo)
+                                       ammo_amount = TRUE;
+                       }
+                       else if(self.ammo_rockets < autocvar_g_balance_rocketlauncher_ammo)
+                               ammo_amount = TRUE;
+                       return !ammo_amount;
+               }
        }
        else if (req == WR_CHECKAMMO2)
                return FALSE;
@@ -458,6 +474,10 @@ float w_rlauncher(float req)
        {
                self.rl_release = 0;
        }
+       else if (req == WR_RELOAD)
+       {
+               W_Reload(autocvar_g_balance_rocketlauncher_ammo, autocvar_g_balance_rocketlauncher_reload_ammo, autocvar_g_balance_rocketlauncher_reload_time, "weapons/reload.wav");
+       }
        return TRUE;
 };
 #endif
index 81d55a2265e62387359c843f37636462fd7afac6..9084cc04da2027affd8b8af43cac58de6d4b984d 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(SEEKER, w_seeker, IT_ROCKETS, 8, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "seeker", "seeker", _("T.A.G. Seeker"))
+REGISTER_WEAPON(SEEKER, w_seeker, IT_ROCKETS, 8, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "seeker", "seeker", _("T.A.G. Seeker"))
 #else
 #ifdef SVQC
 //.float proxytime; = autoswitch
@@ -158,8 +158,7 @@ void Seeker_Fire_Missile(vector f_diff)
 {
        local entity missile;
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_seeker_missile_ammo;
+       W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_seeker_missile_ammo, autocvar_g_balance_seeker_reload_ammo);
 
        makevectors(self.v_angle);
        W_SetupShot_ProjectileSize (self, '-2 -2 -2', '2 2 2', FALSE, 2, "weapons/seeker_fire.wav", CHAN_WEAPON, 0);
@@ -294,8 +293,7 @@ void Seeker_Tag_Touch()
 void Seeker_Fire_Tag()
 {
        local entity missile;
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_seeker_tag_ammo;
+       W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_seeker_tag_ammo, autocvar_g_balance_seeker_reload_ammo);
 
        W_SetupShot_ProjectileSize (self, '-2 -2 -2', '2 2 2', FALSE, 2, "weapons/tag_fire.wav", CHAN_WEAPON, autocvar_g_balance_seeker_missile_damage * autocvar_g_balance_seeker_missile_count);
 
@@ -353,8 +351,7 @@ void Seeker_Fire_Flac()
        vector f_diff;
        float c;
 
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_seeker_flac_ammo;
+       W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_seeker_flac_ammo, autocvar_g_balance_seeker_reload_ammo);
 
        c = mod(self.bulletcounter, 4);
        switch(c)
@@ -413,25 +410,33 @@ void spawnfunc_weapon_seeker (void)
 
 float w_seeker(float req)
 {
+       float ammo_amount;
+
        if (req == WR_AIM)
                self.BUTTON_ATCK = bot_aim(autocvar_g_balance_seeker_tag_speed, 0, 20, FALSE);
 
        else if (req == WR_THINK)
        {
-               if (self.BUTTON_ATCK)
+               if(autocvar_g_balance_seeker_reload_ammo && self.clip_load < min(autocvar_g_balance_seeker_missile_ammo, autocvar_g_balance_seeker_tag_ammo)) // forced reload
+                       weapon_action(self.weapon, WR_RELOAD);
+
+               else if (self.BUTTON_ATCK)
+               {
                        if (weapon_prepareattack(0, autocvar_g_balance_seeker_tag_refire))
                        {
                                Seeker_Fire_Tag();
                                weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_seeker_tag_animtime, w_ready);
                        }
+               }
 
-               if (self.BUTTON_ATCK2)
+               else if (self.BUTTON_ATCK2)
+               {
                        if (weapon_prepareattack(1, autocvar_g_balance_seeker_flac_refire))
                        {
                                Seeker_Fire_Flac();
                                weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_seeker_flac_animtime, w_ready);
                        }
-
+               }
        }
        else if (req == WR_PRECACHE)
        {
@@ -441,13 +446,29 @@ float w_seeker(float req)
                precache_sound ("weapons/tag_fire.wav");
                precache_sound ("weapons/flac_fire.wav");
                precache_sound ("weapons/seeker_fire.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
        }
        else if (req == WR_SETUP)
+       {
                weapon_setup(WEP_SEEKER);
+               self.current_ammo = ammo_rockets;
+       }
        else if (req == WR_CHECKAMMO1)
-               return self.ammo_rockets >= autocvar_g_balance_seeker_tag_ammo + autocvar_g_balance_seeker_missile_ammo;
+       {
+               ammo_amount = self.ammo_cells >= autocvar_g_balance_seeker_missile_ammo;
+               ammo_amount += self.weapon_load[WEP_SEEKER] >= autocvar_g_balance_seeker_missile_ammo;
+               return ammo_amount;
+       }
        else if (req == WR_CHECKAMMO2)
-               return self.ammo_rockets >= autocvar_g_balance_seeker_flac_ammo;
+       {
+               ammo_amount = self.ammo_cells >= autocvar_g_balance_seeker_flac_ammo;
+               ammo_amount += self.weapon_load[WEP_SEEKER] >= autocvar_g_balance_seeker_flac_ammo;
+               return ammo_amount;
+       }
+       else if (req == WR_RELOAD)
+       {
+               W_Reload(min(autocvar_g_balance_seeker_missile_ammo, autocvar_g_balance_seeker_tag_ammo), autocvar_g_balance_seeker_reload_ammo, autocvar_g_balance_seeker_reload_time, "weapons/reload.wav");
+       }
        return TRUE;
 };
 #endif
index 6d0d094eb404c7800de4316a68397d04b7e0cbef..38ae17a24f579e6ef4ea2d05a849f4a812e3dd1f 100644 (file)
@@ -1,7 +1,8 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(SHOTGUN, w_shotgun, IT_SHELLS, 2, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_LOW, "shotgun", "shotgun", _("Shotgun"))
+REGISTER_WEAPON(SHOTGUN, w_shotgun, IT_SHELLS, 2, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_LOW, "shotgun", "shotgun", _("Shotgun"))
 #else
 #ifdef SVQC
+
 void W_Shotgun_Attack (void)
 {
        float   sc;
@@ -22,12 +23,12 @@ void W_Shotgun_Attack (void)
        bulletspeed = autocvar_g_balance_shotgun_primary_speed;
        bulletconstant = autocvar_g_balance_shotgun_primary_bulletconstant;
 
+       W_DecreaseAmmo(ammo_shells, ammoamount, autocvar_g_balance_shotgun_reload_ammo);
+
        W_SetupShot (self, autocvar_g_antilag_bullets && bulletspeed >= autocvar_g_antilag_bullets, 5, "weapons/shotgun_fire.wav", CHAN_WEAPON, d * bullets);
        for (sc = 0;sc < bullets;sc = sc + 1)
                fireBallisticBullet(w_shotorg, w_shotdir, spread, bulletspeed, 5, d, 0, f, WEP_SHOTGUN, 0, 1, bulletconstant);
        endFireBallisticBullet();
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_shells = self.ammo_shells - ammoamount;
 
        pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 1000, autocvar_g_balance_shotgun_primary_ammo);
 
@@ -43,7 +44,6 @@ void W_Shotgun_Attack (void)
        flash.nextthink = time + 0.06;
        flash.effects = EF_ADDITIVE | EF_FULLBRIGHT | EF_LOWPRECISION;
        W_AttachToShotorg(flash, '5 0 0');
-
 }
 
 void shotgun_meleethink (void)
@@ -102,6 +102,7 @@ void spawnfunc_weapon_shotgun(); // defined in t_items.qc
 
 float w_shotgun(float req)
 {
+       float ammo_amount;
        if (req == WR_AIM)
                if(vlen(self.origin-self.enemy.origin) <= autocvar_g_balance_shotgun_secondary_melee_range)
                        self.BUTTON_ATCK2 = bot_aim(1000000, 0, 0.001, FALSE);
@@ -109,18 +110,28 @@ float w_shotgun(float req)
                        self.BUTTON_ATCK = bot_aim(1000000, 0, 0.001, FALSE);
        else if (req == WR_THINK)
        {
-               if (self.BUTTON_ATCK)
+               if(autocvar_g_balance_shotgun_reload_ammo && self.clip_load < autocvar_g_balance_shotgun_primary_ammo) // forced reload
+               {
+                       // don't force reload an empty shotgun if its melee attack is active
+                       if not(autocvar_g_balance_shotgun_secondary && self.ammo_shells < autocvar_g_balance_shotgun_primary_ammo)
+                               weapon_action(self.weapon, WR_RELOAD);
+               }
+               else
                {
-                       if (time >= self.shotgun_primarytime) // handle refire separately so the secondary can be fired straight after a primary
+                       if (self.BUTTON_ATCK)
                        {
-                               if(weapon_prepareattack(0, autocvar_g_balance_shotgun_primary_animtime))
+                               if (time >= self.shotgun_primarytime) // handle refire separately so the secondary can be fired straight after a primary
                                {
-                                       W_Shotgun_Attack();
-                                       self.shotgun_primarytime = time + autocvar_g_balance_shotgun_primary_refire;
-                                       weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_shotgun_primary_animtime, w_ready);
+                                       if(weapon_prepareattack(0, autocvar_g_balance_shotgun_primary_animtime))
+                                       {
+                                               W_Shotgun_Attack();
+                                               self.shotgun_primarytime = time + autocvar_g_balance_shotgun_primary_refire;
+                                               weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_shotgun_primary_animtime, w_ready);
+                                       }
                                }
                        }
                }
+               if (self.clip_load >= 0) // we are not currently reloading
                if (self.BUTTON_ATCK2 && autocvar_g_balance_shotgun_secondary)
                if (weapon_prepareattack(1, autocvar_g_balance_shotgun_secondary_refire))
                {
@@ -137,15 +148,28 @@ float w_shotgun(float req)
                precache_sound ("misc/itempickup.wav");
                precache_sound ("weapons/shotgun_fire.wav");
                precache_sound ("weapons/shotgun_melee.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
        }
        else if (req == WR_SETUP)
+       {
                weapon_setup(WEP_SHOTGUN);
+               self.current_ammo = ammo_shells;
+       }
        else if (req == WR_CHECKAMMO1)
-               return self.ammo_shells >= autocvar_g_balance_shotgun_primary_ammo;
+       {
+               ammo_amount = self.ammo_shells >= autocvar_g_balance_shotgun_primary_ammo;
+               ammo_amount += self.weapon_load[WEP_SHOTGUN] >= autocvar_g_balance_shotgun_primary_ammo;
+               return ammo_amount;
+       }
        else if (req == WR_CHECKAMMO2)
        {
+               // melee attack is always available
                return TRUE;
        }
+       else if (req == WR_RELOAD)
+       {
+               W_Reload(autocvar_g_balance_shotgun_primary_ammo, autocvar_g_balance_shotgun_reload_ammo, autocvar_g_balance_shotgun_reload_time, "weapons/reload.wav");
+       }
        return TRUE;
 };
 #endif
index a03a9b6108491e565170634feba2b7940815a8ae..f634993f5ad7ea6c2565c4e60eb7fc9b56f54aaf 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(SNIPERRIFLE, w_sniperrifle, IT_NAILS, 7, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "campingrifle", "sniperrifle", _("Sniper Rifle"))
+REGISTER_WEAPON(SNIPERRIFLE, w_sniperrifle, IT_NAILS, 7, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "campingrifle", "sniperrifle", _("Sniper Rifle"))
 #else
 #ifdef SVQC
 //Sniper rifle Primary mode: manually operated bolt*, Secondary: full automatic**
@@ -8,87 +8,16 @@ REGISTER_WEAPON(SNIPERRIFLE, w_sniperrifle, IT_NAILS, 7, WEP_FLAG_NORMAL | WEP_T
 
 .float sniperrifle_accumulator;
 
-float W_SniperRifle_CheckMaxBullets(float checkammo)
-{
-       float maxbulls;
-       maxbulls = autocvar_g_balance_sniperrifle_magazinecapacity;
-       if(!maxbulls)
-               maxbulls = 8; // match HUD
-       if(checkammo)
-               if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-                       maxbulls = min(maxbulls, floor(self.ammo_nails / min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo)));
-       if(self.sniperrifle_bulletcounter > maxbulls || !autocvar_g_balance_sniperrifle_magazinecapacity)
-               self.sniperrifle_bulletcounter = maxbulls;
-       return (self.sniperrifle_bulletcounter == maxbulls);
-}
-
-void W_SniperRifle_ReloadedAndReady()
-{
-       float t;
-       self.sniperrifle_bulletcounter = autocvar_g_balance_sniperrifle_magazinecapacity;
-       W_SniperRifle_CheckMaxBullets(TRUE);
-       t = ATTACK_FINISHED(self) - autocvar_g_balance_sniperrifle_reloadtime - 1;
-       ATTACK_FINISHED(self) = t;
-       w_ready();
-}
-
-float W_SniperRifle_Reload()
-{
-       float t;
-
-       W_SniperRifle_CheckMaxBullets(TRUE);
-
-       if(self.ammo_nails < min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo)) // when we get here, bulletcounter must be 0 or -1
-       {
-               print("cannot reload... not enough bullets\n");
-               self.sniperrifle_bulletcounter = -1; // reload later
-               W_SwitchToOtherWeapon(self);
-               return 0;
-       }
-       
-       if (self.sniperrifle_bulletcounter >= autocvar_g_balance_sniperrifle_magazinecapacity)
-               return 0;
-
-       if (self.weaponentity)
-       {
-               if (self.weaponentity.wframe == WFRAME_RELOAD)
-                       return 0;
-
-               // allow to switch away while reloading, but this will cause a new reload!
-               self.weaponentity.state = WS_READY;
-       }
-
-       sound (self, CHAN_WEAPON2, "weapons/campingrifle_reload.wav", VOL_BASE, ATTN_NORM);
-
-       t = max(time, ATTACK_FINISHED(self)) + autocvar_g_balance_sniperrifle_reloadtime + 1;
-       ATTACK_FINISHED(self) = t;
-
-       weapon_thinkf(WFRAME_RELOAD, autocvar_g_balance_sniperrifle_reloadtime, W_SniperRifle_ReloadedAndReady);
-
-       self.sniperrifle_bulletcounter = -1;
-
-       return 1;
-}
-
-void W_SniperRifle_CheckReloadAndReady()
-{
-       w_ready();
-       if(self.sniperrifle_bulletcounter <= 0)
-               if(W_SniperRifle_Reload())
-                       return;
-}
-
 void W_SniperRifle_FireBullet(float pSpread, float pDamage, float pHeadshotAddedDamage, float pForce, float pSpeed, float pLifetime, float pAmmo, float deathtype, float pBulletConstant)
 {
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-               self.ammo_nails -= pAmmo;
+       W_DecreaseAmmo(ammo_nails, pAmmo, autocvar_g_balance_sniperrifle_reload_ammo);
 
        if(deathtype & HITTYPE_SECONDARY)
                W_SetupShot (self, autocvar_g_antilag_bullets && pSpeed >= autocvar_g_antilag_bullets, 2, "weapons/campingrifle_fire2.wav", CHAN_WEAPON, autocvar_g_balance_sniperrifle_secondary_damage + autocvar_g_balance_sniperrifle_secondary_headshotaddeddamage);
        else
                W_SetupShot (self, autocvar_g_antilag_bullets && pSpeed >= autocvar_g_antilag_bullets, 2, "weapons/campingrifle_fire.wav", CHAN_WEAPON, autocvar_g_balance_sniperrifle_primary_damage + autocvar_g_balance_sniperrifle_primary_headshotaddeddamage);
 
-       pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 2000, 1);
+       pointparticles(particleeffectnum("sniperrifle_muzzleflash"), w_shotorg, w_shotdir * 2000, 1);
 
        if(self.BUTTON_ZOOM) // if zoomed, shoot from the eye
        {
@@ -104,9 +33,6 @@ void W_SniperRifle_FireBullet(float pSpread, float pDamage, float pHeadshotAdded
 
        if (autocvar_g_casings >= 2)
                SpawnCasing (((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3, self);
-       
-       self.sniperrifle_bulletcounter = self.sniperrifle_bulletcounter - 1;
-       W_SniperRifle_CheckMaxBullets(TRUE);
 }
 
 void W_SniperRifle_Attack()
@@ -137,9 +63,7 @@ void spawnfunc_weapon_campingrifle (void)
 void W_SniperRifle_BulletHail_Continue()
 {
        float r, sw, af;
-       W_SniperRifle_CheckReloadAndReady();
-       if(self.sniperrifle_bulletcounter < 0)
-               return; // reloading, so we are done
+
        sw = self.switchweapon; // make it not detect weapon changes as reason to abort firing
        af = ATTACK_FINISHED(self);
        self.switchweapon = self.weapon;
@@ -177,14 +101,15 @@ void W_SniperRifle_BulletHail(float mode, void(void) AttackFunc, float fr, float
        else
        {
                // just one shot
-               weapon_thinkf(fr, animtime, W_SniperRifle_CheckReloadAndReady);
+               weapon_thinkf(fr, animtime, w_ready);
        }
 }
 
 .float bot_secondary_sniperriflemooth;
 float w_sniperrifle(float req)
 {
-       float full;
+       float ammo_amount;
+
        if (req == WR_AIM)
        {
                self.BUTTON_ATCK=FALSE;
@@ -210,10 +135,8 @@ float w_sniperrifle(float req)
        }
        else if (req == WR_THINK)
        {
-               if(self.sniperrifle_bulletcounter < 0) // forced reload (e.g. because interrupted)
-               {
-            self.wish_reload = 1;
-               }
+               if(autocvar_g_balance_sniperrifle_reload_ammo && self.clip_load < min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo)) // forced reload
+            weapon_action(self.weapon, WR_RELOAD);
                else
                {
                        self.sniperrifle_accumulator = bound(time - autocvar_g_balance_sniperrifle_bursttime, self.sniperrifle_accumulator, time);
@@ -230,7 +153,7 @@ float w_sniperrifle(float req)
                                if (autocvar_g_balance_sniperrifle_secondary)
                                {
                     if(autocvar_g_balance_sniperrifle_secondary_reload)
-                        self.wish_reload = 1;
+                        weapon_action(self.weapon, WR_RELOAD);
                     else
                     {
                         if (weapon_prepareattack_check(1, autocvar_g_balance_sniperrifle_secondary_refire))
@@ -244,49 +167,40 @@ float w_sniperrifle(float req)
                                }
                        }
                }
-        if(self.wish_reload)
-        {
-            if(self.switchweapon == self.weapon)
-            {
-                if(self.weaponentity.state == WS_READY)
-                {
-                    self.wish_reload = 0;
-                    W_SniperRifle_Reload();
-                }
-            }
-        }
        }
        else if (req == WR_PRECACHE)
        {
                precache_model ("models/weapons/g_campingrifle.md3");
                precache_model ("models/weapons/v_campingrifle.md3");
                precache_model ("models/weapons/h_campingrifle.iqm");
-               precache_sound ("weapons/campingrifle_reload.wav");
                precache_sound ("weapons/campingrifle_fire.wav");
                precache_sound ("weapons/campingrifle_fire2.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
        }
        else if (req == WR_SETUP)
        {
                weapon_setup(WEP_SNIPERRIFLE);
-
-               full = W_SniperRifle_CheckMaxBullets(TRUE);
-               if(autocvar_g_balance_sniperrifle_auto_reload_on_switch)
-                       if(!full)
-                               self.sniperrifle_bulletcounter = -1;
+               self.current_ammo = ammo_nails;
        }
        else if (req == WR_CHECKAMMO1)
-               return self.ammo_nails >= autocvar_g_balance_sniperrifle_primary_ammo;
+       {
+               ammo_amount = self.ammo_nails >= autocvar_g_balance_sniperrifle_primary_ammo;
+               ammo_amount += self.weapon_load[WEP_SNIPERRIFLE] >= autocvar_g_balance_sniperrifle_primary_ammo;
+               return ammo_amount;
+       }
        else if (req == WR_CHECKAMMO2)
-               return self.ammo_nails >= autocvar_g_balance_sniperrifle_secondary_ammo;
-       else if (req == WR_RELOAD)
        {
-        self.wish_reload = 1;
+               ammo_amount = self.ammo_nails >= autocvar_g_balance_sniperrifle_secondary_ammo;
+               ammo_amount += self.weapon_load[WEP_SNIPERRIFLE] >= autocvar_g_balance_sniperrifle_secondary_ammo;
+               return ammo_amount;
        }
        else if (req == WR_RESETPLAYER)
        {
                self.sniperrifle_accumulator = time - autocvar_g_balance_sniperrifle_bursttime;
-               self.sniperrifle_bulletcounter = autocvar_g_balance_sniperrifle_magazinecapacity;
-               W_SniperRifle_CheckMaxBullets(FALSE);
+       }
+       else if (req == WR_RELOAD)
+       {
+               W_Reload(min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo), autocvar_g_balance_sniperrifle_reload_ammo, autocvar_g_balance_sniperrifle_reload_time, "weapons/reload.wav");
        }
        return TRUE;
 };
index 98767516ae33e5611fec209b6db0cd1bb7dbb398..4a7978808319109c2d2de1f7f61d652b512e168a 100644 (file)
@@ -236,7 +236,10 @@ float w_tuba(float req)
                //      precache_sound(TUBA_NOTE(i));
        }
        else if (req == WR_SETUP)
+       {
                weapon_setup(WEP_TUBA);
+               self.current_ammo = ammo_none;
+       }
        else if (req == WR_CHECKAMMO1)
                return TRUE; // TODO use fuel?
        else if (req == WR_CHECKAMMO2)
index 0e563405a1fa858ebdbd6719868e30859fd89eef..e4531680035608473b0a3e286a43bfe52465a076 100644 (file)
@@ -1,10 +1,10 @@
 #ifdef REGISTER_WEAPON
-REGISTER_WEAPON(UZI, w_uzi, IT_NAILS, 3, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "uzi", "uzi", _("Machine Gun"))
+REGISTER_WEAPON(UZI, w_uzi, IT_NAILS, 3, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "uzi", "uzi", _("Machine Gun"))
 #else
 #ifdef SVQC
 
 // leilei's fancy muzzleflash stuff
-void Uzi_Flash_Go() 
+void UZI_Flash_Go() 
 {      
        self.frame = self.frame + 2;
        self.scale = self.scale * 0.5;
@@ -30,7 +30,7 @@ void UziFlash()
        setmodel(self.muzzle_flash, "models/uziflash.md3"); // precision set below
        
        self.muzzle_flash.scale = 0.75;
-       self.muzzle_flash.think = Uzi_Flash_Go;
+       self.muzzle_flash.think = UZI_Flash_Go;
        self.muzzle_flash.nextthink = time + 0.02;
        self.muzzle_flash.frame = 2;
        self.muzzle_flash.alpha = 0.75;
@@ -39,15 +39,8 @@ void UziFlash()
        self.muzzle_flash.owner = self;
 }
 
-void W_Uzi_Attack (float deathtype)
+void W_UZI_Attack (float deathtype)
 {
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
-       {
-               if (self.misc_bulletcounter == 1)
-                       self.ammo_nails = self.ammo_nails - autocvar_g_balance_uzi_first_ammo;
-               else
-                       self.ammo_nails = self.ammo_nails - autocvar_g_balance_uzi_sustained_ammo;
-       }
        W_SetupShot (self, autocvar_g_antilag_bullets && autocvar_g_balance_uzi_speed >= autocvar_g_antilag_bullets, 0, "weapons/uzi_fire.wav", CHAN_WEAPON, ((self.misc_bulletcounter == 1) ? autocvar_g_balance_uzi_first_damage : autocvar_g_balance_uzi_sustained_damage));
        if (!g_norecoil)
        {
@@ -72,6 +65,11 @@ void W_Uzi_Attack (float deathtype)
        // casing code
        if (autocvar_g_casings >= 2)
                SpawnCasing (((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3, self);
+
+       if (self.misc_bulletcounter == 1)
+               W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_first_ammo, autocvar_g_balance_uzi_reload_ammo);
+       else
+               W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_reload_ammo);
 }
 
 // weapon frames
@@ -91,7 +89,7 @@ void uzi_fire1_02()
                        return;
                }
                self.misc_bulletcounter = self.misc_bulletcounter + 1;
-               W_Uzi_Attack(WEP_UZI);
+               W_UZI_Attack(WEP_UZI);
                weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, uzi_fire1_02);
        }
        else
@@ -102,6 +100,8 @@ void uzi_fire1_02()
 void uzi_mode1_fire_auto()
 {
        float uzi_spread;
+
+       W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_reload_ammo);
        
        if (self.BUTTON_ATCK)
                weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, uzi_mode1_fire_auto);
@@ -139,10 +139,6 @@ void uzi_mode1_fire_auto()
        
        if (autocvar_g_casings >= 2) // casing code
                SpawnCasing (((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3, self);
-       
-       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)   
-               self.ammo_nails = self.ammo_nails - autocvar_g_balance_uzi_sustained_ammo;
-       
 }
 
 void uzi_mode1_fire_burst()
@@ -183,6 +179,7 @@ void spawnfunc_weapon_machinegun(); // defined in t_items.qc
 
 float w_uzi(float req)
 {
+       float ammo_amount;
        if (req == WR_AIM)
                if(vlen(self.origin-self.enemy.origin) < 3000 - bound(0, skill, 10) * 200)
                        self.BUTTON_ATCK = bot_aim(1000000, 0, 0.001, FALSE);
@@ -192,7 +189,9 @@ float w_uzi(float req)
                }
        else if (req == WR_THINK)
        {
-               if(autocvar_g_balance_uzi_mode == 1)
+               if(autocvar_g_balance_uzi_reload_ammo && self.clip_load < min(max(autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_first_ammo), autocvar_g_balance_uzi_burst_ammo)) // forced reload
+                       weapon_action(self.weapon, WR_RELOAD);
+               else if(autocvar_g_balance_uzi_mode == 1)
                {
                        if (self.BUTTON_ATCK)
                        if (weapon_prepareattack(0, 0))
@@ -210,9 +209,8 @@ float w_uzi(float req)
                                        w_ready();
                                        return FALSE;
                                }
-                               
-                               if not(self.items & IT_UNLIMITED_WEAPON_AMMO)   
-                                       self.ammo_nails = self.ammo_nails - autocvar_g_balance_uzi_burst_ammo;
+
+                               W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_burst_ammo, autocvar_g_balance_uzi_reload_ammo);
 
                                self.misc_bulletcounter = autocvar_g_balance_uzi_burst * -1;
                                uzi_mode1_fire_burst();
@@ -225,7 +223,7 @@ float w_uzi(float req)
                        if (weapon_prepareattack(0, 0))
                        {
                                self.misc_bulletcounter = 1;
-                               W_Uzi_Attack(WEP_UZI); // sets attack_finished
+                               W_UZI_Attack(WEP_UZI); // sets attack_finished
                                weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, uzi_fire1_02);
                        }
 
@@ -233,7 +231,7 @@ float w_uzi(float req)
                        if (weapon_prepareattack(1, 0))
                        {
                                self.misc_bulletcounter = 1;
-                               W_Uzi_Attack(WEP_UZI | HITTYPE_SECONDARY); // sets attack_finished
+                               W_UZI_Attack(WEP_UZI | HITTYPE_SECONDARY); // sets attack_finished
                                weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_uzi_first_refire, w_ready);
                        }
                }
@@ -245,19 +243,49 @@ float w_uzi(float req)
                precache_model ("models/weapons/v_uzi.md3");
                precache_model ("models/weapons/h_uzi.iqm");
                precache_sound ("weapons/uzi_fire.wav");
+               //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else
        }
        else if (req == WR_SETUP)
+       {
                weapon_setup(WEP_UZI);
+               self.current_ammo = ammo_nails;
+       }
        else if (req == WR_CHECKAMMO1)
+       {
                if(autocvar_g_balance_uzi_mode == 1)
-                       return self.ammo_nails >= autocvar_g_balance_uzi_sustained_ammo;
+                       ammo_amount = self.ammo_nails >= autocvar_g_balance_uzi_sustained_ammo;
                else
-                       return self.ammo_nails >= autocvar_g_balance_uzi_first_ammo;
+                       ammo_amount = self.ammo_nails >= autocvar_g_balance_uzi_first_ammo;
+
+               if(autocvar_g_balance_uzi_reload_ammo)
+               {
+                       if(autocvar_g_balance_uzi_mode == 1)
+                               ammo_amount += self.weapon_load[WEP_UZI] >= autocvar_g_balance_uzi_sustained_ammo;
+                       else
+                               ammo_amount += self.weapon_load[WEP_UZI] >= autocvar_g_balance_uzi_first_ammo;
+               }
+               return ammo_amount;
+       }
        else if (req == WR_CHECKAMMO2)
+       {
                if(autocvar_g_balance_uzi_mode == 1)
-                       return self.ammo_nails >= autocvar_g_balance_uzi_burst_ammo;
+                       ammo_amount = self.ammo_nails >= autocvar_g_balance_uzi_burst_ammo;
                else
-                       return self.ammo_nails >= autocvar_g_balance_uzi_first_ammo;
+                       ammo_amount = self.ammo_nails >= autocvar_g_balance_uzi_first_ammo;
+
+               if(autocvar_g_balance_uzi_reload_ammo)
+               {
+                       if(autocvar_g_balance_uzi_mode == 1)
+                               ammo_amount += self.weapon_load[WEP_UZI] >= autocvar_g_balance_uzi_burst_ammo;
+                       else
+                               ammo_amount += self.weapon_load[WEP_UZI] >= autocvar_g_balance_uzi_first_ammo;
+               }
+               return ammo_amount;
+       }
+       else if (req == WR_RELOAD)
+       {
+               W_Reload(min(max(autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_first_ammo), autocvar_g_balance_uzi_burst_ammo), autocvar_g_balance_uzi_reload_ammo, autocvar_g_balance_uzi_reload_time, "weapons/reload.wav");
+       }
        return TRUE;
 };
 #endif
diff --git a/sound/weapons/campingrifle_reload.ogg b/sound/weapons/campingrifle_reload.ogg
deleted file mode 100644 (file)
index 2edb373..0000000
Binary files a/sound/weapons/campingrifle_reload.ogg and /dev/null differ
diff --git a/sound/weapons/reload.ogg b/sound/weapons/reload.ogg
new file mode 100644 (file)
index 0000000..2edb373
Binary files /dev/null and b/sound/weapons/reload.ogg differ
index 6b52738e5ca611bf6169d90502036b1a591396f1..fd9abbe535cba8e2f91add631ceaca8b9bd1cd3f 100644 (file)
 \sv_vote_simple_majority_factor\Simple majority wins a vote
 \XonoticMultiplayerDialog/Advanced settings...\Advanced server settings
 \XonoticMultiplayerDialog/Mutators...\Mutators and weapon arenas
+\g_dodging\Enable dodging
 \g_cloaked\All players are almost invisible
 \g_footsteps\Enable footstep sounds
-\g_midair\Only possible to inflict damage on your enemy while he's airborn
+\g_midair\Only possible to inflict damage on your enemy while he's airborne
 \g_vampire\Damage done to your enemy gets added to your own health
 \g_bloodloss\Amount of health below which your player gets stunned because of blood loss
 \sv_gravity\Make things fall to the ground slower, lower value means lower gravity
index dbefdef796acd5e9144c3780cedf1970a8eee5ba..b23b40eab2691ac83d0c4534d2d3622b6fbcd852 100644 (file)
@@ -3,11 +3,11 @@
 
 
 \XonoticMultiplayerDialog\Spiele online, gegen deine Freunde im LAN, gucke dir Demos an oder ändere deine Spieler-Einstellungen
-\XonoticMultiplayerDialog/Server\Finde Server um auf ihnen zu spielen
-\menu_slist_showempty\Zeige leere Server
-\menu_slist_showfull\Zeige volle Server, die keinen freien Platz mehr haben
+\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\Zeige mehr Informationen über den markierten Server
+\XonoticMultiplayerDialog/Info\Lass dir mehr Informationen über den markierten Server anzeigen
 \XonoticMultiplayerDialog/Bookmark\Setze ein Lesezeichen für den markierten Server um ihn beim nächsten mal schneller wiederzufinden
 \XonoticMultiplayerDialog/Havoc\Wechsel in den Havoc Modus, welcher zu Änderungen des Spielverhaltens führt
 \XonoticMultiplayerDialog/Starten\Hoste dein eigenes Spiel
 \XonoticTeamSelectDialog/gelb\Trete dem gelben Team bei
 \XonoticTeamSelectDialog/pink\Trete dem pinken Team bei
 
-\timelimit_override\Beim Erreichen dieses Zeitlimits in Minuten endet das Spiel
-\fraglimit_override\Die Anzahl an Frags die benötigt wird, bevor das Spiel endet
-\menu_maxplayers\Die maximale Anzahl der Spieler oder Bots, welche sich mit dem Server gleichzeitig verbinden können
-\bot_number\Anzahl von Bots auf dem Server
-\skill\Gib an, wie erfahren die Bots sein sollen
-\g_maplist_votable\Anzahl von Maps, welche am Ende des Spiels zur Wahl stehen
-\sv_vote_simple_majority_factor\Einfache Mehrheit gewinnt die Abstimmung
+\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...\Mutators und Waffen-Arenen
-\g_cloaked\Alle Spieler sind fast unsichtbar
-\g_footsteps\Aktiviere den Schrittklang
-\g_midair\Dem Gegner Schaden zuzufügen ist nur möglich, wenn er sich in der Luft befindet
-\g_vampire\Der Schaden dem du anderen Spielern zufügst, wird deiner Lebensenergie hinzugefügt
-\g_bloodloss\Höhe der Lebensenergie, bei der dein Spieler auf Grund von Blutverlust betäubt wirkt
-\sv_gravity\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\Spieler lassen alle Waffen fallen, die sie besaßen, wenn sie sterben
-\g_weapon_stay\Waffen bleiben liegen, auch wenn sie aufgenommen wurden
-\g_weaponarena\Auswahl einer Waffen-Arena führt dazu, dass jeder Spieler mit der gewählten Waffe startet. Diese hat unendlich viel Munition und andere Waffen sind nicht vorhanden..
-\menu_weaponarena_with_laser\Aktiviere auch 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 welche 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_nixnex\keine 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 zu einer neuen gleichen Waffe.
-\g_nixnex_with_laser\In NixNex ist immer als zweite Waffe der Laser vorhanden
-\XonoticMultiplayerDialog/All\Wähle alle Maps
-\XonoticMultiplayerDialog/None\Wähle alle Maps ab
-
-
-\XonoticMultiplayerDialog/Timedemo\Teste wie schnell dein Computer die markierte Demo abspielen kann - Es wird ein Benchmark-Test ausgeführt, dessen Ergebniss in "gamedir/data/" gespeichert wird.
-
-\fov\Sichtfeld in Grad mit einem Wert zwischen 60 und 130, Standard ist 90
-\cl_bobcycle\Setze den Wert für das "Sicht-Wackeln". Deaktivieren für kein "Sicht-Wackeln"
-\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, sowie den automatischen Wechsel der Waffenmodelle und Weiteres
-
-\cl_weaponpriority_useforcycling\Benutze die oben angegebene Liste, wenn die Waffen mit Hilfe des Mausrads gewechselt werden
-\cl_autoswitch\Wechsel automatisch zu der neu aufgesammelten Waffe, wenn diese besser ist als die, welche Du zur Zeit 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, 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_red\Roter Farbanteil des Fadenkreuzes
-\crosshair_color_green\grüner Farbanteil des Fadenkreuzes
-\crosshair_color_blue\blauer Farbanteil des Fadenkreuzes
-\sbar_hudselector\Benutze das alte HUD Layout
-\XonoticMultiplayerDialog/Radar, HUD & Waypoints...\Stelle Radar, HUD & Wegpunkte ein
-\_cl_name\Lege deinen Namen im Spiel fest
+\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 NixNex ist als zweite Waffe der Laser vorhanden.
+\XonoticMultiplayerDialog/All\Wähle alle Maps.
+\XonoticMultiplayerDialog/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.
+\XonoticMultiplayerDialog/Radar, HUD & Waypoints...\Stelle Radar, HUD & Wegpunkte ein.
+\_cl_name\Lege deinen Namen im Spiel fest.
 
 \XonoticSettingsDialog\Ändere die Spiel-Einstellungen
-\XonoticCreditsDialog\Die Xonotic Credits
+\XonoticCreditsDialog\Die Xonotic Entwickler
 \XonoticTeamSelectDialog\-
 \XonoticMutatorsDialog\-
 \XonoticMapInfoDialog\-
 \XonoticQuitDialog/Nein\Ich muss noch ein paar Typen fraggen!
 
 \XonoticSettingsDialog/Eingabe\Einstellungen der Eingabe
-\sensitivity\Maus Geschwindigkeitsmultiplikator
-\menu_mouse_speed\Maus Geschwindigkeitsmultiplikator 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
+\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\Display actions / bound keys in the strings shown during the game
-\cl_showpressedkeys\Lass dir die gedrückten Tasten anderer Spieler anzeigen
+\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
 
-\XonoticSettingsDialog/Video\Video Einstellungen
 \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)
-\r_glsl\Aktiviere OpenGL 2.0 Enable OpenGL 2.0 Pixel-Shader für Lichteffekte (Standard: aktiviert)
-\gl_vbo\Speicher Eckpunkte und einige Dreiecke der statischen Geometrie im Videospeicher um ein schnelleres Rendern zu ermöglichen (Standard: aktiviert)
-\r_depthfirst\erhindere das Überblenden indem nur die das Tiefenbild der Szene vor dem Licht gerendert wird (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.125)
+\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: Deaktiviert)
-\r_ambient\Ambientebeleuchtung, ein zu hoch eingestellter Wert lässt das Map matt und flach erscheinenht (Standard: 4)
-\r_hdr_scenebrightness\Globales Rendern der Helligkeit (Standard: 1)
-\vid_samples\Aktiviere Antialiasing um Ecken der 3D-Geometire zu glätten. Kann die Leistung stark verringern (Standard: deaktiviert)
-\v_flipped\Linkshänder Modus für arme Leute (Standard: deaktiviert)
+\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 Rundheit/Glattheit von Kurven in der Map (Standard: Normal)
-\gl_picmip\Ändere die Schärfe 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: 0.5)
-\r_drawparticles_drawdistance\Weiter entfernte Partikel werden nicht dargestellt (Standard 1000)
+\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_drawparticles_drawdistance\Weiter, als eingestellt, entfernte Partikel werden nicht dargestellt (Standard 1000)
 \cl_decals\Aktiviere Dekore (Einschusslöcher und Blut) (Standard: aktiviert)
-\r_drawdecals_drawdistance\Weiter entfernte Dekore werden nicht dargestellt (Standard: 300)
+\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 (Standard: deaktiviert)
-\cl_nogibs\Verringere die Anzahl von Fleischteilen oder entferne sie vollständig (Standard: viele)
+\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: 1x)
-\r_glsl_deluxemapping\Verwende ein-Pixel Lichteffekte (default: enabled)
-\r_shadow_gloss\Aktiviere Glanzeffekte für Texturen, wenn die Textur es unterstützt (glossmap) (Standard: aktiviert)
-\gl_flashblend\Enable faster but uglier dynamic lights by rendering bright coronas instead of real dynamic lights (default: disabled)
-\r_shadow_realtime_dlight\Aktiviere das Rendern von dynamischen Lichtern, wie Explosionen und Raketen-Lichter (Standard: aktiviert) 
+\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_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_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\Higher quality offset mapping, which also has a huge impact on performance (default: disabled)
+\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_coronas\Aktiviere die Korona um bestimmte Lichter (Standard: aktiviert)
-\r_coronas_occlusionquery\Verringern der Korona, der Sichtbarkeit entsprechend (Standard: deaktiviert)
-\r_bloom\Aktiviere Bloom-Effekt, der die umgebenden Pixel sehr hell erleuchteter Pixel erhellt. Dieser Effekt hat einen großen Einfluss auf die Leistung (Standard: deaktiviert)
-\r_hdr\Höhere Qualität des Bloom-Effekts, hat einen sehr gr0ßen Einfluss auf die Leistung (Standard: deaktiviert)
-\r_motionblur\Stäre der Bewegungsunschärfe - 0.5 empfohlen
-\r_damageblur\Wert für die Bewegungsunschärfe bei einer Verletzung - 0.4 empfohlen
+\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
 
 \XonoticSettingsDialog/Audio\Audio-Einstellungen
 \bgmvolume\-
 \snd_playerchannel1volume\-
 \snd_speed\Ausgangsfrequenz des Tons
 \snd_channels\Anzahl der Kanäle für die Audiowiedergabe
-\snd_swapstereo\Linken und rechten Kanal 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 "Bemerkungen" anderer Spieler gehört werden können
-\cl_autotaunt\Automatisches "Bemerkung", wenn Gegner gefraggt wurden
-\cl_sound_maptime_warning\Ansgage-Sound 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_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.
 
 \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 die Netzwerkgeschwindigkeit mit dem  deine Netzwerkgeschwindigkeit mit dem Schieberegler an
-\cl_netfps\Anzahl der Pakete die pro Sekunde zum Server, mit dem man verbunden ist, geschickt werden sollen
+\_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\Maximale Download Geschwindigkeit
-\cl_port\Stelle den zu verwendenden UDP Port als Client ein,  wenn der Port auf 0 gesetzt ist, wird kein bestimmter 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
index 4cb860e19c7ab06c46ea43986e14836f97427eaa..dc5b5c4c6c060fc6a53de5422940e240f6a393d7 100644 (file)
@@ -59,7 +59,7 @@ by Forest "LordHavoc" Hale
 Rudolf "divVerent" Polzer
 
 *Finnish
-Exitium
+Henry "Exitium" Sanmark
 
 *French
 Calinou
index 2c53d6aee10d3c0446ffde221e9df258aa7b3b43..07716c32935af451a4dff23f438d5c5e0458a8e3 100644 (file)
@@ -59,7 +59,7 @@ by Forest "LordHavoc" Hale
 Rudolf "divVerent" Polzer
 
 *Finnish (TODO TRANSLATE THIS)
-Exitium
+Henry "Exitium" Sanmark
 
 *Français
 Calinou