From: Morphed Date: Wed, 30 Mar 2011 21:38:48 +0000 (+0200) Subject: Merge branch 'morphed/hpitems' of ssh://git.xonotic.org/xonotic-data.pk3dir into... X-Git-Tag: xonotic-v0.5.0~307^2~16^2 X-Git-Url: http://git.xonotic.org/?a=commitdiff_plain;h=9df92eba777ae4365b46b0eb61fe315d91ed9388;hp=175676acff258066f5f61e6044327fabb448a309;p=xonotic%2Fxonotic-data.pk3dir.git Merge branch 'morphed/hpitems' of ssh://git.xonotic.org/xonotic-data.pk3dir into morphed/hpitems --- diff --git a/apply-eol-style.sh b/apply-eol-style.sh deleted file mode 100755 index 6c6c997cc..000000000 --- a/apply-eol-style.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -while read -r EXT EOLSTYLE; do - echo "Fixing $EXT..." - find . -name .svn -prune -o -type f \( -name "*.$EXT" -o -name "$EXT" \) -print0 | \ - case "$EOLSTYLE" in - 1) - xargs -0 svn propset svn:eol-style native - ;; - 0) - xargs -0 svn propdel svn:eol-style - ;; - esac -done 0.16 to compensate a little for lower damage set g_balance_shotgun_primary_refire 1 -set g_balance_shotgun_primary_animtime 0.4 +set g_balance_shotgun_primary_animtime 0.3 set g_balance_shotgun_primary_ammo 1 set g_balance_shotgun_primary_speed 12000 set g_balance_shotgun_primary_bulletconstant 75 // 3.8qu @@ -265,19 +267,20 @@ set g_balance_shotgun_secondary_animtime 1 // {{{ uzi set g_balance_uzi_mode 1 // Activates varible spread for sustained & burst mode secondary set g_balance_uzi_spread_min 0.02 -set g_balance_uzi_spread_max 0.6 +set g_balance_uzi_spread_max 0.3 // LOG: 0.6 -> 0.3 set g_balance_uzi_spread_add 0.008 set g_balance_uzi_burst 3 // # of bullets in a burst (if set to 2 or more) +set g_balance_uzi_burst_animtime 0.45 set g_balance_uzi_burst_refire 0.05 // refire between burst bullets set g_balance_uzi_burst_refire2 0.45 // refire after burst -set g_balance_uzi_burst_spread 0.05 -set g_balance_uzi_burst_damage 20 // 100 dps, delivered in 0.15s +set g_balance_uzi_burst_spread 0.07 +set g_balance_uzi_burst_damage 25 set g_balance_uzi_burst_force 50 set g_balance_uzi_burst_ammo 3 set g_balance_uzi_first 1 -set g_balance_uzi_first_damage 20 // 100 dps +set g_balance_uzi_first_damage 15 / f/ LOG: 22 -> 15 set g_balance_uzi_first_force 50 set g_balance_uzi_first_spread 0.03 set g_balance_uzi_first_refire 0.2 @@ -285,7 +288,7 @@ set g_balance_uzi_first_ammo 2 set g_balance_uzi_sustained_damage 12 // 120 dps set g_balance_uzi_sustained_force 12 -set g_balance_uzi_sustained_spread 0.08 +set g_balance_uzi_sustained_spread 0.06 set g_balance_uzi_sustained_refire 0.1 set g_balance_uzi_sustained_ammo 1 @@ -305,7 +308,7 @@ set g_balance_grenadelauncher_primary_spread 0 set g_balance_grenadelauncher_primary_lifetime 5 set g_balance_grenadelauncher_primary_lifetime2 0.65 set g_balance_grenadelauncher_primary_refire 0.8 -set g_balance_grenadelauncher_primary_animtime 0.4 +set g_balance_grenadelauncher_primary_animtime 0.3 set g_balance_grenadelauncher_primary_ammo 2 set g_balance_grenadelauncher_primary_health 80 set g_balance_grenadelauncher_primary_damageforcescale 0 @@ -323,7 +326,7 @@ set g_balance_grenadelauncher_secondary_spread 0 set g_balance_grenadelauncher_secondary_lifetime 3 set g_balance_grenadelauncher_secondary_lifetime2 0.65 set g_balance_grenadelauncher_secondary_refire 0.8 -set g_balance_grenadelauncher_secondary_animtime 0.4 +set g_balance_grenadelauncher_secondary_animtime 0.3 set g_balance_grenadelauncher_secondary_ammo 2 set g_balance_grenadelauncher_secondary_health 40 set g_balance_grenadelauncher_secondary_damageforcescale 0 @@ -340,11 +343,12 @@ set g_balance_minelayer_radius 175 set g_balance_minelayer_proximityradius 150 set g_balance_minelayer_speed 750 set g_balance_minelayer_lifetime 60 +set g_balance_minelayer_lifetime_countdown 0 set g_balance_minelayer_refire 1.5 -set g_balance_minelayer_animtime 0.4 +set g_balance_minelayer_animtime 0.3 set g_balance_minelayer_ammo 5 set g_balance_minelayer_health 15 -set g_balance_minelayer_limit 4 // 0 disables the limit +set g_balance_minelayer_limit 3 // 0 disables the limit // LOG: 4 -> 3 set g_balance_minelayer_protection 1 // don't explode if the mine would hurt the owner or a team mate set g_balance_minelayer_damageforcescale 0 set g_balance_minelayer_detonatedelay -1 // 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 @@ -356,17 +360,17 @@ set g_balance_minelayer_remote_force 300 // }}} // {{{ electro set g_balance_electro_lightning 1 -set g_balance_electro_primary_damage 92 +set g_balance_electro_primary_damage 100 set g_balance_electro_primary_edgedamage 0 set g_balance_electro_primary_force 425 set g_balance_electro_primary_force_up 125 set g_balance_electro_primary_radius 850 -set g_balance_electro_primary_comboradius 75 +set g_balance_electro_primary_comboradius 150 set g_balance_electro_primary_speed 0 set g_balance_electro_primary_spread 0 set g_balance_electro_primary_lifetime 0 set g_balance_electro_primary_refire 0.4 -set g_balance_electro_primary_animtime 0.03333333 +set g_balance_electro_primary_animtime 0.2 set g_balance_electro_primary_ammo 5 set g_balance_electro_primary_range 800 set g_balance_electro_primary_falloff_mindist 0 @@ -398,18 +402,19 @@ set g_balance_electro_combo_comboradius 0 set g_balance_electro_combo_speed 400 // }}} // {{{ crylink -set g_balance_crylink_primary_damage 10 -set g_balance_crylink_primary_edgedamage 6 -set g_balance_crylink_primary_force 40 +set g_balance_crylink_primary_damage 7 // LOG: 10 -> 7 +set g_balance_crylink_primary_edgedamage 4 // LOG: 6 -> 4 +set g_balance_crylink_primary_force 35 set g_balance_crylink_primary_radius 80 set g_balance_crylink_primary_speed 1500 set g_balance_crylink_primary_spread 0.05 set g_balance_crylink_primary_shots 7 set g_balance_crylink_primary_bounces 2 set g_balance_crylink_primary_refire 0.8 -set g_balance_crylink_primary_animtime 0.4 +set g_balance_crylink_primary_animtime 0.3 set g_balance_crylink_primary_ammo 2 set g_balance_crylink_primary_bouncedamagefactor 0.2 +set g_balance_crylink_primary_joindelay 0 set g_balance_crylink_primary_joinspread 0.2 set g_balance_crylink_primary_jointime 0.1 set g_balance_crylink_primary_joinexplode 0 @@ -425,55 +430,56 @@ set g_balance_crylink_primary_other_lifetime 2 // range: 800 full, fades to 1300 set g_balance_crylink_primary_other_fadetime 0.25 set g_balance_crylink_secondary 1 -set g_balance_crylink_secondary_damage 3 -set g_balance_crylink_secondary_edgedamage 0 -set g_balance_crylink_secondary_force -20 -set g_balance_crylink_secondary_radius 5 -set g_balance_crylink_secondary_speed 1700 -set g_balance_crylink_secondary_spread 0.03 -set g_balance_crylink_secondary_shots 3 -set g_balance_crylink_secondary_bounces 0 -set g_balance_crylink_secondary_refire 0.15 -set g_balance_crylink_secondary_animtime 0.15 -set g_balance_crylink_secondary_ammo 1 -set g_balance_crylink_secondary_bouncedamagefactor 0.5 -set g_balance_crylink_secondary_joinspread 0 -set g_balance_crylink_secondary_jointime 0 +set g_balance_crylink_secondary_damage 5 // LOG: 8 -> 5 +set g_balance_crylink_secondary_edgedamage 3 +set g_balance_crylink_secondary_force 16 // LOG: 20 -> 16 +set g_balance_crylink_secondary_radius 15 // LOG: 20 -> 15 +set g_balance_crylink_secondary_speed 1250 // LOG: 1500 -> 1250 +set g_balance_crylink_secondary_spread 0.1 +set g_balance_crylink_secondary_shots 6 +set g_balance_crylink_secondary_bounces 2 +set g_balance_crylink_secondary_refire 0.9 // LOG: 0.8 -> 0.9 +set g_balance_crylink_secondary_animtime 0.3 +set g_balance_crylink_secondary_ammo 3 // LOG: 2 -> 3 +set g_balance_crylink_secondary_bouncedamagefactor 0.4 // LOG: 0.2 -> 0.4 +set g_balance_crylink_secondary_joindelay 0 +set g_balance_crylink_secondary_joinspread 0.2 +set g_balance_crylink_secondary_jointime 0.1 set g_balance_crylink_secondary_joinexplode 0 set g_balance_crylink_secondary_joinexplode_damage 0 set g_balance_crylink_secondary_joinexplode_edgedamage 0 set g_balance_crylink_secondary_joinexplode_radius 0 set g_balance_crylink_secondary_joinexplode_force 0 -set g_balance_crylink_secondary_linkexplode 1 +set g_balance_crylink_secondary_linkexplode 0 set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to 10000 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_secondary_line_fadetime 0.25 // }}} // {{{ nex set g_balance_nex_primary_damage 90 set g_balance_nex_primary_force 500 set g_balance_nex_primary_refire 1 -set g_balance_nex_primary_animtime 0.4 +set g_balance_nex_primary_animtime 0.3 set g_balance_nex_primary_ammo 5 set g_balance_nex_primary_damagefalloff_mindist 0 set g_balance_nex_primary_damagefalloff_maxdist 0 set g_balance_nex_primary_damagefalloff_halflife 0 set g_balance_nex_primary_damagefalloff_forcehalflife 0 -set g_balance_nex_secondary 1 -set g_balance_nex_secondary_charge 1 +set g_balance_nex_secondary 0 // LOG: disable secondary +set g_balance_nex_secondary_charge 0 // LOG: disable secondary charge set g_balance_nex_secondary_charge_rate 0.4 set g_balance_nex_secondary_chargepool 1 -set g_balance_nex_secondary_chargepool_regen 0.15 -set g_balance_nex_secondary_chargepool_pause_regen 1 -set g_balance_nex_secondary_chargepool_pause_health_regen 1 +set g_balance_nex_secondary_chargepool_regen 0.25 +set g_balance_nex_secondary_chargepool_pause_regen 2 +set g_balance_nex_secondary_chargepool_pause_health_regen 0.5 set g_balance_nex_secondary_damage 0 set g_balance_nex_secondary_force 0 set g_balance_nex_secondary_refire 0 set g_balance_nex_secondary_animtime 0 -set g_balance_nex_secondary_ammo 0.2 // full charge pool is 1, so it depletes in 5 secs +set g_balance_nex_secondary_ammo 0.4 // full charge pool is 1, so it depletes in 2.5 secs set g_balance_nex_secondary_damagefalloff_mindist 0 set g_balance_nex_secondary_damagefalloff_maxdist 0 set g_balance_nex_secondary_damagefalloff_halflife 0 @@ -483,9 +489,10 @@ set g_balance_nex_charge 1 set g_balance_nex_charge_mindmg 20 set g_balance_nex_charge_start 0.5 set g_balance_nex_charge_rate 0.5 -set g_balance_nex_charge_limit 0.5 -set g_balance_nex_charge_rot_rate 0.1 -set g_balance_nex_charge_rot_pause 1 // Dont rot down until this long after release of charge button +set g_balance_nex_charge_animlimit 0.5 +set g_balance_nex_charge_limit 1 // LOG: 0.5 -> 1 - allow to fully charge automaticaly +set g_balance_nex_charge_rot_rate 0 // LOG: 0.1 -> 0 - disable rot +set g_balance_nex_charge_rot_pause 0.5 // Dont rot down until this long after release of charge button set g_balance_nex_charge_shot_multiplier 0 set g_balance_nex_charge_velocity_rate 0 set g_balance_nex_charge_minspeed 600 @@ -493,14 +500,14 @@ set g_balance_nex_charge_maxspeed 1000 // }}} // {{{ minstanex set g_balance_minstanex_refire 1 -set g_balance_minstanex_animtime 0.75 +set g_balance_minstanex_animtime 0.50 set g_balance_minstanex_ammo 10 // }}} // {{{ hagar set g_balance_hagar_primary_damage 14 set g_balance_hagar_primary_edgedamage 6 set g_balance_hagar_primary_force 70 -set g_balance_hagar_primary_radius 115 +set g_balance_hagar_primary_radius 110 set g_balance_hagar_primary_spread 0.1 set g_balance_hagar_primary_speed 1800 set g_balance_hagar_primary_lifetime 5 @@ -528,7 +535,7 @@ set g_balance_rocketlauncher_speedaccel 1400 set g_balance_rocketlauncher_speedstart 800 set g_balance_rocketlauncher_lifetime 5 set g_balance_rocketlauncher_refire 1 -set g_balance_rocketlauncher_animtime 0.4 +set g_balance_rocketlauncher_animtime 0.3 set g_balance_rocketlauncher_ammo 3 set g_balance_rocketlauncher_health 0 set g_balance_rocketlauncher_damageforcescale 0 @@ -545,7 +552,7 @@ set g_balance_rocketlauncher_remote_force 350 // }}} // {{{ porto set g_balance_porto_primary_refire 1.5 -set g_balance_porto_primary_animtime 0.3 +set g_balance_porto_primary_animtime 0.2 set g_balance_porto_primary_speed 2000 set g_balance_porto_primary_lifetime 5 set g_balance_portal_health 200 // these get recharged whenever the portal is used @@ -554,7 +561,7 @@ set g_balance_portal_lifetime 15 // these get recharged whenever the portal is u // {{{ hook set g_balance_hook_primary_fuel 5 // hook monkeys set 0 set g_balance_hook_primary_refire 0 // hook monkeys set 0 -set g_balance_hook_primary_animtime 0.3 // good shoot anim +set g_balance_hook_primary_animtime 0.2 // good shoot anim set g_balance_hook_primary_hooked_time_max 0 // infinite set g_balance_hook_primary_hooked_time_free 2 // 2s being hooked are free set g_balance_hook_primary_hooked_fuel 5 // fuel per second hooked @@ -567,7 +574,7 @@ set g_balance_hook_secondary_lifetime 5 // infinite set g_balance_hook_secondary_speed 0 // not much throwing set g_balance_hook_secondary_gravity 5 // fast falling set g_balance_hook_secondary_refire 3 // don't drop too many bombs... -set g_balance_hook_secondary_animtime 0.3 // good shoot anim +set g_balance_hook_secondary_animtime 0.2 // good shoot anim set g_balance_hook_secondary_power 3 // effect behaves like a square function set g_balance_hook_secondary_duration 1.5 // effect runs for three seconds // }}} @@ -585,7 +592,7 @@ set g_balance_hlac_primary_speed 9000 set g_balance_hlac_primary_lifetime 5 set g_balance_hlac_primary_refire 0.1 -set g_balance_hlac_primary_animtime 0.3 +set g_balance_hlac_primary_animtime 0.2 set g_balance_hlac_primary_ammo 1 set g_balance_hlac_secondary 1 @@ -600,42 +607,43 @@ set g_balance_hlac_secondary_speed 9000 set g_balance_hlac_secondary_lifetime 5 set g_balance_hlac_secondary_refire 0.8 -set g_balance_hlac_secondary_animtime 0.6 +set g_balance_hlac_secondary_animtime 0.4 set g_balance_hlac_secondary_ammo 4 set g_balance_hlac_secondary_shots 6 // }}} -// {{{ campingrifle -set g_balance_campingrifle_magazinecapacity 8 // make it pretty much useless in close combat -set g_balance_campingrifle_reloadtime 2 // matches reload anim -set g_balance_campingrifle_auto_reload_on_switch 0 -set g_balance_campingrifle_bursttime 0 -set g_balance_campingrifle_primary_tracer 1 -set g_balance_campingrifle_primary_damage 60 -set g_balance_campingrifle_primary_headshotaddeddamage 100 -set g_balance_campingrifle_primary_spread 0 -set g_balance_campingrifle_primary_force 2 -set g_balance_campingrifle_primary_speed 40000 -set g_balance_campingrifle_primary_lifetime 5 -set g_balance_campingrifle_primary_refire 1.5 -set g_balance_campingrifle_primary_animtime 1.4 -set g_balance_campingrifle_primary_ammo 10 -set g_balance_campingrifle_primary_bulletconstant 110 // 62.2qu -set g_balance_campingrifle_primary_burstcost 0 -set g_balance_campingrifle_primary_bullethail 0 // empty magazine on shot -set g_balance_campingrifle_secondary 1 -set g_balance_campingrifle_secondary_tracer 0 -set g_balance_campingrifle_secondary_damage 42 -set g_balance_campingrifle_secondary_headshotaddeddamage 70 -set g_balance_campingrifle_secondary_spread 0 -set g_balance_campingrifle_secondary_force 2 -set g_balance_campingrifle_secondary_speed 20000 -set g_balance_campingrifle_secondary_lifetime 5 -set g_balance_campingrifle_secondary_refire 1.5 -set g_balance_campingrifle_secondary_animtime 1.4 -set g_balance_campingrifle_secondary_ammo 10 -set g_balance_campingrifle_secondary_bulletconstant 110 // 15.5qu -set g_balance_campingrifle_secondary_burstcost 0 -set g_balance_campingrifle_secondary_bullethail 0 // empty magazine on shot +// {{{ 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 +set g_balance_sniperrifle_primary_headshotaddeddamage 60 +set g_balance_sniperrifle_primary_spread 0 +set g_balance_sniperrifle_primary_force 2 +set g_balance_sniperrifle_primary_speed 40000 +set g_balance_sniperrifle_primary_lifetime 5 +set g_balance_sniperrifle_primary_refire 1.5 +set g_balance_sniperrifle_primary_animtime 1.4 +set g_balance_sniperrifle_primary_ammo 10 +set g_balance_sniperrifle_primary_bulletconstant 110 // 62.2qu +set g_balance_sniperrifle_primary_burstcost 0 +set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot +set g_balance_sniperrifle_secondary 1 +set g_balance_sniperrifle_secondary_reload 1 +set g_balance_sniperrifle_secondary_tracer 0 +set g_balance_sniperrifle_secondary_damage 42 +set g_balance_sniperrifle_secondary_headshotaddeddamage 42 +set g_balance_sniperrifle_secondary_spread 0 +set g_balance_sniperrifle_secondary_force 2 +set g_balance_sniperrifle_secondary_speed 20000 +set g_balance_sniperrifle_secondary_lifetime 5 +set g_balance_sniperrifle_secondary_refire 1.5 +set g_balance_sniperrifle_secondary_animtime 1.4 +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 // }}} // {{{ tuba set g_balance_tuba_refire 0.05 @@ -650,7 +658,7 @@ set g_balance_tuba_force 40 // }}} // {{{ fireball set g_balance_fireball_primary_ammo 40 -set g_balance_fireball_primary_animtime 0.15 +set g_balance_fireball_primary_animtime 0.2 set g_balance_fireball_primary_bfgdamage 100 set g_balance_fireball_primary_bfgforce 0 set g_balance_fireball_primary_bfgradius 1000 @@ -670,7 +678,7 @@ set g_balance_fireball_primary_refire2 0 set g_balance_fireball_primary_speed 650 set g_balance_fireball_primary_spread 0 set g_balance_fireball_secondary_ammo 5 -set g_balance_fireball_secondary_animtime 0.3 +set g_balance_fireball_secondary_animtime 0.2 set g_balance_fireball_secondary_damage 40 set g_balance_fireball_secondary_damageforcescale 4 set g_balance_fireball_secondary_damagetime 5 @@ -702,14 +710,14 @@ set g_balance_seeker_flac_speed_z 0 set g_balance_seeker_flac_spread 0.4 set g_balance_seeker_missile_accel 1400 set g_balance_seeker_missile_ammo 2 -set g_balance_seeker_missile_animtime 0.3 -set g_balance_seeker_missile_count 8 -set g_balance_seeker_missile_damage 15 +set g_balance_seeker_missile_animtime 0.2 +set g_balance_seeker_missile_count 3 // LOG: 8 -> 3 +set g_balance_seeker_missile_damage 30 // LOG: 15 -> 30 set g_balance_seeker_missile_damageforcescale 4 set g_balance_seeker_missile_decel 1400 set g_balance_seeker_missile_delay 0.25 set g_balance_seeker_missile_edgedamage 10 -set g_balance_seeker_missile_force 250 +set g_balance_seeker_missile_force 150 // LOG: 100 -> 150 set g_balance_seeker_missile_health 5 set g_balance_seeker_missile_lifetime 15 set g_balance_seeker_missile_proxy 0 @@ -724,15 +732,15 @@ set g_balance_seeker_missile_smart_trace_min 1000 set g_balance_seeker_missile_speed 700 set g_balance_seeker_missile_speed_up 300 set g_balance_seeker_missile_speed_z 0 -set g_balance_seeker_missile_speed_max 1400 +set g_balance_seeker_missile_speed_max 1300 // LOG: 1400 -> 1300 set g_balance_seeker_missile_spread 0 set g_balance_seeker_missile_turnrate 0.65 set g_balance_seeker_tag_ammo 1 -set g_balance_seeker_tag_animtime 0.3 +set g_balance_seeker_tag_animtime 0.2 set g_balance_seeker_tag_damageforcescale 4 set g_balance_seeker_tag_health 5 set g_balance_seeker_tag_lifetime 15 -set g_balance_seeker_tag_refire 0.7 +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 // End new seeker diff --git a/balancetZork.cfg b/balancetZork.cfg index bff56f233..ed8ea42d5 100644 --- a/balancetZork.cfg +++ b/balancetZork.cfg @@ -13,7 +13,7 @@ set g_start_weapon_minstanex -1 "0 = never provide the weapon, 1 = always provid set g_start_weapon_porto -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" set g_start_weapon_hook -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" set g_start_weapon_hlac -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" -set g_start_weapon_campingrifle -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" +set g_start_weapon_sniperrifle -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" set g_start_weapon_tuba -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" set g_start_weapon_fireball -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" set g_start_weapon_seeker -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" @@ -55,67 +55,52 @@ set g_balance_nix_ammoincr_fuel 2 // {{{ pickup items set g_pickup_ammo_anyway 1 set g_pickup_weapons_anyway 1 - set g_pickup_shells 20 set g_pickup_shells_weapon 10 set g_pickup_shells_max 50 - set g_pickup_nails 60 set g_pickup_nails_weapon 60 set g_pickup_nails_max 300 - set g_pickup_rockets 25 set g_pickup_rockets_weapon 15 set g_pickup_rockets_max 150 - set g_pickup_cells 30 set g_pickup_cells_weapon 20 set g_pickup_cells_max 300 - set g_pickup_fuel 25 set g_pickup_fuel_weapon 15 set g_pickup_fuel_jetpack 50 set g_pickup_fuel_max 999 - set g_pickup_armorsmall 5 set g_pickup_armorsmall_max 999 set g_pickup_armorsmall_anyway 0 - set g_pickup_armormedium 25 set g_pickup_armormedium_max 100 set g_pickup_armormedium_anyway 0 - set g_pickup_armorbig 50 set g_pickup_armorbig_max 150 set g_pickup_armorbig_anyway 0 - set g_pickup_armorlarge 100 set g_pickup_armorlarge_max 999 set g_pickup_armorlarge_anyway 0 - set g_pickup_healthsmall 5 set g_pickup_healthsmall_max 999 set g_pickup_healthsmall_anyway 0 - set g_pickup_healthmedium 25 set g_pickup_healthmedium_max 100 set g_pickup_healthmedium_anyway 0 - set g_pickup_healthlarge 50 set g_pickup_healthlarge_max 150 set g_pickup_healthlarge_anyway 0 - set g_pickup_healthmega 100 set g_pickup_healthmega_max 999 set g_pickup_healthmega_anyway 0 - set g_pickup_respawntime_short 15 set g_pickup_respawntime_medium 20 set g_pickup_respawntime_long 30 set g_pickup_respawntime_powerup 120 set g_pickup_respawntime_weapon 20 set g_pickup_respawntime_ammo 15 - set g_pickup_respawntimejitter_short 0 set g_pickup_respawntimejitter_medium 0 set g_pickup_respawntimejitter_long 0 @@ -241,6 +226,7 @@ set g_balance_laser_primary_delay 0 set g_balance_laser_primary_gauntlet 0 set g_balance_laser_primary_force_zscale 1.2 set g_balance_laser_primary_force_velocitybias 0 +set g_balance_laser_primary_force_other_scale 1 set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists set g_balance_laser_secondary_damage 35 set g_balance_laser_secondary_edgedamage 10 @@ -256,6 +242,7 @@ set g_balance_laser_secondary_delay 0 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 // }}} // {{{ shotgun set g_balance_shotgun_primary_bullets 10 @@ -277,7 +264,6 @@ set g_balance_shotgun_secondary_force 150 set g_balance_shotgun_secondary_refire 1.1 set g_balance_shotgun_secondary_animtime 1 // }}} - // {{{ uzi set g_balance_uzi_mode 1 // Activates varible spread for sustained & burst mode secondary set g_balance_uzi_spread_min 0.02 @@ -285,6 +271,7 @@ set g_balance_uzi_spread_max 0.6 set g_balance_uzi_spread_add 0.008 set g_balance_uzi_burst 3 // # of bullets in a burst (if set to 2 or more) +set g_balance_uzi_burst_animtime 0.4 set g_balance_uzi_burst_refire 0.05 // refire between burst bullets set g_balance_uzi_burst_refire2 0.4 // refire after burst set g_balance_uzi_burst_spread 0.03 @@ -348,7 +335,7 @@ set g_balance_grenadelauncher_secondary_remote_detonateprimary 0 set g_balance_grenadelauncher_bouncefactor 0.5 set g_balance_grenadelauncher_bouncestop 0.075 // }}} -// {{{ minelayer // TODO +// {{{ minelayer set g_balance_minelayer_damage 35 set g_balance_minelayer_edgedamage 30 set g_balance_minelayer_force 250 @@ -356,6 +343,7 @@ set g_balance_minelayer_radius 175 set g_balance_minelayer_proximityradius 150 set g_balance_minelayer_speed 750 set g_balance_minelayer_lifetime 60 +set g_balance_minelayer_lifetime_countdown 0 set g_balance_minelayer_refire 1.5 set g_balance_minelayer_animtime 0.4 set g_balance_minelayer_ammo 5 @@ -388,7 +376,6 @@ set g_balance_electro_primary_range 0 set g_balance_electro_primary_falloff_mindist 255 // 0.3 * radius set g_balance_electro_primary_falloff_maxdist 850 set g_balance_electro_primary_falloff_halflifedist 425 - set g_balance_electro_secondary_damage 25 set g_balance_electro_secondary_edgedamage 0 set g_balance_electro_secondary_force 50 @@ -407,7 +394,6 @@ set g_balance_electro_secondary_damageforcescale 2 set g_balance_electro_secondary_count 3 set g_balance_electro_secondary_bouncefactor 0.5 set g_balance_electro_secondary_bouncestop 0.075 - set g_balance_electro_combo_damage 80 set g_balance_electro_combo_edgedamage 10 set g_balance_electro_combo_force 150 @@ -428,6 +414,7 @@ set g_balance_crylink_primary_refire 1 set g_balance_crylink_primary_animtime 0.4 set g_balance_crylink_primary_ammo 2 set g_balance_crylink_primary_bouncedamagefactor 0.2 +set g_balance_crylink_primary_joindelay 0 set g_balance_crylink_primary_joinspread 0.1 set g_balance_crylink_primary_jointime 0 set g_balance_crylink_primary_joinexplode 1 //if != 0 do a extra damage pass when projectiles join @@ -436,6 +423,7 @@ set g_balance_crylink_primary_joinexplode_edgedamage 20 set g_balance_crylink_primary_joinexplode_radius 200 set g_balance_crylink_primary_joinexplode_force 400 set g_balance_crylink_primary_linkexplode 0 + set g_balance_crylink_primary_middle_lifetime 5 set g_balance_crylink_primary_middle_fadetime 0.25 set g_balance_crylink_primary_other_lifetime 2 // range: 800 full, fades to 1300 @@ -454,6 +442,7 @@ set g_balance_crylink_secondary_refire 0.15 set g_balance_crylink_secondary_animtime 0.15 set g_balance_crylink_secondary_ammo 1 set g_balance_crylink_secondary_bouncedamagefactor 0.5 +set g_balance_crylink_secondary_joindelay 0 set g_balance_crylink_secondary_joinspread 0 set g_balance_crylink_secondary_jointime 0 set g_balance_crylink_secondary_joinexplode 0 @@ -500,6 +489,7 @@ set g_balance_nex_charge 1 set g_balance_nex_charge_mindmg 10 set g_balance_nex_charge_start 0 set g_balance_nex_charge_rate 0.35 +set g_balance_nex_charge_animlimit 0.5 set g_balance_nex_charge_limit 0.5 set g_balance_nex_charge_rot_rate 0.1 set g_balance_nex_charge_rot_pause 1 // Dont rot down untill this long after release of charge button @@ -535,7 +525,7 @@ set g_balance_hagar_secondary_lifetime_rand 0 set g_balance_hagar_secondary_refire 0.15 set g_balance_hagar_secondary_ammo 1 // }}} -// {{{ rocketlauncher // TODO +// {{{ rocketlauncher set g_balance_rocketlauncher_damage 120 set g_balance_rocketlauncher_edgedamage 25 set g_balance_rocketlauncher_force 350 @@ -615,43 +605,45 @@ set g_balance_hlac_secondary_force 100 set g_balance_hlac_secondary_radius 50 set g_balance_hlac_secondary_speed 15000 set g_balance_hlac_secondary_lifetime 3 + 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 // }}} -// {{{ campingrifle -set g_balance_campingrifle_magazinecapacity 8 // make it pretty much useless in close combat -set g_balance_campingrifle_reloadtime 2 // matches reload anim -set g_balance_campingrifle_auto_reload_on_switch 0 -set g_balance_campingrifle_bursttime 0 -set g_balance_campingrifle_primary_tracer 1 -set g_balance_campingrifle_primary_damage 40 -set g_balance_campingrifle_primary_headshotaddeddamage 100 -set g_balance_campingrifle_primary_spread 0 -set g_balance_campingrifle_primary_force 2 -set g_balance_campingrifle_primary_speed 40000 -set g_balance_campingrifle_primary_lifetime 5 -set g_balance_campingrifle_primary_refire 0.65 -set g_balance_campingrifle_primary_animtime 0.6 -set g_balance_campingrifle_primary_ammo 10 -set g_balance_campingrifle_primary_bulletconstant 110 // 62.2qu -set g_balance_campingrifle_primary_burstcost 0 -set g_balance_campingrifle_primary_bullethail 0 // empty magazine on shot -set g_balance_campingrifle_secondary 1 -set g_balance_campingrifle_secondary_tracer 0 -set g_balance_campingrifle_secondary_damage 50 -set g_balance_campingrifle_secondary_headshotaddeddamage 50 // 50 damage only on head -set g_balance_campingrifle_secondary_spread 0 -set g_balance_campingrifle_secondary_force 2 -set g_balance_campingrifle_secondary_speed 20000 -set g_balance_campingrifle_secondary_lifetime 5 -set g_balance_campingrifle_secondary_refire 1.5 -set g_balance_campingrifle_secondary_animtime 0.6 -set g_balance_campingrifle_secondary_ammo 10 -set g_balance_campingrifle_secondary_bulletconstant 110 // 15.5qu -set g_balance_campingrifle_secondary_burstcost 0 -set g_balance_campingrifle_secondary_bullethail 0 // empty magazine on shot +// {{{ 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 +set g_balance_sniperrifle_primary_headshotaddeddamage 100 +set g_balance_sniperrifle_primary_spread 0 +set g_balance_sniperrifle_primary_force 2 +set g_balance_sniperrifle_primary_speed 40000 +set g_balance_sniperrifle_primary_lifetime 5 +set g_balance_sniperrifle_primary_refire 0.65 +set g_balance_sniperrifle_primary_animtime 0.6 +set g_balance_sniperrifle_primary_ammo 10 +set g_balance_sniperrifle_primary_bulletconstant 110 // 62.2qu +set g_balance_sniperrifle_primary_burstcost 0 +set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot +set g_balance_sniperrifle_secondary 1 +set g_balance_sniperrifle_secondary_reload 0 +set g_balance_sniperrifle_secondary_tracer 0 +set g_balance_sniperrifle_secondary_damage 50 +set g_balance_sniperrifle_secondary_headshotaddeddamage 50 // 50 damage only on head +set g_balance_sniperrifle_secondary_spread 0 +set g_balance_sniperrifle_secondary_force 2 +set g_balance_sniperrifle_secondary_speed 20000 +set g_balance_sniperrifle_secondary_lifetime 5 +set g_balance_sniperrifle_secondary_refire 1.5 +set g_balance_sniperrifle_secondary_animtime 0.6 +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 // }}} // {{{ tuba set g_balance_tuba_refire 0.05 @@ -716,7 +708,6 @@ set g_balance_seeker_flac_speed 5000 set g_balance_seeker_flac_speed_up 500 set g_balance_seeker_flac_speed_z 0 set g_balance_seeker_flac_spread 0.25 - set g_balance_seeker_missile_accel 1400 set g_balance_seeker_missile_ammo 2 set g_balance_seeker_missile_animtime 0.3 @@ -744,7 +735,6 @@ set g_balance_seeker_missile_speed_z 0 set g_balance_seeker_missile_speed_max 1400 set g_balance_seeker_missile_spread 0 set g_balance_seeker_missile_turnrate 0.65 - set g_balance_seeker_tag_ammo 1 set g_balance_seeker_tag_animtime 0.3 set g_balance_seeker_tag_damageforcescale 4 diff --git a/check-translations.sh b/check-translations.sh new file mode 100755 index 000000000..6cfd13dbb --- /dev/null +++ b/check-translations.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +for VM in menu csprogs; do + case "$VM" in + csprogs) + VMD=client + ;; + *) + VMD=$VM + ;; + esac + { + find qcsrc/"$VMD" -type f -not -name \*.po -not -name \*.txt + find qcsrc/common -type f -not -name \*.po -not -name \*.txt + find qcsrc/server -type f -name w_\*.qc + } | xgettext -LC -k_ -f- --from-code utf-8 -o "$VM".dat.pot >&2 + for X in "$VM".dat.*.po; do + [ -f "$X" ] || continue + msgmerge -F -U "$X" "$VM".dat.pot >&2 + todo=$( + msgattrib --untranslated "$X" | grep -A 2147483647 "^#:" + msgattrib --fuzzy "$X" | grep -A 2147483647 "^#:" + ) + if [ -n "$todo" ]; then + echo "TODO for translation $X:" + echo "$todo" + echo + fi + done +done diff --git a/csprogs.dat.de.po.disabled b/csprogs.dat.de.po.disabled new file mode 100644 index 000000000..495744cf9 --- /dev/null +++ b/csprogs.dat.de.po.disabled @@ -0,0 +1,1446 @@ +# Xonotic CSQC +# Copyright (C) 2011 Team Xonotic +# This file is distributed under the same license as the Xonotic package. +# Rudolf Polzer , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: 0.1preview\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-01-20 20:17+0100\n" +"PO-Revision-Date: 2011-01-20 20:16+0100\n" +"Last-Translator: Rudolf Polzer \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/client/Main.qc:30 +msgid "ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!" +msgstr "FEHLER - MENÜ IST SICHTBAR ABER KEIN MENÜ WURDE DEFINIERT!" + +#: qcsrc/client/Main.qc:56 +msgid "" +"^3Your engine build is outdated\n" +"^3This Server uses a newer QC VM. Please update!\n" +msgstr "" +"^3Diese Engine ist veraltet.\n" +"^3Dieser Server verwendet eine neuere QC VM. Bitte updaten!\n" + +#: qcsrc/client/Main.qc:66 +#, c-format +msgid "^4CSQC Build information: %s\n" +msgstr "^4CSQC Build-Information: %s (deutsch)\n" + +#: qcsrc/client/Main.qc:227 qcsrc/client/Main.qc:243 +#, c-format +msgid "trying to switch to unsupported team %d\n" +msgstr "es wurde versucht, in das nicht unterstützte Team %d zu wechseln" + +#: qcsrc/client/Main.qc:359 qcsrc/client/scoreboard.qc:240 +msgid "Usage:\n" +msgstr "Syntax:\n" + +#: qcsrc/client/Main.qc:360 +msgid "hud_save configname (saves to hud_skinname_configname.cfg)\n" +msgstr "hud_save configname (speichert als hud_skinname_configname.cfg)\n" + +#: qcsrc/client/Main.qc:507 +msgid "Usage: cl_cmd COMMAND..., where possible commands are:\n" +msgstr "Syntax: cl_cmd BEFEHL..., wobei mögliche Befehle sind:\n" + +#: qcsrc/client/Main.qc:508 +msgid " settemp cvar value\n" +msgstr " settemp Cvar Wert\n" + +#: qcsrc/client/Main.qc:509 +msgid " scoreboard_columns_set ...\n" +msgstr " scoreboard_columns_set ...\n" + +#: qcsrc/client/Main.qc:510 +msgid " scoreboard_columns_help\n" +msgstr " scoreboard_columns_help\n" + +#: qcsrc/client/Main.qc:715 +msgid "A CSQC entity changed its owner!\n" +msgstr "Ein CSQC-Entity hat seinen Besitzer gewechselt!\n" + +#: qcsrc/client/Main.qc:929 +msgid "A CSQC entity changed its type!\n" +msgstr "Ein CSQC-Entity hat seinen Typ gewechselt!\n" + +#: qcsrc/client/Main.qc:966 +#, c-format +msgid "unknown entity type in CSQC_Ent_Update: %d\n" +msgstr "unbekannter Entity-Typ in CSQC_Ent_Update: %d\n" + +#: qcsrc/client/Main.qc:1438 +#, c-format +msgid "%s (not bound)" +msgstr "%s (nicht zugewiesen)" + +#: qcsrc/client/Main.qc:1443 qcsrc/client/hud.qc:398 +#, c-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#: qcsrc/client/ctf.qc:35 +msgid "----- Order Menu -----" +msgstr "----- Auftragsmenü -----" + +#: qcsrc/client/ctf.qc:36 +#, c-format +msgid "Order: %s" +msgstr "Auftrag: %s" + +#: qcsrc/client/ctf.qc:37 +msgid "1) ^3previous page" +msgstr "1) ^3vorherige Seite" + +#: qcsrc/client/ctf.qc:38 +msgid "2) ^3next page" +msgstr "2) ^3nächste Seite" + +#: qcsrc/client/ctf.qc:55 qcsrc/client/ctf.qc:161 +msgid "ESC) Exit Menu" +msgstr "ESC) Menü verlassen" + +#: qcsrc/client/ctf.qc:126 +#, c-format +msgid "Couldn't find player %d\n" +msgstr "Kann Spieler %d nicht finden\n" + +#: qcsrc/client/ctf.qc:154 +msgid "----- Command Menu -----" +msgstr "---- Befehlsmenü -----" + +#: qcsrc/client/ctf.qc:155 +msgid "Issue orders:" +msgstr "Auftrag geben:" + +#: qcsrc/client/ctf.qc:156 +#, fuzzy +msgid " 1) Attack" +msgstr " 1) Angreifen" + +#: qcsrc/client/ctf.qc:158 +msgid " 2) Defend" +msgstr " 2) Verteidigen" + +#: qcsrc/client/ctf.qc:160 +msgid "3) Resign from command." +msgstr "3) Befehlsgewalt abgeben." + +#: qcsrc/client/ctf.qc:212 +msgid "You're commander!" +msgstr "Sie sind Befehlshaber!" + +#: qcsrc/client/ctf.qc:215 +msgid "Awaiting orders..." +msgstr "Warten auf Auftrag..." + +#: qcsrc/client/hud.qc:328 +msgid "1st" +msgstr "1." + +#: qcsrc/client/hud.qc:330 +msgid "2nd" +msgstr "2." + +#: qcsrc/client/hud.qc:332 +msgid "3rd" +msgstr "3." + +#: qcsrc/client/hud.qc:334 +#, c-format +msgid "%dth" +msgstr "%d." + +#: qcsrc/client/hud.qc:366 +#, c-format +msgid " (-%dL)" +msgstr " (-%dR)" + +#: qcsrc/client/hud.qc:371 +#, c-format +msgid " (+%dL)" +msgstr " (+%dR)" + +#: qcsrc/client/hud.qc:387 +msgid "Start line" +msgstr "Start" + +#: qcsrc/client/hud.qc:389 qcsrc/client/hud.qc:393 +msgid "Finish line" +msgstr "Ziel" + +#: qcsrc/client/hud.qc:391 +#, c-format +msgid "Intermediate %d" +msgstr "Zwischenzeit %d" + +#: qcsrc/client/hud.qc:400 +#, c-format +msgid "%s (%s %s)" +msgstr "%s (%s %s)" + +#: qcsrc/client/hud.qc:542 +#, c-format +msgid "^2Successfully exported to %s! (Note: It's saved in data/data/)\n" +msgstr "^2Erfolgreich als %s exportiert! (Hinweis: die Datei wurde in data/data/ abgelegt)\n" + +#: qcsrc/client/hud.qc:546 +msgid "^1Couldn't write to %s\n" +msgstr "^1Konnte nicht nach %s schreiben\n" + +#: qcsrc/client/hud.qc:1830 +msgid "Don't have" +msgstr "nicht vorhanden" + +#: qcsrc/client/hud.qc:1834 +msgid "Unavailable" +msgstr "nicht verfügbar" + +#: qcsrc/client/hud.qc:2685 +#, c-format +msgid "^1%s^1 couldn't take it anymore\n" +msgstr "^1%s^1 konnte es nicht mehr ertragen\n" + +#: qcsrc/client/hud.qc:2689 qcsrc/client/hud.qc:2981 +#, c-format +msgid "^1%s^1 died\n" +msgstr "^1%s^1 ist gestorben\n" + +#: qcsrc/client/hud.qc:2693 +#, c-format +msgid "^7%s^7 committed suicide. What's the point of living without ammo?\n" +msgstr "^7%s^7 hat sich erhängt. Was ist schon ein Leben ohne Munition?\n" + +#: qcsrc/client/hud.qc:2697 +#, c-format +msgid "^1%s^1 thought they found a nice camping ground\n" +msgstr "^1%s^1 dachte, einen tollen Campingplatz gefunden zu haben\n" + +#: qcsrc/client/hud.qc:2701 +#, c-format +msgid "^1%s^1 didn't become friends with the Lord of Teamplay\n" +msgstr "^1%s^1 bekam Probleme mit dem Lord of Teamplay\n" + +#: qcsrc/client/hud.qc:2705 +#, c-format +msgid "^1%s^1 unfairly eliminated themself\n" +msgstr "^1%s^1 hat sich selbst auf unfaire Weise erledigt\n" + +#: qcsrc/client/hud.qc:2709 +#, c-format +msgid "^1%s^1 burned to death\n" +msgstr "^1%s^1 brannte zu Tode\n" + +#: qcsrc/client/hud.qc:2713 +#, c-format +msgid "^1%s^1 couldn't resist the urge to self-destruct\n" +msgstr "^1%s^1 konnte dem Drang zur Selbstzerstörung einfach nicht widerstehen\n" + +#: qcsrc/client/hud.qc:2717 +#, c-format +msgid "^1%s^1 ended it all after a %d kill spree\n" +msgstr "^1%s^1 machte seinem %d-Amoklauf ein Ende\n" + +#: qcsrc/client/hud.qc:2734 +#, c-format +msgid "^1%s^1 took action against a team mate\n" +msgstr "^1%s^1 ergriff Maßnahmen gegen einen Mitspieler\n" + +#: qcsrc/client/hud.qc:2736 +#, c-format +msgid "^1%s^1 mows down a team mate\n" +msgstr "^1%s^1 mähte einen Mitspieler nieder\n" + +#: qcsrc/client/hud.qc:2741 +#, c-format +msgid "^1%s^1 ended a %d scoring spree by going against a team mate\n" +msgstr "^1%s^1 dachte, %d Punkte hintereinander reichen, und trug dies an einem Mitspieler aus\n" + +#: qcsrc/client/hud.qc:2743 +#, c-format +msgid "^1%s^1 ended a %d kill spree by killing a team mate\n" +msgstr "^1%s^1 beendete seinen %d-Amoklauf, indem er einen Mitspieler tötete\n" + +#: qcsrc/client/hud.qc:2747 +#, c-format +msgid "^1%s^1's %s scoring spree was ended by a team mate!\n" +msgstr "^1%s^1s %s Punkte hintereinander wurden von einem Mitspieler gestört!\n" + +#: qcsrc/client/hud.qc:2749 +#, c-format +msgid "^1%s^1's %s kill spree was ended by a team mate!\n" +msgstr "^1%s^1s %s-Amoklauf wurde von einem Mitspieler beendet!\n" + +#: qcsrc/client/hud.qc:2757 +#, c-format +msgid "^1%s^1 tried to occupy %s^1's teleport destination space\n" +msgstr "^1%s^1 dachte, %s^1 am Teleportieren hindern zu können\n" + +#: qcsrc/client/hud.qc:2759 +#, c-format +msgid "^1%s^1 was telefragged by %s\n" +msgstr "^1%s^1 wurde von %s^1 telefragged\n" + +#: qcsrc/client/hud.qc:2764 +#, c-format +msgid "^1%s^1 was drowned by %s\n" +msgstr "^1%s^1 wurde von %s^1 etränkt\n" + +#: qcsrc/client/hud.qc:2769 +#, c-format +msgid "^1%s^1 was slimed by %s\n" +msgstr "^1%s^1 wurde von %s^1 im Schleim versenkt\n" + +#: qcsrc/client/hud.qc:2774 +#, c-format +msgid "^1%s^1 was cooked by %s\n" +msgstr "^1%s^1 wurde von %s^1 gebraten\n" + +#: qcsrc/client/hud.qc:2779 +#, c-format +msgid "^1%s^1 was grounded by %s\n" +msgstr "^1%a^1 wurde von %s^1 geerdet\n" + +#: qcsrc/client/hud.qc:2784 +#, c-format +msgid "^1%s^1 was shot into space by %s\n" +msgstr "^1%s^1 wurde von %s^1 ins All geschossen\n" + +#: qcsrc/client/hud.qc:2789 +#, c-format +msgid "^1%s^1 was conserved by %s\n" +msgstr "^1%s^1 wurde von %s^1 konserviert\n" + +#: qcsrc/client/hud.qc:2795 +#, c-format +msgid "^1%s^1 was thrown into a world of hurt by %s\n" +msgstr "^1%s^1 wurde von %s^1 in eine Welt des Schmerzes geworfen\n" + +#: qcsrc/client/hud.qc:2799 +#, c-format +msgid "^1%s^1 was crushed by ^1%s\n" +msgstr "^1%s^1 wurde von %s^1 zerquetscht\n" + +#: qcsrc/client/hud.qc:2803 +#, c-format +msgid "^1%s^1 got shredded by ^1%s\n" +msgstr "" + +#: qcsrc/client/hud.qc:2807 +#, c-format +msgid "^1%s^1 was blased to bits by ^1%s\n" +msgstr "" + +#: qcsrc/client/hud.qc:2811 +#, c-format +msgid "^1%s^1 got caught in the destruction of ^1%s's vehicle\n" +msgstr "" + +#: qcsrc/client/hud.qc:2815 +#, c-format +msgid "^1%s^1 was bolted down by ^1%s\n" +msgstr "" + +#: qcsrc/client/hud.qc:2819 +#, c-format +msgid "^1%s^1 could find no shelter from ^1%s's rockets\n" +msgstr "" + +#: qcsrc/client/hud.qc:2823 +#, c-format +msgid "^1%s^1 dies when ^1%s's wakizashi dies.\n" +msgstr "" + +#: qcsrc/client/hud.qc:2827 +#, c-format +msgid "^1%s^1 was pushed into the line of fire by ^1%s\n" +msgstr "" + +#: qcsrc/client/hud.qc:2831 +#, c-format +msgid "^1%s^1 was pushed into an accident by ^1%s\n" +msgstr "" + +#: qcsrc/client/hud.qc:2835 +#, c-format +msgid "^1%s^1 was unfairly eliminated by ^1%s\n" +msgstr "" + +#: qcsrc/client/hud.qc:2839 +#, c-format +msgid "^1%s^1 was burnt to death by ^1%s\n" +msgstr "" + +#: qcsrc/client/hud.qc:2851 +#, c-format +msgid "^1%s^1 was fragged by %s\n" +msgstr "" + +#: qcsrc/client/hud.qc:2856 +#, c-format +msgid "^1%s^1's %s scoring spree was ended by %s\n" +msgstr "" + +#: qcsrc/client/hud.qc:2858 +#, c-format +msgid "^1%s^1's %s kill spree was ended by %s\n" +msgstr "" + +#: qcsrc/client/hud.qc:2861 +#, c-format +msgid "^1%s^1 made %s scores in a row\n" +msgstr "" + +#: qcsrc/client/hud.qc:2863 +#, c-format +msgid "^1%s^1 has %s frags in a row\n" +msgstr "" + +#: qcsrc/client/hud.qc:2866 +#, c-format +msgid "%s^7 made a ^1TRIPLE SCORE\n" +msgstr "" + +#: qcsrc/client/hud.qc:2868 +#, c-format +msgid "%s^7 made a ^1TRIPLE FRAG\n" +msgstr "" + +#: qcsrc/client/hud.qc:2871 +#, c-format +msgid "%s^7 unleashes ^1SCORING RAGE\n" +msgstr "" + +#: qcsrc/client/hud.qc:2873 +#, c-format +msgid "%s^7 unleashes ^1RAGE\n" +msgstr "" + +#: qcsrc/client/hud.qc:2876 +#, c-format +msgid "%s^7 made ^1TEN SCORES IN A ROW!\n" +msgstr "" + +#: qcsrc/client/hud.qc:2878 +#, c-format +msgid "%s^7 starts the ^1MASSACRE!\n" +msgstr "" + +#: qcsrc/client/hud.qc:2881 +#, c-format +msgid "%s^7 made ^1FIFTEEN SCORES IN A ROW!\n" +msgstr "" + +#: qcsrc/client/hud.qc:2883 +#, c-format +msgid "%s^7 executes ^1MAYHEM!\n" +msgstr "" + +#: qcsrc/client/hud.qc:2886 +#, c-format +msgid "%s^7 made ^1TWENTY SCORES IN A ROW!\n" +msgstr "" + +#: qcsrc/client/hud.qc:2888 +#, c-format +msgid "%s^7 is a ^1BERSERKER!\n" +msgstr "" + +#: qcsrc/client/hud.qc:2891 +#, c-format +msgid "%s^7 made ^1TWENTY FIFE SCORES IN A ROW!\n" +msgstr "" + +#: qcsrc/client/hud.qc:2893 +#, c-format +msgid "%s^7 inflicts ^1CARNAGE!\n" +msgstr "" + +#: qcsrc/client/hud.qc:2896 +#, c-format +msgid "%s^7 made ^1THIRTY SCORES IN A ROW!\n" +msgstr "" + +#: qcsrc/client/hud.qc:2898 +#, c-format +msgid "%s^7 unleashes ^1ARMAGEDDON!\n" +msgstr "" + +#: qcsrc/client/hud.qc:2906 +#, c-format +msgid "^1%s^1 was in the water for too long\n" +msgstr "" + +#: qcsrc/client/hud.qc:2908 +#, c-format +msgid "^1%s^1 drowned\n" +msgstr "" + +#: qcsrc/client/hud.qc:2919 +#, c-format +msgid "^1%s^1 found a hot place\n" +msgstr "" + +#: qcsrc/client/hud.qc:2921 +#, c-format +msgid "^1%s^1 turned into hot slag\n" +msgstr "" + +#: qcsrc/client/hud.qc:2928 +#, c-format +msgid "^1%s^1 tested gravity (and it worked)\n" +msgstr "" + +#: qcsrc/client/hud.qc:2930 +#, c-format +msgid "^1%s^1 hit the ground with a crunch\n" +msgstr "" + +#: qcsrc/client/hud.qc:2935 +#, c-format +msgid "^1%s^1 became a shooting star\n" +msgstr "" + +#: qcsrc/client/hud.qc:2941 +#, c-format +msgid "^1%s^1 discovered a swamp\n" +msgstr "" + +#: qcsrc/client/hud.qc:2943 +#, c-format +msgid "^1%s^1 is now conserved for centuries to come\n" +msgstr "" + +#: qcsrc/client/hud.qc:2948 +#, c-format +msgid "^1%s^1 was mowed down by a turret \n" +msgstr "" + +#: qcsrc/client/hud.qc:2960 +#, c-format +msgid "^1%s^1 died in an accident\n" +msgstr "" + +#: qcsrc/client/hud.qc:2964 +#, c-format +msgid "^1%s^1 was unfairly eliminated\n" +msgstr "" + +#: qcsrc/client/hud.qc:2970 +#, c-format +msgid "^1%s^1 felt a little hot\n" +msgstr "" + +#: qcsrc/client/hud.qc:2972 +#, c-format +msgid "^1%s^1 burnt to death\n" +msgstr "" + +#: qcsrc/client/hud.qc:2979 +#, c-format +msgid "^1%s^1 needs a restart\n" +msgstr "" + +#: qcsrc/client/hud.qc:2986 +#, c-format +msgid "^1%s^1 needs a restart after a %d scoring spree\n" +msgstr "" + +#: qcsrc/client/hud.qc:2988 +#, c-format +msgid "^1%s^1 died with a %d kill spree\n" +msgstr "" + +#: qcsrc/client/hud.qc:2992 +#, c-format +msgid "%s^7 got the %s\n" +msgstr "" + +#: qcsrc/client/hud.qc:2995 +#, c-format +msgid "%s^7 lost the %s\n" +msgstr "" + +#: qcsrc/client/hud.qc:2998 +#, c-format +msgid "%s^7 picked up the %s\n" +msgstr "" + +#: qcsrc/client/hud.qc:3001 +#, c-format +msgid "%s^7 returned the %s\n" +msgstr "" + +#: qcsrc/client/hud.qc:3004 +msgid "%1^7 captured the %s%s\n" +msgstr "" + +#: qcsrc/client/hud.qc:3023 +#, c-format +msgid "%s^7 has picked up the ball!\n" +msgstr "" + +#: qcsrc/client/hud.qc:3028 +#, c-format +msgid "%s^7 has dropped the ball!\n" +msgstr "" + +#: qcsrc/client/hud.qc:3041 +#, c-format +msgid "You are now on: %s" +msgstr "" + +#: qcsrc/client/hud.qc:3043 +#, c-format +msgid "" +"You have been moved into a different team to improve team balance\n" +"You are now on: %s" +msgstr "" + +#: qcsrc/client/hud.qc:3046 +msgid "^1Reconsider your tactics, camper!" +msgstr "" + +#: qcsrc/client/hud.qc:3048 +msgid "^1Die camper!" +msgstr "" + +#: qcsrc/client/hud.qc:3051 +msgid "^1You are reinserted into the game for running out of ammo..." +msgstr "" + +#: qcsrc/client/hud.qc:3053 +msgid "^1You were killed for running out of ammo..." +msgstr "" + +#: qcsrc/client/hud.qc:3056 +msgid "^1You need to preserve your health" +msgstr "" + +#: qcsrc/client/hud.qc:3058 +msgid "^1You grew too old without taking your medicine" +msgstr "" + +#: qcsrc/client/hud.qc:3061 +msgid "^1Don't go against team mates!" +msgstr "" + +#: qcsrc/client/hud.qc:3063 +msgid "^1Don't shoot your team mates!" +msgstr "" + +#: qcsrc/client/hud.qc:3068 +msgid "^1You need to be more careful!" +msgstr "" + +#: qcsrc/client/hud.qc:3070 +msgid "^1You killed your own dumb self!" +msgstr "" + +#: qcsrc/client/hud.qc:3075 +#, c-format +msgid "^1Moron! You went against %s, a team mate!" +msgstr "" + +#: qcsrc/client/hud.qc:3077 +#, c-format +msgid "^1Moron! You fragged %s, a team mate!" +msgstr "" + +#: qcsrc/client/hud.qc:3081 +msgid "^1First score" +msgstr "" + +#: qcsrc/client/hud.qc:3083 +msgid "^1First blood" +msgstr "" + +#: qcsrc/client/hud.qc:3087 +msgid "^1First casualty" +msgstr "" + +#: qcsrc/client/hud.qc:3089 +msgid "^1First victim" +msgstr "" + +#: qcsrc/client/hud.qc:3093 +#, c-format +msgid "^1You scored against ^7%s^1 who was typing!" +msgstr "" + +#: qcsrc/client/hud.qc:3095 +#, c-format +msgid "^1You typefragged ^7%s" +msgstr "" + +#: qcsrc/client/hud.qc:3099 +#, c-format +msgid "^1You were scored against by ^7%s^1 while you were typing!" +msgstr "" + +#: qcsrc/client/hud.qc:3101 +#, c-format +msgid "^1You were typefragged by ^7%s" +msgstr "" + +#: qcsrc/client/hud.qc:3105 +#, c-format +msgid "^4You scored against ^7%s" +msgstr "" + +#: qcsrc/client/hud.qc:3107 +#, c-format +msgid "^4You fragged ^7%s" +msgstr "" + +#: qcsrc/client/hud.qc:3111 +#, c-format +msgid "^1You were scored against by ^7%s" +msgstr "" + +#: qcsrc/client/hud.qc:3113 +#, c-format +msgid "^1You were fragged by ^7%s" +msgstr "" + +#: qcsrc/client/hud.qc:3118 +msgid "^1Watch your step!" +msgstr "" + +#: qcsrc/client/hud.qc:3182 qcsrc/client/hud.qc:3183 +#, c-format +msgid "Player %d" +msgstr "" + +#: qcsrc/client/hud.qc:3779 +msgid "^1Intermediate 1 (+15.42)" +msgstr "" + +#: qcsrc/client/hud.qc:3781 qcsrc/client/hud.qc:3823 qcsrc/client/hud.qc:3864 +#, c-format +msgid "^1PENALTY: %.1f (%s)" +msgstr "" + +#: qcsrc/client/hud.qc:3866 +#, c-format +msgid "^2PENALTY: %.1f (%s)" +msgstr "" + +#: qcsrc/client/hud.qc:3891 +msgid "^2Name ^7instead of \"^1Unregistered player\" ^7in stats" +msgstr "" + +#: qcsrc/client/hud.qc:3973 +msgid "A vote has been called for:" +msgstr "" + +#: qcsrc/client/hud.qc:3975 +msgid "Allow servers to store and display your name?" +msgstr "" + +#: qcsrc/client/hud.qc:3979 +msgid "^1Configure the HUD" +msgstr "" + +#: qcsrc/client/hud.qc:3983 +#, c-format +msgid "Yes (%s): %d" +msgstr "" + +#: qcsrc/client/hud.qc:3985 +#, c-format +msgid "No (%s): %d" +msgstr "" + +#: qcsrc/client/hud.qc:4498 qcsrc/client/hud.qc:4501 qcsrc/client/hud.qc:4503 +msgid "Personal best" +msgstr "" + +#: qcsrc/client/hud.qc:4516 qcsrc/client/hud.qc:4519 qcsrc/client/hud.qc:4521 +msgid "Server best" +msgstr "" + +#: qcsrc/client/hud.qc:4753 +msgid "^3Player^7: This is the chat area." +msgstr "" + +#: qcsrc/client/hud.qc:4816 +#, c-format +msgid "FPS: %.*f" +msgstr "" + +#: qcsrc/client/hud.qc:4881 +msgid "^1Observing" +msgstr "" + +#: qcsrc/client/hud.qc:4883 +#, c-format +msgid "^1Spectating: ^7%s" +msgstr "" + +#: qcsrc/client/hud.qc:4887 +#, c-format +msgid "^1Press ^3%s^1 to spectate" +msgstr "" + +#: qcsrc/client/hud.qc:4889 +#, c-format +msgid "^1Press ^3%s^1 for another player" +msgstr "" + +#: qcsrc/client/hud.qc:4893 +#, c-format +msgid "^1Use ^3%s^1 or ^3%s^1 to change the speed" +msgstr "" + +#: qcsrc/client/hud.qc:4895 +#, c-format +msgid "^1Press ^3%s^1 to observe" +msgstr "" + +#: qcsrc/client/hud.qc:4898 +#, c-format +msgid "^1Press ^3%s^1 for gamemode info" +msgstr "" + +#: qcsrc/client/hud.qc:4902 +msgid "^1Wait for your turn to join" +msgstr "" + +#: qcsrc/client/hud.qc:4908 +msgid "^1Match has already begun" +msgstr "" + +#: qcsrc/client/hud.qc:4910 +msgid "^1You have no more lives left" +msgstr "" + +#: qcsrc/client/hud.qc:4912 qcsrc/client/hud.qc:4915 +#, c-format +msgid "^1Press ^3%s^1 to join" +msgstr "" + +#: qcsrc/client/hud.qc:4923 +#, c-format +msgid "^1Game starts in ^3%d^1 seconds" +msgstr "" + +#: qcsrc/client/hud.qc:4930 +msgid "^2Currently in ^1warmup^2 stage!" +msgstr "" + +#: qcsrc/client/hud.qc:4945 +#, c-format +msgid "%sPress ^3%s%s to end warmup" +msgstr "" + +#: qcsrc/client/hud.qc:4947 +#, c-format +msgid "%sPress ^3%s%s once you are ready" +msgstr "" + +#: qcsrc/client/hud.qc:4952 +msgid "^2Waiting for others to ready up to end warmup..." +msgstr "" + +#: qcsrc/client/hud.qc:4954 +msgid "^2Waiting for others to ready up..." +msgstr "" + +#: qcsrc/client/hud.qc:4981 +msgid "Teamnumbers are unbalanced!" +msgstr "" + +#: qcsrc/client/hud.qc:4994 +msgid "^7Press ^3ESC ^7to show HUD options." +msgstr "" + +#: qcsrc/client/hud.qc:4996 +msgid "^3Doubleclick ^7a panel for panel-specific options." +msgstr "" + +#: qcsrc/client/hud.qc:4998 +msgid "^3CTRL ^7to disable collision testing, ^3SHIFT ^7and" +msgstr "" + +#: qcsrc/client/hud.qc:5000 +msgid "^3ALT ^7+ ^3ARROW KEYS ^7for fine adjustments." +msgstr "" + +#: qcsrc/client/hud.qc:5025 +msgid " qu/s" +msgstr "" + +#: qcsrc/client/hud.qc:5029 +msgid " m/s" +msgstr "" + +#: qcsrc/client/hud.qc:5033 +msgid " km/h" +msgstr "" + +#: qcsrc/client/hud.qc:5037 +msgid " mph" +msgstr "" + +#: qcsrc/client/hud.qc:5041 +msgid " knots" +msgstr "" + +#: qcsrc/client/mapvoting.qc:28 +msgid " (1 vote)" +msgstr "" + +#: qcsrc/client/mapvoting.qc:30 +#, c-format +msgid " (%d votes)" +msgstr "" + +#: qcsrc/client/mapvoting.qc:113 +msgid "Don't care" +msgstr "" + +#: qcsrc/client/mapvoting.qc:194 +msgid "Vote for a map" +msgstr "" + +#: qcsrc/client/mapvoting.qc:199 +#, c-format +msgid "%d seconds left" +msgstr "" + +#: qcsrc/client/mapvoting.qc:263 +msgid "" +"mv_mapdownload: ^3You're not supposed to use this command on your own!\n" +msgstr "" + +#: qcsrc/client/mapvoting.qc:273 +msgid "^1Error:^7 Couldn't find pak index.\n" +msgstr "" + +#: qcsrc/client/mapvoting.qc:282 +msgid "Requesting preview...\n" +msgstr "" + +#: qcsrc/client/miscfunctions.qc:23 +msgid "^1Begin!" +msgstr "" + +#: qcsrc/client/miscfunctions.qc:34 +#, c-format +msgid "^1Game starts in %d seconds" +msgstr "" + +#: qcsrc/client/miscfunctions.qc:113 +msgid "^1RED^7 flag" +msgstr "" + +#: qcsrc/client/miscfunctions.qc:118 +msgid "^4BLUE^7 flag" +msgstr "" + +#: qcsrc/client/miscfunctions.qc:126 +#, c-format +msgid "You picked up the %s!" +msgstr "" + +#: qcsrc/client/miscfunctions.qc:130 +#, c-format +msgid "You got the %s!" +msgstr "" + +#: qcsrc/client/miscfunctions.qc:283 +msgid "Trying to remove a team which is not in the teamlist!" +msgstr "" + +#: qcsrc/client/scoreboard.qc:19 +msgid "SCO^bckills" +msgstr "BC getötet" + +#: qcsrc/client/scoreboard.qc:20 +msgid "SCO^caps" +msgstr "Caps" + +#: qcsrc/client/scoreboard.qc:21 +msgid "SCO^deaths" +msgstr "Deaths" + +#: qcsrc/client/scoreboard.qc:22 +msgid "SCO^destroyed" +msgstr "zerstört" + +#: qcsrc/client/scoreboard.qc:23 +msgid "SCO^drops" +msgstr "verloren" + +#: qcsrc/client/scoreboard.qc:24 +msgid "SCO^faults" +msgstr "Fehler" + +#: qcsrc/client/scoreboard.qc:25 +msgid "SCO^fckills" +msgstr "FC getötet" + +#: qcsrc/client/scoreboard.qc:26 +msgid "SCO^goals" +msgstr "Tore" + +#: qcsrc/client/scoreboard.qc:27 +msgid "SCO^kckills" +msgstr "KC getötet" + +#: qcsrc/client/scoreboard.qc:28 +msgid "SCO^kdratio" +msgstr "kdratio" + +#: qcsrc/client/scoreboard.qc:29 +msgid "SCO^k/d" +msgstr "k/d" + +#: qcsrc/client/scoreboard.qc:30 +msgid "SCO^kd" +msgstr "kd" + +#: qcsrc/client/scoreboard.qc:31 +msgid "SCO^kdr" +msgstr "kdr" + +#: qcsrc/client/scoreboard.qc:32 +msgid "SCO^kills" +msgstr "Kills" + +#: qcsrc/client/scoreboard.qc:33 +msgid "SCO^laps" +msgstr "Runden" + +#: qcsrc/client/scoreboard.qc:34 +msgid "SCO^lives" +msgstr "Leben" + +#: qcsrc/client/scoreboard.qc:35 +msgid "SCO^losses" +msgstr "verloren" + +#: qcsrc/client/scoreboard.qc:36 +msgid "SCO^name" +msgstr "Name" + +#: qcsrc/client/scoreboard.qc:37 +msgid "SCO^nick" +msgstr "Nick" + +#: qcsrc/client/scoreboard.qc:38 +msgid "SCO^objectives" +msgstr "Objectives" + +#: qcsrc/client/scoreboard.qc:39 +msgid "SCO^pickups" +msgstr "Flaggen" + +#: qcsrc/client/scoreboard.qc:40 +msgid "SCO^ping" +msgstr "Ping" + +#: qcsrc/client/scoreboard.qc:41 +msgid "SCO^pl" +msgstr "PL" + +#: qcsrc/client/scoreboard.qc:42 +msgid "SCO^pushes" +msgstr "Pushes" + +#: qcsrc/client/scoreboard.qc:43 +msgid "SCO^rank" +msgstr "Rang" + +#: qcsrc/client/scoreboard.qc:44 +msgid "SCO^returns" +msgstr "Returns" + +#: qcsrc/client/scoreboard.qc:45 +msgid "SCO^revivals" +msgstr "wiederbelebt" + +#: qcsrc/client/scoreboard.qc:46 +msgid "SCO^score" +msgstr "Punkte" + +#: qcsrc/client/scoreboard.qc:47 +msgid "SCO^suicides" +msgstr "Suiz." + +#: qcsrc/client/scoreboard.qc:48 +msgid "SCO^takes" +msgstr "Übernahmen" + +#: qcsrc/client/scoreboard.qc:49 +msgid "SCO^ticks" +msgstr "Ticks" + +#: qcsrc/client/scoreboard.qc:238 +msgid "" +"You can modify the scoreboard using the ^2scoreboard_columns_set command.\n" +msgstr "" +"Sie können die Tabelle mit dem ^2scoreboard_columns_set Befehl ändern.\n" + +#: qcsrc/client/scoreboard.qc:239 +msgid "^3|---------------------------------------------------------------|\n" +msgstr "^3|---------------------------------------------------------------|\n" + +#: qcsrc/client/scoreboard.qc:241 +msgid "^2scoreboard_columns_set default\n" +msgstr "^2scoreboard_columns_set default\n" + +#: qcsrc/client/scoreboard.qc:242 +msgid "^2scoreboard_columns_set ^7filed1 field2 ...\n" +msgstr "^2scoreboard_columns_set ^7filed1 field2 ...\n" + +#: qcsrc/client/scoreboard.qc:243 +msgid "The following field names are recognized (case insensitive):\n" +msgstr "Die folgenden Feldnamen werden akzeptiert:\n" + +#: qcsrc/client/scoreboard.qc:244 +msgid "" +"You can use a ^3|^7 to start the right-aligned fields.\n" +"\n" +msgstr "Mit ^3|^7 werden die rechtsbündigen Felder gestartet.\n" + +#: qcsrc/client/scoreboard.qc:246 +msgid "^3name^7 or ^3nick^7 Name of a player\n" +msgstr "^3name^7 or ^3nick^7 Name des Spielers\n" + +#: qcsrc/client/scoreboard.qc:247 +msgid "^3ping^7 Ping time\n" +msgstr "^3ping^7 Ping\n" + +#: qcsrc/client/scoreboard.qc:248 +msgid "^3pl^7 Packet loss\n" +msgstr "^3pl^7 Paketverlust\n" + +#: qcsrc/client/scoreboard.qc:249 +msgid "^3kills^7 Number of kills\n" +msgstr "^3kills^7 Anzahl Kills\n" + +#: qcsrc/client/scoreboard.qc:250 +msgid "^3deaths^7 Number of deaths\n" +msgstr "^3deaths^7 Anzahl der Tode\n" + +#: qcsrc/client/scoreboard.qc:251 +msgid "^3suicides^7 Number of suicides\n" +msgstr "^3suicides^7 Anzahl der Suizide\n" + +#: qcsrc/client/scoreboard.qc:252 +msgid "^3frags^7 kills - suicides\n" +msgstr "^3frags^7 Kills minus Suizide\n" + +#: qcsrc/client/scoreboard.qc:253 +msgid "^3kd^7 The kill-death ratio\n" +msgstr "^3kd^7 Das Kill/Death-Ratio\n" + +#: qcsrc/client/scoreboard.qc:254 +msgid "" +"^3caps^7 How often a flag (CTF) or a key (KeyHunt) was " +"captured\n" +msgstr "" +"^3caps^7 Wie oft mit der Flagge (CTF) oder den " +"Schlüssels (KeyHunt) gepunktet wurde\n" + +#: qcsrc/client/scoreboard.qc:255 +msgid "" +"^3pickups^7 How often a flag (CTF) or a key (KeyHunt) was " +"picked up\n" +msgstr "" +"^3pickups^7 Wie oft die Flagge/Schlüssel aufgenommen " +"wurden\n" + +#: qcsrc/client/scoreboard.qc:256 +msgid "^3fckills^7 Number of flag carrier kills\n" +msgstr "^3fckills^7 Wieviele Flaggenträger getötet wurden\n" + +#: qcsrc/client/scoreboard.qc:257 +msgid "^3returns^7 Number of flag returns\n" +msgstr "^3returns^7 Wie oft die Flagge zurückgebracht wurde\n" + +#: qcsrc/client/scoreboard.qc:258 +msgid "^3drops^7 Number of flag drops\n" +msgstr "^3drops^7 Wie oft die Flagge verloren wurde\n" + +#: qcsrc/client/scoreboard.qc:259 +msgid "^3lives^7 Number of lives (LMS)\n" +msgstr "^3lives^7 Anzahl Leben (LMS)\n" + +#: qcsrc/client/scoreboard.qc:260 +msgid "^3rank^7 Player rank\n" +msgstr "^3rank^7 Rang des Spielers\n" + +#: qcsrc/client/scoreboard.qc:261 +msgid "^3pushes^7 Number of players pushed into void\n" +msgstr "^3pushes^7 Anzahl in die Tiefe geworfener Gegner\n" + +#: qcsrc/client/scoreboard.qc:262 +msgid "" +"^3destroyed^7 Number of keys destroyed by pushing them into " +"void\n" +msgstr "" +"^3destroyed^7 Wie oft ein Gegner mit Schlüssel in die Tiefe " +"geworfen wurde\n" + +#: qcsrc/client/scoreboard.qc:263 +msgid "^3kckills^7 Number of keys carrier kills\n" +msgstr "^3kckills^7 Wie oft Key-Carrier getötet wurden\n" + +#: qcsrc/client/scoreboard.qc:264 +msgid "^3losses^7 Number of times a key was lost\n" +msgstr "^3losses^7 Anzahl verlorener Schlüssel\n" + +#: qcsrc/client/scoreboard.qc:265 +msgid "^3laps^7 Number of laps finished (race/cts)\n" +msgstr "^3laps^7 Anzahl vollendeter Runden (race/cts)\n" + +#: qcsrc/client/scoreboard.qc:266 +msgid "^3time^7 Total time raced (race/cts)\n" +msgstr "^3time^7 Gesamtzeit des Rennens (race/cts)\n" + +#: qcsrc/client/scoreboard.qc:267 +msgid "^3fastest^7 Time of fastest lap (race/cts)\n" +msgstr "^3fastest^7 Zeit der schnellsten Runde (race/cts)\n" + +#: qcsrc/client/scoreboard.qc:268 +msgid "^3ticks^7 Number of ticks (DOM)\n" +msgstr "^3ticks^7 Anzahl der Ticks (DOM)\n" + +#: qcsrc/client/scoreboard.qc:269 +msgid "^3takes^7 Number of domination points taken (DOM)\n" +msgstr "^3takes^7 Anzahl eingenommener Dom-Points (DOM)\n" + +#: qcsrc/client/scoreboard.qc:270 +msgid "" +"^3score^7 Total score\n" +"\n" +msgstr "" +"^3score^7 Gesamtpunktzahl\n" +"\n" + +#: qcsrc/client/scoreboard.qc:272 +msgid "" +"Before a field you can put a + or - sign, then a comma separated list\n" +"of game types, then a slash, to make the field show up only in these\n" +"or in all but these game types. You can also specify 'all' as a\n" +"field to show all fields available for the current game mode.\n" +"\n" +msgstr "" +"Vor ein Feld können Sie ein Plus- oder Minuszeichen setzen, anschließend\n" +"eine durch Kommata getrennte Liste von Spieltypen, dann einen Slash, so " +"dass\n" +"das Feld nur in diesen, oder in allen außer diesen Spieltypen erscheint.\n" +"Außerdem kann \"all\" als Feldname verwendet werden; in diesem Fall " +"erscheinen\n" +"sämtliche möglichen Felder im aktuellen Spieltyp.\n" +"\n" + +#: qcsrc/client/scoreboard.qc:277 +msgid "" +"The special game type names 'teams' and 'noteams' can be used to\n" +"include/exclude ALL teams/noteams game modes.\n" +"\n" +msgstr "" +"Die speziellen Bezeichner 'teams' und 'noteams' können verwendet werden\n" +"als Gruppierung aller Teamplay- oder Nicht-Teamplay-Spieltypen.\n" +"\n" + +#: qcsrc/client/scoreboard.qc:280 +msgid "Example: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4\n" +msgstr "Beispiel: scoreboard_columns_set name ping pl < +ctf/feld3 dm/feld4\n" + +#: qcsrc/client/scoreboard.qc:281 +msgid "" +"will display name, ping and pl aligned to the left, and the fields\n" +"right of the vertical bar aligned to the right.\n" +msgstr "" +"wird Name, Ping und Paketverlust linksbündig, und die Felder rechts\n" +"von der Trennlinie (und rechtsbündig) anzeigen.\n" + +#: qcsrc/client/scoreboard.qc:283 +msgid "" +"'field3' will only be shown in CTF, and 'field4' will be shown in all\n" +"other gamemodes except DM.\n" +msgstr "" +"'feld3' wird nur in CTF sichtbar sein, und 'feld4' wird in allen Spieltypen\n" +"außer DM erscheinen.\n" + +#: qcsrc/client/scoreboard.qc:429 qcsrc/client/scoreboard.qc:444 +#: qcsrc/client/scoreboard.qc:454 qcsrc/client/scoreboard.qc:463 +#: qcsrc/client/scoreboard.qc:472 +#, c-format +msgid "fixed missing field '%s'\n" +msgstr "Fehlendes Feld '%s' wurde ergänzt.\n" + +#: qcsrc/client/scoreboard.qc:512 qcsrc/client/scoreboard.qc:519 +msgid "N/A" +msgstr "-" + +#: qcsrc/client/scoreboard.qc:948 +#, c-format +msgid "Accuracy stats (average %d%%)" +msgstr "Genauigkeit (Durchschn.: %d%%)" + +#: qcsrc/client/scoreboard.qc:1013 +#, c-format +msgid "%d%%" +msgstr "%d%%" + +#: qcsrc/client/scoreboard.qc:1073 +msgid "Rankings" +msgstr "Platzierungen" + +#: qcsrc/client/scoreboard.qc:1164 qcsrc/client/scoreboard.qc:1166 +msgid "Scoreboard" +msgstr "Tabelle" + +#: qcsrc/client/scoreboard.qc:1207 +#, c-format +msgid "Speed award: %d ^7(%s^7)" +msgstr "Höchstgeschwindigkeit: %d ^7(%s^7)" + +#: qcsrc/client/scoreboard.qc:1211 +#, c-format +msgid "All-time fastest: %d ^7(%s^7)" +msgstr "Rekord: %d ^7(%s^7)" + +#: qcsrc/client/scoreboard.qc:1238 qcsrc/client/teamplay.qc:55 +msgid "Spectators" +msgstr "Zuschauer" + +#: qcsrc/client/scoreboard.qc:1245 +#, c-format +msgid "playing on ^2%s^7" +msgstr "es wird auf ^2%s^7 gespielt" + +#: qcsrc/client/scoreboard.qc:1252 qcsrc/client/scoreboard.qc:1257 +#, c-format +msgid " for up to ^1%.1g minutes^7" +msgstr " für bis zu ^1%.1g Minuten^7" + +#: qcsrc/client/scoreboard.qc:1261 qcsrc/client/scoreboard.qc:1280 +msgid " or" +msgstr " oder" + +#: qcsrc/client/scoreboard.qc:1264 qcsrc/client/scoreboard.qc:1271 +#, c-format +msgid " until ^3%s %s^7" +msgstr " bis ^3%s %s^7" + +#: qcsrc/client/scoreboard.qc:1265 qcsrc/client/scoreboard.qc:1272 +#: qcsrc/client/scoreboard.qc:1284 qcsrc/client/scoreboard.qc:1291 +msgid "SCO^points" +msgstr "Punkte" + +#: qcsrc/client/scoreboard.qc:1266 qcsrc/client/scoreboard.qc:1273 +#: qcsrc/client/scoreboard.qc:1285 qcsrc/client/scoreboard.qc:1292 +msgid "SCO^is beaten" +msgstr "geschlagen wird" + +#: qcsrc/client/scoreboard.qc:1283 qcsrc/client/scoreboard.qc:1290 +#, c-format +msgid " until a lead of ^3%s %s^7" +msgstr " bis zu einem Vorsprung von ^3%s %s^7" + +#: qcsrc/client/target_music.qc:93 qcsrc/client/target_music.qc:181 +#, c-format +msgid "Cannot initialize sound %s\n" +msgstr "" + +#: qcsrc/client/teamplay.qc:56 +msgid "Red Team" +msgstr "" + +#: qcsrc/client/teamplay.qc:57 +msgid "Blue Team" +msgstr "" + +#: qcsrc/client/teamplay.qc:58 +msgid "Yellow Team" +msgstr "" + +#: qcsrc/client/teamplay.qc:59 +msgid "Pink Team" +msgstr "" + +#: qcsrc/server/w_crylink.qc:2 +msgid "Crylink" +msgstr "Crylink" + +#: qcsrc/server/w_electro.qc:2 +msgid "Electro" +msgstr "Electro" + +#: qcsrc/server/w_fireball.qc:2 +msgid "Fireball" +msgstr "Fireball" + +#: qcsrc/server/w_grenadelauncher.qc:2 +msgid "Mortar" +msgstr "Mortar" + +#: qcsrc/server/w_hagar.qc:2 +msgid "Hagar" +msgstr "Hagar" + +#: qcsrc/server/w_hlac.qc:2 +msgid "Heavy Laser Assault Cannon" +msgstr "Heavy Laser Assault Cannon" + +#: qcsrc/server/w_hook.qc:2 +msgid "Grappling Hook" +msgstr "Grappling Hook" + +#: qcsrc/server/w_laser.qc:2 +msgid "Laser" +msgstr "Laser" + +#: qcsrc/server/w_minelayer.qc:2 +msgid "Mine Layer" +msgstr "Mine Layer" + +#: qcsrc/server/w_minstanex.qc:2 +msgid "MinstaNex" +msgstr "MinstaNex" + +#: qcsrc/server/w_nex.qc:2 +msgid "Nex" +msgstr "Nex" + +#: qcsrc/server/w_porto.qc:2 +msgid "Port-O-Launch" +msgstr "Port-O-Launch" + +#: qcsrc/server/w_rocketlauncher.qc:2 +msgid "Rocket Launcher" +msgstr "Rocket Launcher" + +#: qcsrc/server/w_seeker.qc:2 +msgid "T.A.G. Seeker" +msgstr "T.A.G. Seeker" + +#: qcsrc/server/w_shotgun.qc:2 +msgid "Shotgun" +msgstr "Shotgun" + +#: qcsrc/server/w_sniperrifle.qc:2 +msgid "Sniper Rifle" +msgstr "Sniper Rifle" + +#: qcsrc/server/w_tuba.qc:2 +#, c-format +msgid "@!#%'n Tuba" +msgstr "@!#%'n Tuba" + +#: qcsrc/server/w_uzi.qc:2 +msgid "Machine Gun" +msgstr "Machine Gun" diff --git a/defaultSamual.cfg b/defaultSamual.cfg index c0dce41e1..4aacf09f1 100644 --- a/defaultSamual.cfg +++ b/defaultSamual.cfg @@ -15,7 +15,7 @@ set g_weaponreplace_porto "" set g_weaponreplace_minstanex "" set g_weaponreplace_hook "" set g_weaponreplace_hlac 0 // Maybe will be enabled later after I figure out what I want to do with it -set g_weaponreplace_campingrifle "" +set g_weaponreplace_sniperrifle "" set g_weaponreplace_tuba "" set g_weaponreplace_fireball 0 // Same with this set g_weaponreplace_seeker 0 // Same with this diff --git a/defaultXPM.cfg b/defaultXPM.cfg index 35d5da985..b8a5ce7a1 100644 --- a/defaultXPM.cfg +++ b/defaultXPM.cfg @@ -7,6 +7,7 @@ exec defaultXonotic.cfg // players sv_fbskin_green // visible playermodel forced on everyone +set teamplay_mode 2 // friendly fire and self damage //================ // impure changes @@ -25,8 +26,6 @@ set g_shootfromcenter 1 // hit where you point at with the crosshair (almost so, // match rules set timelimit_overtimes 1 // overtimes on, draw matches are less interesting! :) set g_forced_respawn 1 // no delaying/cheating a match by not spawning -set g_mirrordamage 0 // hurting teammates does not hurt you... -set g_friendlyfire 1 // ...it hurts them. // info set sv_fragmessage_information_stats 0 // don't reveal how much health/armor the attacker had diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 18ce4a988..95adfb723 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -9,6 +9,7 @@ // // e.g. Xonotic 1.5.1 RC1 will be 15101 set g_xonoticversion git "Xonotic version (formatted for humans)" + gameversion 100 // 0.1.0 gameversion_min 0 // git builds see all versions gameversion_max 65535 // git builds see all versions @@ -102,6 +103,9 @@ seta crosshair_dot_size 0.600000 seta crosshair_dot_color "1 0 0" "when != 0, use custom color for the crosshair dot" seta crosshair_pickup 0.25 seta crosshair_pickup_speed 4 +seta crosshair_hitindication 0.5 +seta crosshair_hitindication_color "10 -10 -10" +seta crosshair_hitindication_speed 5 seta crosshair_per_weapon 0 "when 1, each gun will display a different crosshair" seta crosshair_color_per_weapon 1 "when 1, each gun will display the crosshair with a different color" seta crosshair_effect_speed -1 "how fast (in seconds) some crosshair effects should take place, 0 = instant, -1 = 2x weapon switch time" @@ -169,10 +173,10 @@ seta crosshair_seeker "" "crosshair to display when wielding the TAG Seeker" seta crosshair_seeker_color "1 0.35 0.35" "crosshair color to display when wielding the TAG seeker" seta crosshair_seeker_alpha 0.9 "crosshair alpha value to display when wielding the TAG seeker" seta crosshair_seeker_size 0.8 "crosshair size when wielding the TAG seeker" -seta crosshair_campingrifle "" "crosshair to display when wielding the campingrifle" -seta crosshair_campingrifle_color "0.85 0.5 0.25" "crosshair color to display when wielding the campingrifle" -seta crosshair_campingrifle_alpha 1 "crosshair alpha value to display when wielding the campingrifle" -seta crosshair_campingrifle_size 0.65 "crosshair size when wielding the campingrifle" +seta crosshair_sniperrifle "" "crosshair to display when wielding the sniperrifle" +seta crosshair_sniperrifle_color "0.85 0.5 0.25" "crosshair color to display when wielding the sniperrifle" +seta crosshair_sniperrifle_alpha 1 "crosshair alpha value to display when wielding the sniperrifle" +seta crosshair_sniperrifle_size 0.65 "crosshair size when wielding the sniperrifle" seta crosshair_tuba "" "crosshair to display when wielding the tuba" seta crosshair_tuba_color "0.85 0.5 0.25" "crosshair color to display when wielding the tuba" seta crosshair_tuba_alpha 1 "crosshair alpha value to display when wielding the tuba" @@ -181,14 +185,19 @@ seta crosshair_fireball "" "crosshair to display when wielding the fireball" seta crosshair_fireball_color "0.2 1.0 0.2" "crosshair color to display when wielding the fireball" seta crosshair_fireball_alpha 1 "crosshair alpha value to display when wielding the fireball" seta crosshair_fireball_size 1 "crosshair size when wielding the fireball" +seta crosshair_color_by_health 0 "if enabled, crosshair color will depend on current health" // ring around crosshair, used for various purposes (such as indicating bullets left in clip, nex charge) +seta crosshair_ring 1 "main cvar to enable or disable crosshair rings" +seta crosshair_ring_inner 0 "allow inner rings to be drawn too" seta crosshair_ring_size 2 "bullet counter ring size for Rifle, velocity ring for Nex" seta crosshair_ring_alpha 0.2 "ring alpha" -seta crosshair_ring_campingrifle_alpha 0.15 +seta crosshair_ring_sniperrifle 1 "draw a ring showing the ammount of ammo left in the sniperrifle +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 @@ -196,9 +205,12 @@ 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 cl_reticle_stretch 0 "whether to stretch reticles so they fit the screen (brakes image proportions)" -seta cl_reticle_item_nex 1 "draw aiming recticle for the nex weapon's zoom, 0 disables and values between 0 and 1 change alpha" -seta cl_reticle_item_normal 1 "draw recticle when zooming with the zoom button, 0 disables and values between 0 and 1 change alpha" +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" fov 90 seta cl_velocityzoom 0 "velocity based zooming of fov, negative values zoom out" seta cl_velocityzoomtime 0.3 "time value for averaging speed values" @@ -287,7 +299,7 @@ seta cl_autotaunt 0 "automatically taunt enemies when fragging them" seta sv_taunt 1 "allow taunts on the server" seta sv_autotaunt 1 "allow autotaunts on the server" seta cl_voice_directional 1 "0 = all voices are non-directional, 1 = all voices are directional, 2 = only taunts are directional" -seta cl_voice_directional_taunt_attenuation 0.5 "this defines the distance from which taunts can be heared" +seta cl_voice_directional_taunt_attenuation 0.5 "this defines the distance from which taunts can be heard" // server settings hostname "Xonotic $g_xonoticversion Server" @@ -299,7 +311,8 @@ set sv_ready_restart 0 "if set to 1 allow a map to be restarted once all players set sv_ready_restart_after_countdown 0 "if set to 1 the players and map items are reset after the countdown ended, otherwise they're reset already at the beginning of the countdown" set sv_ready_restart_repeatable 0 "allows the players to restart the game as often as needed" -set sv_hitsound_antispam_time 0.05 "don't play the hitsound more often than this for the electro lightning gun or the laser gauntlet" +seta cl_hitsound 1 "play a hit notifier sound when you have hit an enemy" +set cl_hitsound_antispam_time 0.05 "don't play the hitsound more often than this" //nifreks lockonrestart feature, used in team-based game modes, if set to 1 and all players readied up no other player can then join the game anymore, useful to block spectators from joining set teamplay_lockonrestart 0 "it set to 1 in a team-based game, the teams are locked once all players readied up and the game restarted (no new players can join after restart unless using the server-command unlockteams)" @@ -401,37 +414,37 @@ seta bot_suffix "" "Suffix behind the bot names" seta skill_auto 0 "when 1, \"skill\" gets adjusted to match the best player on the map" // general bot AI cvars set bot_ai_thinkinterval 0.05 -set bot_ai_strategyinterval 3 "How often a new objective is chosen" -set bot_ai_enemydetectioninterval 0.5 "How often bots pick a new target" +set bot_ai_strategyinterval 5 "How often a new objective is chosen" +set bot_ai_enemydetectioninterval 3 "How often bots pick a new target" set bot_ai_enemydetectionradius 10000 "How far bots can see enemies" -set bot_ai_dodgeupdateinterval 0.1 "How often scan for items to dodge. Currently not in use." -set bot_ai_chooseweaponinterval 0.3 "How often the best weapon according to the situation will be chosen" -set bot_ai_dangerdetectioninterval 0.1 "How often scan for waypoints with dangers near" +set bot_ai_dodgeupdateinterval 0.2 "How often scan for items to dodge. Currently not in use." +set bot_ai_chooseweaponinterval 0.5 "How often the best weapon according to the situation will be chosen" +set bot_ai_dangerdetectioninterval 0.25 "How often scan for waypoints with dangers near" set bot_ai_dangerdetectionupdates 64 "How many waypoints will be considered for danger detection" set bot_ai_aimskill_blendrate 2 "How much correction will be applied to the aiming angle" set bot_ai_aimskill_fixedrate 15 -set bot_ai_aimskill_firetolerance_distdegrees 180 +set bot_ai_aimskill_firetolerance_distdegrees 100 set bot_ai_aimskill_firetolerance_mindegrees 2 "Minimum angle tolerance. Used on large distances" set bot_ai_aimskill_firetolerance_maxdegrees 60 "Maximum firing angle. Used on close range" set bot_ai_aimskill_mouse 1 "How much of the aiming filters are applied" set bot_ai_keyboard_distance 250 "Keyboard emulation is disabled after this distance to the goal" -set bot_ai_keyboard_treshold 0.57 +set bot_ai_keyboard_threshold 0.57 set bot_ai_aimskill_offset 0.3 "Amount of error induced to the bots aim" set bot_ai_aimskill_think 1 "Aiming velocity. Use values below 1 for slower aiming" set bot_ai_custom_weapon_priority_distances "300 850" "Define close and far distances in any order. Based on the distance to the enemy bots will choose different weapons" -set bot_ai_custom_weapon_priority_far "minstanex nex campingrifle electro rocketlauncher grenadelauncher hagar hlac crylink laser uzi fireball seeker shotgun tuba minelayer" "Desired weapons for far distances ordered by priority" -set bot_ai_custom_weapon_priority_mid "minstanex rocketlauncher nex fireball seeker grenadelauncher electro uzi campingrifle crylink hlac hagar shotgun laser tuba minelayer" "Desired weapons for middle distances ordered by priority" -set bot_ai_custom_weapon_priority_close "minstanex shotgun nex uzi hlac tuba seeker hagar crylink grenadelauncher electro campingrifle rocketlauncher laser fireball minelayer" "Desired weapons for close distances ordered by priority" +set bot_ai_custom_weapon_priority_far "minstanex nex sniperrifle electro rocketlauncher grenadelauncher hagar hlac crylink laser uzi fireball seeker shotgun tuba minelayer" "Desired weapons for far distances ordered by priority" +set bot_ai_custom_weapon_priority_mid "minstanex rocketlauncher nex fireball seeker grenadelauncher electro uzi sniperrifle crylink hlac hagar shotgun laser tuba minelayer" "Desired weapons for middle distances ordered by priority" +set bot_ai_custom_weapon_priority_close "minstanex shotgun nex uzi hlac tuba seeker hagar crylink grenadelauncher electro sniperrifle rocketlauncher laser fireball minelayer" "Desired weapons for close distances ordered by priority" set bot_ai_weapon_combo 1 "Enable bots to do weapon combos" -set bot_ai_weapon_combo_threshold 0.3 "Try to make a combo N seconds after the last attack" +set bot_ai_weapon_combo_threshold 0.4 "Try to make a combo N seconds after the last attack" set bot_ai_friends_aware_pickup_radius "500" "Bots will not pickup items if a team mate is this distance near the item" set bot_ai_ignoregoal_timeout 3 "Ignore goals making bots to get stuck in front of a wall for N seconds" set bot_ai_bunnyhop_skilloffset 7 "Bots with skill equal or greater than this value will perform the \"bunnyhop\" technique" -set bot_ai_bunnyhop_startdistance 250 "Run to goals located further than this distance" -set bot_ai_bunnyhop_stopdistance 220 "Stop jumping after reaching this distance to the goal" -set bot_ai_bunnyhop_firstjumpdelay 0.5 "Start running to the goal only if it was seen for more than N seconds" +set bot_ai_bunnyhop_startdistance 100 "Run to goals located further than this distance" +set bot_ai_bunnyhop_stopdistance 125 "Stop jumping after reaching this distance to the goal" +set bot_ai_bunnyhop_firstjumpdelay 0.2 "Start running to the goal only if it was seen for more than N seconds" set bot_god 0 "god mode for bots" -set bot_ai_navigation_jetpack 0 "Enable bots to navigat maps using the jetpack" +set bot_ai_navigation_jetpack 0 "Enable bots to navigate maps using the jetpack" set bot_ai_navigation_jetpack_mindistance 3500 "Bots will try fly to objects located farther than this distance" // Better don't touch these, there are hard to tweak! set bot_ai_aimskill_order_mix_1st 0.01 "Amount of the 1st filter output to apply to the aiming angle" @@ -459,8 +472,9 @@ alias g_waypointeditor_unreachable "impulse 107" locs_enable 0 pausable 0 -seta g_spawnshieldtime 0.300000 "number of seconds you are invincible after you spawned, this shield is lost after you fire" +seta g_spawnshieldtime 1.000000 "number of seconds you are invincible after you spawned, this shield is lost after you fire" seta g_antilag 2 "AntiLag (0 = no AntiLag, 1 = verified client side hit scan, 2 = server side hit scan in the past, 3 = unverified client side hit scan)" +set g_trueaim_minrange 44 "TrueAim minimum range (TrueAim adjusts shots so they hit the crosshair point even though the gun is not at the screen center)" set g_antilag_nudge 0 "don't touch" set g_antilag_bullets 1 "Bullets AntiLag (0 = no AntiLag, 1 = server side hit scan in the past) - DO NOT TOUCH (severely changes weapon balance)" set g_shootfromclient 1 "let client decide if it has the gun left or right; if set to 2, center handedness is allowed, and defaulted to, too; see also cl_gunalign" @@ -565,7 +579,8 @@ set g_freezetag 0 "Freeze Tag: Freeze the opposing team(s) to win, unfreeze team seta g_freezetag_warmup 5 "Time players get to run around before the round starts" seta g_freezetag_point_limit -1 "Freeze Tag point limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)" seta g_freezetag_point_leadlimit -1 "Freeze Tag point lead limit overriding the mapinfo specified one (use 0 to play without limit, and -1 to use the mapinfo's limit)" -seta g_freezetag_revive_time 2.5 "Time it takes to revive a frozen teammate" +seta g_freezetag_revive_speed 0.4 "Speed for reviving a frozen teammate" +seta g_freezetag_revive_clearspeed 1.6 "Speed at which reviving progress gets lost when out of range" seta g_freezetag_revive_extra_size 100 "Distance in qu that you can stand from a frozen teammate to keep reviving him" seta g_freezetag_frozen_force 0.6 "How much to multiply the force on a frozen player with" @@ -638,10 +653,13 @@ seta timelimit_suddendeath 5 "number of minutes suddendeath mode lasts after all set g_tdm 0 "Team Deathmatch: the team who kills their opponents most often wins" seta teamplay_mode 4 "default teamplay setting in team games. 1 = no friendly fire, self damage. 2 = friendly fire and self damage enabled. 3 = no friendly fire, but self damage enabled. 4 = obey the following four cvars" -seta g_mirrordamage 0.300000 "for teamplay 4: mirror damage factor" -seta g_friendlyfire 0.100000 "for teamplay 4: fiendly fire factor" -seta g_teamdamage_threshold 50 "for teamplay 4: threshold over which to apply mirror damage" -seta g_teamdamage_resetspeed 30 "for teamplay 4: how fast player's teamdamage count decreases" +seta g_mirrordamage 0.700000 "for teamplay 4: mirror damage factor" +seta g_mirrordamage_virtual 1 "for teamplay 4: do not actually apply mirror damage, just show graphics effect for it" +seta g_friendlyfire 0.500000 "for teamplay 4: fiendly fire factor" +seta g_friendlyfire_virtual 1 "for teamplay 4: do not actually apply friendly fire, just show graphics effect for it" +seta g_friendlyfire_virtual_force 1 "for teamplay 4: apply force even though damage was made virtual only" +seta g_teamdamage_threshold 40 "for teamplay 4: threshold over which to apply mirror damage" +seta g_teamdamage_resetspeed 20 "for teamplay 4: how fast player's teamdamage count decreases" set deathmatch_force_teamplay 0 "Always play TDM instead of DM" seta g_balance_teams 0 "automatically balance out players entering instead of asking them for their preferred team" @@ -920,7 +938,6 @@ sv_sound_watersplash "" seta cl_sound_maptime_warning "1" "play announcer sound telling you the remaining maptime - 0: do not play at all, 1: play at one minute, 2: play at five minutes, 3: play both" seta cl_notify_carried_items "3" "notify you of carried items when you obtain them (e.g. flags in CTF) - 0: disabled, 1: notify of taken items, 2: notify of picking up dropped items, 3: notify of both" -seta cl_hitsound 1 "play a hit notifier sound when you have hit an enemy" seta cl_announcer default "name of the announcer you wish to use from data/sound/announcer" // startmap_dm is used when running with the -listen or -dedicated commandline options @@ -936,8 +953,6 @@ alias +fire2 +button3 alias -fire2 -button3 alias +attack2 +button3 // old alias from Nexuiz alias -attack2 -button3 // old alias name from Nexuiz -alias +zoom +button4 -alias -zoom -button4 alias +crouch +button5 alias -crouch -button5 alias weapnext "_weapnext_${cl_weaponpriority_useforcycling}" @@ -951,6 +966,12 @@ alias _weapprev_1 "impulse 16" alias _weapprev_2 "impulse 12" alias weapbest "impulse 13" +// experimental zoom toggle (can be in wrong state at start of a game, though) +set _togglezoom + +alias +zoom "set _togglezoom -; +button4" +alias -zoom "set _togglezoom +; -button4" +alias togglezoom "${_togglezoom}zoom" + alias reload "impulse 20" // movement @@ -1267,23 +1288,25 @@ set g_keyhunt_teams 0 // keepaway set g_keepaway 0 "game mode which focuses around a ball, look at g_keepaway_win_mode for further details" -set g_keepaway_bckillscore 1 "enable scoring points (y/n) for ball carrier kills" -set g_keepaway_pointlimit -1 "total amount of points you can get, -1 for unlimited" -set g_keepaway_pointleadlimit -1 "mercy rule, -1 for unlimited" -set g_keepaway_ballcarrier_alpha 0.6 "alpha when the player is the ballcarrier" -set g_keepaway_ballcarrier_highspeed 1.5 "speed multiplier done to the person holding the ball" -set g_keepaway_ballcarrier_damage 1.5 "damage multiplier while having powerup" -set g_keepaway_ballcarrier_force 1.5 "force multiplier while having powerup" -set g_keepaway_ballcarrier_selfdamage 1 "self damage multiplier while having powerup" -set g_keepaway_ballcarrier_selfforce 1.5 "self force multiplier while having powerup" -set g_keepaway_noncarrier_warn 0 "warn players when they kill without holding the ball" -set g_keepaway_noncarrier_damage 0.5 "damage done to other players if both you and they don't have the ball" -set g_keepaway_noncarrier_force 0.5 "force done to other players if both you and they don't have the ball" +set g_keepaway_score_bckill 1 "enable scoring points (y/n) for ball carrier kills (value is how many points to award)" +set g_keepaway_score_killac 1 "amount of points to give when you kill someone while you have the ball" +set g_keepaway_score_timeinterval 1 "amount of time it takes between intervals for timepoints to be added to the score" +set g_keepaway_score_timepoints 0 "points to add to score per timeinterval, 0 for no points" +set g_keepaway_ballcarrier_effects 8 "Add together the numbers you want: EF_ADDITIVE (32) / EF_NODEPTHTEST (8192) / EF_DIMLIGHT (8)" +set g_keepaway_ballcarrier_highspeed 1 "speed multiplier done to the person holding the ball (recommended when used with some mutators)" +set g_keepaway_ballcarrier_damage 1 "damage multiplier while holding the ball" +set g_keepaway_ballcarrier_force 1 "force multiplier while holding the ball" +set g_keepaway_ballcarrier_selfdamage 1 "self damage multiplier while holding the ball" +set g_keepaway_ballcarrier_selfforce 1 "self force multiplier while holding the ball" +set g_keepaway_noncarrier_warn 1 "warn players when they kill without holding the ball" +set g_keepaway_noncarrier_damage 1 "damage done to other players if both you and they don't have the ball" +set g_keepaway_noncarrier_force 1 "force done to other players if both you and they don't have the ball" set g_keepaway_noncarrier_selfdamage 1 "self damage if you don't have the ball" set g_keepaway_noncarrier_selfforce 1 "self force if you don't have the ball" +set g_keepawayball_effects 0 "Add together the numbers you want: EF_ADDITIVE (32) / EF_NODEPTHTEST (8192) / EF_DIMLIGHT (8)" set g_keepawayball_trail_color 254 "particle trail color from player/ball" -set g_keepawayball_damageforcescale 2 "Scale of force which is applied to the ball by weapons/explosions/etc" -set g_keepawayball_respawntime 15 "if no one picks up the ball, how long to wait until the ball respawns" +set g_keepawayball_damageforcescale 3 "Scale of force which is applied to the ball by weapons/explosions/etc" +set g_keepawayball_respawntime 10 "if no one picks up the ball, how long to wait until the ball respawns" seta g_keepaway_teams_override 0 set g_keepaway_teams 0 @@ -1416,19 +1439,30 @@ seta hud_showbinds_limit 2 "maximum number of bound keys to show for a command. seta hud_colorflash_alpha 0.5 "starting alpha of the color flash" -seta hud_damage 1 "an improved version of gl_polyblend, draw an image instead when hurt" -seta hud_damage_gentle_alpha_multiplier 0.25 "how much to multiply alpha of flash when using the cl_gentle version, it's much more opaque than the non-gentle version" +seta hud_damage 0.55 "an improved version of gl_polyblend for damage, draw an image instead when hurt" +seta hud_damage_gentle_alpha_multiplier 0.10 "how much to multiply alpha of flash when using the cl_gentle version, it's much more opaque than the non-gentle version" seta hud_damage_gentle_color "1 0.7 1" "color of flash for cl_gentle version" seta hud_damage_color "1 0 0" "color of flash" seta hud_damage_factor 0.025 "(damage * factor) = how much to add to the alpha value" -seta hud_damage_fade_rate 1 "how much to subtract from the alpha value each second" -seta hud_damage_maxalpha 2 "how much to limit the alpha value to" +seta hud_damage_fade_rate 0.75 "how much to subtract from the alpha value each second" +seta hud_damage_maxalpha 1.5 "how much to limit the alpha value to" seta hud_damage_pain_threshold 0.1 "how much alpha to ignore (must be bigger than the hud_damage_factor so that e.g. rot is ignored)" seta hud_damage_pain_threshold_lower 1.25 "how much we lower pain_threshold with when nearing 0 health (if pain_threshold gets negative then we always draw a flash at alpha = fabs(pain_threshold)" seta hud_damage_pain_threshold_lower_health 50 "at which health we start lowering pain_threshold" seta hud_damage_pain_threshold_pulsating_min 0.6 "minimum value when calculating the pulse: max(pulsating_min, fabs(sin(PI * time / period))" seta hud_damage_pain_threshold_pulsating_period 0.8 "one pulse every X seconds" +seta hud_contents 1 "an improved version of gl_polyblend for liquids such as water/lava/slime, draw a filler when inside the liquid" +seta hud_contents_factor 1 "factor at which to multiply the current faded value." +seta hud_contents_fadeintime 0.02 "factor of time it takes for the alpha level to reach normal value when entering the liquid" +seta hud_contents_fadeouttime 0.1 "factor of time it takes for the alpha level to reach normal value when leaving the liquid" +seta hud_contents_lava_alpha 0.7 "alpha of the lava color blend when inside it" +seta hud_contents_lava_color "0.8 0.1 0" +seta hud_contents_slime_alpha 0.7 "alpha of the slime color blend when inside it" +seta hud_contents_slime_color "0 0.4 0.1" +seta hud_contents_water_alpha 0.5 "alpha of the water color blend when inside it" +seta hud_contents_water_color "0.4 0.3 0.3" + // scoreboard seta scoreboard_columns default seta scoreboard_border_thickness 1 "scoreboard border thickness" @@ -1477,8 +1511,8 @@ set timelimit_increment 5 set timelimit_decrement 5 set timelimit_min 5 set timelimit_max 60 -alias extendmatchtime "sv_cmd rpn /timelimit timelimit timelimit_max timelimit timelimit_increment add bound def" -alias reducematchtime "sv_cmd rpn /timelimit timelimit timelimit_decrement sub timelimit_min timelimit bound def" +alias extendmatchtime "sv_cmd extendmatchtime" +alias reducematchtime "sv_cmd reducematchtime" alias endmatch "timelimit -1" // useful keybind to maximize the chat area temporarily @@ -1585,9 +1619,6 @@ set capturelimit 0 seta hud_fontsize 11 seta scr_centersize 12 seta hud_width 560 -// alias hud_font "loadfont user1 ${1},gfx/fallback ${2-}; loadfont user2 ${1}-big ${2-}; scoreboard_columns_set" -alias sbar_font "set _requested_sbar_font \"${*}\"" -sbar_font gfx/vera-sans 8 12 16 24 32 // these entities are not referenced by anything directly, they just represent // teams and are found by find() when needed @@ -1599,12 +1630,12 @@ set g_jump_grunt 0 "Do you make a grunting noise every time you jump? Is it the alias allready "sv_cmd allready" -seta cl_weaponpriority "minstanex rocketlauncher nex minelayer grenadelauncher fireball hlac hagar seeker crylink campingrifle uzi electro tuba shotgun laser hook porto" "weapon priority list" +seta cl_weaponpriority "minstanex rocketlauncher nex minelayer grenadelauncher fireball hlac hagar seeker crylink sniperrifle uzi electro tuba shotgun laser hook porto" "weapon priority list" seta cl_weaponpriority_useforcycling 0 "when set, weapon cycling by the mouse wheel makes use of the weapon priority list (the special value 2 uses the weapon ID list for cycling)" seta cl_weaponpriority0 "rocketlauncher grenadelauncher hagar seeker fireball" "use impulse 200 for prev gun from this list, 210 for best gun, 220 for next gun. Default value: explosives" seta cl_weaponpriority1 "minstanex nex crylink hlac electro laser" "use impulse 201 for prev gun from this list, 211 for best gun, 221 for next gun. Default value: energy" -seta cl_weaponpriority2 "minstanex nex campingrifle" "use impulse 202 for prev gun from this list, 212 for best gun, 222 for next gun. Default value: hitscan exact" -seta cl_weaponpriority3 "minstanex nex campingrifle uzi shotgun" "use impulse 203 for prev gun from this list, 213 for best gun, 223 for next gun. Default value: hitscan all" +seta cl_weaponpriority2 "minstanex nex sniperrifle" "use impulse 202 for prev gun from this list, 212 for best gun, 222 for next gun. Default value: hitscan exact" +seta cl_weaponpriority3 "minstanex nex sniperrifle uzi shotgun" "use impulse 203 for prev gun from this list, 213 for best gun, 223 for next gun. Default value: hitscan all" seta cl_weaponpriority4 "minelayer grenadelauncher hlac hagar crylink seeker shotgun" "use impulse 204 for prev gun from this list, 214 for best gun, 224 for next gun. Default value: spam weapons" seta cl_weaponpriority5 "laser hook porto" "use impulse 205 for prev gun from this list, 215 for best gun, 225 for next gun. Default value: weapons for moving" seta cl_weaponpriority6 "" "use impulse 206 for prev gun from this list, 216 for best gun, 226 for next gun" @@ -1722,7 +1753,7 @@ set camera_speed_roll 0.9 "Camera rotation speed" set camera_speed_chase 4 "Camera movement speed on the x/y/z axis while chasing the player" set camera_speed_free 8 "Camera movement speed on the x/y/z axis in free mode" set camera_speed_attenuation 10 "Camera movements attenuation factor. Bigger is smoother. Applies to mouse movements" -set camera_mouse_treshold 0.5 "Use to ignore small mouse movements. This allows for smoother camera control" +set camera_mouse_threshold 0.5 "Use to ignore small mouse movements. This allows for smoother camera control" set camera_chase_smoothly 0 "Attenuate player movements (only in chase mode)" set camera_look_player 0 "Always look to the player. Mouse input is ignored in this mode" set camera_look_attenuation 8 "Attenuation of \"looking\" movements, only if camera_look_player is set. Bigger is smoother" @@ -1811,6 +1842,7 @@ alias cl_hook_gamestart_rc alias cl_hook_gamestart_nexball alias cl_hook_gamestart_cts alias cl_hook_gamestart_ka +alias cl_hook_gamestart_freezetag alias cl_hook_gameend alias cl_hook_activeweapon @@ -1832,6 +1864,7 @@ alias sv_hook_gamestart_rc alias sv_hook_gamestart_nexball alias sv_hook_gamestart_cts alias sv_hook_gamestart_ka +alias sv_hook_gamestart_freezetag alias sv_hook_gamerestart alias sv_hook_gameend @@ -1862,8 +1895,7 @@ set g_triggerimpulse_radial_multiplier 1 "trigger_impulse radial field multiplie seta g_ghost_items 1 "enable ghosted items (when between 0 and 1, overrides the alpha value)" seta g_ghost_items_color "-1 -1 -1" "color of ghosted items, 0 0 0 leaves the color unchanged" -set sv_weaponstats_damagefile "" "when set to a file name, per-weapon damage stats get written to that file" -set sv_weaponstats_killfile "" "when set to a file name, per-weapon kill stats get written to that file" +set sv_weaponstats_file "" "when set to a file name, per-weapon stats get written to that file" seta cl_noantilag 0 "turn this on if you believe antilag is bad" @@ -1954,7 +1986,7 @@ set g_weaponreplace_porto "" set g_weaponreplace_minstanex "" set g_weaponreplace_hook "" set g_weaponreplace_hlac "" -set g_weaponreplace_campingrifle "" +set g_weaponreplace_sniperrifle "" set g_weaponreplace_tuba "" set g_weaponreplace_fireball "" set g_weaponreplace_seeker "" @@ -1979,12 +2011,15 @@ scr_conscroll_y -0.3 scr_loadingscreen_background 0 scr_loadingscreen_barcolor "0 0.5 1" -scr_loadingscreen_barheight 20 +scr_loadingscreen_barheight 12 scr_loadingscreen_count 1 scr_conforcewhiledisconnected 0 +scr_infobar_height 12 // DP cannot properly detect this, so rather turn off the detection r_texture_dds_load_dxt1_noalpha 1 +r_texture_dds_load_swdecode 1 // SW decode to quarter res if we want to load DDS but don't support the extension for it +r_texture_dds_load_logfailure 0 // this engine feature SUCKS // particles optimization r_drawparticles_nearclip_min 8 @@ -2016,7 +2051,7 @@ utf8_enable 1 // safe font defaults r_font_hinting 1 r_font_disable_freetype 0 -r_font_size_snapping 2 +r_font_size_snapping 4 // database management set sv_db_saveasdump 0 "write server.db in dump format (loads slower, easier to read/parse)" @@ -2024,6 +2059,8 @@ set cl_db_saveasdump 0 "write client.db in dump format (loads slower, easier to // uid2name seta cl_allow_uid2name -1 "-1 = ask if the player wants to disable/enable this feature, 0 = disable, 1 = enable uid2name (allows showing your name in race rankings for instance)" +seta cl_allow_uidtracking 1 "-1 = ask if the player wants to disable/enable this feature, 0 = disable, 1 = enable uid tracking (allows associating your data with your player ID)" +// FIXME set to -1 before release, once we have a dialog for this! // polygonoffset for submodel SUCKS SUCKS SUCKS (only a hack for quake1, we don't need that) r_polygonoffset_submodel_offset 0 @@ -2057,6 +2094,7 @@ set g_weapon_charge_colormod_blue_full -1 // player statistics server URI set g_playerstats_uri "" +set g_playerstats_debug 0 "when 1, player stats are dumped to the console too" // create this cvar in case the engine did not set snd_soundradius 1200 @@ -2072,7 +2110,6 @@ exec ctfscoring-ai.cfg exec effects-normal.cfg exec physicsX0.cfg exec turrets.cfg -exec font-nimbussansl.cfg // hud cvar descriptions exec _hud_descriptions.cfg diff --git a/effectinfo.txt b/effectinfo.txt index 3e69bd826..bb44e5b4d 100644 --- a/effectinfo.txt +++ b/effectinfo.txt @@ -4694,8 +4694,6 @@ bounce 1.5 liquidfriction 4 velocityjitter 16 16 16 - - // rocket guiding start // underwater bubbles effect rocket_guide @@ -5125,3 +5123,74 @@ originjitter 1 1 1 velocityjitter 300 300 300 velocitymultiplier 0.5 airfriction 3 + + +// weak rifle bullet trail (somewhat like a tracer) +// used in qcsrc/server/w_common.qc: zcurveparticles_from_tracetoss(particleeffectnum("tr_bullet"), self.origin, trace_endpos, self.velocity) +// used in qcsrc/client/projectile.qc: trailparticles(self, particleeffectnum("tr_bullet"), from, to) +effect tr_rifle_weak +trailspacing 128 +type spark +color 0x800000 0xFF8020 +alpha 256 256 2560 +size 1.5 1.5 +stretchfactor 1 +velocitymultiplier 0.7 +effect tr_rifle_weak +notunderwater +tex 0 8 +trailspacing 48 +type static +color 0x202020 0x404040 +size 4 4 +sizeincrease 0.4 +alpha 256 256 256 +airfriction -4 +velocityjitter 4 4 4 +type smoke +effect tr_rifle_weak +underwater +trailspacing 192 +type bubble +tex 62 62 +color 0x404040 0x808080 +size 2 2 +alpha 256 256 128 +gravity -0.125 +bounce 1.5 +liquidfriction 4 +velocityjitter 16 16 16 + +// red smoke emiter +// used nowhere in code +effect red_smoke +count 2 +type smoke +tex 0 8 +color 0xff8866 0x331100 +size 60 120 +sizeincrease 0 +alpha 32 64 32 +gravity -0.007 +originjitter 0 0 0 +velocityjitter 0 0 0 +velocitymultiplier 5 +airfriction -1 +rotate 0 360 -30 30 + +// pipe smoke emiter +// used nowhere in code +effect pipe_smoke +count 2 +type smoke +tex 0 8 +color 0x999999 0x555555 +size 5 10 +sizeincrease 35 +alpha 32 64 48 +gravity -0.015 +originjitter 0 0 0 +velocityjitter 0 0 5 +velocitymultiplier 15 +airfriction -1 +rotate 0 360 -180 180 diff --git a/effects-high.cfg b/effects-high.cfg index 7b7358cd9..e4d9632bc 100644 --- a/effects-high.cfg +++ b/effects-high.cfg @@ -7,6 +7,7 @@ gl_texture_anisotropy 16 mod_q3bsp_nolightmaps 0 r_bloom 1 r_coronas 1 +r_coronas_occlusionquery 1 r_damageblur 0.4 r_depthfirst 2 r_drawdecals_drawdistance 500 diff --git a/effects-low.cfg b/effects-low.cfg index 79d56951f..0c3fef95b 100644 --- a/effects-low.cfg +++ b/effects-low.cfg @@ -7,6 +7,7 @@ gl_texture_anisotropy 1 mod_q3bsp_nolightmaps 1 r_bloom 0 r_coronas 1 +r_coronas_occlusionquery 0 r_damageblur 0 r_depthfirst 0 r_drawdecals_drawdistance 200 diff --git a/effects-med.cfg b/effects-med.cfg index 0914dac60..5b9ea85f3 100644 --- a/effects-med.cfg +++ b/effects-med.cfg @@ -7,6 +7,7 @@ gl_texture_anisotropy 1 mod_q3bsp_nolightmaps 0 r_bloom 0 r_coronas 1 +r_coronas_occlusionquery 0 r_damageblur 0 r_depthfirst 0 r_drawdecals_drawdistance 300 diff --git a/effects-normal.cfg b/effects-normal.cfg index 02796ca30..1ee62d057 100644 --- a/effects-normal.cfg +++ b/effects-normal.cfg @@ -7,6 +7,7 @@ gl_texture_anisotropy 1 mod_q3bsp_nolightmaps 0 r_bloom 0 r_coronas 1 +r_coronas_occlusionquery 0 r_damageblur 0 r_depthfirst 1 r_drawdecals_drawdistance 300 diff --git a/effects-omg.cfg b/effects-omg.cfg index cf105ba2b..ffd5af713 100644 --- a/effects-omg.cfg +++ b/effects-omg.cfg @@ -7,6 +7,7 @@ gl_texture_anisotropy 1 mod_q3bsp_nolightmaps 1 r_bloom 0 r_coronas 1 +r_coronas_occlusionquery 0 r_damageblur 0 r_depthfirst 0 r_drawdecals_drawdistance 100 diff --git a/effects-ultimate.cfg b/effects-ultimate.cfg index 5a6deb9b9..e7a2efb3f 100644 --- a/effects-ultimate.cfg +++ b/effects-ultimate.cfg @@ -7,6 +7,7 @@ gl_texture_anisotropy 16 mod_q3bsp_nolightmaps 0 r_bloom 1 r_coronas 1 +r_coronas_occlusionquery 1 r_damageblur 0.4 r_depthfirst 2 r_drawdecals_drawdistance 500 diff --git a/effects-ultra.cfg b/effects-ultra.cfg index b6d7f04aa..218565408 100644 --- a/effects-ultra.cfg +++ b/effects-ultra.cfg @@ -7,6 +7,7 @@ gl_texture_anisotropy 16 mod_q3bsp_nolightmaps 0 r_bloom 1 r_coronas 1 +r_coronas_occlusionquery 1 r_damageblur 0.4 r_depthfirst 2 r_drawdecals_drawdistance 500 diff --git a/fixbalance.sh b/fixbalance.sh new file mode 100755 index 000000000..cfc6cc0ff --- /dev/null +++ b/fixbalance.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +main=balanceXonotic.cfg +for X in balance*.cfg; do + case "$X" in + "$main") + ;; + *) + perl ../../misc/tools/cfgapply.pl "$main" "$X" > "$X.new" && mv "$X.new" "$X" + ;; + esac +done +git diff diff --git a/gfx/crosshair_ring_nexgun.tga b/gfx/crosshair_ring_nexgun.tga new file mode 100644 index 000000000..6100096bf 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 index 000000000..b25e3509b Binary files /dev/null and b/gfx/crosshair_ring_sniperrifle.tga differ diff --git a/gfx/hud/default/weaponcampingrifle.tga b/gfx/hud/default/weaponcampingrifle.tga deleted file mode 100644 index f5c2e5592..000000000 Binary files a/gfx/hud/default/weaponcampingrifle.tga and /dev/null differ diff --git a/gfx/hud/default/weaponsniperrifle.tga b/gfx/hud/default/weaponsniperrifle.tga new file mode 100644 index 000000000..f5c2e5592 Binary files /dev/null and b/gfx/hud/default/weaponsniperrifle.tga differ diff --git a/gfx/hud/luminos/weaponcampingrifle.tga b/gfx/hud/luminos/weaponcampingrifle.tga deleted file mode 100644 index f5c2e5592..000000000 Binary files a/gfx/hud/luminos/weaponcampingrifle.tga and /dev/null differ diff --git a/gfx/hud/luminos/weaponsniperrifle.tga b/gfx/hud/luminos/weaponsniperrifle.tga new file mode 100644 index 000000000..f5c2e5592 Binary files /dev/null and b/gfx/hud/luminos/weaponsniperrifle.tga differ diff --git a/gfx/hud/old/weaponcampingrifle.tga b/gfx/hud/old/weaponcampingrifle.tga deleted file mode 100644 index 09da559dc..000000000 Binary files a/gfx/hud/old/weaponcampingrifle.tga and /dev/null differ diff --git a/gfx/hud/old/weaponsniperrifle.tga b/gfx/hud/old/weaponsniperrifle.tga new file mode 100644 index 000000000..09da559dc Binary files /dev/null and b/gfx/hud/old/weaponsniperrifle.tga differ diff --git a/gfx/menu/default/skinvalues.txt b/gfx/menu/default/skinvalues.txt index 8e0f548a7..b2b0a9700 100755 --- a/gfx/menu/default/skinvalues.txt +++ b/gfx/menu/default/skinvalues.txt @@ -174,7 +174,7 @@ COLOR_DIALOG_USERBIND '1 1 1' COLOR_DIALOG_SINGLEPLAYER '1 1 1' COLOR_DIALOG_CREDITS '1 1 1' COLOR_DIALOG_WEAPONS '1 1 1' -COLOR_DIALOG_RADAR '1 1 1' +COLOR_DIALOG_WAYPOINTS '1 1 1' COLOR_DIALOG_SERVERINFO '1 1 1' COLOR_DIALOG_CVARS '1 0 0' diff --git a/gfx/menu/luminos/background.tga b/gfx/menu/luminos/background.tga index 67e31a540..7497ddc52 100644 Binary files a/gfx/menu/luminos/background.tga and b/gfx/menu/luminos/background.tga differ diff --git a/gfx/menu/luminos/background_ingame_l2.tga b/gfx/menu/luminos/background_ingame_l2.tga index f134814f7..d77948c2d 100644 Binary files a/gfx/menu/luminos/background_ingame_l2.tga and b/gfx/menu/luminos/background_ingame_l2.tga differ diff --git a/gfx/menu/luminos/background_l2.tga b/gfx/menu/luminos/background_l2.tga index f134814f7..d77948c2d 100644 Binary files a/gfx/menu/luminos/background_l2.tga and b/gfx/menu/luminos/background_l2.tga differ diff --git a/gfx/menu/luminos/checkbox_c0.tga b/gfx/menu/luminos/checkbox_c0.tga index 37dbf737f..af82c92b8 100644 Binary files a/gfx/menu/luminos/checkbox_c0.tga and b/gfx/menu/luminos/checkbox_c0.tga differ diff --git a/gfx/menu/luminos/checkbox_c1.tga b/gfx/menu/luminos/checkbox_c1.tga index 37dbf737f..af82c92b8 100644 Binary files a/gfx/menu/luminos/checkbox_c1.tga and b/gfx/menu/luminos/checkbox_c1.tga differ diff --git a/gfx/menu/luminos/checkbox_d0.tga b/gfx/menu/luminos/checkbox_d0.tga index f94884483..d7a8be78f 100644 Binary files a/gfx/menu/luminos/checkbox_d0.tga and b/gfx/menu/luminos/checkbox_d0.tga differ diff --git a/gfx/menu/luminos/checkbox_d1.tga b/gfx/menu/luminos/checkbox_d1.tga index a1dad7eae..b0f7cccaa 100644 Binary files a/gfx/menu/luminos/checkbox_d1.tga and b/gfx/menu/luminos/checkbox_d1.tga differ diff --git a/gfx/menu/luminos/checkbox_f0.tga b/gfx/menu/luminos/checkbox_f0.tga index c04496827..257f544e4 100644 Binary files a/gfx/menu/luminos/checkbox_f0.tga and b/gfx/menu/luminos/checkbox_f0.tga differ diff --git a/gfx/menu/luminos/checkbox_f1.tga b/gfx/menu/luminos/checkbox_f1.tga index 71aad7afb..5286cfa4e 100644 Binary files a/gfx/menu/luminos/checkbox_f1.tga and b/gfx/menu/luminos/checkbox_f1.tga differ diff --git a/gfx/menu/luminos/checkbox_n0.tga b/gfx/menu/luminos/checkbox_n0.tga index b0efdda83..b26d7ba91 100644 Binary files a/gfx/menu/luminos/checkbox_n0.tga and b/gfx/menu/luminos/checkbox_n0.tga differ diff --git a/gfx/menu/luminos/checkbox_n1.tga b/gfx/menu/luminos/checkbox_n1.tga index 37dbf737f..af82c92b8 100644 Binary files a/gfx/menu/luminos/checkbox_n1.tga and b/gfx/menu/luminos/checkbox_n1.tga differ diff --git a/gfx/menu/luminos/skinvalues.txt b/gfx/menu/luminos/skinvalues.txt index 9cb2b5926..21944b67a 100755 --- a/gfx/menu/luminos/skinvalues.txt +++ b/gfx/menu/luminos/skinvalues.txt @@ -174,7 +174,7 @@ COLOR_DIALOG_USERBIND '1 1 1' COLOR_DIALOG_SINGLEPLAYER '1 1 1' COLOR_DIALOG_CREDITS '1 1 1' COLOR_DIALOG_WEAPONS '1 1 1' -COLOR_DIALOG_RADAR '1 1 1' +COLOR_DIALOG_WAYPOINTS '1 1 1' COLOR_DIALOG_SERVERINFO '1 1 1' COLOR_DIALOG_CVARS '1 0 0' diff --git a/gfx/menu/luminos/slider_c.tga b/gfx/menu/luminos/slider_c.tga index fe43eb9c7..a198d7a48 100644 Binary files a/gfx/menu/luminos/slider_c.tga and b/gfx/menu/luminos/slider_c.tga differ diff --git a/gfx/menu/luminos/slider_d.tga b/gfx/menu/luminos/slider_d.tga index aaa80f051..da81872a1 100644 Binary files a/gfx/menu/luminos/slider_d.tga and b/gfx/menu/luminos/slider_d.tga differ diff --git a/gfx/menu/luminos/slider_f.tga b/gfx/menu/luminos/slider_f.tga index 3dea5852d..38b7140ad 100644 Binary files a/gfx/menu/luminos/slider_f.tga and b/gfx/menu/luminos/slider_f.tga differ diff --git a/gfx/menu/luminos/slider_n.tga b/gfx/menu/luminos/slider_n.tga index e270201fc..2584eecb5 100644 Binary files a/gfx/menu/luminos/slider_n.tga and b/gfx/menu/luminos/slider_n.tga differ diff --git a/gfx/menu/xaw/skinvalues.txt b/gfx/menu/xaw/skinvalues.txt index 666b971c2..eae123ce7 100644 --- a/gfx/menu/xaw/skinvalues.txt +++ b/gfx/menu/xaw/skinvalues.txt @@ -29,7 +29,7 @@ COLOR_DIALOG_USERBIND '1 1 1' COLOR_DIALOG_SINGLEPLAYER '1 1 1' COLOR_DIALOG_CREDITS '1 1 1' COLOR_DIALOG_WEAPONS '1 1 1' -COLOR_DIALOG_RADAR '1 1 1' +COLOR_DIALOG_WAYPOINTS '1 1 1' COLOR_DIALOG_SERVERINFO '1 1 1' COLOR_DIALOG_CVARS '1 0 0' diff --git a/hook-firing_swap.cfg b/hook-firing_swap.cfg index e556db70e..42d8379c5 100644 --- a/hook-firing_swap.cfg +++ b/hook-firing_swap.cfg @@ -13,7 +13,7 @@ seta cl_swapattacks_tuba 0 seta cl_swapattacks_laser 0 seta cl_swapattacks_shotgun 0 seta cl_swapattacks_uzi 0 -seta cl_swapattacks_campingrifle 0 +seta cl_swapattacks_sniperrifle 0 seta cl_swapattacks_grenadelauncher 0 seta cl_swapattacks_electro 0 seta cl_swapattacks_hlac 0 diff --git a/hud_luminos.cfg b/hud_luminos.cfg index a3f3ed39e..ca8ea38de 100644 --- a/hud_luminos.cfg +++ b/hud_luminos.cfg @@ -108,6 +108,7 @@ seta hud_panel_notify_bg_alpha "" seta hud_panel_notify_bg_border "" seta hud_panel_notify_bg_padding "" seta hud_panel_notify_flip "0" +seta hud_panel_notify_fontsize "0.8" seta hud_panel_notify_print "1" seta hud_panel_timer 1 @@ -120,7 +121,7 @@ seta hud_panel_timer_bg_alpha "" seta hud_panel_timer_bg_border "" seta hud_panel_timer_bg_padding "0" -seta hud_panel_radar 1 +seta hud_panel_radar 2 // enabled for keepaway and to make the HUD consistent throughout game modes seta hud_panel_radar_pos "0.030000 0.020000" seta hud_panel_radar_size "0.170000 0.220000" seta hud_panel_radar_bg "" diff --git a/hud_luminos_minimal.cfg b/hud_luminos_minimal.cfg index 8e3941631..fef69f23f 100644 --- a/hud_luminos_minimal.cfg +++ b/hud_luminos_minimal.cfg @@ -108,6 +108,7 @@ seta hud_panel_notify_bg_alpha "" seta hud_panel_notify_bg_border "" seta hud_panel_notify_bg_padding "" seta hud_panel_notify_flip "1" +seta hud_panel_notify_fontsize "0.8" seta hud_panel_notify_print "0" seta hud_panel_timer 1 diff --git a/hud_luminos_xhair_minimal.cfg b/hud_luminos_xhair_minimal.cfg index 10f7afd14..80fe445e4 100644 --- a/hud_luminos_xhair_minimal.cfg +++ b/hud_luminos_xhair_minimal.cfg @@ -107,6 +107,7 @@ seta hud_panel_notify_bg_alpha "" seta hud_panel_notify_bg_border "" seta hud_panel_notify_bg_padding "" seta hud_panel_notify_flip "1" +seta hud_panel_notify_fontsize "0.8" seta hud_panel_notify_print "0" seta hud_panel_timer 1 diff --git a/hud_nexuiz.cfg b/hud_nexuiz.cfg index 681b7378e..cfa50af89 100644 --- a/hud_nexuiz.cfg +++ b/hud_nexuiz.cfg @@ -108,6 +108,7 @@ seta hud_panel_notify_bg_alpha "0" seta hud_panel_notify_bg_border "" seta hud_panel_notify_bg_padding "" seta hud_panel_notify_flip "0" +seta hud_panel_notify_fontsize "1" seta hud_panel_notify_print "1" seta hud_panel_timer 1 diff --git a/keybinds.txt b/keybinds.txt index 453e09165..56ff29d76 100644 --- a/keybinds.txt +++ b/keybinds.txt @@ -17,19 +17,20 @@ "weaplast" "previously used" "weapbest" "best" "reload" "reload" -"impulse 1" "laser" -"impulse 2" "shotgun" -"impulse 3" "machine gun / rifle" -"impulse 4" "mortar" -"impulse 5" "electro" -"impulse 6" "crylink / hlac" -"impulse 7" "nex / minstanex" -"impulse 8" "hagar" -"impulse 9" "rocket launcher / fireball" -"impulse 14" "porto / hook" +"impulse 1" "Laser" +"impulse 2" "Shotgun" +"impulse 3" "Machine Gun" +"impulse 4" "Mortar / Mine Layer" +"impulse 5" "Electro" +"impulse 6" "Crylink / HLAC" +"impulse 7" "Nex / MinstaNex / Rifle" +"impulse 8" "Hagar / Seeker" +"impulse 9" "Rocket Launcher / Fireball" +"impulse 14" "Port-O-Launch / Hook" "" "" "" "View" -"+zoom" "zoom" +"+zoom" "hold zoom" +"togglezoom" "toggle zoom" "+showscores" "show scores" "screenshot" "screen shot" "" "" diff --git a/keybinds.txt.de b/keybinds.txt.de new file mode 100644 index 000000000..6f2c78b51 --- /dev/null +++ b/keybinds.txt.de @@ -0,0 +1,91 @@ +"" "Bewegung" +"+forward" "vorwärts" +"+back" "rückwärts" +"+moveleft" "links" +"+moveright" "rechts" +"+jump" "springen / schwimmen" +"+crouch" "ducken / sinken" +"+hook" "Enterhaken / Jetpack" +"" "" +"" "Angriff" +"+fire" "1. Feuermodus" +"+fire2" "2. Feuermodus" +"" "" +"" "Waffe wechseln" +"weapprev" "vorherige" +"weapnext" "nächste" +"weaplast" "zuletzt benutzte" +"weapbest" "beste" +"reload" "nachladen" +"impulse 1" "Laser" +"impulse 2" "Shotgun" +"impulse 3" "Machine Gun" +"impulse 4" "Mortar / Mine Layer" +"impulse 5" "Electro" +"impulse 6" "Crylink / HLAC" +"impulse 7" "Nex / MinstaNex / Rifle" +"impulse 8" "Hagar / Seeker" +"impulse 9" "Rocket Launcher / Fireball" +"impulse 14" "Port-O-Launch / Hook" +"" "" +"" "Anzeige" +"+zoom" "Vergrößern (festhalten)" +"togglezoom" "Vergrößern (umschalten)" +"+showscores" "Tabelle anzeigen" +"screenshot" "Bildschirmfoto" +"" "" +"" "Kommunikation" +"messagemode" "Nachricht an alle" +"messagemode2" "Nachricht ans Team" +"+con_chat_maximize" "Chat-Historie zeigen" +"vyes" "Abstimmung: JA" +"vno" "Abstimmung: Nein" +"ready" "Bereitschaft signalisieren" +"" "" +"" "Client" +"+show_info" "Serverinfo anzeigen" +"toggleconsole" "Konsole öffnen" +"disconnect" "Verbindung trennen" +"quit" "Beenden" +"" "" +"" "Teamplay" +"messagemode2" "Nachricht ans Team" +"team_auto" "Team automatisch wählen" +"menu_showteamselect" "Team auswählen" +"spec" "Zuschauen" +"dropweapon" "Waffe wegwerfen" +"+use" "Schlüssel oder Flagge wegwerfen" +"" "" +"" "Benutzerdefiniert" +"+userbind 1" "$userbind1" +"+userbind 2" "$userbind2" +"+userbind 3" "$userbind3" +"+userbind 4" "$userbind4" +"+userbind 5" "$userbind5" +"+userbind 6" "$userbind6" +"+userbind 7" "$userbind7" +"+userbind 8" "$userbind8" +"+userbind 9" "$userbind9" +"+userbind 10" "$userbind10" +"+userbind 11" "$userbind11" +"+userbind 12" "$userbind12" +"+userbind 13" "$userbind13" +"+userbind 14" "$userbind14" +"+userbind 15" "$userbind15" +"+userbind 16" "$userbind16" +"+userbind 17" "$userbind17" +"+userbind 18" "$userbind18" +"+userbind 19" "$userbind19" +"+userbind 20" "$userbind20" +"+userbind 21" "$userbind21" +"+userbind 22" "$userbind22" +"+userbind 23" "$userbind23" +"+userbind 24" "$userbind24" +"+userbind 25" "$userbind25" +"+userbind 26" "$userbind26" +"+userbind 27" "$userbind27" +"+userbind 28" "$userbind28" +"+userbind 29" "$userbind29" +"+userbind 30" "$userbind30" +"+userbind 31" "$userbind31" +"+userbind 32" "$userbind32" diff --git a/keybinds.txt.fr b/keybinds.txt.fr new file mode 100644 index 000000000..c5cb242b1 --- /dev/null +++ b/keybinds.txt.fr @@ -0,0 +1,91 @@ +"" "Mouvement" +"+forward" "avancer" +"+back" "reculer" +"+moveleft" "gauche" +"+moveright" "droite" +"+jump" "sauter / nager" +"+crouch" "s'accroupir / couler" +"+hook" "grappin / jet pack" +"" "" +"" "Attaque" +"+fire" "tir primaire" +"+fire2" "tir secondaire" +"" "" +"" "Changement d'armes" +"weapprev" "arme précédente" +"weapnext" "arme suivante" +"weaplast" "dernière utilisée" +"weapbest" "meilleure arme" +"reload" "recharger" +"impulse 1" "laser" +"impulse 2" "shotgun" +"impulse 3" "machine gun / rifle" +"impulse 4" "mortar" +"impulse 5" "electro" +"impulse 6" "crylink / hlac" +"impulse 7" "nex / minstanex" +"impulse 8" "hagar" +"impulse 9" "rocket launcher / fireball" +"impulse 14" "porto / hook" +"" "" +"" "Vue" +"+zoom" "zoom clic enfoncé" +"togglezoom" "zoom 2 clics" +"+showscores" "montrer les scores (enfoncé)" +"screenshot" "capture d'écran" +"" "" +"" "Communiquer" +"messagemode" "chat public" +"messagemode2" "chat d'équipe" +"+con_chat_maximize" "historique du chat (enfoncé)" +"vyes" "voter OUI" +"vno" "voter NON" +"ready" "prêt (en mode échauffement)" +"" "" +"" "Joueur" +"+show_info" "information serveur" +"toggleconsole" "ouvrir la console" +"disconnect" "se déconnecter" +"quit" "quitter" +"" "" +"" "Équipe" +"messagemode2" "chat d'équipe" +"team_auto" "auto-joindre une équipe" +"menu_showteamselect" "séléction d'équipe" +"spec" "mode spectateur" +"dropweapon" "lâcher l'arme" +"+use" "lâcher la clé / lâcher le drapeau" +"" "" +"" "Utilisateur" +"+userbind 1" "$userbind1" +"+userbind 2" "$userbind2" +"+userbind 3" "$userbind3" +"+userbind 4" "$userbind4" +"+userbind 5" "$userbind5" +"+userbind 6" "$userbind6" +"+userbind 7" "$userbind7" +"+userbind 8" "$userbind8" +"+userbind 9" "$userbind9" +"+userbind 10" "$userbind10" +"+userbind 11" "$userbind11" +"+userbind 12" "$userbind12" +"+userbind 13" "$userbind13" +"+userbind 14" "$userbind14" +"+userbind 15" "$userbind15" +"+userbind 16" "$userbind16" +"+userbind 17" "$userbind17" +"+userbind 18" "$userbind18" +"+userbind 19" "$userbind19" +"+userbind 20" "$userbind20" +"+userbind 21" "$userbind21" +"+userbind 22" "$userbind22" +"+userbind 23" "$userbind23" +"+userbind 24" "$userbind24" +"+userbind 25" "$userbind25" +"+userbind 26" "$userbind26" +"+userbind 27" "$userbind27" +"+userbind 28" "$userbind28" +"+userbind 29" "$userbind29" +"+userbind 30" "$userbind30" +"+userbind 31" "$userbind31" +"+userbind 32" "$userbind32" diff --git a/keybinds.txt.ru b/keybinds.txt.ru new file mode 100644 index 000000000..ed46d02f1 --- /dev/null +++ b/keybinds.txt.ru @@ -0,0 +1,91 @@ +"" "Движение" +"+forward" "вперёд" +"+back" "назад" +"+moveleft" "влево" +"+moveright" "вправо" +"+jump" "прыжок / плыть" +"+crouch" "пригнуться / погрузиться" +"+hook" "крюк / реактивный ранец" +"" "" +"" "Нападение" +"+fire" "основной огонь" +"+fire2" "дополнительный огонь" +"" "" +"" "Переключение оружия" +"weapprev" "предыдущее" +"weapnext" "следующее" +"weaplast" "ранее использованное" +"weapbest" "лучшее" +"reload" "перезарядить" +"impulse 1" "Laser" +"impulse 2" "Shotgun" +"impulse 3" "Machine Gun" +"impulse 4" "Mortar / Mine Layer" +"impulse 5" "Electro" +"impulse 6" "Crylink / HLAC" +"impulse 7" "Nex / MinstaNex / Rifle" +"impulse 8" "Hagar / Seeker" +"impulse 9" "Rocket Launcher / Fireball" +"impulse 14" "Port-O-Launch / Hook" +"" "" +"" "Вид" +"+zoom" "увеличение" +"togglezoom" "переключить увеличение" +"+showscores" "показать очки" +"screenshot" "снимок экрана" +"" "" +"" "Общение" +"messagemode" "общий чат" +"messagemode2" "чат команды" +"+con_chat_maximize" "показать историю чата" +"vyes" "голосовать ДА" +"vno" "голосовать НЕТ" +"ready" "готовность" +"" "" +"" "Клиент" +"+show_info" "сведения о сервере" +"toggleconsole" "открыть консоль" +"disconnect" "отключиться" +"quit" "выйти" +"" "" +"" "Командная игра" +"messagemode2" "чат команды" +"team_auto" "авто-выбор команды" +"menu_showteamselect" "меню команды" +"spec" "стать наблюдателем" +"dropweapon" "бросить оружие" +"+use" "бросить ключ или флаг" +"" "" +"" "Определенно пользователем" +"+userbind 1" "$userbind1" +"+userbind 2" "$userbind2" +"+userbind 3" "$userbind3" +"+userbind 4" "$userbind4" +"+userbind 5" "$userbind5" +"+userbind 6" "$userbind6" +"+userbind 7" "$userbind7" +"+userbind 8" "$userbind8" +"+userbind 9" "$userbind9" +"+userbind 10" "$userbind10" +"+userbind 11" "$userbind11" +"+userbind 12" "$userbind12" +"+userbind 13" "$userbind13" +"+userbind 14" "$userbind14" +"+userbind 15" "$userbind15" +"+userbind 16" "$userbind16" +"+userbind 17" "$userbind17" +"+userbind 18" "$userbind18" +"+userbind 19" "$userbind19" +"+userbind 20" "$userbind20" +"+userbind 21" "$userbind21" +"+userbind 22" "$userbind22" +"+userbind 23" "$userbind23" +"+userbind 24" "$userbind24" +"+userbind 25" "$userbind25" +"+userbind 26" "$userbind26" +"+userbind 27" "$userbind27" +"+userbind 28" "$userbind28" +"+userbind 29" "$userbind29" +"+userbind 30" "$userbind30" +"+userbind 31" "$userbind31" +"+userbind 32" "$userbind32" diff --git a/languages.txt b/languages.txt new file mode 100644 index 000000000..bea59d35b --- /dev/null +++ b/languages.txt @@ -0,0 +1,10 @@ +de German "Deutsch" +en English "English" +fi Finnish "Suomi" +fr French "Français" +hu Hungarian "Magyar" +nl Dutch "Nederlands" +pt Portuguese "Português" +ro Romanian "Romana" +ru Russian "Русский" +se Swedish "Svenska" diff --git a/menu.dat.de.po b/menu.dat.de.po new file mode 100644 index 000000000..93773ddd0 --- /dev/null +++ b/menu.dat.de.po @@ -0,0 +1,2767 @@ +# Xonotic Menu +# Copyright (C) 2011 Team Xonotic +# This file is distributed under the same license as the Xonotic package. +# Rudolf Polzer +# +msgid "" +msgstr "" +"Project-Id-Version: 0.1preview\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-07 07:50+0100\n" +"PO-Revision-Date: 2011-02-07 07:50+0100\n" +"Last-Translator: Rudolf Polzer \n" +"Language-Team: LANGUAGE \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "Fehler: Status ist %d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Syntax: menu_cmd Befehl..., wobei mögliche Befehle sind:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " sync - lädt alle Variablen auf der aktuellen Menüseite neu\n" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr " directmenu ELEMENT - springt zu einem Menüelement" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "Fehler beim Erstellen eines curl-Handles\n" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +"Ungültiger Befehl. Eine Liste der unterstützten Befehle wird von menu_cmd " +"help ausgegeben.\n" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "Browser nicht initialisiert!" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "" +"HINWEIS: Text %s ist zu weit für das Textfeld, Text wurde um Faktor %f " +"gestaucht\n" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Eintrag %d" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "benutzerdefiniert" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4MQC Build-Information: %s (deutsch)\n" + +#: 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 "Level %d: %s" + +#: qcsrc/menu/xonotic/cvarlist.c:85 +msgid "will be saved to config.cfg" +msgstr "wird in config.cfg gespeichert" + +#: qcsrc/menu/xonotic/cvarlist.c:87 +msgid "will not be saved" +msgstr "wird nicht gespeichert" + +#: qcsrc/menu/xonotic/cvarlist.c:89 +msgid "private" +msgstr "privat" + +#: qcsrc/menu/xonotic/cvarlist.c:91 +msgid "engine setting" +msgstr "Engine-Einstellung" + +#: qcsrc/menu/xonotic/cvarlist.c:93 +msgid "read only" +msgstr "nur lesen" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Entwickler" + +#: 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_firstrun.c:4 +msgid "Welcome" +msgstr "Willkommen" + +#: 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 "" +"Willkommen in Xonotic! Nach Auswahl der Sprache und Eingabe des " +"Spielernamens kann es losgehen. Diese Optionen können natürlich später im " +"Menüsystem geändert werden." + +#: qcsrc/menu/xonotic/dialog_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Sprache:" + +#: 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 "Name:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:69 +msgid "Save settings" +msgstr "Einstellungen speichern" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "Munitons-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Munitionsanzeige:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Nur aktuellen Munitionstyp anzeigen" + +#: 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 "Links" + +#: 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 "Rechts" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Chat-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "Chat-Zeilen:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Chat-Größe:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "Chat-Sichtbarkeit:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "Chat-Piepton:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Engine-Info-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Engine-Info:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "Zeige einen Durchschnittswert für fps" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Health/Armor-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +msgid "Enable status bar" +msgstr "Statusleiste anzeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +msgid "Status bar alignment:" +msgstr "Statusleistenausrichtung" + +#: 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 "Innen" + +#: 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 "Außen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +msgid "Icon alignment:" +msgstr "Iconausrichtung:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Health und Armor tauschen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "Informations-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "Informationen:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "Ausrichtung tauschen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Mod-Symbole-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "Anzeige-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "Anzeige:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "auch auf der Konsole ausgeben" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "Scrollrichtung vertauschen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "Eintrags-Sichtbarkeit:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "Eintrags-Ausblendung:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Bonus-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "Strength und Shield vertauschen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "Gedrückte-Tasten-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "Panel nicht anzeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "Panel beim Zuschauen anzeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 +msgid "Panel always enabled" +msgstr "Panel immer anzeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "Aspektverhältnis:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Rundenzeit-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "Radar-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "Panel in Team-Spieltypen aktivieren" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29 +msgid "Radar:" +msgstr "Radar:" + +#: 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 "Drehung:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "Vorwärts" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "West" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40 +msgid "South" +msgstr "Süd" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41 +msgid "East" +msgstr "Ost" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42 +msgid "North" +msgstr "Nord" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46 +msgid "Scale:" +msgstr "Skalierung:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50 +msgid "Zoom mode:" +msgstr "Zoom-Modus:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52 +msgid "Zoomed in" +msgstr "vergrößert" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53 +msgid "Zoomed out" +msgstr "verkleinert" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "immer vergrößert" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55 +msgid "Never zoomed" +msgstr "nie vergrößert" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4 +msgid "Score Panel" +msgstr "Punkte-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "Zeit-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22 +msgid "Timer:" +msgstr "Zeit:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25 +msgid "Show elapsed time" +msgstr "Vergangene Zeit anzeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "Abstimmungs-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "Alpha nach Abstimmung:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Waffen-Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Ausblenden nach:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 +msgid "Never" +msgstr "Nie" + +#: 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 "Ausblendeeffekt:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +msgid "EF^None" +msgstr "keiner" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Schieben" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Alpha" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "Waffensymbole:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "Waffen-ID zeigen als:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44 +msgid "SHOWAS^None" +msgstr "nichts" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45 +msgid "Number" +msgstr "Zahl" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46 +msgid "Bind" +msgstr "Taste" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Trefferquote zeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Munition zeigen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Muntionsleistenfarbe:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Munitionsleistenalpha:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "HUD-Konfiguration" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "Panel-Standardhintergrund:" + +#: 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 +msgid "Disable" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:591 +msgid "Color:" +msgstr "Farbe:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:599 +msgid "Border size:" +msgstr "Rahmengröße:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "Teamfarbe:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:625 +msgid "Test team color in configure mode" +msgstr "Teamfarbe bei Konfiguration testen" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:628 +msgid "Padding:" +msgstr "Abstand:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "HUD-Dock:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +msgid "DOCK^Disabled" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +msgid "DOCK^Small" +msgstr "Klein" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +msgid "DOCK^Medium" +msgstr "Mittel" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +msgid "DOCK^Large" +msgstr "Groß" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "Gitter:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Panels am Gitter ausrichten" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Gitterweite:" + +#: 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 "Verlassen" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Mehrspieler" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Server" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5 +msgid "Create" +msgstr "Starten" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Demos" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5 +msgid "Player Setup" +msgstr "Spieler-Einstellungen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Spieltyp" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Spieleinstellungen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Zeitlimit:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "Standardwert der Map verwenden" + +#: 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 "Punktelimit" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "Spielerplätze:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Anzahl Bots:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Spielstärke:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "Bots halt" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "Anfänger" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "Gewinnst schon" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Kannst gewinnen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Könntest gewinnen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Fortgeschritten" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Experte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Profi" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Mörder" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "Übermenschlich" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "Gottgleich" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "Mutators..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:84 +msgid "Advanced settings..." +msgstr "Erweiterte Einstellungen..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105 +msgid "Map list:" +msgstr "Mapliste:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "Alle auswählen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "Keine auswählen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Starten!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "Capture-Limit:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "Leben:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "Runden:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Tore:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "Punktelimit:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "Erweiterte Servereinstellungen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Spieleinstellungen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "Zuschauer erlauben" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "Startschutz:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Spieltempo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Teamplay-Einstellungen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Eigenbeschuss-Faktor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Virtueller Eigenbeschuss (nur Effekt)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "Strafe für Eigenbeschuss:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "Virtuelle Strafe (nur Effekt)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "Teams:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "Map-Abstimmung:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "Keine Abstimmung" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "2 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 Optionen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "Einfache Mehrheit gewinnt vcall" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Map-Information" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "mit Waffen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "nur MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Titel:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Autor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Features:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Spieltyp:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 +msgid "Close" +msgstr "Schließen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Start" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "Mutators" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "Alle-Waffen-Arena" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Viele-Waffen-Arena" + +#: 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 "Ausweichen" + +#: 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 "Raketen-Fliegen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "Ohne Waffen starten" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "Wenig Schwerkraft" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170 +msgid "Cloaked" +msgstr "Tarnung" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "Enterhaken" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173 +msgid "Midair" +msgstr "in der Luft" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176 +msgid "Vampire" +msgstr "Vampir" + +#: 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 "Waffen bleiben" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "Blutverlust" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202 +msgid "Jet pack" +msgstr "Jetpack" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98 +msgid "MUT^None" +msgstr "keiner" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Spielmechanik-Mutators:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "Waffen/Gegenstände-Mutators:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199 +msgid "Grappling hook" +msgstr "Enterhaken" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215 +msgid "Weapon arenas:" +msgstr "Waffen-Arenen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "Normal (keine Arena)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "mit Laser" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Spezielle Arenen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "Viele Waffen" + +#: 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 "Demo beim Spielen aufnehmen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +msgid "Filter:" +msgstr "Filter:" + +#: 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 "Löschen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Timedemo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Verbinden" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +msgid "SRVS^Empty" +msgstr "leer" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +msgid "SRVS^Full" +msgstr "voll" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "Pause" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Adresse:" + +#: 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:317 +msgid "Join!" +msgstr "Verbinden!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "Server-Information" + +#: 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 "-" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:158 +#, c-format +msgid "%d/%d, %d free player slots" +msgstr "%d/%d, %d freie Slots" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 +#, c-format +msgid "%d modified settings" +msgstr "%d veränderte Einstellungen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 +msgid "Official settings" +msgstr "Offizielle Einstellungen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197 +msgid "N/A (can't connect)" +msgstr "- (nicht kompatibel)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "not supported (can't connect)" +msgstr "nicht unterstützt (nicht kompatibel)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "not supported (won't encrypt)" +msgstr "nicht untersützt (nicht aktiv)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "supported (will encrypt)" +msgstr "unterstützt (aktiv)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "supported (won't encrypt)" +msgstr "unterstützt (nicht aktiv)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "requested (will encrypt)" +msgstr "erwünscht (aktiv)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "requested (won't encrypt)" +msgstr "erwünscht (nicht aktiv)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223 +msgid "required (can't connect)" +msgstr "notwendig (nicht kompatibel)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225 +msgid "required (will encrypt)" +msgstr "notwendig (aktiv)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:246 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:269 +msgid "Players:" +msgstr "Spieler:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:254 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +msgid "Type:" +msgstr "Typ:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 +msgid "Map:" +msgstr "Map:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 +msgid "Gameplay:" +msgstr "Spielregeln:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 +msgid "Bots:" +msgstr "Bots:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 +msgid "Mod:" +msgstr "Mod:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 +msgid "Version:" +msgstr "Version:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "Ping:" +msgstr "Ping:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "CA:" +msgstr "CA:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Key:" +msgstr "Schlüssel:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 +msgid "Encryption:" +msgstr "Krypto:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "Modell:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "Sichtfeld:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Sicht-Wackeln:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Vergrößerungsfaktor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Vergrößerungsgeschwindigkeit:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Waffeneinstellungen..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "Fadenkreuz:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143 +msgid "Per weapon" +msgstr "pro Waffe" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "Größe:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Alpha:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Farbe:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Punkt in der Mitte aktivieren" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Größe:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Treffer-Test:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +msgid "HTST^None" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "TrueAim" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Gegner" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Wegpunkt-Einstellungen..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "HUD-Editor starten" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Modell erzwingen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +msgid "MDL^None" +msgstr "keine" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +msgid "MDL^Custom" +msgstr "inoffizielle" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +msgid "MDL^All" +msgstr "alle" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "Gewalteffekte deaktivieren" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Fleischteile:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +msgid "GIBS^None" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "Wenige" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +msgid "GIBS^Many" +msgstr "Einige" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +msgid "GIBS^Lots" +msgstr "Viele" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Schadenseffekt:" + +#: 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 "Sofort anwenden" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Wegpunkte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Show base waypoints" +msgstr "Basis-Wegpunkte anzeigen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 +msgid "Waypoint scale:" +msgstr "Wegpunkt-Skalierung:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint alpha:" +msgstr "Wegpunkt-Alpha:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Show names:" +msgstr "Namen anzeigen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 +msgid "Teammates" +msgstr "Mitspieler" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 +msgid "All players" +msgstr "Alle Spieler" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "Waffeneinstellungen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Waffenreihenfolge" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Hoch" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Runter" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "Waffenreihenfolge für Mausrad verwenden" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Automatisch auf beste Waffe wechseln" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "Waffe in 3D anzeigen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "Links" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "Rechts" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "3D-Ansicht spiegeln" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "Nachrichten" + +#: 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_quit.c:4 +msgid "Quit" +msgstr "Beenden" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "Wollen Sie das Spiel wirklich beenden?" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "Ja" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "Nein" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Einstellungen" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Eingabe" + +#: qcsrc/menu/xonotic/dialog_settings.c:19 +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +msgid "Video" +msgstr "Grafik" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Effekte" + +#: qcsrc/menu/xonotic/dialog_settings.c:21 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:4 +msgid "Audio" +msgstr "Ton" + +#: qcsrc/menu/xonotic/dialog_settings.c:22 +#: qcsrc/menu/xonotic/dialog_settings_network.c:4 +msgid "Network" +msgstr "Netzwerk" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Sonstiges" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "Master:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Musik:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +msgid "VOL^Ambient:" +msgstr "Umgebung:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Info:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Gegenstände:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Schmerz:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Spieler:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Schüsse:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Stimme:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Waffen:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Frequenz:" + +#: 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 "Kanäle" + +#: 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 "Stereokanäle tauschen" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Kopfhörer-Modus" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Räumliche Sprachnachrichten:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +msgid "VOCS^None" +msgstr "keine" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +msgid "VOCS^Taunts" +msgstr "nur Spott" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +msgid "VOCS^All" +msgstr "alle" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Spott-Radius:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +msgid "RNG^Very short" +msgstr "Sehr klein" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +msgid "RNG^Short" +msgstr "Klein" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +msgid "RNG^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +msgid "RNG^Long" +msgstr "Groß" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +msgid "RNG^Full" +msgstr "Sehr groß" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Automatischer Spott" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Zeitwarnung:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +msgid "WRN^None" +msgstr "keine" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:168 +msgid "1 minute" +msgstr "1 Minute" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:169 +msgid "5 minutes" +msgstr "5 Minuten" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:170 +msgid "WRN^Both" +msgstr "beide" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Treffer-Indikator" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Menü-Sounds" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Qualitäts-Vorgabe:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +msgid "PRE^OMG!" +msgstr "OMG!" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:42 +msgid "PRE^Low" +msgstr "Niedrig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +msgid "PRE^Medium" +msgstr "Mittel" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +msgid "PRE^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +msgid "PRE^High" +msgstr "Hoch" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:46 +msgid "PRE^Ultra" +msgstr "Ultra" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:48 +msgid "PRE^Ultimate" +msgstr "Ultimativ" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "Geometrie-Detail:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +msgid "DET^Lowest" +msgstr "Sehr niedrig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +msgid "DET^Low" +msgstr "Niedrig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +msgid "DET^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +msgid "DET^Good" +msgstr "Gut" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +msgid "DET^Best" +msgstr "Sehr gut" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +msgid "DET^Insane" +msgstr "Wahnsinnig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:62 +msgid "Antialiasing:" +msgstr "Kantenglättung:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:64 +msgid "AA^Disabled" +msgstr "Aus" + +#: 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 "Texturauflösung:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:73 +msgid "RES^Leet" +msgstr "Leet" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:74 +msgid "RES^Lowest" +msgstr "Sehr niedrig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +msgid "RES^Low" +msgstr "Niedrig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +msgid "RES^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +msgid "RES^Good" +msgstr "Gut" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +msgid "RES^Best" +msgstr "Sehr gut" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "Texturkompression vermeiden" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:100 +msgid "Anisotropy:" +msgstr "Anisotropie:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:102 +msgid "ANISO^Disabled" +msgstr "Aus" + +#: 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 "Partikelqualität:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Partikeldistanz:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "Einschusslöcher" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "Distanz:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Zeit:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "Lightmaps verwenden" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:133 +msgid "Deluxe mapping" +msgstr "Deluxemapping" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "Glanz" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "Offsetmapping" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "Reliefmapping" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:143 +msgid "Reflections:" +msgstr "Reflexionen:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Schwammig" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +msgid "REFL^Good" +msgstr "Gut" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Scharf" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Oberflächen anzeigen" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Kein dynamisches Licht" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Flash-Blend-Näherung" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Dynamisches Licht in Echtzeit" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "Schatten" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "Map-Licht in Echtzeit" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Normalmaps verwenden" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "Weiche Schatten" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "Koronas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:174 +msgid "Use Occlusion Queries" +msgstr "Occlusion Queries verwenden" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:176 +msgid "Bloom" +msgstr "Überstrahlung" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:178 +msgid "High Dynamic Range (HDR)" +msgstr "Lichtdynamik (HDR)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:182 +msgid "Motion blur:" +msgstr "Bewegungsunschärfe:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:188 +msgid "Damage blur:" +msgstr "Schadensunschärfe:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Tastenbelegung:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Taste ändern..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Bearbeiten..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Empfindlichkeit:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "Mausgeschwindigkeit:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Mausfilterung" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Höhe invertieren" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "Joystick verwenden" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "Mausbeschleunigung deaktivieren" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "\"Konsole öffnen\" schließt auch" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 +msgid "User defined key bind" +msgstr "Benutzerdefinierte Tastenbelegung" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Befehl beim Drücken:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Befehl beim Loslassen:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Speichern" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Abbrechen" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "Menü-Skins:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Uhrzeit anzeigen" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Datum anzeigen" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "Frames pro Sekunde anzeigen" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Tachometer" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "qu/s (ohne Einheit)" + +#: 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 "Knoten" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Akzelerometer anzeigen" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Akzelerometer-Skalierung:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Eingabelatenz minimieren" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Erweiterte Einstellungen" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Cvar-Filter:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Einstellung:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Wert:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 +msgid "Description:" +msgstr "Beschreibung:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Client-seitige Bewegungssimulation" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Netgraph anzeigen" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Netzwerkgeschwindigkeit:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:35 +msgid "56k" +msgstr "Modem" + +#: 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 (langsam)" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:38 +msgid "Fast ADSL" +msgstr "ADSL (schnell)" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:39 +msgid "Broadband" +msgstr "Breitband" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Eingabe-Pakete/s:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "HTTP-Downloads:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Downloads:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Geschwindigkeit (kB/s):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "Client-UDP-Port:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Auflösung:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Schriftgröße:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +msgid "SZ^Unreadable" +msgstr "Unleserlich" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +msgid "SZ^Tiny" +msgstr "Winzig" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +msgid "SZ^Little" +msgstr "Klein" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +msgid "SZ^Small" +msgstr "Klein" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +msgid "SZ^Medium" +msgstr "Mittel" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +msgid "SZ^Large" +msgstr "Groß" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +msgid "SZ^Huge" +msgstr "Riesig" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +msgid "SZ^Gigantic" +msgstr "Gigantisch" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +msgid "SZ^Colossal" +msgstr "Kolossal" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "Farbtiefe:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "Vollbild" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "Vertikale Synchronisation" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:49 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "OpenGL 2.0 Shaders verwenden (GLSL)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:52 +msgid "Use GLSL to handle color control" +msgstr "GLSL für Farbregelung verwenden" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:56 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Vertex Buffer Objects (VBOs)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +msgid "VBO^Off" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:60 +msgid "Vertices, some Tris (compatible)" +msgstr "Ecken, einige Dreiecke (kompatibel)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices" +msgstr "Ecken" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:64 +msgid "Vertices and Triangles" +msgstr "Ecken und Dreiecke" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "Depth first:" +msgstr "Tiefe zuerst rendern:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +msgid "DF^Disabled" +msgstr "Aus" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:70 +msgid "DF^World" +msgstr "nur Map" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:71 +msgid "DF^All" +msgstr "Immer" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Disable multithreaded OpenGL" +msgstr "OpenGL-Multithreading deaktivieren" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:77 +msgid "Wait for GPU to finish each frame" +msgstr "Bei jedem Frame auf die Grafikkarte warten" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:80 +msgid "Brightness:" +msgstr "Helligkeit:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:83 +msgid "Contrast:" +msgstr "Kontrast:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:86 +msgid "Gamma:" +msgstr "Gamma:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:89 +msgid "Contrast boost:" +msgstr "Kontrasterhöhung:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:92 +msgid "Saturation:" +msgstr "Sättigung:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:98 +msgid "LIT^Ambient:" +msgstr "Umgebungslicht:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:101 +msgid "Intensity:" +msgstr "Lichtstärke:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Einzelspieler" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "Sofortstart! (zufällige Map mit Bots)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Spiel starten!" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Gewinner" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Teamauswahl" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "'bestem' Team beitreten" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "rot" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "blau" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "gelb" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "pink" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "zuschauen" + +#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "Bitte nicht nochmal diesen Knopf drücken!" + +#: 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ä? Kann diese Map nicht starten (m ist NULL). Mapliste wird neu gefiltert.\n" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "%ss Xonotic-Server" + +#: 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ä? Kann diese Map nicht starten (ungültiger Spieltyp). Mapliste wird neu " +"gefiltert.\n" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.c:360 +msgid "Remove" +msgstr "Vergessen" + +#: qcsrc/menu/xonotic/serverlist.c:362 +msgid "Bookmark" +msgstr "Speichern" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Ping" +msgstr "Ping" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Host name" +msgstr "Servername" + +#: qcsrc/menu/xonotic/serverlist.c:520 +msgid "Map" +msgstr "Map" + +#: qcsrc/menu/xonotic/serverlist.c:521 +msgid "Type" +msgstr "Typ" + +#: qcsrc/menu/xonotic/serverlist.c:522 +msgid "Players" +msgstr "Spieler" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "" +msgstr "<TITEL>" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "<AUTOR>" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +msgid "VOL^OFF" +msgstr "AUS" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +msgid "VOL^MAX" +msgstr "MAX" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "%s dB" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: qcsrc/menu/xonotic/util.qc:270 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "HTTP-Antwort für ungültige ID %d erhalten.\n" + +#: qcsrc/menu/xonotic/util.qc:285 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "Fehler beim Empfang von Update-Information (Status: %d)\n" + +#: qcsrc/menu/xonotic/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "Fehler: HTML statt Update-Information erhalten\n" + +#: qcsrc/menu/xonotic/util.qc:295 +msgid "error: received carriage returns from update notification server\n" +msgstr "Fehler: Carriage-Returns in Update-Information enthalten\n" + +#: qcsrc/menu/xonotic/util.qc:316 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"Das Update kann bei:\n" +"%s\n" +"heruntergeladen werden.\n" + +#: qcsrc/menu/xonotic/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Automatische Generierung von mapinfo-Dateien..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "Jetzt auf %s updaten!" + +#: qcsrc/menu/xonotic/util.qc:509 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"^1FEHLER: Texturekompression ist notwendig aber nicht unterstützt.\n" +"^1Darstellungsprobleme sind zu erwarten.\n" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Arena" +msgstr "Arena" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Assault" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Capture The Flag" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Clan Arena" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Deathmatch" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Domination" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Freeze Tag" +msgstr "Freeze Tag" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Keepaway" +msgstr "Keepaway" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Key Hunt" +msgstr "Key Hunt" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "Last Man Standing" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexball" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Onslaught" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Race" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "Race CTS" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "Runematch" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Team Deathmatch" + +#: qcsrc/menu/xonotic/util.qc:565 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "@!#%'n Tuba-Werfen" + +#: qcsrc/menu/xonotic/util.qc:583 +msgid "Background:" +msgstr "Hintergrund:" + +#: 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 "Standard" + +#: qcsrc/menu/xonotic/util.qc:596 +msgid "Use default" +msgstr "Standard verwenden" + +#: qcsrc/menu/xonotic/util.qc:616 +msgid "Team Color:" +msgstr "Teamfarbe:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Panel aktivieren" + +#: qcsrc/server/w_crylink.qc:2 +msgid "Crylink" +msgstr "Crylink" + +#: qcsrc/server/w_crylink.qc:645 +#, c-format +msgid "%s succeeded at self-destructing themself with the Crylink" +msgstr "%s hat sich erfolgreich mit der Crylink selbst zerstört" + +#: qcsrc/server/w_crylink.qc:650 +#, c-format +msgid "%s could not hide from %s's Crylink" +msgstr "%s konnte sich nicht vor %ss Crylink verstecken" + +#: qcsrc/server/w_crylink.qc:652 +#, c-format +msgid "%s was too close to %s's Crylink" +msgstr "%s ist %ss Crylink zu nahe getreten" + +#: qcsrc/server/w_crylink.qc:654 +#, c-format +msgid "%s took a close look at %s's Crylink" +msgstr "%s hat %ss Crylink genau unter die Lupe genommen" + +#: qcsrc/server/w_electro.qc:2 +msgid "Electro" +msgstr "Electro" + +#: qcsrc/server/w_electro.qc:503 +#, c-format +msgid "%s could not remember where they put plasma" +msgstr "%s konnte sich nicht erinnern, wo das Plasma lag" + +#: qcsrc/server/w_electro.qc:505 +#, c-format +msgid "%s played with plasma" +msgstr "%s hat mit Plasma gespielt" + +#: qcsrc/server/w_electro.qc:512 +#, c-format +msgid "%s just noticed %s's blue ball" +msgstr "%s hat gerade %ss blauen Ball bemerkt" + +#: qcsrc/server/w_electro.qc:514 +#, c-format +msgid "%s got in touch with %s's blue ball" +msgstr "%s kam in Kontakt mit %ss blauen Ball" + +#: qcsrc/server/w_electro.qc:519 +#, c-format +msgid "%s felt the electrifying air of %s's combo" +msgstr "%s hat gespürt, wie %ss Combo die Luft elektrisierte" + +#: qcsrc/server/w_electro.qc:521 +#, c-format +msgid "%s got too close to %s's blue beam" +msgstr "%s kam zu nah an %ss blauen Strahl" + +#: qcsrc/server/w_electro.qc:523 +#, c-format +msgid "%s was blasted by %s's blue beam" +msgstr "%s wurde von %ss blauen Strahl erwischt" + +#: qcsrc/server/w_fireball.qc:2 +msgid "Fireball" +msgstr "Fireball" + +#: qcsrc/server/w_fireball.qc:392 +#, c-format +msgid "%s forgot about some firemine" +msgstr "%s hat den Platz einer Feuermine vergessen" + +#: qcsrc/server/w_fireball.qc:394 qcsrc/server/w_hlac.qc:223 +#, c-format +msgid "%s should have used a smaller gun" +msgstr "%s hätte eine kleinere Waffe nehmen sollen" + +#: qcsrc/server/w_fireball.qc:401 +#, c-format +msgid "%s tried to catch %s's firemine" +msgstr "%s hat versucht %ss Feuermine zu fangen" + +#: qcsrc/server/w_fireball.qc:403 +#, c-format +msgid "%s fatefully ignored %s's firemine" +msgstr "%s hat tragischerweise %ss Feuermine ignoriert" + +#: qcsrc/server/w_fireball.qc:410 +#, c-format +msgid "%s could not hide from %s's fireball" +msgstr "%s konnte sich nicht vor %ss Feuerball verstecken" + +#: qcsrc/server/w_fireball.qc:412 +#, c-format +msgid "%s saw the pretty lights of %s's fireball" +msgstr "%s hat die hübschen Lichter von %ss Feuerball gesehen" + +#: qcsrc/server/w_fireball.qc:415 +#, c-format +msgid "%s got too close to %s's fireball" +msgstr "%s ist %ss Feuerball zu nahe getreten" + +#: qcsrc/server/w_fireball.qc:417 +#, c-format +msgid "%s tasted %s's fireball" +msgstr "%s hat von %ss Feuerball probiert" + +#: qcsrc/server/w_grenadelauncher.qc:2 +msgid "Mortar" +msgstr "Mortar" + +#: qcsrc/server/w_grenadelauncher.qc:357 +#, c-format +msgid "%s tried out his own grenade" +msgstr "%s wollte wissen, ob seine Granate funktioniert" + +#: qcsrc/server/w_grenadelauncher.qc:359 +#, c-format +msgid "%s detonated" +msgstr "%s verfing sich in der eigenen Detonation" + +#: qcsrc/server/w_grenadelauncher.qc:365 +#, c-format +msgid "%s didn't see %s's grenade" +msgstr "%s hat %ss Granate nicht gesehen" + +#: qcsrc/server/w_grenadelauncher.qc:367 +#, c-format +msgid "%s almost dodged %s's grenade" +msgstr "%s ist fast %ss Granate ausgewichen" + +#: qcsrc/server/w_grenadelauncher.qc:369 +#, c-format +msgid "%s ate %s's grenade" +msgstr "%s nahm %ss Granate in den Mund" + +#: qcsrc/server/w_hagar.qc:2 +msgid "Hagar" +msgstr "Hagar" + +#: qcsrc/server/w_hagar.qc:185 qcsrc/server/w_seeker.qc:523 +#, c-format +msgid "%s played with tiny rockets" +msgstr "%s hat mit kleinen Raketen gespielt" + +#: qcsrc/server/w_hagar.qc:189 +#, c-format +msgid "%s hoped %s's missiles wouldn't bounce" +msgstr "%s hat gehofft, dass %ss Raketen nicht von Wänden abprallen" + +#: qcsrc/server/w_hagar.qc:191 +#, c-format +msgid "%s was pummeled by %s" +msgstr "%s hat sich von %s zerlegen lassen" + +#: qcsrc/server/w_hlac.qc:2 +msgid "Heavy Laser Assault Cannon" +msgstr "Heavy Laser Assault Cannon" + +#: qcsrc/server/w_hlac.qc:225 +#, c-format +msgid "%s was cut down by %s" +msgstr "%s ist von %s niedergeschossen worden" + +#: qcsrc/server/w_hook.qc:2 +msgid "Grappling Hook" +msgstr "Grappling Hook" + +#: 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 "%s hat das Unmögliche geschafft" + +#: qcsrc/server/w_hook.qc:269 +#, c-format +msgid "%s has run into %s's gravity bomb" +msgstr "%s ist in %ss Gravitationsbombe reingelaufen" + +#: qcsrc/server/w_laser.qc:2 +msgid "Laser" +msgstr "Laser" + +#: qcsrc/server/w_laser.qc:285 +#, c-format +msgid "%s lasered themself to hell" +msgstr "%s hat sich in die Hölle gelasert" + +#: qcsrc/server/w_laser.qc:289 +#, c-format +msgid "%s was cut in half by %s's gauntlet" +msgstr "%s ist von %ss Gauntlet halbiert worden" + +#: qcsrc/server/w_laser.qc:291 +#, c-format +msgid "%s was lasered to death by %s" +msgstr "%s ist von %s zu Tode gelasert worden" + +#: qcsrc/server/w_minelayer.qc:2 +msgid "Mine Layer" +msgstr "Mine Layer" + +#: qcsrc/server/w_minelayer.qc:438 qcsrc/server/w_rocketlauncher.qc:480 +#, c-format +msgid "%s exploded" +msgstr "%s ist explodiert" + +#: qcsrc/server/w_minelayer.qc:442 +#, c-format +msgid "%s got too close to %s's mine" +msgstr "%s ist %ss Mine zu nahe getreten" + +#: qcsrc/server/w_minelayer.qc:444 +#, c-format +msgid "%s almost dodged %s's mine" +msgstr "%s ist fast %ss Mine ausgewichen" + +#: qcsrc/server/w_minelayer.qc:446 +#, c-format +msgid "%s stepped on %s's mine" +msgstr "%s ist auf %ss Mine gelatscht" + +#: qcsrc/server/w_minstanex.qc:2 +msgid "MinstaNex" +msgstr "MinstaNex" + +#: qcsrc/server/w_minstanex.qc:259 qcsrc/server/w_nex.qc:226 +#, c-format +msgid "%s has been vaporized by %s" +msgstr "%s hat sich, dank %ss Nex, in Luft aufgelöst" + +#: qcsrc/server/w_nex.qc:2 +msgid "Nex" +msgstr "Nex" + +#: qcsrc/server/w_porto.qc:2 +msgid "Port-O-Launch" +msgstr "Port-O-Launch" + +#: qcsrc/server/w_porto.qc:295 +#, c-format +msgid "%s felt %s doing the impossible to him" +msgstr "%s hat gespürt, wie %s das Unmögliche für ihn getan hat" + +#: qcsrc/server/w_rocketlauncher.qc:2 +msgid "Rocket Launcher" +msgstr "Rocket Launcher" + +#: qcsrc/server/w_rocketlauncher.qc:484 +#, c-format +msgid "%s got too close to %s's rocket" +msgstr "%s ist %ss Rakete zu nahe getreten" + +#: qcsrc/server/w_rocketlauncher.qc:486 +#, c-format +msgid "%s almost dodged %s's rocket" +msgstr "%s ist fast %ss Rakete ausgewichen" + +#: qcsrc/server/w_rocketlauncher.qc:488 +#, c-format +msgid "%s ate %s's rocket" +msgstr "%s hat %ss Rakete in den Mund genommen" + +#: qcsrc/server/w_seeker.qc:2 +msgid "T.A.G. Seeker" +msgstr "T.A.G. Seeker" + +#: qcsrc/server/w_seeker.qc:527 +#, c-format +msgid "%s ran into %s's flac" +msgstr "%s ist in %ss Flac reingerannt" + +#: qcsrc/server/w_seeker.qc:529 +#, c-format +msgid "%s was tagged by %s" +msgstr "%s wurde von %s getaggt" + +#: qcsrc/server/w_shotgun.qc:2 +msgid "Shotgun" +msgstr "Shotgun" + +#: qcsrc/server/w_shotgun.qc:183 +#, c-format +msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun" +msgstr "%2$1 ^7hat %1$s ^7ein wenig mit einer großen Schrotflinte geschlagen" + +#: qcsrc/server/w_shotgun.qc:185 +#, c-format +msgid "%s was gunned by %s" +msgstr "%s ist von %s abgeballert worden" + +#: qcsrc/server/w_sniperrifle.qc:2 +msgid "Sniper Rifle" +msgstr "Sniper Rifle" + +#: qcsrc/server/w_sniperrifle.qc:321 +#, c-format +msgid "%s shot themself automatically" +msgstr "%s hat sich vollautomatisch selbst erschossen" + +#: qcsrc/server/w_sniperrifle.qc:323 +#, c-format +msgid "%s sniped themself somehow" +msgstr "%s hat so scharf geschossen, dass er sich selbst getroffen hat" + +#: qcsrc/server/w_sniperrifle.qc:330 +#, c-format +msgid "%s failed to hide from %s's bullet hail" +msgstr "%s hat es nicht geschafft, sich vor %ss Kugelhagel zu verstecken" + +#: qcsrc/server/w_sniperrifle.qc:332 +#, c-format +msgid "%s died in %s's bullet hail" +msgstr "%s ist in %ss Kugelhagel gefallen" + +#: qcsrc/server/w_sniperrifle.qc:339 +#, c-format +msgid "%s failed to hide from %s's rifle" +msgstr "%s hat es nicht geschafft, sich vor %ss Gewehr zu verstecken" + +#: qcsrc/server/w_sniperrifle.qc:344 +#, c-format +msgid "%s got hit in the head by %s" +msgstr "%s hat ein Loch im Kopf bekommen; schuld war %s" + +#: qcsrc/server/w_sniperrifle.qc:346 qcsrc/server/w_uzi.qc:291 +#, c-format +msgid "%s was sniped by %s" +msgstr "%s ist von Scharfschütze %s getroffen worden" + +#: qcsrc/server/w_tuba.qc:2 +#, c-format +msgid "@!#%'n Tuba" +msgstr "@!#%'n Tuba" + +#: qcsrc/server/w_tuba.qc:260 +#, c-format +msgid "%s hurt his own ears with the @!#%%'n Tuba" +msgstr "" +"%s haben die Ohren geschmerzt von seinem eigenen Spiel auf der @!#%%'n Tuba" + +#: qcsrc/server/w_tuba.qc:264 +#, c-format +msgid "%s died of %s's great playing on the @!#%%'n Tuba" +msgstr "" +"%s ist an seinen Ohrenschmerzen, die von %ss großartigem Spiel auf der @!#" +"%%'n Tuba stammten, gestorben" + +#: qcsrc/server/w_uzi.qc:2 +msgid "Machine Gun" +msgstr "Machine Gun" + +#: qcsrc/server/w_uzi.qc:293 +#, c-format +msgid "%s was riddled full of holes by %s" +msgstr "%s ist von %s durchlöchert worden wie ein Schweizer Käse" + +#~ msgid "Waypoint settings:" +#~ msgstr "Wegpunkt-Einstellungen:" + +#~ msgid "%d/%d" +#~ msgstr "%d/%d" diff --git a/menu.dat.fi.po b/menu.dat.fi.po new file mode 100644 index 000000000..3e39c97d7 --- /dev/null +++ b/menu.dat.fi.po @@ -0,0 +1,2775 @@ +# Xonotic Menu +# Copyright (C) 2011 Team Xonotic +# This file is distributed under the same license as the PACKAGE package. +# Henry 'Exitium' Sanmark <henry.sanmark@gmail.com>, 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: 0.1preview\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-07 07:50+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/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "virhe: %d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Käyttö: menu_cmd_command..., missä mahdollisia komentoja ovat:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " sync - uudelleenlataa kaikki cvar-muuttujat nykyiseen valikkoon" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr " directmenu ITMEM - valitse valikon kohta pääkohdaksi\n" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +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" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "Selainta ei ole alustettu!" + +#: 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/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Esine %d" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "omavalintainen" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4MQC Version tiedot: %s\n" + +#: 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 "Taso %d: %s" + +#: qcsrc/menu/xonotic/cvarlist.c:85 +msgid "will be saved to config.cfg" +msgstr "tallennetaan config.cfg-tiedostoon" + +#: qcsrc/menu/xonotic/cvarlist.c:87 +msgid "will not be saved" +msgstr "ei tallenneta" + +#: qcsrc/menu/xonotic/cvarlist.c:89 +msgid "private" +msgstr "yksityinen" + +#: qcsrc/menu/xonotic/cvarlist.c:91 +msgid "engine setting" +msgstr "pelimoottorin asetus" + +#: qcsrc/menu/xonotic/cvarlist.c:93 +msgid "read only" +msgstr "vain luku" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Tekijät" + +#: 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_firstrun.c:4 +msgid "Welcome" +msgstr "Tervetuloa" + +#: 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_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Tekstin kieli:" + +#: 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_firstrun.c:69 +msgid "Save settings" +msgstr "Tallenna asetukset" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "Ammuspaneeli" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Ammuksien näyttö:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Näytä vain nykyinen ammustyyppi" + +#: 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_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_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Keskustelupaneeli" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "Keskustelun sisältö:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Keskustelun koko" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "Keskustelun kesto:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "Keskustelun piippausääni" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Pelimoottorin tietopaneeli" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Pelimoottorin tiedot:" + +#: 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_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Elämä/panssaripaneeli" + +#: 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_hudpanel_healtharmor.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +msgid "Status bar alignment:" +msgstr "Tilapalkin kohdistus:" + +#: 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_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "Paneelin näkymän asetukset" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +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 +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 +msgid "Color:" +msgstr "Väri:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:599 +msgid "Border size:" +msgstr "Reunan koko:" + +#: 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 +msgid "Test team color in configure mode" +msgstr "Kokeile joukkueen väirä muokaustilassa" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:628 +msgid "Padding:" +msgstr "Pehmustus:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "Näkymän liitäntä:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +msgid "DOCK^Disabled" +msgstr "DOCK^Pois" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +msgid "DOCK^Small" +msgstr "DOCK^Pieni" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +msgid "DOCK^Medium" +msgstr "DOCK^Keskikokoinen" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +msgid "DOCK^Large" +msgstr "DOCK^Suuri" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "Ruudukon asetukset:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Katkaise paneelit ruudukkoon" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Ruudukon koko:" + +#: 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 "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_multiplayer.c:20 +msgid "Demos" +msgstr "Demot" + +#: 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_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Pelityyppi" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Ottelun asetukset" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Aikaraja" + +#: 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_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_create.c:65 +msgid "Player slots:" +msgstr "Pelaajamäärä" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Bottien lukumäärä" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Bottien taitotaso" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "Typerä kone" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "Aloittelija" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "Helppoa kauraa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Helppo voitto" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Voittoon on mahdollisuus" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Kehittynyt" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Ekspertti" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Mestari" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Murhaaja" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "Epäinhimillinen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "Jumalainen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "Muokkaukset..." + +#: 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_multiplayer_create.c:105 +msgid "Map list:" +msgstr "Karttalista" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "Valitse kaikki" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "Poista kaikki valinnat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Aloita moninpeli!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "Lipunryöstöraja" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "Elämät:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "Kierrokset:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Maalit:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "Tapporaja:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "Kehittyneet palvelinasetukset" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Peliasetukset:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "Salli sivustakatsominen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "Uudelleensyntymissuoja:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Pelinopeus:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Joukkuepeliasetukset:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Joukkuevahingon skaala:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Virtuaalinen joukkuevahinko (vain effekti)" + +#: 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_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 valintaa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 valintaa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 valintaa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 valintaa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 valintaa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 valintaa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 valintaa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "Suurempi äänimäärä voittaa vcall" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Kartan tiedot" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "Esineiden täysi sijoittaminen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "Vain MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Otsikko:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Tekijä:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Ominaisuudet:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Pelityypit:" + +#: 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_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Pelaa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "Muokatut pelitilat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "Kaikkien aseiden taistelukenttä" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Suurimman osan aseiden taistelukenttä" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56 +#, 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" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "Köysi" + +#: 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_multiplayer_create_mutators.c:88 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176 +msgid "Vampire" +msgstr "Vampyyri" + +#: 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 "Aseet jäävät" + +#: 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_multiplayer_create_mutators.c:96 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202 +msgid "Jet pack" +msgstr "Rakettireppu" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98 +msgid "MUT^None" +msgstr "MUT^Ei mitään" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Pelityylin muokkaukset:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "Aseiden ja esineiden muokkaukset:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199 +msgid "Grappling hook" +msgstr "Köysi" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215 +msgid "Weapon arenas:" +msgstr "Tietyn aseen taistelukenttä" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "Perinteinen" + +#: 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_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Erikoistaistelukentät" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "Suurin osa aseista" + +#: 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 "Tallenna demoja pelin aikana" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +msgid "Filter:" +msgstr "Suodatin:" + +#: 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_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Aikademo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Liity" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +msgid "SRVS^Empty" +msgstr "SRVS^Tyhjä" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +msgid "SRVS^Full" +msgstr "SRVS^Täynnä" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "Keskeytä" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Osoite:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:65 +msgid "Info..." +msgstr "Tietoa..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 +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_multiplayer_join_serverinfo.c:223 +msgid "required (can't connect)" +msgstr "vaadittu (ei voida yhdistää)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225 +msgid "required (will encrypt)" +msgstr "vaadittu (salauksen purku onnistuu)" + +#: 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_multiplayer_join_serverinfo.c:254 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +msgid "Type:" +msgstr "Tyyppi:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 +msgid "Map:" +msgstr "Kartta:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 +msgid "Gameplay:" +msgstr "Pelitila:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 +msgid "Bots:" +msgstr "Botit:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 +msgid "Mod:" +msgstr "Modi:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 +msgid "Version:" +msgstr "Versio:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "Ping:" +msgstr "Viive:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "CA:" +msgstr "Lipunryöstö (CTF)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Key:" +msgstr "Avain (Key)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 +msgid "Encryption:" +msgstr "Salaus:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "Malli:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "Näkökenttä:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Näytä huojunta:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Tarkennuskerroin:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Tarkennuksen nopeus:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Aseiden asetukset..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "Tähtäin:" + +#: 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_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "Tähtäimen suuruus:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Tähtäimen alpha:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Tähtäimen väri:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Ota keskipiste käyttöön" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Koko:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Osumatesti:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +msgid "HTST^None" +msgstr "HTST^Ei mitään." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "TrueAim" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Viholliset" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Välimatkojen asetukset..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "Mene näkymän muokkaimeen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Pakota hahmojen ulkomuoto samanlaiseksi:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +msgid "MDL^None" +msgstr "MDL^Ei mitään." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +msgid "MDL^Custom" +msgstr "MDL^Omavalintainen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +msgid "MDL^All" +msgstr "MDL^Kaikki" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "Ota ylimitoitettu raakuus pois päältä" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Raajat:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +msgid "GIBS^None" +msgstr "GIBS^Ei mitään" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "GIBS^Vähän" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +msgid "GIBS^Many" +msgstr "GIBS^Paljon" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +msgid "GIBS^Lots" +msgstr "GIBS^Runsaasti" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Vahinkoroiskeet" + +#: 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_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Välimatkat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Show base waypoints" +msgstr "Näytä tukikohtien välimatkat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 +msgid "Waypoint scale:" +msgstr "Välimatkan skaala:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint alpha:" +msgstr "Välimatkojen alpha:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Show names:" +msgstr "Näytä nimet:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 +msgid "Teammates" +msgstr "Oma joukkue" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 +msgid "All players" +msgstr "Kaikki pelaajat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "Aseiden asetukset" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Aseiden prioriteetti:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Ylös" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Alas" + +#: 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_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Vaihda ase automaattisesti poimimisen jälkeen" + +#: 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_playersetup_weapons.c:48 +msgid "Left align" +msgstr "Vasen tasaus" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "Oikea tasaus" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "Käännä näkymä horisontaalisesti" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "Uutiset" + +#: 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_quit.c:4 +msgid "Quit" +msgstr "Lopeta" + +#: 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_quit.c:20 +msgid "Yes" +msgstr "Kyllä" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "Ei" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Asetukset" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Syöte" + +#: qcsrc/menu/xonotic/dialog_settings.c:19 +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +msgid "Video" +msgstr "Video" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Effektit" + +#: qcsrc/menu/xonotic/dialog_settings.c:21 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:4 +msgid "Audio" +msgstr "Ääni" + +#: qcsrc/menu/xonotic/dialog_settings.c:22 +#: qcsrc/menu/xonotic/dialog_settings_network.c:4 +msgid "Network" +msgstr "Verkko" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Sekalainen" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "Pääkanava:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Musiikki:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +msgid "VOL^Ambient:" +msgstr "VOL^Ympäröivä:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Tietoja:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Esineet:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Kipu:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Pelaaja:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Laukaukset:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Ääni:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Aseet:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Tiheys:" + +#: 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 "Kanavat:" + +#: 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 "" + +#: 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 "Vaihda stereoäänilähteiden paikkaa" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Kuulokeystävällinen tila" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Tilanneäänet:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +msgid "VOCS^None" +msgstr "VOCS^Ei mitään" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +msgid "VOCS^Taunts" +msgstr "VOCS^Huudahdukset" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +msgid "VOCS^All" +msgstr "VOCS^Kaikki" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Huudahduksen kantama" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +msgid "RNG^Very short" +msgstr "RNG^Hyvin lyhyt" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +msgid "RNG^Short" +msgstr "RNG^Lyhyt" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +msgid "RNG^Normal" +msgstr "RNG^Normaali" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +msgid "RNG^Long" +msgstr "RNG^Pitkä" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +msgid "RNG^Full" +msgstr "RNG^Täysi" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Automaattiset huudahdukset" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Aikavaroitus:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +msgid "WRN^None" +msgstr "WRN^Ei mitään" + +#: 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/menu/xonotic/dialog_settings_audio.c:170 +msgid "WRN^Both" +msgstr "WRN^Molemmat" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Osumailmaisin" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Valikon äänet" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Laadun esiasetus:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +msgid "PRE^OMG!" +msgstr "PRE^JUMALAUTA!" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:42 +msgid "PRE^Low" +msgstr "PRE^Matala" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +msgid "PRE^Medium" +msgstr "PRE^Keskitaso" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +msgid "PRE^Normal" +msgstr "PRE^Normaali" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +msgid "PRE^High" +msgstr "PRE^Korkea" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:46 +msgid "PRE^Ultra" +msgstr "PRE^Hyvin korkea" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:48 +msgid "PRE^Ultimate" +msgstr "PRE^Äärimmäinen" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "Geometriset yksityiskohdat:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +msgid "DET^Lowest" +msgstr "DET^Matalin" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +msgid "DET^Low" +msgstr "DET^Matala" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +msgid "DET^Normal" +msgstr "DET^Normaali" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +msgid "DET^Good" +msgstr "DET^Hyvä" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +msgid "DET^Best" +msgstr "DET^Paras" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +msgid "DET^Insane" +msgstr "DET^Sekopäinen" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:62 +msgid "Antialiasing:" +msgstr "Reunojenpehmennys (Antialiasing):" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:64 +msgid "AA^Disabled" +msgstr "AA^Pois päältä" + +#: 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 "Tekstuurien tarkkuus:" + +#: 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^Matalin" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +msgid "RES^Low" +msgstr "RES^Matala" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +msgid "RES^Normal" +msgstr "RES^Normaali" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +msgid "RES^Good" +msgstr "RES^Hyvä" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +msgid "RES^Best" +msgstr "RES^Paras" + +#: 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_settings_effects.c:100 +msgid "Anisotropy:" +msgstr "Anisotropia:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:102 +msgid "ANISO^Disabled" +msgstr "ANISO^Pois päältä" + +#: 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 "Pienosien laatu:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Pienosien etäisyys:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "Siirtokuvat" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "Etäisyys:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Aika:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "Käytä valaistuksia" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:133 +msgid "Deluxe mapping" +msgstr "Loistokartoitus" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "Kiilto" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "Vastapainoinen kartoitus" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "Keveä kartoitus" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:143 +msgid "Reflections:" +msgstr "Heijastukset:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Sumea" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +msgid "REFL^Good" +msgstr "REFL^Hyvä" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Terävä" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Näytä pinnat" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Ei dynaamista valaistusta" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Väläytä blend approximation" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Reaaliaikainen dynaaminen valaitus" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "Varjot" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "Reaaliaikainen ympäristön valaistus" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Käytä normaaleja karttoja" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "Pehmeät varjot" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "Valokehät" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:174 +msgid "Use Occlusion Queries" +msgstr "Säätele grafiikkapiirron osia (Occlusion Query)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:176 +msgid "Bloom" +msgstr "Hehku" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:178 +msgid "High Dynamic Range (HDR)" +msgstr "High Dynamic Range (HDR)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:182 +msgid "Motion blur:" +msgstr "Liikkeestä johtuva sumeus:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:188 +msgid "Damage blur:" +msgstr "Vahingosta johtuva sumaus:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Näppäimet" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Vaihda näppäin..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Muokkaa..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Herkkyys:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "Käyttöliittymän hiiren nopeus:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Hiiren suodatin" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Käännä hiiren suunta" + +#: 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_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_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "\"avaa komentorivi\" myös sulkee" + +#: 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_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Komento painaessa:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Komento painamisen jälkeen:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Tallenna" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Peruuta" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "Päävalikon ulkoasu:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Näytä nykyinen kellonaika" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Näytä nykyinen päivämäärä" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "Näytä ruudunpäivitysnopeus (FPS)" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Nopeusmittari" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "qu/s (kätketty)" + +#: 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 "knots" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Näytä kiihtyvyysmittari" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Kiihtyvyysmittarin skaala:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Minimoi syötteen viive" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Edistyneet asetukset" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Cvar suodatin" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Asetus:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Arvo:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 +msgid "Description:" +msgstr "Kuvaus:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Asiakasohjelman liikkeen ennustus" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Näytä verkkograafi" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Verkon nopeus:" + +#: 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 "Hidas ASL" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:38 +msgid "Fast ADSL" +msgstr "Nopea ADSL" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:39 +msgid "Broadband" +msgstr "Laajakaista" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Vastaanottopaketit /s:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "HTTP lataukset:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Lataukset:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Nopeus (kb/s)" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "Asiakkaan UDP portti" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Näytön tarkkuus:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Kirjainkoko/käyttöliittymän koko:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +msgid "SZ^Unreadable" +msgstr "SZ^Miltein näkymätön" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +msgid "SZ^Tiny" +msgstr "SZ^Pikkuruinen" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +msgid "SZ^Little" +msgstr "SZ^Hyvin pieni" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +msgid "SZ^Small" +msgstr "SZ^Pieni" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +msgid "SZ^Medium" +msgstr "SZ^Keskikokoinen" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +msgid "SZ^Large" +msgstr "SZ^Suuri" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +msgid "SZ^Huge" +msgstr "SZ^Valtava" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +msgid "SZ^Gigantic" +msgstr "SZ^Jättiläismäinen" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +msgid "SZ^Colossal" +msgstr "SZ^Massiivinen" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "Värisävy:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "Kokoruutu" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "VSYNC" + +#: 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_settings_video.c:52 +msgid "Use GLSL to handle color control" +msgstr "Käytä GLSL:ää värien hallinnassa" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:56 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Vertex Buffer Object (VBO)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +msgid "VBO^Off" +msgstr "VBO^Pois" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:60 +msgid "Vertices, some Tris (compatible)" +msgstr "Vertices, jonkun verran Tris (yhteensopivin)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices" +msgstr "Vertices" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:64 +msgid "Vertices and Triangles" +msgstr "Vertices ja Triangles" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "Depth first:" +msgstr "Syvyys ensin (Depth First):" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +msgid "DF^Disabled" +msgstr "DF^Pois" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:70 +msgid "DF^World" +msgstr "DF^Maailma" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:71 +msgid "DF^All" +msgstr "DF^Kaikki" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Disable multithreaded OpenGL" +msgstr "Ota monisäkeinen OpenGL pois päältä" + +#: 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_settings_video.c:80 +msgid "Brightness:" +msgstr "Kirkkaus:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:83 +msgid "Contrast:" +msgstr "Kontrasti:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:86 +msgid "Gamma:" +msgstr "Gamma:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:89 +msgid "Contrast boost:" +msgstr "Kontrastin lisäys:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:92 +msgid "Saturation:" +msgstr "Kylläisyys:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:98 +msgid "LIT^Ambient:" +msgstr "LIT^Ympäröivä" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:101 +msgid "Intensity:" +msgstr "Intensiivisyys:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Yksinpeli" + +#: 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_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Aloita yksinpeli!" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Voittaja" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Joukkueen valinta" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "liity 'parhaimpaan' joukkueeseen (automaattisesti)'" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "punainen" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "sininen" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "keltainen" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "pinkki" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "katso sivusta" + +#: 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/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/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "%s Xonotic-palvelin" + +#: 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/playermodel.c:174 +msgid "<no model found>" +msgstr "<mallia ei löytynyt>" + +#: qcsrc/menu/xonotic/serverlist.c:360 +msgid "Remove" +msgstr "Poista" + +#: qcsrc/menu/xonotic/serverlist.c:362 +msgid "Bookmark" +msgstr "Kirjanmerkki" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Ping" +msgstr "Viive" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Host name" +msgstr "Palvelimen nimi" + +#: qcsrc/menu/xonotic/serverlist.c:520 +msgid "Map" +msgstr "Kartta" + +#: qcsrc/menu/xonotic/serverlist.c:521 +msgid "Type" +msgstr "Tyyppi" + +#: qcsrc/menu/xonotic/serverlist.c:522 +msgid "Players" +msgstr "Pelaajat" + +#: 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/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/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: 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/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/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "virhe: vastaanotettiin HTML päivitystiedotteen asemesta\n" + +#: 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/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/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "" +"Luodaan automaattisesti karttatietoja vastikään lisätyille kartoille..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "Päivitä versioon %s nyt!" + +#: 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/util.qc:531 +msgid "Arena" +msgstr "Areena" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Rynnäkkö (Assault)" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Lipunryöstö (CTF)" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Klaaniareena (Clan Arena)" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Mättö (Deathmatch)" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Hallinta (Domination)" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Freeze Tag" +msgstr "Pakkashippa (Freeze Tag)" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Keepaway" +msgstr "Pakomatka (Keepaway)" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Key Hunt" +msgstr "Avaimenmetsästys (Key Hunt)" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "Viimeiseen mieheen (Last Man Standing)" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexpallo (Nexball)" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Suurtaistelu (Onslaught)" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Kilpailu (RACE)" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "Kilpailu CTS" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "Riimu-ottelu (Runematch)" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Joukkuemättö (Team Deatchmatch)" + +#: qcsrc/menu/xonotic/util.qc:565 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "Perkeleen tuubanheitto!" + +#: qcsrc/menu/xonotic/util.qc:583 +msgid "Background:" +msgstr "Tausta:" + +#: 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/util.qc:596 +msgid "Use default" +msgstr "Käytä perusasetusta" + +#: qcsrc/menu/xonotic/util.qc:616 +msgid "Team Color:" +msgstr "Joukkueen väri" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Ota paneeli käyttöön" + +#: qcsrc/server/w_crylink.qc:2 +msgid "Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:645 +#, c-format +msgid "%s succeeded at self-destructing themself with the Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:650 +#, c-format +msgid "%s could not hide from %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:652 +#, c-format +msgid "%s was too close to %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:654 +#, c-format +msgid "%s took a close look at %s's Crylink" +msgstr "" + +#: qcsrc/server/w_electro.qc:2 +msgid "Electro" +msgstr "" + +#: qcsrc/server/w_electro.qc:503 +#, c-format +msgid "%s could not remember where they put plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:505 +#, c-format +msgid "%s played with plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:512 +#, c-format +msgid "%s just noticed %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:514 +#, c-format +msgid "%s got in touch with %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:519 +#, c-format +msgid "%s felt the electrifying air of %s's combo" +msgstr "" + +#: qcsrc/server/w_electro.qc:521 +#, c-format +msgid "%s got too close to %s's blue beam" +msgstr "" + +#: qcsrc/server/w_electro.qc:523 +#, c-format +msgid "%s was blasted by %s's blue beam" +msgstr "" + +#: qcsrc/server/w_fireball.qc:2 +#, fuzzy +msgid "Fireball" +msgstr "Nexpallo (Nexball)" + +#: qcsrc/server/w_fireball.qc:392 +#, c-format +msgid "%s forgot about some firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:394 qcsrc/server/w_hlac.qc:223 +#, c-format +msgid "%s should have used a smaller gun" +msgstr "" + +#: qcsrc/server/w_fireball.qc:401 +#, c-format +msgid "%s tried to catch %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:403 +#, c-format +msgid "%s fatefully ignored %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:410 +#, c-format +msgid "%s could not hide from %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:412 +#, c-format +msgid "%s saw the pretty lights of %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:415 +#, c-format +msgid "%s got too close to %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:417 +#, c-format +msgid "%s tasted %s's fireball" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:2 +msgid "Mortar" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:357 +#, c-format +msgid "%s tried out his own grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:359 +#, c-format +msgid "%s detonated" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:365 +#, c-format +msgid "%s didn't see %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:367 +#, c-format +msgid "%s almost dodged %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:369 +#, c-format +msgid "%s ate %s's grenade" +msgstr "" + +#: qcsrc/server/w_hagar.qc:2 +msgid "Hagar" +msgstr "" + +#: qcsrc/server/w_hagar.qc:185 qcsrc/server/w_seeker.qc:523 +#, c-format +msgid "%s played with tiny rockets" +msgstr "" + +#: qcsrc/server/w_hagar.qc:189 +#, c-format +msgid "%s hoped %s's missiles wouldn't bounce" +msgstr "" + +#: qcsrc/server/w_hagar.qc:191 +#, c-format +msgid "%s was pummeled by %s" +msgstr "" + +#: qcsrc/server/w_hlac.qc:2 +msgid "Heavy Laser Assault Cannon" +msgstr "" + +#: qcsrc/server/w_hlac.qc:225 +#, c-format +msgid "%s was cut down by %s" +msgstr "" + +#: qcsrc/server/w_hook.qc:2 +#, fuzzy +msgid "Grappling Hook" +msgstr "Köysi" + +#: 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/server/w_hook.qc:269 +#, c-format +msgid "%s has run into %s's gravity bomb" +msgstr "" + +#: qcsrc/server/w_laser.qc:2 +msgid "Laser" +msgstr "" + +#: qcsrc/server/w_laser.qc:285 +#, c-format +msgid "%s lasered themself to hell" +msgstr "" + +#: qcsrc/server/w_laser.qc:289 +#, c-format +msgid "%s was cut in half by %s's gauntlet" +msgstr "" + +#: qcsrc/server/w_laser.qc:291 +#, c-format +msgid "%s was lasered to death by %s" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:2 +#, fuzzy +msgid "Mine Layer" +msgstr "Yksinpeli" + +#: qcsrc/server/w_minelayer.qc:438 qcsrc/server/w_rocketlauncher.qc:480 +#, c-format +msgid "%s exploded" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:442 +#, c-format +msgid "%s got too close to %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:444 +#, c-format +msgid "%s almost dodged %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:446 +#, c-format +msgid "%s stepped on %s's mine" +msgstr "" + +#: qcsrc/server/w_minstanex.qc:2 +#, fuzzy +msgid "MinstaNex" +msgstr "MinstaGib" + +#: qcsrc/server/w_minstanex.qc:259 qcsrc/server/w_nex.qc:226 +#, c-format +msgid "%s has been vaporized by %s" +msgstr "" + +#: qcsrc/server/w_nex.qc:2 +#, fuzzy +msgid "Nex" +msgstr "Nexpallo (Nexball)" + +#: qcsrc/server/w_porto.qc:2 +msgid "Port-O-Launch" +msgstr "" + +#: qcsrc/server/w_porto.qc:295 +#, c-format +msgid "%s felt %s doing the impossible to him" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:2 +msgid "Rocket Launcher" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:484 +#, c-format +msgid "%s got too close to %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:486 +#, c-format +msgid "%s almost dodged %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:488 +#, c-format +msgid "%s ate %s's rocket" +msgstr "" + +#: qcsrc/server/w_seeker.qc:2 +msgid "T.A.G. Seeker" +msgstr "" + +#: qcsrc/server/w_seeker.qc:527 +#, c-format +msgid "%s ran into %s's flac" +msgstr "" + +#: qcsrc/server/w_seeker.qc:529 +#, c-format +msgid "%s was tagged by %s" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:2 +#, fuzzy +msgid "Shotgun" +msgstr "Laukaukset:" + +#: qcsrc/server/w_shotgun.qc:183 +#, c-format +msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:185 +#, c-format +msgid "%s was gunned by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:2 +msgid "Sniper Rifle" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:321 +#, c-format +msgid "%s shot themself automatically" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:323 +#, c-format +msgid "%s sniped themself somehow" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:330 +#, c-format +msgid "%s failed to hide from %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:332 +#, c-format +msgid "%s died in %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:339 +#, c-format +msgid "%s failed to hide from %s's rifle" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:344 +#, c-format +msgid "%s got hit in the head by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:346 qcsrc/server/w_uzi.qc:291 +#, c-format +msgid "%s was sniped by %s" +msgstr "" + +#: qcsrc/server/w_tuba.qc:2 +#, fuzzy, c-format +msgid "@!#%'n Tuba" +msgstr "Perkeleen tuubanheitto!" + +#: qcsrc/server/w_tuba.qc:260 +#, c-format +msgid "%s hurt his own ears with the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_tuba.qc:264 +#, c-format +msgid "%s died of %s's great playing on the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_uzi.qc:2 +msgid "Machine Gun" +msgstr "" + +#: qcsrc/server/w_uzi.qc:293 +#, c-format +msgid "%s was riddled full of holes by %s" +msgstr "" + +#~ msgid "%d/%d" +#~ msgstr "%d/%d" + +#~ msgid "" +#~ "Please answer a few initial questions to enhance the game experience." +#~ msgstr "" +#~ "Ole hyvä ja vastaa muutamaan alustavaan kysymykseen parantaaksesi " +#~ "pelikokemustasi." + +#~ msgid "Waypoint settings:" +#~ msgstr "Välimatkojen asetukset:" diff --git a/menu.dat.fr.po b/menu.dat.fr.po new file mode 100644 index 000000000..72dd5c75b --- /dev/null +++ b/menu.dat.fr.po @@ -0,0 +1,2784 @@ +# Xonotic French Translation. +# Copyright (C) 2011 +# This file is distributed under the same license as the PACKAGE package. +# Calinou <hugohachel@gmail.com>, 2011. +# +#, fuzzy +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" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "erreur: le status est %d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Utilisation: menu_cmd commande..., les commandes possibles sont:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " sync - recharge toutes les variables sur la page actuelle\n" + +#: qcsrc/menu/gamecommand.qc:67 +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" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "erreur de création du curl handle" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +"Commande invalide. Pour une liste des commandes supportées, tapez menu_cmd " +"help (dans la console).\n" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "Navigateur non initialisé !" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "" +"REMARQUE: le texte label %s est trop large pour un label, condensé par le " +"facteur %f\n" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Objet %d" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "personalisé" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4MQC Build information : %s (français)\n" + +#: 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 "Niveau %d: %s" + +#: qcsrc/menu/xonotic/cvarlist.c:85 +msgid "will be saved to config.cfg" +msgstr "sera sauvegardé vers config.cfg" + +#: qcsrc/menu/xonotic/cvarlist.c:87 +msgid "will not be saved" +msgstr "ne sera pas sauvegardé vers config.cfg" + +#: qcsrc/menu/xonotic/cvarlist.c:89 +msgid "private" +msgstr "privé" + +#: qcsrc/menu/xonotic/cvarlist.c:91 +msgid "engine setting" +msgstr "paramètre moteur" + +#: qcsrc/menu/xonotic/cvarlist.c:93 +msgid "read only" +msgstr "lecture seule" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Crédits" + +#: qcsrc/menu/xonotic/dialog_credits.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:269 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c: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_firstrun.c:4 +msgid "Welcome" +msgstr "Bienvenue" + +#: 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 "" +"Bienvenue sur Xonotic, veuillez séléctionner votre langue et entrer votre " +"pseudonyme pour commencer. Vous pouvez changer ces options plus tard dans " +"les menus." + +#: qcsrc/menu/xonotic/dialog_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Langue écran:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:47 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:40 +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:39 +msgid "Name:" +msgstr "Pseudonyme:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:69 +msgid "Save settings" +msgstr "Sauvegarder" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "Panneau de munitions" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Affichage munitions:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Ne montrer que le type de munition actuel" + +#: 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 "Gauche" + +#: 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 "Droite" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Panneau de Chat" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "Entrées Chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Taille du Chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "Durée du Chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "Sons Chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Panneau Info Moteur" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Info Moteur:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "Utiliser un algorithme pour calculer les FPS" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Panneau Santé/Armure" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +msgid "Enable status bar" +msgstr "Activer jauges" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +msgid "Status bar alignment:" +msgstr "Alignement jauges:" + +#: 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 "Intérieur" + +#: 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 "Extérieur" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +msgid "Icon alignment:" +msgstr "Alignement icônes:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Échanger positions Santé/Armure" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "Panneau d'Information" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "Messages d'Info:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "Échanger alignement" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Panneau d'Icônes de Mode" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "Panneau de Notifications" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "Notifications:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "Montrer notifications sur la console" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "Inverser l'ordre de notification" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "Durée d'une entrée:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "Temps d'effacement d'une entrée:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Panneau des Pouvoirs" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "Échanger les positions Force/Bouclier" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "Panneau Touches Pressées" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "Panneau désactivé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "Paneau 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é" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "Aspect forcé:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Chronomètre Course" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "Panneau Mini-carte" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "Panneau activé en Équipe" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29 +msgid "Radar:" +msgstr "Mini-carte:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:32 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:43 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:151 +#: qcsrc/menu/xonotic/util.qc:608 +msgid "Alpha:" +msgstr "Opacité:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36 +msgid "Rotation:" +msgstr "Rotation:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "Direction marche" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "Ouest" + +#: 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 "Échelle:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50 +msgid "Zoom mode:" +msgstr "Mode de Zoom:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52 +msgid "Zoomed in" +msgstr "Zoomé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53 +msgid "Zoomed out" +msgstr "Dézoomé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "Toujours Zoomé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55 +msgid "Never zoomed" +msgstr "Toujours Dézoomé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4 +msgid "Score Panel" +msgstr "Tableau des scores" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "Chronomètre" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22 +msgid "Timer:" +msgstr "Chronomètre:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25 +msgid "Show elapsed time" +msgstr "Montrer temps passé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "Panneau de Vote" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "Opacité après vote:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Panneau d'armes" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Effacer après:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 +msgid "Never" +msgstr "Jamais" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:28 +#, c-format +msgid "%ds" +msgstr "%dsec." + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:32 +msgid "Fade effect:" +msgstr "Effet d'effacement:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +msgid "EF^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Glisse" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Opacité" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "Icônes d'armes:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "Montrer le numéro d'arme:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44 +msgid "SHOWAS^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45 +msgid "Number" +msgstr "Numéro" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46 +msgid "Bind" +msgstr "Touche" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Monter la précision" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Montrer barre de monitions" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Couleur barre de munitions:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Opacité barre de munitions:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "Configuration Interface" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "Fond du Panneau par défaut:" + +#: 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 +msgid "Disable" +msgstr "Désactiver" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:591 +msgid "Color:" +msgstr "Couleur:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:599 +msgid "Border size:" +msgstr "Taille des bords:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +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" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:628 +msgid "Padding:" +msgstr "Ajustement:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "Contour interface:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +#, fuzzy +msgid "DOCK^Disabled" +msgstr "Désactivé" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +#, fuzzy +msgid "DOCK^Small" +msgstr "Petit" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +#, fuzzy +msgid "DOCK^Medium" +msgstr "Moyen" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +#, fuzzy +msgid "DOCK^Large" +msgstr "Grand" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "Paramètres grille:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Coller paneaux sur la grille" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Taille de grille:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:103 +msgid "X:" +msgstr "Hori.:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:109 +msgid "Y:" +msgstr "Vert.:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:117 +msgid "Exit setup" +msgstr "Sauvegarder et quitter" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Multijoueur" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Serveurs" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5 +msgid "Create" +msgstr "Créer" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Vidéos" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5 +msgid "Player Setup" +msgstr "Paramètres Joueur" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Mode de jeu:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Paramètres match:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Limite de temps:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "Utiliser le paramètre de carte" + +#: 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 "Limite de points:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "Nombre de joueurs max.:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Nombre de robots:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Difficulté robot:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "Nul" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "Jeu d'enfant" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "Très Facile" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Facile" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Assez Facile" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Avancé" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Expert" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Professionel" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Assassin" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "Inhumain" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "Dieu" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "Spéciales..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:84 +msgid "Advanced settings..." +msgstr "Paramètres avancés..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105 +msgid "Map list:" +msgstr "Liste de cartes:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "Tout séléctionner" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "Ne rien séléctionner" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Démarrer!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "Limite de captures:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "Vies:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "Tours:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Buts:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "Limite de tués:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "Paramètres serveur avancés" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Paramètres jeu" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "Autoriser les spectateurs" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "Bouclier de départ:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Vitesse de jeu:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Paramètres Jeu d'équipe:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Facteur Dégâts équipiers:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Dégâts équipiers virtuels (seulement effets)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "Pénalité Dégâts équipiers:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "Pénalité Dégâts équipiers virtuelle (seulement effets)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "Équipes:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "Vote carte suivante:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "Pas de vote" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "2 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 choix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "Majorité 51% pour gagner le vote" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Information carte:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "Objets présents" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "MinstaGib seulement" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Titre:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Auteur:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Fonctions:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Modes de jeux:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 +msgid "Close" +msgstr "Fermer" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Jouer" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "Spéciales" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "Toutes les armes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Beaucoup d'armes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56 +#, c-format +msgid "%s Arena" +msgstr "Arène de %s" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167 +msgid "Dodging" +msgstr "Esquives" + +#: 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 "Roquettes volantes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "Pas d'armes au début" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "Gravité basse" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170 +msgid "Cloaked" +msgstr "Joueurs transparents" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "Grappin" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173 +msgid "Midair" +msgstr "Midair" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176 +msgid "Vampire" +msgstr "Vampire" + +#: 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 "Armes infinies" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "Perte de sang" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202 +msgid "Jet pack" +msgstr "Jet pack" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98 +msgid "MUT^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Spéciales Mode de jeu:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "Spéciales Armes et Objets:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199 +msgid "Grappling hook" +msgstr "Grappin" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215 +msgid "Weapon arenas:" +msgstr "Arènes d'armes:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "Régulier (pas d'Arène)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "avec le laser" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Arènes Spéciales:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "Beaucoup d'armes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4 +msgid "Demo" +msgstr "Vidéo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28 +msgid "Record demos while playing" +msgstr "Auto-enregistrement des Vidéos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +msgid "Filter:" +msgstr "Recherche:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:33 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:29 +#: qcsrc/menu/xonotic/dialog_settings_input.c:41 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:24 +msgid "Clear" +msgstr "Effacer" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Test Performance" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Joindre" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +msgid "SRVS^Empty" +msgstr "Vide" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +msgid "SRVS^Full" +msgstr "Tout" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "Pause" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Adresse:" + +#: 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:317 +msgid "Join!" +msgstr "Joindre !" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "Information Serveur" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:115 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:116 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:189 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199 +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 "paramètres modifiés: %d" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 +msgid "Official settings" +msgstr "Paramètres Officiels" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197 +msgid "N/A (can't connect)" +msgstr "N/A (ne peut pas se connecter)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "not supported (can't connect)" +msgstr "non supporté (ne peut pas se connecter)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "not supported (won't encrypt)" +msgstr "non supporté (pas de cryptage)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "supported (will encrypt)" +msgstr "supporté (cryptage)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "supported (won't encrypt)" +msgstr "supporté (pas de cryptage)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "requested (will encrypt)" +msgstr "démandé (cryptage)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "requested (won't encrypt)" +msgstr "démandé (pas de cryptage)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223 +msgid "required (can't connect)" +msgstr "nécessaire (ne peut pas se connecter)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225 +msgid "required (will encrypt)" +msgstr "nécessaire (cryptage)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:246 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:269 +msgid "Players:" +msgstr "Joueurs:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:254 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +msgid "Type:" +msgstr "Type:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 +msgid "Map:" +msgstr "Carte:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 +msgid "Gameplay:" +msgstr "Mode:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 +msgid "Bots:" +msgstr "Robots:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 +msgid "Mod:" +msgstr "Modification:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 +msgid "Version:" +msgstr "Version:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "Ping:" +msgstr "Latence:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "CA:" +msgstr "CA:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Key:" +msgstr "Clé:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 +msgid "Encryption:" +msgstr "Cryptage:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "Personnage:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "Champ de vision:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Caméra marche:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Facteur de Zoom:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Vitesse de Zoom:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Paramètres armes..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "Viseur:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143 +msgid "Per weapon" +msgstr "Par arme" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "Taille viseur:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Opacité viseur:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Couleur viseur:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Activer point central" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Taille:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Détection toucher:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +msgid "HTST^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "TrueAim" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Enemis" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Paramètres Waypoints..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "Éditer l'interface" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Forcer personnages:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +msgid "MDL^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +msgid "MDL^Custom" +msgstr "Personnalisé" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +msgid "MDL^All" +msgstr "Tout" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "Désactiver effets gore" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Gibs:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +msgid "GIBS^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "Quelques" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +msgid "GIBS^Many" +msgstr "Plusieurs" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +msgid "GIBS^Lots" +msgstr "Beaucoup" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Effet santé faible:" + +#: 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 "Appliquer maintenant" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Waypoints" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Show base waypoints" +msgstr "Montrer les Waypoints de drapeau" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 +msgid "Waypoint scale:" +msgstr "Taille des Waypoints:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint alpha:" +msgstr "Opacité Waypoints:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Show names:" +msgstr "Montrer les noms:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 +msgid "Teammates" +msgstr "Équipiers" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 +msgid "All players" +msgstr "Tous les joueurs" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "Paramètres d'armes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Liste de priorité armes:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Haut" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Bas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "Utiliser la liste de priorité pour changer les armes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Changer d'arme en prenant une arme meilleure" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "Afficher l'arme à la première personne" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "À gauche" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "À droite" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "Vue Mirroir" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "News" + +#: 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_quit.c:4 +msgid "Quit" +msgstr "Quitter" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "Voulez-vous vraiment quitter ?" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "Oui" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "Non" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Préférences" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Contrôles" + +#: qcsrc/menu/xonotic/dialog_settings.c:19 +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +msgid "Video" +msgstr "Vidéo" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Graphiques" + +#: 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 "Réseau" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Autres" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "Général:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Musique:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +#, fuzzy +msgid "VOL^Ambient:" +msgstr "Ambience:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Information:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Objets:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Douleur:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Joueur:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Tirs:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Voix:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Armes:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Fréquence:" + +#: 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 "Canaux:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:117 +msgid "Mono" +msgstr "Mono" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:118 +msgid "Stereo" +msgstr "Stéréo" + +#: 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 "Échanger les canaux Stéréo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Mode casque audio" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Voix personnages:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +msgid "VOCS^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +msgid "VOCS^Taunts" +msgstr "Voix" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +msgid "VOCS^All" +msgstr "Tout" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Distance voix:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +msgid "RNG^Very short" +msgstr "Très court" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +msgid "RNG^Short" +msgstr "Court" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +msgid "RNG^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +msgid "RNG^Long" +msgstr "Long" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +msgid "RNG^Full" +msgstr "Tout" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Voix automatiques" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Avertissement temps:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +msgid "WRN^None" +msgstr "Aucun" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:168 +msgid "1 minute" +msgstr "1 minute" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:169 +msgid "5 minutes" +msgstr "5 minutes" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:170 +msgid "WRN^Both" +msgstr "Les deux" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Son tir réussi" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Sons du menu" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Qualité effets:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +msgid "PRE^OMG!" +msgstr "OMG!" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:42 +msgid "PRE^Low" +msgstr "Bas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +msgid "PRE^Medium" +msgstr "Moyen" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +msgid "PRE^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +msgid "PRE^High" +msgstr "Élevé" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:46 +msgid "PRE^Ultra" +msgstr "Très Élevé" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:48 +msgid "PRE^Ultimate" +msgstr "Ultime" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "Détail géométrie:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +msgid "DET^Lowest" +msgstr "Très Bas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +msgid "DET^Low" +msgstr "Bas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +msgid "DET^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +msgid "DET^Good" +msgstr "Bon" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +msgid "DET^Best" +msgstr "Élevé" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +msgid "DET^Insane" +msgstr "Extrême" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:62 +msgid "Antialiasing:" +msgstr "Anticrénelage:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:64 +msgid "AA^Disabled" +msgstr "Désactivé" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:65 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:103 +msgid "2x" +msgstr "2x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:66 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:104 +msgid "4x" +msgstr "4x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:70 +msgid "Texture resolution:" +msgstr "Qualité textures:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:73 +msgid "RES^Leet" +msgstr "Leet" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:74 +msgid "RES^Lowest" +msgstr "Très Bas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +msgid "RES^Low" +msgstr "Bas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +msgid "RES^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +msgid "RES^Good" +msgstr "Bon" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +msgid "RES^Best" +msgstr "Élevé" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "Éviter la compression rapide" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:100 +msgid "Anisotropy:" +msgstr "Filtrage Anistrope:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:102 +msgid "ANISO^Disabled" +msgstr "Désactivé" + +#: 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é particules:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Distance max. particules:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "Marques impacts" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "Distance max.:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Temps:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "Utiliser les lightmaps" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:133 +msgid "Deluxe mapping" +msgstr "Textures Deluxe" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "Brillance textures" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "Textures relief" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "Textures relief avancé" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:143 +msgid "Reflections:" +msgstr "Réflections:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Flou" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +msgid "REFL^Good" +msgstr "Bon" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Net" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Textures unies" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Pas de lumières dynamiques" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Lumières dynamiques rapides" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Lumières dynamiques en temps réel" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "Ombres" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "Lumières carte en temps réel" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Lumières Deluxe" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "Ombres avancées" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "Brillance Lumière" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:174 +msgid "Use Occlusion Queries" +msgstr "Utiliser l'Occlusion du rendu" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:176 +msgid "Bloom" +msgstr "Effets d'éblouissement" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:178 +msgid "High Dynamic Range (HDR)" +msgstr "High Dynamic Range (HDR)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:182 +msgid "Motion blur:" +msgstr "Flou de vitesse:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:188 +msgid "Damage blur:" +msgstr "Flou de dégâts:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Contrôles:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Changer touche..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Éditer..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Senstitivité:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "Vitesse souris menus:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Filtre Souris" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Inverser souris (axe Y)" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "Utiliser une manette" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "Désactiver l'accélération souris de l'OS" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +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:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Commande quand appuyée:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Commande quand relachée:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Sauvegarder" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Annuler" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "Apparences menu:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Montrer l'heure" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Montrer la date" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "Montrer les Images Par Seconde" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Speedomètre" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "qu/s (caché)" + +#: 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 "noeuds" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Montrer l'accéléromètre" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Taille accéléromètre:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Minimiser la latence des contrôles" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Paramètres avancés" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Recherche de commandes:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Paramètre:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Valeur:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 +msgid "Description:" +msgstr "Description:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Prédiction des mouvements joueur" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Montrer le netgraphe" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Vitesse réseau:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:35 +msgid "56k" +msgstr "56k" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:36 +msgid "ISDN" +msgstr "ISDN" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:37 +msgid "Slow ADSL" +msgstr "ADSL lent" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:38 +msgid "Fast ADSL" +msgstr "ADSL rapide" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:39 +msgid "Broadband" +msgstr "Câble/Fibre optique" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Paquets entrants/seconde:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "Téléchargements:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Téléchargements simultanés:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Vitesse (Ko/seconde):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "Port UDP client:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Résolution:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Taille typo:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +msgid "SZ^Unreadable" +msgstr "Illisible" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +msgid "SZ^Tiny" +msgstr "Minuscule" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +msgid "SZ^Little" +msgstr "Très Petit" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +msgid "SZ^Small" +msgstr "Petit" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +msgid "SZ^Medium" +msgstr "Moyen" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +msgid "SZ^Large" +msgstr "Grand" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +msgid "SZ^Huge" +msgstr "Très Grand" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +msgid "SZ^Gigantic" +msgstr "Géant" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +msgid "SZ^Colossal" +msgstr "Gigantesque" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "Profondeur de couleurs:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "Plein écran" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "Syncronisation verticale" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:49 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "Utiliser 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 +msgstr "Objets en tampon mémoire (VBOs)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +#, fuzzy +msgid "VBO^Off" +msgstr "Désactivé" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:60 +msgid "Vertices, some Tris (compatible)" +msgstr "Points, quelques Triangles (compatible)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices" +msgstr "Points" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:64 +msgid "Vertices and Triangles" +msgstr "Points et Triangles" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "Depth first:" +msgstr "Fixeur profondeur:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +#, fuzzy +msgid "DF^Disabled" +msgstr "Désactivé" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:70 +#, fuzzy +msgid "DF^World" +msgstr "Carte" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:71 +#, fuzzy +msgid "DF^All" +msgstr "Tout" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Disable multithreaded OpenGL" +msgstr "Désactiver OpenGL multi-coeurs" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:77 +msgid "Wait for GPU to finish each frame" +msgstr "Attendre le GPU pour finir chaque trame" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:80 +msgid "Brightness:" +msgstr "Luminosité:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:83 +msgid "Contrast:" +msgstr "Contraste:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:86 +msgid "Gamma:" +msgstr "Gamma:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:89 +msgid "Contrast boost:" +msgstr "Amélioration contraste:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:92 +msgid "Saturation:" +msgstr "Saturation:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:98 +#, fuzzy +msgid "LIT^Ambient:" +msgstr "Ambience:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:101 +msgid "Intensity:" +msgstr "Intensité:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Monojoueur" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "Instant action! (map aléatoire avec bots)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Démarrer !" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Gagné" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Séléction d'équipe" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "auto-séléction équipe (recommandé)" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "rouge" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "bleu" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "jaune" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "rose" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "mode spectateur" + +#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "N'appuyez plus sur ce bouton !" + +#: qcsrc/menu/xonotic/maplist.c:278 +msgid "" +"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" +msgstr "" +"Euh? Ne peut pas être joué. Re-filtrage pour éviter des nouveaux problèmes.\n" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "%s's Xonotic Server" + +#: qcsrc/menu/xonotic/maplist.c:291 +msgid "" +"Huh? Can't play this (invalid game type). Refiltering so this won't happen " +"again.\n" +msgstr "" +"Euh? Ne peut pas être joué. Mode de jeu invalide. Re-filtrage pour éviter " +"des nouveaux problèmes.\n" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "<no model found>" +msgstr "<modèle non trouvé>" + +#: qcsrc/menu/xonotic/serverlist.c:360 +msgid "Remove" +msgstr "Supprimer" + +#: qcsrc/menu/xonotic/serverlist.c:362 +msgid "Bookmark" +msgstr "Marque-page" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Ping" +msgstr "Latence" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Host name" +msgstr "Nom d'Hôte" + +#: qcsrc/menu/xonotic/serverlist.c:520 +msgid "Map" +msgstr "Carte" + +#: qcsrc/menu/xonotic/serverlist.c:521 +msgid "Type" +msgstr "Mode" + +#: qcsrc/menu/xonotic/serverlist.c:522 +msgid "Players" +msgstr "Joueurs" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "<TITLE>" +msgstr "<TITRE>" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "<AUTEUR>" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +msgid "VOL^OFF" +msgstr "OFF" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +msgid "VOL^MAX" +msgstr "MAX" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "%s dB" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: qcsrc/menu/xonotic/util.qc:270 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "A reçu la demande HTTP d'ID invalide %d.\n" + +#: qcsrc/menu/xonotic/util.qc:285 +#, 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" + +#: qcsrc/menu/xonotic/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "" +"erreur: a reçu un fichier HTML et non une notification de mise à jour\n" + +#: qcsrc/menu/xonotic/util.qc:295 +msgid "error: received carriage returns from update notification server\n" +msgstr "" +"erreur: a reçu un message erroné depuis le serveur de notifications de M.A." +"J.\n" + +#: qcsrc/menu/xonotic/util.qc:316 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"La mise à jour peut être téléchargée ici:\n" +"%s\n" + +#: qcsrc/menu/xonotic/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Génération des mapinfo pour les nouvelles cartes ajoutées..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "Mettez à jour vers %s maintenant !" + +#: qcsrc/menu/xonotic/util.qc:509 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"^1ERROR: La texture de compression est nécessaire mais non supportée.\n" +"^1Attendez vous à voir des problèmes de rendu.\n" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Arena" +msgstr "Arène Duel" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Assaut" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Capture Du Drapeau" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Arène Équipes" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Match à Mort" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Domination" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Freeze Tag" +msgstr "Freeze Tag" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Keepaway" +msgstr "Cache-Cache Du Drapeau" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Key Hunt" +msgstr "Chasse aux Clés" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "Dernier Survivant" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexball" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Onslaught" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Course" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "Course CTS" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "Runematch" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Match à Mort Équipe" + +#: qcsrc/menu/xonotic/util.qc:565 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "Lancer de @!#%'n Tuba" + +#: qcsrc/menu/xonotic/util.qc:583 +msgid "Background:" +msgstr "Arrière-plan:" + +#: 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 "Par défaut" + +#: qcsrc/menu/xonotic/util.qc:596 +msgid "Use default" +msgstr "Par défaut" + +#: qcsrc/menu/xonotic/util.qc:616 +msgid "Team Color:" +msgstr "Couleur d'équipe:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Activer ce panneau" + +#: qcsrc/server/w_crylink.qc:2 +msgid "Crylink" +msgstr "Crylink" + +#: qcsrc/server/w_crylink.qc:645 +#, c-format +msgid "%s succeeded at self-destructing themself with the Crylink" +msgstr "%s a réussi à se suicider avec le Crylink" + +#: qcsrc/server/w_crylink.qc:650 +#, c-format +msgid "%s could not hide from %s's Crylink" +msgstr "%s n'a pas pu se cacher du Crylink de %s" + +#: qcsrc/server/w_crylink.qc:652 +#, c-format +msgid "%s was too close to %s's Crylink" +msgstr "%s a été trop près du Crylink de %s" + +#: qcsrc/server/w_crylink.qc:654 +#, c-format +msgid "%s took a close look at %s's Crylink" +msgstr "%s a voulu voir se qui se trouvait dans le Crylink de %s" + +#: qcsrc/server/w_electro.qc:2 +msgid "Electro" +msgstr "Electro" + +#: qcsrc/server/w_electro.qc:503 +#, c-format +msgid "%s could not remember where they put plasma" +msgstr "%s ne se souvenait pas où il a tiré du plasma" + +#: qcsrc/server/w_electro.qc:505 +#, c-format +msgid "%s played with plasma" +msgstr "%s a joué avec du plasma" + +#: qcsrc/server/w_electro.qc:512 +#, c-format +msgid "%s just noticed %s's blue ball" +msgstr "%s vient de remarquer la boule plasma de %s" + +#: qcsrc/server/w_electro.qc:514 +#, c-format +msgid "%s got in touch with %s's blue ball" +msgstr "%s s'est fait toucher par la boule plasma de %s" + +#: qcsrc/server/w_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" + +#: qcsrc/server/w_electro.qc:521 +#, c-format +msgid "%s got too close to %s's blue beam" +msgstr "%s a été trop près du rayon plasma de %s" + +#: qcsrc/server/w_electro.qc:523 +#, c-format +msgid "%s was blasted by %s's blue beam" +msgstr "%s a été désintégré à cause du rayon plasma de %s" + +#: qcsrc/server/w_fireball.qc:2 +#, fuzzy +msgid "Fireball" +msgstr "Fireball" + +#: qcsrc/server/w_fireball.qc:392 +#, c-format +msgid "%s forgot about some firemine" +msgstr "%s n'a pas étudié la combustion des boules de feu" + +#: qcsrc/server/w_fireball.qc:394 qcsrc/server/w_hlac.qc:223 +#, c-format +msgid "%s should have used a smaller gun" +msgstr "%s aurait dû utiliser une arme plus petite" + +#: qcsrc/server/w_fireball.qc:401 +#, c-format +msgid "%s tried to catch %s's firemine" +msgstr "%s a pensé que la boule de feu de %s était un ballon de football" + +#: qcsrc/server/w_fireball.qc:403 +#, c-format +msgid "%s fatefully ignored %s's firemine" +msgstr "%s a ignoré la boule de feu de %s" + +#: qcsrc/server/w_fireball.qc:410 +#, c-format +msgid "%s could not hide from %s's fireball" +msgstr "%s n'a pas réussi à se cacher de la boule de feu de %s" + +#: qcsrc/server/w_fireball.qc:412 +#, c-format +msgid "%s saw the pretty lights of %s's fireball" +msgstr "%s a vu les belles lumières de la boule de feu de %s" + +#: qcsrc/server/w_fireball.qc:415 +#, c-format +msgid "%s got too close to %s's fireball" +msgstr "%s s'est trop approché de la boule de feu de %s" + +#: qcsrc/server/w_fireball.qc:417 +#, c-format +msgid "%s tasted %s's fireball" +msgstr "%s a goûté la boule de feu de %s" + +#: qcsrc/server/w_grenadelauncher.qc:2 +msgid "Mortar" +msgstr "Mortier" + +#: qcsrc/server/w_grenadelauncher.qc:357 +#, c-format +msgid "%s tried out his own grenade" +msgstr "%s a mangé sa propre grenade" + +#: qcsrc/server/w_grenadelauncher.qc:359 +#, c-format +msgid "%s detonated" +msgstr "%s a fait boum" + +#: qcsrc/server/w_grenadelauncher.qc:365 +#, c-format +msgid "%s didn't see %s's grenade" +msgstr "%s n'a pas vu la grenade de %s" + +#: qcsrc/server/w_grenadelauncher.qc:367 +#, c-format +msgid "%s almost dodged %s's grenade" +msgstr "%s a presque réussi à esquiver la grenade de %s" + +#: qcsrc/server/w_grenadelauncher.qc:369 +#, c-format +msgid "%s ate %s's grenade" +msgstr "%s a mangé la grenade de %s" + +#: qcsrc/server/w_hagar.qc:2 +msgid "Hagar" +msgstr "Hagar" + +#: qcsrc/server/w_hagar.qc:185 qcsrc/server/w_seeker.qc:523 +#, c-format +msgid "%s played with tiny rockets" +msgstr "%s a joué avec des petits missiles" + +#: qcsrc/server/w_hagar.qc:189 +#, c-format +msgid "%s hoped %s's missiles wouldn't bounce" +msgstr "%s a pensé que les petits missiles de %s ne rebondissaient pas" + +#: qcsrc/server/w_hagar.qc:191 +#, c-format +msgid "%s was pummeled by %s" +msgstr "%s a trop mangé de mini-missiles de la part de %s" + +#: qcsrc/server/w_hlac.qc:2 +msgid "Heavy Laser Assault Cannon" +msgstr "Canon Laser Lourd d'Assaut " + +#: qcsrc/server/w_hlac.qc:225 +#, c-format +msgid "%s was cut down by %s" +msgstr "%s s'est fait couper par %s" + +#: qcsrc/server/w_hook.qc:2 +#, fuzzy +msgid "Grappling Hook" +msgstr "Grappin" + +#: 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 "%s a fait l'impossible" + +#: qcsrc/server/w_hook.qc:269 +#, c-format +msgid "%s has run into %s's gravity bomb" +msgstr "%s a été emprisonné par la bombe à gravité de %s" + +#: qcsrc/server/w_laser.qc:2 +msgid "Laser" +msgstr "Laser" + +#: qcsrc/server/w_laser.qc:285 +#, c-format +msgid "%s lasered themself to hell" +msgstr "%s s'est suicidé au laser" + +#: qcsrc/server/w_laser.qc:289 +#, c-format +msgid "%s was cut in half by %s's gauntlet" +msgstr "%s s'est fait couper en deux par le laser de %s" + +#: qcsrc/server/w_laser.qc:291 +#, c-format +msgid "%s was lasered to death by %s" +msgstr "%s a été désintégré par le laser de %s" + +#: qcsrc/server/w_minelayer.qc:2 +#, fuzzy +msgid "Mine Layer" +msgstr "Lance-Mines" + +#: qcsrc/server/w_minelayer.qc:438 qcsrc/server/w_rocketlauncher.qc:480 +#, c-format +msgid "%s exploded" +msgstr "%s a explosé" + +#: qcsrc/server/w_minelayer.qc:442 +#, c-format +msgid "%s got too close to %s's mine" +msgstr "%s s'est trop approché de la mine de %s" + +#: qcsrc/server/w_minelayer.qc:444 +#, c-format +msgid "%s almost dodged %s's mine" +msgstr "%s a presque esquivé la mine de %s" + +#: qcsrc/server/w_minelayer.qc:446 +#, c-format +msgid "%s stepped on %s's mine" +msgstr "%s a marché sur la mine de %s" + +#: qcsrc/server/w_minstanex.qc:2 +#, fuzzy +msgid "MinstaNex" +msgstr "MinstaNex" + +#: qcsrc/server/w_minstanex.qc:259 qcsrc/server/w_nex.qc:226 +#, c-format +msgid "%s has been vaporized by %s" +msgstr "%s s'est fait vaporiser par %s" + +#: qcsrc/server/w_nex.qc:2 +#, fuzzy +msgid "Nex" +msgstr "Nex" + +#: qcsrc/server/w_porto.qc:2 +msgid "Port-O-Launch" +msgstr "Lance-O-Port" + +#: qcsrc/server/w_porto.qc:295 +#, c-format +msgid "%s felt %s doing the impossible to him" +msgstr "%s a eu tort de prendre le portail de %s" + +#: qcsrc/server/w_rocketlauncher.qc:2 +msgid "Rocket Launcher" +msgstr "Lance-Roquettes" + +#: qcsrc/server/w_rocketlauncher.qc:484 +#, c-format +msgid "%s got too close to %s's rocket" +msgstr "%s s'est trop approché de la roquette de %s" + +#: qcsrc/server/w_rocketlauncher.qc:486 +#, c-format +msgid "%s almost dodged %s's rocket" +msgstr "%s a presque esquivé la roquette de %s" + +#: qcsrc/server/w_rocketlauncher.qc:488 +#, c-format +msgid "%s ate %s's rocket" +msgstr "%s a mangé la roquette de %s" + +#: qcsrc/server/w_seeker.qc:2 +msgid "T.A.G. Seeker" +msgstr "T.A.G. Chercheur" + +#: qcsrc/server/w_seeker.qc:527 +#, c-format +msgid "%s ran into %s's flac" +msgstr "%s n'a pas eu peur des missiles de %s" + +#: qcsrc/server/w_seeker.qc:529 +#, c-format +msgid "%s was tagged by %s" +msgstr "%s s'est fait tagguer par %s" + +#: qcsrc/server/w_shotgun.qc:2 +#, fuzzy +msgid "Shotgun" +msgstr "Fusil" + +#: qcsrc/server/w_shotgun.qc:183 +#, c-format +msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun" +msgstr "%2$s ^7a baffé %1$s ^7avec un ^2fusil" + +#: qcsrc/server/w_shotgun.qc:185 +#, c-format +msgid "%s was gunned by %s" +msgstr "%s s'est fait fusiller par %s" + +#: qcsrc/server/w_sniperrifle.qc:2 +msgid "Sniper Rifle" +msgstr "Fusil Sniper" + +#: qcsrc/server/w_sniperrifle.qc:321 +#, c-format +msgid "%s shot themself automatically" +msgstr "%s s'est suicidé au sniper" + +#: qcsrc/server/w_sniperrifle.qc:323 +#, c-format +msgid "%s sniped themself somehow" +msgstr "%s a oublié le cran de sûreté en chargeant" + +#: qcsrc/server/w_sniperrifle.qc:330 +#, c-format +msgid "%s failed to hide from %s's bullet hail" +msgstr "%s n'a pas pu se cacher de la nuée de balles de %s" + +#: qcsrc/server/w_sniperrifle.qc:332 +#, c-format +msgid "%s died in %s's bullet hail" +msgstr "%s est mort de la nuée de balles de %s" + +#: qcsrc/server/w_sniperrifle.qc:339 +#, c-format +msgid "%s failed to hide from %s's rifle" +msgstr "%s n'a pas réussi à se cacher du sniper de %s" + +#: qcsrc/server/w_sniperrifle.qc:344 +#, c-format +msgid "%s got hit in the head by %s" +msgstr "%s s'est fait décapiter au sniper par %s" + +#: qcsrc/server/w_sniperrifle.qc:346 qcsrc/server/w_uzi.qc:291 +#, c-format +msgid "%s was sniped by %s" +msgstr "%s s'est fait descendre au sniper par %s" + +#: qcsrc/server/w_tuba.qc:2 +#, fuzzy, c-format +msgid "@!#%'n Tuba" +msgstr "@!#%'n Tuba" + +#: qcsrc/server/w_tuba.qc:260 +#, c-format +msgid "%s hurt his own ears with the @!#%%'n Tuba" +msgstr "%s s'est fait casser les tympans par son propre tuba" + +#: qcsrc/server/w_tuba.qc:264 +#, c-format +msgid "%s died of %s's great playing on the @!#%%'n Tuba" +msgstr "%s n'a pas aimé la musique de %s et en est mort" + +#: qcsrc/server/w_uzi.qc:2 +msgid "Machine Gun" +msgstr "Mitraillette" + +#: qcsrc/server/w_uzi.qc:293 +#, c-format +msgid "%s was riddled full of holes by %s" +msgstr "%s s'est fait trouer par %s" + +#~ msgid "Waypoint settings:" +#~ msgstr "Paramètres Waypoint (flèches 3D sur la carte):" + +#~ msgid "%d/%d" +#~ msgstr "%d/%d" diff --git a/menu.dat.hu.po b/menu.dat.hu.po new file mode 100644 index 000000000..d604e379e --- /dev/null +++ b/menu.dat.hu.po @@ -0,0 +1,2775 @@ +# 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: xaN1C4n3 <robalm@freemail.hu>, 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-07 07:50+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "Hiba: állapot %d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Használat: menu_cmd parancs..., ahol a lehetséges parancs:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr "sync - újratölti az összes cvar-t az aktuális menü oldalon\n" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr " directmenu TÁRGY - kiválaszt egy menü pontot, fő tárgynak\n" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "Curl kezelő hibát okozott\n" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +" Érvénytelen parancs. A támogatott parancsok listájáért, próbáld a menu_cmd " +"segitséget.\n" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "A böngésző nem indult el!" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "MEGJEGYZÉS: a %s szöveg túl széles címkének, csökkentsd %f-el\n" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Tárgy %d" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "egyéni" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4MQC Épitési információ: %s\n" + +#: 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 "Szint %d: %s" + +#: qcsrc/menu/xonotic/cvarlist.c:85 +msgid "will be saved to config.cfg" +msgstr "A config.cfg-ba lesz mentve" + +#: qcsrc/menu/xonotic/cvarlist.c:87 +msgid "will not be saved" +msgstr "Nem lesz elmentve" + +#: qcsrc/menu/xonotic/cvarlist.c:89 +msgid "private" +msgstr "magán" + +#: qcsrc/menu/xonotic/cvarlist.c:91 +msgid "engine setting" +msgstr "motor beállítás" + +#: qcsrc/menu/xonotic/cvarlist.c:93 +msgid "read only" +msgstr "csak olvasható" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Köszönetek" + +#: 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 "Rendben" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:4 +msgid "Welcome" +msgstr "Üdvözlet" + +#: 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_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Szöveg nyelv:" + +#: 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 "Név:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:69 +msgid "Save settings" +msgstr "A beállítások mentése" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "Lőszer Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Lőszer kijelző:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Csak az aktuális lőszer típus megjelenítése" + +#: 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 "Bal" + +#: 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 "Jobb" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Csevely Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "Csevely bejegyzések:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Csevely méret:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "Csevely élettartam:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "Csevely sípszó" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Motor Információs panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Motor Információ:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "Átlagoló algoritmus használata az fps-hez" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Életerő/Páncél Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +msgid "Enable status bar" +msgstr "Állapotsor engedélyezése" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +msgid "Status bar alignment:" +msgstr "Állapotsor igazítás:" + +#: 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 "Befelé" + +#: 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 "Kifelé" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +msgid "Icon alignment:" +msgstr "Ikon igazítás:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Életerő és páncél poziciójának cseréje" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "Info üzenetek lapja" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "Info üzenetek:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "Flip összehangolása" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Mod ikonok panelje" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "Értesítő Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "Értesítések:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "Az értesítéseket a konzolra is kiirja" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "Értesítés rend megfordítás" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "Bejegyzés élettartam:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "Bejegyzés halványulási idő:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Powerups Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "Erő és pajzs pozíciók felcserélése" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "Lenyomott gombok lapja" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "Panel kikapcsolva" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "Panel engedélyezett, ha csak néző vagy" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 +msgid "Panel always enabled" +msgstr "Panel mindig látható" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Időmérő Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "Radar Panel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "Panel engedélyezve a csapatjátékokban" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29 +msgid "Radar:" +msgstr "Radar:" + +#: 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 "Forgatás:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "Előre" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "Nyugat" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40 +msgid "South" +msgstr "Dél" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41 +msgid "East" +msgstr "Kelet" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42 +msgid "North" +msgstr "Észak" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46 +msgid "Scale:" +msgstr "Arány:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50 +msgid "Zoom mode:" +msgstr "Nagyítási mód:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52 +msgid "Zoomed in" +msgstr "Nagyítás" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53 +msgid "Zoomed out" +msgstr "Kicsinyítés" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "Mindig nagyított" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55 +msgid "Never zoomed" +msgstr "Sohasem nagyított" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4 +msgid "Score Panel" +msgstr "Ponttáblázat" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "Időtáblázat" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22 +msgid "Timer:" +msgstr "Időzítő:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25 +msgid "Show elapsed time" +msgstr "Eltelt idő mutatása" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "Szavazati tábla" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "Alpha a szavazás után:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Fegyverek lapja" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Elhalványulás késleltetés:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 +msgid "Never" +msgstr "Soha" + +#: 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 "Halványulás hatás:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +msgid "EF^None" +msgstr "EF^Nincs" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Csúszás" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Alpha" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "Fegyver ikonok:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "A Fegyver azonosító megjelenítés eszerint:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44 +msgid "SHOWAS^None" +msgstr "Nincs" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45 +msgid "Number" +msgstr "Szám" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46 +msgid "Bind" +msgstr "Hozzárendelés" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Pontosság mutatása" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Lőszer mutatása" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Lőszer jelző színe:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Lőszer jelző alpha:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "HUD panel beállítás" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "Panel háttér alapértelmezett:" + +#: 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 +msgid "Disable" +msgstr "Letiltás" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:591 +msgid "Color:" +msgstr "Szín:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:599 +msgid "Border size:" +msgstr "Keret méret:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "Csapat szín:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:625 +msgid "Test team color in configure mode" +msgstr "Csapat szín ellenörzés konfigurációs módban" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:628 +msgid "Padding:" +msgstr "Padding:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "HUD rögzités:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +msgid "DOCK^Disabled" +msgstr "Letiltott" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +msgid "DOCK^Small" +msgstr "Kicsi" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +msgid "DOCK^Medium" +msgstr "Közepes" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +msgid "DOCK^Large" +msgstr "Nagy" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "Rács beállítások:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Panelek rácshoz igazítása" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Rács méret:" + +#: 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 "Kilépés a beállitásokból" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Többjátékos" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Kiszolgálók" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5 +msgid "Create" +msgstr "Létrehozás" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Demók" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5 +msgid "Player Setup" +msgstr "Játékos beállítás" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Játék típus:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Meccs beállítások:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Idő határ:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "Térképhez tartozó alapérték használata" + +#: 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 "Pont határ:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "Összes játékos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Botok száma:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Botok szintje" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "Béna" + +# :))) +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "Kezdő" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "Biztosan te nyersz" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Nyerhetsz" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Még legyőzheted" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Rutinos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Tapasztalt" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Hivatásos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Orgyilkos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "Embertelen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "Isteni" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "Mutatorok..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:84 +msgid "Advanced settings..." +msgstr "Különleges beállítások ..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105 +msgid "Map list:" +msgstr "Térkép lista:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "Az összes kiválasztása" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "Egyik sem" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Többjátékos indítása" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "Rablás határérték:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "Életek:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "Körök:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Célok:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "Frag határérték:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "Speciális kiszolgáló beállítások" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Játék beállításai:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "Nézők engedélyezése" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "Páncél megjelenés:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Játék sebesség:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Csapatjáték beállítások:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Baráti tűz mértéke:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Látszólagos baráti tűz (csak hatás)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "Baráti tűz büntetés:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "Látszólagos büntetés (csak hatás)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "Csapatok:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "Térkép szavazás:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "Nincs szavazás" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "2 lehetőség" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 lehetőség" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 lehetőség" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 lehetőség" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 lehetőség" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 lehetőség" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 lehetőség" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 lehetőség" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "Egyszerű többség nyer" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Térkép Információ" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "Minden tárgy elhelyezése" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "Csak MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Cím:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Szerző:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Jellemzők:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Játék típusok:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 +msgid "Close" +msgstr "Zárt" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Játék" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "Mutatorok" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "Minden Fegyver Aréna" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Legtöbb Fegyver Aréna" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56 +#, c-format +msgid "%s Arena" +msgstr "%s Aréna" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167 +msgid "Dodging" +msgstr "Kitérés" + +#: 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 "Rakéta repülés" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "Nincs kezdő fegyver" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "Alacsony gravitáció" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170 +msgid "Cloaked" +msgstr "Álcázott" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "Horog" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173 +msgid "Midair" +msgstr "Levegőben" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176 +msgid "Vampire" +msgstr "Vámpír" + +#: 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 "Fegyverek maradnak" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "Vérveszteség" + +#: 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 "Nincs" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Játékmenet mutatorok:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "Fegyver és tárgy mutatorok:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199 +msgid "Grappling hook" +msgstr "Ragadós horog" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215 +msgid "Weapon arenas:" +msgstr "Fegyver Arénák:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "Hagyományos (nincs aréna)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "lézerrel" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Különleges Arénák:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "A legtöbb fegyver" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4 +msgid "Demo" +msgstr "Demó" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28 +msgid "Record demos while playing" +msgstr "Játék közben rögzitse a demókat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +msgid "Filter:" +msgstr "Szűrés:" + +#: 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 "Törlés" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Demó időmérés" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Csatlakozás" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +msgid "SRVS^Empty" +msgstr "SRVS^Üres" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +msgid "SRVS^Full" +msgstr "SRVS^Teli" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "Szünet" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Cím:" + +#: 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:317 +msgid "Join!" +msgstr "Csatlakozz!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "Szerver információ" + +#: 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 módosított beállításai" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 +msgid "Official settings" +msgstr "Hivatalos beállítások" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197 +msgid "N/A (can't connect)" +msgstr "N/A (nem tud csatlakozni)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "not supported (can't connect)" +msgstr "nem támogatott (nem tud csatlakozni)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "not supported (won't encrypt)" +msgstr "nem támogatott (nem ellenörzött)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "supported (will encrypt)" +msgstr "támogatott (ellenörzött)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "supported (won't encrypt)" +msgstr "támogatott (nem ellenörzött)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "requested (will encrypt)" +msgstr "kért (ellenörzött)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "requested (won't encrypt)" +msgstr "kért (nem ellenörzött)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223 +msgid "required (can't connect)" +msgstr "szükséges (nem tud csatlakozni)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225 +msgid "required (will encrypt)" +msgstr "szükséges (ellenörzött)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:246 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:269 +msgid "Players:" +msgstr "Játékosok:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:254 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +msgid "Type:" +msgstr "Típus:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 +msgid "Map:" +msgstr "Pálya:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 +msgid "Gameplay:" +msgstr "Játék:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 +msgid "Bots:" +msgstr "Botok:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 +msgid "Mod:" +msgstr "Mod:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 +msgid "Version:" +msgstr "Verzió:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "Ping:" +msgstr "Ping:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "CA:" +msgstr "CA:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Key:" +msgstr "Kulcs:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 +msgid "Encryption:" +msgstr "Titkosítás:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "Modell:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "Látómező:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Nézet döntés:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Nagyítás szorzó:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Nagyítás sebesség:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Fegyver beállítások..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "Célkereszt:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143 +msgid "Per weapon" +msgstr "Fegyverenként" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "Célkereszt mérete:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Célkereszt alpha:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Célkereszt színe:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Középpont engedélyezése" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Méret:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Találat ellenőrzés:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +msgid "HTST^None" +msgstr "HTST^Nincs" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "Valós célzás" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Ellenségek" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Útpontok beállítása..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "Belépés a HUD szerkesztőbe" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Modellek kényszerítése:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +msgid "MDL^None" +msgstr "MDL^Nincs" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +msgid "MDL^Custom" +msgstr "MDL^Egyéni" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +msgid "MDL^All" +msgstr "MDL^Mind" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "Sérülés hatások letiltása" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Húscafatok:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +msgid "GIBS^None" +msgstr "GIBS^Nincs" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "GIBS^Kevés" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +msgid "GIBS^Many" +msgstr "GIBS^Sok" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +msgid "GIBS^Lots" +msgstr "GIBS^Rengeteg" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Sérülés szórás:" + +#: 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 "Azonnali alkalmazás" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Útpontok" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Show base waypoints" +msgstr "Alap útpontok mutatása" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 +msgid "Waypoint scale:" +msgstr "Útpont részletesség:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint alpha:" +msgstr "Útpont alpha:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Show names:" +msgstr "Nevek mutatása:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 +msgid "Teammates" +msgstr "Csapattársak" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 +msgid "All players" +msgstr "Minden játékos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "Fegyver beállítások" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Fegyver elsőbbségi lista:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Fel" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Le" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "Az elsőbbségi listát használja a fegyverváltáshoz" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Automatikus váltás a felvett fegyverre" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "1.személyű fegyver modell kirajzolása" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "Balra igazítása" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "Jobbra igazított" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "A nézet horizontális döntése" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "Hírek" + +#: 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_quit.c:4 +msgid "Quit" +msgstr "Kilépés" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "Biztos vagy benne, hogy kilépsz?" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "Igen" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "Nem" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Beállítások" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Bemenet" + +#: qcsrc/menu/xonotic/dialog_settings.c:19 +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +msgid "Video" +msgstr "Videó" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Hatások" + +#: qcsrc/menu/xonotic/dialog_settings.c:21 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:4 +msgid "Audio" +msgstr "Hang" + +#: qcsrc/menu/xonotic/dialog_settings.c:22 +#: qcsrc/menu/xonotic/dialog_settings_network.c:4 +msgid "Network" +msgstr "Hálózat" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Egyéb" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "Mester:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Zene:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +msgid "VOL^Ambient:" +msgstr "VOL^Környezet:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Információ:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Tárgyak:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Fájdalom:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Játékos:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Lövések:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Hang:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Fegyverek:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Frekvencia:" + +#: 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 "Csatornák:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:117 +msgid "Mono" +msgstr "Monó" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:118 +msgid "Stereo" +msgstr "Sztereó" + +#: 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 "Sztereó megcserélése" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Fejhallgató barát mód" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Térbeli hangok:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +msgid "VOCS^None" +msgstr "VOCS^Nincs" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +msgid "VOCS^Taunts" +msgstr "VOCS^Bekiabálások" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +msgid "VOCS^All" +msgstr "VOCS^Minden" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Bekiabálás terület:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +msgid "RNG^Very short" +msgstr "RNG^Nagyon rövid" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +msgid "RNG^Short" +msgstr "RNG^Rövid" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +msgid "RNG^Normal" +msgstr "RNG^Normál" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +msgid "RNG^Long" +msgstr "RNG^Hosszú" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +msgid "RNG^Full" +msgstr "RNG^Teljes" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Automatikus bekiabálások" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Idő figyelmeztetés:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +msgid "WRN^None" +msgstr "Nincs" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:168 +msgid "1 minute" +msgstr "1 perc" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:169 +msgid "5 minutes" +msgstr "5 perc" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:170 +msgid "WRN^Both" +msgstr "Mindkettő" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Találat jelző" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Menü hangok" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Minőség sablon:" + +#: 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^Alacsony" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +msgid "PRE^Medium" +msgstr "PRE^Közepes" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +msgid "PRE^Normal" +msgstr "PRE^Normál" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +msgid "PRE^High" +msgstr "PRE^Magas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:46 +msgid "PRE^Ultra" +msgstr "PRE^Szélsőséges" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:48 +msgid "PRE^Ultimate" +msgstr "PRE^Végső" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "Geometria részletesség:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +msgid "DET^Lowest" +msgstr "DET^Legalacsonyabb" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +msgid "DET^Low" +msgstr "DET^Alacsony" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +msgid "DET^Normal" +msgstr "DET^Normál" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +msgid "DET^Good" +msgstr "DET^Jó" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +msgid "DET^Best" +msgstr "DET^Még jobb" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +msgid "DET^Insane" +msgstr "DET^Őrült magas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:62 +msgid "Antialiasing:" +msgstr "Élsimítás:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:64 +msgid "AA^Disabled" +msgstr "AA^Letiltva" + +#: 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 "Textúra felbontás:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:73 +msgid "RES^Leet" +msgstr "RES^Semmi" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:74 +msgid "RES^Lowest" +msgstr "RES^Legalacsonyabb" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +msgid "RES^Low" +msgstr "RES^Alacsony" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +msgid "RES^Normal" +msgstr "RES^Normál" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +msgid "RES^Good" +msgstr "RES^Jó" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +msgid "RES^Best" +msgstr "RES^Legjobb" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "Kerülje a veszteséges textúra tömörítést" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:100 +msgid "Anisotropy:" +msgstr "Anizotrópia:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:102 +msgid "ANISO^Disabled" +msgstr "ANISO^Letiltva" + +#: 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 "Részecske minőség:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Részecske távolság:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "Dekorációk" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "Távolság:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Idő:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "Fénytérképek használata" + +#: 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 "Fényes" + +#: 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 "Tükrözödés:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Homályos" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +msgid "REFL^Good" +msgstr "Refl^Jó" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Éles" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Felületek megjelenítése" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Nincsenek dinamikus fények" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Közelítő villanás keverés" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Valós idejű dinamikus fények" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "Árnyékok" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "Valós idejű világ fényhatások" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Normál map használata" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "Lágy árnyékok" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "Fénykörök" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:174 +msgid "Use Occlusion Queries" +msgstr "Use Occlusion Queries" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:176 +msgid "Bloom" +msgstr "Virágzás" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:178 +msgid "High Dynamic Range (HDR)" +msgstr "Magas dinamika tartomány (HDR)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:182 +msgid "Motion blur:" +msgstr "Mozgási elmosás:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:188 +msgid "Damage blur:" +msgstr "Sérülés elmosás:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Billentyű hozzárendelések:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Billentyű változtatás..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Szerkesztés..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Érzékenység:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "UI egér sebesség:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Egér szürés" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Forditott egér" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "Joystick bemenet használata" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "OS egér gyorsítás kikapcsolása" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "\"belépés a konzolba\" zár is" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 +msgid "User defined key bind" +msgstr "Felhasználó által beállított billentyű" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Parancs lenyomáskor:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Parancs felengedéskor:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Mentés" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Mégsem" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "Menü felületek:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Aktuális idő mutatása" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Aktuális dátum mutatása" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "A képkocka/s mutatása" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Sebességmérő" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "qu/s (rejtett)" + +#: 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 "csomó" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Gyorsulásmérő mutatása" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Gyorsulásmérő beosztás:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Bemeneti késleltetés minimalizása" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "További beállítások" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Cvar szűrés:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Beállítás:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Érték:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 +msgid "Description:" +msgstr "Leírás:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Kliens-oldali mozgás előrejelzés" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Hálózat forgalom megjelenítése" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Hálózati sebesség:" + +#: 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 "Lassú ADSL" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:38 +msgid "Fast ADSL" +msgstr "Gyors ADSL" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:39 +msgid "Broadband" +msgstr "Szélessávú" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Bemeneti csomagok/s:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "HTTP letöltéseket:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Letöltések:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Sebesség (kB/s):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "Kliens UDP port:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Felbontás:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Font/UI méret:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +msgid "SZ^Unreadable" +msgstr "SZ^Olvashatatlan" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +msgid "SZ^Tiny" +msgstr "SZ^Apró" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +msgid "SZ^Little" +msgstr "SZ^Pici" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +msgid "SZ^Small" +msgstr "SZ^Kicsi" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +msgid "SZ^Medium" +msgstr "SZ^Közepes" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +msgid "SZ^Large" +msgstr "SZ^Nagy" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +msgid "SZ^Huge" +msgstr "SZ^Hatalmas" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +msgid "SZ^Gigantic" +msgstr "SZ^Gigantikus" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +msgid "SZ^Colossal" +msgstr "SZ^Óriási" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "Színmélység:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "Teljes képernyő" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "Szinkonizálás a képfrissítéshez" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:49 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "OpenGL 2.0 árnyalók (GLSL) használata" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:52 +msgid "Use GLSL to handle color control" +msgstr "GLSL használata a színvezérlés kezeléséhez" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:56 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Vertex Buffer Objects (VBOs)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +msgid "VBO^Off" +msgstr "VBO^Off" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:60 +msgid "Vertices, some Tris (compatible)" +msgstr "Csúcspontok, néhány háromszög (kompatibilis)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices" +msgstr "Csúcspontok" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:64 +msgid "Vertices and Triangles" +msgstr "Csúcspontok és háromszögek" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "Depth first:" +msgstr "Mélység először:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +msgid "DF^Disabled" +msgstr "Kikapcsolva" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:70 +msgid "DF^World" +msgstr "Világ" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:71 +msgid "DF^All" +msgstr "Minden" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Disable multithreaded OpenGL" +msgstr "Többszálú OpenGL letiltása" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:77 +msgid "Wait for GPU to finish each frame" +msgstr "Várakozás minden képkockánál, hogy a GPU végezzen" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:80 +msgid "Brightness:" +msgstr "Fényerő:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:83 +msgid "Contrast:" +msgstr "Kontraszt:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:86 +msgid "Gamma:" +msgstr "Gamma:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:89 +msgid "Contrast boost:" +msgstr "Kontraszt növelés:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:92 +msgid "Saturation:" +msgstr "Színtelítettség:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:98 +msgid "LIT^Ambient:" +msgstr "Környezet:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:101 +msgid "Intensity:" +msgstr "Erősség:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Egyjátékos" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "Azonnali játék (véletlenszerű pálya botokkal)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Egyjátékos mód indítása" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Győztes" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Csapat választás" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "Csatlakozás a 'legjobb' csapathoz (auto-választás)" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "vörös" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "kék" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "sárga" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "rózsaszín" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "néző" + +#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "Ne nyomd meg újra ezt a gombot!" + +#: qcsrc/menu/xonotic/maplist.c:278 +msgid "" +"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" +msgstr "" +"Jajj? Ezzel nem lehet játszani (m is NULL). Állítsd át a szürést, hogy ne " +"ismétlődjön meg!\n" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "%s Xonotic kiszolgálója" + +#: qcsrc/menu/xonotic/maplist.c:291 +msgid "" +"Huh? Can't play this (invalid game type). Refiltering so this won't happen " +"again.\n" +msgstr "" +"Jajj? Ezzel nem lehet játszani (érvénytelen játék típus). Állítsd át a " +"szürést, hogy ne ismétlődjön meg!\n" +"." + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "<no model found>" +msgstr "<modell nem található>" + +#: qcsrc/menu/xonotic/serverlist.c:360 +msgid "Remove" +msgstr "Eltávolítás" + +#: qcsrc/menu/xonotic/serverlist.c:362 +msgid "Bookmark" +msgstr "Könyvjelző" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Ping" +msgstr "Ping" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Host name" +msgstr "Gazda név" + +#: qcsrc/menu/xonotic/serverlist.c:520 +msgid "Map" +msgstr "Térkép" + +#: qcsrc/menu/xonotic/serverlist.c:521 +msgid "Type" +msgstr "Típus" + +#: qcsrc/menu/xonotic/serverlist.c:522 +msgid "Players" +msgstr "Játékosok" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "<TITLE>" +msgstr "<CÍM>" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "<SZERZŐ>" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +msgid "VOL^OFF" +msgstr "Hangerő ki" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +msgid "VOL^MAX" +msgstr "Hangerő maximum" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "%s dB" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: qcsrc/menu/xonotic/util.qc:270 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "Érvénytelen HTTP adatkérés érkezett id %d.\n" + +#: qcsrc/menu/xonotic/util.qc:285 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "Frissítési értesítési hiba: az állapota %d\n" + +#: qcsrc/menu/xonotic/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "Hiba: frissítési értesítés helyett egy HTML-t kapott\n" + +#: qcsrc/menu/xonotic/util.qc:295 +msgid "error: received carriage returns from update notification server\n" +msgstr "Hiba: a frissítés értesítő szerverről egy 'kocsi vissza'-t kapott\n" + +#: qcsrc/menu/xonotic/util.qc:316 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"Frissítés letölthető: \n" +"%s -ről\n" + +#: qcsrc/menu/xonotic/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Önállóan előállitott MapInfo az újonnan hozzáadott térképekhez..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "Most frissítsd %s-re!" + +#: qcsrc/menu/xonotic/util.qc:509 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"^1Hiba: textúra tömörítés szükséges, de nem támogatott.\n" +"^1Gondok lehetnek a látvánnyal.\n" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Arena" +msgstr "Aréna" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Ostrom" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Szerezd meg a zászlót" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Klán Aréna" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Mindenki mindenki ellen" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Uralom" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Freeze Tag" +msgstr "Freeze Tag" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Keepaway" +msgstr "Keepaway" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Key Hunt" +msgstr "Kulcs vadászat" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "Last Man Standing" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexball" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Támadás" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Futam" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "Race CTS" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "Rúnameccs" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Csapatos öldöklés" + +#: qcsrc/menu/xonotic/util.qc:565 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "@!#%'n Tuba Dobás" + +#: qcsrc/menu/xonotic/util.qc:583 +msgid "Background:" +msgstr "Háttér:" + +#: 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 "Alapértelmezett" + +#: qcsrc/menu/xonotic/util.qc:596 +msgid "Use default" +msgstr "Alapértékek használata" + +#: qcsrc/menu/xonotic/util.qc:616 +msgid "Team Color:" +msgstr "Csapat színe:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Panel engedélyezés" + +#: qcsrc/server/w_crylink.qc:2 +msgid "Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:645 +#, c-format +msgid "%s succeeded at self-destructing themself with the Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:650 +#, c-format +msgid "%s could not hide from %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:652 +#, c-format +msgid "%s was too close to %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:654 +#, c-format +msgid "%s took a close look at %s's Crylink" +msgstr "" + +#: qcsrc/server/w_electro.qc:2 +msgid "Electro" +msgstr "" + +#: qcsrc/server/w_electro.qc:503 +#, c-format +msgid "%s could not remember where they put plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:505 +#, c-format +msgid "%s played with plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:512 +#, c-format +msgid "%s just noticed %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:514 +#, c-format +msgid "%s got in touch with %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:519 +#, c-format +msgid "%s felt the electrifying air of %s's combo" +msgstr "" + +#: qcsrc/server/w_electro.qc:521 +#, c-format +msgid "%s got too close to %s's blue beam" +msgstr "" + +#: qcsrc/server/w_electro.qc:523 +#, c-format +msgid "%s was blasted by %s's blue beam" +msgstr "" + +#: qcsrc/server/w_fireball.qc:2 +#, fuzzy +msgid "Fireball" +msgstr "Nexball" + +#: qcsrc/server/w_fireball.qc:392 +#, c-format +msgid "%s forgot about some firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:394 qcsrc/server/w_hlac.qc:223 +#, c-format +msgid "%s should have used a smaller gun" +msgstr "" + +#: qcsrc/server/w_fireball.qc:401 +#, c-format +msgid "%s tried to catch %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:403 +#, c-format +msgid "%s fatefully ignored %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:410 +#, c-format +msgid "%s could not hide from %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:412 +#, c-format +msgid "%s saw the pretty lights of %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:415 +#, c-format +msgid "%s got too close to %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:417 +#, c-format +msgid "%s tasted %s's fireball" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:2 +#, fuzzy +msgid "Mortar" +msgstr "Előre" + +#: qcsrc/server/w_grenadelauncher.qc:357 +#, c-format +msgid "%s tried out his own grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:359 +#, fuzzy, c-format +msgid "%s detonated" +msgstr "néző" + +#: qcsrc/server/w_grenadelauncher.qc:365 +#, c-format +msgid "%s didn't see %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:367 +#, c-format +msgid "%s almost dodged %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:369 +#, c-format +msgid "%s ate %s's grenade" +msgstr "" + +#: qcsrc/server/w_hagar.qc:2 +msgid "Hagar" +msgstr "" + +#: qcsrc/server/w_hagar.qc:185 qcsrc/server/w_seeker.qc:523 +#, c-format +msgid "%s played with tiny rockets" +msgstr "" + +#: qcsrc/server/w_hagar.qc:189 +#, c-format +msgid "%s hoped %s's missiles wouldn't bounce" +msgstr "" + +#: qcsrc/server/w_hagar.qc:191 +#, c-format +msgid "%s was pummeled by %s" +msgstr "" + +#: qcsrc/server/w_hlac.qc:2 +msgid "Heavy Laser Assault Cannon" +msgstr "" + +#: qcsrc/server/w_hlac.qc:225 +#, c-format +msgid "%s was cut down by %s" +msgstr "" + +#: qcsrc/server/w_hook.qc:2 +#, fuzzy +msgid "Grappling Hook" +msgstr "Ragadós horog" + +#: 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/server/w_hook.qc:269 +#, c-format +msgid "%s has run into %s's gravity bomb" +msgstr "" + +#: qcsrc/server/w_laser.qc:2 +#, fuzzy +msgid "Laser" +msgstr "Mester:" + +#: qcsrc/server/w_laser.qc:285 +#, c-format +msgid "%s lasered themself to hell" +msgstr "" + +#: qcsrc/server/w_laser.qc:289 +#, c-format +msgid "%s was cut in half by %s's gauntlet" +msgstr "" + +#: qcsrc/server/w_laser.qc:291 +#, c-format +msgid "%s was lasered to death by %s" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:2 +#, fuzzy +msgid "Mine Layer" +msgstr "Egyjátékos" + +#: qcsrc/server/w_minelayer.qc:438 qcsrc/server/w_rocketlauncher.qc:480 +#, c-format +msgid "%s exploded" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:442 +#, c-format +msgid "%s got too close to %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:444 +#, c-format +msgid "%s almost dodged %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:446 +#, c-format +msgid "%s stepped on %s's mine" +msgstr "" + +#: qcsrc/server/w_minstanex.qc:2 +#, fuzzy +msgid "MinstaNex" +msgstr "MinstaGib" + +#: qcsrc/server/w_minstanex.qc:259 qcsrc/server/w_nex.qc:226 +#, c-format +msgid "%s has been vaporized by %s" +msgstr "" + +#: qcsrc/server/w_nex.qc:2 +#, fuzzy +msgid "Nex" +msgstr "Nexball" + +#: qcsrc/server/w_porto.qc:2 +msgid "Port-O-Launch" +msgstr "" + +#: qcsrc/server/w_porto.qc:295 +#, c-format +msgid "%s felt %s doing the impossible to him" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:2 +msgid "Rocket Launcher" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:484 +#, c-format +msgid "%s got too close to %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:486 +#, c-format +msgid "%s almost dodged %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:488 +#, c-format +msgid "%s ate %s's rocket" +msgstr "" + +#: qcsrc/server/w_seeker.qc:2 +msgid "T.A.G. Seeker" +msgstr "" + +#: qcsrc/server/w_seeker.qc:527 +#, c-format +msgid "%s ran into %s's flac" +msgstr "" + +#: qcsrc/server/w_seeker.qc:529 +#, c-format +msgid "%s was tagged by %s" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:2 +#, fuzzy +msgid "Shotgun" +msgstr "Lövések:" + +#: qcsrc/server/w_shotgun.qc:183 +#, c-format +msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:185 +#, c-format +msgid "%s was gunned by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:2 +msgid "Sniper Rifle" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:321 +#, c-format +msgid "%s shot themself automatically" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:323 +#, c-format +msgid "%s sniped themself somehow" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:330 +#, c-format +msgid "%s failed to hide from %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:332 +#, c-format +msgid "%s died in %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:339 +#, c-format +msgid "%s failed to hide from %s's rifle" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:344 +#, c-format +msgid "%s got hit in the head by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:346 qcsrc/server/w_uzi.qc:291 +#, c-format +msgid "%s was sniped by %s" +msgstr "" + +#: qcsrc/server/w_tuba.qc:2 +#, fuzzy, c-format +msgid "@!#%'n Tuba" +msgstr "@!#%'n Tuba Dobás" + +#: qcsrc/server/w_tuba.qc:260 +#, c-format +msgid "%s hurt his own ears with the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_tuba.qc:264 +#, c-format +msgid "%s died of %s's great playing on the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_uzi.qc:2 +msgid "Machine Gun" +msgstr "" + +#: qcsrc/server/w_uzi.qc:293 +#, c-format +msgid "%s was riddled full of holes by %s" +msgstr "" + +#~ msgid "" +#~ "Please answer a few initial questions to enhance the game experience." +#~ msgstr "" +#~ "A jobb játékélmény érdekében, kérlek, válaszolj pár inditó kérdésre!" + +#~ msgid "Waypoint settings:" +#~ msgstr "Útpont beállítások:" + +#~ msgid "%d/%d" +#~ msgstr "%d/%d" diff --git a/menu.dat.nl.po b/menu.dat.nl.po new file mode 100644 index 000000000..79eb878d8 --- /dev/null +++ b/menu.dat.nl.po @@ -0,0 +1,2762 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-07 07:50+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "error: status is %d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Gebruik: menu_cmd command..., waar mogelijke opdrachten zijn:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " sync - alle cvars op de huidige menupagina worden opnieuw geladen\n" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr " directmenu ITEM - selecteer deel van menu als hoofddeel" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "fout bij aanmaken curl handgreep\n" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +"Ongeldige opdracht. Voor een lijst met ondersteunde opdrachten, probeer " +"menu_cmd help.\n" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "Browser is niet geinitialiseerd!" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "" +"ATTENTIE: tekst van het label is %s te wijd, word met een factor %f " +"verkleind\n" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Item %d" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "aangepast" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4MQC Versie informatie: %s\n" + +#: 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 "Level %d: %s" + +#: qcsrc/menu/xonotic/cvarlist.c:85 +msgid "will be saved to config.cfg" +msgstr "word in config.cfg opgeslagen" + +#: qcsrc/menu/xonotic/cvarlist.c:87 +msgid "will not be saved" +msgstr "word niet opgeslagen" + +#: qcsrc/menu/xonotic/cvarlist.c:89 +msgid "private" +msgstr "privé " + +#: qcsrc/menu/xonotic/cvarlist.c:91 +msgid "engine setting" +msgstr "engine instelling" + +#: qcsrc/menu/xonotic/cvarlist.c:93 +msgid "read only" +msgstr "alleen lezen" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Aftiteling" + +#: 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_firstrun.c:4 +msgid "Welcome" +msgstr "Welkom" + +#: 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_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Taal van de tekst:" + +#: 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 "Naam:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:69 +msgid "Save settings" +msgstr "Opslaginstellingen:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "Ammunitie Paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Ammunitie venster:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Laat alleen huidig ammunitietype zien" + +#: 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 "Links" + +#: 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 "Rechts" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Chat Paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "Chat posts:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Chat grootte" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "Chat tijd:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "Chat geluid" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Engine Informatie Paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Engine Informatie:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "Gebruik een middelend algoritme voor fps" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Health/Armor Paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +msgid "Enable status bar" +msgstr "Activeer status balk" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +msgid "Status bar alignment:" +msgstr "Statusbalk positie:" + +#: 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 "Binnenkant" + +#: 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 "Buitenkant" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +msgid "Icon alignment:" +msgstr "Icoon positie:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Keer health en armor posities om" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "Informatieberichten Paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "Informatieberichten" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "Anders uitlijnen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Speliconen Paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "Notificatie Paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "Notificaties:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "Notificaties ook in de console printen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "Notificatievolgorde omdraaien" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "Post tijd:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "Post vervaagtijd:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Powerups paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "Keer kracht en schild posities om" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "Ingedrukte Toetsen Paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "Paneel uitgeschakeld" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "Paneel activeren tijdens observeren" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 +msgid "Panel always enabled" +msgstr "Paneel altijd actief" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "Aspect ratio:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Race Tijd Paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "Radar Paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "Paneel actief in teammodus" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29 +msgid "Radar:" +msgstr "Radar:" + +#: 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 "Rotatie:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "Voorwaarts" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "West" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40 +msgid "South" +msgstr "Zuid" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41 +msgid "East" +msgstr "Oost" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42 +msgid "North" +msgstr "Noord" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46 +msgid "Scale:" +msgstr "Schaal:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50 +msgid "Zoom mode:" +msgstr "Zoom modus:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52 +msgid "Zoomed in" +msgstr "Ingezoomd" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53 +msgid "Zoomed out" +msgstr "Uitgezoomd" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "Altijd ingezoomd" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55 +msgid "Never zoomed" +msgstr "Altijd uitgezoomd" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4 +msgid "Score Panel" +msgstr "Score Paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "Tijd Paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22 +msgid "Timer:" +msgstr "Timer:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25 +msgid "Show elapsed time" +msgstr "Laat verstreken tijd zien" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "Stem Paneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "Alpha na stemmen:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Wapenpaneel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Vervagen na:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 +msgid "Never" +msgstr "Nooit" + +#: 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 "Vervagingseffect:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +msgid "EF^None" +msgstr "EF^Geen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Schuiven" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Alpha" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "Wapeniconen:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "Toon wapen-ID als:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44 +msgid "SHOWAS^None" +msgstr "SHOWAS^Geen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45 +msgid "Number" +msgstr "Nummer" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46 +msgid "Bind" +msgstr "Binden" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Nauwkeurigheid tonen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Ammunitie tonen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Ammunitie balk kleur:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Ammunitie alpha:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "Paneel HUD Instellingen" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "Paneel achtergrond standaards:" + +#: 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 +msgid "Disable" +msgstr "Uitschakelen" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:591 +msgid "Color:" +msgstr "Kleur:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:599 +msgid "Border size:" +msgstr "Grootte rand:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "Teamkleur:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:625 +msgid "Test team color in configure mode" +msgstr "Test teamkleur in aanpassingsmodus" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:628 +msgid "Padding:" +msgstr "Opvulling:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "HUD Werf:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +msgid "DOCK^Disabled" +msgstr "DOCK^Uitgeschakeld" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +msgid "DOCK^Small" +msgstr "DOCK^Klein" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +msgid "DOCK^Medium" +msgstr "DOCK^Gemiddeld" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +msgid "DOCK^Large" +msgstr "DOCK^Groot" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "Raster instellingen" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Lijn panelen uit met grid" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Raster grootte:" + +#: 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 "Beëindig panel HUD modus" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Multiplayer" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Servers" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5 +msgid "Create" +msgstr "Maak aan" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Demo’s" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5 +msgid "Player Setup" +msgstr "Speler Instellingen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Game modus" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Match instellingen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Tijdslimiet:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "Gebruik map specificaties" + +#: 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 "Punten limiet:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "Aantal spelers:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Aantal bots" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Bot vaardigheid" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "Botlike" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "Beginner" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "Je zal winnen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Je kan winnen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Je zou kunnen winnen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Geavanceerd" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Expert" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Pro" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Sluipmoordenaar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "Onmenselijk" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "Goddelijk" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "Mutaties..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:84 +msgid "Advanced settings..." +msgstr "Geavanceerde instellingen..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105 +msgid "Map list:" +msgstr "Map lijst:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "Selecteer alles" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "Selecteer niets" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Start Multiplayer!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "Vlaggen limiet:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "Levens:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "Rondes:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Goals:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "Frag limiet:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "Geavanceerde server instellingen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Game instellingen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "Observeren toestaan" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "Spawn shild:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Snelheid:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Team modus instellingen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Friendly fire schaal:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Virtuele friendly fire (alleen effect)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "Friendly fire straf" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "Virtuele straf (alleen effect)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "Teams:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "Map stemmen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "Geen stemmen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "2 keuzes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 keuzes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 keuzes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 keuzes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 keuzes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 keuzes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 keuzes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 keuzes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "Simple meerderheid wint vcall" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Map informatie" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "Volledige item distributie" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "Alleen MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Titel:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Auteur:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Bevat:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Game modus:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 +msgid "Close" +msgstr "Dichtdoen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Speel" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "Mutaties" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "Alle Wapens Arena" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Meeste Wapens Arena" + +#: 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 "Ontwijken" + +#: 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 "Raket Vliegen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "Geen start wapens" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "Lage zwaartekracht" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170 +msgid "Cloaked" +msgstr "Onzichtbaarheid" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "Haak" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173 +msgid "Midair" +msgstr "In de lucht" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176 +msgid "Vampire" +msgstr "Vampier" + +#: 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 "Wapens blijven" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "Bloedverlies" + +#: 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^Geen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Gameplay mutaties:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "Wapen & item mutaties:" + +#: 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 "Wapen arena’s:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "Normaal (geen arena)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "met lazer" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Speciale arenas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "Meeste wapens" + +#: 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 "Demo’s opnemen tijdens het spelen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +msgid "Filter:" +msgstr "Filter:" + +#: 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 "Legen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Benchmark demo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Meedoen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +msgid "SRVS^Empty" +msgstr "SRVS^Leeg" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +msgid "SRVS^Full" +msgstr "SRVS^Vol" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "Pauze" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Adres:" + +#: 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:317 +msgid "Join!" +msgstr "Meedoen!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "Server Informatie" + +#: 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 gemodificeerde instellingen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 +msgid "Official settings" +msgstr "Officiële configuratie" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197 +msgid "N/A (can't connect)" +msgstr "N/A (kan geen verbinding maken)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "not supported (can't connect)" +msgstr "niet ondersteund (kan geen verbinding maken)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "not supported (won't encrypt)" +msgstr "niet ondersteund (zal niet versleutelen)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "supported (will encrypt)" +msgstr "ondersteund (zal versleutelen)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "supported (won't encrypt)" +msgstr "ondersteund (zal niet versleutelen)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "requested (will encrypt)" +msgstr "verzocht (zal versleutelen)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "requested (won't encrypt)" +msgstr "verzocht (zal niet versleutelen)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223 +msgid "required (can't connect)" +msgstr "verplicht (kan geen verbinding maken)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225 +msgid "required (will encrypt)" +msgstr "verplicht (zal versleutelen)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:246 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:269 +msgid "Players:" +msgstr "Spelers:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:254 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +msgid "Type:" +msgstr "Type:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 +msgid "Map:" +msgstr "Map:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 +msgid "Gameplay:" +msgstr "Gameplay:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 +msgid "Bots:" +msgstr "Bots:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 +msgid "Mod:" +msgstr "Mod:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 +msgid "Version:" +msgstr "Versie:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "Ping:" +msgstr "Ping:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "CA:" +msgstr "CA:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Key:" +msgstr "Sleutel:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 +msgid "Encryption:" +msgstr "Versleuteling:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "Personage:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "Kijkhoek (FoV):" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Schommelend zicht:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Zoom factor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Zoom snelheid:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Wapen instellingen..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "Richtkruis:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143 +msgid "Per weapon" +msgstr "Per wapen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "Richtkruis grootte:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Richtkruis alpha:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Richtkruis kleur:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Activeer middenpunt" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Grootte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Tref test:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +msgid "HTST^None" +msgstr "HTST^Geen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "Echt mikken" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Tegenstanders" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Wegwijzers instellingen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "Ga naar HUD editor" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Forceer modellen:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +msgid "MDL^None" +msgstr "MDL^Geen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +msgid "MDL^Custom" +msgstr "MDL^Aangepast" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +msgid "MDL^All" +msgstr "MDL^Alle" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "Schakel bloederigheid uit" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Gibs:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +msgid "GIBS^None" +msgstr "GIBS^Geen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "GIBS^Weinig" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +msgid "GIBS^Many" +msgstr "GIBS^Veel" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +msgid "GIBS^Lots" +msgstr "GIBS^Erg veel" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Pijn spatten:" + +#: 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 "Meteen toepassen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Wegwijzers" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Show base waypoints" +msgstr "Laat wegwijzers zien voor de basis" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 +msgid "Waypoint scale:" +msgstr "Wegwijzer schaal:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint alpha:" +msgstr "Wegwijzer alpha:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Show names:" +msgstr "Laat namen zien:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 +msgid "Teammates" +msgstr "Teammaten" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 +msgid "All players" +msgstr "Alle spelers" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "Wapen instellingen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Wapen prioriteit lijst:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Omhoog" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Omlaag" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "Gebruik de prioriteit lijst voor het wisselen van wapens " + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Automatisch wapens wisselen bij oppakken" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "Wapen positie" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "Links" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "Rechts" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "Spiegel zicht horizontaal" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "Nieuws" + +#: 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_quit.c:4 +msgid "Quit" +msgstr "Afsluiten" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "Weet je zeker dat je wil afsluiten?" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "Ja" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "Nee" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Instellingen" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Input" + +#: qcsrc/menu/xonotic/dialog_settings.c:19 +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +msgid "Video" +msgstr "Video" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Effecten" + +#: qcsrc/menu/xonotic/dialog_settings.c:21 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:4 +msgid "Audio" +msgstr "Geluid" + +#: qcsrc/menu/xonotic/dialog_settings.c:22 +#: qcsrc/menu/xonotic/dialog_settings_network.c:4 +msgid "Network" +msgstr "Netwerk" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Misc" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "Volume:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Muziek:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +msgid "VOL^Ambient:" +msgstr "VOL^Achtergrond:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Info:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Items:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Pijn:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Speler:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Schoten:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Spraak:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Wapens:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Frequentie:" + +#: 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 "Kanalen:" + +#: 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 "Stereo omwisselen" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Koptelefoon modus" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Ruimtelijke stemmen:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +msgid "VOCS^None" +msgstr "VOCS^Geen" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +msgid "VOCS^Taunts" +msgstr "VOCS^Honen" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +msgid "VOCS^All" +msgstr "VOCS^Alles" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Hoon afstand:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +msgid "RNG^Very short" +msgstr "RNG^Erg kort" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +msgid "RNG^Short" +msgstr "RNG^Kort" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +msgid "RNG^Normal" +msgstr "RNG^Normaal" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +msgid "RNG^Long" +msgstr "RNG^Lang" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +msgid "RNG^Full" +msgstr "RNG^Vol" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Automatisch honen" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Tijd notificatie:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +msgid "WRN^None" +msgstr "WRN^Geen" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:168 +msgid "1 minute" +msgstr "1 minuut" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:169 +msgid "5 minutes" +msgstr "5 minuten" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:170 +msgid "WRN^Both" +msgstr "WRN^Beiden" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Tref indicator" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Menu geluiden" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Kwaliteit voorinstellingen:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +msgid "PRE^OMG!" +msgstr "PRE^" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:42 +msgid "PRE^Low" +msgstr "PRE^Laag" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +msgid "PRE^Medium" +msgstr "PRE^Middel" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +msgid "PRE^Normal" +msgstr "PRE^Normaal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +msgid "PRE^High" +msgstr "PRE^Hoog" + +#: 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^Uitstekend" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "Geometrie detail:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +msgid "DET^Lowest" +msgstr "DET^Laagste" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +msgid "DET^Low" +msgstr "DET^Laag" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +msgid "DET^Normal" +msgstr "DET^Normaal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +msgid "DET^Good" +msgstr "DET^Goed" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +msgid "DET^Best" +msgstr "DET^Beste" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +msgid "DET^Insane" +msgstr "DET^Geweldig" + +#: 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^Uitgeschakeld" + +#: 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 "Textuur resolutie:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:73 +msgid "RES^Leet" +msgstr "RES^" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:74 +msgid "RES^Lowest" +msgstr "RES^Laagste" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +msgid "RES^Low" +msgstr "RES^Laag" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +msgid "RES^Normal" +msgstr "RES^Normaal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +msgid "RES^Good" +msgstr "RES^Goed" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +msgid "RES^Best" +msgstr "RES^Beste" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "Voorkom textuur compressie met kwaliteitsverlies" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:100 +msgid "Anisotropy:" +msgstr "Anisotropie" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:102 +msgid "ANISO^Disabled" +msgstr "ANISO^Uitgeschakeld" + +#: 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 "Deeltjes kwaliteit" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Deeltjes afstand" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "Decals" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "Afstand:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Tijd:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "Gebuik " + +#: 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 "Glans" + +#: 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 "Reflecties" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Vervaagd" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +msgid "REFL^Good" +msgstr "REFL^Goed" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Scherp" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Laat oppervlaktes zien" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Geen dynamische verlichting" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Flash blend approximation" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Real-time dynamische verlichting" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "Schaduwen" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "Real-time wereld verlichting" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Gebruik normal maps" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "Zachte schaduwen" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "Coronas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:174 +msgid "Use Occlusion Queries" +msgstr "Gebruik Occlusion Queries" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:176 +msgid "Bloom" +msgstr "Bloom" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:178 +msgid "High Dynamic Range (HDR)" +msgstr "Hoog dynamisch bereik (HDR)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:182 +msgid "Motion blur:" +msgstr "Bewegingsonscherpte:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:188 +msgid "Damage blur:" +msgstr "Schadeonscherpte" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Toetsen:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Verander toets..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Aanpassen..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Gevoeligheid:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "UI muis snelheid:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Muis filter" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Invert muis" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "Gebruik joystick input" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "Gebruik joystick input" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "\"console activeren\" sluit deze ook weer" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 +msgid "User defined key bind" +msgstr "Keybind van gebruiker" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Opdracht bij drukken:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Opdracht bij loslaten:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Opslaan" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Annuleren" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "Menu thema’s:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Laat huidige tijd zien" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Laat huidige datum zien" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "Laat frames per seconde zien" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Snelheidsmeter" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "qu/s (verborgen)" + +#: 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 "knopen" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Laat versnellingsmeter zien" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Versnellingsmeter schaal" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Minimaliseer input latentie" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Geavanceerde instellingen" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Cvar filter:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Cvar" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Waarde:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 +msgid "Description:" +msgstr "Omschrijving:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Client beweging voorspelling" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Netwerk grafiek tonen" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Netwerk snelheid:" + +#: 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 "Langzaam ADSL" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:38 +msgid "Fast ADSL" +msgstr "Snel ADSL" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:39 +msgid "Broadband" +msgstr "Breedband" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Inkomende pakketten/s" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "HTTP downloads:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Downloads:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Snelheid (kB/s):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "Client UDP poort:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Resolutie:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Tekst/UI afmetingen:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +msgid "SZ^Unreadable" +msgstr "SZ^Onleesbaar" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +msgid "SZ^Tiny" +msgstr "SZ^Minuscuul" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +msgid "SZ^Little" +msgstr "SZ^Miniem" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +msgid "SZ^Small" +msgstr "SZ^Klein" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +msgid "SZ^Medium" +msgstr "SZ^Gemiddeld" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +msgid "SZ^Large" +msgstr "SZ^Aanzienlijk" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +msgid "SZ^Huge" +msgstr "SZ^Groot" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +msgid "SZ^Gigantic" +msgstr "SZ^Gigantisch" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +msgid "SZ^Colossal" +msgstr "SZ^Kolossaal" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "Kleurdiepte:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "Volledig scherm" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "Verticale synchronisatie" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:49 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "Gebruik OpenGL 2.0 shaders (GLSL)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:52 +msgid "Use GLSL to handle color control" +msgstr "Gebruik GLSL voor gamma correctie" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:56 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Vertex Buffer Objecten (VBOs)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +msgid "VBO^Off" +msgstr "VBO^Uit" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:60 +msgid "Vertices, some Tris (compatible)" +msgstr "Vertices, sommige Tris (compatibel)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices" +msgstr "Vertices" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:64 +msgid "Vertices and Triangles" +msgstr "Vertices en Tris" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "Depth first:" +msgstr "Diepte eerst:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +msgid "DF^Disabled" +msgstr "DF^Uitgeschakeld" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:70 +msgid "DF^World" +msgstr "DF^Wereld" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:71 +msgid "DF^All" +msgstr "DF^Alles" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Disable multithreaded OpenGL" +msgstr "Schakel multithreaded OpenGL uit" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:77 +msgid "Wait for GPU to finish each frame" +msgstr "Wacht op GPU voor elk frame" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:80 +msgid "Brightness:" +msgstr "Helderheid:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:83 +msgid "Contrast:" +msgstr "Contrast:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:86 +msgid "Gamma:" +msgstr "Gamma:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:89 +msgid "Contrast boost:" +msgstr "Verhoog contrast:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:92 +msgid "Saturation:" +msgstr "Verzadiging:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:98 +msgid "LIT^Ambient:" +msgstr "LIT^Omgevingslicht" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:101 +msgid "Intensity:" +msgstr "Intensiteit:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Singleplayer" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "Instant actie! (random map met bots)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Start Singleplayer!" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Winnaar" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Team Selectie" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "aansluiten bij het ‘beste’ team (autoselect)" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "rood" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "blauw" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "geel" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "roze" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "observeren" + +#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "Druk deze knop niet meer in!" + +#: qcsrc/menu/xonotic/maplist.c:278 +msgid "" +"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" +msgstr "" +"He? Kan (m is NULL) niet spelen. Opnieuw filteren zodat dit niet weer " +"gebeurt.\n" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "%s zijn Xonotic Server" + +#: qcsrc/menu/xonotic/maplist.c:291 +msgid "" +"Huh? Can't play this (invalid game type). Refiltering so this won't happen " +"again.\n" +msgstr "" +"He? Kan (ongeldige spel modus) niet spelen. Opnieuw filteren zodat dit niet " +"weer gebeurt.\n" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "<no model found>" +msgstr "<geen model gevonden>" + +#: qcsrc/menu/xonotic/serverlist.c:360 +msgid "Remove" +msgstr "Verwijderen" + +#: qcsrc/menu/xonotic/serverlist.c:362 +msgid "Bookmark" +msgstr "Bookmark" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Ping" +msgstr "Ping" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Host name" +msgstr "Server naam" + +#: qcsrc/menu/xonotic/serverlist.c:520 +msgid "Map" +msgstr "Map" + +#: qcsrc/menu/xonotic/serverlist.c:521 +msgid "Type" +msgstr "Type" + +#: qcsrc/menu/xonotic/serverlist.c:522 +msgid "Players" +msgstr "Spelers" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "<TITLE>" +msgstr "<TITEL>" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "<AUTEUR>" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +msgid "VOL^OFF" +msgstr "VOL^UIT" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +msgid "VOL^MAX" +msgstr "OL^MAX" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "%s dB" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: qcsrc/menu/xonotic/util.qc:270 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "HTTP verzoek ontvangen voor ongeldig id %d.\n" + +#: qcsrc/menu/xonotic/util.qc:285 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "fout bij ontvangen update melding: status is %d\n" + +#: qcsrc/menu/xonotic/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "fout: HTML ontvangen in plaats van update melding\n" + +#: qcsrc/menu/xonotic/util.qc:295 +msgid "error: received carriage returns from update notification server\n" +msgstr "fout: enters ontvangen van update meldingsserver" + +#: qcsrc/menu/xonotic/util.qc:316 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"Update kan gedownload worden bij:\n" +"%s\n" + +#: qcsrc/menu/xonotic/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Automatisch map info aanmaken voor nieuwe maps..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "Update nu naar %s!" + +#: qcsrc/menu/xonotic/util.qc:509 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"^1ERROR: Textuurcompressie is nodig maar niet ondersteund.\n" +"^1Verwacht grafische problemen.\n" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Arena" +msgstr "Arena" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Assault" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Capture The Flag" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Clan Arena" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Deathmatch" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Domination" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Freeze Tag" +msgstr "Freeze Tag" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Keepaway" +msgstr "Keepaway" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Key Hunt" +msgstr "Key Hunt" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "Last Man Standing" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexball" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Onslaught" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Race" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "Race CTS" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "Runematch" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Team Deathmatch" + +#: qcsrc/menu/xonotic/util.qc:565 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "@!#%'n Tuba Smijten" + +#: qcsrc/menu/xonotic/util.qc:583 +msgid "Background:" +msgstr "Achtergrond" + +#: 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 "Standaard" + +#: qcsrc/menu/xonotic/util.qc:596 +msgid "Use default" +msgstr "Gebruik standaard" + +#: qcsrc/menu/xonotic/util.qc:616 +msgid "Team Color:" +msgstr "Team Kleur:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Activeer paneel" + +#: qcsrc/server/w_crylink.qc:2 +msgid "Crylink" +msgstr "Crylink" + +#: qcsrc/server/w_crylink.qc:645 +#, c-format +msgid "%s succeeded at self-destructing themself with the Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:650 +#, c-format +msgid "%s could not hide from %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:652 +#, c-format +msgid "%s was too close to %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:654 +#, c-format +msgid "%s took a close look at %s's Crylink" +msgstr "" + +#: qcsrc/server/w_electro.qc:2 +msgid "Electro" +msgstr "Electro" + +#: qcsrc/server/w_electro.qc:503 +#, c-format +msgid "%s could not remember where they put plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:505 +#, c-format +msgid "%s played with plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:512 +#, c-format +msgid "%s just noticed %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:514 +#, c-format +msgid "%s got in touch with %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:519 +#, c-format +msgid "%s felt the electrifying air of %s's combo" +msgstr "" + +#: qcsrc/server/w_electro.qc:521 +#, c-format +msgid "%s got too close to %s's blue beam" +msgstr "" + +#: qcsrc/server/w_electro.qc:523 +#, c-format +msgid "%s was blasted by %s's blue beam" +msgstr "" + +#: qcsrc/server/w_fireball.qc:2 +msgid "Fireball" +msgstr "Fireball" + +#: qcsrc/server/w_fireball.qc:392 +#, c-format +msgid "%s forgot about some firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:394 qcsrc/server/w_hlac.qc:223 +#, c-format +msgid "%s should have used a smaller gun" +msgstr "" + +#: qcsrc/server/w_fireball.qc:401 +#, c-format +msgid "%s tried to catch %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:403 +#, c-format +msgid "%s fatefully ignored %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:410 +#, c-format +msgid "%s could not hide from %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:412 +#, c-format +msgid "%s saw the pretty lights of %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:415 +#, c-format +msgid "%s got too close to %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:417 +#, c-format +msgid "%s tasted %s's fireball" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:2 +msgid "Mortar" +msgstr "Mortar" + +#: qcsrc/server/w_grenadelauncher.qc:357 +#, c-format +msgid "%s tried out his own grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:359 +#, c-format +msgid "%s detonated" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:365 +#, c-format +msgid "%s didn't see %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:367 +#, c-format +msgid "%s almost dodged %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:369 +#, c-format +msgid "%s ate %s's grenade" +msgstr "" + +#: qcsrc/server/w_hagar.qc:2 +msgid "Hagar" +msgstr "Hagar" + +#: qcsrc/server/w_hagar.qc:185 qcsrc/server/w_seeker.qc:523 +#, c-format +msgid "%s played with tiny rockets" +msgstr "" + +#: qcsrc/server/w_hagar.qc:189 +#, c-format +msgid "%s hoped %s's missiles wouldn't bounce" +msgstr "" + +#: qcsrc/server/w_hagar.qc:191 +#, c-format +msgid "%s was pummeled by %s" +msgstr "" + +#: qcsrc/server/w_hlac.qc:2 +msgid "Heavy Laser Assault Cannon" +msgstr "Heavy Laser Assault Cannon" + +#: qcsrc/server/w_hlac.qc:225 +#, c-format +msgid "%s was cut down by %s" +msgstr "" + +#: qcsrc/server/w_hook.qc:2 +msgid "Grappling Hook" +msgstr "Grappling Hook" + +#: 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/server/w_hook.qc:269 +#, c-format +msgid "%s has run into %s's gravity bomb" +msgstr "" + +#: qcsrc/server/w_laser.qc:2 +msgid "Laser" +msgstr "Laser" + +#: qcsrc/server/w_laser.qc:285 +#, c-format +msgid "%s lasered themself to hell" +msgstr "" + +#: qcsrc/server/w_laser.qc:289 +#, c-format +msgid "%s was cut in half by %s's gauntlet" +msgstr "" + +#: qcsrc/server/w_laser.qc:291 +#, c-format +msgid "%s was lasered to death by %s" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:2 +msgid "Mine Layer" +msgstr "Mine Layer" + +#: qcsrc/server/w_minelayer.qc:438 qcsrc/server/w_rocketlauncher.qc:480 +#, c-format +msgid "%s exploded" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:442 +#, c-format +msgid "%s got too close to %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:444 +#, c-format +msgid "%s almost dodged %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:446 +#, c-format +msgid "%s stepped on %s's mine" +msgstr "" + +#: qcsrc/server/w_minstanex.qc:2 +msgid "MinstaNex" +msgstr "MinstaNex" + +#: qcsrc/server/w_minstanex.qc:259 qcsrc/server/w_nex.qc:226 +#, c-format +msgid "%s has been vaporized by %s" +msgstr "" + +#: qcsrc/server/w_nex.qc:2 +msgid "Nex" +msgstr "Nex" + +#: qcsrc/server/w_porto.qc:2 +msgid "Port-O-Launch" +msgstr "Port-O-Launch" + +#: qcsrc/server/w_porto.qc:295 +#, c-format +msgid "%s felt %s doing the impossible to him" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:2 +msgid "Rocket Launcher" +msgstr "Rocket Launcher" + +#: qcsrc/server/w_rocketlauncher.qc:484 +#, c-format +msgid "%s got too close to %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:486 +#, c-format +msgid "%s almost dodged %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:488 +#, c-format +msgid "%s ate %s's rocket" +msgstr "" + +#: qcsrc/server/w_seeker.qc:2 +msgid "T.A.G. Seeker" +msgstr "T.A.G. Seeker" + +#: qcsrc/server/w_seeker.qc:527 +#, c-format +msgid "%s ran into %s's flac" +msgstr "" + +#: qcsrc/server/w_seeker.qc:529 +#, c-format +msgid "%s was tagged by %s" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:2 +msgid "Shotgun" +msgstr "Shotgun" + +#: qcsrc/server/w_shotgun.qc:183 +#, c-format +msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:185 +#, c-format +msgid "%s was gunned by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:2 +msgid "Sniper Rifle" +msgstr "Sniper Rifle" + +#: qcsrc/server/w_sniperrifle.qc:321 +#, c-format +msgid "%s shot themself automatically" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:323 +#, c-format +msgid "%s sniped themself somehow" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:330 +#, c-format +msgid "%s failed to hide from %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:332 +#, c-format +msgid "%s died in %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:339 +#, c-format +msgid "%s failed to hide from %s's rifle" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:344 +#, c-format +msgid "%s got hit in the head by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:346 qcsrc/server/w_uzi.qc:291 +#, c-format +msgid "%s was sniped by %s" +msgstr "" + +#: qcsrc/server/w_tuba.qc:2 +#, c-format +msgid "@!#%'n Tuba" +msgstr "@!#%'n Tuba" + +#: qcsrc/server/w_tuba.qc:260 +#, c-format +msgid "%s hurt his own ears with the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_tuba.qc:264 +#, c-format +msgid "%s died of %s's great playing on the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_uzi.qc:2 +msgid "Machine Gun" +msgstr "Machine Gun" + +#: qcsrc/server/w_uzi.qc:293 +#, c-format +msgid "%s was riddled full of holes by %s" +msgstr "" + +#~ msgid "Waypoint settings:" +#~ msgstr "Wegwijzer instellingen" + +#~ msgid "%d/%d" +#~ msgstr "%d/%d" diff --git a/menu.dat.pt.po b/menu.dat.pt.po new file mode 100644 index 000000000..d5c111997 --- /dev/null +++ b/menu.dat.pt.po @@ -0,0 +1,2828 @@ +# 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: Xontoic 0.1preview\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-07 07:50+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Ricardo 'Hellgardia' Silva <ricardo.mccs@gmail.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: Portuguese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "erro: o estado é &d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Uso: menu_cmd command..., onde estão possíveis comandos:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " sync - recarrega todas as cvars no menu actual" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr " directmenu ITEM - selecciona um item do menu como o principal\n" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "erro a criar curl handle" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +"Comando inválido. Para uma lista de comandos suportados, escrever menu_cmd " +"help.\n" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "Browser não inicializado!" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "" +"NOTA: marca texto %s demasiado larga para etiqueta, condensada por factor " +"%f\n" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Item %d" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "modificado" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4MQ Informação da Build %s\n" + +#: 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 "Nível %d: %s" + +#: qcsrc/menu/xonotic/cvarlist.c:85 +msgid "will be saved to config.cfg" +msgstr "vai ser guardado para config.cfg" + +#: qcsrc/menu/xonotic/cvarlist.c:87 +msgid "will not be saved" +msgstr "não será guardado" + +#: qcsrc/menu/xonotic/cvarlist.c:89 +msgid "private" +msgstr "privado" + +#: qcsrc/menu/xonotic/cvarlist.c:91 +msgid "engine setting" +msgstr "definição do motor" + +#: qcsrc/menu/xonotic/cvarlist.c:93 +msgid "read only" +msgstr "apenas ler" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Créditos" + +#: 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_firstrun.c:4 +msgid "Welcome" +msgstr "Bem-Vindo" + +#: 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_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Linguagem do texto:" + +#: 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 "Nome:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:69 +msgid "Save settings" +msgstr "Guardar Definições" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "Painel de munições" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Mostrar munições:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Mostrar apenas o tipo de munição actual" + +#: 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 "Esquerda" + +#: 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 "Direita" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Painel de Conversa" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "Entradas na Conversa:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Tamanho da Conversa:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "Tempo de vida da Conversa:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "Som de aviso de Conversa" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Painel de Informação do Motor" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Informação do Motor:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "Usar um algorítmo médio para os fps" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Painel Vida/Armadura" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +msgid "Enable status bar" +msgstr "Activar barra de estado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +msgid "Status bar alignment:" +msgstr "Alinhar barra de estado:" + +#: 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 "Para Dentro" + +#: 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 "Para Fora" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +msgid "Icon alignment:" +msgstr "Alinhamento dos Icones" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Trocar posição da vida e armadura" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "Painel de Info de Mensagens" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "Informação de mensagens:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "Trocar alinhamento" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Painel dos Icones de Mod" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "Painel de Notificações" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "Notificações:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "Imprimir notificações na consola também" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "Trocar ordem de notificações" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "Tempo de vida de cada entrada:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "Desaparecimento de cada entrada:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Painel de Powerups" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "Trocar posição do escudo e da força" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "Painel das Teclas Pressionadas" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "Painel desactivado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "Painel activado quando espectador" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 +msgid "Panel always enabled" +msgstr "Painel sempre activado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "Forçar aspecto:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Painel do Cronómetro de Corrida" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "Painel do Radar" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "Painel activo em jogos de equipa" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29 +msgid "Radar:" +msgstr "Radar:" + +#: 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 "Alfa:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36 +msgid "Rotation:" +msgstr "Rotação:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "Para a frente" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "Para oeste" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40 +msgid "South" +msgstr "Para sul" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41 +msgid "East" +msgstr "Para este" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42 +msgid "North" +msgstr "Para norte" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46 +msgid "Scale:" +msgstr "Escala:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50 +msgid "Zoom mode:" +msgstr "Modo de ampliação:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52 +msgid "Zoomed in" +msgstr "Ampliado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53 +msgid "Zoomed out" +msgstr "Não-Ampliado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "Sempre ampliado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55 +msgid "Never zoomed" +msgstr "Nunca ampliado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4 +msgid "Score Panel" +msgstr "Painel de Pontos" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "Painel Temporizador" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22 +msgid "Timer:" +msgstr "Temporizador:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25 +msgid "Show elapsed time" +msgstr "Mostrar tempo passado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "Painel de votos" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "Alfa após votagem:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Painel das Armas" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Desaparecer após:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 +msgid "Never" +msgstr "Nunca" + +#: 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 "Efeito de desaparecimento" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +#, fuzzy +msgid "EF^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Deslocador" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Alfa" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "Icones das armas" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "Mostra o ID da arma como:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44 +#, fuzzy +msgid "SHOWAS^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45 +msgid "Number" +msgstr "Número" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46 +msgid "Bind" +msgstr "Ligar" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Mostrar Pontaria" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Mostrar Munições" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Cor da barra de munições:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Cor da barra alfa:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "Configuração do painel do HUD" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "Fundo do painel por defeito:" + +#: 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 +msgid "Disable" +msgstr "Desactivar" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:591 +msgid "Color:" +msgstr "Cor:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:599 +msgid "Border size:" +msgstr "Tamanho do limite:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "Cor da Equipa:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:625 +msgid "Test team color in configure mode" +msgstr "Testa cor da equipa no modo de configuração" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:628 +msgid "Padding:" +msgstr "Padding:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "Local do HUD:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +#, fuzzy +msgid "DOCK^Disabled" +msgstr "Desligado" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +#, fuzzy +msgid "DOCK^Small" +msgstr "Pequena" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +#, fuzzy +msgid "DOCK^Medium" +msgstr "Média" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +#, fuzzy +msgid "DOCK^Large" +msgstr "Grande" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "Definições da Rede:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Fixar paineis à Rede" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Tamanho da Rede:" + +#: 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 "Sair da configuração" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Multi-jogador" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Servidores" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5 +msgid "Create" +msgstr "Criar" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Demos" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5 +msgid "Player Setup" +msgstr "Configuração do Jogador" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Tipo de jogo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Definições de jogo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Tempo limite:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "Usar definição específica do mapa" + +#: 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 "Limite de pontos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "Slots para Jogadores:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Número de jogadores controlados pelo computador:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Nível de dificuldade:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "Bot" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "Iniciado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "Vais ganhar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Podes ganhar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Talvez ganhes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Avançado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Perito" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Profissional" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Assassino" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "Desumano" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "Divinal" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "Mutators..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:84 +msgid "Advanced settings..." +msgstr "Definições avançadas..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105 +msgid "Map list:" +msgstr "Lista de mapas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "Seleccionar todos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "Seleccionar nenhum" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Começar Multijogador!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "Limite de capturas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "Vidas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "Voltas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Golos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "Limite de Frags:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "Definições avançadas do servidor" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Definições de Jogo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "Permitir espectador" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "Protecção de Spawn:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Velocidade do jogo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Definições de Jogo de Equipa:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Escala de Dano nos aliados:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Dano nos Aliados Virtual (Apenas o efeito)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "Penalização por Dano nos Aliados:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "Penalidade Virtual (Apenas o efeito)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "Equipas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "Votação de mapa:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "Sem votação" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "2 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 escolhas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "Maioria ganha vcall" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Informação do Mapa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "Colocação total dos items" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "Apenas MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Título:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Autor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Características:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Modos de jogo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 +msgid "Close" +msgstr "Fechar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Jogar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "Mutators" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "Arena com Todas as Armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Arena com Maior Parte das Armas" + +#: 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 "Desvio" + +#: 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 "Voar com Rockets" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "Sem armas iniciais" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "Pouca gravidade" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170 +msgid "Cloaked" +msgstr "Escondido" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "Gancho" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173 +msgid "Midair" +msgstr "A meio do ar" + +#: 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 "Armas ficam" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "Perda de sangue" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202 +msgid "Jet pack" +msgstr "Jetpack" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98 +#, fuzzy +msgid "MUT^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Mutators de jogabilidade" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "Mutators de armas e items" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199 +msgid "Grappling hook" +msgstr "Gancho de trepar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215 +msgid "Weapon arenas:" +msgstr "Arenas de Armas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "Regular (não arena específica)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "com laser" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Arenas Especiais:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "Maior parte das Armas" + +#: 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 "Gravar demos enquanto joga" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +msgid "Filter:" +msgstr "Filtrar:" + +#: 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 "Limpar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Demo temporizado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Juntar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +#, fuzzy +msgid "SRVS^Empty" +msgstr "Vazio" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +#, fuzzy +msgid "SRVS^Full" +msgstr "Total" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "Pausar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Endereço:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:65 +msgid "Info..." +msgstr "Informação..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 +msgid "Join!" +msgstr "Juntar!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "Informação do Servidor" + +#: 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 definições modificadas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 +msgid "Official settings" +msgstr "Definições oficiais" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197 +msgid "N/A (can't connect)" +msgstr "N/A (não conseguiu ligar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "not supported (can't connect)" +msgstr "não é suportado (não conseguiu ligar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "not supported (won't encrypt)" +msgstr "não suportado (não encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "supported (will encrypt)" +msgstr "suportado (vai encriptar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "supported (won't encrypt)" +msgstr "suportado (não encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "requested (will encrypt)" +msgstr "pedido (encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "requested (won't encrypt)" +msgstr "pedido (não encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223 +msgid "required (can't connect)" +msgstr "necessário (não consegue ligar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225 +msgid "required (will encrypt)" +msgstr "necessário (encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:246 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:269 +msgid "Players:" +msgstr "Jogadores:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:254 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +msgid "Type:" +msgstr "Tipo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 +msgid "Map:" +msgstr "Mapa:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 +msgid "Gameplay:" +msgstr "Jogabilidade:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 +msgid "Bots:" +msgstr "Jogadores controlados pelo computador:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 +msgid "Mod:" +msgstr "Mod:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 +msgid "Version:" +msgstr "Versão:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "Ping:" +msgstr "Ping:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "CA:" +msgstr "CA:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Key:" +msgstr "Chave:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 +msgid "Encryption:" +msgstr "Encriptação:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "Modelo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "Campo de visão:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Ver tremor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Factor de Ampliação (ZOOM):" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Velocidade de Ampliação (ZOOM):" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Definições das Armas..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "Mira:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143 +msgid "Per weapon" +msgstr "Por arma" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "Tamanho da mira:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Alfa da mira:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Cor da mira:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Activar ponto central" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Tamanho:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Teste de Tiro:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +#, fuzzy +msgid "HTST^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "PontariaCerta" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Inimigos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Configurar caminhos..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "Entrar no editor do HUD" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Forçar modelos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +#, fuzzy +msgid "MDL^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +#, fuzzy +msgid "MDL^Custom" +msgstr "Modificado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +#, fuzzy +msgid "MDL^All" +msgstr "Todos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "Desactivar sangue/violencia" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Tripas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +#, fuzzy +msgid "GIBS^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "Poucas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +#, fuzzy +msgid "GIBS^Many" +msgstr "Muitas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +#, fuzzy +msgid "GIBS^Lots" +msgstr "Imensas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Dano Colateral:" + +#: 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 "Aplicar imediatamente" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Caminhos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Show base waypoints" +msgstr "Mostrar caminhos base" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 +msgid "Waypoint scale:" +msgstr "Escala dos Caminhos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint alpha:" +msgstr "Caminhos alfa:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Show names:" +msgstr "Mostrar nomes:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 +msgid "Teammates" +msgstr "Companheiros de Equipa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 +msgid "All players" +msgstr "Todos os jogadores" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "Definições de Armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Prioridade das Armas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Cima" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Baixo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "Usar lista de prioridades para ciclo entre as armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Mudar armas automaticamente ao apanhar do chão" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "Desenhar modelo da arma na 1a pessoa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "Alinhamento à esquerda" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "Alinhamento à direita" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "Trocar vista horizontal" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "Novidades" + +#: 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_quit.c:4 +msgid "Quit" +msgstr "Sair" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "Tens a certeza que queres sair?" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "Sim" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "Não" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Definições" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Input" + +#: qcsrc/menu/xonotic/dialog_settings.c:19 +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +msgid "Video" +msgstr "Vídeo" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Efeitos" + +#: qcsrc/menu/xonotic/dialog_settings.c:21 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:4 +msgid "Audio" +msgstr "Som" + +#: qcsrc/menu/xonotic/dialog_settings.c:22 +#: qcsrc/menu/xonotic/dialog_settings_network.c:4 +msgid "Network" +msgstr "Rede" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Misc" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "Principal:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Música:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +#, fuzzy +msgid "VOL^Ambient:" +msgstr "Som Ambiente:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Informação:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Items:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Dor:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Jogador:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Tiros:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Voz:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Armas:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Frequência:" + +#: 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 "Canais:" + +#: 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 "Trocar Stereo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Modo de Headphones" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Vozes espaciais:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +#, fuzzy +msgid "VOCS^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +#, fuzzy +msgid "VOCS^Taunts" +msgstr "Taunts" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +#, fuzzy +msgid "VOCS^All" +msgstr "Todos" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Nível dos taunts:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +#, fuzzy +msgid "RNG^Very short" +msgstr "Muito baixo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +#, fuzzy +msgid "RNG^Short" +msgstr "Baixo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +#, fuzzy +msgid "RNG^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +#, fuzzy +msgid "RNG^Long" +msgstr "Alto" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +#, fuzzy +msgid "RNG^Full" +msgstr "Total" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Taunts Automáticos" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Aviso de tempo:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +#, fuzzy +msgid "WRN^None" +msgstr "Nenhum" + +#: 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 minutos" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:170 +#, fuzzy +msgid "WRN^Both" +msgstr "Ambos" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Indicador de tiro acertado" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Sons do menu" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Predefinição de Qualidade:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +#, fuzzy +msgid "PRE^OMG!" +msgstr "OMG!" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:42 +#, fuzzy +msgid "PRE^Low" +msgstr "Baixa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +#, fuzzy +msgid "PRE^Medium" +msgstr "Média" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +#, fuzzy +msgid "PRE^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +#, fuzzy +msgid "PRE^High" +msgstr "Alta" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:46 +#, fuzzy +msgid "PRE^Ultra" +msgstr "Ultra" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:48 +#, fuzzy +msgid "PRE^Ultimate" +msgstr "Máxima" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "Detalhes geométricos:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +#, fuzzy +msgid "DET^Lowest" +msgstr "Mínimo" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +#, fuzzy +msgid "DET^Low" +msgstr "Baixa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +#, fuzzy +msgid "DET^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +#, fuzzy +msgid "DET^Good" +msgstr "Bom" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +#, fuzzy +msgid "DET^Best" +msgstr "Melhores" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +#, fuzzy +msgid "DET^Insane" +msgstr "Máximo" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:62 +msgid "Antialiasing:" +msgstr "Antialiasing:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:64 +#, fuzzy +msgid "AA^Disabled" +msgstr "Desligado" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:65 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:103 +msgid "2x" +msgstr "2 passagens" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:66 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:104 +msgid "4x" +msgstr "4 passagens" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:70 +msgid "Texture resolution:" +msgstr "Resolução das texturas:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:73 +#, fuzzy +msgid "RES^Leet" +msgstr "Leet" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:74 +#, fuzzy +msgid "RES^Lowest" +msgstr "Mínimo" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +#, fuzzy +msgid "RES^Low" +msgstr "Baixa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +#, fuzzy +msgid "RES^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +#, fuzzy +msgid "RES^Good" +msgstr "Bom" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +#, fuzzy +msgid "RES^Best" +msgstr "Melhores" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "Evitar compressão de Texturas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:100 +msgid "Anisotropy:" +msgstr "Filtro Anisotrópico:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:102 +#, fuzzy +msgid "ANISO^Disabled" +msgstr "Desligado" + +#: 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 "Qualidade das Partículas:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Distancia visível das Partículas:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "Símbolos" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "Distância:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Tempo:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "Usar lightmaps" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:133 +msgid "Deluxe mapping" +msgstr "Mapeamento Deluxe" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "Lustro" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "Mapeamento Offset" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "Mapeamento Relief" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:143 +msgid "Reflections:" +msgstr "Reflexos:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Grau de Blur" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +#, fuzzy +msgid "REFL^Good" +msgstr "Bom" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Grau de Definição" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Mostrar superfícies" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Iluminação dinâmica desligada" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Aproximação Flash Blend" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Iluminação dinâmica em tempo real" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "Sombras" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "Iluminação do mundo em tempo real" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Usar mapas normais" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "Sombras Suaves" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "Coronas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:174 +msgid "Use Occlusion Queries" +msgstr "Usar Consultas Oclusão" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:176 +msgid "Bloom" +msgstr "Bloom" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:178 +msgid "High Dynamic Range (HDR)" +msgstr "High Dynamic Range (HDR)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:182 +msgid "Motion blur:" +msgstr "Distorção por movimento:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:188 +msgid "Damage blur:" +msgstr "Distorção por dano:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Bindings de Teclas" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Mudar tecla..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Editar..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Sensibilidade:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "Velocidade do rato:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Filtro do Rato" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Inverter Rato" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "Usar input do joystick" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "Desligar aceleração de Rato do SO" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "\"entrar na consola\" também fecha" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 +msgid "User defined key bind" +msgstr "Keybinds definidas pelo utilizador" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Comando quando carregado:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Comando quando largado:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Guardar" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Cancelar" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "Skins de Menu:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Mostrar tempo corrente" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Mostrar data corrente" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "Mostrar Frames por Segundo" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Medidor de Velocidade" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "qu/s (escondido)" + +#: 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 "nós" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Mostrar accelerómetro" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Escala do accelerómetro:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Minimizar latência de entrada" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Definições avançadas" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Filtro de Cvar" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Definição:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Valor:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 +msgid "Description:" +msgstr "Descrição:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Previsão de movimento pelo Cliente" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Mostrar gráfico-net" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Velocidade da Rede:" + +#: 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 Rápida" + +#: 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 "Pacotes Entrada /s" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "Transferências via HTTP:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Transferências:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Velocidade (kB/s):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "Port UDP do Cliente:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Resolução:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Font/UI - tamanho:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +#, fuzzy +msgid "SZ^Unreadable" +msgstr "Ilegível" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +#, fuzzy +msgid "SZ^Tiny" +msgstr "Minuscula" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +#, fuzzy +msgid "SZ^Little" +msgstr "Muito Pequena" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +#, fuzzy +msgid "SZ^Small" +msgstr "Pequena" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +#, fuzzy +msgid "SZ^Medium" +msgstr "Média" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +#, fuzzy +msgid "SZ^Large" +msgstr "Grande" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +#, fuzzy +msgid "SZ^Huge" +msgstr "Enorme" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +#, fuzzy +msgid "SZ^Gigantic" +msgstr "Gigante" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +#, fuzzy +msgid "SZ^Colossal" +msgstr "Colossal" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "Profundidade da cor:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "Ecrã Inteiro" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "Sincronização Vertical" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:49 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "Usar shaders OpenGL2.0 (GLSL)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:52 +msgid "Use GLSL to handle color control" +msgstr "Usar GLSL para o controlo de cores" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:56 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Objectos Vertex Buffers (VBOs)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +#, fuzzy +msgid "VBO^Off" +msgstr "Desligado" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:60 +msgid "Vertices, some Tris (compatible)" +msgstr "Vértices, alguns Triângulos (compatível)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices" +msgstr "Vértices" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:64 +msgid "Vertices and Triangles" +msgstr "Vértices e Triângulos" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "Depth first:" +msgstr "Profundidade primeiro:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +#, fuzzy +msgid "DF^Disabled" +msgstr "Desligado" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:70 +#, fuzzy +msgid "DF^World" +msgstr "Mundo" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:71 +#, fuzzy +msgid "DF^All" +msgstr "Todos" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Disable multithreaded OpenGL" +msgstr "Desactivar OpenGL em múltiplos threads" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:77 +msgid "Wait for GPU to finish each frame" +msgstr "Esperar que a placa gráfica termine cada frame" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:80 +msgid "Brightness:" +msgstr "Brilho:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:83 +msgid "Contrast:" +msgstr "Contraste:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:86 +msgid "Gamma:" +msgstr "Gamma:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:89 +msgid "Contrast boost:" +msgstr "Contraste - Boost" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:92 +msgid "Saturation:" +msgstr "Saturação da Cor:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:98 +#, fuzzy +msgid "LIT^Ambient:" +msgstr "Som Ambiente:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:101 +msgid "Intensity:" +msgstr "Intensidade:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Um Jogador" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "Acção Instantânea! (Mapa ao acaso contra o computador)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Começar Um só Jogador!" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Vencedor" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Selecção de Equipa" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "juntar 'melhor' equipa (selecção automática)" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "vermelha" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "azul" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "amarela" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "rosa" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "espectador" + +#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "Não voltar a carregar neste botão!" + +#: 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? Não posso jogar isto (m é NULL). Voltando a filtrar de maneira a que " +"isto não se repitanovamente.\n" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "Servidor de Xonotic do %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? Não posso jogar isto (tipo de jogo inválido). Voltando a filtrar de " +"maneira a que isto não se repitanovamente.\n" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "<no model found>" +msgstr "<nenhum modelo encontrado>" + +#: qcsrc/menu/xonotic/serverlist.c:360 +msgid "Remove" +msgstr "Remover" + +#: qcsrc/menu/xonotic/serverlist.c:362 +msgid "Bookmark" +msgstr "Marcar" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Ping" +msgstr "Ping" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Host name" +msgstr "Nome do Host" + +#: qcsrc/menu/xonotic/serverlist.c:520 +msgid "Map" +msgstr "Mapa" + +#: qcsrc/menu/xonotic/serverlist.c:521 +msgid "Type" +msgstr "Tipo" + +#: qcsrc/menu/xonotic/serverlist.c:522 +msgid "Players" +msgstr "Jogadores" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "<TITLE>" +msgstr "<TÍTULO>" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "<AUTOR>" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +#, fuzzy +msgid "VOL^OFF" +msgstr "DESLIGADO" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +#, fuzzy +msgid "VOL^MAX" +msgstr "MÀX" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "%s dB" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: qcsrc/menu/xonotic/util.qc:270 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "Recebido um pedido HTTP de um id inválido %d. \n" + +#: qcsrc/menu/xonotic/util.qc:285 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "erro ao receber notificação: o estado e %d\n" + +#: qcsrc/menu/xonotic/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "erro: recebido HTML em vez de notificação de actualização\n" + +#: qcsrc/menu/xonotic/util.qc:295 +msgid "error: received carriage returns from update notification server\n" +msgstr "" +"erro: recebido 'carriage return' de um servidor de notificação de " +"actualização\n" + +#: qcsrc/menu/xonotic/util.qc:316 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"Actualização pode ser transferida em:\n" +"%s\n" + +#: qcsrc/menu/xonotic/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Informação de mapas auto-gerada para novos mapas..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "Actualize para %s agora!" + +#: qcsrc/menu/xonotic/util.qc:509 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"^1ERRO: A compressão de texturas é necessária mas não é suportada.\n" +"^1Possíveis problemas visuais.\n" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Arena" +msgstr "Arena" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Assalto" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Captura a Bandeira" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Clan Arena" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Combate até à Morte" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Domínio" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Freeze Tag" +msgstr "Freeze Tag" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Keepaway" +msgstr "Keepaway" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Key Hunt" +msgstr "Procura da Chave" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "O Ultimo a Cair" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexball" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Investida" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Corrida" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "Corrida CTS" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "Luta de Runas" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Combate até à Morte por Equipas" + +#: qcsrc/menu/xonotic/util.qc:565 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "@!#%'n Tuba Throwing" + +#: qcsrc/menu/xonotic/util.qc:583 +msgid "Background:" +msgstr "Fundo:" + +#: 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 "Por Defeito" + +#: qcsrc/menu/xonotic/util.qc:596 +msgid "Use default" +msgstr "Usar defeito" + +#: qcsrc/menu/xonotic/util.qc:616 +msgid "Team Color:" +msgstr "Cor da Equipa:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Actival painel" + +#: qcsrc/server/w_crylink.qc:2 +msgid "Crylink" +msgstr "Crylink" + +#: qcsrc/server/w_crylink.qc:645 +#, c-format +msgid "%s succeeded at self-destructing themself with the Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:650 +#, c-format +msgid "%s could not hide from %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:652 +#, c-format +msgid "%s was too close to %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:654 +#, c-format +msgid "%s took a close look at %s's Crylink" +msgstr "" + +#: qcsrc/server/w_electro.qc:2 +msgid "Electro" +msgstr "Electro" + +#: qcsrc/server/w_electro.qc:503 +#, c-format +msgid "%s could not remember where they put plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:505 +#, c-format +msgid "%s played with plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:512 +#, c-format +msgid "%s just noticed %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:514 +#, c-format +msgid "%s got in touch with %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:519 +#, c-format +msgid "%s felt the electrifying air of %s's combo" +msgstr "" + +#: qcsrc/server/w_electro.qc:521 +#, c-format +msgid "%s got too close to %s's blue beam" +msgstr "" + +#: qcsrc/server/w_electro.qc:523 +#, c-format +msgid "%s was blasted by %s's blue beam" +msgstr "" + +#: qcsrc/server/w_fireball.qc:2 +msgid "Fireball" +msgstr "Fireball" + +#: qcsrc/server/w_fireball.qc:392 +#, c-format +msgid "%s forgot about some firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:394 qcsrc/server/w_hlac.qc:223 +#, c-format +msgid "%s should have used a smaller gun" +msgstr "" + +#: qcsrc/server/w_fireball.qc:401 +#, c-format +msgid "%s tried to catch %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:403 +#, c-format +msgid "%s fatefully ignored %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:410 +#, c-format +msgid "%s could not hide from %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:412 +#, c-format +msgid "%s saw the pretty lights of %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:415 +#, c-format +msgid "%s got too close to %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:417 +#, c-format +msgid "%s tasted %s's fireball" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:2 +msgid "Mortar" +msgstr "Mortar" + +#: qcsrc/server/w_grenadelauncher.qc:357 +#, c-format +msgid "%s tried out his own grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:359 +#, c-format +msgid "%s detonated" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:365 +#, c-format +msgid "%s didn't see %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:367 +#, c-format +msgid "%s almost dodged %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:369 +#, c-format +msgid "%s ate %s's grenade" +msgstr "" + +#: qcsrc/server/w_hagar.qc:2 +msgid "Hagar" +msgstr "Hagar" + +#: qcsrc/server/w_hagar.qc:185 qcsrc/server/w_seeker.qc:523 +#, c-format +msgid "%s played with tiny rockets" +msgstr "" + +#: qcsrc/server/w_hagar.qc:189 +#, c-format +msgid "%s hoped %s's missiles wouldn't bounce" +msgstr "" + +#: qcsrc/server/w_hagar.qc:191 +#, c-format +msgid "%s was pummeled by %s" +msgstr "" + +#: qcsrc/server/w_hlac.qc:2 +msgid "Heavy Laser Assault Cannon" +msgstr "Heavy Laser Assault Cannon" + +#: qcsrc/server/w_hlac.qc:225 +#, c-format +msgid "%s was cut down by %s" +msgstr "" + +#: qcsrc/server/w_hook.qc:2 +msgid "Grappling Hook" +msgstr "Grappling Hook" + +#: 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/server/w_hook.qc:269 +#, c-format +msgid "%s has run into %s's gravity bomb" +msgstr "" + +#: qcsrc/server/w_laser.qc:2 +msgid "Laser" +msgstr "Laser" + +#: qcsrc/server/w_laser.qc:285 +#, c-format +msgid "%s lasered themself to hell" +msgstr "" + +#: qcsrc/server/w_laser.qc:289 +#, c-format +msgid "%s was cut in half by %s's gauntlet" +msgstr "" + +#: qcsrc/server/w_laser.qc:291 +#, c-format +msgid "%s was lasered to death by %s" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:2 +msgid "Mine Layer" +msgstr "Mine Layer" + +#: qcsrc/server/w_minelayer.qc:438 qcsrc/server/w_rocketlauncher.qc:480 +#, c-format +msgid "%s exploded" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:442 +#, c-format +msgid "%s got too close to %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:444 +#, c-format +msgid "%s almost dodged %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:446 +#, c-format +msgid "%s stepped on %s's mine" +msgstr "" + +#: qcsrc/server/w_minstanex.qc:2 +msgid "MinstaNex" +msgstr "MinstaNex" + +#: qcsrc/server/w_minstanex.qc:259 qcsrc/server/w_nex.qc:226 +#, c-format +msgid "%s has been vaporized by %s" +msgstr "" + +#: qcsrc/server/w_nex.qc:2 +msgid "Nex" +msgstr "Nex" + +#: qcsrc/server/w_porto.qc:2 +msgid "Port-O-Launch" +msgstr "Port-O-Launch" + +#: qcsrc/server/w_porto.qc:295 +#, c-format +msgid "%s felt %s doing the impossible to him" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:2 +msgid "Rocket Launcher" +msgstr "Rocket Launcher" + +#: qcsrc/server/w_rocketlauncher.qc:484 +#, c-format +msgid "%s got too close to %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:486 +#, c-format +msgid "%s almost dodged %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:488 +#, c-format +msgid "%s ate %s's rocket" +msgstr "" + +#: qcsrc/server/w_seeker.qc:2 +msgid "T.A.G. Seeker" +msgstr "T.A.G. Seeker" + +#: qcsrc/server/w_seeker.qc:527 +#, c-format +msgid "%s ran into %s's flac" +msgstr "" + +#: qcsrc/server/w_seeker.qc:529 +#, c-format +msgid "%s was tagged by %s" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:2 +msgid "Shotgun" +msgstr "Shotgun" + +#: qcsrc/server/w_shotgun.qc:183 +#, c-format +msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:185 +#, c-format +msgid "%s was gunned by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:2 +msgid "Sniper Rifle" +msgstr "Sniper Rifle" + +#: qcsrc/server/w_sniperrifle.qc:321 +#, c-format +msgid "%s shot themself automatically" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:323 +#, c-format +msgid "%s sniped themself somehow" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:330 +#, c-format +msgid "%s failed to hide from %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:332 +#, c-format +msgid "%s died in %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:339 +#, c-format +msgid "%s failed to hide from %s's rifle" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:344 +#, c-format +msgid "%s got hit in the head by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:346 qcsrc/server/w_uzi.qc:291 +#, c-format +msgid "%s was sniped by %s" +msgstr "" + +#: qcsrc/server/w_tuba.qc:2 +#, c-format +msgid "@!#%'n Tuba" +msgstr "@!#%'n Tuba" + +#: qcsrc/server/w_tuba.qc:260 +#, c-format +msgid "%s hurt his own ears with the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_tuba.qc:264 +#, c-format +msgid "%s died of %s's great playing on the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_uzi.qc:2 +msgid "Machine Gun" +msgstr "Machine Gun" + +#: qcsrc/server/w_uzi.qc:293 +#, c-format +msgid "%s was riddled full of holes by %s" +msgstr "" + +#~ msgid "Waypoint settings:" +#~ msgstr "Definições dos caminhos:" + +#~ msgid "%d/%d" +#~ msgstr "%d/%d" diff --git a/menu.dat.ro.po b/menu.dat.ro.po new file mode 100644 index 000000000..0703f7933 --- /dev/null +++ b/menu.dat.ro.po @@ -0,0 +1,2825 @@ +# Xonotic Romanian Translation. +# Copyright (C) 2011 +# This file is distributed under the same license as the PACKAGE package. +# MirceaKitsune <sonichedgehog_hyperblast00@yahoo.com>, 2011. +# +#, fuzzy +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: MirceaKitsune <sonichedgehog_hyperblast00@yahoo.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "eroare: statusul este %d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Utilizare: menu_cmd comanda..., unde comenzile posibile sunt:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " sync - reincarca toate variabilele de pe pagina de meniu curenta\n" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr "" +" directmenu OBIECT - selecteaza un obiect din meniu ca obiect principal\n" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "eroare in crearea unei manevre curl" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +"Comanda invalida. Pentru o lista cu comenzile suportate, scrieti menu_cmd " +"ajutor (in consola).\n" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "Browserul nu a fost initializat!" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "ATENTIE: eticheta text %s este prea mare, condensata cu %f\n" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Obiect %d" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "personalizat" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4MQC Informatii compilare: %s\n" + +#: 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 "Nivelul %d: %s" + +#: qcsrc/menu/xonotic/cvarlist.c:85 +msgid "will be saved to config.cfg" +msgstr "se va salva catre config.cfg" + +#: qcsrc/menu/xonotic/cvarlist.c:87 +msgid "will not be saved" +msgstr "nu se va salva" + +#: qcsrc/menu/xonotic/cvarlist.c:89 +msgid "private" +msgstr "privat" + +#: qcsrc/menu/xonotic/cvarlist.c:91 +msgid "engine setting" +msgstr "setari motor" + +#: qcsrc/menu/xonotic/cvarlist.c:93 +msgid "read only" +msgstr "numai de citit" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Credite" + +#: 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_firstrun.c:4 +msgid "Welcome" +msgstr "Bun venit" + +#: 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_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Limba text:" + +#: 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 "Nume:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:69 +msgid "Save settings" +msgstr "Salvare setari" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "Fereastra Munitii" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Afisaj mutitii:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Afiseaza numai munitia armei selectate" + +#: 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 "Stanga" + +#: 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 "Dreapta" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Fereastra Chat" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "Intrari chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Marime 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 "Sunet chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Fereastra Informatii Motor" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Informatii motor:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "Utilizare algoritm centrare FPS" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Fereastra Viata/Armura" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +msgid "Enable status bar" +msgstr "Activare bara de statut" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +msgid "Status bar alignment:" +msgstr "Aliniere bara de statut:" + +#: 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 "Interior" + +#: 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 "Exterior" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +msgid "Icon alignment:" +msgstr "Aliniere iconuri:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Oglindire pozitie viata/armura" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "Fereastra Informatii" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "Informatii:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "Oglindire pozitie" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Fereastra Iconuri Moduri" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "Fereastra Notificatii" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "Notificatii:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "Printare notificatii si in consola" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "Inversare ordine notificatii" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "Durata notificare:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "Durata atenuare notificatie:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Fereastra Powerup" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "Oglindire pozitie iconuri" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "Fereastra Taste Apasate" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "Dezactivata" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "Activa pentru spectatori" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 +msgid "Panel always enabled" +msgstr "Mereu activa" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "Aspect fortat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Fereastra Timp Curse" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "Fereastra Radar" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "Activa in jocuri de echipa" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29 +msgid "Radar:" +msgstr "Radar:" + +#: 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 "Opacitate:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36 +msgid "Rotation:" +msgstr "Rotatie:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "Inainte" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "Vest" + +#: 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 "Marime:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50 +msgid "Zoom mode:" +msgstr "Modalitate Zoom:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52 +msgid "Zoomed in" +msgstr "In interior" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53 +msgid "Zoomed out" +msgstr "In exterior" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "Permanent activ" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55 +msgid "Never zoomed" +msgstr "Niciodata activ" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4 +msgid "Score Panel" +msgstr "Fereastra Scor" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "Fereastra Timp" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22 +msgid "Timer:" +msgstr "Timp:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25 +msgid "Show elapsed time" +msgstr "Afisaj timp ramas" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "Fereastra Voturi" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "Opacitate dupa vot:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Fereastra Arme" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Atenuare opacitate dupa:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 +msgid "Never" +msgstr "Niciodata" + +#: 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 "Atenuare opacitate:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +#, fuzzy +msgid "EF^None" +msgstr "Nici una" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Glisare" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Opacitate" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "Iconuri arme:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "Afisaj ID arme ca:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44 +#, fuzzy +msgid "SHOWAS^None" +msgstr "Nici una" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45 +msgid "Number" +msgstr "Numar" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46 +msgid "Bind" +msgstr "Tasta" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Afisaj Acuratete" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Afisaj Munitie" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Culoare bara munitie:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Opacitate bara munitie:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "Configurate Interfata (HUD)" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "Setari normale fond:" + +#: 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 +msgid "Disable" +msgstr "Dezactivat" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:591 +msgid "Color:" +msgstr "Culoare:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:599 +msgid "Border size:" +msgstr "Marime borduri:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "Culoare echipa:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:625 +msgid "Test team color in configure mode" +msgstr "Testare culoare echipa in timpul configurarii" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:628 +msgid "Padding:" +msgstr "Ajustare:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "Magnet ferestre:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +#, fuzzy +msgid "DOCK^Disabled" +msgstr "Dezactivat" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +#, fuzzy +msgid "DOCK^Small" +msgstr "Mic" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +#, fuzzy +msgid "DOCK^Medium" +msgstr "Mediu" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +#, fuzzy +msgid "DOCK^Large" +msgstr "Mare" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "Setari grila:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Utilizare grila pentru ferestre" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Marime grila:" + +#: 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 "Iesire configurare" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Multiplayer" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Servere" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5 +msgid "Create" +msgstr "Creare Joc" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Demonstratii" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5 +msgid "Player Setup" +msgstr "Setari Jucator" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Mod joc:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Setari meci:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Limita de timp:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "Utilizare setari harta" + +#: 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 "Limita de puncte:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "Numar maxim jucatori:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Numar boti:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Dificultate boti:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "Nula" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "Incepator" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "Vei castiga" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Poti castiga" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Ai putea castiga" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Avansat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Expert" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Profesional" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Asasin" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "Inuman" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "Dumnezeiesc" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "Modificari speciale..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:84 +msgid "Advanced settings..." +msgstr "Setari avansate..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105 +msgid "Map list:" +msgstr "Lista harti:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "Selecteaza totul" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "Golire selectie" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Pornire Joc Multiplayer!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "Limita de capturi:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "Vieti:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "Ture:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Goluri:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "Limita de omoruri:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "Setari avansate server" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Setari joc" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "Perimite spectatori" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "Scut pornire:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Viteza joc:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Setari echipe:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Scara foc prietenesc:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Foc prietenesc virtual (efect)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "Penalitate foc prietenesc:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "Penalitate virtuala (efect)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "Echipe:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "Vot harti:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "Vot dezactivat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "2 alegeri" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 alegeri" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 alegeri" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 alegeri" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 alegeri" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 alegeri" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 alegeri" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 alageri" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "Majoritatea castiga mereu" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Informatii harta:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "Plasare obiecte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "Numai MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Titlu:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Autor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Trasaturi:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Moduri de joc:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 +msgid "Close" +msgstr "Inchidere" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Joaca" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "Modificari speciale" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "Toate armele" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Cele mai multe arme" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56 +#, c-format +msgid "%s Arena" +msgstr "Arena %s" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167 +msgid "Dodging" +msgstr "Satiruta laterala" + +#: 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 "Zbor Rachete" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "Fara arme initiale" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "Gravitatie scazuta" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170 +msgid "Cloaked" +msgstr "Jucatori transparenti" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "Carlig" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173 +msgid "Midair" +msgstr "Lovituri in aer" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176 +msgid "Vampire" +msgstr "Vampir" + +#: 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 "Arme persistente" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "Pierdere de sange" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202 +msgid "Jet pack" +msgstr "Reactie" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98 +#, fuzzy +msgid "MUT^None" +msgstr "Nici una" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Modificari speciale joc:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "Modificari speciale arme si obiecte:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199 +msgid "Grappling hook" +msgstr "Carlig" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215 +msgid "Weapon arenas:" +msgstr "Arene arme:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "Normal (fara arene)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "cu arma laser" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Arene speciale:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "Majoritatea armelor" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4 +msgid "Demo" +msgstr "Demonstratie" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28 +msgid "Record demos while playing" +msgstr "Creare demonstratii in timpul jocului" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +msgid "Filter:" +msgstr "Filtrare:" + +#: 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 "Curatare" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Timedemo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Alaturare" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +#, fuzzy +msgid "SRVS^Empty" +msgstr "Gol" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +#, fuzzy +msgid "SRVS^Full" +msgstr "Plin" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "Pauza" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Adresa:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:65 +msgid "Info..." +msgstr "Informatii..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 +msgid "Join!" +msgstr "Alaturare!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "Informatii 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: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 setari modificate" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 +msgid "Official settings" +msgstr "Setarile oficiale" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197 +msgid "N/A (can't connect)" +msgstr "N/A (nu se poate conecta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "not supported (can't connect)" +msgstr "nesuportat (nu se poate conecta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "not supported (won't encrypt)" +msgstr "nesuportat (nu se poate encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "supported (will encrypt)" +msgstr "suportat (se va encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "supported (won't encrypt)" +msgstr "suportat (nu se va encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "requested (will encrypt)" +msgstr "cerut (se va encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "requested (won't encrypt)" +msgstr "cerut (nu se va encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223 +msgid "required (can't connect)" +msgstr "necesar (nu se poate conecta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225 +msgid "required (will encrypt)" +msgstr "necesar (se va encripta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:246 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:269 +msgid "Players:" +msgstr "Jucatori:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:254 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +msgid "Type:" +msgstr "Tip:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 +msgid "Map:" +msgstr "Harta:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 +msgid "Gameplay:" +msgstr "Mod:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 +msgid "Bots:" +msgstr "Boti:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 +msgid "Mod:" +msgstr "Modificare:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 +msgid "Version:" +msgstr "Versiune:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "Ping:" +msgstr "Latenta:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "CA:" +msgstr "CA:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Key:" +msgstr "Cheie:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 +msgid "Encryption:" +msgstr "Encriptare:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "Model:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "Camp vizual:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Miscare camera mers:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Factor Zoom:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Viteza Zoom:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Setari arme..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "Ochian:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143 +msgid "Per weapon" +msgstr "Depinde de arma" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "Marime ochian:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Opacitate ochian:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Culoare ochian:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Utilizare punct ochian" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Marime:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Detectare tinta:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +#, fuzzy +msgid "HTST^None" +msgstr "Nici una" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "TrueAim" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Dusmani" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Setari indicatoare..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "Editor interfata" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Modele jucator fortate:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +#, fuzzy +msgid "MDL^None" +msgstr "Nici una" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +#, fuzzy +msgid "MDL^Custom" +msgstr "Personalizat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +#, fuzzy +msgid "MDL^All" +msgstr "Toate" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "Dezactivare efecte violente" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Cotlete:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +#, fuzzy +msgid "GIBS^None" +msgstr "Nici unul" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "Putine" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +#, fuzzy +msgid "GIBS^Many" +msgstr "Multe" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +#, fuzzy +msgid "GIBS^Lots" +msgstr "Foarte multe" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Efect ranire:" + +#: 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 "Aplica imediat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Indicatoare" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Show base waypoints" +msgstr "Afisaj indicatoare de baza" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 +msgid "Waypoint scale:" +msgstr "Marime indicatoare:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint alpha:" +msgstr "Opacitate indicatoare:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Show names:" +msgstr "Afisaj nume:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 +msgid "Teammates" +msgstr "Coechipieri" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 +msgid "All players" +msgstr "Toti jucatorii" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "Setari arme" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Lista prioritate arme:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Sus" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Jos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "Utilizare lista pentru selectarea armelor" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Selectare automata a armelor obtinute" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "Afisaj model 1st person" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "Aliniere stanga" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "Aliniere dreapta" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "Oglindire orizontala ecran" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "Stiri" + +#: 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_quit.c:4 +msgid "Quit" +msgstr "Iesire" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "Sunteti sigur ca vreti sa iesiti?" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "Da" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "Nu" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Setari" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Control" + +#: qcsrc/menu/xonotic/dialog_settings.c:19 +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +msgid "Video" +msgstr "Video" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Efecte" + +#: 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 "Retea" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Altele" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "General:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Muzica:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +#, fuzzy +msgid "VOL^Ambient:" +msgstr "Ambianta:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Informatii:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Obiecte:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Durere:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Jucator:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Focuri de arma:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Voci:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Arme:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Frecventa:" + +#: 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 "Canale:" + +#: 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 "Inversare canale stereo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Mod casti audio" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Voci spatializate:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +#, fuzzy +msgid "VOCS^None" +msgstr "Nici una" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +#, fuzzy +msgid "VOCS^Taunts" +msgstr "Glume" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +msgid "VOCS^All" +msgstr "Toate" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Distanta voci:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +#, fuzzy +msgid "RNG^Very short" +msgstr "Foarte scurta" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +#, fuzzy +msgid "RNG^Short" +msgstr "Scurta" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +#, fuzzy +msgid "RNG^Normal" +msgstr "Normala" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +#, fuzzy +msgid "RNG^Long" +msgstr "Lunga" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +#, fuzzy +msgid "RNG^Full" +msgstr "Toate" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Glume automate" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Avertisment timp:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +#, fuzzy +msgid "WRN^None" +msgstr "Nici una" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:168 +msgid "1 minute" +msgstr "1 minut" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:169 +msgid "5 minutes" +msgstr "5 minute" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:170 +#, fuzzy +msgid "WRN^Both" +msgstr "Ambele" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Indicator lovituri" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Sunete meniu" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Setari calitate:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +#, fuzzy +msgid "PRE^OMG!" +msgstr "SFINTE!" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:42 +#, fuzzy +msgid "PRE^Low" +msgstr "Scazut" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +#, fuzzy +msgid "PRE^Medium" +msgstr "Mediu" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +#, fuzzy +msgid "PRE^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +#, fuzzy +msgid "PRE^High" +msgstr "Ridicat" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:46 +#, fuzzy +msgid "PRE^Ultra" +msgstr "Foarte ridicat" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:48 +#, fuzzy +msgid "PRE^Ultimate" +msgstr "Extrem de ridicat" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "Detaliu geometrie:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +#, fuzzy +msgid "DET^Lowest" +msgstr "Cel mai scazut" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +#, fuzzy +msgid "DET^Low" +msgstr "Scazut" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +#, fuzzy +msgid "DET^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +#, fuzzy +msgid "DET^Good" +msgstr "Ridicat" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +#, fuzzy +msgid "DET^Best" +msgstr "Cel mai ridicat" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +#, fuzzy +msgid "DET^Insane" +msgstr "Extrem" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:62 +msgid "Antialiasing:" +msgstr "Margini fine:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:64 +#, fuzzy +msgid "AA^Disabled" +msgstr "Dezactivat" + +#: 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 "Calitate texturi:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:73 +#, fuzzy +msgid "RES^Leet" +msgstr "Minima" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:74 +#, fuzzy +msgid "RES^Lowest" +msgstr "Cea mai joasa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +#, fuzzy +msgid "RES^Low" +msgstr "Joasa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +#, fuzzy +msgid "RES^Normal" +msgstr "Normala" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +#, fuzzy +msgid "RES^Good" +msgstr "Ridicata" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +#, fuzzy +msgid "RES^Best" +msgstr "Cea mai ridicata" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "Evitare compresie rapida texturi" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:100 +msgid "Anisotropy:" +msgstr "Filtrare anisotropica:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:102 +#, fuzzy +msgid "ANISO^Disabled" +msgstr "Dezactivat" + +#: 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 "Calicate particule:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Distanta particule:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "Semne" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "Distanta:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Durata:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "Utilizare lightmap" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:133 +msgid "Deluxe mapping" +msgstr "Texturi Deluxe" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "Suprafete lucioase" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "Relief" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "Detaliu relief" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:143 +msgid "Reflections:" +msgstr "Reflectii:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Blurate" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +#, fuzzy +msgid "REFL^Good" +msgstr "Bune" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Ascutite" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Afisaj suprafete" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Luminozitate dinamica dezactivata" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Luminozitate dinamica rapida" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Luminozitate dinamica in timp real" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "Umbre" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "Luminozitate ambienta in timp real" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Utilizare texturi normale" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "Umbre fine" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "Coroane lumini" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:174 +msgid "Use Occlusion Queries" +msgstr "Utilizare Ocluzii" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:176 +msgid "Bloom" +msgstr "Luminozitate moale" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:178 +msgid "High Dynamic Range (HDR)" +msgstr "Distanta Dinamica Inalta (HDR)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:182 +msgid "Motion blur:" +msgstr "Blurare viteza:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:188 +msgid "Damage blur:" +msgstr "Blurare ranire:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Taste:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Schimbare tasta..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Editare..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Sensitivitate:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "Viteza mouse in meniu:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Filtrare mouse" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Inversare mouse" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "Utilizare joystick" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "Dezactivare acceleratie mouse din OS" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "\"enter\" inchide si consola" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 +msgid "User defined key bind" +msgstr "Functionalitate tasta definita:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Commanda apasare tasta:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Commanda eliberare tasta:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Salvare" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Anulare" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "Stil meniu:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Afisaj ora" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Afisaj data" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "Afisaj cadre pe secunda" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Vitezometru" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "qu/s (ascuns)" + +#: 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 "noduri" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Afisaj metru acceleratie" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Marime metru acceleratie:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Minimizare latenta control" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Setari avansate" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Filtru variabile:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Setari:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Valoare:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 +msgid "Description:" +msgstr "Descriere:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Predictie miscare" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Afisaj grafic retea" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Viteza retea:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:35 +msgid "56k" +msgstr "56k" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:36 +msgid "ISDN" +msgstr "ISDN" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:37 +msgid "Slow ADSL" +msgstr "ADSL lent" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:38 +msgid "Fast ADSL" +msgstr "ADSL rapid" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:39 +msgid "Broadband" +msgstr "Cablu/Fibra optica" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Pachete intrare/secunda:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "Descarcari HTTP:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Descarcari simultane:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Viteza (kB/s):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "Port UDP client:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Rezolutie:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Marime font:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +#, fuzzy +msgid "SZ^Unreadable" +msgstr "Ilizibil" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +#, fuzzy +msgid "SZ^Tiny" +msgstr "Minuscul" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +#, fuzzy +msgid "SZ^Little" +msgstr "Foarte mic" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +#, fuzzy +msgid "SZ^Small" +msgstr "Mic" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +#, fuzzy +msgid "SZ^Medium" +msgstr "Mediu" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +#, fuzzy +msgid "SZ^Large" +msgstr "Mare" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +#, fuzzy +msgid "SZ^Huge" +msgstr "Foarte mare" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +#, fuzzy +msgid "SZ^Gigantic" +msgstr "Gigantic" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +#, fuzzy +msgid "SZ^Colossal" +msgstr "Colosal" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "Adancime culoare:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "Ecran plin" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "Sincronizare Verticala" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:49 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "Utilizare OpenGL 2.0 (GLSL)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:52 +msgid "Use GLSL to handle color control" +msgstr "Utilizare GLSL pentru culori" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:56 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Tampon Memorie Obiecte (VBOs)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +#, fuzzy +msgid "VBO^Off" +msgstr "Dezactivat" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:60 +msgid "Vertices, some Tris (compatible)" +msgstr "Puncte, unele Triunghiuri (compatibil)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices" +msgstr "Puncte" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:64 +msgid "Vertices and Triangles" +msgstr "Puncte si Triunghiuri" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "Depth first:" +msgstr "Calcul adancime:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +#, fuzzy +msgid "DF^Disabled" +msgstr "Dezactivat" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:70 +#, fuzzy +msgid "DF^World" +msgstr "Mediul" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:71 +#, fuzzy +msgid "DF^All" +msgstr "Totul" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Disable multithreaded OpenGL" +msgstr "Dezactiveaza OpenGL multi-core" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:77 +msgid "Wait for GPU to finish each frame" +msgstr "Asteapta ca GPU sa termine fiecare cadru" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:80 +msgid "Brightness:" +msgstr "Luminozitate:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:83 +msgid "Contrast:" +msgstr "Contrast:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:86 +msgid "Gamma:" +msgstr "Gama:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:89 +msgid "Contrast boost:" +msgstr "Exagerare contrast:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:92 +msgid "Saturation:" +msgstr "Saturatie:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:98 +#, fuzzy +msgid "LIT^Ambient:" +msgstr "Ambianta:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:101 +msgid "Intensity:" +msgstr "Intensitate:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Joc singular" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "Actiune instanta! (harta aleatorie cu boti)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Pornire Joc Singular!" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Castigator" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Selectie echipa" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "cea mai potrivita echipa (selectie automata)" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "rosu" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "albastru" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "galben" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "roz" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "spectator" + +#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "Nu mai apasati acest buton din nou!" + +#: 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? Nu se poate juca asta (m este NUL). Re-filtrez pentru a preveni asta pe " +"viitor.\n" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "Serverul Xonotic al lui %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? Nu se poate juca asta (tipul jocului este invalid). Re-filtrez pentru a " +"preveni asta pe viitor.\n" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "<no model found>" +msgstr "<nu a fost gasit nici un model>" + +#: qcsrc/menu/xonotic/serverlist.c:360 +msgid "Remove" +msgstr "Stergere" + +#: qcsrc/menu/xonotic/serverlist.c:362 +msgid "Bookmark" +msgstr "Favorit" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Ping" +msgstr "Latenta" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Host name" +msgstr "Nume server" + +#: qcsrc/menu/xonotic/serverlist.c:520 +msgid "Map" +msgstr "Harta" + +#: qcsrc/menu/xonotic/serverlist.c:521 +msgid "Type" +msgstr "Mod" + +#: qcsrc/menu/xonotic/serverlist.c:522 +msgid "Players" +msgstr "Jucatori" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "<TITLE>" +msgstr "<TITLU>" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "<AUTOR>" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +#, fuzzy +msgid "VOL^OFF" +msgstr "OPRIT" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +#, fuzzy +msgid "VOL^MAX" +msgstr "MAXIM" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "%s dB" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: qcsrc/menu/xonotic/util.qc:270 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "Primit cerere HTTP pentru un id invalid %d.\n" + +#: qcsrc/menu/xonotic/util.qc:285 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "eroare primire notificare update: statutul este %d\n" + +#: qcsrc/menu/xonotic/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "eroare: primit HTML in schimbul unei notificari de update\n" + +#: qcsrc/menu/xonotic/util.qc:295 +msgid "error: received carriage returns from update notification server\n" +msgstr "eroare: primit un mesaj eronat de la serverul de notificari update\n" + +#: qcsrc/menu/xonotic/util.qc:316 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"Un update se poate descarca aici:\n" +"%s\n" + +#: qcsrc/menu/xonotic/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Auto-generare mapinfo pentru hartile proaspat adaugate..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "Updatati la %s acum!" + +#: qcsrc/menu/xonotic/util.qc:509 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"^1EROARE: Comprimarea texturilor este necesara dar nu si suportata.\n" +"^1Asteptati-va la probleme vizuale.\n" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Arena" +msgstr "Arena" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Asalt" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Captureaza Steagul" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Clan Arena" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Meciul Mortii" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Dominatie" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Freeze Tag" +msgstr "Inghet" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Keepaway" +msgstr "Keepaway" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Key Hunt" +msgstr "Vanatoarea Cheilor" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "Ultimul Supravietuitor" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexball" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Onslaught" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Cursa" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "Cursa CTS" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "Runematch" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Meciul Mortii (in echipa)" + +#: qcsrc/menu/xonotic/util.qc:565 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "Arunca @!#%'n Tuba" + +#: qcsrc/menu/xonotic/util.qc:583 +msgid "Background:" +msgstr "Fundal:" + +#: 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 "Setare normala" + +#: qcsrc/menu/xonotic/util.qc:596 +msgid "Use default" +msgstr "Utilizare setare normala" + +#: qcsrc/menu/xonotic/util.qc:616 +msgid "Team Color:" +msgstr "Culoare echipa:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Activare panou" + +#: qcsrc/server/w_crylink.qc:2 +msgid "Crylink" +msgstr "Crylink" + +#: qcsrc/server/w_crylink.qc:645 +#, c-format +msgid "%s succeeded at self-destructing themself with the Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:650 +#, c-format +msgid "%s could not hide from %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:652 +#, c-format +msgid "%s was too close to %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:654 +#, c-format +msgid "%s took a close look at %s's Crylink" +msgstr "" + +#: qcsrc/server/w_electro.qc:2 +msgid "Electro" +msgstr "Electro" + +#: qcsrc/server/w_electro.qc:503 +#, c-format +msgid "%s could not remember where they put plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:505 +#, c-format +msgid "%s played with plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:512 +#, c-format +msgid "%s just noticed %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:514 +#, c-format +msgid "%s got in touch with %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:519 +#, c-format +msgid "%s felt the electrifying air of %s's combo" +msgstr "" + +#: qcsrc/server/w_electro.qc:521 +#, c-format +msgid "%s got too close to %s's blue beam" +msgstr "" + +#: qcsrc/server/w_electro.qc:523 +#, c-format +msgid "%s was blasted by %s's blue beam" +msgstr "" + +#: qcsrc/server/w_fireball.qc:2 +msgid "Fireball" +msgstr "Fireball" + +#: qcsrc/server/w_fireball.qc:392 +#, c-format +msgid "%s forgot about some firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:394 qcsrc/server/w_hlac.qc:223 +#, c-format +msgid "%s should have used a smaller gun" +msgstr "" + +#: qcsrc/server/w_fireball.qc:401 +#, c-format +msgid "%s tried to catch %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:403 +#, c-format +msgid "%s fatefully ignored %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:410 +#, c-format +msgid "%s could not hide from %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:412 +#, c-format +msgid "%s saw the pretty lights of %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:415 +#, c-format +msgid "%s got too close to %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:417 +#, c-format +msgid "%s tasted %s's fireball" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:2 +msgid "Mortar" +msgstr "Mortar" + +#: qcsrc/server/w_grenadelauncher.qc:357 +#, c-format +msgid "%s tried out his own grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:359 +#, c-format +msgid "%s detonated" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:365 +#, c-format +msgid "%s didn't see %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:367 +#, c-format +msgid "%s almost dodged %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:369 +#, c-format +msgid "%s ate %s's grenade" +msgstr "" + +#: qcsrc/server/w_hagar.qc:2 +msgid "Hagar" +msgstr "Hagar" + +#: qcsrc/server/w_hagar.qc:185 qcsrc/server/w_seeker.qc:523 +#, c-format +msgid "%s played with tiny rockets" +msgstr "" + +#: qcsrc/server/w_hagar.qc:189 +#, c-format +msgid "%s hoped %s's missiles wouldn't bounce" +msgstr "" + +#: qcsrc/server/w_hagar.qc:191 +#, c-format +msgid "%s was pummeled by %s" +msgstr "" + +#: qcsrc/server/w_hlac.qc:2 +msgid "Heavy Laser Assault Cannon" +msgstr "Heavy Laser Assault Cannon" + +#: qcsrc/server/w_hlac.qc:225 +#, c-format +msgid "%s was cut down by %s" +msgstr "" + +#: qcsrc/server/w_hook.qc:2 +msgid "Grappling Hook" +msgstr "Grappling Hook" + +#: 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/server/w_hook.qc:269 +#, c-format +msgid "%s has run into %s's gravity bomb" +msgstr "" + +#: qcsrc/server/w_laser.qc:2 +msgid "Laser" +msgstr "Laser" + +#: qcsrc/server/w_laser.qc:285 +#, c-format +msgid "%s lasered themself to hell" +msgstr "" + +#: qcsrc/server/w_laser.qc:289 +#, c-format +msgid "%s was cut in half by %s's gauntlet" +msgstr "" + +#: qcsrc/server/w_laser.qc:291 +#, c-format +msgid "%s was lasered to death by %s" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:2 +msgid "Mine Layer" +msgstr "Mine Layer" + +#: qcsrc/server/w_minelayer.qc:438 qcsrc/server/w_rocketlauncher.qc:480 +#, c-format +msgid "%s exploded" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:442 +#, c-format +msgid "%s got too close to %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:444 +#, c-format +msgid "%s almost dodged %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:446 +#, c-format +msgid "%s stepped on %s's mine" +msgstr "" + +#: qcsrc/server/w_minstanex.qc:2 +msgid "MinstaNex" +msgstr "MinstaNex" + +#: qcsrc/server/w_minstanex.qc:259 qcsrc/server/w_nex.qc:226 +#, c-format +msgid "%s has been vaporized by %s" +msgstr "" + +#: qcsrc/server/w_nex.qc:2 +msgid "Nex" +msgstr "Nex" + +#: qcsrc/server/w_porto.qc:2 +msgid "Port-O-Launch" +msgstr "Port-O-Launch" + +#: qcsrc/server/w_porto.qc:295 +#, c-format +msgid "%s felt %s doing the impossible to him" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:2 +msgid "Rocket Launcher" +msgstr "Rocket Launcher" + +#: qcsrc/server/w_rocketlauncher.qc:484 +#, c-format +msgid "%s got too close to %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:486 +#, c-format +msgid "%s almost dodged %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:488 +#, c-format +msgid "%s ate %s's rocket" +msgstr "" + +#: qcsrc/server/w_seeker.qc:2 +msgid "T.A.G. Seeker" +msgstr "T.A.G. Seeker" + +#: qcsrc/server/w_seeker.qc:527 +#, c-format +msgid "%s ran into %s's flac" +msgstr "" + +#: qcsrc/server/w_seeker.qc:529 +#, c-format +msgid "%s was tagged by %s" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:2 +msgid "Shotgun" +msgstr "Shotgun" + +#: qcsrc/server/w_shotgun.qc:183 +#, c-format +msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:185 +#, c-format +msgid "%s was gunned by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:2 +msgid "Sniper Rifle" +msgstr "Sniper Rifle" + +#: qcsrc/server/w_sniperrifle.qc:321 +#, c-format +msgid "%s shot themself automatically" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:323 +#, c-format +msgid "%s sniped themself somehow" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:330 +#, c-format +msgid "%s failed to hide from %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:332 +#, c-format +msgid "%s died in %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:339 +#, c-format +msgid "%s failed to hide from %s's rifle" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:344 +#, c-format +msgid "%s got hit in the head by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:346 qcsrc/server/w_uzi.qc:291 +#, c-format +msgid "%s was sniped by %s" +msgstr "" + +#: qcsrc/server/w_tuba.qc:2 +#, c-format +msgid "@!#%'n Tuba" +msgstr "@!#%'n Tuba" + +#: qcsrc/server/w_tuba.qc:260 +#, c-format +msgid "%s hurt his own ears with the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_tuba.qc:264 +#, c-format +msgid "%s died of %s's great playing on the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_uzi.qc:2 +msgid "Machine Gun" +msgstr "Machine Gun" + +#: qcsrc/server/w_uzi.qc:293 +#, c-format +msgid "%s was riddled full of holes by %s" +msgstr "" + +#~ msgid "Waypoint settings:" +#~ msgstr "Setari indicatoare:" + +#~ msgid "%d/%d" +#~ msgstr "%d/%d" diff --git a/menu.dat.ru.po b/menu.dat.ru.po new file mode 100644 index 000000000..3c3ef48e2 --- /dev/null +++ b/menu.dat.ru.po @@ -0,0 +1,2772 @@ +# Xonotic Menu +# Copyright (C) 2011 Team Xonotic +# This file is distributed under the same license as the Xonotic package. +# Lord Canistra <lordcanistra@gmail.com>, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: 0.1preview\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-07 07:50+0100\n" +"PO-Revision-Date: 2011-01-20 13:16+0300\n" +"Last-Translator: Nikoli <nikoli@lavabit.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "ошибка: статус %d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Использование: menu_cmd command..., где возможные команды:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " синх. - обновляет все cvar на текущей странице меню\n" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr " directmenu ITEM - определить элемент меню как главный элемент\n" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "ошибка при создании curl handle\n" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +"Неверная команда. Попробуйте menu_cmd help, чтобы получить список доступных " +"команд.\n" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "Браузер не запущен!" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "ВНИМАНИЕ: текст %s слишком широк для надписи, сжат до %f раз\n" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Предмет %d" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "особо" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4Сведения о сборке MQC: %s\n" + +#: 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 "Уровень %d: %s" + +#: qcsrc/menu/xonotic/cvarlist.c:85 +msgid "will be saved to config.cfg" +msgstr "будет сохранено в config.cfg" + +#: qcsrc/menu/xonotic/cvarlist.c:87 +msgid "will not be saved" +msgstr "не будет сохранено" + +# личное, частное +#: qcsrc/menu/xonotic/cvarlist.c:89 +msgid "private" +msgstr "личное" + +#: qcsrc/menu/xonotic/cvarlist.c:91 +msgid "engine setting" +msgstr "установка движка" + +#: qcsrc/menu/xonotic/cvarlist.c:93 +msgid "read only" +msgstr "только чтение" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Разработчики" + +#: 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 "ОК" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:4 +msgid "Welcome" +msgstr "Добро пожаловать" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:33 +msgid "" +"Welcome to Xonotic, please select your language preference and enter your " +"player name to get started. You can change these options later through the " +"menu system." +msgstr "" +"Добро пожаловать в Xonotic. Для начала, пожалуйста, выберите ваш язык и " +"введите ваше имя. Позже вы сможете изменить эти настройки в меню." + +#: qcsrc/menu/xonotic/dialog_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Язык меню:" + +#: 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 "Имя:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:69 +msgid "Save settings" +msgstr "Сохранить настройки:" + +# делать транслитерацию вместо перевода нежелательно, panel можно перевести как: +# область, табло, (приборная) доска, щит, лист, плата, плита, список +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "Панель боеприпасов" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Показ боеприпасов:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Показывать только текущий вид боеприпасов" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c: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 "Слева" + +#: 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 "Справа" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Панель чата" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "Записи в чате:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Размер чата:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "Время жизни:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "Звук чата:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Панель сведений о движке" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Сведения о движке:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "Исп. алгоритм усреднения для FPS" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Панель здоровья/брони" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +msgid "Enable status bar" +msgstr "Включить полосу состояния" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +msgid "Status bar alignment:" +msgstr "Выравнивание полосы состояния:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:42 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:42 +msgid "Inward" +msgstr "Внутрь" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:43 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:43 +msgid "Outward" +msgstr "Наружу" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +msgid "Icon alignment:" +msgstr "Выравнивание иконок:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Поменять местами здоровье и броню" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "Панель информационных сообщений" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "Инф. сообщения:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "Перевернуть выравнивание" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Панель иконок мода" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "Панель уведомлений" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "Уведомления:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "Также показывать уведомления в консоли" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "Обратить порядок уведомлений" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "Время видимости:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "Время исчезновения:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Панель бонусов" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "Поменять местами Силу и Щит" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "Панель нажатых кнопок" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "Отключена" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "Включена при наблюдении" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 +msgid "Panel always enabled" +msgstr "Всегда включена" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "Соотношение:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Панель Гоночного Таймера" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "Панель радара" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "Панель включена в командных играх" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29 +msgid "Radar:" +msgstr "Радар:" + +#: 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 "Прозрачность:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36 +msgid "Rotation:" +msgstr "Поворот:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "Взгляд" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "Запад" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40 +msgid "South" +msgstr "Юг" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41 +msgid "East" +msgstr "Восток" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42 +msgid "North" +msgstr "Север" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46 +msgid "Scale:" +msgstr "Размер:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50 +msgid "Zoom mode:" +msgstr "Режим увел.:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52 +msgid "Zoomed in" +msgstr "Приближён" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53 +msgid "Zoomed out" +msgstr "Не приближён" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "Всегда приближён" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55 +msgid "Never zoomed" +msgstr "Никогда не приближён" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4 +msgid "Score Panel" +msgstr "Таблица Очков" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "Панель таймера" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22 +msgid "Timer:" +msgstr "Таймер:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25 +msgid "Show elapsed time" +msgstr "Показывать прошедшее время" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "Панель голосования" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "Прозр. после голосования:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Панель оружия" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Исчезать после:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 +msgid "Never" +msgstr "Никогда" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:28 +#, c-format +msgid "%ds" +msgstr "%dс" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:32 +msgid "Fade effect:" +msgstr "Эффект исчезновения:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +msgid "EF^None" +msgstr "Отсутствует" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Скольжение" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Исчезновение" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "Иконки оружия:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "Показывать ID оружия как:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44 +msgid "SHOWAS^None" +msgstr "Не показывать" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45 +msgid "Number" +msgstr "Число" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46 +msgid "Bind" +msgstr "Привязка" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Показывать Точность" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Показывать Боеприпасы" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Цвет полосы боеприпасов" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Прозрачность полосы боеприпасов:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "Настройка панелей" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "Фон по умолчанию:" + +#: 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 +msgid "Disable" +msgstr "Отключить" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:591 +msgid "Color:" +msgstr "Цвет:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:599 +msgid "Border size:" +msgstr "Ширина краёв:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "Цвет команды:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:625 +msgid "Test team color in configure mode" +msgstr "Проверить цвет команды в режиме настройки" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:628 +msgid "Padding:" +msgstr "Промежуток:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "Область HUD:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +msgid "DOCK^Disabled" +msgstr "Отключено" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +msgid "DOCK^Small" +msgstr "Небольшая" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +msgid "DOCK^Medium" +msgstr "Средняя" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +msgid "DOCK^Large" +msgstr "Большая" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "Настройки сетки:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Передвижение панелей по сетке" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Шаг сетки:" + +#: 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 "Выйти из настроек" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Игра по сети" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Серверы" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5 +msgid "Create" +msgstr "Создать" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Демо" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5 +msgid "Player Setup" +msgstr "Настройки игрока" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Вид игры:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Настройки состязания:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Предел времени:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "Исп. предел карты" + +#: 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 "Предел очков:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "Кол-во игроков:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Кол-во ботов:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Уровень ботов:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "Ботоподобный" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "Новичок" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "Легко победить" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Можно победить" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Возможно победить" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Продвинутый" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Опытный" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Профессионал" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Убийца" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "Сверхчеловек" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "Богоподобный" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "Мутаторы..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:84 +msgid "Advanced settings..." +msgstr "Доп. настройки..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105 +msgid "Map list:" +msgstr "Список карт:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "Выбрать все" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "Снять выделение" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Начать игру по сети" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "Предел захватов:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "Жизни:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "Круги:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Цели:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "Предел убийств:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "Доп. серверные настройки" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Настройки игры:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "Разрешить наблюдение" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "Защита при возрождении" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Скорость игры:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Настройки команд:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Огонь по союзникам:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Мнимый огонь по союзникам (только впечатление)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "Штраф за огонь по союзникам" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "Мнимый штраф (только впечатление)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "Команды:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "Голосование за карты:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "Без голосования" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "2 выбора" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 выбора" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 выбора" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 выборов" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 выборов" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 выборов" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 выборов" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 выборов" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "Простое большинство выигрывает" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Сведения о карте" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "С оружием" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "Только MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Заголовок:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Автор:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Особенности:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Режимы игры:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 +msgid "Close" +msgstr "Закрыть" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Играть" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "Мутаторы" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "Арена со всем оружием" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Арена с большинством оружия" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56 +#, c-format +msgid "%s Arena" +msgstr "%s Арена" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167 +msgid "Dodging" +msgstr "Уклонение" + +#: 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 "Ракетный полёт" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "Начинать без оружия" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "Низкая гравитация" + +# В игре это включает не невидимость, а полупрозрачность, хотя так переводить вполне уместно. +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170 +msgid "Cloaked" +msgstr "Невидимость" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "Крюк" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173 +msgid "Midair" +msgstr "Воздушный бой" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176 +msgid "Vampire" +msgstr "Вампиризм" + +#: 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 "Оружия остаются" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "Кровотечение" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202 +msgid "Jet pack" +msgstr "Реактивный ранец" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98 +msgid "MUT^None" +msgstr "Отсутствуют" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Мутаторы игрового процесса:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "Мутаторы оружия и предметов:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199 +msgid "Grappling hook" +msgstr "Крюк" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215 +msgid "Weapon arenas:" +msgstr "Арены оружия" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "Обычная (не арена)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "с лазером" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Особые арены:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "Большинство оружия" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4 +msgid "Demo" +msgstr "Демо" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28 +msgid "Record demos while playing" +msgstr "Записывать демо во время игры" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +msgid "Filter:" +msgstr "Фильтр:" + +#: 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 "Очистить" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Проверка производительности" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Присоединиться" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +msgid "SRVS^Empty" +msgstr "Пустые" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +msgid "SRVS^Full" +msgstr "Полные" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "Пауза" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Адрес:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:65 +msgid "Info..." +msgstr "Сведения..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 +msgid "Join!" +msgstr "Присоединиться" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "Сведения о сервере" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:115 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:116 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:189 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199 +msgid "N/A" +msgstr "Н/Д" + +#: 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" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 +msgid "Official settings" +msgstr "Официальные настройки" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197 +msgid "N/A (can't connect)" +msgstr "Н/Д (не могу подключиться)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "not supported (can't connect)" +msgstr "не поддерживается (не могу подключиться)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "not supported (won't encrypt)" +msgstr "не поддерживается (шифрования не будет)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "supported (will encrypt)" +msgstr "поддерживается (будет шифрование)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "supported (won't encrypt)" +msgstr "поддерживается (шифрования не будет)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "requested (will encrypt)" +msgstr "запрошено (будет шифрование)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "requested (won't encrypt)" +msgstr "запрошено (шифрования не будет)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223 +msgid "required (can't connect)" +msgstr "требуется (не могу подключиться)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225 +msgid "required (will encrypt)" +msgstr "требуется (будет шифрование)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:246 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:269 +msgid "Players:" +msgstr "Игроки:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:254 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +msgid "Type:" +msgstr "Вид:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 +msgid "Map:" +msgstr "Карта:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 +msgid "Gameplay:" +msgstr "Геймплей:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 +msgid "Bots:" +msgstr "Боты:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 +msgid "Mod:" +msgstr "Мод:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 +msgid "Version:" +msgstr "Версия:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "Ping:" +msgstr "Пинг:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "CA:" +msgstr "CA:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Key:" +msgstr "Ключ:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 +msgid "Encryption:" +msgstr "Шифрование:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "Модель:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "Угол обзора:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Качание вида:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Множитель увеличения:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Скорость увеличения:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Настройки оружия..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "Прицел:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143 +msgid "Per weapon" +msgstr "Зависит от оружия" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "Величина прицела:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Прозрачность:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Цвет прицела:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Точка в центре" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Размер:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Проверка на попадание:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +msgid "HTST^None" +msgstr "Отключена" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "TrueAim" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Враги" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Настройка отметок..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "Войти в редактор HUD" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Использовать свои модели:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +msgid "MDL^None" +msgstr "Нет" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +msgid "MDL^Custom" +msgstr "Вместо нестандартных" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +msgid "MDL^All" +msgstr "Вместо всех" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "Отключить эффекты жестокости" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Ошмётки:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +msgid "GIBS^None" +msgstr "Нет" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "Мало" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +msgid "GIBS^Many" +msgstr "Много" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +msgid "GIBS^Lots" +msgstr "Тонны" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Изображ. урона" + +#: 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 "Применить" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Отметки" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Show base waypoints" +msgstr "Показывать основные отметки" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 +msgid "Waypoint scale:" +msgstr "Размер отметок:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint alpha:" +msgstr "Прозрачность отметок:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Show names:" +msgstr "Показывать имена:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 +msgid "Teammates" +msgstr "Союзники" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 +msgid "All players" +msgstr "Все игроки" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "Настройки оружия" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Список приоритета оружия:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Вверх" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Вниз" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "Использовать приоритеты для прокрутки оружия" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Автоматически переключаться на поднятое оружие" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "Показывать модель оружия в руках" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "Слева" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "Справа" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "Перевернуть изображение по горизонтали" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "Новости" + +#: 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_quit.c:4 +msgid "Quit" +msgstr "Выход" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "Вы точно желаете выйти?" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "Да" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "Нет" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Настройки" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Ввод" + +#: qcsrc/menu/xonotic/dialog_settings.c:19 +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +msgid "Video" +msgstr "Изображение" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Эффекты" + +#: qcsrc/menu/xonotic/dialog_settings.c:21 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:4 +msgid "Audio" +msgstr "Звук" + +#: qcsrc/menu/xonotic/dialog_settings.c:22 +#: qcsrc/menu/xonotic/dialog_settings_network.c:4 +msgid "Network" +msgstr "Сеть" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Разное" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "Главный:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Музыка:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +msgid "VOL^Ambient:" +msgstr "Фоновые звуки:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Инфо:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Предметы:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Боль:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Игрок:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Выстрелы:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Голос:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Оружие:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Частота:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:105 +msgid "8 kHz" +msgstr "8 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:106 +msgid "11.025 kHz" +msgstr "11.025 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:107 +msgid "16 kHz" +msgstr "16 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:108 +msgid "22.05 kHz" +msgstr "22.05 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:109 +msgid "24 kHz" +msgstr "24 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:110 +msgid "32 kHz" +msgstr "32 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:111 +msgid "44.1 kHz" +msgstr "44.1 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:112 +msgid "48 kHz" +msgstr "48 кГц" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:115 +msgid "Channels:" +msgstr "Каналы:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:117 +msgid "Mono" +msgstr "Моно" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:118 +msgid "Stereo" +msgstr "Стерео" + +#: 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 "Обмен местами каналов" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Ориентированный на наушники режим" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Объёмные голоса:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +msgid "VOCS^None" +msgstr "Отключены" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +msgid "VOCS^Taunts" +msgstr "Насмешки" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +msgid "VOCS^All" +msgstr "Все" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Радиус насмешек:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +msgid "RNG^Very short" +msgstr "Очень маленький" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +msgid "RNG^Short" +msgstr "Маленький" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +msgid "RNG^Normal" +msgstr "Обычный" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +msgid "RNG^Long" +msgstr "Большой" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +msgid "RNG^Full" +msgstr "Полный" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Автоматические насмешки" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Предупреждение о таймауте за:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +msgid "WRN^None" +msgstr "Нет" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:168 +msgid "1 minute" +msgstr "1 минуту" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:169 +msgid "5 minutes" +msgstr "5 минут" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:170 +msgid "WRN^Both" +msgstr "1 и 5 минут" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Оповещать о попадании" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Звуки меню" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Предустановки качества:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +msgid "PRE^OMG!" +msgstr "Ужасное" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:42 +msgid "PRE^Low" +msgstr "Низкое" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +msgid "PRE^Medium" +msgstr "Среднее" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +msgid "PRE^Normal" +msgstr "Обычное" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +msgid "PRE^High" +msgstr "Высокое" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:46 +msgid "PRE^Ultra" +msgstr "Сверх" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:48 +msgid "PRE^Ultimate" +msgstr "Предельное" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "Подробность геометрии:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +msgid "DET^Lowest" +msgstr "Нижайшая" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +msgid "DET^Low" +msgstr "Низкая" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +msgid "DET^Normal" +msgstr "Обычная" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +msgid "DET^Good" +msgstr "Хорошая" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +msgid "DET^Best" +msgstr "Лучшая" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +msgid "DET^Insane" +msgstr "Высочайшая" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:62 +msgid "Antialiasing:" +msgstr "Сглаживание:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:64 +msgid "AA^Disabled" +msgstr "Отключено" + +#: 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 "Разрешение текстур:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:73 +msgid "RES^Leet" +msgstr "Ужасное" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:74 +msgid "RES^Lowest" +msgstr "Нижайшее" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +msgid "RES^Low" +msgstr "Низкое" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +msgid "RES^Normal" +msgstr "Обычное" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +msgid "RES^Good" +msgstr "Хорошее" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +msgid "RES^Best" +msgstr "Лучшее" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "Избегать сжатия текстур с потерями" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:100 +msgid "Anisotropy:" +msgstr "Анизотропия:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:102 +msgid "ANISO^Disabled" +msgstr "Отключена" + +#: 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 "Качество частиц:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Дальность частиц:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "Декали:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "Дальность:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Время:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "Использовать карты освещения" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:133 +msgid "Deluxe mapping" +msgstr "Особое качество" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "Блеск" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "Офсетное текстурирование" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "Рельефное текстурирование" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:143 +msgid "Reflections:" +msgstr "Отражения:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Размытые" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +msgid "REFL^Good" +msgstr "Хорошие" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Резкие" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Показывать поверхности" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Без динамического освещения" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Грубая имитация" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Дин. освещение в реальном времени" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "Тени" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "Дин. освещение мира в реальном времени" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Использовать карты нормалей" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "Мягкие тени" + +# Перевод может быть неверным. +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "Короны" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:174 +msgid "Use Occlusion Queries" +msgstr "Использовать Occlusion Queries (Проверка видимости)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:176 +msgid "Bloom" +msgstr "Свечение" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:178 +msgid "High Dynamic Range (HDR)" +msgstr "High Dynamic Range (HDR)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:182 +msgid "Motion blur:" +msgstr "Размытие от движения:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:188 +msgid "Damage blur:" +msgstr "Размытие от урона:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Привязки клавиш:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Сменить кнопку..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Изменить..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Чувствительность:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "Скорость мыши в UI:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Фильтр мыши" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Обратить мышь" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "Использовать ввод с джойстика" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "Отключить ускорение OS мыши" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "\"открыть консоль\" также закрывает" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 +msgid "User defined key bind" +msgstr "Определённая пользователем привязка клавиш" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Команда при нажатии:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Команда при отжатии:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Сохранение" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Отмена" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "Оформления:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Показывать время" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Показывать дату" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "Показывать кадры/с (FPS)" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Спидометр" + +# "quake units per second" +# you can also translate it as inch/second +# as it is roughly the same +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "qu/s (без назв.)" + +#: 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 "м/с" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:64 +msgid "km/h" +msgstr "км/ч" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:66 +msgid "mph" +msgstr "м/ч" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:68 +msgid "knots" +msgstr "узлы" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Показывать акселерометр" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Размер акселерометра:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Уменьшить задержку ввода" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Доп. настройки" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Фильтр Cvar:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Настройка:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Значение:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 +msgid "Description:" +msgstr "Описание:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Предсказание движения на стороне клиента" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Показывать netgraph" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Скорость соединения:" + +#: 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" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:38 +msgid "Fast ADSL" +msgstr "Быстрый ADSL" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:39 +msgid "Broadband" +msgstr "Широкополосное" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Кол-во пакетов/с" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "HTTP загрузки:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Загрузки:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Скорость (кБ/с):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "UDP порт клиента:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Разрешение:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Размера шрифта/UI" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +msgid "SZ^Unreadable" +msgstr "Нечитаемый" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +msgid "SZ^Tiny" +msgstr "Крошечный" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +msgid "SZ^Little" +msgstr "Маленький" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +msgid "SZ^Small" +msgstr "Небольшой" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +msgid "SZ^Medium" +msgstr "Средний" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +msgid "SZ^Large" +msgstr "Большой" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +msgid "SZ^Huge" +msgstr "Огромный" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +msgid "SZ^Gigantic" +msgstr "Гигантский" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +msgid "SZ^Colossal" +msgstr "Колоссальный" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "Глубина цвета:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "На весь экран" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "Вертикальная синхронизация" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:49 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "Использовать шейдеры OpenGL 2.0 (GLSL)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:52 +msgid "Use GLSL to handle color control" +msgstr "Использовать GLSL для управления цветом" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:56 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Использование Vertex Buffer Objects (VBOs)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +msgid "VBO^Off" +msgstr "Отключено" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:60 +msgid "Vertices, some Tris (compatible)" +msgstr "Вершины, некоторые треугольники (совместимо)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices" +msgstr "Вершины" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:64 +msgid "Vertices and Triangles" +msgstr "Вершины и треугольники" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "Depth first:" +msgstr "Сперва глубина:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +msgid "DF^Disabled" +msgstr "Отключено" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:70 +msgid "DF^World" +msgstr "Мир" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:71 +msgid "DF^All" +msgstr "Всё" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Disable multithreaded OpenGL" +msgstr "Отключить многопоточный OpenGL" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:77 +msgid "Wait for GPU to finish each frame" +msgstr "Ждать завершения каждого кадра GPU" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:80 +msgid "Brightness:" +msgstr "Яркость:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:83 +msgid "Contrast:" +msgstr "Контраст:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:86 +msgid "Gamma:" +msgstr "Гамма:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:89 +msgid "Contrast boost:" +msgstr "Усиление контраста:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:92 +msgid "Saturation:" +msgstr "Насыщенность:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:98 +msgid "LIT^Ambient:" +msgstr "Окружающее освещение:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:101 +msgid "Intensity:" +msgstr "Мощность:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Одиночная игра" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "Быстрая игра (случайная карта с ботами)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Начать одиночную игру" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Победитель" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Выбор команды" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "Выбрать 'лучшую' команду (автовыбор)" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "красная" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "синяя" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "жёлтая" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "розовая" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "наблюдать" + +#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "Не нажимайте снова эту кнопку!" + +#: qcsrc/menu/xonotic/maplist.c:278 +msgid "" +"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" +msgstr "" +"Что? Не могу зайти (m = NULL). Перефильтрую, чтобы такого больше не " +"случалось.\n" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "Сервер Xonotic от %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 "" +"Что? Не могу зайти (неверный вид игры). Перефильтрую, чтобы такого больше не " +"случалось.\n" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "<no model found>" +msgstr "<модель игрока не найдена>" + +#: qcsrc/menu/xonotic/serverlist.c:360 +msgid "Remove" +msgstr "Убрать" + +#: qcsrc/menu/xonotic/serverlist.c:362 +msgid "Bookmark" +msgstr "В закладки" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Ping" +msgstr "Пинг" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Host name" +msgstr "Имя сервера" + +#: qcsrc/menu/xonotic/serverlist.c:520 +msgid "Map" +msgstr "Карта" + +#: qcsrc/menu/xonotic/serverlist.c:521 +msgid "Type" +msgstr "Вид" + +#: qcsrc/menu/xonotic/serverlist.c:522 +msgid "Players" +msgstr "Игроки" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "<TITLE>" +msgstr "<ЗАГОЛОВОК>" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "<АВТОР>" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +msgid "VOL^OFF" +msgstr "Отключено" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +msgid "VOL^MAX" +msgstr "Максимум" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "%s дБ" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: qcsrc/menu/xonotic/util.qc:270 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "Получены данные HTTP запроса для неверного id %d.\n" + +#: qcsrc/menu/xonotic/util.qc:285 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "ошибка при получении уведомления об обновлении: статус %d\n" + +#: qcsrc/menu/xonotic/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "ошибка: получение HTML вместо уведомления об обновлении\n" + +#: qcsrc/menu/xonotic/util.qc:295 +msgid "error: received carriage returns from update notification server\n" +msgstr "" +"ошибка: получены символы возврата строки от сервера уведомлений об " +"обновлениях\n" + +#: qcsrc/menu/xonotic/util.qc:316 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"Обновление может быть загружено с:\n" +"%s\n" + +#: qcsrc/menu/xonotic/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Автоматическое создание mapinfo для новых карт..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "Обновитесь до %s сейчас же!" + +#: qcsrc/menu/xonotic/util.qc:509 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"1^ОШИБКА: Сжатие текстур требуется, но не поддерживается.\n" +"1^Ожидайте проблемы с отображением.\n" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Arena" +msgstr "Arena" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Assault" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Capture The Flag" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Clan Arena" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Deathmatch" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Domination" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Freeze Tag" +msgstr "Freeze Tag" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Keepaway" +msgstr "Keepaway" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Key Hunt" +msgstr "Key Hunt" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "Last Man Standing" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexball" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Onslaught" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Race" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "Race CTS" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "Runematch" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Team Deathmatch" + +#: qcsrc/menu/xonotic/util.qc:565 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "@!#%'n Швыряние Тубой" + +#: qcsrc/menu/xonotic/util.qc:583 +msgid "Background:" +msgstr "Фон:" + +#: 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 "По умолчанию" + +#: qcsrc/menu/xonotic/util.qc:596 +msgid "Use default" +msgstr "Исп. настройки по умолчанию" + +#: qcsrc/menu/xonotic/util.qc:616 +msgid "Team Color:" +msgstr "Цвет команды:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Включить панель" + +#: qcsrc/server/w_crylink.qc:2 +msgid "Crylink" +msgstr "Crylink" + +#: qcsrc/server/w_crylink.qc:645 +#, c-format +msgid "%s succeeded at self-destructing themself with the Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:650 +#, c-format +msgid "%s could not hide from %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:652 +#, c-format +msgid "%s was too close to %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:654 +#, c-format +msgid "%s took a close look at %s's Crylink" +msgstr "" + +#: qcsrc/server/w_electro.qc:2 +msgid "Electro" +msgstr "Electro" + +#: qcsrc/server/w_electro.qc:503 +#, c-format +msgid "%s could not remember where they put plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:505 +#, c-format +msgid "%s played with plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:512 +#, c-format +msgid "%s just noticed %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:514 +#, c-format +msgid "%s got in touch with %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:519 +#, c-format +msgid "%s felt the electrifying air of %s's combo" +msgstr "" + +#: qcsrc/server/w_electro.qc:521 +#, c-format +msgid "%s got too close to %s's blue beam" +msgstr "" + +#: qcsrc/server/w_electro.qc:523 +#, c-format +msgid "%s was blasted by %s's blue beam" +msgstr "" + +#: qcsrc/server/w_fireball.qc:2 +msgid "Fireball" +msgstr "Fireball" + +#: qcsrc/server/w_fireball.qc:392 +#, c-format +msgid "%s forgot about some firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:394 qcsrc/server/w_hlac.qc:223 +#, c-format +msgid "%s should have used a smaller gun" +msgstr "" + +#: qcsrc/server/w_fireball.qc:401 +#, c-format +msgid "%s tried to catch %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:403 +#, c-format +msgid "%s fatefully ignored %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:410 +#, c-format +msgid "%s could not hide from %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:412 +#, c-format +msgid "%s saw the pretty lights of %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:415 +#, c-format +msgid "%s got too close to %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:417 +#, c-format +msgid "%s tasted %s's fireball" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:2 +msgid "Mortar" +msgstr "Mortar" + +#: qcsrc/server/w_grenadelauncher.qc:357 +#, c-format +msgid "%s tried out his own grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:359 +#, c-format +msgid "%s detonated" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:365 +#, c-format +msgid "%s didn't see %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:367 +#, c-format +msgid "%s almost dodged %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:369 +#, c-format +msgid "%s ate %s's grenade" +msgstr "" + +#: qcsrc/server/w_hagar.qc:2 +msgid "Hagar" +msgstr "Hagar" + +#: qcsrc/server/w_hagar.qc:185 qcsrc/server/w_seeker.qc:523 +#, c-format +msgid "%s played with tiny rockets" +msgstr "" + +#: qcsrc/server/w_hagar.qc:189 +#, c-format +msgid "%s hoped %s's missiles wouldn't bounce" +msgstr "" + +#: qcsrc/server/w_hagar.qc:191 +#, c-format +msgid "%s was pummeled by %s" +msgstr "" + +#: qcsrc/server/w_hlac.qc:2 +msgid "Heavy Laser Assault Cannon" +msgstr "Heavy Laser Assault Cannon" + +#: qcsrc/server/w_hlac.qc:225 +#, c-format +msgid "%s was cut down by %s" +msgstr "" + +#: qcsrc/server/w_hook.qc:2 +msgid "Grappling Hook" +msgstr "Grappling Hook" + +#: 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/server/w_hook.qc:269 +#, c-format +msgid "%s has run into %s's gravity bomb" +msgstr "" + +#: qcsrc/server/w_laser.qc:2 +msgid "Laser" +msgstr "Laser" + +#: qcsrc/server/w_laser.qc:285 +#, c-format +msgid "%s lasered themself to hell" +msgstr "" + +#: qcsrc/server/w_laser.qc:289 +#, c-format +msgid "%s was cut in half by %s's gauntlet" +msgstr "" + +#: qcsrc/server/w_laser.qc:291 +#, c-format +msgid "%s was lasered to death by %s" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:2 +msgid "Mine Layer" +msgstr "Mine Layer" + +#: qcsrc/server/w_minelayer.qc:438 qcsrc/server/w_rocketlauncher.qc:480 +#, c-format +msgid "%s exploded" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:442 +#, c-format +msgid "%s got too close to %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:444 +#, c-format +msgid "%s almost dodged %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:446 +#, c-format +msgid "%s stepped on %s's mine" +msgstr "" + +#: qcsrc/server/w_minstanex.qc:2 +msgid "MinstaNex" +msgstr "MinstaNex" + +#: qcsrc/server/w_minstanex.qc:259 qcsrc/server/w_nex.qc:226 +#, c-format +msgid "%s has been vaporized by %s" +msgstr "" + +#: qcsrc/server/w_nex.qc:2 +msgid "Nex" +msgstr "Nex" + +#: qcsrc/server/w_porto.qc:2 +msgid "Port-O-Launch" +msgstr "Port-O-Launch" + +#: qcsrc/server/w_porto.qc:295 +#, c-format +msgid "%s felt %s doing the impossible to him" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:2 +msgid "Rocket Launcher" +msgstr "Rocket Launcher" + +#: qcsrc/server/w_rocketlauncher.qc:484 +#, c-format +msgid "%s got too close to %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:486 +#, c-format +msgid "%s almost dodged %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:488 +#, c-format +msgid "%s ate %s's rocket" +msgstr "" + +#: qcsrc/server/w_seeker.qc:2 +msgid "T.A.G. Seeker" +msgstr "T.A.G. Seeker" + +#: qcsrc/server/w_seeker.qc:527 +#, c-format +msgid "%s ran into %s's flac" +msgstr "" + +#: qcsrc/server/w_seeker.qc:529 +#, c-format +msgid "%s was tagged by %s" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:2 +msgid "Shotgun" +msgstr "Shotgun" + +#: qcsrc/server/w_shotgun.qc:183 +#, c-format +msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:185 +#, c-format +msgid "%s was gunned by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:2 +msgid "Sniper Rifle" +msgstr "Sniper Rifle" + +#: qcsrc/server/w_sniperrifle.qc:321 +#, c-format +msgid "%s shot themself automatically" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:323 +#, c-format +msgid "%s sniped themself somehow" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:330 +#, c-format +msgid "%s failed to hide from %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:332 +#, c-format +msgid "%s died in %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:339 +#, c-format +msgid "%s failed to hide from %s's rifle" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:344 +#, c-format +msgid "%s got hit in the head by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:346 qcsrc/server/w_uzi.qc:291 +#, c-format +msgid "%s was sniped by %s" +msgstr "" + +#: qcsrc/server/w_tuba.qc:2 +#, c-format +msgid "@!#%'n Tuba" +msgstr "@!#%'n Tuba" + +#: qcsrc/server/w_tuba.qc:260 +#, c-format +msgid "%s hurt his own ears with the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_tuba.qc:264 +#, c-format +msgid "%s died of %s's great playing on the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_uzi.qc:2 +msgid "Machine Gun" +msgstr "Machine Gun" + +#: qcsrc/server/w_uzi.qc:293 +#, c-format +msgid "%s was riddled full of holes by %s" +msgstr "" + +#~ msgid "Waypoint settings:" +#~ msgstr "Настройки отметок:" + +#~ msgid "%d/%d" +#~ msgstr "%d/%d" diff --git a/menu.dat.se.po b/menu.dat.se.po new file mode 100644 index 000000000..7494655db --- /dev/null +++ b/menu.dat.se.po @@ -0,0 +1,2776 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-07 07:29+0100\n" +"PO-Revision-Date: 2011-01-11 22:51+ZONE\n" +"Last-Translator: marcus256 <marcus256@users.sourceforge.net>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: se\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "fel: status är %d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Användning: menu_cmd kommando..., där möjliga kommandon är:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " sync - laddar om alla cvars på nuvarande menysida\n" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr " directmenu ITEM - utse en menyrad som huvudrad\n" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "fel vid skapande av curl handle\n" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +"Ogiltigt kommando. För en lista över giltiga kommandon, prova menu_cmd " +"help.\n" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "" + +#: 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 "" + +#: qcsrc/menu/xonotic/cvarlist.c:85 +msgid "will be saved to config.cfg" +msgstr "" + +#: qcsrc/menu/xonotic/cvarlist.c:87 +msgid "will not be saved" +msgstr "" + +#: qcsrc/menu/xonotic/cvarlist.c:89 +msgid "private" +msgstr "" + +#: qcsrc/menu/xonotic/cvarlist.c:91 +msgid "engine setting" +msgstr "" + +#: qcsrc/menu/xonotic/cvarlist.c:93 +msgid "read only" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "" + +#: 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_firstrun.c:4 +msgid "Welcome" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:33 +msgid "" +"Welcome to Xonotic, please select your language preference and enter your " +"player name to get started. You can change these options later through the " +"menu system." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +#, fuzzy +msgid "Text language:" +msgstr "Avstånd för pikar:" + +#: 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 "Namn:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:69 +#, fuzzy +msgid "Save settings" +msgstr "Inställningar" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c: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 "" + +#: 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 "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +msgid "Enable status bar" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +msgid "Status bar alignment:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:42 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:42 +msgid "Inward" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:43 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:43 +msgid "Outward" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +msgid "Icon alignment:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 +msgid "Panel always enabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Tidtagningspanel för Lopp" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29 +msgid "Radar:" +msgstr "" + +#: 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 "Alfa:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36 +msgid "Rotation:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40 +msgid "South" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41 +msgid "East" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42 +msgid "North" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46 +msgid "Scale:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50 +msgid "Zoom mode:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52 +msgid "Zoomed in" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53 +msgid "Zoomed out" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55 +msgid "Never zoomed" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4 +msgid "Score Panel" +msgstr "Poängpanel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22 +msgid "Timer:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25 +msgid "Show elapsed time" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Vapenpanel" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Tona ut efter:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 +msgid "Never" +msgstr "Aldrig" + +#: 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 "Uttoningseffekt:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +msgid "EF^None" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Ingen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Alfa" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "Vapenikoner:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "Visa vapen-ID som:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44 +msgid "SHOWAS^None" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45 +msgid "Number" +msgstr "Nummer" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46 +msgid "Bind" +msgstr "Koppla" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Visa Noggrannhet" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Visa Ammunition" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Färg på ammoraden:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Alfa på ammoraden:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "" + +#: 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 +msgid "Disable" +msgstr "Inaktivera" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:591 +msgid "Color:" +msgstr "Färg:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:599 +msgid "Border size:" +msgstr "Ramstorlek:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:625 +msgid "Test team color in configure mode" +msgstr "Testa lagfärg i konfigureringsläge" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:628 +msgid "Padding:" +msgstr "Utfyllnad:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +#, fuzzy +msgid "DOCK^Disabled" +msgstr "Inaktivera" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +msgid "DOCK^Small" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +msgid "DOCK^Medium" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +msgid "DOCK^Large" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:103 +msgid "X:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:109 +msgid "Y:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:117 +msgid "Exit setup" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Flera Spelare" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Servrar" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5 +msgid "Create" +msgstr "Skapa" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Demos" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5 +msgid "Player Setup" +msgstr "Spelarinställning" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "" + +#: 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 "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:84 +msgid "Advanced settings..." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105 +msgid "Map list:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Kartinformation" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "Fullständing sakplacering" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "Endast MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Titel:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Upphovsman:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Egenskaper." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Speltyper:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 +msgid "Close" +msgstr "Stäng" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Spela" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56 +#, c-format +msgid "%s Arena" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167 +msgid "Dodging" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:250 +msgid "MinstaGib" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:253 +msgid "NIX" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:74 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:205 +msgid "Rocket Flying" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170 +msgid "Cloaked" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173 +msgid "Midair" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176 +msgid "Vampire" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:90 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 +msgid "Piñata" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:92 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:211 +msgid "Weapons stay" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202 +msgid "Jet pack" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98 +msgid "MUT^None" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199 +msgid "Grappling hook" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215 +msgid "Weapon arenas:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4 +msgid "Demo" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28 +msgid "Record demos while playing" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +msgid "Filter:" +msgstr "" + +#: 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 "Rensa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +msgid "SRVS^Empty" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +#, fuzzy +msgid "SRVS^Full" +msgstr "Fullt" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:65 +msgid "Info..." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 +msgid "Join!" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:115 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:116 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:189 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199 +msgid "N/A" +msgstr "" + +#: 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 "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 +msgid "Official settings" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197 +msgid "N/A (can't connect)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "not supported (can't connect)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "not supported (won't encrypt)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "supported (will encrypt)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "supported (won't encrypt)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "requested (will encrypt)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "requested (won't encrypt)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223 +msgid "required (can't connect)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225 +msgid "required (will encrypt)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:246 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:269 +msgid "Players:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:254 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +msgid "Type:" +msgstr "Typ:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 +msgid "Map:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 +msgid "Gameplay:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 +msgid "Bots:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 +msgid "Mod:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 +msgid "Version:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "Ping:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "CA:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Key:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 +msgid "Encryption:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143 +msgid "Per weapon" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +msgid "HTST^None" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +msgid "MDL^None" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +msgid "MDL^Custom" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +#, fuzzy +msgid "MDL^All" +msgstr "Alla" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +msgid "GIBS^None" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +msgid "GIBS^Many" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +msgid "GIBS^Lots" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "" + +#: 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 "Tillämpa nu" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Show base waypoints" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 +msgid "Waypoint scale:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint alpha:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Show names:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 +msgid "Teammates" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 +msgid "All players" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_news.c:18 +msgid "http://www.xonotic.org/team/blog/" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_quit.c:4 +msgid "Quit" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Inställningar" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Inmatning" + +#: qcsrc/menu/xonotic/dialog_settings.c:19 +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +msgid "Video" +msgstr "Video" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Effekter" + +#: qcsrc/menu/xonotic/dialog_settings.c:21 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:4 +msgid "Audio" +msgstr "Ljud" + +#: qcsrc/menu/xonotic/dialog_settings.c:22 +#: qcsrc/menu/xonotic/dialog_settings_network.c:4 +msgid "Network" +msgstr "Nätverk" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Blandat" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "Master:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Musik:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +#, fuzzy +msgid "VOL^Ambient:" +msgstr "Bakgrund" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Info:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Saker:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Smärta:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Spelare:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Skott:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Röst:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Vapen:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Frekvens:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:105 +msgid "8 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:106 +msgid "11.025 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:107 +msgid "16 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:108 +msgid "22.05 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:109 +msgid "24 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:110 +msgid "32 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:111 +msgid "44.1 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:112 +msgid "48 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:115 +msgid "Channels:" +msgstr "Kanaler." + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:117 +msgid "Mono" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:118 +msgid "Stereo" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:119 +msgid "2.1" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:120 +msgid "4" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:121 +msgid "5" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:122 +msgid "5.1" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:123 +msgid "6.1" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:124 +msgid "7.1" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:128 +msgid "Swap Stereo" +msgstr "Växla Stereo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Hörlursvänligt läge" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Spatiala kanaler:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +msgid "VOCS^None" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +#, fuzzy +msgid "VOCS^Taunts" +msgstr "Pikar" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +msgid "VOCS^All" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Avstånd för pikar:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +#, fuzzy +msgid "RNG^Very short" +msgstr "Väldigt kort" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +#, fuzzy +msgid "RNG^Short" +msgstr "Kort" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +#, fuzzy +msgid "RNG^Normal" +msgstr "Normalt" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +#, fuzzy +msgid "RNG^Long" +msgstr "Långt" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +#, fuzzy +msgid "RNG^Full" +msgstr "Fullt" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Automatiska pikar" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Tidsvarning:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +msgid "WRN^None" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:168 +msgid "1 minute" +msgstr "1 minut" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:169 +msgid "5 minutes" +msgstr "5 minuter" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:170 +#, fuzzy +msgid "WRN^Both" +msgstr "Både och" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Skadoindikator" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Menyljud" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +msgid "PRE^OMG!" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:42 +msgid "PRE^Low" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +msgid "PRE^Medium" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +#, fuzzy +msgid "PRE^Normal" +msgstr "Normalt" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +msgid "PRE^High" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:46 +msgid "PRE^Ultra" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:48 +msgid "PRE^Ultimate" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +msgid "DET^Lowest" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +msgid "DET^Low" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +#, fuzzy +msgid "DET^Normal" +msgstr "Normalt" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +msgid "DET^Good" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +msgid "DET^Best" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +msgid "DET^Insane" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:62 +msgid "Antialiasing:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:64 +#, fuzzy +msgid "AA^Disabled" +msgstr "Inaktivera" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:65 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:103 +msgid "2x" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:66 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:104 +msgid "4x" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:70 +msgid "Texture resolution:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:73 +msgid "RES^Leet" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:74 +msgid "RES^Lowest" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +msgid "RES^Low" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +#, fuzzy +msgid "RES^Normal" +msgstr "Normalt" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +msgid "RES^Good" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +msgid "RES^Best" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:100 +msgid "Anisotropy:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:102 +#, fuzzy +msgid "ANISO^Disabled" +msgstr "Inaktivera" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:105 +msgid "8x" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:106 +msgid "16x" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:110 +msgid "Particle quality:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:133 +msgid "Deluxe mapping" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:143 +msgid "Reflections:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +msgid "REFL^Good" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:174 +msgid "Use Occlusion Queries" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:176 +msgid "Bloom" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:178 +msgid "High Dynamic Range (HDR)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:182 +msgid "Motion blur:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:188 +msgid "Damage blur:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 +msgid "User defined key bind" +msgstr "Användardefinierad tangentkoppling" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Kommando när nedtryckt:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Kommando när uppsläppt:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Spara" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Avbryt" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:58 +msgid "qu/s" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:60 +msgid "m/s" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:64 +msgid "km/h" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:66 +msgid "mph" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:68 +msgid "knots" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Avancerade inställningar" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Cvar-filter:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Inställning:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Värde:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 +msgid "Description:" +msgstr "Beskrivning:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Rörelseprediktering i klienten" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Visa nätgraf" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Nätverkshastighet:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:35 +msgid "56k" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:36 +msgid "ISDN" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:37 +msgid "Slow ADSL" +msgstr "Långsam ADSL" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:38 +msgid "Fast ADSL" +msgstr "Snabb ADSL" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:39 +msgid "Broadband" +msgstr "Bredband" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Inputpaket/s" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "HTTP-nedladdningar:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Nedladdningar:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Hastighet (kB/s):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "Klientens UDB-port:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +msgid "SZ^Unreadable" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +msgid "SZ^Tiny" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +msgid "SZ^Little" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +msgid "SZ^Small" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +msgid "SZ^Medium" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +msgid "SZ^Large" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +msgid "SZ^Huge" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +msgid "SZ^Gigantic" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +msgid "SZ^Colossal" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:49 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:52 +msgid "Use GLSL to handle color control" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:56 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +msgid "VBO^Off" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:60 +msgid "Vertices, some Tris (compatible)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:64 +msgid "Vertices and Triangles" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "Depth first:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +#, fuzzy +msgid "DF^Disabled" +msgstr "Inaktivera" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:70 +msgid "DF^World" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:71 +#, fuzzy +msgid "DF^All" +msgstr "Alla" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Disable multithreaded OpenGL" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:77 +msgid "Wait for GPU to finish each frame" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:80 +msgid "Brightness:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:83 +msgid "Contrast:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:86 +msgid "Gamma:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:89 +msgid "Contrast boost:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:92 +msgid "Saturation:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:98 +#, fuzzy +msgid "LIT^Ambient:" +msgstr "Bakgrund" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:101 +msgid "Intensity:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "En Spelare" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Vinnare" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "" + +#: qcsrc/menu/xonotic/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "" + +#: qcsrc/menu/xonotic/maplist.c:278 +msgid "" +"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" +msgstr "" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "" + +#: qcsrc/menu/xonotic/maplist.c:291 +msgid "" +"Huh? Can't play this (invalid game type). Refiltering so this won't happen " +"again.\n" +msgstr "" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "<no model found>" +msgstr "<ingen modell funnen>" + +#: qcsrc/menu/xonotic/serverlist.c:360 +msgid "Remove" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.c:362 +msgid "Bookmark" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Ping" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Host name" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.c:520 +msgid "Map" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.c:521 +msgid "Type" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.c:522 +msgid "Players" +msgstr "" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "<TITLE>" +msgstr "" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +msgid "VOL^OFF" +msgstr "" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +msgid "VOL^MAX" +msgstr "" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "" + +#: qcsrc/menu/xonotic/util.qc:270 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "Mottog HTTP-förfrågan för en ogiltig ID %d.\n" + +#: qcsrc/menu/xonotic/util.qc:285 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "fel vid mottagande av uppdateringsnotifiering: status 'r %d\n" + +#: qcsrc/menu/xonotic/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "fel: mottog HTML istället för en uppdateringsnotifiering" + +#: qcsrc/menu/xonotic/util.qc:295 +msgid "error: received carriage returns from update notification server\n" +msgstr "fel: mottog radslut från uppdateringsnotifieringsservern" + +#: qcsrc/menu/xonotic/util.qc:316 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"Uppdatering kan laddas ner från:\n" +"%s\n" + +#: qcsrc/menu/xonotic/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Automatgenererar kartinfo för nyligen tillagda kartor..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "" + +#: qcsrc/menu/xonotic/util.qc:509 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"^1FEL: Texturkompression krävs men stöds ej.\n" +"^1Räkna med visuella problem.\n" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Arena" +msgstr "Arena" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Anfall" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Erövra Flaggan" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Klan Arena" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Dödsmatch" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Dominering" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Freeze Tag" +msgstr "Frys-Kull" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Keepaway" +msgstr "Håll Dig Undan" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Key Hunt" +msgstr "Nyckeljakt" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "Herre På Täppan" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexboll" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Stormning" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Lopp" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Dödsmatch i Lag" + +#: qcsrc/menu/xonotic/util.qc:565 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "@!#%'n Tubakastning" + +#: qcsrc/menu/xonotic/util.qc:583 +msgid "Background:" +msgstr "Bakgrund:" + +#: 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 "Standard" + +#: qcsrc/menu/xonotic/util.qc:596 +msgid "Use default" +msgstr "Använd standard" + +#: qcsrc/menu/xonotic/util.qc:616 +msgid "Team Color:" +msgstr "Lagfärg:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "" + +#: qcsrc/server/w_crylink.qc:2 +msgid "Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:645 +#, c-format +msgid "%s succeeded at self-destructing themself with the Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:650 +#, c-format +msgid "%s could not hide from %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:652 +#, c-format +msgid "%s was too close to %s's Crylink" +msgstr "" + +#: qcsrc/server/w_crylink.qc:654 +#, c-format +msgid "%s took a close look at %s's Crylink" +msgstr "" + +#: qcsrc/server/w_electro.qc:2 +msgid "Electro" +msgstr "" + +#: qcsrc/server/w_electro.qc:503 +#, c-format +msgid "%s could not remember where they put plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:505 +#, c-format +msgid "%s played with plasma" +msgstr "" + +#: qcsrc/server/w_electro.qc:512 +#, c-format +msgid "%s just noticed %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:514 +#, c-format +msgid "%s got in touch with %s's blue ball" +msgstr "" + +#: qcsrc/server/w_electro.qc:519 +#, c-format +msgid "%s felt the electrifying air of %s's combo" +msgstr "" + +#: qcsrc/server/w_electro.qc:521 +#, c-format +msgid "%s got too close to %s's blue beam" +msgstr "" + +#: qcsrc/server/w_electro.qc:523 +#, c-format +msgid "%s was blasted by %s's blue beam" +msgstr "" + +#: qcsrc/server/w_fireball.qc:2 +#, fuzzy +msgid "Fireball" +msgstr "Nexboll" + +#: qcsrc/server/w_fireball.qc:392 +#, c-format +msgid "%s forgot about some firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:394 qcsrc/server/w_hlac.qc:223 +#, c-format +msgid "%s should have used a smaller gun" +msgstr "" + +#: qcsrc/server/w_fireball.qc:401 +#, c-format +msgid "%s tried to catch %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:403 +#, c-format +msgid "%s fatefully ignored %s's firemine" +msgstr "" + +#: qcsrc/server/w_fireball.qc:410 +#, c-format +msgid "%s could not hide from %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:412 +#, c-format +msgid "%s saw the pretty lights of %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:415 +#, c-format +msgid "%s got too close to %s's fireball" +msgstr "" + +#: qcsrc/server/w_fireball.qc:417 +#, c-format +msgid "%s tasted %s's fireball" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:2 +msgid "Mortar" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:357 +#, c-format +msgid "%s tried out his own grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:359 +#, c-format +msgid "%s detonated" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:365 +#, c-format +msgid "%s didn't see %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:367 +#, c-format +msgid "%s almost dodged %s's grenade" +msgstr "" + +#: qcsrc/server/w_grenadelauncher.qc:369 +#, c-format +msgid "%s ate %s's grenade" +msgstr "" + +#: qcsrc/server/w_hagar.qc:2 +msgid "Hagar" +msgstr "" + +#: qcsrc/server/w_hagar.qc:185 qcsrc/server/w_seeker.qc:523 +#, c-format +msgid "%s played with tiny rockets" +msgstr "" + +#: qcsrc/server/w_hagar.qc:189 +#, c-format +msgid "%s hoped %s's missiles wouldn't bounce" +msgstr "" + +#: qcsrc/server/w_hagar.qc:191 +#, c-format +msgid "%s was pummeled by %s" +msgstr "" + +#: qcsrc/server/w_hlac.qc:2 +msgid "Heavy Laser Assault Cannon" +msgstr "" + +#: qcsrc/server/w_hlac.qc:225 +#, c-format +msgid "%s was cut down by %s" +msgstr "" + +#: qcsrc/server/w_hook.qc:2 +msgid "Grappling Hook" +msgstr "" + +#: 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/server/w_hook.qc:269 +#, c-format +msgid "%s has run into %s's gravity bomb" +msgstr "" + +#: qcsrc/server/w_laser.qc:2 +#, fuzzy +msgid "Laser" +msgstr "Master:" + +#: qcsrc/server/w_laser.qc:285 +#, c-format +msgid "%s lasered themself to hell" +msgstr "" + +#: qcsrc/server/w_laser.qc:289 +#, c-format +msgid "%s was cut in half by %s's gauntlet" +msgstr "" + +#: qcsrc/server/w_laser.qc:291 +#, c-format +msgid "%s was lasered to death by %s" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:2 +#, fuzzy +msgid "Mine Layer" +msgstr "En Spelare" + +#: qcsrc/server/w_minelayer.qc:438 qcsrc/server/w_rocketlauncher.qc:480 +#, c-format +msgid "%s exploded" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:442 +#, c-format +msgid "%s got too close to %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:444 +#, c-format +msgid "%s almost dodged %s's mine" +msgstr "" + +#: qcsrc/server/w_minelayer.qc:446 +#, c-format +msgid "%s stepped on %s's mine" +msgstr "" + +#: qcsrc/server/w_minstanex.qc:2 +msgid "MinstaNex" +msgstr "" + +#: qcsrc/server/w_minstanex.qc:259 qcsrc/server/w_nex.qc:226 +#, c-format +msgid "%s has been vaporized by %s" +msgstr "" + +#: qcsrc/server/w_nex.qc:2 +#, fuzzy +msgid "Nex" +msgstr "Nexboll" + +#: qcsrc/server/w_porto.qc:2 +msgid "Port-O-Launch" +msgstr "" + +#: qcsrc/server/w_porto.qc:295 +#, c-format +msgid "%s felt %s doing the impossible to him" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:2 +msgid "Rocket Launcher" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:484 +#, c-format +msgid "%s got too close to %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:486 +#, c-format +msgid "%s almost dodged %s's rocket" +msgstr "" + +#: qcsrc/server/w_rocketlauncher.qc:488 +#, c-format +msgid "%s ate %s's rocket" +msgstr "" + +#: qcsrc/server/w_seeker.qc:2 +msgid "T.A.G. Seeker" +msgstr "" + +#: qcsrc/server/w_seeker.qc:527 +#, c-format +msgid "%s ran into %s's flac" +msgstr "" + +#: qcsrc/server/w_seeker.qc:529 +#, c-format +msgid "%s was tagged by %s" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:2 +#, fuzzy +msgid "Shotgun" +msgstr "Kort" + +#: qcsrc/server/w_shotgun.qc:183 +#, c-format +msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun" +msgstr "" + +#: qcsrc/server/w_shotgun.qc:185 +#, c-format +msgid "%s was gunned by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:2 +msgid "Sniper Rifle" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:321 +#, c-format +msgid "%s shot themself automatically" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:323 +#, c-format +msgid "%s sniped themself somehow" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:330 +#, c-format +msgid "%s failed to hide from %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:332 +#, c-format +msgid "%s died in %s's bullet hail" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:339 +#, c-format +msgid "%s failed to hide from %s's rifle" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:344 +#, c-format +msgid "%s got hit in the head by %s" +msgstr "" + +#: qcsrc/server/w_sniperrifle.qc:346 qcsrc/server/w_uzi.qc:291 +#, c-format +msgid "%s was sniped by %s" +msgstr "" + +#: qcsrc/server/w_tuba.qc:2 +#, fuzzy, c-format +msgid "@!#%'n Tuba" +msgstr "@!#%'n Tubakastning" + +#: qcsrc/server/w_tuba.qc:260 +#, c-format +msgid "%s hurt his own ears with the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_tuba.qc:264 +#, c-format +msgid "%s died of %s's great playing on the @!#%%'n Tuba" +msgstr "" + +#: qcsrc/server/w_uzi.qc:2 +msgid "Machine Gun" +msgstr "" + +#: qcsrc/server/w_uzi.qc:293 +#, c-format +msgid "%s was riddled full of holes by %s" +msgstr "" diff --git a/models/weapons/g_crylink.md3 b/models/weapons/g_crylink.md3 index 8634feaeb..b325c9c2b 100644 Binary files a/models/weapons/g_crylink.md3 and b/models/weapons/g_crylink.md3 differ diff --git a/models/weapons/g_hlac.md3 b/models/weapons/g_hlac.md3 index ae76ba765..6e76885b3 100644 Binary files a/models/weapons/g_hlac.md3 and b/models/weapons/g_hlac.md3 differ diff --git a/models/weapons/g_laser.md3 b/models/weapons/g_laser.md3 index b31e26034..d1f168a61 100644 Binary files a/models/weapons/g_laser.md3 and b/models/weapons/g_laser.md3 differ diff --git a/models/weapons/g_minelayer.md3 b/models/weapons/g_minelayer.md3 index 60caa4125..898c13233 100644 Binary files a/models/weapons/g_minelayer.md3 and b/models/weapons/g_minelayer.md3 differ diff --git a/models/weapons/g_nex.md3 b/models/weapons/g_nex.md3 index 5594558b8..6ecb0aaba 100644 Binary files a/models/weapons/g_nex.md3 and b/models/weapons/g_nex.md3 differ diff --git a/models/weapons/g_porto.md3 b/models/weapons/g_porto.md3 index f0dce9dc4..78163a903 100644 Binary files a/models/weapons/g_porto.md3 and b/models/weapons/g_porto.md3 differ diff --git a/models/weapons/v_crylink.md3 b/models/weapons/v_crylink.md3 index af34658d7..c3b9f3ca8 100644 Binary files a/models/weapons/v_crylink.md3 and b/models/weapons/v_crylink.md3 differ diff --git a/models/weapons/v_hlac.md3 b/models/weapons/v_hlac.md3 index 3bbc34d56..887c2a796 100644 Binary files a/models/weapons/v_hlac.md3 and b/models/weapons/v_hlac.md3 differ diff --git a/models/weapons/v_hookgun.md3 b/models/weapons/v_hookgun.md3 index 4ca6a130e..8b96df038 100644 Binary files a/models/weapons/v_hookgun.md3 and b/models/weapons/v_hookgun.md3 differ diff --git a/models/weapons/v_laser.md3 b/models/weapons/v_laser.md3 index 836ad36b3..dc5e26745 100644 Binary files a/models/weapons/v_laser.md3 and b/models/weapons/v_laser.md3 differ diff --git a/models/weapons/v_minelayer.md3 b/models/weapons/v_minelayer.md3 index 648b0f1a7..529f02fcf 100644 Binary files a/models/weapons/v_minelayer.md3 and b/models/weapons/v_minelayer.md3 differ diff --git a/models/weapons/v_nex.md3 b/models/weapons/v_nex.md3 index 1d45edb79..4cafdd10f 100644 Binary files a/models/weapons/v_nex.md3 and b/models/weapons/v_nex.md3 differ diff --git a/models/weapons/v_porto.md3 b/models/weapons/v_porto.md3 index 5d06b3c06..b72113aa5 100644 Binary files a/models/weapons/v_porto.md3 and b/models/weapons/v_porto.md3 differ diff --git a/physicsCPMA.cfg b/physicsCPMA.cfg index 2ae8d2d6b..cbfd802bb 100644 --- a/physicsCPMA.cfg +++ b/physicsCPMA.cfg @@ -30,4 +30,4 @@ sv_doublejump 0 sv_jumpspeedcap_min "" sv_jumpspeedcap_max "" sv_jumpspeedcap_max_disable_on_ramps 0 -g_teleport_maxspeed 320 +g_teleport_maxspeed 400 diff --git a/physicsXPM.cfg b/physicsXPM.cfg index 9191ab8e8..e4ba14a56 100644 --- a/physicsXPM.cfg +++ b/physicsXPM.cfg @@ -34,4 +34,4 @@ sv_doublejump 1 sv_jumpspeedcap_min 0 sv_jumpspeedcap_max 0.5 sv_jumpspeedcap_max_disable_on_ramps 1 -g_teleport_maxspeed 320 +g_teleport_maxspeed 400 diff --git a/qcsrc/client/Defs.qc b/qcsrc/client/Defs.qc index 2d780381e..99c8d5c2b 100644 --- a/qcsrc/client/Defs.qc +++ b/qcsrc/client/Defs.qc @@ -156,7 +156,7 @@ float scoreboard_showaccuracy; // float coop; // float deathmatch; -// float dmg_take; +float dmg_take; // float dmg_save; // vector dmg_origin; @@ -258,11 +258,13 @@ float w_deathtype, w_issilent, w_random; string w_deathtypestring; vector w_org, w_backoff; -float campingrifle_scope; +float sniperrifle_scope; float nex_scope; float cr_maxbullets; +float minelayer_maxmines; + float bgmtime; string weaponorder_byimpulse; diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index 435dedabc..f24b483d6 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -27,7 +27,7 @@ void cvar_clientsettemp_restore() void() menu_show_error = { - drawstring('0 200 0', "ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!", '8 8 0', '1 0 0', 1, 0); + drawstring('0 200 0', _("ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!"), '8 8 0', '1 0 0', 1, 0); }; // CSQC_Init : Called every time the CSQC code is initialized (essentially at map load) @@ -46,33 +46,34 @@ string cl_announcer_prev; void WaypointSprite_Load(); void CSQC_Init(void) { + prvm_language = cvar_string("prvm_language"); + #ifdef USE_FTE #pragma target ID __engine_check = checkextension("DP_SV_WRITEPICTURE"); if(!__engine_check) { - print("^3Your engine build is outdated\n^3This Server uses a newer QC VM. Please update!\n"); + print(_("^3Your engine build is outdated\n^3This Server uses a newer QC VM. Please update!\n")); localcmd("\ndisconnect\n"); return; } #pragma target FTE #endif - + check_unacceptable_compiler_bugs(); #ifdef WATERMARK - print("^4CSQC Build information: ", WATERMARK(), "\n"); + print(sprintf(_("^4CSQC Build information: %s\n"), WATERMARK())); #endif float i; - CSQC_CheckEngine(); binddb = db_create(); tempdb = db_create(); ClientProgsDB = db_load("client.db"); compressShortVector_init(); - drawfont = 0; + drawfont = FONT_USER+1; menu_visible = FALSE; menu_show = menu_show_error; menu_action = menu_sub_null; @@ -135,6 +136,8 @@ void CSQC_Init(void) WaypointSprite_Load(); // precaches + precache_sound("misc/hit.wav"); + precache_sound("misc/typehit.wav"); Projectile_Precache(); Hook_Precache(); GibSplash_Precache(); @@ -223,7 +226,7 @@ float SetTeam(entity o, float Team) default: if(GetTeam(Team, false) == NULL) { - print("trying to switch to unsupported team ", ftos(Team), "\n"); + print(sprintf(_("trying to switch to unsupported team %d\n"), Team)); Team = COLOR_SPECTATOR; } break; @@ -239,7 +242,7 @@ float SetTeam(entity o, float Team) default: if(GetTeam(Team, false) == NULL) { - print("trying to switch to unsupported team ", ftos(Team), "\n"); + print(sprintf(_("trying to switch to unsupported team %d\n"), Team)); Team = COLOR_SPECTATOR; } break; @@ -249,7 +252,6 @@ float SetTeam(entity o, float Team) { if(o.has_team) { - //print("(DISCONNECT) leave team ", ftos(o.team), "\n"); tm = GetTeam(o.team, false); tm.team_size -= 1; o.has_team = 0; @@ -260,7 +262,6 @@ float SetTeam(entity o, float Team) { if not(o.has_team) { - //print("(CONNECT) enter team ", ftos(o.team), "\n"); o.team = Team; tm = GetTeam(Team, true); tm.team_size += 1; @@ -269,11 +270,9 @@ float SetTeam(entity o, float Team) } else if(Team != o.team) { - //print("(CHANGE) leave team ", ftos(o.team), "\n"); tm = GetTeam(o.team, false); tm.team_size -= 1; o.team = Team; - //print("(CHANGE) enter team ", ftos(o.team), "\n"); tm = GetTeam(Team, true); tm.team_size += 1; return TRUE; @@ -293,7 +292,6 @@ void Playerchecker_Think() { if(e.sort_prev) { - //print("playerchecker: KILL KILL KILL\n"); // player disconnected SetTeam(e, -1); RemovePlayer(e); @@ -305,7 +303,6 @@ void Playerchecker_Think() { if not(e.sort_prev) { - //print("playerchecker: SPAWN SPAWN SPAWN\n"); // player connected if not(e) playerslots[i] = e = spawn(); @@ -327,7 +324,6 @@ void Porto_Init(); void TrueAim_Init(); void PostInit(void) { - print(strcat("PostInit\n maxclients = ", ftos(maxclients), "\n")); localcmd(strcat("\nscoreboard_columns_set ", autocvar_scoreboard_columns, ";\n")); entity playerchecker; @@ -362,8 +358,8 @@ float CSQC_ConsoleCommand(string strMessage) return true; } else if(strCmd == "hud_save") { // save hud config if(argv(1) == "" || argv(2)) { - print("Usage:\n"); - print("hud_save configname (saves to hud_skinname_configname.cfg)\n"); + print(_("Usage:\n")); + print(_("hud_save configname (saves to hud_skinname_configname.cfg)\n")); } else HUD_Panel_ExportCfg(argv(1)); @@ -510,10 +506,10 @@ void GameCommand(string msg) if(argv(0) == "help" || argc == 0) { - print("Usage: cl_cmd COMMAND..., where possible commands are:\n"); - print(" settemp cvar value\n"); - print(" scoreboard_columns_set ...\n"); - print(" scoreboard_columns_help\n"); + print(_("Usage: cl_cmd COMMAND..., where possible commands are:\n")); + print(_(" settemp cvar value\n")); + print(_(" scoreboard_columns_set ...\n")); + print(_(" scoreboard_columns_help\n")); GameCommand_Generic("help"); return; } @@ -718,7 +714,7 @@ void Ent_ReadPlayerScore() #ifdef DP_CSQC_ENTITY_REMOVE_IS_B0RKED if(!isNew && n != self.sv_entnum) { - print("A CSQC entity changed its owner!\n"); + print(_("A CSQC entity changed its owner!\n")); isNew = true; Ent_Remove(); self.enttype = ENT_CLIENT_SCORES; @@ -932,7 +928,7 @@ void(float bIsNewEntity) CSQC_Ent_Update = if(self.enttype) if(t != self.enttype) { - print("A CSQC entity changed its type!\n"); + print(_("A CSQC entity changed its type!\n")); Ent_Remove(); bIsNewEntity = 1; } @@ -969,7 +965,7 @@ void(float bIsNewEntity) CSQC_Ent_Update = case ENT_CLIENT_GAUNTLET: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_GAUNTLET); break; case ENT_CLIENT_ACCURACY: Ent_ReadAccuracy(); break; default: - error(strcat("unknown entity type in CSQC_Ent_Update: ", ftos(self.enttype), "\n")); + error(strcat(_("unknown entity type in CSQC_Ent_Update: %d\n"), self.enttype)); break; } @@ -1094,10 +1090,16 @@ void Ent_Init() g_balance_electro_secondary_bouncestop = ReadCoord(); nex_scope = !ReadByte(); - campingrifle_scope = !ReadByte(); + sniperrifle_scope = !ReadByte(); serverflags = ReadByte(); + cr_maxbullets = ReadByte(); + + minelayer_maxmines = ReadByte(); + + g_trueaim_minrange = ReadCoord(); + if(!postinit) PostInit(); } @@ -1396,10 +1398,6 @@ float CSQC_Parse_TempEntity() Net_WeaponComplain(); bHandled = true; break; - case TE_CSQC_CR_MAXBULLETS: - cr_maxbullets = ReadByte(); - bHandled = true; - break; default: // No special logic for this temporary entity; return 0 so the engine can handle it bHandled = false; @@ -1441,12 +1439,12 @@ string getcommandkey(string text, string command) if ("" == keys) { if (hud_showbinds > 1) - return strcat(text, " (not bound)"); + return sprintf(_("%s (not bound)"), text); else return text; } else if (hud_showbinds > 1) - return strcat(text, " (", keys, ")"); + return sprintf(_("%s (%s)"), text, keys); else return keys; } diff --git a/qcsrc/client/View.qc b/qcsrc/client/View.qc index 908e6dbf1..6746cfe6b 100644 --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@ -137,7 +137,7 @@ vector GetCurrentFov(float fov) zoomspeed = 3.5; zoomdir = button_zoom; - if((getstati(STAT_ACTIVEWEAPON) == WEP_NEX && nex_scope) || (getstati(STAT_ACTIVEWEAPON) == WEP_CAMPINGRIFLE && campingrifle_scope)) // do NOT use switchweapon here + if((getstati(STAT_ACTIVEWEAPON) == WEP_NEX && nex_scope) || (getstati(STAT_ACTIVEWEAPON) == WEP_SNIPERRIFLE && sniperrifle_scope)) // do NOT use switchweapon here zoomdir += button_attack2; if(spectatee_status > 0 || isdemo()) { @@ -274,7 +274,7 @@ float TrueAimCheck() case WEP_MINSTANEX: mv = MOVE_NORMAL; break; - case WEP_CAMPINGRIFLE: + case WEP_SNIPERRIFLE: ta = trueaim_rifle; mv = MOVE_NORMAL; if(zoomscript_caught) @@ -306,6 +306,9 @@ float TrueAimCheck() traceline(view_origin, view_origin + view_forward * MAX_SHOT_DISTANCE, mv, ta); trueaimpoint = trace_endpos; + if(vlen(trueaimpoint - view_origin) < g_trueaim_minrange) + trueaimpoint = view_origin + view_forward * g_trueaim_minrange; + if(vecs_x > 0) vecs_y = -vecs_y; else @@ -350,6 +353,9 @@ vector freeze_pmove_org, freeze_input_angles; entity nightvision_noise, nightvision_noise2; float pickup_crosshair_time, pickup_crosshair_size; +float hit_time, typehit_time; +float nextsound_hit_time, nextsound_typehit_time; +float hitindication_crosshair_time, hitindication_crosshair_size; float use_nex_chargepool; float myhealth, myhealth_prev; @@ -357,6 +363,9 @@ float myhealth_flash; vector myhealth_gentlergb; +float contentavgalpha, liquidalpha_prev; +vector liquidcolor_prev; + void CSQC_UpdateView(float w, float h) { entity e; @@ -572,7 +581,7 @@ void CSQC_UpdateView(float w, float h) // next R_RenderScene call drawstring('0 0 0', "", '1 1 0', '1 1 1', 0, 0); - if(autocvar_r_fakelight >= 2 || autocvar_r_fullbright >= 1) + if(autocvar_r_fakelight >= 2 || autocvar_r_fullbright) if not(serverflags & SERVERFLAG_ALLOW_FULLBRIGHT) { // apply night vision effect @@ -628,11 +637,11 @@ void CSQC_UpdateView(float w, float h) // the view to go back to normal, so reticle_type would become 0 as we fade out) if(spectatee_status || getstati(STAT_HEALTH) <= 0) reticle_type = 0; // prevent reticle from showing during the respawn zoom effect or for spectators - else if(activeweapon == WEP_NEX && (button_zoom || zoomscript_caught) || activeweapon == WEP_CAMPINGRIFLE && (button_zoom || zoomscript_caught) || activeweapon == WEP_MINSTANEX && (button_zoom || zoomscript_caught)) + else if(activeweapon == WEP_NEX && (button_zoom || zoomscript_caught) || activeweapon == WEP_SNIPERRIFLE && (button_zoom || zoomscript_caught) || activeweapon == WEP_MINSTANEX && (button_zoom || zoomscript_caught)) reticle_type = 2; // nex zoom else if(button_zoom || zoomscript_caught) reticle_type = 1; // normal zoom - else if(activeweapon == WEP_NEX && button_attack2 || activeweapon == WEP_CAMPINGRIFLE && button_attack2) + else if(activeweapon == WEP_NEX && button_attack2 || activeweapon == WEP_SNIPERRIFLE && button_attack2) reticle_type = 2; // nex zoom if(autocvar_cl_reticle_stretch) @@ -666,8 +675,57 @@ void CSQC_UpdateView(float w, float h) drawpic(reticle_pos, "gfx/reticle_nex", reticle_size, '1 1 1', f * autocvar_cl_reticle_item_nex, DRAWFLAG_NORMAL); } + // improved polyblend vector rgb; + if(autocvar_hud_contents) + { + float contentalpha_temp, incontent, liquidalpha, contentfadetime; + vector liquidcolor; + + switch(pointcontents(view_origin)) + { + case CONTENT_WATER: + liquidalpha = autocvar_hud_contents_water_alpha; + liquidcolor = stov(autocvar_hud_contents_water_color); + incontent = 1; + break; + + case CONTENT_LAVA: + liquidalpha = autocvar_hud_contents_lava_alpha; + liquidcolor = stov(autocvar_hud_contents_lava_color); + incontent = 1; + break; + + case CONTENT_SLIME: + liquidalpha = autocvar_hud_contents_slime_alpha; + liquidcolor = stov(autocvar_hud_contents_slime_color); + incontent = 1; + break; + + default: + liquidalpha = 0; + liquidcolor = '0 0 0'; + incontent = 0; + break; + } + + if(incontent) // fade in/out at different speeds so you can do e.g. instant fade when entering water and slow when leaving it. + { // also lets delcare previous values for blending properties, this way it isn't reset until after you have entered a different content + contentfadetime = autocvar_hud_contents_fadeintime; + liquidalpha_prev = liquidalpha; + liquidcolor_prev = liquidcolor; + } + else + contentfadetime = autocvar_hud_contents_fadeouttime; + + contentalpha_temp = bound(0, drawframetime / max(0.0001, contentfadetime), 1); + contentavgalpha = contentavgalpha * (1 - contentalpha_temp) + incontent * contentalpha_temp; + + if(contentavgalpha) + drawfill('0 0 0', eX * vid_conwidth + eY * vid_conheight, liquidcolor_prev, contentavgalpha * liquidalpha_prev, DRAWFLAG_NORMAL); + } + if(autocvar_hud_damage) { float myhealth_flash_temp; @@ -676,7 +734,7 @@ void CSQC_UpdateView(float w, float h) // fade out myhealth_flash = max(0, myhealth_flash - autocvar_hud_damage_fade_rate * frametime); // add new damage - myhealth_flash = bound(0, myhealth_flash + max(0, myhealth_prev - myhealth) * autocvar_hud_damage_factor, autocvar_hud_damage_maxalpha); + myhealth_flash = bound(0, myhealth_flash + dmg_take * autocvar_hud_damage_factor, autocvar_hud_damage_maxalpha); float pain_threshold, pain_threshold_lower, pain_threshold_lower_health; pain_threshold = autocvar_hud_damage_pain_threshold; @@ -754,6 +812,19 @@ void CSQC_UpdateView(float w, float h) scoreboard_active = HUD_WouldDrawScoreboard(); + hit_time = getstatf(STAT_HIT_TIME); + if(hit_time > nextsound_hit_time && autocvar_cl_hitsound) + { + sound(world, CHAN_AUTO, "misc/hit.wav", VOL_BASE, ATTN_NONE); + nextsound_hit_time = time + autocvar_cl_hitsound_antispam_time; + } + typehit_time = getstatf(STAT_TYPEHIT_TIME); + if(typehit_time > nextsound_typehit_time) + { + sound(world, CHAN_AUTO, "misc/typehit.wav", VOL_BASE, ATTN_NONE); + nextsound_typehit_time = time + autocvar_cl_hitsound_antispam_time; + } + float hud; hud = getstati(STAT_HUD); if(hud == HUD_SPIDERBOT) @@ -795,7 +866,6 @@ 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; @@ -844,6 +914,50 @@ void CSQC_UpdateView(float w, float h) } if(wcross_wep != "" && autocvar_crosshair_color_per_weapon) wcross_color = stov(cvar_string(strcat("crosshair_", wcross_wep, "_color"))); + else if(autocvar_crosshair_color_by_health) + { + local float x = getstati(STAT_HEALTH); + + //x = red + //y = green + //z = blue + + wcross_color_z = 0; + + if(x > 200) + { + wcross_color_x = 0; + wcross_color_y = 1; + } + else if(x > 150) + { + wcross_color_x = 0.4 - (x-150)*0.02 * 0.4; + wcross_color_y = 0.9 + (x-150)*0.02 * 0.1; + } + else if(x > 100) + { + wcross_color_x = 1 - (x-100)*0.02 * 0.6; + wcross_color_y = 1 - (x-100)*0.02 * 0.1; + wcross_color_z = 1 - (x-100)*0.02; + } + else if(x > 50) + { + wcross_color_x = 1; + wcross_color_y = 1; + wcross_color_z = 0.2 + (x-50)*0.02 * 0.8; + } + else if(x > 20) + { + wcross_color_x = 1; + wcross_color_y = (x-20)*90/27/100; + wcross_color_z = (x-20)*90/27/100 * 0.2; + } + else + { + wcross_color_x = 1; + wcross_color_y = 0; + } + } else wcross_color = stov(autocvar_crosshair_color); @@ -874,6 +988,27 @@ void CSQC_UpdateView(float w, float h) wcross_scale += sin(pickup_crosshair_size) * autocvar_crosshair_pickup; } + + vector hitindication_color; + if(autocvar_crosshair_hitindication) + { + hitindication_color = stov(autocvar_crosshair_hitindication_color); + if(hitindication_crosshair_time < hit_time) + { + hitindication_crosshair_size = 1; + hitindication_crosshair_time = hit_time; + } + + if(hitindication_crosshair_size > 0) + hitindication_crosshair_size -= autocvar_crosshair_hitindication_speed * frametime; + else + hitindication_crosshair_size = 0; + + wcross_scale += sin(hitindication_crosshair_size) * autocvar_crosshair_hitindication; + wcross_color_x += sin(hitindication_crosshair_size) * hitindication_color_x; + wcross_color_y += sin(hitindication_crosshair_size) * hitindication_color_y; + wcross_color_z += sin(hitindication_crosshair_size) * hitindication_color_z; + } if(shottype == SHOTTYPE_HITENEMY) wcross_scale *= autocvar_crosshair_hittest; // is not queried if hittest is 0 @@ -928,50 +1063,63 @@ 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); - - if(nex_charge_movingavg == 0) // this should only happen if we have just loaded up the game - nex_charge_movingavg = nex_charge; - - // ring around crosshair representing bullets left in camping rifle clip - if (activeweapon == WEP_CAMPINGRIFLE && cr_maxbullets) - { - bullets = getstati(STAT_BULLETS_LOADED); - f = bound(0, bullets / cr_maxbullets, 1); - - a = autocvar_crosshair_ring_campingrifle_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 (autocvar_crosshair_ring) { - if(nex_chargepool || use_nex_chargepool) + float ring_value, ring_alpha, ring_inner_value, ring_inner_alpha; + string ring_image, ring_inner_image; + vector ring_rgb, ring_inner_rgb; + + float ring_scale = autocvar_crosshair_ring_size; + + float nex_charge, nex_chargepool; + nex_charge = getstatf(STAT_NEX_CHARGE); + nex_chargepool = getstatf(STAT_NEX_CHARGEPOOL); + + if(nex_charge_movingavg == 0) // this should only happen if we have just loaded up the game + nex_charge_movingavg = nex_charge; + + if (activeweapon == WEP_SNIPERRIFLE && cr_maxbullets && autocvar_crosshair_ring_sniperrifle) // ring around crosshair representing bullets left in camping rifle clip + { + ring_value = bound(0, getstati(STAT_BULLETS_LOADED) / cr_maxbullets, 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_sniperrifle_alpha; + ring_image = "gfx/crosshair_ring_sniperrifle.tga"; + ring_rgb = wcross_color; + } + else 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_image = "gfx/crosshair_ring_inner.tga"; + 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; + + // 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_image = "gfx/crosshair_ring_nexgun.tga"; + ring_rgb = wcross_color; } - 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; - - 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); + 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_image = "gfx/crosshair_ring.tga"; + ring_rgb = wcross_color; } - - // 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 && 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) \ @@ -1484,7 +1632,7 @@ void CSQC_Demo_Camera() else { tmp = getmousepos() * 0.1; - if(vlen(tmp)>autocvar_camera_mouse_treshold) + if(vlen(tmp)>autocvar_camera_mouse_threshold) { mouse_angles_x += tmp_y * cos(mouse_angles_z * DEG2RAD) + (tmp_x * sin(mouse_angles_z * DEG2RAD)); mouse_angles_y -= tmp_x * cos(mouse_angles_z * DEG2RAD) + (tmp_y * -sin(mouse_angles_z * DEG2RAD)); diff --git a/qcsrc/client/autocvars.qh b/qcsrc/client/autocvars.qh index f3d18aa9f..867859c57 100644 --- a/qcsrc/client/autocvars.qh +++ b/qcsrc/client/autocvars.qh @@ -10,7 +10,7 @@ float autocvar_camera_forward_follows; float autocvar_camera_free; float autocvar_camera_look_attenuation; float autocvar_camera_look_player; -float autocvar_camera_mouse_treshold; +float autocvar_camera_mouse_threshold; float autocvar_camera_reset; float autocvar_camera_speed_attenuation; float autocvar_camera_speed_chase; @@ -99,21 +99,30 @@ string autocvar_crosshair_dot_color; float autocvar_crosshair_dot_size; float autocvar_crosshair_effect_scalefade; float autocvar_crosshair_effect_speed; +float autocvar_crosshair_hitindication; +string autocvar_crosshair_hitindication_color; +float autocvar_crosshair_hitindication_speed; float autocvar_crosshair_hittest; float autocvar_crosshair_hittest_blur; float autocvar_crosshair_hittest_showimpact; float autocvar_crosshair_per_weapon; float autocvar_crosshair_pickup; float autocvar_crosshair_pickup_speed; -float autocvar_crosshair_ring_campingrifle_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_sniperrifle; +float autocvar_crosshair_ring_sniperrifle_alpha; float autocvar_crosshair_size; float autocvar_ekg; float autocvar_fov; @@ -145,6 +154,16 @@ float autocvar_hud_configure_grid_alpha; float autocvar_hud_configure_grid_xsize; float autocvar_hud_configure_grid_ysize; float autocvar_hud_configure_teamcolorforced; +float autocvar_hud_contents; +float autocvar_hud_contents_factor; +float autocvar_hud_contents_fadeintime; +float autocvar_hud_contents_fadeouttime; +float autocvar_hud_contents_lava_alpha; +string autocvar_hud_contents_lava_color; +float autocvar_hud_contents_slime_alpha; +string autocvar_hud_contents_slime_color; +float autocvar_hud_contents_water_alpha; +string autocvar_hud_contents_water_color; float autocvar_hud_damage; string autocvar_hud_damage_color; float autocvar_hud_damage_factor; @@ -196,6 +215,7 @@ float autocvar_hud_panel_modicons; float autocvar_hud_panel_notify; float autocvar_hud_panel_notify_fadetime; float autocvar_hud_panel_notify_flip; +float autocvar_hud_panel_notify_fontsize; float autocvar_hud_panel_notify_print; float autocvar_hud_panel_notify_time; float autocvar_hud_panel_powerups; @@ -280,3 +300,6 @@ float autocvar_vid_conheight; float autocvar_vid_conwidth; float autocvar_vid_pixelheight; float autocvar_viewsize; +float autocvar_crosshair_color_by_health; +float autocvar_cl_hitsound; +float autocvar_cl_hitsound_antispam_time; diff --git a/qcsrc/client/bgmscript.qc b/qcsrc/client/bgmscript.qc index 43255da58..353c5419a 100644 --- a/qcsrc/client/bgmscript.qc +++ b/qcsrc/client/bgmscript.qc @@ -131,7 +131,7 @@ void BGMScript_InitEntity(entity e) e.bgmscriptline = e.bgmscriptline0 = i; if(i >= bgmscriptbufsize) { - print("ERROR: bgmscript does not define ", e.bgmscript, "\n"); + print(sprintf("ERROR: bgmscript does not define %s\n", e.bgmscript)); e.bgmscript = ""; } } @@ -182,7 +182,6 @@ float BGMScript(entity e) if(bgmtime < e.bgmscripttime) { - //print("reset ", e.bgmscript, "\n"); amp = GetCurrentAmplitude(e, e.bgmscripttime - e.bgmscriptstatetime + drawframetime); e.bgmscriptline = e.bgmscriptline0; diff --git a/qcsrc/client/ctf.qc b/qcsrc/client/ctf.qc index 0a5375f51..fd35613a5 100644 --- a/qcsrc/client/ctf.qc +++ b/qcsrc/client/ctf.qc @@ -1,4 +1,5 @@ -//include "main.qh" +#ifdef CTF_EXAMPLE + // NOTE: This file contains lots of debugging stuff // it is not really used... can be seen as another sample... @@ -31,10 +32,10 @@ void() order_menu_render = color = getplayerkey(player_localentnum-1, "topcolor"); if(getstati(STAT_CTF_STATE) == CTF_STATE_COMMANDER) { - drawstring(ps, "\x1D\x1E\x1E\x1E\x1E Order Menu \x1E\x1E\x1E\x1E\x1F", '8 8 0', '1 1 0', 1, 0); ps += po; - drawstring(ps, strcat("Order: ", ctf_temp_1), '8 8 0', '1 1 0', 1, 0); ps += po; - drawcolorcodedstring(ps, "1) ^3previous page", '8 8 0', 1, 0); ps += po; - drawcolorcodedstring(ps, "2) ^3next page", '8 8 0', 1, 0); ps += po; + drawstring(ps, _("----- Order Menu -----"), '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, sprintf(_("Order: %s"), ctf_temp_1), '8 8 0', '1 1 0', 1, 0); ps += po; + drawcolorcodedstring(ps, _("1) ^3previous page"), '8 8 0', 1, 0); ps += po; + drawcolorcodedstring(ps, _("2) ^3next page"), '8 8 0', 1, 0); ps += po; for((n = 2), (p = i = 0); i < maxclients && n > 0; ++i) { frags = getplayerkey(i, "frags"); if(!frags || (i+1) == player_localentnum) @@ -51,7 +52,7 @@ void() order_menu_render = drawcolorcodedstring(ps, strcat(ftos(n), ") ", GetPlayerName(i), " : ", ftos(getstatf(STAT_CTF_STATE))), '8 8 0', 1, 0); ps += po; } } - drawstring(ps, "ESC) Exit Menu", '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, _("ESC) Exit Menu"), '8 8 0', '1 1 0', 1, 0); ps += po; } else { menu_close(); } @@ -118,18 +119,18 @@ float(float bInputType, float nPrimary, float nSecondary) order_menu_action = } } if(n == 0) { - //print(strcat("Issuing order to: ", ftos(i+1), "\n")); + //print(sprintf(_("Issuing order to: %d\n"), i+1)); //print(strcat("cmd order #", ftos(i+1), " ", ctf_temp_1, ";\n")); localcmd(strcat("\ncmd order #", ftos(i+1), " ", ctf_temp_1, ";")); } else { - print(strcat("Couldn't find player ", ftos(chose), "\n")); + print(sprintf(_("Couldn't find player %d\n"), chose)); } return TRUE; } else if(nSecondary == K_ESCAPE) { strunzone(ctf_temp_1); menu_close(); } else { - //print(strcat("Menu action ", arg, " does not exist.\n")); + //print(sprintf(_("Menu action %s does not exist.\n"), arg)); return FALSE; } return TRUE; @@ -150,14 +151,14 @@ void() ctf_menu_render = po = '0 8 0'; if(getstati(STAT_CTF_STATE) == CTF_STATE_COMMANDER) { - drawstring(ps, "\x1D\x1E\x1E\x1E\x1E Command Menu \x1E\x1E\x1E\x1E\x1F", '8 8 0', '1 1 0', 1, 0); ps += po; - drawstring(ps, "Issue orders:", '8 8 0', '1 1 0', 1, 0); ps += po; - drawstring(ps, " 1) Attack ", '8 8 0', '1 1 0', 1, 0); + drawstring(ps, _("----- Command Menu -----"), '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, _("Issue orders:"), '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, _(" 1) Attack"), '8 8 0', '1 1 0', 1, 0); drawstring(ps + '80 0 0', " \x0F", '8 8 0', '1 1 1', 1, 0); ps += po; - drawstring(ps, " 2) Defend \x0E", '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, strcat(_(" 2) Defend"), " \x0E"), '8 8 0', '1 1 0', 1, 0); ps += po; ps += po; - drawstring(ps, "3) Resign from command.", '8 8 0', '1 1 0', 1, 0); ps += po; - drawstring(ps, "ESC) Exit Menu", '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, _("3) Resign from command."), '8 8 0', '1 1 0', 1, 0); ps += po; + drawstring(ps, _("ESC) Exit Menu"), '8 8 0', '1 1 0', 1, 0); ps += po; } else { menu_close(); } @@ -208,9 +209,11 @@ void() ctf_view = } else if(stat == CTF_STATE_DEFEND) { drawpic('0 0 0', "gfx/ctf_ic_def.tga", '64 64 0', '1 1 1', 1, 0); } else if(stat == CTF_STATE_COMMANDER) { - drawstring('0 0 0', "You're commander!", '8 8 0', '1 1 1', 1, 0); + drawstring('0 0 0', _("You're commander!"), '8 8 0', '1 1 1', 1, 0); } else if(stat < 0) { } else { - drawstring('0 0 0', "Awaiting orders...", '8 8 0', '1 1 1', 0.5, 0); + drawstring('0 0 0', _("Awaiting orders..."), '8 8 0', '1 1 1', 0.5, 0); } }; + +#endif diff --git a/qcsrc/client/damage.qc b/qcsrc/client/damage.qc index 24c5f0153..13c8e462e 100644 --- a/qcsrc/client/damage.qc +++ b/qcsrc/client/damage.qc @@ -54,15 +54,11 @@ void Ent_DamageInfo(float isNew) thisforce = forcemul * force; } - //print("check ", ftos(num_for_edict(self)), " ", self.classname, "\n"); - //print(ftos(self.damageforcescale), "\n"); - //print(vtos(thisforce), "\n"); if(self.damageforcescale) if(vlen(thisforce)) { self.move_velocity = self.move_velocity + self.damageforcescale * thisforce; self.move_flags &~= FL_ONGROUND; - //print("pushed ", ftos(num_for_edict(self)), " loose\n"); } if(w_issilent) diff --git a/qcsrc/client/effects.qc b/qcsrc/client/effects.qc index 5793ed88b..b695867ca 100644 --- a/qcsrc/client/effects.qc +++ b/qcsrc/client/effects.qc @@ -57,19 +57,16 @@ void cl_effetcs_lightningarc(vector from, vector to,float seglength,float drifts dirnew = normalize(direction * (1 - drift) + randomvec() * drift); pos = pos_l + dirnew * steplength; te_lightning1(world,pos_l,pos); - //b_make(pos_l, pos,"particles/lightning2",0.25,64); if(random() < branchfactor) cl_effetcs_lightningarc(pos, pos + (dirnew * length * 0.25),seglength,drifts,drifte,min(branchfactor + branchfactor_add,1),branchfactor_add); pos_l = pos; } te_lightning1(world,pos_l,to); - //b_make(pos_l, to,"particles/lightning2",0.25,64); } else te_lightning1(world,from,to); - //b_make(from, to,"particles/lightning2",0.25,64); } diff --git a/qcsrc/client/hook.qc b/qcsrc/client/hook.qc index 09327e30a..7ff5adeca 100644 --- a/qcsrc/client/hook.qc +++ b/qcsrc/client/hook.qc @@ -18,13 +18,6 @@ void Draw_CylindricLine(vector from, vector to, float thickness, string texture, // direction is perpendicular to the view normal, and perpendicular to the axis thickdir = normalize(cross(axis, vieworg - from)); -/* - print("from ", vtos(from), "\n"); - print("to ", vtos(to), "\n"); - print("org ", vtos(view_origin), "\n"); - print("dir ", vtos(thickdir), "\n"); -*/ - A = from - thickdir * (thickness / 2); B = from + thickdir * (thickness / 2); C = to + thickdir * (thickness / 2); diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc index 2f3ec3b17..30a925a4f 100644 --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@ -297,7 +297,6 @@ void HUD_DrawCenterPrint (void) { ts = centerprint_messages[i]; drawfontscale = sz * '1 1 0'; - drawfont = hud_bigfont; pos_x = (vid_conwidth - stringwidth(ts, TRUE, centerprint_fontsize)) * 0.5; if (ts != "") { @@ -308,7 +307,6 @@ void HUD_DrawCenterPrint (void) // half height for empty lines looks better pos_y = pos_y + sz * centerprint_fontsize_y * 0.5; drawfontscale = '1 1 0'; - drawfont = hud_font; } } @@ -327,13 +325,13 @@ void drawstringcenter(vector position, string text, vector scale, vector rgb, fl // return the string of the given race place string race_PlaceName(float pos) { if(pos == 1) - return "1st"; + return _("1st"); else if(pos == 2) - return "2nd"; + return _("2nd"); else if(pos == 3) - return "3rd"; + return _("3rd"); else - return strcat(ftos(pos), "th"); + return sprintf(_("%dth"), pos); } // return the string of the onscreen race timer @@ -365,12 +363,12 @@ string MakeRaceString(float cp, float mytime, float histime, float lapdelta, str if(lapdelta > 0) { - lapstr = strcat(" (-", ftos(lapdelta), "L)"); + lapstr = sprintf(_(" (-%dL)"), lapdelta); col = "^2"; } else if(lapdelta < 0) { - lapstr = strcat(" (+", ftos(-lapdelta), "L)"); + lapstr = sprintf(_(" (+%dL)"), -lapdelta); col = "^1"; } } @@ -386,20 +384,20 @@ string MakeRaceString(float cp, float mytime, float histime, float lapdelta, str col = "^7"; if(cp == 254) - cpname = "Start line"; + cpname = _("Start line"); else if(cp == 255) - cpname = "Finish line"; + cpname = _("Finish line"); else if(cp) - cpname = strcat("Intermediate ", ftos(cp)); + cpname = sprintf(_("Intermediate %d"), cp); else - cpname = "Finish line"; + cpname = _("Finish line"); if(histime < 0) return strcat(col, cpname); else if(hisname == "") - return strcat(col, cpname, " (", timestr, ")"); + return strcat(col, sprintf(_("%s (%s)"), cpname, timestr)); else - return strcat(col, cpname, " (", timestr, " ", strcat(hisname, col, lapstr), ")"); + return strcat(col, sprintf(_("%s (%s %s)"), cpname, timestr, strcat(hisname, col, lapstr))); } // Check if the given name already exist in race rankings? In that case, where? (otherwise return 0) @@ -541,11 +539,11 @@ void HUD_Panel_ExportCfg(string cfgname) } HUD_Write("menu_sync\n"); // force the menu to reread the cvars, so that the dialogs are updated - print("^2Successfully exported to ", filename, "! (Note: It's saved in data/data/)\n"); + print(sprintf(_("^2Successfully exported to %s! (Note: It's saved in data/data/)\n"), filename)); fclose(fh); } else - print("^1Couldn't write to ", filename, "\n"); + print(sprintf(_("^1Couldn't write to %s\n"), filename)); } const float hlBorderSize = 4; @@ -1508,7 +1506,7 @@ float GetAmmoTypeForWep(float i) case WEP_HLAC: return 3; case WEP_MINSTANEX: return 3; case WEP_NEX: return 3; - case WEP_CAMPINGRIFLE: return 1; + case WEP_SNIPERRIFLE: return 1; case WEP_HAGAR: return 2; case WEP_ROCKET_LAUNCHER: return 2; case WEP_SEEKER: return 2; @@ -1825,15 +1823,15 @@ 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) { - s = "Don't have"; + s = _("Don't have"); color = stov(autocvar_hud_panel_weapons_complainbubble_color_donthave); } else { - s = "Unavailable"; + s = _("Unavailable"); color = stov(autocvar_hud_panel_weapons_complainbubble_color_unavailable); } float padding = autocvar_hud_panel_weapons_complainbubble_padding; @@ -1984,7 +1982,6 @@ void HUD_Ammo(void) ammo_size_y = newSize; } - drawfont = hud_bigfont; float i, stat_items, currently_selected; if (autocvar_hud_panel_ammo_onlycurrent) { @@ -2016,7 +2013,6 @@ void HUD_Ammo(void) column = column + 1; } } - drawfont = hud_font; } void DrawNumIcon(float iconalign, vector myPos, vector mySize, float x, string icon, float left, vector color, float alpha) @@ -2068,9 +2064,7 @@ void DrawNumIcon(float iconalign, vector myPos, vector mySize, float x, string i } } - drawfont = hud_bigfont; drawstring_aspect(numpos, ftos(x), eX * (2/3) * newSize_x + eY * newSize_y, color, panel_fg_alpha * alpha, DRAWFLAG_NORMAL); - drawfont = hud_font; drawpic_aspect_skin(picpos, icon, '1 1 0' * newSize_y, '1 1 1', panel_fg_alpha * alpha, DRAWFLAG_NORMAL); } @@ -2153,7 +2147,6 @@ void HUD_Powerups(void) { rightexact = strength_time; } - drawfont = hud_bigfont; float baralign = autocvar_hud_panel_powerups_baralign; float barflip; float iconalign = autocvar_hud_panel_powerups_iconalign; @@ -2325,7 +2318,6 @@ void HUD_Powerups(void) { } } } - drawfont = hud_font; } // Health/armor (#3) @@ -2367,7 +2359,6 @@ void HUD_HealthArmor(void) vector picpos; vector numpos; - drawfont = hud_bigfont; float baralign = autocvar_hud_panel_healtharmor_baralign; float iconalign = autocvar_hud_panel_healtharmor_iconalign; float progressbar = autocvar_hud_panel_healtharmor_progressbar; @@ -2630,7 +2621,6 @@ void HUD_HealthArmor(void) } } } - drawfont = hud_font; } // Notification area (#4) @@ -2692,43 +2682,43 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s } else if (type == DEATH_KILL) { HUD_KillNotify_Push(s1, "", 0, DEATH_KILL); if (alsoprint) - print ("^1",s1, "^1 couldn't take it anymore\n"); + print (sprintf(_("^1%s^1 couldn't take it anymore\n"), s1)); } else if (type == DEATH_ROT) { HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC); if (alsoprint) - print ("^1",s1, "^1 died\n"); + print (sprintf(_("^1%s^1 died\n"), s1)); } else if (type == DEATH_NOAMMO) { HUD_KillNotify_Push(s1, "", 0, DEATH_NOAMMO); if (alsoprint) - print ("^7",s1, "^7 committed suicide. What's the point of living without ammo?\n"); + print (sprintf(_("^7%s^7 committed suicide. What's the point of living without ammo?\n"), s1)); } else if (type == DEATH_CAMP) { HUD_KillNotify_Push(s1, "", 0, DEATH_CAMP); if (alsoprint) - print ("^1",s1, "^1 thought they found a nice camping ground\n"); + print (sprintf(_("^1%s^1 thought they found a nice camping ground\n"), s1)); } else if (type == KILL_TEAM_RED || type == KILL_TEAM_BLUE) { HUD_KillNotify_Push(s1, "", 0, type); if (alsoprint) - print ("^1",s1, "^1 didn't become friends with the Lord of Teamplay\n"); + print (sprintf(_("^1%s^1 didn't become friends with the Lord of Teamplay\n"), s1)); } else if (type == DEATH_CHEAT) { HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC); if (alsoprint) - print ("^1",s1, "^1 unfairly eliminated themself\n"); + print (sprintf(_("^1%s^1 unfairly eliminated themself\n"), s1)); } else if (type == DEATH_FIRE) { HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC); if (alsoprint) - print ("^1",s1, "^1 burned to death\n"); + print (sprintf(_("^1%s^1 burned to death\n"), s1)); } else if (type != DEATH_TEAMCHANGE && type != DEATH_QUIET) { HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC); if (alsoprint) - print ("^1",s1, "^1 couldn't resist the urge to self-destruct\n"); + print (sprintf(_("^1%s^1 couldn't resist the urge to self-destruct\n"), s1)); } if (stof(s2) > 2) // killcount > 2 - print ("^1",s1,"^1 ended it all after a ",s2," kill spree\n"); + print (sprintf(_("^1%s^1 ended it all after a %d kill spree\n"), s1, stof(s2))); } else if(msg == MSG_KILL) { w = DEATH_WEAPONOF(type); if(WEP_VALID(w)) { - if((w == WEP_CAMPINGRIFLE || w == WEP_MINSTANEX) && type & HITTYPE_HEADSHOT) // all headshot weapons go here + if((w == WEP_SNIPERRIFLE || w == WEP_MINSTANEX) && type & HITTYPE_HEADSHOT) // all headshot weapons go here HUD_KillNotify_Push(s1, s2, 1, DEATH_HEADSHOT); else HUD_KillNotify_Push(s1, s2, 1, type); @@ -2741,112 +2731,112 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s if(alsoprint) { if(gentle) { - print ("^1", s1, "^1 took action against a team mate\n"); + print (sprintf(_("^1%s^1 took action against a team mate\n"), s1)); } else { - print ("^1", s1, "^1 mows down a team mate\n"); + print (sprintf(_("^1%s^1 mows down a team mate\n"), s1)); } } if (stof(s2) > 2 && type == KILL_TEAM_SPREE) { if(gentle) - print ("^1",s1,"^1 ended a ",s3," scoring spree by going against a team mate\n"); + print (sprintf(_("^1%s^1 ended a %d scoring spree by going against a team mate\n"), s1, stof(s3))); else - print ("^1",s1,"^1 ended a ",s3," kill spree by killing a team mate\n"); + print (sprintf(_("^1%s^1 ended a %d kill spree by killing a team mate\n"), s1, stof(s3))); } else if (stof(s2) > 2) { if(gentle) - print ("^1",s1,"'s ^1",s3," scoring spree was ended by a team mate!\n"); + print (sprintf(_("^1%s^1's %s scoring spree was ended by a team mate!\n"), s1, stof(s3))); else - print ("^1",s1,"'s ^1",s3," kill spree was ended by a team mate!\n"); + print (sprintf(_("^1%s^1's %s kill spree was ended by a team mate!\n"), s1, stof(s3))); } } else if(type == KILL_FIRST_BLOOD) - print("^1",s1, "^1 drew first blood", "\n"); + 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) - print ("^1",s2, "^1 tried to occupy ", s1, "^1's teleport destination space\n"); + print (sprintf(_("^1%s^1 tried to occupy %s^1's teleport destination space\n"), s2, s1)); else - print ("^1",s2, "^1 was telefragged by ", s1, "\n"); + print (sprintf(_("^1%s^1 was telefragged by %s\n"), s2, s1)); } else if (type == DEATH_DROWN) { HUD_KillNotify_Push(s1, s2, 1, DEATH_DROWN); if(alsoprint) - print ("^1",s2, "^1 was drowned by ", s1, "\n"); + print (sprintf(_("^1%s^1 was drowned by %s\n"), s2, s1)); } else if (type == DEATH_SLIME) { HUD_KillNotify_Push(s1, s2, 1, DEATH_SLIME); if(alsoprint) - print ("^1",s2, "^1 was slimed by ", s1, "\n"); + print (sprintf(_("^1%s^1 was slimed by %s\n"), s2, s1)); } else if (type == DEATH_LAVA) { HUD_KillNotify_Push(s1, s2, 1, DEATH_LAVA); if(alsoprint) - print ("^1",s2, "^1 was cooked by ", s1, "\n"); + print (sprintf(_("^1%s^1 was cooked by %s\n"), s2, s1)); } else if (type == DEATH_FALL) { HUD_KillNotify_Push(s1, s2, 1, DEATH_FALL); if(alsoprint) - print ("^1",s2, "^1 was grounded by ", s1, "\n"); + print (sprintf(_("^1%s^1 was grounded by %s\n"), s2, s1)); } else if (type == DEATH_SHOOTING_STAR) { HUD_KillNotify_Push(s1, s2, 1, DEATH_SHOOTING_STAR); if(alsoprint) - print ("^1",s2, "^1 was shot into space by ", s1, "\n"); + print (sprintf(_("^1%s^1 was shot into space by %s\n"), s2, s1)); } else if (type == DEATH_SWAMP) { HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC); if(alsoprint) - print ("^1",s2, "^1 was conserved by ", s1, "\n"); + print (sprintf(_("^1%s^1 was conserved by %s\n"), s2, s1)); } else if (type == DEATH_HURTTRIGGER) { HUD_KillNotify_Push(s1, s2, 1, DEATH_HURTTRIGGER); if(alsoprint) - print("^1",s2, "^1 was thrown into a world of hurt by ", s1, "\n"); + print(sprintf(_("^1%s^1 was thrown into a world of hurt by %s\n"), s2, s1)); } else if(type == DEATH_SBCRUSH) { HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC); if(alsoprint) - print ("^1",s2, "^1 was crushed by ^1", s1, "\n"); + print (sprintf(_("^1%s^1 was crushed by %s\n"), s2, s1)); } else if(type == DEATH_SBMINIGUN) { HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC); if(alsoprint) - print ("^1",s2, "^1 got shredded by ^1", s1, "\n"); + print (sprintf(_("^1%s^1 got shredded by %s\n"), s2, s1)); } else if(type == DEATH_SBROCKET) { HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC); if(alsoprint) - print ("^1",s2, "^1 was blased to bits by ^1", s1, "\n"); + print (sprintf(_("^1%s^1 was blasted to bits by %s\n"), s2, s1)); } else if(type == DEATH_SBBLOWUP) { HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC); if(alsoprint) - print ("^1",s2, "^1 got caught in the destruction of ^1", s1, "'s vehicle\n"); + print (sprintf(_("^1%s^1 got caught in the destruction of %s^1's vehicle\n"), s2, s1)); } else if(type == DEATH_WAKIGUN) { HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC); if(alsoprint) - print ("^1",s2, "^1 was bolted down by ^1", s1, "\n"); + print (sprintf(_("^1%s^1 was bolted down by %s\n"), s2, s1)); } else if(type == DEATH_WAKIROCKET) { HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC); if(alsoprint) - print ("^1",s2, "^1 could find no shelter from ^1", s1, "'s rockets\n"); + print (sprintf(_("^1%s^1 could find no shelter from %s^1's rockets\n"), s2, s1)); } else if(type == DEATH_WAKIBLOWUP) { HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC); if(alsoprint) - print ("^1",s2, "^1 dies when ^1", s1, "'s wakizashi dies.\n"); + print (sprintf(_("^1%s^1 dies when %s^1's wakizashi dies.\n"), s2, s1)); } else if(type == DEATH_TURRET) { HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC); if(alsoprint) - print ("^1",s2, "^1 was pushed into the line of fire by ^1", s1, "\n"); + print (sprintf(_("^1%s^1 was pushed into the line of fire by %s\n"), s2, s1)); } else if(type == DEATH_TOUCHEXPLODE) { HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC); if(alsoprint) - print ("^1",s2, "^1 was pushed into an accident by ^1", s1, "\n"); + print (sprintf(_("^1%s^1 was pushed into an accident by %s\n"), s2, s1)); } else if(type == DEATH_CHEAT) { HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC); if(alsoprint) - print ("^1",s2, "^1 was unfairly eliminated by ^1", s1, "\n"); + print (sprintf(_("^1%s^1 was unfairly eliminated by %s\n"), s2, s1)); } else if (type == DEATH_FIRE) { HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC); if(alsoprint) - print ("^1",s2, "^1 was burnt to death by ^1", s1, "\n"); + print (sprintf(_("^1%s^1 was burnt to death by %s\n"), s2, s1)); } else if (type == DEATH_CUSTOM) { HUD_KillNotify_Push(s1, s2, 1, DEATH_CUSTOM); if(alsoprint) @@ -2858,54 +2848,54 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s } else { HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC); if(alsoprint) - print ("^1",s2, "^1 was fragged by ", s1, "\n"); + print (sprintf(_("^1%s^1 was fragged by %s\n"), s2, s1)); } } else if(msg == MSG_SPREE) { if(type == KILL_END_SPREE) { if(gentle) - print ("^1",s1,"'s ^1", s2, " scoring spree was ended by ", s3, "\n"); + print (sprintf(_("^1%s^1's %s scoring spree was ended by %s\n"), s1, s2, s3)); else - print ("^1",s1,"'s ^1", s2, " kill spree was ended by ", s3, "\n"); + print (sprintf(_("^1%s^1's %s kill spree was ended by %s\n"), s1, s2, s3)); } else if(type == KILL_SPREE) { if(gentle) - print ("^1",s1,"^1 made ",s2," scores in a row\n"); + print (sprintf(_("^1%s^1 made %s scores in a row\n"), s1, s2)); else - print ("^1",s1,"^1 has ",s2," frags in a row\n"); + print (sprintf(_("^1%s^1 has %s frags in a row\n"), s1, s2)); } else if(type == KILL_SPREE_3) { if(gentle) - print (s1,"^7 made a ^1TRIPLE SCORE\n"); + print (sprintf(_("%s^7 made a ^1TRIPLE SCORE\n"), s1)); else - print (s1,"^7 made a ^1TRIPLE FRAG\n"); + print (sprintf(_("%s^7 made a ^1TRIPLE FRAG\n"), s1)); } else if(type == KILL_SPREE_5) { if(gentle) - print (s1,"^7 unleashes ^1SCORING RAGE\n"); + print (sprintf(_("%s^7 unleashes ^1SCORING RAGE\n"), s1)); else - print (s1,"^7 unleashes ^1RAGE\n"); + print (sprintf(_("%s^7 unleashes ^1RAGE\n"), s1)); } else if(type == KILL_SPREE_10) { if(gentle) - print (s1,"^7 made ^1TEN SCORES IN A ROW!\n"); + print (sprintf(_("%s^7 made ^1TEN SCORES IN A ROW!\n"), s1)); else - print (s1,"^7 starts the ^1MASSACRE!\n"); + print (sprintf(_("%s^7 starts the ^1MASSACRE!\n"), s1)); } else if(type == KILL_SPREE_15) { if(gentle) - print (s1,"^7 made ^1FIFTEEN SCORES IN A ROW!\n"); + print (sprintf(_("%s^7 made ^1FIFTEEN SCORES IN A ROW!\n"), s1)); else - print (s1,"^7 executes ^1MAYHEM!\n"); + print (sprintf(_("%s^7 executes ^1MAYHEM!\n"), s1)); } else if(type == KILL_SPREE_20) { if(gentle) - print (s1,"^7 made ^1TWENTY SCORES IN A ROW!\n"); + print (sprintf(_("%s^7 made ^1TWENTY SCORES IN A ROW!\n"), s1)); else - print (s1,"^7 is a ^1BERSERKER!\n"); + print (sprintf(_("%s^7 is a ^1BERSERKER!\n"), s1)); } else if(type == KILL_SPREE_25) { if(gentle) - print (s1,"^7 made ^1TWENTY FIFE SCORES IN A ROW!\n"); + print (sprintf(_("%s^7 made ^1TWENTY FIFE SCORES IN A ROW!\n"), s1)); else - print (s1,"^7 inflicts ^1CARNAGE!\n"); + print (sprintf(_("%s^7 inflicts ^1CARNAGE!\n"), s1)); } else if(type == KILL_SPREE_30) { if(gentle) - print (s1,"^7 made ^1THIRTY SCORES IN A ROW!\n"); + print (sprintf(_("%s^7 made ^1THIRTY SCORES IN A ROW!\n"), s1)); else - print (s1,"^7 unleashes ^1ARMAGEDDON!\n"); + print (sprintf(_("%s^7 unleashes ^1ARMAGEDDON!\n"), s1)); } } else if(msg == MSG_KILL_ACTION) { // wtf is this? isnt it basically the same as MSG_SUICIDE? if (type == DEATH_DROWN) { @@ -2913,49 +2903,49 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s if(alsoprint) { if(gentle) - print ("^1",s1, "^1 was in the water for too long\n"); + print (sprintf(_("^1%s^1 was in the water for too long\n"), s1)); else - print ("^1",s1, "^1 drowned\n"); + print (sprintf(_("^1%s^1 drowned\n"), s1)); } } else if (type == DEATH_SLIME) { HUD_KillNotify_Push(s1, "", 0, DEATH_SLIME); if(alsoprint) - print ("^1",s1, "^1 was slimed\n"); + print (sprintf(_("^1%s^1 was slimed\n"), s1)); } else if (type == DEATH_LAVA) { HUD_KillNotify_Push(s1, "", 0, DEATH_LAVA); if(alsoprint) { if(gentle) - print ("^1",s1, "^1 found a hot place\n"); + print (sprintf(_("^1%s^1 found a hot place\n"), s1)); else - print ("^1",s1, "^1 turned into hot slag\n"); + print (sprintf(_("^1%s^1 turned into hot slag\n"), s1)); } } else if (type == DEATH_FALL) { HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC); if(alsoprint) { if(gentle) - print ("^1",s1, "^1 tested gravity (and it worked)\n"); + print (sprintf(_("^1%s^1 tested gravity (and it worked)\n"), s1)); else - print ("^1",s1, "^1 hit the ground with a crunch\n"); + print (sprintf(_("^1%s^1 hit the ground with a crunch\n"), s1)); } } else if (type == DEATH_SHOOTING_STAR) { HUD_KillNotify_Push(s1, "", 0, DEATH_SHOOTING_STAR); if(alsoprint) - print ("^1",s1, "^1 became a shooting star\n"); + print (sprintf(_("^1%s^1 became a shooting star\n"), s1)); } else if (type == DEATH_SWAMP) { HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC); if(alsoprint) { if(gentle) - print ("^1",s1, "^1 discovered a swamp\n"); + print (sprintf(_("^1%s^1 discovered a swamp\n"), s1)); else - print ("^1",s1, "^1 is now conserved for centuries to come\n"); + print (sprintf(_("^1%s^1 is now conserved for centuries to come\n"), s1)); } } else if(type == DEATH_TURRET) { HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC); if(alsoprint) - print ("^1",s1, "^1 was mowed down by a turret \n"); + print (sprintf(_("^1%s^1 was mowed down by a turret \n"), s1)); } else if (type == DEATH_CUSTOM) { HUD_KillNotify_Push(s1, "", 0, DEATH_CUSTOM); if(alsoprint) @@ -2967,51 +2957,51 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s } else if(type == DEATH_TOUCHEXPLODE) { HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC); if(alsoprint) - print ("^1",s1, "^1 died in an accident\n"); + print (sprintf(_("^1%s^1 died in an accident\n"), s1)); } else if(type == DEATH_CHEAT) { HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC); if(alsoprint) - print ("^1",s1, "^1 was unfairly eliminated\n"); + print (sprintf(_("^1%s^1 was unfairly eliminated\n"), s1)); } else if(type == DEATH_FIRE) { HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC); if(alsoprint) { if(gentle) - print ("^1",s1, "^1 felt a little hot\n"); + print (sprintf(_("^1%s^1 felt a little hot\n"), s1)); else - print ("^1",s1, "^1 burnt to death\n"); + print (sprintf(_("^1%s^1 burnt to death\n"), s1)); } } else { HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC); if(alsoprint) { if(gentle) - print ("^1",s1, "^1 needs a restart\n"); + print (sprintf(_("^1%s^1 needs a restart\n"), s1)); else - print ("^1",s1, "^1 died\n"); + print (sprintf(_("^1%s^1 died\n"), s1)); } } } else if(msg == MSG_KILL_ACTION_SPREE) { if(gentle) - print ("^1",s1,"^1 needs a restart after a ",s2," scoring spree\n"); + print (sprintf(_("^1%s^1 needs a restart after a %d scoring spree\n"), s1, stof(s2))); else - print ("^1",s1,"^1 died with a ",s2," kill spree\n"); + print (sprintf(_("^1%s^1 died with a %d kill spree\n"), s1, stof(s2))); } else if(msg == MSG_INFO) { if(type == INFO_GOTFLAG) { // here, s2 is the flag name HUD_KillNotify_Push(s1, s2, 0, INFO_GOTFLAG); - print(s1, "^7 got the ", s2, "\n"); + print(sprintf(_("%s^7 got the %s\n"), s1, s2)); } else if(type == INFO_LOSTFLAG) { HUD_KillNotify_Push(s1, s2, 0, INFO_LOSTFLAG); - print(s1, "^7 lost the ", s2, "\n"); + print(sprintf(_("%s^7 lost the %s\n"), s1, s2)); } else if(type == INFO_PICKUPFLAG) { HUD_KillNotify_Push(s1, s2, 0, INFO_GOTFLAG); - print(s1, "^7 picked up the ", s2, "\n"); + print(sprintf(_("%s^7 picked up the %s\n"), s1, s2)); } else if(type == INFO_RETURNFLAG) { HUD_KillNotify_Push(s1, s2, 0, INFO_RETURNFLAG); - print(s1, "^7 returned the ", s2, "\n"); + print(sprintf(_("%s^7 returned the %s\n"), s1, s2)); } else if(type == INFO_CAPTUREFLAG) { HUD_KillNotify_Push(s1, s2, 0, INFO_CAPTUREFLAG); - print(s1, "^7 captured the ", s2, s3, "\n"); + print(sprintf(_("%1^7 captured the %s%s\n"), s1, s2, s3)); } } else if(msg == MSG_RACE) { if(type == RACE_SERVER_RECORD) { @@ -3030,12 +3020,12 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s if(type == KA_PICKUPBALL) { HUD_KillNotify_Push(s1, s2, 0, KA_PICKUPBALL); if(alsoprint) - print (s1, "^7 has picked up the ball!\n"); + print (sprintf(_("%s^7 has picked up the ball!\n"), s1)); } else if(type == KA_DROPBALL) { HUD_KillNotify_Push(s1, s2, 0, KA_DROPBALL); if(alsoprint) - print(s1, "^7 has dropped the ball!\n"); + print(sprintf(_("%s^7 has dropped the ball!\n"), s1)); } } } @@ -3048,84 +3038,84 @@ void HUD_Centerprint(string s1, string s2, float type, float msg) gentle = (autocvar_cl_gentle || autocvar_cl_gentle_messages); if(msg == MSG_SUICIDE) { if (type == DEATH_TEAMCHANGE) { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "You are now on: ", s1)); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("You are now on: %s"), s1))); } else if (type == DEATH_AUTOTEAMCHANGE) { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "You have been moved into a different team to improve team balance\nYou are now on: ", s1)); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("You have been moved into a different team to improve team balance\nYou are now on: %s"), s1))); } else if (type == DEATH_CAMP) { if(gentle) - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1Reconsider your tactics, camper!")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1Reconsider your tactics, camper!"))); else - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1Die camper!")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1Die camper!"))); } else if (type == DEATH_NOAMMO) { if(gentle) - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You are reinserted into the game for running out of ammo...")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1You are reinserted into the game for running out of ammo..."))); else - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You were killed for running out of ammo...")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1You were killed for running out of ammo..."))); } else if (type == DEATH_ROT) { if(gentle) - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You need to preserve your health")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1You need to preserve your health"))); else - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You grew too old without taking your medicine")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1You grew too old without taking your medicine"))); } else if (type == KILL_TEAM_RED || type == KILL_TEAM_BLUE) { if(gentle) - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1Don't go against team mates!")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1Don't go against team mates!"))); else - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1Don't shoot your team mates!")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1Don't shoot your team mates!"))); } else if (type == DEATH_QUIET) { // do nothing } else { // generic message if(gentle) - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You need to be more careful!")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1You need to be more careful!"))); else - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You killed your own dumb self!")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1You killed your own dumb self!"))); } } else if(msg == MSG_KILL) { if (type == KILL_TEAM_RED || type == KILL_TEAM_BLUE) { if(gentle) { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1Moron! You went against", s1, ",a team mate!")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1Moron! You went against %s, a team mate!"), s1))); } else { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1Moron! You fragged ", s1, ", a team mate!")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1Moron! You fragged %s, a team mate!"), s1))); } } else if (type == KILL_FIRST_BLOOD) { if(gentle) { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1First score")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1First score"))); } else { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1First blood")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1First blood"))); } } else if (type == KILL_FIRST_VICTIM) { if(gentle) { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1First casualty")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1First casualty"))); } else { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1First victim")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1First victim"))); } } else if (type == KILL_TYPEFRAG) { // s2 contains "advanced kill messages" such as ping, handicap... if(gentle) { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You scored against ^7", s1, "^1 who was typing!", s2)); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1You scored against ^7%s^1 who was typing!"), s1), s2)); } else { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You typefragged ^7", s1, s2)); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1You typefragged ^7%s"), s1), s2)); } } else if (type == KILL_TYPEFRAGGED) { if(gentle) { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You were scored against by ^7", s1, "^1 while you were typing!", s2)); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1You were scored against by ^7%s^1 while you were typing!"), s1), s2)); } else { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You were typefragged by ^7", s1, s2)); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1You were typefragged by ^7%s"), s1), s2)); } } else if (type == KILL_FRAG) { if(gentle) { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^4You scored against ^7", s1, s2)); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^4You scored against ^7%s"), s1), s2)); } else { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^4You fragged ^7", s1, s2)); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^4You fragged ^7%s"), s1), s2)); } } else { // generic message if(gentle) { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You were scored against by ^7", s1, s2)); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1You were scored against by ^7%s"), s1), s2)); } else { - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You were fragged by ^7", s1, s2)); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1You were fragged by ^7%s"), s1), s2)); } } } else if(msg == MSG_KILL_ACTION) { // TODO: invent more centerprints here? - centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1Watch your step!")); + centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, _("^1Watch your step!"))); } } @@ -3152,7 +3142,8 @@ void HUD_Notify (void) height = mySize_y/entries; vector fontsize; - fontsize = '0.5 0.5 0' * height; + float fontheight = height * autocvar_hud_panel_notify_fontsize; + fontsize = '0.5 0.5 0' * fontheight; float a; float when; @@ -3189,8 +3180,8 @@ void HUD_Notify (void) a = i; else // inverse order a = entries - 1 - i; - attacker = textShortenToWidth(strcat("Player", ftos(a+1)), 0.48 * mySize_x - height, fontsize, stringwidth_colors); - victim = textShortenToWidth(strcat("Player", ftos(a+2)), 0.48 * mySize_x - height, fontsize, stringwidth_colors); + attacker = textShortenToWidth(sprintf(_("Player %d"), a+1), 0.48 * mySize_x - height, fontsize, stringwidth_colors); + victim = textShortenToWidth(sprintf(_("Player %d"), a+2), 0.48 * mySize_x - height, fontsize, stringwidth_colors); s = strcat("weapon", get_weaponinfo(WEP_FIRST + mod(floor(a*2.4), WEP_LAST)).netname); a = bound(0, (when - a) / 4, 1); goto hud_config_notifyprint; @@ -3326,7 +3317,7 @@ void HUD_Notify (void) } attacker = textShortenToWidth(killnotify_attackers[j], 0.48 * mySize_x - height, fontsize, stringwidth_colors); - pos_attacker = pos + eX * (0.52 * mySize_x + height) + eY * (0.5 * fontsize_y + i * height); + pos_attacker = pos + eX * (0.52 * mySize_x + height) + eY * ((0.5 * fontsize_y + i * height) + (0.5 * (height - fontheight))); weap_pos = pos + eX * 0.5 * mySize_x - eX * height + eY * i * height; if(s != "") @@ -3412,8 +3403,8 @@ void HUD_Notify (void) victim = textShortenToWidth(killnotify_victims[j], 0.48 * mySize_x - height, fontsize, stringwidth_colors); :hud_config_notifyprint width_attacker = stringwidth(attacker, TRUE, fontsize); - pos_attacker = pos + eX * (0.48 * mySize_x - height - width_attacker) + eY * (0.5 * fontsize_y + i * height); - pos_victim = pos + eX * (0.52 * mySize_x + height) + eY * (0.5 * fontsize_y + i * height); + pos_attacker = pos + eX * (0.48 * mySize_x - height - width_attacker) + eY * ((0.5 * fontsize_y + i * height) + (0.5 * (height - fontheight))); + pos_victim = pos + eX * (0.52 * mySize_x + height) + eY * ((0.5 * fontsize_y + i * height) + (0.5 * (height - fontheight))); weap_pos = pos + eX * 0.5 * mySize_x - eX * height + eY * i * height; if(s != "") @@ -3435,11 +3426,7 @@ string seconds_tostring(float sec) minutes = floor(sec / 60); sec -= minutes * 60; - - string s; - s = ftos(100 + sec); - - return strcat(ftos(minutes), ":", substring(s, 1, 3)); + return sprintf("%d:%02d", minutes, sec); } void HUD_Timer(void) @@ -3490,9 +3477,7 @@ void HUD_Timer(void) timer = seconds_tostring(timeleft); } - drawfont = hud_bigfont; drawstring_aspect(pos, timer, mySize, timer_color, panel_fg_alpha, DRAWFLAG_NORMAL); - drawfont = hud_font; } // Radar (#6) @@ -3681,9 +3666,7 @@ void HUD_Score(void) // race record display if (distribution <= 0) HUD_Panel_DrawHighlight(pos, eX * 0.75 * mySize_x + eY * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); - drawfont = hud_bigfont; drawstring_aspect(pos, timer, eX * 0.75 * mySize_x + eY * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); - drawfont = hud_font; } else if (!teamplay) { // non-teamgames // me vector := [team/connected frags id] pl = players.sort_next; @@ -3715,9 +3698,7 @@ void HUD_Score(void) drawstring_aspect(pos + eX * 0.75 * mySize_x, ftos(distribution), eX * 0.25 * mySize_x + eY * (1/3) * mySize_y, distribution_color, panel_fg_alpha, DRAWFLAG_NORMAL); if (leader) HUD_Panel_DrawHighlight(pos, eX * 0.75 * mySize_x + eY * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); - drawfont = hud_bigfont; drawstring_aspect(pos, ftos(score), eX * 0.75 * mySize_x + eY * mySize_y, distribution_color, panel_fg_alpha, DRAWFLAG_NORMAL); - drawfont = hud_font; } else { // teamgames float max_fragcount; max_fragcount = -99; @@ -3739,9 +3720,7 @@ void HUD_Score(void) leader = 1; if (leader) HUD_Panel_DrawHighlight(pos, eX * 0.75 * mySize_x + eY * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); - drawfont = hud_bigfont; drawstring_aspect(pos, ftos(score), eX * 0.75 * mySize_x + eY * mySize_y, GetTeamRGB(tm.team) * 0.8, panel_fg_alpha, DRAWFLAG_NORMAL); - drawfont = hud_font; } else { if (max_fragcount == score) leader = 1; @@ -3791,7 +3770,6 @@ void HUD_RaceTimer (void) { } mySize = newSize; - drawfont = hud_bigfont; float a, t; string s, forcetime; @@ -3799,9 +3777,9 @@ void HUD_RaceTimer (void) { { s = "0:13:37"; drawstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, FALSE, '0.60 0.60 0' * mySize_y), s, '0.60 0.60 0' * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); - s = "^1Intermediate 1 (+15.42)"; + s = _("^1Intermediate 1 (+15.42)"); drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.20 * mySize_y) + eY * 0.60 * mySize_y, s, '1 1 0' * 0.20 * mySize_y, panel_fg_alpha, DRAWFLAG_NORMAL); - s = strcat("^1PENALTY: ", ftos_decimals(20 * 0.1, 1), " (missing a checkpoint)"); + s = sprintf(_("^1PENALTY: %.1f (%s)"), 2, "missing a checkpoint"); drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.20 * mySize_y) + eY * 0.80 * mySize_y, s, '1 1 0' * 0.20 * mySize_y, panel_fg_alpha, DRAWFLAG_NORMAL); } else if(race_checkpointtime) @@ -3843,7 +3821,7 @@ void HUD_RaceTimer (void) { a = bound(0, 2 - (time - race_penaltyeventtime), 1); if(a > 0) { - s = strcat("^1PENALTY: ", ftos_decimals(race_penaltytime * 0.1, 1), " (", race_penaltyreason, ")"); + s = sprintf(_("^1PENALTY: %.1f (%s)"), race_penaltytime * 0.1, race_penaltyreason); drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.2 * mySize_y) + eY * 0.8 * mySize_y, s, '1 1 0' * 0.2 * mySize_y, panel_fg_alpha * a, DRAWFLAG_NORMAL); } } @@ -3884,15 +3862,13 @@ void HUD_RaceTimer (void) { if(a > 0) { if(time < t) - s = strcat("^1PENALTY: ", ftos_decimals(t - time, 1), " (", race_penaltyreason, ")"); + s = sprintf(_("^1PENALTY: %.1f (%s)"), (t - time) * 0.1, race_penaltyreason); else - s = strcat("^2PENALTY: 0.0 (", race_penaltyreason, ")"); + s = sprintf(_("^2PENALTY: %.1f (%s)"), 0, race_penaltyreason); drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.2 * mySize_y) + eY * 0.6 * mySize_y, s, '1 1 0' * 0.2 * mySize_y, panel_fg_alpha * a, DRAWFLAG_NORMAL); } } } - - drawfont = hud_font; } // Vote window (#9) @@ -3913,7 +3889,7 @@ void HUD_VoteWindow(void) if(autocvar_cl_allow_uid2name == -1 && (gametype == GAME_CTS || gametype == GAME_RACE)) { vote_active = 1; - vote_called_vote = strzone(strcat("^2Name ^7instead of \"^1Unregistered player\"", " ^7in stats")); + vote_called_vote = strzone(_("^2Name ^7instead of \"^1Unregistered player^7\" in stats")); uid2name_dialog = 1; } @@ -3995,19 +3971,19 @@ void HUD_VoteWindow(void) } mySize = newSize; - s = "A vote has been called for:"; + s = _("A vote has been called for:"); if(uid2name_dialog) - s = "Allow servers to store and display your name?"; + s = _("Allow servers to store and display your name?"); drawstring_aspect(pos, s, eX * mySize_x + eY * (2/8) * mySize_y, '1 1 1', a, DRAWFLAG_NORMAL); s = textShortenToWidth(vote_called_vote, mySize_x, '1 1 0' * mySize_y * (1/8), stringwidth_colors); if(autocvar__hud_configure) - s = "^1Configure the HUD"; + s = _("^1Configure the HUD"); 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 = strcat("Yes (", getcommandkey("vyes", "vyes"), "): ", ftos(vote_yescount)); + s = sprintf(_("Yes (%s): %d"), getcommandkey("vyes", "vyes"), ftos(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 = strcat("No (", getcommandkey("vno", "vno"), "): ", ftos(vote_nocount)); + s = sprintf(_("No (%s): %d"), getcommandkey("vno", "vno"), ftos(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 @@ -4056,7 +4032,6 @@ void HUD_Mod_CA(vector pos, vector mySize) redalive = getstati(STAT_REDALIVE); bluealive = getstati(STAT_BLUEALIVE); - drawfont = hud_bigfont; vector redpos, bluepos; if(mySize_x > mySize_y) { @@ -4076,7 +4051,6 @@ void HUD_Mod_CA(vector pos, vector mySize) drawpic_aspect_skin(bluepos, "player_blue.tga", eX * mySize_x + eY * 0.3 * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); drawstring_aspect(bluepos + eY * 0.3 * mySize_y, ftos(bluealive), eX * mySize_x + eY * 0.2 * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); } - drawfont = hud_font; } // CTF HUD modicon section @@ -4400,13 +4374,21 @@ void HUD_Mod_Keepaway(vector pos, vector mySize) kaball_prevstatus = kaball; } - // todo: Fix the sizing with the expanding image + vector kaball_pos, kaball_size; + + if(mySize_x > mySize_y) { + kaball_pos = pos + eX * 0.25 * mySize_x; + kaball_size = eX * 0.5 * mySize_x + eY * mySize_y; + } else { + kaball_pos = pos + eY * 0.25 * mySize_y; + kaball_size = eY * 0.5 * mySize_y + eX * mySize_x; + } float kaball_statuschange_elapsedtime = time - kaball_statuschange_time; float f = bound(0, kaball_statuschange_elapsedtime*2, 1); if(kaball_prevstatus && f < 1) - drawpic_aspect_skin_expanding(pos + eY * 0.25 * mySize_y, "keepawayball_carrying", eX * mySize_x + eY * mySize_y * 0.5, '1 1 1', panel_fg_alpha * kaball_alpha, DRAWFLAG_NORMAL, f); + drawpic_aspect_skin_expanding(kaball_pos, "keepawayball_carrying", kaball_size, '1 1 1', panel_fg_alpha * kaball_alpha, DRAWFLAG_NORMAL, f); if(kaball) drawpic_aspect_skin(pos, "keepawayball_carrying", eX * mySize_x + eY * mySize_y, '1 1 1', panel_fg_alpha * kaball_alpha * f, DRAWFLAG_NORMAL); @@ -4474,8 +4456,6 @@ void HUD_Mod_Race(vector pos, vector mySize) if not((scores_flags[ps_primary] & SFL_TIME) && !teamplay) // race/cts record display on HUD return; // no records in the actual race - drawfont = hud_bigfont; - // clientside personal record string rr; if(gametype == GAME_CTS) @@ -4516,12 +4496,12 @@ void HUD_Mod_Race(vector pos, vector mySize) f = time - crecordtime_change_time; if (f > 1) { - drawstring_aspect(textPos, "Personal best", eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring_aspect(textPos, _("Personal best"), eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); drawstring_aspect(textPos + eY * 0.25 * squareSize, TIME_ENCODED_TOSTRING(t), eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); } else { - drawstring_aspect(textPos, "Personal best", eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring_aspect(textPos, _("Personal best"), eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); drawstring_aspect(textPos + eY * 0.25 * squareSize, TIME_ENCODED_TOSTRING(t), eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); - drawstring_aspect_expanding(pos, "Personal best", eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL, f); + drawstring_aspect_expanding(pos, _("Personal best"), eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL, f); drawstring_aspect_expanding(pos + eY * 0.25 * squareSize, TIME_ENCODED_TOSTRING(t), eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL, f); } @@ -4534,12 +4514,12 @@ void HUD_Mod_Race(vector pos, vector mySize) f = time - srecordtime_change_time; if (f > 1) { - drawstring_aspect(textPos + eY * 0.5 * squareSize, "Server best", eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring_aspect(textPos + eY * 0.5 * squareSize, _("Server best"), eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); drawstring_aspect(textPos + eY * 0.75 * squareSize, TIME_ENCODED_TOSTRING(t), eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); } else { - drawstring_aspect(textPos + eY * 0.5 * squareSize, "Server best", eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring_aspect(textPos + eY * 0.5 * squareSize, _("Server best"), eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); drawstring_aspect(textPos + eY * 0.75 * squareSize, TIME_ENCODED_TOSTRING(t), eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); - drawstring_aspect_expanding(textPos + eY * 0.5 * squareSize, "Server best", eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL, f); + drawstring_aspect_expanding(textPos + eY * 0.5 * squareSize, _("Server best"), eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL, f); drawstring_aspect_expanding(textPos + eY * 0.75 * squareSize, TIME_ENCODED_TOSTRING(t), eX * squareSize + eY * 0.25 * squareSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL, f); } @@ -4598,7 +4578,6 @@ void HUD_Mod_Race(vector pos, vector mySize) strunzone(race_status_name_prev); race_status_name_prev = string_null; } - drawfont = hud_font; } float mod_prev; // previous state of mod_active to check for a change @@ -4772,7 +4751,7 @@ void HUD_Chat(void) a = panel_fg_alpha; else a = panel_fg_alpha * floor(((i + 1) * 7 + autocvar_con_chattime)/45); - drawcolorcodedstring(pos + eY * i * chatsize, textShortenToWidth("^3Player^7: This is the chat area.", mySize_x, '1 1 0' * chatsize, stringwidth_colors), '1 1 0' * chatsize, a, DRAWFLAG_NORMAL); + drawcolorcodedstring(pos + eY * i * chatsize, textShortenToWidth(_("^3Player^7: This is the chat area."), mySize_x, '1 1 0' * chatsize, stringwidth_colors), '1 1 0' * chatsize, a, DRAWFLAG_NORMAL); } } } @@ -4835,9 +4814,7 @@ void HUD_EngineInfo(void) vector color; color = HUD_Get_Num_Color (prevfps, 100); - drawfont = hud_bigfont; - drawstring_aspect(pos, strcat("FPS: ", ftos_decimals(prevfps, autocvar_hud_panel_engineinfo_framecounter_decimals)), mySize, color, panel_fg_alpha, DRAWFLAG_NORMAL); - drawfont = hud_font; + drawstring_aspect(pos, sprintf(_("FPS: %.*f"), autocvar_hud_panel_engineinfo_framecounter_decimals, prevfps), mySize, color, panel_fg_alpha, DRAWFLAG_NORMAL); } // Info messages panel (#14) @@ -4902,41 +4879,41 @@ void HUD_InfoMessages(void) if(spectatee_status && !intermission) { if(spectatee_status == -1) - s = "^1Observing"; + s = _("^1Observing"); else - s = strcat("^1Spectating: ^7", GetPlayerName(spectatee_status - 1)); + s = sprintf(_("^1Spectating: ^7%s"), GetPlayerName(spectatee_status - 1)); drawInfoMessage(s) if(spectatee_status == -1) - s = strcat("^1Press ^3", getcommandkey("primary fire", "+fire"), "^1 to spectate"); + s = sprintf(_("^1Press ^3%s^1 to spectate"), getcommandkey("primary fire", "+fire")); else - s = strcat("^1Press ^3", getcommandkey("primary fire", "+fire"), "^1 for another player"); + s = sprintf(_("^1Press ^3%s^1 for another player"), getcommandkey("primary fire", "+fire")); drawInfoMessage(s) if(spectatee_status == -1) - s = strcat("^1Use ^3", getcommandkey("next weapon", "weapnext"), "^1 or ^3", getcommandkey("previous weapon", "weapprev"), "^1 to change the speed"); + s = sprintf(_("^1Use ^3%s^1 or ^3%s^1 to change the speed"), getcommandkey("next weapon", "weapnext"), getcommandkey("previous weapon", "weapprev")); else - s = strcat("^1Press ^3", getcommandkey("secondary fire", "+fire2"), "^1 to observe"); + s = sprintf(_("^1Press ^3%s^1 to observe"), getcommandkey("secondary fire", "+fire2")); drawInfoMessage(s) - s = strcat("^1Press ^3", getcommandkey("server info", "+show_info"), "^1 for gamemode info"); + s = sprintf(_("^1Press ^3%s^1 for gamemode info"), getcommandkey("server info", "+show_info")); drawInfoMessage(s) if(gametype == GAME_ARENA) - s = "^1Wait for your turn to join"; + s = _("^1Wait for your turn to join"); else if(gametype == GAME_LMS) { entity sk; sk = playerslots[player_localentnum - 1]; if(sk.(scores[ps_primary]) >= 666) - s = "^1Match has already begun"; + s = _("^1Match has already begun"); else if(sk.(scores[ps_primary]) > 0) - s = "^1You have no more lives left"; + s = _("^1You have no more lives left"); else - s = strcat("^1Press ^3", getcommandkey("jump", "+jump"), "^1 to join"); + s = sprintf(_("^1Press ^3%s^1 to join"), getcommandkey("jump", "+jump")); } else - s = strcat("^1Press ^3", getcommandkey("jump", "+jump"), "^1 to join"); + s = sprintf(_("^1Press ^3%s^1 to join"), getcommandkey("jump", "+jump")); drawInfoMessage(s) //show restart countdown: @@ -4944,14 +4921,14 @@ void HUD_InfoMessages(void) float countdown; //we need to ceil, otherwise the countdown would be off by .5 when using round() countdown = ceil(getstatf(STAT_GAMESTARTTIME) - time); - s = strcat("^1Game starts in ^3", ftos(countdown), "^1 seconds"); + s = sprintf(_("^1Game starts in ^3%d^1 seconds"), countdown); drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL); o_y += fontsize_y; } } if(warmup_stage && !intermission) { - s = "^2Currently in ^1warmup^2 stage!"; + s = _("^2Currently in ^1warmup^2 stage!"); drawInfoMessage(s) } @@ -4966,22 +4943,22 @@ void HUD_InfoMessages(void) if(ready_waiting_for_me) { if(warmup_stage) - s = strcat(blinkcolor, "Press ^3", getcommandkey("ready", "ready"), blinkcolor, " to end warmup"); + s = sprintf(_("%sPress ^3%s%s to end warmup"), blinkcolor, getcommandkey("ready", "ready"), blinkcolor); else - s = strcat(blinkcolor, "Press ^3", getcommandkey("ready", "ready"), blinkcolor, " once you are ready"); + s = sprintf(_("%sPress ^3%s%s once you are ready"), blinkcolor, getcommandkey("ready", "ready"), blinkcolor); } else { if(warmup_stage) - s = strcat("^2Waiting for others to ready up to end warmup..."); + s = _("^2Waiting for others to ready up to end warmup..."); else - s = strcat("^2Waiting for others to ready up..."); + s = _("^2Waiting for others to ready up..."); } drawInfoMessage(s) } else if(warmup_stage && !intermission && !spectatee_status) { - s = strcat("^2Press ^3", getcommandkey("ready", "ready"), "^2 to end warmup"); + s = strcat("^2Press ^3%s^2 to end warmup", getcommandkey("ready", "ready")); drawInfoMessage(s) } @@ -5002,12 +4979,12 @@ void HUD_InfoMessages(void) } if ((ts_max - ts_min) > 1) { - s = strcat(blinkcolor, "Teamnumbers are unbalanced!"); + s = strcat(blinkcolor, _("Teamnumbers are unbalanced!")); tm = GetTeam(myteam, false); if (tm) if (tm.team != COLOR_SPECTATOR) if (tm.team_size == ts_max) - s = strcat(s, " Press ^3", getcommandkey("team menu", "menu_showteamselect"), blinkcolor, " to adjust"); + s = strcat(s, sprintf(_(" Press ^3%s%s to adjust"), getcommandkey("team menu", "menu_showteamselect"), blinkcolor)); drawInfoMessage(s) } } @@ -5015,13 +4992,13 @@ void HUD_InfoMessages(void) } else { - s = "^7Press ^3ESC ^7to show HUD options."; + s = _("^7Press ^3ESC ^7to show HUD options."); drawInfoMessage(s) - s = "^3Doubleclick ^7a panel for panel-specific options."; + s = _("^3Doubleclick ^7a panel for panel-specific options."); drawInfoMessage(s) - s = "^3CTRL ^7to disable collision testing, ^3SHIFT ^7and"; + s = _("^3CTRL ^7to disable collision testing, ^3SHIFT ^7and"); drawInfoMessage(s) - s = "^3ALT ^7+ ^3ARROW KEYS ^7for fine adjustments."; + s = _("^3ALT ^7+ ^3ARROW KEYS ^7for fine adjustments."); drawInfoMessage(s) } } @@ -5046,23 +5023,23 @@ void HUD_ShowSpeed(void) conversion_factor = 1.0; break; case 1: - unit = " qu/s"; + unit = _(" qu/s"); conversion_factor = 1.0; break; case 2: - unit = " m/s"; + unit = _(" m/s"); conversion_factor = 0.0254; break; case 3: - unit = " km/h"; + unit = _(" km/h"); conversion_factor = 0.0254 * 3.6; break; case 4: - unit = " mph"; + unit = _(" mph"); conversion_factor = 0.0254 * 3.6 * 0.6213711922; break; case 5: - unit = " knots"; + unit = _(" knots"); conversion_factor = 0.0254 * 1.943844492; // 1 m/s = 1.943844492 knots, because 1 knot = 1.852 km/h break; } @@ -5072,15 +5049,12 @@ void HUD_ShowSpeed(void) numsize_x = numsize_y = autocvar_cl_showspeed_size; pos = (vid_conheight - numsize_y) * autocvar_cl_showspeed_position; - drawfont = hud_bigfont; drawstringcenter(eX + pos * eY, speed, numsize, '1 1 1', autocvar_hud_panel_fg_alpha * hud_fade_alpha, DRAWFLAG_NORMAL); if (autocvar_cl_showspeed_z == 1) { zspeed = strcat(ftos(fabs(floor( pmove_vel_z * conversion_factor + 0.5 ))), unit); drawstringcenter(eX + pos * eY + numsize_y * eY, zspeed, numsize * 0.5, '1 1 1', autocvar_hud_panel_fg_alpha * hud_fade_alpha, DRAWFLAG_NORMAL); } - - drawfont = hud_font; } vector acc_prevspeed; diff --git a/qcsrc/client/main.qh b/qcsrc/client/main.qh index 625a4ba7b..970a1aa0b 100644 --- a/qcsrc/client/main.qh +++ b/qcsrc/client/main.qh @@ -20,8 +20,10 @@ var float(float bInputType, float nPrimary, float nSecondary) menu_action; // -------------------------------------------------------------------------- // CTF +#ifdef CTF_EXAMPLE void() ctf_menu_show; string ctf_temp_1; +#endif // -------------------------------------------------------------------------- // Onslaught @@ -80,9 +82,6 @@ float hud_size[MAX_HUD_FIELDS + 1]; string hud_title[MAX_HUD_FIELDS + 1]; float hud_num_fields; -float hud_font; -float hud_bigfont; - string scores_label[MAX_SCORE]; float scores_flags[MAX_SCORE]; string teamscores_label[MAX_SCORE]; @@ -165,3 +164,4 @@ float g_balance_grenadelauncher_bouncefactor; float g_balance_grenadelauncher_bouncestop; float g_balance_electro_secondary_bouncefactor; float g_balance_electro_secondary_bouncestop; +float g_trueaim_minrange; diff --git a/qcsrc/client/mapvoting.qc b/qcsrc/client/mapvoting.qc index 8ff4817b0..e94d6a68a 100644 --- a/qcsrc/client/mapvoting.qc +++ b/qcsrc/client/mapvoting.qc @@ -12,6 +12,8 @@ float mv_ownvote; float mv_detail; float mv_timeout; float mv_maps_mask; +float mv_top2_time; +float mv_top2_alpha; vector mv_mousepos; float mv_selection; @@ -19,13 +21,13 @@ float mv_selection; string MapVote_FormatMapItem(float id, string map, float count, float maxwidth, vector fontsize) { string pre, post; - pre = strcat(ftos(id+1), ". "); + pre = sprintf("%d. ", id+1); if(mv_detail) { if(count == 1) - post = strcat(" (1 vote)"); + post = _(" (1 vote)"); else - post = strcat(" (", ftos(count), " votes)"); + post = sprintf(_(" (%d votes)"), count); } else post = ""; @@ -34,8 +36,10 @@ string MapVote_FormatMapItem(float id, string map, float count, float maxwidth, return strcat(pre, map, post); } -vector MapVote_RGB(float id) +vector MapVote_RGB(float id, float count) { + if(count < 0) + return '1 1 1'; if(id == mv_ownvote) return '0 1 0'; else if (id == mv_selection) @@ -53,20 +57,25 @@ void MapVote_DrawMapItem(vector pos, float isize, float tsize, string map, strin isize -= hud_fontsize_y; // respect the text when calculating the image size - rgb = MapVote_RGB(id); + rgb = MapVote_RGB(id, count); img_size_y = isize; img_size_x = isize / 0.75; // 4:3 x can be stretched easily, height is defined in isize - drawfont = hud_font; pos_y = pos_y + img_size_y; label = MapVote_FormatMapItem(id, map, count, tsize, hud_fontsize); text_size = stringwidth(label, false, hud_fontsize); - + + float alpha; + if (count < 0 && mv_top2_alpha) + alpha = mv_top2_alpha; + else + alpha = 1; + pos_x -= text_size*0.5; - drawstring(pos, label, hud_fontsize, rgb, 1, DRAWFLAG_NORMAL); + drawstring(pos, label, hud_fontsize, rgb, alpha, DRAWFLAG_NORMAL); pos_x = pos_x + text_size*0.5 - img_size_x*0.5; pos_y = pos_y - img_size_y; @@ -75,19 +84,19 @@ void MapVote_DrawMapItem(vector pos, float isize, float tsize, string map, strin img_size -= (autocvar_scoreboard_border_thickness * 2) * '1 1 0'; if(pic == "") { - drawfill(pos, img_size, '.5 .5 .5', .7, DRAWFLAG_NORMAL); + drawfill(pos, img_size, '.5 .5 .5', .7 * alpha, DRAWFLAG_NORMAL); } else { - drawpic(pos, pic, img_size, '1 1 1', 1, DRAWFLAG_NORMAL); + drawpic(pos, pic, img_size, '1 1 1', alpha, DRAWFLAG_NORMAL); } if(id == mv_ownvote) - drawborderlines(autocvar_scoreboard_border_thickness, pos, img_size, rgb, 1, DRAWFLAG_NORMAL); + drawborderlines(autocvar_scoreboard_border_thickness, pos, img_size, rgb, alpha, DRAWFLAG_NORMAL); else - drawborderlines(autocvar_scoreboard_border_thickness, pos, img_size, '0 0 0', 1, DRAWFLAG_NORMAL); + drawborderlines(autocvar_scoreboard_border_thickness, pos, img_size, '0 0 0', alpha, DRAWFLAG_NORMAL); - if(id == mv_selection) + if(id == mv_selection && count >= 0) drawfill(pos, img_size, '1 1 1', 0.1, DRAWFLAG_NORMAL); } @@ -97,12 +106,11 @@ void MapVote_DrawAbstain(vector pos, float isize, float tsize, float count, floa float text_size; string label; - rgb = MapVote_RGB(id); + rgb = MapVote_RGB(id, count); - drawfont = hud_font; pos_y = pos_y + hud_fontsize_y; - label = MapVote_FormatMapItem(id, "Don't care", count, tsize, hud_fontsize); + label = MapVote_FormatMapItem(id, _("Don't care"), count, tsize, hud_fontsize); text_size = stringwidth(label, false, hud_fontsize); @@ -178,26 +186,23 @@ void MapVote_Draw() if(i >= 0 || ymax < (vid_conheight*0.5)) ymax = vid_conheight - ymin; - drawfont = hud_bigfont; hud_fontsize = HUD_GetFontsize("hud_fontsize"); pos_y = ymin; pos_z = 0; //pos_x = center - stringwidth("Vote for a map", false) * 0.5 * 24; - pos_x = center - stringwidth("Vote for a map", false, '12 0 0'); + pos_x = center - stringwidth(_("Vote for a map"), false, '12 0 0'); drawstring(pos, "Vote for a map", '24 24 0', '1 1 1', 1, DRAWFLAG_NORMAL); pos_y += 26; i = ceil(max(0, mv_timeout - time)); - map = strcat(ftos(i), " seconds left"); + map = sprintf(_("%d seconds left"), i); //pos_x = center - stringwidth(map, false) * 0.5 * 16; pos_x = center - stringwidth(map, false, '8 0 0'); drawstring(pos, map, '16 16 0', '0 1 0', 1, DRAWFLAG_NORMAL); pos_y += 22; pos_x = xmin; - drawfont = hud_font; - // base for multi-column stuff... ymin = pos_y; if(mv_abstain) @@ -222,11 +227,12 @@ void MapVote_Draw() pos_y += (dist_y - isize) / 2; ymax -= isize; + if (mv_top2_time) + mv_top2_alpha = max(0.2, 1 - (time - mv_top2_time)*(time - mv_top2_time)); + for(i = 0; i < mv_num_maps; ++i) { tmp = mv_votes[i]; // FTEQCC bug: too many array accesses in the function call screw it up - if(tmp < 0) - continue; map = mv_maps[i]; if(mv_preview[i]) MapVote_DrawMapItem(pos + MapVote_GridVec(dist, i, columns), isize, tsize, map, mv_pics[i], tmp, i); @@ -254,7 +260,7 @@ void Cmd_MapVote_MapDownload(float argc) if(argc != 2 || !mv_pk3list) { - print("mv_mapdownload: ^3You're not supposed to use this command on your own!\n"); + print(_("mv_mapdownload: ^3You're not supposed to use this command on your own!\n")); return; } @@ -264,19 +270,16 @@ void Cmd_MapVote_MapDownload(float argc) break; if(!pak || pak.sv_entnum != id) { - print("^1Error:^7 Couldn't find pak index.\n"); + print(_("^1Error:^7 Couldn't find pak index.\n")); return; } - //print(strcat("^3Adding: ", ftos(id), " - ", pak.message, " - ")); - if(PreviewExists(pak.message)) { mv_preview[id] = true; - //print("^2Found...\n"); return; } else { - print("Requesting preview...\n"); + print(_("Requesting preview...\n")); localcmd(strcat("\ncmd mv_getpic ", ftos(id), "\n")); } } @@ -375,7 +378,6 @@ void MapVote_Init() mv_preview[i] = false; - //print(strcat("RECV: ", map, " in ", pk3, "\n")); MapVote_CheckPic(map, pk3, i); } else @@ -440,6 +442,8 @@ void MapVote_UpdateMask() for(i = 0, power = 1; i < mv_num_maps; ++i, power *= 2) if not(mv_maps_mask & power) mv_votes[i] = -1; + + mv_top2_time = time; } void MapVote_UpdateVotes() diff --git a/qcsrc/client/miscfunctions.qc b/qcsrc/client/miscfunctions.qc index 57e25810f..d38b7c9ba 100644 --- a/qcsrc/client/miscfunctions.qc +++ b/qcsrc/client/miscfunctions.qc @@ -20,7 +20,7 @@ void restartAnnouncer_Think() { countdown_rounded = floor(0.5 + countdown); if(countdown <= 0) { if (!spectatee_status) //do cprint only for players - centerprint("^1Begin!"); + centerprint(_("^1Begin!")); sound(world, CHAN_AUTO, strcat("announcer/", autocvar_cl_announcer, "/begin.wav"), VOL_BASEVOICE, ATTN_NONE); //reset maptime announcers now as well @@ -31,7 +31,7 @@ void restartAnnouncer_Think() { } else { if (!spectatee_status) //do cprint only for players - centerprint(strcat("^1Game starts in ", ftos(countdown_rounded), " seconds")); + centerprint(sprintf(_("^1Game starts in %d seconds"), countdown_rounded)); if(countdown_rounded <= 3 && countdown_rounded >= 1) { sound(world, CHAN_AUTO, strcat("announcer/", autocvar_cl_announcer, "/", ftos(countdown_rounded), ".wav"), VOL_BASEVOICE, ATTN_NONE); @@ -71,7 +71,6 @@ void maptimeAnnouncer() { //if we're in warmup mode, check whether there's a warmup timelimit if not (warmuplimit == -1 && warmup_stage) { announcer_5min = TRUE; - //dprint("i will play the sound, I promise!\n"); sound(world, CHAN_AUTO, strcat("announcer/", autocvar_cl_announcer, "/5minutesremain.wav"), VOL_BASEVOICE, ATTN_NONE); } } @@ -111,12 +110,12 @@ void carrierAnnouncer() { blueflag = (stat_items/IT_BLUE_FLAG_TAKEN) & 3; if (redflag == 3 && redflag != redflag_prev) { - item = "^1RED^7 flag"; + item = _("^1RED^7 flag"); pickup = (redflag_prev == 2); } if (blueflag == 3 && blueflag != blueflag_prev) { - item = "^4BLUE^7 flag"; + item = _("^4BLUE^7 flag"); pickup = (blueflag_prev == 2); } @@ -124,11 +123,11 @@ void carrierAnnouncer() { { if (pickup) { if (autocvar_cl_notify_carried_items & 2) - centerprint(strcat("You picked up the ", item, "!")); + centerprint(sprintf(_("You picked up the %s!"), item)); } else { if (autocvar_cl_notify_carried_items & 1) - centerprint(strcat("You got the ", item, "!")); + centerprint(sprintf(_("You got the %s!"), item)); } } @@ -281,7 +280,7 @@ void RemoveTeam(entity Team) if(!tm) { - print("Trying to remove a team which is not in the teamlist!"); + print(_("Trying to remove a team which is not in the teamlist!")); return; } parent.sort_next = Team.sort_next; @@ -306,12 +305,6 @@ entity GetTeam(float Team, float add) return tm; } -void CSQC_CheckEngine() -{ - hud_font = FONT_USER+1; - hud_bigfont = FONT_USER+2; -} - vector HUD_GetFontsize(string cvarname) { vector v; diff --git a/qcsrc/client/prandom.qc b/qcsrc/client/prandom.qc index 1fae8abe0..1132d06a3 100644 --- a/qcsrc/client/prandom.qc +++ b/qcsrc/client/prandom.qc @@ -9,7 +9,7 @@ float prandom() prandom_seed = c; #ifdef USE_PRANDOM_DEBUG - print("RANDOM -> ", ftos(c), "\n"); + dprint("RANDOM -> ", ftos(c), "\n"); #endif return c / 65536; // in [0..1[ @@ -34,14 +34,14 @@ void psrandom(float seed) { prandom_seed = seed; #ifdef USE_PRANDOM_DEBUG - print("SRANDOM ", ftos(seed), "\n"); + dprint("SRANDOM ", ftos(seed), "\n"); #endif } #ifdef USE_PRANDOM_DEBUG void prandom_debug() { - print("Current random seed = ", ftos(prandom_seed), "\n"); + dprint("Current random seed = ", ftos(prandom_seed), "\n"); } #endif #endif diff --git a/qcsrc/client/projectile.qc b/qcsrc/client/projectile.qc index a2cef7645..cede03c5a 100644 --- a/qcsrc/client/projectile.qc +++ b/qcsrc/client/projectile.qc @@ -274,7 +274,7 @@ void Ent_Projectile() case PROJECTILE_ELECTRO: setmodel(self, "models/ebomb.mdl");self.traileffect = particleeffectnum("TR_NEXUIZPLASMA"); break; case PROJECTILE_ROCKET: setmodel(self, "models/rocket.md3");self.traileffect = particleeffectnum("TR_ROCKET"); self.scale = 2; break; case PROJECTILE_BULLET: setmodel(self, "models/tracer.mdl");self.traileffect = particleeffectnum("tr_bullet"); break; - case PROJECTILE_BULLET_GLOWING: setmodel(self, "models/tracer.mdl");self.traileffect = particleeffectnum("tr_bullet"); break; + case PROJECTILE_BULLET_GLOWING: setmodel(self, "models/tracer.mdl");self.traileffect = particleeffectnum("tr_rifle_weak"); break; case PROJECTILE_BULLET_GLOWING_TRACER: setmodel(self, "models/tracer.mdl");self.traileffect = particleeffectnum("tr_rifle"); break; case PROJECTILE_CRYLINK: setmodel(self, "models/plasmatrail.mdl");self.traileffect = particleeffectnum("TR_CRYLINKPLASMA"); break; case PROJECTILE_CRYLINK_BOUNCING: setmodel(self, "models/plasmatrail.mdl");self.traileffect = particleeffectnum("TR_CRYLINKPLASMA"); break; diff --git a/qcsrc/client/scoreboard.qc b/qcsrc/client/scoreboard.qc index 31cdc45bf..517065ac5 100644 --- a/qcsrc/client/scoreboard.qc +++ b/qcsrc/client/scoreboard.qc @@ -11,6 +11,47 @@ void drawstringcenter(vector, string, vector, vector, float, float); float SCOREBOARD_OFFSET = 50; +// wrapper to put all possible scores titles through gettext +string TranslateScoresLabel(string l) +{ + switch(l) + { + case "bckills": return CTX(_("SCO^bckills")); + case "bctime": return CTX(_("SCO^bctime")); + case "caps": return CTX(_("SCO^caps")); + case "deaths": return CTX(_("SCO^deaths")); + case "destroyed": return CTX(_("SCO^destroyed")); + case "drops": return CTX(_("SCO^drops")); + case "faults": return CTX(_("SCO^faults")); + case "fckills": return CTX(_("SCO^fckills")); + case "goals": return CTX(_("SCO^goals")); + case "kckills": return CTX(_("SCO^kckills")); + case "kdratio": return CTX(_("SCO^kdratio")); + case "k/d": return CTX(_("SCO^k/d")); + case "kd": return CTX(_("SCO^kd")); + case "kdr": return CTX(_("SCO^kdr")); + case "kills": return CTX(_("SCO^kills")); + case "laps": return CTX(_("SCO^laps")); + case "lives": return CTX(_("SCO^lives")); + case "losses": return CTX(_("SCO^losses")); + case "name": return CTX(_("SCO^name")); + case "nick": return CTX(_("SCO^nick")); + case "objectives": return CTX(_("SCO^objectives")); + case "pickups": return CTX(_("SCO^pickups")); + case "ping": return CTX(_("SCO^ping")); + case "pl": return CTX(_("SCO^pl")); + case "pushes": return CTX(_("SCO^pushes")); + case "rank": return CTX(_("SCO^rank")); + case "returns": return CTX(_("SCO^returns")); + case "revivals": return CTX(_("SCO^revivals")); + case "score": return CTX(_("SCO^score")); + case "suicides": return CTX(_("SCO^suicides")); + case "takes": return CTX(_("SCO^takes")); + case "ticks": return CTX(_("SCO^ticks")); + default: return l; + } +} + void MapVote_Draw(); void HUD_FinaleOverlay() { @@ -195,65 +236,67 @@ void HUD_UpdateTeamPos(entity Team) void Cmd_HUD_Help(float argc) { - print("You can modify the scoreboard using the ^2scoreboard_columns_set command.\n"); - print("^3|---------------------------------------------------------------|\n"); - print("Usage:\n"); - print("^2scoreboard_columns_set default\n"); - print("^2scoreboard_columns_set ^7filed1 field2 ...\n"); - print("The following field names are recognized (case insensitive):\n"); - print("You can use a ^3|^7 to start the right-aligned fields.\n\n"); - - print("^3name^7 or ^3nick^7 Name of a player\n"); - print("^3ping^7 Ping time\n"); - print("^3pl^7 Packet loss\n"); - print("^3kills^7 Number of kills\n"); - print("^3deaths^7 Number of deaths\n"); - print("^3suicides^7 Number of suicides\n"); - print("^3frags^7 kills - suicides\n"); - print("^3kd^7 The kill-death ratio\n"); - print("^3caps^7 How often a flag (CTF) or a key (KeyHunt) was captured\n"); - print("^3pickups^7 How often a flag (CTF) or a key (KeyHunt) was picked up\n"); - print("^3fckills^7 Number of flag carrier kills\n"); - print("^3returns^7 Number of flag returns\n"); - print("^3drops^7 Number of flag drops\n"); - print("^3lives^7 Number of lives (LMS)\n"); - print("^3rank^7 Player rank\n"); - print("^3pushes^7 Number of players pushed into void\n"); - print("^3destroyed^7 Number of keys destroyed by pushing them into void\n"); - print("^3kckills^7 Number of keys carrier kills\n"); - print("^3losses^7 Number of times a key was lost\n"); - print("^3laps^7 Number of laps finished (race/cts)\n"); - print("^3time^7 Total time raced (race/cts)\n"); - print("^3fastest^7 Time of fastest lap (race/cts)\n"); - print("^3ticks^7 Number of ticks (DOM)\n"); - print("^3takes^7 Number of domination points taken (DOM)\n"); - print("^3score^7 Total score\n\n"); - - print("Before a field you can put a + or - sign, then a comma separated list\n"); - print("of game types, then a slash, to make the field show up only in these\n"); - print("or in all but these game types. You can also specify 'all' as a\n"); - print("field to show all fields available for the current game mode.\n\n"); - - print("The special game type names 'teams' and 'noteams' can be used to\n"); - print("include/exclude ALL teams/noteams game modes.\n\n"); - - print("Example: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4\n"); - print("will display name, ping and pl aligned to the left, and the fields\n"); - print("right of the vertical bar aligned to the right.\n"); - print("'field3' will only be shown in CTF, and 'field4' will be shown in all\n"); - print("other gamemodes except DM.\n"); + print(_("You can modify the scoreboard using the ^2scoreboard_columns_set command.\n")); + print(_("^3|---------------------------------------------------------------|\n")); + print(_("Usage:\n")); + print(_("^2scoreboard_columns_set default\n")); + print(_("^2scoreboard_columns_set ^7filed1 field2 ...\n")); + print(_("The following field names are recognized (case insensitive):\n")); + print(_("You can use a ^3|^7 to start the right-aligned fields.\n\n")); + + print(_("^3name^7 or ^3nick^7 Name of a player\n")); + print(_("^3ping^7 Ping time\n")); + print(_("^3pl^7 Packet loss\n")); + print(_("^3kills^7 Number of kills\n")); + print(_("^3deaths^7 Number of deaths\n")); + print(_("^3suicides^7 Number of suicides\n")); + print(_("^3frags^7 kills - suicides\n")); + print(_("^3kd^7 The kill-death ratio\n")); + print(_("^3caps^7 How often a flag (CTF) or a key (KeyHunt) was captured\n")); + print(_("^3pickups^7 How often a flag (CTF) or a key (KeyHunt) or a ball (Keepaway) was picked up\n")); + print(_("^3fckills^7 Number of flag carrier kills\n")); + print(_("^3returns^7 Number of flag returns\n")); + print(_("^3drops^7 Number of flag drops\n")); + print(_("^3lives^7 Number of lives (LMS)\n")); + print(_("^3rank^7 Player rank\n")); + print(_("^3pushes^7 Number of players pushed into void\n")); + print(_("^3destroyed^7 Number of keys destroyed by pushing them into void\n")); + print(_("^3kckills^7 Number of keys carrier kills\n")); + print(_("^3losses^7 Number of times a key was lost\n")); + print(_("^3laps^7 Number of laps finished (race/cts)\n")); + print(_("^3time^7 Total time raced (race/cts)\n")); + print(_("^3fastest^7 Time of fastest lap (race/cts)\n")); + print(_("^3ticks^7 Number of ticks (DOM)\n")); + print(_("^3takes^7 Number of domination points taken (DOM)\n")); + print(_("^3bckills^7 Number of ball carrier kills\n")); + print(_("^3bctime^7 Total amount of time holding the ball in Keepaway\n")); + print(_("^3score^7 Total score\n\n")); + + print(_("Before a field you can put a + or - sign, then a comma separated list\n" + "of game types, then a slash, to make the field show up only in these\n" + "or in all but these game types. You can also specify 'all' as a\n" + "field to show all fields available for the current game mode.\n\n")); + + print(_("The special game type names 'teams' and 'noteams' can be used to\n" + "include/exclude ALL teams/noteams game modes.\n\n")); + + print(_("Example: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4\n")); + print(_("will display name, ping and pl aligned to the left, and the fields\n" + "right of the vertical bar aligned to the right.\n")); + print(_("'field3' will only be shown in CTF, and 'field4' will be shown in all\n" + "other gamemodes except DM.\n")); } string HUD_DefaultColumnLayout() { return strcat( // fteqcc sucks "ping pl name | ", - "-teams,race,lms/kills -teams,lms/deaths -teams,lms,race,ka/suicides -race,dm,tdm,ka/frags ", // tdm already has this in "score" + "-teams,race,lms/kills +freezetag/kills -teams,lms/deaths +freezetag/deaths -teams,lms,race,ka/suicides +freezetag/suicides -race,dm,tdm,ka,freezetag/frags ", // tdm already has this in "score" "+ctf/caps +ctf/pickups +ctf/fckills +ctf/returns ", "+lms/lives +lms/rank ", "+kh/caps +kh/pushes +kh/destroyed ", "?+race/laps ?+race/time ?+race/fastest ", - "+as/objectives +nexball/faults +nexball/goals +ka/drops +ka/pickups +ka/bckills ", + "+as/objectives +nexball/faults +nexball/goals +ka/pickups +ka/bckills +ka/bctime +freezetag/revivals ", "-lms,race,nexball/score"); } @@ -296,7 +339,6 @@ void Cmd_HUD_SetFields(float argc) hud_num_fields = 0; - drawfont = hud_font; hud_fontsize = HUD_GetFontsize("hud_fontsize"); for(i = 0; i < argc - 1; ++i) @@ -317,12 +359,12 @@ void Cmd_HUD_SetFields(float argc) pattern = substring(str, 0, slash); str = substring(str, slash + 1, strlen(str) - (slash + 1)); - if not(isGametypeInFilter(gametype, teamplay, pattern)) + if not(isGametypeInFilter(gametype, teamplay, FALSE, pattern)) continue; } strunzone(hud_title[hud_num_fields]); - hud_title[hud_num_fields] = strzone(str); + hud_title[hud_num_fields] = strzone(TranslateScoresLabel(str)); hud_size[hud_num_fields] = stringwidth(str, FALSE, hud_fontsize); str = strtolower(str); @@ -350,7 +392,7 @@ void Cmd_HUD_SetFields(float argc) else { if not(nocomplain) - print(strcat("^1Error:^7 Unknown score field: '", str, "'\n")); + print(sprintf("^1Error:^7 Unknown score field: '%s'\n", str)); continue; } :found @@ -384,10 +426,10 @@ void Cmd_HUD_SetFields(float argc) hud_size[i] = hud_size[i-1]; hud_field[i] = hud_field[i-1]; } - hud_title[0] = strzone("name"); + hud_title[0] = strzone(TranslateScoresLabel("name")); hud_field[0] = SP_NAME; ++hud_num_fields; - print("fixed missing field 'name'\n"); + print(sprintf(_("fixed missing field '%s'\n"), "name")); if(!have_separator) { @@ -402,7 +444,7 @@ void Cmd_HUD_SetFields(float argc) hud_field[1] = SP_SEPARATOR; hud_size[1] = stringwidth("|", FALSE, hud_fontsize); ++hud_num_fields; - print("fixed missing field '|'\n"); + print(sprintf(_("fixed missing field '%s'\n"), "|")); } } else if(!have_separator) @@ -412,25 +454,25 @@ void Cmd_HUD_SetFields(float argc) hud_size[hud_num_fields] = stringwidth("|", FALSE, hud_fontsize); hud_field[hud_num_fields] = SP_SEPARATOR; ++hud_num_fields; - print("fixed missing field '|'\n"); + print(sprintf(_("fixed missing field '%s'\n"), "|")); } if(!have_secondary) { strunzone(hud_title[hud_num_fields]); - hud_title[hud_num_fields] = strzone(scores_label[ps_secondary]); + hud_title[hud_num_fields] = strzone(TranslateScoresLabel(scores_label[ps_secondary])); hud_size[hud_num_fields] = stringwidth(hud_title[hud_num_fields], FALSE, hud_fontsize); hud_field[hud_num_fields] = ps_secondary; ++hud_num_fields; - print("fixed missing field '", scores_label[ps_secondary], "'\n"); + print(sprintf(_("fixed missing field '%s'\n"), scores_label[ps_secondary])); } if(!have_primary) { strunzone(hud_title[hud_num_fields]); - hud_title[hud_num_fields] = strzone(scores_label[ps_primary]); + hud_title[hud_num_fields] = strzone(TranslateScoresLabel(scores_label[ps_primary])); hud_size[hud_num_fields] = stringwidth(hud_title[hud_num_fields], FALSE, hud_fontsize); hud_field[hud_num_fields] = ps_primary; ++hud_num_fields; - print("fixed missing field '", scores_label[ps_primary], "'\n"); + print(sprintf(_("fixed missing field '%s'\n"), scores_label[ps_primary])); } } @@ -466,18 +508,18 @@ string HUD_GetField(entity pl, float field) { case SP_PING: if not(pl.gotscores) - return "\x8D\x8D\x8D"; // >>> sign + return "\xEE\x82\x8D\xEE\x82\x8D\xEE\x82\x8D"; // >>> sign //str = getplayerkey(pl.sv_entnum, "ping"); f = pl.ping; if(f == 0) - return "N/A"; + return _("N/A"); tmp = max(0, min(220, f-80)) / 220; hud_field_rgb = '1 1 1' - '0 1 1'*tmp; return ftos(f); case SP_PL: if not(pl.gotscores) - return "N/A"; + return _("N/A"); f = pl.ping_packetloss; tmp = pl.ping_movementloss; if(f == 0 && tmp == 0) @@ -518,16 +560,12 @@ string HUD_GetField(entity pl, float field) if(denom == 0) { hud_field_rgb = '0 1 0'; - str = ftos(num); + str = sprintf("%d", num); } else if(num <= 0) { hud_field_rgb = '1 0 0'; - str = ftos(num/denom); + str = sprintf("%.1f", num/denom); } else - str = ftos(num/denom); - - tmp = strstrofs(str, ".", 0); - if(tmp > 0) - str = substring(str, 0, tmp+2); + str = sprintf("%.1f", num/denom); return str; default: @@ -883,10 +921,12 @@ float HUD_WouldDrawScoreboard() { return 1; else if (intermission == 1) return 1; + else if (intermission == 2) + return 0; else if (getstati(STAT_HEALTH) <= 0 && autocvar_cl_deathscoreboard && gametype != GAME_CTS) return 1; - else if (spectatee_status == -1) - return 1; + else if (spectatee_status == -1) + return 1; else if (scoreboard_showscores_force) return 1; return 0; @@ -908,7 +948,7 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size) float weapon_height = height * 2/3; float weapon_width = sbwidth / weapon_cnt; - drawstring(pos, strcat("Accuracy stats (average ", ftos(average_accuracy), "%)"), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL); + drawstring(pos, sprintf(_("Accuracy stats (average %d%%)"), average_accuracy), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL); pos_y += 1.25 * hud_fontsize_y; vector tmp; tmp_x = sbwidth; @@ -933,7 +973,6 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size) drawfill(pos + '0 1 0' * weapon_height + '0 1 0' * height * i, '1 0 0' * sbwidth + '0 1 0' * fontsize, '1 1 1', scoreboard_highlight_alpha, DRAWFLAG_NORMAL); } - drawfont = hud_bigfont; average_accuracy = 0; float weapons_with_stats; weapons_with_stats = 0; @@ -974,7 +1013,7 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size) average_accuracy += weapon_stats; // store sum of all accuracies in average_accuracy string s; - s = sprintf("%d%%", weapon_stats*100); + s = sprintf(_("%d%%"), weapon_stats*100); float padding; padding = (weapon_width - stringwidth(s, FALSE, '1 0 0' * fontsize)) / 2; // center the accuracy value @@ -1002,7 +1041,6 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size) pos_y += height; } } - drawfont = hud_font; if(weapons_with_stats) average_accuracy = floor(average_accuracy / weapons_with_stats); @@ -1035,7 +1073,7 @@ vector HUD_DrawScoreboardRankings(vector pos, entity pl, vector rgb, vector bg_ hl_rgb_z = autocvar_scoreboard_color_bg_b + 0.5; pos_y += hud_fontsize_y; - drawstring(pos, strcat("Rankings"), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL); + drawstring(pos, _("Rankings"), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL); pos_y += hud_fontsize_y; vector tmp; tmp_x = sbwidth; @@ -1126,16 +1164,13 @@ void HUD_DrawScoreboard() pos_z = 0; // Heading - drawfont = hud_bigfont; - drawstring(pos, "Scoreboard", '24 24 0', '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL); + drawstring(pos, _("Scoreboard"), '24 24 0', '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL); - centerprint_start_x = vid_conwidth - 0.5 * (pos_x + stringwidth("Scoreboard", FALSE, '24 24 0')); + centerprint_start_x = vid_conwidth - 0.5 * (pos_x + stringwidth(_("Scoreboard"), FALSE, '24 24 0')); centerprint_start_y = pos_y; pos_y += 24; - drawfont = hud_font; - // Draw the scoreboard vector bg_size = drawgetimagesize("gfx/scoreboard/scoreboard_bg") * autocvar_scoreboard_bg_scale; @@ -1172,11 +1207,11 @@ void HUD_DrawScoreboard() if(gametype == GAME_CTS || gametype == GAME_RACE) { if(race_speedaward) { - drawcolorcodedstring(pos, strcat("Speed award: ", ftos(race_speedaward), " ^7(", race_speedaward_holder, "^7)"), hud_fontsize, scoreboard_alpha_fg, DRAWFLAG_NORMAL); + drawcolorcodedstring(pos, sprintf(_("Speed award: %d ^7(%s^7)"), race_speedaward, race_speedaward_holder), hud_fontsize, scoreboard_alpha_fg, DRAWFLAG_NORMAL); pos_y += 1.25 * hud_fontsize_y; } if(race_speedaward_alltimebest) { - drawcolorcodedstring(pos, strcat("All-time fastest: ", ftos(race_speedaward_alltimebest), " ^7(", race_speedaward_alltimebest_holder, "^7)"), hud_fontsize, scoreboard_alpha_fg, DRAWFLAG_NORMAL); + drawcolorcodedstring(pos, sprintf(_("All-time fastest: %d ^7(%s^7)"), race_speedaward_alltimebest, race_speedaward_alltimebest_holder), hud_fontsize, scoreboard_alpha_fg, DRAWFLAG_NORMAL); pos_y += 1.25 * hud_fontsize_y; } pos = HUD_DrawScoreboardRankings(pos, pl, rgb, bg_size); @@ -1203,74 +1238,62 @@ void HUD_DrawScoreboard() if(specs) { - drawstring(tmp, "Spectators", hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL); + drawstring(tmp, _("Spectators"), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL); pos_y += 1.25 * hud_fontsize_y; } // Print info string string str; float tl, fl, ll; - str = strcat("playing on ^2", shortmapname, "^7"); + str = sprintf(_("playing on ^2%s^7"), shortmapname); tl = getstatf(STAT_TIMELIMIT); fl = getstatf(STAT_FRAGLIMIT); ll = getstatf(STAT_LEADLIMIT); if(gametype == GAME_LMS) { if(tl > 0) - str = strcat(str, " for up to ^1", ftos(tl), " minutes^7"); + str = strcat(str, sprintf(_(" for up to ^1%.1f minutes^7"), tl)); } else { if(tl > 0) - str = strcat(str, " for ^1", ftos(tl), " minutes^7"); + str = strcat(str, sprintf(_(" for up to ^1%.1f minutes^7"), tl)); if(fl > 0) { if(tl > 0) - str = strcat(str, " or"); + str = strcat(str, _(" or")); if(teamplay) { - str = strcat(str, " until ^3", ScoreString(teamscores_flags[ts_primary], fl)); - if(teamscores_label[ts_primary] == "score") - str = strcat(str, " points^7"); - else if(teamscores_label[ts_primary] == "fastest") - str = strcat(str, " is beaten^7"); - else - str = strcat(str, " ", teamscores_label[ts_primary]); + str = strcat(str, sprintf(_(" until ^3%s %s^7"), ScoreString(teamscores_flags[ts_primary], fl), + (teamscores_label[ts_primary] == "score") ? CTX(_("SCO^points")) : + (teamscores_label[ts_primary] == "fastest") ? CTX(_("SCO^is beaten")) : + TranslateScoresLabel(teamscores_label[ts_primary]))); } else { - str = strcat(str, " until ^3", ScoreString(scores_flags[ps_primary], fl)); - if(scores_label[ps_primary] == "score") - str = strcat(str, " points^7"); - else if(scores_label[ps_primary] == "fastest") - str = strcat(str, " is beaten^7"); - else - str = strcat(str, " ", scores_label[ps_primary]); + str = strcat(str, sprintf(_(" until ^3%s %s^7"), ScoreString(scores_flags[ps_primary], fl), + (scores_label[ps_primary] == "score") ? CTX(_("SCO^points")) : + (scores_label[ps_primary] == "fastest") ? CTX(_("SCO^is beaten")) : + TranslateScoresLabel(scores_label[ps_primary]))); } } if(ll > 0) { if(tl > 0 || fl > 0) - str = strcat(str, " or"); + str = strcat(str, _(" or")); if(teamplay) { - str = strcat(str, " until a lead of ^3", ScoreString(teamscores_flags[ts_primary], ll)); - if(teamscores_label[ts_primary] == "score") - str = strcat(str, " points^7"); - else if(teamscores_label[ts_primary] == "fastest") - str = strcat(str, " is beaten^7"); - else - str = strcat(str, " ", teamscores_label[ts_primary]); + str = strcat(str, sprintf(_(" until a lead of ^3%s %s^7"), ScoreString(teamscores_flags[ts_primary], ll), + (teamscores_label[ts_primary] == "score") ? CTX(_("SCO^points")) : + (teamscores_label[ts_primary] == "fastest") ? CTX(_("SCO^is beaten")) : + TranslateScoresLabel(teamscores_label[ts_primary]))); } else { - str = strcat(str, " until a lead of ^3", ScoreString(scores_flags[ps_primary], ll)); - if(scores_label[ps_primary] == "score") - str = strcat(str, " points^7"); - else if(scores_label[ps_primary] == "fastest") - str = strcat(str, " is beaten^7"); - else - str = strcat(str, " ", scores_label[ps_primary]); + str = strcat(str, sprintf(_(" until a lead of ^3%s %s^7"), ScoreString(scores_flags[ps_primary], ll), + (scores_label[ps_primary] == "score") ? CTX(_("SCO^points")) : + (scores_label[ps_primary] == "fastest") ? CTX(_("SCO^is beaten")) : + TranslateScoresLabel(scores_label[ps_primary]))); } } } diff --git a/qcsrc/client/target_music.qc b/qcsrc/client/target_music.qc index 5703c146d..b50d5a862 100644 --- a/qcsrc/client/target_music.qc +++ b/qcsrc/client/target_music.qc @@ -90,7 +90,7 @@ void Net_TargetMusic() sound(e, CHAN_VOICE, e.noise, 0, ATTN_NONE); if(getsoundtime(e, CHAN_VOICE) < 0) { - print("Cannot initialize sound ", e.noise, "\n"); + print(sprintf(_("Cannot initialize sound %s\n"), e.noise)); strunzone(e.noise); e.noise = string_null; } @@ -178,7 +178,7 @@ void Ent_ReadTriggerMusic() sound(self, CHAN_VOICE, self.noise, 0, ATTN_NONE); if(getsoundtime(self, CHAN_VOICE) < 0) { - print("Cannot initialize sound ", self.noise, "\n"); + print(sprintf(_("Cannot initialize sound %s\n"), self.noise)); strunzone(self.noise); self.noise = string_null; } diff --git a/qcsrc/client/teamplay.qc b/qcsrc/client/teamplay.qc index 02c40ba26..7d5031fb8 100644 --- a/qcsrc/client/teamplay.qc +++ b/qcsrc/client/teamplay.qc @@ -52,10 +52,10 @@ string GetTeamName(float color) { switch(color) { - default: return "Spectators"; - case COLOR_TEAM1: return "Red Team"; - case COLOR_TEAM2: return "Blue Team"; - case COLOR_TEAM3: return "Yellow Team"; - case COLOR_TEAM4: return "Pink Team"; + default: return _("Spectators"); + case COLOR_TEAM1: return _("Red Team"); + case COLOR_TEAM2: return _("Blue Team"); + case COLOR_TEAM3: return _("Yellow Team"); + case COLOR_TEAM4: return _("Pink Team"); } } diff --git a/qcsrc/client/waypointsprites.qc b/qcsrc/client/waypointsprites.qc index 1a3557983..8ecadaeb8 100644 --- a/qcsrc/client/waypointsprites.qc +++ b/qcsrc/client/waypointsprites.qc @@ -336,7 +336,6 @@ void Ent_WaypointSprite() else self.build_starthealth = 0; self.build_finished = servertime + t / 32; - //print("build: ", ftos(self.build_finished - self.build_started), "\n"); } } else diff --git a/qcsrc/common/constants.qh b/qcsrc/common/constants.qh index 50abe9875..d5df6586c 100644 --- a/qcsrc/common/constants.qh +++ b/qcsrc/common/constants.qh @@ -61,9 +61,9 @@ const float TE_CSQC_ANNOUNCE = 110; const float TE_CSQC_TARGET_MUSIC = 111; const float TE_CSQC_NOTIFY = 112; const float TE_CSQC_WEAPONCOMPLAIN = 113; -const float TE_CSQC_CAMPINGRIFLE_SCOPE = 115; const float TE_CSQC_NEX_SCOPE = 116; const float TE_CSQC_CR_MAXBULLETS = 117; +const float TE_CSQC_MINELAYER_MAXMINES = 118; const float RACE_NET_CHECKPOINT_HIT_QUALIFYING = 0; // byte checkpoint, short time, short recordtime, string recordholder const float RACE_NET_CHECKPOINT_CLEAR = 1; @@ -314,6 +314,9 @@ 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_LAYED_MINES = 55; // see DP source, quakedef.h const float STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW = 222; diff --git a/qcsrc/common/items.qc b/qcsrc/common/items.qc index 5387c05aa..3ddf8099f 100644 --- a/qcsrc/common/items.qc +++ b/qcsrc/common/items.qc @@ -19,6 +19,18 @@ void register_weapon(float id, float(float) func, float ammotype, float i, float e.model2 = strzone(strcat("wpn-", e.mdl)); e.impulse = i; e.bot_pickupbasevalue = pickupbasevalue; + if(ammotype & IT_SHELLS) + e.ammo_field = ammo_shells; + else if(ammotype & IT_NAILS) + e.ammo_field = ammo_nails; + else if(ammotype & IT_ROCKETS) + e.ammo_field = ammo_rockets; + else if(ammotype & IT_CELLS) + e.ammo_field = ammo_cells; + else if(ammotype & IT_FUEL) + e.ammo_field = ammo_fuel; + else + e.ammo_field = ammo_batteries; } float w_null(float dummy) { diff --git a/qcsrc/common/items.qh b/qcsrc/common/items.qh index 64d7abd64..ebee8aaaa 100644 --- a/qcsrc/common/items.qh +++ b/qcsrc/common/items.qh @@ -60,6 +60,14 @@ string W_FixWeaponOrder(string order, float complete); string W_NameWeaponOrder(string order); string W_NumberWeaponOrder(string order); +// ammo types +.float ammo_shells; +.float ammo_nails; +.float ammo_rockets; +.float ammo_cells; +.float ammo_fuel; +.float ammo_batteries; // dummy + // entity properties of weaponinfo: .float weapon; // WEP_... .float weapons; // WEPBIT_... @@ -73,8 +81,7 @@ string W_NumberWeaponOrder(string order); .float impulse; // weapon impulse .float bot_pickupbasevalue; // bot weapon priority .string model2; // wpn- sprite name - - +..float ammo_field; // main ammo field // dynamic weapon adding float w_null(float dummy); diff --git a/qcsrc/common/mapinfo.qc b/qcsrc/common/mapinfo.qc index 35a827f90..58f0cc852 100644 --- a/qcsrc/common/mapinfo.qc +++ b/qcsrc/common/mapinfo.qc @@ -409,7 +409,10 @@ string _MapInfo_GetDefault(float t) case MAPINFO_TYPE_NEXBALL: return "5 20 0"; case MAPINFO_TYPE_CTS: return "20 0 0"; case MAPINFO_TYPE_FREEZETAG: return "10 20 0"; - case MAPINFO_TYPE_KEEPAWAY: return "30 20 0"; + // NOTE: DO NOT ADD ANY MORE GAME TYPES HERE + // THIS IS JUST LEGACY SUPPORT FOR NEXUIZ MAPS + // ONLY ADD NEW STUFF TO _MapInfo_GetDefaultEx + // THIS FUNCTION WILL EVENTUALLY BE REMOVED default: return ""; } } @@ -466,6 +469,7 @@ void _MapInfo_Map_ApplyGametype(string s, float pWantedType, float pThisType, fl s = cdr(s); } + /* keepaway wuz here if(pWantedType == MAPINFO_TYPE_KEEPAWAY) { sa = car(s); @@ -473,7 +477,8 @@ void _MapInfo_Map_ApplyGametype(string s, float pWantedType, float pThisType, fl cvar_set("fraglimit", sa); s = cdr(s); } - + */ + // rc = timelimit timelimit_qualification laps laps_teamplay if(pWantedType == MAPINFO_TYPE_RACE) { @@ -945,6 +950,7 @@ float MapInfo_Get_ByName(string pFilename, float pAllowGenerate, float pGametype { t = car(s); s = cdr(s); f = MapInfo_Type_FromString(t); + print("Map ", pFilename, " contains the legacy 'type' keyword which is deprecated and will be removed in the future. Please migrate the mapinfo file to 'gametype'.\n"); if(f) _MapInfo_Map_ApplyGametype (s, pGametypeToSet, f, TRUE); else diff --git a/qcsrc/common/util.qc b/qcsrc/common/util.qc index 1bfbca6ae..fc86c3a84 100644 --- a/qcsrc/common/util.qc +++ b/qcsrc/common/util.qc @@ -360,7 +360,10 @@ float buf_load(string pFilename) return -1; fh = fopen(pFilename, FILE_READ); if(fh < 0) - return buf; + { + buf_del(buf); + return -1; + } i = 0; while((l = fgets(fh))) { @@ -1364,18 +1367,22 @@ string textShortenToLength(string theText, float maxWidth, textLengthUpToLength_ return strcat(substring(theText, 0, textLengthUpToLength(theText, maxWidth - tw("..."), tw)), "..."); } -float isGametypeInFilter(float gt, float tp, string pattern) +float isGametypeInFilter(float gt, float tp, float ts, string pattern) { - string subpattern, subpattern2, subpattern3; + string subpattern, subpattern2, subpattern3, subpattern4; subpattern = strcat(",", GametypeNameFromType(gt), ","); if(tp) subpattern2 = ",teams,"; else subpattern2 = ",noteams,"; + if(ts) + subpattern3 = ",teamspawns,"; + else + subpattern3 = ",noteamspawns,"; if(gt == GAME_RACE || gt == GAME_CTS) - subpattern3 = ",race,"; + subpattern4 = ",race,"; else - subpattern3 = string_null; + subpattern4 = string_null; if(substring(pattern, 0, 1) == "-") { @@ -1384,7 +1391,9 @@ float isGametypeInFilter(float gt, float tp, string pattern) return 0; if(strstrofs(strcat(",", pattern, ","), subpattern2, 0) >= 0) return 0; - if(subpattern3 && strstrofs(strcat(",", pattern, ","), subpattern3, 0) >= 0) + if(strstrofs(strcat(",", pattern, ","), subpattern3, 0) >= 0) + return 0; + if(subpattern4 && strstrofs(strcat(",", pattern, ","), subpattern4, 0) >= 0) return 0; } else @@ -1393,7 +1402,8 @@ float isGametypeInFilter(float gt, float tp, string pattern) pattern = substring(pattern, 1, strlen(pattern) - 1); if(strstrofs(strcat(",", pattern, ","), subpattern, 0) < 0) if(strstrofs(strcat(",", pattern, ","), subpattern2, 0) < 0) - if((!subpattern3) || strstrofs(strcat(",", pattern, ","), subpattern3, 0) < 0) + if(strstrofs(strcat(",", pattern, ","), subpattern3, 0) < 0) + if((!subpattern4) || strstrofs(strcat(",", pattern, ","), subpattern4, 0) < 0) return 0; } return 1; @@ -1979,3 +1989,27 @@ float u8_strsize(string s) } return l; } + +// translation helpers +string language_filename(string s) +{ + string fn; + float fh; + fn = prvm_language; + if(fn == "" || fn == "dump") + return s; + fn = strcat(s, ".", fn); + if((fh = fopen(fn, FILE_READ)) >= 0) + { + fclose(fh); + return fn; + } + return s; +} +string CTX(string s) +{ + float p = strstrofs(s, "^", 0); + if(p < 0) + return s; + return substring(s, p+1, -1); +} diff --git a/qcsrc/common/util.qh b/qcsrc/common/util.qh index 79b93d3ed..a15855753 100644 --- a/qcsrc/common/util.qh +++ b/qcsrc/common/util.qh @@ -142,7 +142,7 @@ string getWrappedLine_remaining; string getWrappedLine(float w, vector size, textLengthUpToWidth_widthFunction_t tw); string getWrappedLineLen(float w, textLengthUpToLength_lenFunction_t tw); -float isGametypeInFilter(float gt, float tp, string pattern); +float isGametypeInFilter(float gt, float tp, float ts, string pattern); typedef void(float i1, float i2, entity pass) swapfunc_t; // is only ever called for i1 < i2 typedef float(float i1, float i2, entity pass) comparefunc_t; // <0 for <, ==0 for ==, >0 for > (like strcmp) @@ -249,3 +249,9 @@ vector NearestPointOnBox(entity box, vector org); float vercmp(string v1, string v2); float u8_strsize(string s); + +// translation helpers +string prvm_language; +string language_filename(string s); +string CTX(string s); +#define ZCTX(s) strzone(CTX(s)) diff --git a/qcsrc/i18n-badwords.txt b/qcsrc/i18n-badwords.txt new file mode 100644 index 000000000..828fe0a8b --- /dev/null +++ b/qcsrc/i18n-badwords.txt @@ -0,0 +1,34 @@ +# list of words that must not be used in the source as a single string; +# use ZCTX(_("CONTEXT^string")) instead +# vi macro to do it: +# :s/_("\([^"]*\)")/ZCTX(_("CONTEXT^\1"))/g +# test by: +# grep -v ^# i18n-badwords.txt | while IFS= read -r W; do grep -nri "_(\"$W\")" menu/xonotic; done | sort -n +# this is done to help with languages like Russian where these words may need +# different grammatical gender in different instances +All +Best +Disabled +Good +High +Insane +Low +Lowest +Medium +Normal +Off +Ultra +Small +Large +Custom +Very short +Short +Long +Full +Empty +None +Few +Many +Lots +Both +Ambient: diff --git a/qcsrc/i18n-guide.txt b/qcsrc/i18n-guide.txt new file mode 100644 index 000000000..f2677fe3a --- /dev/null +++ b/qcsrc/i18n-guide.txt @@ -0,0 +1,31 @@ +How to make the .po template: + +find . -type f -not -name \*.po -not -name \*.txt | xgettext -LC -k_ -f- --from-code utf-8 + + +How to compare the .po template against a language file: + +msgcmp ../../menu.dat.de.po messages.po + + +How to merge the .po template into a language file: + +msgmerge -U ../../menu.dat.de.po messages.po + + +Guideline: +- do NOT translate strings in error() messages, or in dprint()! +- delete obviously useless developer prints while at it +- change obvious developer prints from print to dprint (even in comments), + unless in developer-only functions (e.g. *dumptree*) +- mark translatable strings with _() +- if a translatable string is a strcat monster, change it to sprintf +- if code loads files with text, use language_filename() +- interesting vim macros: + :map # /"<return> + :map ' i_(<esc>2f"a)<esc>/"<return> + :map " F"isprintf(_(<esc>%i), )<esc>i + +Unresolved TODO: + +- translated campaigns diff --git a/qcsrc/menu/anim/animhost.c b/qcsrc/menu/anim/animhost.c index fc345e445..48a45bda8 100644 --- a/qcsrc/menu/anim/animhost.c +++ b/qcsrc/menu/anim/animhost.c @@ -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); } } } diff --git a/qcsrc/menu/classes.c b/qcsrc/menu/classes.c index 9ebcbb8f5..b85546569 100644 --- a/qcsrc/menu/classes.c +++ b/qcsrc/menu/classes.c @@ -27,6 +27,7 @@ #include "xonotic/bigbutton.c" #include "xonotic/commandbutton.c" #include "xonotic/bigcommandbutton.c" +#include "xonotic/dialog_firstrun.c" #include "xonotic/dialog_teamselect.c" #include "xonotic/dialog_settings.c" #include "xonotic/dialog_settings_video.c" @@ -58,9 +59,10 @@ #include "xonotic/dialog_multiplayer_create_mutators.c" #include "xonotic/dialog_multiplayer_create_advanced.c" #include "xonotic/dialog_multiplayer_create_mapinfo.c" -#include "xonotic/gametypebutton.c" +#include "xonotic/gametypelist.c" #include "xonotic/maplist.c" #include "xonotic/skinlist.c" +#include "xonotic/languagelist.c" #include "xonotic/image.c" #include "xonotic/crosshairbutton.c" #include "xonotic/playermodel.c" diff --git a/qcsrc/menu/draw.qc b/qcsrc/menu/draw.qc index a33cac916..12b56d8da 100644 --- a/qcsrc/menu/draw.qc +++ b/qcsrc/menu/draw.qc @@ -282,14 +282,14 @@ void draw_Text(vector theOrigin, string theText, vector theSize, vector theColor } void draw_CenterText(vector theOrigin, string theText, vector theSize, vector theColor, float theAlpha, float ICanHasKallerz) { - //print(strcat("orig = ", vtos(theOrigin) ," tx = ", ftos(draw_TextWidth(theText, ICanHasKallerz, theSize)), "\n")); + //dprint(strcat("orig = ", vtos(theOrigin) ," tx = ", ftos(draw_TextWidth(theText, ICanHasKallerz, theSize)), "\n")); draw_Text(theOrigin - eX * 0.5 * draw_TextWidth(theText, ICanHasKallerz, theSize), theText, theSize, theColor, theAlpha, ICanHasKallerz); } float draw_TextWidth(string theText, float ICanHasKallerz, vector SizeThxBye) { //return strlen(theText); - //print("draw_TextWidth \"", theText, "\"\n"); + //dprint("draw_TextWidth \"", theText, "\"\n"); vector v; v = '0 0 0'; //float r; diff --git a/qcsrc/menu/gamecommand.qc b/qcsrc/menu/gamecommand.qc index 439a1b5c9..f3d780b6f 100644 --- a/qcsrc/menu/gamecommand.qc +++ b/qcsrc/menu/gamecommand.qc @@ -44,7 +44,7 @@ void Curl_URI_Get_Callback(float id, float status, string data) do_cvar = curl_uri_get_cvar[i]; if(status != 0) { - print("error: status is ", ftos(status), "\n"); + print(sprintf(_("error: status is %d\n"), status)); return; } if(do_exec) @@ -62,9 +62,9 @@ void GameCommand(string theCommand) if(argv(0) == "help" || argc == 0) { - print("Usage: menu_cmd theCommand..., where possible theCommands are:\n"); - print(" sync - reloads all cvars on the current menu page\n"); - print(" directmenu ITEM - select a menu item as main item\n"); + print(_("Usage: menu_cmd command..., where possible commands are:\n")); + print(_(" sync - reloads all cvars on the current menu page\n")); + print(_(" directmenu ITEM - select a menu item as main item\n")); GameCommand_Generic("help"); return; } @@ -100,6 +100,12 @@ void GameCommand(string theCommand) return; } + if(argv(0) == "languageselect") + { + m_goto_language_selector(); + return; + } + if(argv(0) == "videosettings") { m_goto_video_settings(); @@ -184,7 +190,7 @@ void GameCommand(string theCommand) curl_uri_get_pos = mod(curl_uri_get_pos + 1, URI_GET_CURL_END - URI_GET_CURL + 1); } else - print("error creating curl handle\n"); + print(_("error creating curl handle\n")); buf_del(buf); @@ -230,5 +236,5 @@ void GameCommand(string theCommand) } #endif - print("Invalid theCommand. For a list of supported theCommands, try menu_cmd help.\n"); + print(_("Invalid command. For a list of supported commands, try menu_cmd help.\n")); } diff --git a/qcsrc/menu/item.c b/qcsrc/menu/item.c index 497d1cf66..52b960e45 100644 --- a/qcsrc/menu/item.c +++ b/qcsrc/menu/item.c @@ -42,7 +42,6 @@ void Item_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOr { me.origin = absOrigin; me.size = absSize; - // me.tooltip = "The quick brown fox jumped over the lazy sleeping dog's back then sat on a tack. Franz jagt im komplett verwahrlosten Taxi quer durch Bayern."; } void Item_draw(entity me) diff --git a/qcsrc/menu/item/borderimage.c b/qcsrc/menu/item/borderimage.c index 236b23522..b23078bae 100644 --- a/qcsrc/menu/item/borderimage.c +++ b/qcsrc/menu/item/borderimage.c @@ -57,8 +57,6 @@ void BorderImage_configureBorderImage(entity me, string theTitle, float sz, vect } void BorderImage_draw(entity me) { - //print(vtos(me.borderVec), "\n"); - if(me.src) draw_BorderPicture('0 0 0', me.src, '1 1 0', me.color, 1, me.borderVec); if(me.fontSize > 0) diff --git a/qcsrc/menu/item/button.c b/qcsrc/menu/item/button.c index 3d91229ec..71ca11c7c 100644 --- a/qcsrc/menu/item/button.c +++ b/qcsrc/menu/item/button.c @@ -8,6 +8,7 @@ CLASS(Button) EXTENDS(Label) METHOD(Button, mousePress, float(entity, vector)) METHOD(Button, mouseDrag, float(entity, vector)) METHOD(Button, mouseRelease, float(entity, vector)) + METHOD(Button, focusEnter, void(entity)) ATTRIB(Button, onClick, void(entity, entity), SUB_Null) ATTRIB(Button, onClickEntity, entity, NULL) ATTRIB(Button, src, string, string_null) @@ -69,8 +70,6 @@ float Button_mouseDrag(entity me, vector pos) float Button_mousePress(entity me, vector pos) { me.mouseDrag(me, pos); // verify coordinates - if(cvar("menu_sounds")) - localsound("sound/misc/menu2.wav"); return 1; } float Button_mouseRelease(entity me, vector pos) @@ -79,7 +78,11 @@ float Button_mouseRelease(entity me, vector pos) 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; @@ -88,7 +91,12 @@ void Button_showNotify(entity me) { me.focusable = !me.disabled; } -.float playedfocus; +void Button_focusEnter(entity me) +{ + if(cvar("menu_sounds") > 1) + localsound("sound/misc/menu1.wav"); + SUPER(Button).focusEnter(me); +} void Button_draw(entity me) { vector bOrigin, bSize; @@ -159,14 +167,5 @@ void Button_draw(entity me) me.onClick(me, me.onClickEntity); } me.clickTime -= frametime; - - if(cvar("menu_sounds") > 1) - if(me.focused && !me.playedfocus) - { - localsound("sound/misc/menu1.wav"); - me.playedfocus = 1; - } - else if(!me.focused && me.playedfocus) - me.playedfocus = 0; } -#endif \ No newline at end of file +#endif diff --git a/qcsrc/menu/item/dialog.c b/qcsrc/menu/item/dialog.c index 3d537bfb9..800a12681 100644 --- a/qcsrc/menu/item/dialog.c +++ b/qcsrc/menu/item/dialog.c @@ -78,7 +78,6 @@ void Dialog_fill(entity me) void Dialog_addItemSimple(entity me, float row, float col, float rowspan, float colspan, entity e, vector v) { - //print(vtos(me.itemSpacing), " ", vtos(me.itemSize), "\n"); vector o, s; o = me.itemOrigin + eX * ( col * me.itemSpacing_x) + eY * ( row * me.itemSpacing_y); s = me.itemSize + eX * ((colspan - 1) * me.itemSpacing_x) + eY * ((rowspan - 1) * me.itemSpacing_y); @@ -156,7 +155,7 @@ void Dialog_configureDialog(entity me) if(me.closable) { closebutton = me.closeButton = spawnButton(); - closebutton.configureButton(closebutton, "Close", 0, me.closeButtonImage); + closebutton.configureButton(closebutton, "", 0, me.closeButtonImage); closebutton.onClick = Dialog_Close; closebutton.onClickEntity = me; closebutton.srcMulti = 0; me.addItem(me, closebutton, '0 0 0', '1 1 0', 1); // put it as LAST diff --git a/qcsrc/menu/item/gecko.c b/qcsrc/menu/item/gecko.c index 139e87e1a..dd752e6e5 100644 --- a/qcsrc/menu/item/gecko.c +++ b/qcsrc/menu/item/gecko.c @@ -46,7 +46,7 @@ void Gecko_draw(entity me) local vector fontsize; fontsize_x = fontsize_y = 1.0 / 30.0; fontsize_z = 0.0; - draw_Text( '0 0 0', "Browser not initialized!", fontsize, '1 1 1', 1.0, 0 ); + draw_Text( '0 0 0', _("Browser not initialized!"), fontsize, '1 1 1', 1.0, 0 ); } } diff --git a/qcsrc/menu/item/inputbox.c b/qcsrc/menu/item/inputbox.c index 750bc83b8..5b07afd4e 100644 --- a/qcsrc/menu/item/inputbox.c +++ b/qcsrc/menu/item/inputbox.c @@ -272,35 +272,6 @@ void InputBox_draw(entity me) draw_Text(p, substring(me.text, i, 2), me.realFontSize, '1 1 1', theAlpha, 0); } } - /*else if(ch2 == "a") // ^a found - { - draw_Fill(p, eX * w + eY * me.realFontSize_y, '1 1 1', 0.5); - draw_Text(p, substring(me.text, i, 2), me.realFontSize, theColor, 0.8, 0); - - component = str2chr(me.text, i+2); - if (component >= '0' && component <= '9') - component = component - '0'; - else if (component >= 'a' && component <= 'f') - component = component - 87; - else if (component >= 'A' && component <= 'F') - component = component - 55; - else - component = -1; - - if (component >= 0) // ^ah found - { - // FIX ME: overflow here - if (component == 20 && theVariableAlpha <= 0.97) - theVariableAlpha = theVariableAlpha + 0.0625; - else if (component == 30 && theVariableAlpha >= 0.03) - theVariableAlpha = theVariableAlpha - 0.0625; - else - theVariableAlpha = component*0.0625; - - draw_Fill(p, eX * draw_TextWidth(substring(me.text, i, 3), 0, me.realFontSize) + eY * me.realFontSize_y, '0.8 0.8 0.8', 0.5); - draw_Text(p, strcat(ch, ch2), me.realFontSize, theColor, 0.8, 0); - } - }*/ else { draw_Fill(p, eX * w + eY * me.realFontSize_y, '1 1 1', 0.5); diff --git a/qcsrc/menu/item/label.c b/qcsrc/menu/item/label.c index 7ed6e4f68..e3a6bee40 100644 --- a/qcsrc/menu/item/label.c +++ b/qcsrc/menu/item/label.c @@ -5,6 +5,7 @@ CLASS(Label) EXTENDS(Item) METHOD(Label, resizeNotify, void(entity, vector, vector, vector, vector)) METHOD(Label, setText, void(entity, string)) METHOD(Label, toString, string(entity)) + METHOD(Label, recalcPosition, void(entity)) ATTRIB(Label, text, string, string_null) ATTRIB(Label, fontSize, float, 8) ATTRIB(Label, align, float, 0.5) @@ -23,6 +24,7 @@ CLASS(Label) EXTENDS(Item) ATTRIB(Label, textEntity, entity, NULL) ATTRIB(Label, allowWrap, float, 0) ATTRIB(Label, recalcPos, float, 0) + ATTRIB(Label, condenseFactor, float, 1) ENDCLASS(Label) #endif @@ -36,6 +38,32 @@ void Label_setText(entity me, string txt) me.text = txt; me.recalcPos = 1; } +void Label_recalcPosition(entity me) +{ + float spaceAvail; + spaceAvail = 1 - me.keepspaceLeft - me.keepspaceRight; + + float spaceUsed; + spaceUsed = draw_TextWidth(me.text, me.allowColors, me.realFontSize); + + if(spaceUsed <= spaceAvail) + { + me.realOrigin_x = me.align * (spaceAvail - spaceUsed) + me.keepspaceLeft; + me.condenseFactor = 1; + } + else if(me.allowCut || me.allowWrap) + { + me.realOrigin_x = me.keepspaceLeft; + me.condenseFactor = 1; + } + else + { + me.realOrigin_x = me.keepspaceLeft; + me.condenseFactor = spaceAvail / spaceUsed; + dprint(sprintf(_("NOTE: label text %s too wide for label, condensed by factor %f\n"), me.text, me.condenseFactor)); + } + me.recalcPos = 0; +} void Label_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize) { SUPER(Label).resizeNotify(me, relOrigin, relSize, absOrigin, absSize); @@ -46,9 +74,42 @@ void Label_resizeNotify(entity me, vector relOrigin, vector relSize, vector absO me.keepspaceLeft = me.marginLeft * me.realFontSize_x; if(me.marginRight) me.keepspaceRight = me.marginRight * me.realFontSize_x; - me.realOrigin_y = 0.5 * (1 - me.realFontSize_y); - me.realOrigin_x = me.align * (1 - me.keepspaceLeft - me.keepspaceRight - min(draw_TextWidth(me.text, me.allowColors, me.realFontSize), (1 - me.keepspaceLeft - me.keepspaceRight))) + me.keepspaceLeft; - me.recalcPos = 0; + + me.recalcPosition(me); + + float lines; + + vector dfs; + vector fs; + + // set up variables to draw in condensed size, but use hinting for original size + fs = me.realFontSize; + fs_x *= me.condenseFactor; + + dfs = draw_fontscale; + draw_fontscale_x *= me.condenseFactor; + + if(me.allowCut) // FIXME allowCut incompatible with align != 0 + lines = 1; + else if(me.allowWrap) // FIXME allowWrap incompatible with align != 0 + { + getWrappedLine_remaining = me.text; + lines = 0; + while(getWrappedLine_remaining) + { + if (me.allowColors) + getWrappedLine((1 - me.keepspaceLeft - me.keepspaceRight), fs, draw_TextWidth_WithColors); + else + getWrappedLine((1 - me.keepspaceLeft - me.keepspaceRight), fs, draw_TextWidth_WithoutColors); + ++lines; + } + } + else + lines = 1; + + draw_fontscale = dfs; + + me.realOrigin_y = 0.5 * (1 - lines * me.realFontSize_y); } void Label_configureLabel(entity me, string txt, float sz, float algn) { @@ -72,17 +133,23 @@ void Label_draw(entity me) t = me.text; if(me.recalcPos) - me.realOrigin_x = me.align * (1 - me.keepspaceLeft - me.keepspaceRight - min(draw_TextWidth(t, me.allowColors, me.realFontSize), (1 - me.keepspaceLeft - me.keepspaceRight))) + me.keepspaceLeft; - me.recalcPos = 0; + me.recalcPosition(me); - //if(me.text == "Bookmark") - // draw_Fill(me.realOrigin, '0 1 0' + '1 0 0' * draw_TextWidth(t, me.allowColors, me.realFontSize), '1 0 1', 1); - if(me.fontSize) if(t) { + vector dfs; + vector fs; + + // set up variables to draw in condensed size, but use hinting for original size + fs = me.realFontSize; + fs_x *= me.condenseFactor; + + dfs = draw_fontscale; + draw_fontscale_x *= me.condenseFactor; + if(me.allowCut) // FIXME allowCut incompatible with align != 0 - draw_Text(me.realOrigin, draw_TextShortenToWidth(t, (1 - me.keepspaceLeft - me.keepspaceRight), me.allowColors, me.realFontSize), me.realFontSize, me.colorL, me.alpha, me.allowColors); + draw_Text(me.realOrigin, draw_TextShortenToWidth(t, (1 - me.keepspaceLeft - me.keepspaceRight), me.allowColors, fs), fs, me.colorL, me.alpha, me.allowColors); else if(me.allowWrap) // FIXME allowWrap incompatible with align != 0 { getWrappedLine_remaining = t; @@ -90,15 +157,17 @@ void Label_draw(entity me) while(getWrappedLine_remaining) { if (me.allowColors) - t = getWrappedLine((1 - me.keepspaceLeft - me.keepspaceRight), me.realFontSize, draw_TextWidth_WithColors); + t = getWrappedLine((1 - me.keepspaceLeft - me.keepspaceRight), fs, draw_TextWidth_WithColors); else - t = getWrappedLine((1 - me.keepspaceLeft - me.keepspaceRight), me.realFontSize, draw_TextWidth_WithoutColors); - draw_Text(o, t, me.realFontSize, me.colorL, me.alpha, me.allowColors); + t = getWrappedLine((1 - me.keepspaceLeft - me.keepspaceRight), fs, draw_TextWidth_WithoutColors); + draw_Text(o, t, fs, me.colorL, me.alpha, me.allowColors); o_y += me.realFontSize_y; } } else - draw_Text(me.realOrigin, t, me.realFontSize, me.colorL, me.alpha, me.allowColors); + draw_Text(me.realOrigin, t, fs, me.colorL, me.alpha, me.allowColors); + + draw_fontscale = dfs; } } #endif diff --git a/qcsrc/menu/item/listbox.c b/qcsrc/menu/item/listbox.c index ba3fa6a9f..9664e9376 100644 --- a/qcsrc/menu/item/listbox.c +++ b/qcsrc/menu/item/listbox.c @@ -277,6 +277,7 @@ void ListBox_draw(entity me) oldshift = draw_shift; oldscale = draw_scale; absSize = boxToGlobalSize(me.size, eX * (1 - me.controlWidth) + eY * me.itemHeight); + draw_scale = boxToGlobalSize(eX * (1 - me.controlWidth) + eY * me.itemHeight, oldscale); for(i = floor(me.scrollPos / me.itemHeight); i < me.nItems; ++i) { float y; @@ -284,7 +285,6 @@ void ListBox_draw(entity me) if(y >= 1) break; draw_shift = boxToGlobal(eY * y, oldshift, oldscale); - draw_scale = boxToGlobalSize(eY * me.itemHeight + eX * (1 - me.controlWidth), oldscale); me.drawListBoxItem(me, i, absSize, (me.selectedItem == i)); } draw_ClearClip(); @@ -297,6 +297,6 @@ void ListBox_clickListBoxItem(entity me, float i, vector where) void ListBox_drawListBoxItem(entity me, float i, vector absSize, float selected) { - draw_Text('0 0 0', strcat("Item ", ftos(i)), eX * (8 / absSize_x) + eY * (8 / absSize_y), (selected ? '0 1 0' : '1 1 1'), 1, 0); + draw_Text('0 0 0', sprintf(_("Item %d"), i), eX * (8 / absSize_x) + eY * (8 / absSize_y), (selected ? '0 1 0' : '1 1 1'), 1, 0); } #endif diff --git a/qcsrc/menu/item/nexposee.c b/qcsrc/menu/item/nexposee.c index 2369a4107..304bf1dd2 100644 --- a/qcsrc/menu/item/nexposee.c +++ b/qcsrc/menu/item/nexposee.c @@ -149,8 +149,6 @@ void Nexposee_draw(entity me) me.animationState = 0; } - //print(ftos(me.animationState), "\n"); - f = min(1, frametime * 5); switch(me.animationState) { diff --git a/qcsrc/menu/item/slider.c b/qcsrc/menu/item/slider.c index c8bab9bf8..8861357b7 100644 --- a/qcsrc/menu/item/slider.c +++ b/qcsrc/menu/item/slider.c @@ -10,6 +10,7 @@ CLASS(Slider) EXTENDS(Label) METHOD(Slider, mousePress, float(entity, vector)) METHOD(Slider, mouseDrag, float(entity, vector)) METHOD(Slider, mouseRelease, float(entity, vector)) + METHOD(Slider, focusEnter, void(entity)) METHOD(Slider, valueToText, string(entity, float)) METHOD(Slider, toString, string(entity)) METHOD(Slider, setValue, void(entity, float)) @@ -47,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 { @@ -61,7 +61,7 @@ void Slider_setSliderValue(entity me, float val) } string Slider_toString(entity me) { - return strcat(ftos(me.value), " (", me.valueToText(me, me.value), ")"); + return sprintf(_("%d (%s)"), me.value, me.valueToText(me, me.value)); } void Slider_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize) { @@ -156,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; @@ -235,8 +235,6 @@ float Slider_mousePress(entity me, vector pos) //me.mouseDrag(me, pos); } } - if(cvar("menu_sounds")) - localsound("sound/misc/menu2.wav"); return 1; } float Slider_mouseRelease(entity me, vector pos) @@ -244,12 +242,20 @@ float Slider_mouseRelease(entity me, vector pos) me.pressed = 0; if(me.disabled) return 0; + if(cvar("menu_sounds")) + localsound("sound/misc/menu2.wav"); return 1; } void Slider_showNotify(entity me) { me.focusable = !me.disabled; } +void Slider_focusEnter(entity me) +{ + if(cvar("menu_sounds") > 1) + localsound("sound/misc/menu1.wav"); + SUPER(Slider).focusEnter(me); +} void Slider_draw(entity me) { float controlLeft; diff --git a/qcsrc/menu/item/textslider.c b/qcsrc/menu/item/textslider.c index c4a7af7a8..028a1603a 100644 --- a/qcsrc/menu/item/textslider.c +++ b/qcsrc/menu/item/textslider.c @@ -26,9 +26,9 @@ string TextSlider_valueToIdentifier(entity me, float val) string TextSlider_valueToText(entity me, float val) { if(val >= me.nValues) - return "custom"; + return _("custom"); if(val < 0) - return "custom"; + return _("custom"); return me.(valueStrings[val]); } void TextSlider_setValueFromIdentifier(entity me, string id) diff --git a/qcsrc/menu/mbuiltin.qh b/qcsrc/menu/mbuiltin.qh index 761b63a83..e5d366eb7 100644 --- a/qcsrc/menu/mbuiltin.qh +++ b/qcsrc/menu/mbuiltin.qh @@ -3,9 +3,6 @@ ////////////////////////////////////////////////// // AK FIXME: Create perhaps a special builtin file for the common cmds -//#define PROFILESTRZONE -//#define FIXEDFOPEN - float checkextension(string ext) = #1; // error cmds @@ -100,11 +97,7 @@ float bound(float min,float value, float max) = #45; float pow(float a, float b) = #46; void copyentity(entity src, entity dst) = #47; -#ifdef FIXEDFOPEN -float _fopen( string filename, float mode ) = #48; -#else float fopen(string filename, float mode) = #48; -#endif void fclose(float fhandle) = #49; string fgets(float fhandle) = #50; void fputs(float fhandle, string s) = #51; @@ -116,23 +109,8 @@ string substring(string s, float start, float length) = #54; vector stov(string s) = #55; -#ifdef PROFILESTRZONE -string _strzone(string s) = #56; -void _strunzone(string s) = #57; - -string( string s ) strzone = -{ - return _strzone( s ); -}; - -void( string s ) strunzone = -{ - return _strunzone( s ); -}; -#else string strzone(string s) = #56; void strunzone(string s) = #57; -#endif float tokenize(string s) = #58; float(string s, string separator1, ...) tokenizebyseparator = #479; @@ -343,26 +321,6 @@ string(string search, string replace, string subject) strreplace = #484; string(float uselocaltime, string format, ...) strftime = #478; -#ifdef FIXEDFOPEN -float fopen( string filename, float mode ) = -{ - local float handle; - if( mode == FILE_READ ) { - return _fopen( filename, mode ); - } - - // check for data/ - filename = strzone( filename ); - if( substring( filename, 0, 5 ) != "data/" ) { - print( "menu: fopen: all output must go into data/!\n" ); - return -1; - } - handle = _fopen( substring( filename, 5, 10000 ), mode ); - strunzone( filename ); - return handle; -}; -#endif - float(string s) tokenize_console = #514; float(float i) argv_start_index = #515; float(float i) argv_end_index = #516; diff --git a/qcsrc/menu/menu.qc b/qcsrc/menu/menu.qc index 7bec34ea0..0894856f1 100644 --- a/qcsrc/menu/menu.qc +++ b/qcsrc/menu/menu.qc @@ -21,11 +21,12 @@ void SUB_Null() { }; void() m_init = { cvar_set("_menu_alpha", "0"); + prvm_language = strzone(cvar_string("prvm_language")); check_unacceptable_compiler_bugs(); #ifdef WATERMARK - print("^4MQC Build information: ", WATERMARK(), "\n"); + print(sprintf(_("^4MQC Build information: %s\n"), WATERMARK())); #endif // list all game dirs (TEST) @@ -38,7 +39,7 @@ void() m_init = s = getgamedirinfo(i, GETGAMEDIRINFO_NAME); if not(s) break; - print(s, ": ", getgamedirinfo(i, GETGAMEDIRINFO_DESCRIPTION)); + dprint(s, ": ", getgamedirinfo(i, GETGAMEDIRINFO_DESCRIPTION)); } } } @@ -115,18 +116,18 @@ void() m_init_delayed = if(cvar_string("menu_skin") != "") { draw_currentSkin = strcat("gfx/menu/", cvar_string("menu_skin")); - fh = fopen(strcat(draw_currentSkin, "/skinvalues.txt"), FILE_READ); + fh = fopen(language_filename(strcat(draw_currentSkin, "/skinvalues.txt")), FILE_READ); } if(fh < 0) if(cvar_defstring("menu_skin") != "") { draw_currentSkin = strcat("gfx/menu/", cvar_defstring("menu_skin")); - fh = fopen(strcat(draw_currentSkin, "/skinvalues.txt"), FILE_READ); + fh = fopen(language_filename(strcat(draw_currentSkin, "/skinvalues.txt")), FILE_READ); } if(fh < 0) { draw_currentSkin = "gfx/menu/default"; - fh = fopen(strcat(draw_currentSkin, "/skinvalues.txt"), FILE_READ); + fh = fopen(language_filename(strcat(draw_currentSkin, "/skinvalues.txt")), FILE_READ); } draw_currentSkin = strzone(draw_currentSkin); while((s = fgets(fh))) @@ -183,7 +184,7 @@ void(float key, float ascii) m_keyup = if(mouseButtonsPressed < 0) { mouseButtonsPressed = 0; - print("Warning: released an already released button\n"); + dprint("Warning: released an already released button\n"); } } if(key == K_ALT) menuShiftState -= (menuShiftState & S_ALT); @@ -221,7 +222,7 @@ void(float key, float ascii) m_keydown = if(mouseButtonsPressed > 10) { mouseButtonsPressed = 10; - print("Warning: pressed an already pressed button\n"); + dprint("Warning: pressed an already pressed button\n"); } } if(key == K_ALT) menuShiftState |= S_ALT; @@ -341,11 +342,6 @@ float m_testtooltipbox(vector tooltippos) return FALSE; if(tooltippos_y + menuTooltipSize_y > 1) return FALSE; - /* - menuTooltipOrigin_x = rint(tooltippos_x * cvar("vid_width")) / cvar("vid_width"); - menuTooltipOrigin_y = rint(tooltippos_y * cvar("vid_height")) / cvar("vid_height"); - menuTooltipOrigin_z = 0; - */ menuTooltipOrigin = tooltippos; return TRUE; } @@ -354,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 @@ -565,9 +561,11 @@ void() m_draw = if(Menu_Active) if(!cvar("menu_video_played")) { - localcmd("set menu_video_played 1; cd loop $menu_cdtrack; play sound/announcer/default/welcome.ogg\n"); - menuLogoAlpha = -0.8; // no idea why, but when I start this at zero, it jumps instead of fading + localcmd("cd loop $menu_cdtrack; play sound/announcer/default/welcome.ogg\n"); + menuLogoAlpha = -0.8; // no idea why, but when I start this at zero, it jumps instead of fading FIXME } + // ALWAYS set this cvar; if we start but menu is not active, this means we want no background music! + localcmd("set menu_video_played 1\n"); } t = gettime(); @@ -839,7 +837,9 @@ void(string itemname) m_goto = } else { - e = findstring(NULL, name, itemname); + for(e = NULL; (e = findstring(e, name, itemname)); ) + if(e.classname != "vtbl") + break; if(e) { m_hide(); @@ -858,10 +858,18 @@ void() m_goto_skin_selector = m_goto("skinselector"); } +void() m_goto_language_selector = +{ + if(!menuInitialized) + return; + // TODO add code to switch back to the language selector (no idea how to do it now) + m_goto("languageselector"); +} + void() m_goto_video_settings = { if(!menuInitialized) return; - // TODO add code to switch back to the skin selector (no idea how to do it now) + // TODO add code to switch back to the video settings (no idea how to do it now) m_goto("videosettings"); } diff --git a/qcsrc/menu/menu.qh b/qcsrc/menu/menu.qh index 903700d5d..e42595e58 100644 --- a/qcsrc/menu/menu.qh +++ b/qcsrc/menu/menu.qh @@ -27,6 +27,7 @@ void m_hide(); void m_display(); void m_goto(string name); void m_goto_skin_selector(); +void m_goto_language_selector(); void m_goto_video_settings(); .string name; diff --git a/qcsrc/menu/skin-customizables.inc b/qcsrc/menu/skin-customizables.inc index afea3e752..ca8f4cf8e 100644 --- a/qcsrc/menu/skin-customizables.inc +++ b/qcsrc/menu/skin-customizables.inc @@ -6,7 +6,7 @@ print "\n"; while(<DATA>) { chomp; - if(/^\s*(?:SKINFLOAT|SKINVECTOR)\(([A-Z_]+), ([-'0-9. ]+)\);$/) + if(/^\s*(?:SKINFLOAT|SKINVECTOR)\(([A-Z_]+), ([-'0-9. ]+)\);$/) #' { printf "%-31s %s\n", $1, $2; } @@ -51,6 +51,7 @@ SKINBEGIN SKINVECTOR(AVOID_TOOLTIP, '8 8 0'); // the individual dialog background colors + SKINVECTOR(COLOR_DIALOG_FIRSTRUN, '0.7 0.7 1'); SKINVECTOR(COLOR_DIALOG_MULTIPLAYER, '0.7 0.7 1'); SKINVECTOR(COLOR_DIALOG_SETTINGS, '0.7 0.7 1'); SKINVECTOR(COLOR_DIALOG_TEAMSELECT, '1 1 1'); @@ -62,7 +63,7 @@ SKINBEGIN SKINVECTOR(COLOR_DIALOG_SINGLEPLAYER, '1 1 0.7'); SKINVECTOR(COLOR_DIALOG_CREDITS, '0.7 0.7 1'); SKINVECTOR(COLOR_DIALOG_WEAPONS, '1 0.7 0.7'); - SKINVECTOR(COLOR_DIALOG_RADAR, '0.7 0.7 1'); + SKINVECTOR(COLOR_DIALOG_WAYPOINTS, '0.7 0.7 1'); SKINVECTOR(COLOR_DIALOG_SERVERINFO, '0.7 0.7 1'); SKINVECTOR(COLOR_DIALOG_CVARS, '1 0 0'); @@ -101,6 +102,7 @@ SKINBEGIN SKINVECTOR(COLOR_BUTTON_C, '1 1 1'); SKINVECTOR(COLOR_BUTTON_F, '1 1 1'); SKINVECTOR(COLOR_BUTTON_D, '1 1 1'); + SKINFLOAT(MARGIN_BUTTON, 0.5); // item: campaign SKINFLOAT(ALPHA_CAMPAIGN_SELECTABLE, 0.8); diff --git a/qcsrc/menu/skin.qh b/qcsrc/menu/skin.qh index 20da37d24..437c49bf7 100644 --- a/qcsrc/menu/skin.qh +++ b/qcsrc/menu/skin.qh @@ -17,7 +17,7 @@ //#define SKINSTRING(name,def) case #name: break #define SKINSTRING(name,def) case #name: SKIN##name = strzone(value); break // I know this leaks memory when skin is read multiple times. Screw it. -#define SKINEND case "": break; case "//": break; default: print("Invalid key in skin file: ", key, "\n"); } } +#define SKINEND case "": break; case "//": break; default: dprint("Invalid key in skin file: ", key, "\n"); } } #include "skin-customizables.inc" #undef SKINEND #undef SKINSTRING diff --git a/qcsrc/menu/xonotic/button.c b/qcsrc/menu/xonotic/button.c index 5522905bc..cbc7c47c4 100644 --- a/qcsrc/menu/xonotic/button.c +++ b/qcsrc/menu/xonotic/button.c @@ -10,6 +10,8 @@ CLASS(XonoticButton) EXTENDS(Button) ATTRIB(XonoticButton, colorD, vector, SKINCOLOR_BUTTON_D) ATTRIB(XonoticButton, alpha, float, SKINALPHA_TEXT) ATTRIB(XonoticButton, disabledAlpha, float, SKINALPHA_DISABLED) + ATTRIB(XonoticButton, marginLeft, float, SKINMARGIN_BUTTON) // chars + ATTRIB(XonoticButton, marginRight, float, SKINMARGIN_BUTTON) // chars ENDCLASS(XonoticButton) entity makeXonoticButton(string theText, vector theColor); #endif diff --git a/qcsrc/menu/xonotic/campaign.c b/qcsrc/menu/xonotic/campaign.c index e7667f69c..04f7a083c 100644 --- a/qcsrc/menu/xonotic/campaign.c +++ b/qcsrc/menu/xonotic/campaign.c @@ -281,8 +281,8 @@ void XonoticCampaignList_drawListBoxItem(entity me, float i, vector absSize, flo if(i <= me.campaignIndex) s = campaign_shortdesc[i]; // fteqcc sucks else - s = "???"; - s = draw_TextShortenToWidth(strcat("Level ", ftos(i + 1), ": ", s), me.columnNameSize, 0, me.realFontSize); + s = _("???"); + s = draw_TextShortenToWidth(sprintf(_("Level %d: %s"), i+1, s), me.columnNameSize, 0, me.realFontSize); draw_Text(me.realUpperMargin1 * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, theColor, theAlpha, 0); if(i <= me.campaignIndex) diff --git a/qcsrc/menu/xonotic/credits.c b/qcsrc/menu/xonotic/credits.c index 86609a659..daf4d22f9 100644 --- a/qcsrc/menu/xonotic/credits.c +++ b/qcsrc/menu/xonotic/credits.c @@ -30,7 +30,9 @@ void XonoticCreditsList_configureXonoticCreditsList(entity me) { me.configureXonoticListBox(me); // load the file - me.bufferIndex = buf_load("xonotic-credits.txt"); + me.bufferIndex = buf_load(language_filename("xonotic-credits.txt")); + if(me.bufferIndex < 0) + me.bufferIndex = buf_load("xonotic-credits.txt"); me.nItems = buf_getsize(me.bufferIndex); } void XonoticCreditsList_destroy(entity me) diff --git a/qcsrc/menu/xonotic/cvarlist.c b/qcsrc/menu/xonotic/cvarlist.c index 3eaf2677e..03898a3f8 100644 --- a/qcsrc/menu/xonotic/cvarlist.c +++ b/qcsrc/menu/xonotic/cvarlist.c @@ -35,6 +35,7 @@ entity makeXonoticCvarList(); void CvarList_Filter_Change(entity box, entity me); void CvarList_Value_Change(entity box, entity me); void CvarList_Revert_Click(entity btn, entity me); +void CvarList_End_Editing(entity box, entity me); #endif #ifdef IMPLEMENTATION @@ -81,15 +82,15 @@ void XonoticCvarList_setSelected(entity me, float i) t = cvar_type(me.cvarName); me.cvarType = ""; if(t & CVAR_TYPEFLAG_SAVED) - me.cvarType = strcat(me.cvarType, ", will be saved to config.cfg"); + me.cvarType = strcat(me.cvarType, ", ", _("will be saved to config.cfg")); else - me.cvarType = strcat(me.cvarType, ", will not be saved"); + me.cvarType = strcat(me.cvarType, ", ", _("will not be saved")); if(t & CVAR_TYPEFLAG_PRIVATE) - me.cvarType = strcat(me.cvarType, ", private"); + me.cvarType = strcat(me.cvarType, ", ", _("private")); if(t & CVAR_TYPEFLAG_ENGINE) - me.cvarType = strcat(me.cvarType, ", engine setting"); + me.cvarType = strcat(me.cvarType, ", ", _("engine setting")); if(t & CVAR_TYPEFLAG_READONLY) - me.cvarType = strcat(me.cvarType, ", read only"); + me.cvarType = strcat(me.cvarType, ", ", _("read only")); me.cvarType = strzone(substring(me.cvarType, 2, strlen(me.cvarType) - 2)); me.cvarNameBox.setText(me.cvarNameBox, me.cvarName); @@ -192,4 +193,9 @@ void CvarList_Revert_Click(entity btn, entity me) me.cvarValueBox.cursorPos = strlen(me.cvarDefault); } +void CvarList_End_Editing(entity box, entity me) +{ + box.parent.setFocus(box.parent, me); +} + #endif diff --git a/qcsrc/menu/xonotic/dialog.c b/qcsrc/menu/xonotic/dialog.c index 7087d83cb..f18658c71 100644 --- a/qcsrc/menu/xonotic/dialog.c +++ b/qcsrc/menu/xonotic/dialog.c @@ -3,7 +3,7 @@ CLASS(XonoticDialog) EXTENDS(Dialog) // still to be customized by user /* ATTRIB(XonoticDialog, closable, float, 1) - ATTRIB(XonoticDialog, title, string, "Form1") // ;) + ATTRIB(XonoticDialog, title, string, _("Form1")) // ;) ATTRIB(XonoticDialog, color, vector, '1 0.5 1') ATTRIB(XonoticDialog, intendedWidth, float, 0) ATTRIB(XonoticDialog, rows, float, 3) diff --git a/qcsrc/menu/xonotic/dialog_credits.c b/qcsrc/menu/xonotic/dialog_credits.c index 07c2fc4f2..e90ae4b42 100644 --- a/qcsrc/menu/xonotic/dialog_credits.c +++ b/qcsrc/menu/xonotic/dialog_credits.c @@ -2,7 +2,7 @@ CLASS(XonoticCreditsDialog) EXTENDS(XonoticDialog) METHOD(XonoticCreditsDialog, fill, void(entity)) METHOD(XonoticCreditsDialog, focusEnter, void(entity)) - ATTRIB(XonoticCreditsDialog, title, string, "Credits") + ATTRIB(XonoticCreditsDialog, title, string, _("Credits")) ATTRIB(XonoticCreditsDialog, color, vector, SKINCOLOR_DIALOG_CREDITS) ATTRIB(XonoticCreditsDialog, intendedWidth, float, SKINWIDTH_CREDITS) ATTRIB(XonoticCreditsDialog, rows, float, SKINROWS_CREDITS) @@ -18,7 +18,7 @@ void XonoticCreditsDialog_fill(entity me) me.TR(me); me.TD(me, me.rows - 1, me.columns, me.creditsList = makeXonoticCreditsList()); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_firstrun.c b/qcsrc/menu/xonotic/dialog_firstrun.c new file mode 100644 index 000000000..6568a7198 --- /dev/null +++ b/qcsrc/menu/xonotic/dialog_firstrun.c @@ -0,0 +1,72 @@ +#ifdef INTERFACE +CLASS(XonoticFirstRunDialog) EXTENDS(XonoticRootDialog) + METHOD(XonoticFirstRunDialog, fill, void(entity)) // to be overridden by user to fill the dialog with controls + ATTRIB(XonoticFirstRunDialog, title, string, _("Welcome")) + ATTRIB(XonoticFirstRunDialog, color, vector, SKINCOLOR_DIALOG_FIRSTRUN) + ATTRIB(XonoticFirstRunDialog, intendedWidth, float, 0.6) + ATTRIB(XonoticFirstRunDialog, rows, float, 15) + ATTRIB(XonoticFirstRunDialog, columns, float, 3) + ATTRIB(XonoticFirstRunDialog, name, string, "FirstRun") + ATTRIB(XonoticFirstRunDialog, playerNameLabel, entity, NULL) + ATTRIB(XonoticFirstRunDialog, playerNameLabelAlpha, float, 0) + + ATTRIB(XonoticFirstRunDialog, closable, float, 0) +ENDCLASS(XonoticFirstRunDialog) +#endif + +#ifdef IMPLEMENTATION +float CheckFirstRunButton(entity me) +{ + if(cvar_string("_cl_name") != "Player") + return 1; + if(cvar_string("prvm_language") != prvm_language) + return 1; // OK will then reopen the dialog in another language + return 0; +} + +void XonoticFirstRunDialog_fill(entity me) +{ + entity e; + entity label, box; + + me.TR(me); + me.TD(me, 2, 3, e = makeXonoticTextLabel(0, _("Welcome to Xonotic, please select your language preference and enter your player name to get started. You can change these options later through the menu system."))); + e.allowWrap = 1; + me.TR(me); + + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Text language:"))); + me.TR(me); + me.TD(me, 3, 3, e = makeXonoticLanguageList()); + e.name = "languageselector_firstrun"; + e.doubleClickCommand = "saveconfig; menu_restart; togglemenu"; + me.TR(me); + me.TR(me); + + me.TR(me); + me.TD(me, 1, 0.5, me.playerNameLabel = makeXonoticTextLabel(0, _("Name:"))); + me.playerNameLabelAlpha = me.playerNameLabel.alpha; + me.TD(me, 1, 2.5, label = makeXonoticTextLabel(0, string_null)); + label.allowCut = 1; + label.allowColors = 1; + label.alpha = 1; + me.TR(me); + me.TD(me, 1, 3.0, box = makeXonoticInputBox(1, "_cl_name")); + box.forbiddenCharacters = "\r\n\\\"$"; // don't care, isn't getting saved + box.maxLength = -127; // negative means encoded length in bytes + box.saveImmediately = 1; + label.textEntity = box; + me.TR(me); + me.TD(me, 5, 1, e = makeXonoticColorpicker(box)); + me.TD(me, 5, 2, e = makeXonoticCharmap(box)); + me.TR(me); + me.TR(me); + me.TR(me); + me.TR(me); + + // because of the language selector, this is a menu_restart! + me.gotoRC(me, me.rows - 1, 0); + me.TD(me, 1, me.columns, e = makeXonoticCommandButton(_("Save settings"), '0 0 0', "saveconfig; menu_restart; togglemenu", COMMANDBUTTON_APPLY)); + setDependentWeird(e, CheckFirstRunButton); +} +#endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_ammo.c b/qcsrc/menu/xonotic/dialog_hudpanel_ammo.c index 256dbe7df..299ea09fd 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_ammo.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_ammo.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDAmmoDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDAmmoDialog, fill, void(entity)) - ATTRIB(XonoticHUDAmmoDialog, title, string, "Ammo Panel") + ATTRIB(XonoticHUDAmmoDialog, title, string, _("Ammo Panel")) ATTRIB(XonoticHUDAmmoDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDAmmoDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDAmmoDialog, rows, float, 15) @@ -15,71 +15,18 @@ void XonoticHUDAmmoDialog_fill(entity me) { entity e; string panelname = "ammo"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_ammo", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Ammunition display:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Ammunition display:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "hud_panel_ammo_onlycurrent", "Show only current ammo type")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "hud_panel_ammo_onlycurrent", _("Show only current ammo type"))); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Align icon:")); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_ammo_iconalign", "0", "Left")); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_ammo_iconalign", "1", "Right")); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_ammo_iconalign", "0", _("Left"))); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_ammo_iconalign", "1", _("Right"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_chat.c b/qcsrc/menu/xonotic/dialog_hudpanel_chat.c index c9a4eae6e..331b0ee9a 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_chat.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_chat.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDChatDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDChatDialog, fill, void(entity)) - ATTRIB(XonoticHUDChatDialog, title, string, "Chat Panel") + ATTRIB(XonoticHUDChatDialog, title, string, _("Chat Panel")) ATTRIB(XonoticHUDChatDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDChatDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDChatDialog, rows, float, 15) @@ -15,74 +15,21 @@ void XonoticHUDChatDialog_fill(entity me) { entity e; string panelname = "chat"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_chat", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Chat entries:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Chat entries:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Chat size:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Chat size:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(6, 20, 1, "con_chatsize")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Chat lifetime:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Chat lifetime:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(5, 60, 5, "con_chattime")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_chatsound", "Chat beep sound")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_chatsound", _("Chat beep sound"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c b/qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c index 03ef106c7..b69a5869e 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDEngineInfoDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDEngineInfoDialog, fill, void(entity)) - ATTRIB(XonoticHUDEngineInfoDialog, title, string, "Engine Info Panel") + ATTRIB(XonoticHUDEngineInfoDialog, title, string, _("Engine Info Panel")) ATTRIB(XonoticHUDEngineInfoDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDEngineInfoDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDEngineInfoDialog, rows, float, 15) @@ -15,66 +15,13 @@ void XonoticHUDEngineInfoDialog_fill(entity me) { entity e; string panelname = "engineinfo"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_engineinfo", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Engine info:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Engine info:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_engineinfo_framecounter_exponentialmovingaverage", "Use an averaging algorithm for fps")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_engineinfo_framecounter_exponentialmovingaverage", _("Use an averaging algorithm for fps"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c b/qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c index 3e8a43aeb..91da57cdf 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDHealthArmorDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDHealthArmorDialog, fill, void(entity)) - ATTRIB(XonoticHUDHealthArmorDialog, title, string, "Health/Armor Panel") + ATTRIB(XonoticHUDHealthArmorDialog, title, string, _("Health/Armor Panel")) ATTRIB(XonoticHUDHealthArmorDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDHealthArmorDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDHealthArmorDialog, rows, float, 15) @@ -15,86 +15,33 @@ void XonoticHUDHealthArmorDialog_fill(entity me) { entity e; string panelname = "healtharmor"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_healtharmor", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_healtharmor_progressbar", "Enable status bar")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_healtharmor_progressbar", _("Enable status bar"))); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Status bar alignment:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Status bar alignment:"))); setDependent(e, "hud_panel_healtharmor_progressbar", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "0", "Left")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "0", _("Left"))); setDependent(e, "hud_panel_healtharmor_progressbar", 1, 1); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "1", "Right")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "1", _("Right"))); setDependent(e, "hud_panel_healtharmor_progressbar", 1, 1); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "3", "Inward")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "3", _("Inward"))); setDependent(e, "hud_panel_healtharmor_progressbar", 1, 1); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "4", "Outward")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_healtharmor_baralign", "4", _("Outward"))); setDependent(e, "hud_panel_healtharmor_progressbar", 1, 1); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Icon alignment:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Icon alignment:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "0", "Left")); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "1", "Right")); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "3", "Inward")); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "4", "Outward")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "0", _("Left"))); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "1", _("Right"))); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "3", _("Inward"))); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_healtharmor_iconalign", "4", _("Outward"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_healtharmor_flip", "Flip health and armor positions")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_healtharmor_flip", _("Flip health and armor positions"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c b/qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c index d8534a20e..44b20294b 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDInfoMessagesDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDInfoMessagesDialog, fill, void(entity)) - ATTRIB(XonoticHUDInfoMessagesDialog, title, string, "Info Messages Panel") + ATTRIB(XonoticHUDInfoMessagesDialog, title, string, _("Info Messages Panel")) ATTRIB(XonoticHUDInfoMessagesDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDInfoMessagesDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDInfoMessagesDialog, rows, float, 15) @@ -15,66 +15,13 @@ void XonoticHUDInfoMessagesDialog_fill(entity me) { entity e; string panelname = "infomessages"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_infomessages", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Info messages:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Info messages:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_infomessages_flip", "Flip align")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_infomessages_flip", _("Flip align"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_modicons.c b/qcsrc/menu/xonotic/dialog_hudpanel_modicons.c index d60a72473..fd5d233dc 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_modicons.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_modicons.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDModIconsDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDModIconsDialog, fill, void(entity)) - ATTRIB(XonoticHUDModIconsDialog, title, string, "Mod Icons Panel") + ATTRIB(XonoticHUDModIconsDialog, title, string, _("Mod Icons Panel")) ATTRIB(XonoticHUDModIconsDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDModIconsDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDModIconsDialog, rows, float, 15) @@ -15,61 +15,7 @@ void XonoticHUDModIconsDialog_fill(entity me) { entity e; string panelname = "modicons"; - float i; - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_modicons", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); + DIALOG_HUDPANEL_COMMON(); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_notification.c b/qcsrc/menu/xonotic/dialog_hudpanel_notification.c index 3eeaff284..1f26ab34a 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_notification.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_notification.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDNotificationDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDNotificationDialog, fill, void(entity)) - ATTRIB(XonoticHUDNotificationDialog, title, string, "Notification Panel") + ATTRIB(XonoticHUDNotificationDialog, title, string, _("Notification Panel")) ATTRIB(XonoticHUDNotificationDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDNotificationDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDNotificationDialog, rows, float, 15) @@ -15,77 +15,24 @@ void XonoticHUDNotificationDialog_fill(entity me) { entity e; string panelname = "notify"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_healtharmor", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Notifications:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Notifications:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_notify_print", "Also print notifications to the console")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_notify_print", _("Also print notifications to the console"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_notify_flip", "Flip notify order")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_notify_flip", _("Flip notify order"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Entry lifetime:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Entry lifetime:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(3, 15, 1, "hud_panel_notify_time")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Entry fadetime:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Entry fadetime:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(0.5, 5, 0.5, "hud_panel_notify_fadetime")); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_powerups.c b/qcsrc/menu/xonotic/dialog_hudpanel_powerups.c index 5d4e14c08..e63e78552 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_powerups.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_powerups.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDPowerupsDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDPowerupsDialog, fill, void(entity)) - ATTRIB(XonoticHUDPowerupsDialog, title, string, "Powerups Panel") + ATTRIB(XonoticHUDPowerupsDialog, title, string, _("Powerups Panel")) ATTRIB(XonoticHUDPowerupsDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDPowerupsDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDPowerupsDialog, rows, float, 15) @@ -15,86 +15,33 @@ void XonoticHUDPowerupsDialog_fill(entity me) { entity e; string panelname = "powerups"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_powerups", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_powerups_progressbar", "Enable status bar")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_powerups_progressbar", _("Enable status bar"))); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Status bar alignment:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Status bar alignment:"))); setDependent(e, "hud_panel_powerups_progressbar", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "0", "Left")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "0", _("Left"))); setDependent(e, "hud_panel_powerups_progressbar", 1, 1); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "1", "Right")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "1", _("Right"))); setDependent(e, "hud_panel_powerups_progressbar", 1, 1); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "3", "Inward")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "3", _("Inward"))); setDependent(e, "hud_panel_powerups_progressbar", 1, 1); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "4", "Outward")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(2, "hud_panel_powerups_baralign", "4", _("Outward"))); setDependent(e, "hud_panel_powerups_progressbar", 1, 1); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Icon alignment:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Icon alignment:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "0", "Left")); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "1", "Right")); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "3", "Inward")); - me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "4", "Outward")); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "0", _("Left"))); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "1", _("Right"))); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "3", _("Inward"))); + me.TD(me, 1, 0.95, e = makeXonoticRadioButton(3, "hud_panel_powerups_iconalign", "4", _("Outward"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_powerups_flip", "Flip strength and shield positions")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_powerups_flip", _("Flip strength and shield positions"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c b/qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c index 30f6bfc1f..b01ec1c98 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDPressedKeysDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDPressedKeysDialog, fill, void(entity)) - ATTRIB(XonoticHUDPressedKeysDialog, title, string, "Pressed Keys Panel") + ATTRIB(XonoticHUDPressedKeysDialog, title, string, _("Pressed Keys Panel")) ATTRIB(XonoticHUDPressedKeysDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDPressedKeysDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDPressedKeysDialog, rows, float, 15) @@ -15,69 +15,19 @@ void XonoticHUDPressedKeysDialog_fill(entity me) { entity e; string panelname = "pressedkeys"; - float i; me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextSlider("hud_panel_pressedkeys")); - e.addValue(e, "Panel disabled", "0"); - e.addValue(e, "Panel enabled when spectating", "1"); - e.addValue(e, "Panel always enabled", "2"); + me.TD(me, 1, 4, e = makeXonoticTextSlider("hud_panel_pressedkeys")); + e.addValue(e, _("Panel disabled"), "0"); + e.addValue(e, _("Panel enabled when spectating"), "1"); + e.addValue(e, _("Panel always enabled"), "2"); e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); + + DIALOG_HUDPANEL_COMMON_NOTOGGLE(); + me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Forced aspect:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Forced aspect:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(0.2, 4, 0.1, "hud_panel_pressedkeys_aspect")); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c b/qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c index 35fdc55f3..015979b21 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDRaceTimerDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDRaceTimerDialog, fill, void(entity)) - ATTRIB(XonoticHUDRaceTimerDialog, title, string, "Race Timer Panel") + ATTRIB(XonoticHUDRaceTimerDialog, title, string, _("Race Timer Panel")) ATTRIB(XonoticHUDRaceTimerDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDRaceTimerDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDRaceTimerDialog, rows, float, 15) @@ -15,61 +15,7 @@ void XonoticHUDRaceTimerDialog_fill(entity me) { entity e; string panelname = "racetimer"; - float i; - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_racetimer", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); + DIALOG_HUDPANEL_COMMON(); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_radar.c b/qcsrc/menu/xonotic/dialog_hudpanel_radar.c index d1202846e..479c2bb33 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_radar.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_radar.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDRadarDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDRadarDialog, fill, void(entity)) - ATTRIB(XonoticHUDRadarDialog, title, string, "Radar Panel") + ATTRIB(XonoticHUDRadarDialog, title, string, _("Radar Panel")) ATTRIB(XonoticHUDRadarDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDRadarDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDRadarDialog, rows, float, 15) @@ -15,94 +15,44 @@ void XonoticHUDRadarDialog_fill(entity me) { entity e; string panelname = "radar"; - float i; me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextSlider("hud_panel_radar")); - e.addValue(e, "Panel disabled", "0"); - e.addValue(e, "Panel enabled in teamgames", "1"); - e.addValue(e, "Panel always enabled", "2"); + me.TD(me, 1, 4, e = makeXonoticTextSlider("hud_panel_radar")); + e.addValue(e, _("Panel disabled"), "0"); + e.addValue(e, _("Panel enabled in teamgames"), "1"); + e.addValue(e, _("Panel always enabled"), "2"); e.configureXonoticTextSliderValues(e); + + DIALOG_HUDPANEL_COMMON_NOTOGGLE(); + me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Radar:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Radar:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Alpha:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(0.1, 1, 0.1, "hud_panel_radar_foreground_alpha")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Rotation:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Rotation:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_panel_radar_rotation")); - e.addValue(e, "Forward", "0"); - e.addValue(e, "West", "1"); - e.addValue(e, "South", "2"); - e.addValue(e, "East", "3"); - e.addValue(e, "North", "4"); + e.addValue(e, _("Forward"), "0"); + e.addValue(e, _("West"), "1"); + e.addValue(e, _("South"), "2"); + e.addValue(e, _("East"), "3"); + e.addValue(e, _("North"), "4"); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Scale:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Scale:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(1024, 8192, 512, "hud_panel_radar_scale")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Zoom mode:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider("hud_panel_radar_zoommode")); - e.addValue(e, "Zoomed in", "0"); - e.addValue(e, "Zoomed out", "1"); - e.addValue(e, "Always zoomed", "2"); - e.addValue(e, "Never zoomed", "3"); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Zoom mode:"))); + me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_panel_radar_zoommode")); + e.addValue(e, _("Zoomed in"), "0"); + e.addValue(e, _("Zoomed out"), "1"); + e.addValue(e, _("Always zoomed"), "2"); + e.addValue(e, _("Never zoomed"), "3"); e.configureXonoticTextSliderValues(e); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_score.c b/qcsrc/menu/xonotic/dialog_hudpanel_score.c index fc51921e2..ccb8d9528 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_score.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_score.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDScoreDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDScoreDialog, fill, void(entity)) - ATTRIB(XonoticHUDScoreDialog, title, string, "Score Panel") + ATTRIB(XonoticHUDScoreDialog, title, string, _("Score Panel")) ATTRIB(XonoticHUDScoreDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDScoreDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDScoreDialog, rows, float, 15) @@ -15,61 +15,7 @@ void XonoticHUDScoreDialog_fill(entity me) { entity e; string panelname = "score"; - float i; - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_score", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); + DIALOG_HUDPANEL_COMMON(); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_timer.c b/qcsrc/menu/xonotic/dialog_hudpanel_timer.c index 96dc4aa69..5f2fc5dd7 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_timer.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_timer.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDTimerDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDTimerDialog, fill, void(entity)) - ATTRIB(XonoticHUDTimerDialog, title, string, "Timer Panel") + ATTRIB(XonoticHUDTimerDialog, title, string, _("Timer Panel")) ATTRIB(XonoticHUDTimerDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDTimerDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDTimerDialog, rows, float, 15) @@ -15,66 +15,13 @@ void XonoticHUDTimerDialog_fill(entity me) { entity e; string panelname = "timer"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_timer", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Timer:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Timer:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_timer_increment", "Show elapsed time")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_timer_increment", _("Show elapsed time"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_vote.c b/qcsrc/menu/xonotic/dialog_hudpanel_vote.c index b5f5b6e27..d3d35c22a 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_vote.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_vote.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDVoteDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDVoteDialog, fill, void(entity)) - ATTRIB(XonoticHUDVoteDialog, title, string, "Vote Panel") + ATTRIB(XonoticHUDVoteDialog, title, string, _("Vote Panel")) ATTRIB(XonoticHUDVoteDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDVoteDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDVoteDialog, rows, float, 15) @@ -15,64 +15,11 @@ void XonoticHUDVoteDialog_fill(entity me) { entity e; string panelname = "vote"; - float i; + + DIALOG_HUDPANEL_COMMON(); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_vote", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Alpha after voting:")); + me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Alpha after voting:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(0.1, 1, 0.1, "hud_panel_vote_alreadyvoted_alpha")); } #endif diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_weapons.c b/qcsrc/menu/xonotic/dialog_hudpanel_weapons.c index ad3d08041..394ec3323 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_weapons.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_weapons.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDWeaponsDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDWeaponsDialog, fill, void(entity)) - ATTRIB(XonoticHUDWeaponsDialog, title, string, "Weapons Panel") + ATTRIB(XonoticHUDWeaponsDialog, title, string, _("Weapons Panel")) ATTRIB(XonoticHUDWeaponsDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDWeaponsDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDWeaponsDialog, rows, float, 17) @@ -17,98 +17,46 @@ void XonoticHUDWeaponsDialog_fill(entity me) string panelname = "weapons"; float i; - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_panel_weapons", "Enable panel")); - me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); - setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBoxString("", cvar_string("hud_panel_bg_color"), strzone(strcat("hud_panel_", panelname, "_bg_color")), "Use default")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); - e.addValue(e, "Default", ""); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team Color:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); - e.addValue(e, "Default", ""); - e.addValue(e, "Disable", "0"); - for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); - me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); - e.addValue(e, "Default", ""); - for(i = 0; i <= 10; ++i) - e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); - e.configureXonoticTextSliderValues(e); + DIALOG_HUDPANEL_COMMON(); + me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Fade out after:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Fade out after:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_timeout")))); - e.addValue(e, "Never", "0"); + e.addValue(e, _("Never"), "0"); for(i = 1; i <= 10; ++i) - e.addValue(e, strzone(strcat(ftos_decimals(i, 0), "s")), strzone(ftos(i))); + e.addValue(e, strzone(sprintf(_("%ds"), i)), strzone(ftos(i))); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Fade effect:")); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "0", "None")); + me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Fade effect:"))); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "0", ZCTX(_("EF^None")))); setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_timeout")), "0"); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "1", "Slide")); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "1", _("Slide"))); setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_timeout")), "0"); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "2", "Alpha")); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "2", _("Alpha"))); setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_timeout")), "0"); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Weapon icons:")); + me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Weapon icons:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Show weapon ID as:")); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "0", "None")); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "1", "Number")); - me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "2", "Bind")); + me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Show weapon ID as:"))); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "0", ZCTX(_("SHOWAS^None")))); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "1", _("Number"))); + me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "2", _("Bind"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "hud_panel_weapons_accuracy", "Show Accuracy")); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "hud_panel_weapons_ammo", "Show Ammo")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "hud_panel_weapons_accuracy", _("Show Accuracy"))); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "hud_panel_weapons_ammo", _("Show Ammo"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Ammo bar color:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Ammo bar color:"))); me.TD(me, 2, 2.4, e = makeXonoticColorpickerString("hud_panel_weapons_ammo_color", "hud_panel_weapons_ammo_color")); setDependent(e, "hud_panel_weapons_ammo", 1, 1); me.TR(me); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Ammo bar alpha:")); + me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Ammo bar alpha:"))); me.TD(me, 1, 2.6, e = makeXonoticSlider(0.1, 1, 0.1, "hud_panel_weapons_ammo_alpha")); setDependent(e, "hud_panel_weapons_ammo", 1, 1); } diff --git a/qcsrc/menu/xonotic/dialog_hudsetup_exit.c b/qcsrc/menu/xonotic/dialog_hudsetup_exit.c index 751b3cf95..e449fa5d4 100644 --- a/qcsrc/menu/xonotic/dialog_hudsetup_exit.c +++ b/qcsrc/menu/xonotic/dialog_hudsetup_exit.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticHUDExitDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticHUDExitDialog, fill, void(entity)) - ATTRIB(XonoticHUDExitDialog, title, string, "Panel HUD Setup") + ATTRIB(XonoticHUDExitDialog, title, string, _("Panel HUD Setup")) ATTRIB(XonoticHUDExitDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticHUDExitDialog, intendedWidth, float, 0.4) ATTRIB(XonoticHUDExitDialog, rows, float, 18) @@ -18,95 +18,95 @@ void XonoticHUDExitDialog_fill(entity me) float i; me.TR(me); - me.TD(me, 1, 4, makeXonoticTextLabel(0, "Panel background defaults:")); + me.TD(me, 1, 4, makeXonoticTextLabel(0, _("Panel background defaults:"))); me.TR(me); me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:")); - me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_bg")))); - e.addValue(e, "Disable", "0"); - e.addValue(e, "border_default", "border_default"); + me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_bg")))); + e.addValue(e, _("Disable"), "0"); + e.addValue(e, "border_default", "border_default"); // this is a file name! e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString("hud_panel_bg_color", "hud_panel_bg_color")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Color:"))); + me.TD(me, 2, 2.6, e = makeXonoticColorpickerString("hud_panel_bg_color", "hud_panel_bg_color")); me.TR(me); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Border size:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Border size:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_panel_bg_border")); - e.addValue(e, "Disable", "0"); + e.addValue(e, _("Disable"), "0"); for(i = 1; i <= 10; ++i) e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Alpha:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_panel_bg_alpha")); for(i = 1; i <= 10; ++i) e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team color:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Team color:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_panel_bg_color_team")); - e.addValue(e, "Disable", "0"); + e.addValue(e, _("Disable"), "0"); for(i = 1; i <= 10; ++i) e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.4); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", "Test the team color in HUD configure mode")); + me.TD(me, 1, 3.6, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", _("Test team color in configure mode"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Padding:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Padding:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_panel_bg_padding")); for(i = 0; i <= 10; ++i) e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "HUD Dock:")); + me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("HUD Dock:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_dock")); - e.addValue(e, "Disable", "0"); - e.addValue(e, "Small", "dock_small"); - e.addValue(e, "Medium", "dock_medium"); - e.addValue(e, "Large", "dock_large"); + e.addValue(e, ZCTX(_("DOCK^Disabled")), "0"); + e.addValue(e, ZCTX(_("DOCK^Small")), "dock_small"); + e.addValue(e, ZCTX(_("DOCK^Medium")), "dock_medium"); + e.addValue(e, ZCTX(_("DOCK^Large")), "dock_large"); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:")); - me.TD(me, 2, 2.4, e = makeXonoticColorpickerString("hud_dock_color", "hud_dock_color")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Color:"))); + me.TD(me, 2, 2.6, e = makeXonoticColorpickerString("hud_dock_color", "hud_dock_color")); me.TR(me); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Alpha:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_dock_alpha")); for(i = 1; i <= 10; ++i) e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team color:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Team color:"))); me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_dock_color_team")); - e.addValue(e, "Disable", "0"); + e.addValue(e, _("Disable"), "0"); for(i = 1; i <= 10; ++i) e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 4, makeXonoticTextLabel(0, "Grid settings:")); + me.TD(me, 1, 4, makeXonoticTextLabel(0, _("Grid settings:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_configure_grid", "Snap panels to grid")); + me.TD(me, 1, 3.8, e = makeXonoticCheckBox(0, "hud_configure_grid", _("Snap panels to grid"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Grid size:")); - me.TD(me, 1, 0.2, e = makeXonoticTextLabel(0, "X:")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Grid size:"))); + me.TD(me, 1, 0.2, e = makeXonoticTextLabel(0, _("X:"))); me.TD(me, 1, 1.1, e = makeXonoticTextSlider("hud_configure_grid_xsize")); for(i = 1; i <= 14; ++i) e.addValue(e, strzone(ftos_decimals(i/200, 3)), strzone(ftos(i/200))); e.configureXonoticTextSliderValues(e); setDependent(e, "hud_configure_grid", 1, 1); - me.TD(me, 1, 0.2, e = makeXonoticTextLabel(0, "Y:")); + me.TD(me, 1, 0.2, e = makeXonoticTextLabel(0, _("Y:"))); me.TD(me, 1, 1.1, e = makeXonoticTextSlider("hud_configure_grid_ysize")); for(i = 1; i <= 14; ++i) e.addValue(e, strzone(ftos_decimals(i/200, 3)), strzone(ftos(i/200))); @@ -114,6 +114,6 @@ void XonoticHUDExitDialog_fill(entity me) setDependent(e, "hud_configure_grid", 1, 1); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticCommandButton("Exit setup", '0 0 0', "_hud_configure 0", 1)); + me.TD(me, 1, me.columns, e = makeXonoticCommandButton(_("Exit setup"), '0 0 0', "_hud_configure 0", 1)); } #endif diff --git a/qcsrc/menu/xonotic/dialog_multiplayer.c b/qcsrc/menu/xonotic/dialog_multiplayer.c index e755710c5..2492581d0 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticMultiplayerDialog) EXTENDS(XonoticDialog) METHOD(XonoticMultiplayerDialog, fill, void(entity)) - ATTRIB(XonoticMultiplayerDialog, title, string, "Multiplayer") + ATTRIB(XonoticMultiplayerDialog, title, string, _("Multiplayer")) ATTRIB(XonoticMultiplayerDialog, color, vector, SKINCOLOR_DIALOG_MULTIPLAYER) ATTRIB(XonoticMultiplayerDialog, intendedWidth, float, 0.96) ATTRIB(XonoticMultiplayerDialog, rows, float, 24) @@ -15,14 +15,10 @@ void XonoticMultiplayerDialog_fill(entity me) entity mc, e; mc = makeXonoticTabController(me.rows - 2); me.TR(me); - me.TD(me, 1, 1, e = mc.makeTabButton(mc, "Servers", makeXonoticServerListTab())); - setDependentStringNotEqual(e, "_cl_name", "Player"); - me.TD(me, 1, 1, e = mc.makeTabButton(mc, "Create", makeXonoticServerCreateTab())); - setDependentStringNotEqual(e, "_cl_name", "Player"); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Demos", makeXonoticDemoBrowserTab())); - me.TD(me, 1, 1, e = mc.makeTabButton(mc, "Player Setup", makeXonoticPlayerSettingsTab())); - if(cvar_string("_cl_name") == "Player") - e.onClick(e, e.onClickEntity); // lol animation + me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Servers"), makeXonoticServerListTab())); + me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Create"), makeXonoticServerCreateTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Demos"), makeXonoticDemoBrowserTab())); + me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Player Setup"), makeXonoticPlayerSettingsTab())); me.TR(me); me.TR(me); diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create.c b/qcsrc/menu/xonotic/dialog_multiplayer_create.c index 416a85419..2d9689f64 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create.c @@ -2,7 +2,7 @@ CLASS(XonoticServerCreateTab) EXTENDS(XonoticTab) METHOD(XonoticServerCreateTab, fill, void(entity)) METHOD(XonoticServerCreateTab, gameTypeChangeNotify, void(entity)) - ATTRIB(XonoticServerCreateTab, title, string, "Create") + ATTRIB(XonoticServerCreateTab, title, string, _("Create")) ATTRIB(XonoticServerCreateTab, intendedWidth, float, 0.9) ATTRIB(XonoticServerCreateTab, rows, float, 22) ATTRIB(XonoticServerCreateTab, columns, float, 6.5) @@ -32,148 +32,92 @@ void XonoticServerCreateTab_fill(entity me) float n; me.TR(me); - n = 6; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_dm", "DM")); - e0 = e; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_lms", "LMS")); - if(e.checked) e0 = NULL; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_arena", "Arena")); - if(e.checked) e0 = NULL; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_keepaway", "Keepaway")); - if(e.checked) e0 = NULL; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_race", "Race")); - if(e.checked) e0 = NULL; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_cts", "Race CTS")); - if(e.checked) e0 = NULL; - me.TR(me); - n = 9; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_tdm", "TDM")); - if(e.checked) e0 = NULL; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_ctf", "CTF")); - if(e.checked) e0 = NULL; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_ca", "CA")); - if(e.checked) e0 = NULL; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_freezetag", "Freeze Tag")); - if(e.checked) e0 = NULL; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_domination", "Domination")); - if(e.checked) e0 = NULL; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_keyhunt", "Key Hunt")); - if(e.checked) e0 = NULL; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_assault", "Assault")); - if(e.checked) e0 = NULL; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_onslaught", "Onslaught")); - if(e.checked) e0 = NULL; - me.TD(me, 1, me.columns / n, e = makeXonoticGametypeButton(1, "g_nexball", "Nexball")); - if(e.checked) e0 = NULL; - if(e0) - { - //print("NO CHECK\n"); - e0.setChecked(e0, 1); - } + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Game type:"))); + me.TR(me); + me.TD(me, 9, 3, e = makeXonoticGametypeList()); + me.TR(me); me.TR(me); me.TR(me); - me.mapListBox = makeXonoticMapList(); - me.TD(me, 1, 3, e = makeXonoticTextLabel(0, "Map list:")); - makeCallback(e, me.mapListBox, me.mapListBox.refilterCallback); me.TR(me); - me.TD(me, me.rows - 7, 3, me.mapListBox); - me.gotoRC(me, me.rows - 3, 0); - me.TDempty(me, 0.5); - me.TD(me, 1, 1, e = makeXonoticButton("All", '0 0 0')); - e.onClick = MapList_All; - e.onClickEntity = me.mapListBox; - me.TD(me, 1, 1, e = makeXonoticButton("None", '0 0 0')); - e.onClick = MapList_None; - e.onClickEntity = me.mapListBox; - me.TDempty(me, 0.5); - - me.gotoRC(me, 3, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 3, e = makeXonoticTextLabel(0, "Match settings:")); + me.TR(me); + me.TR(me); + me.TR(me); + me.TR(me); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Match settings:"))); me.TR(me); me.sliderTimelimit = makeXonoticSlider(1.0, 60.0, 0.5, "timelimit_override"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, me.sliderTimelimit, "Time limit:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, me.sliderTimelimit, _("Time limit:"))); me.TD(me, 1, 2, me.sliderTimelimit); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8, e = makeXonoticSliderCheckBox(-1, 0, me.sliderTimelimit, "Use map specified default")); + me.TD(me, 1, 2.8, e = makeXonoticSliderCheckBox(-1, 0, me.sliderTimelimit, _("Use map specified default"))); me.TR(me); me.sliderFraglimit = makeXonoticSlider(1.0, 2000.0, 5, "fraglimit_override"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, me.sliderFraglimit, "Point limit:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, me.sliderFraglimit, _("Point limit:"))); me.checkboxFraglimit = e; me.TD(me, 1, 2, me.sliderFraglimit); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8, e = makeXonoticSliderCheckBox(-1, 0, me.sliderFraglimit, "Use map specified default")); + me.TD(me, 1, 2.8, e = makeXonoticSliderCheckBox(-1, 0, me.sliderFraglimit, _("Use map specified default"))); me.checkboxFraglimitMapinfo = e; me.TR(me); - me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Player slots:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Player slots:"))); me.TD(me, 1, 2, makeXonoticSlider(1, 32, 1, "menu_maxplayers")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Number of bots:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Number of bots:"))); me.TD(me, 1, 2, makeXonoticSlider(0, 9, 1, "bot_number")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Bot skill:")); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Bot skill:"))); setDependent(e, "bot_number", 0, -1); me.TD(me, 1, 2, e = makeXonoticTextSlider("skill")); - e.addValue(e, "Botlike", "0"); - e.addValue(e, "Beginner", "1"); - e.addValue(e, "You will win", "2"); - e.addValue(e, "You can win", "3"); - e.addValue(e, "You might win", "4"); - e.addValue(e, "Advanced", "5"); - e.addValue(e, "Expert", "6"); - e.addValue(e, "Pro", "7"); - e.addValue(e, "Assassin", "8"); - e.addValue(e, "Unhuman", "9"); - e.addValue(e, "Godlike", "10"); + e.addValue(e, _("Botlike"), "0"); + e.addValue(e, _("Beginner"), "1"); + e.addValue(e, _("You will win"), "2"); + e.addValue(e, _("You can win"), "3"); + e.addValue(e, _("You might win"), "4"); + e.addValue(e, _("Advanced"), "5"); + e.addValue(e, _("Expert"), "6"); + e.addValue(e, _("Pro"), "7"); + e.addValue(e, _("Assassin"), "8"); + e.addValue(e, _("Unhuman"), "9"); + e.addValue(e, _("Godlike"), "10"); e.configureXonoticTextSliderValues(e); setDependent(e, "bot_number", 0, -1); me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Bot names:")); - me.TD(me, 1, 0.7, e = makeXonoticInputBox(1, "bot_prefix")); - setDependent(e, "bot_number", 0, -1); - me.TD(me, 1, 0.6, e = makeXonoticTextLabel(0.5, "Shadow")); - setDependent(e, "bot_number", 0, -1); - me.TD(me, 1, 0.7, e = makeXonoticInputBox(1, "bot_suffix")); - setDependent(e, "bot_number", 0, -1); - me.TR(me); - me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Map voting:")); - me.TD(me, 1, 2, e = makeXonoticTextSlider("g_maplist_votable")); - e.addValue(e, "No voting", "0"); - e.addValue(e, "2 choices", "2"); - e.addValue(e, "3 choices", "3"); - e.addValue(e, "4 choices", "4"); - e.addValue(e, "5 choices", "5"); - e.addValue(e, "6 choices", "6"); - e.addValue(e, "7 choices", "7"); - e.addValue(e, "8 choices", "8"); - e.addValue(e, "9 choices", "9"); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(0.5, 0, "sv_vote_simple_majority_factor", "Simple majority wins vcall")); - me.TR(me); - me.TR(me); - me.TDempty(me, 0.5); - me.TD(me, 1, 2, e = makeXonoticButton("Advanced settings...", '0 0 0')); - e.onClick = DialogOpenButton_Click; - e.onClickEntity = main.advancedDialog; - main.advancedDialog.refilterEntity = me.mapListBox; - me.TR(me); - me.TR(me); - me.TD(me, 1, 1, e = makeXonoticButton("Mutators...", '0 0 0')); + me.TD(me, 1, 1, e = makeXonoticButton(_("Mutators..."), '0 0 0')); e.onClick = DialogOpenButton_Click; e.onClickEntity = main.mutatorsDialog; main.mutatorsDialog.refilterEntity = me.mapListBox; me.TD(me, 1, 2, e0 = makeXonoticTextLabel(0, string_null)); e0.textEntity = main.mutatorsDialog; e0.allowCut = 1; + me.TR(me); + me.TDempty(me, 0.5); + me.TD(me, 1, 2, e = makeXonoticButton(_("Advanced settings..."), '0 0 0')); + e.onClick = DialogOpenButton_Click; + e.onClickEntity = main.advancedDialog; + main.advancedDialog.refilterEntity = me.mapListBox; + + me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); + me.mapListBox = makeXonoticMapList(); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Map list:"))); + makeCallback(e, me.mapListBox, me.mapListBox.refilterCallback); + me.TR(me); + me.TD(me, me.rows - 4, 3, me.mapListBox); + me.gotoRC(me, me.rows - 3, 3.5); + me.TDempty(me, 0.25); + me.TD(me, 1, 1.125, e = makeXonoticButton(_("Select all"), '0 0 0')); + e.onClick = MapList_All; + e.onClickEntity = me.mapListBox; + me.TD(me, 1, 1.125, e = makeXonoticButton(_("Select none"), '0 0 0')); + e.onClick = MapList_None; + e.onClickEntity = me.mapListBox; + me.TDempty(me, 0.25); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("Start Multiplayer!", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("Start Multiplayer!"), '0 0 0')); e.onClick = MapList_LoadMap; e.onClickEntity = me.mapListBox; me.mapListBox.startButton = e; @@ -208,17 +152,17 @@ void XonoticServerCreateTab_gameTypeChangeNotify(entity me) l2 = me.checkboxFraglimitMapinfo; switch(gt) { - case MAPINFO_TYPE_CTF: GameType_ConfigureSliders(e, l, l2, "Capture limit:", 1, 20, 1, "capturelimit_override"); break; - case MAPINFO_TYPE_DOMINATION: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, "g_domination_point_limit"); break; - case MAPINFO_TYPE_KEYHUNT: GameType_ConfigureSliders(e, l, l2, "Point limit:", 200, 1500, 50, "g_keyhunt_point_limit"); break; - case MAPINFO_TYPE_RUNEMATCH: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, "g_runematch_point_limit"); break; - case MAPINFO_TYPE_LMS: GameType_ConfigureSliders(e, l, l2, "Lives:", 3, 50, 1, "g_lms_lives_override"); break; - case MAPINFO_TYPE_RACE: GameType_ConfigureSliders(e, l, l2, "Laps:", 1, 25, 1, "g_race_laps_limit"); break; - case MAPINFO_TYPE_NEXBALL: GameType_ConfigureSliders(e, l, l2, "Goals:", 1, 50, 1, "g_nexball_goallimit"); break; - case MAPINFO_TYPE_ASSAULT: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break; - case MAPINFO_TYPE_ONSLAUGHT: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break; - case MAPINFO_TYPE_CTS: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break; - default: GameType_ConfigureSliders(e, l, l2, "Frag limit:", 5, 100, 5, "fraglimit_override"); break; + case MAPINFO_TYPE_CTF: GameType_ConfigureSliders(e, l, l2, _("Capture limit:"), 1, 20, 1, "capturelimit_override"); break; + case MAPINFO_TYPE_DOMINATION: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, "g_domination_point_limit"); break; + case MAPINFO_TYPE_KEYHUNT: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 200, 1500, 50, "g_keyhunt_point_limit"); break; + case MAPINFO_TYPE_RUNEMATCH: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, "g_runematch_point_limit"); break; + case MAPINFO_TYPE_LMS: GameType_ConfigureSliders(e, l, l2, _("Lives:"), 3, 50, 1, "g_lms_lives_override"); break; + case MAPINFO_TYPE_RACE: GameType_ConfigureSliders(e, l, l2, _("Laps:"), 1, 25, 1, "g_race_laps_limit"); break; + case MAPINFO_TYPE_NEXBALL: GameType_ConfigureSliders(e, l, l2, _("Goals:"), 1, 50, 1, "g_nexball_goallimit"); break; + case MAPINFO_TYPE_ASSAULT: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, ""); break; + case MAPINFO_TYPE_ONSLAUGHT: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, ""); break; + case MAPINFO_TYPE_CTS: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, ""); break; + default: GameType_ConfigureSliders(e, l, l2, _("Frag limit:"), 5, 100, 5, "fraglimit_override"); break; } me.mapListBox.refilter(me.mapListBox); } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c b/qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c index 417cfa610..226f346b6 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c @@ -3,10 +3,10 @@ CLASS(XonoticAdvancedDialog) EXTENDS(XonoticDialog) METHOD(XonoticAdvancedDialog, fill, void(entity)) METHOD(XonoticAdvancedDialog, showNotify, void(entity)) METHOD(XonoticAdvancedDialog, close, void(entity)) - ATTRIB(XonoticAdvancedDialog, title, string, "Advanced server settings") + ATTRIB(XonoticAdvancedDialog, title, string, _("Advanced server settings")) ATTRIB(XonoticAdvancedDialog, color, vector, SKINCOLOR_DIALOG_ADVANCED) ATTRIB(XonoticAdvancedDialog, intendedWidth, float, 0.5) - ATTRIB(XonoticAdvancedDialog, rows, float, 12) + ATTRIB(XonoticAdvancedDialog, rows, float, 17) ATTRIB(XonoticAdvancedDialog, columns, float, 3) ATTRIB(XonoticAdvancedDialog, refilterEntity, entity, NULL) ENDCLASS(XonoticAdvancedDialog) @@ -22,42 +22,64 @@ void XonoticAdvancedDialog_fill(entity me) { entity e; me.TR(me); - me.TD(me, 1, 1.2, makeXonoticTextLabel(0, "Game settings:")); + me.TD(me, 1, 3, makeXonoticTextLabel(0, _("Game settings:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "sv_spectate", "Allow spectating")); + me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "sv_spectate", _("Allow spectating"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Spawn shield:")); - me.TD(me, 1, 1.7, e = makeXonoticSlider(0, 15, 0.5, "g_spawnshieldtime")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Spawn shield:"))); + me.TD(me, 1, 1.6, e = makeXonoticSlider(0, 15, 0.5, "g_spawnshieldtime")); me.TR(me); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Game speed:")); - me.TD(me, 1, 1.7, e = makeXonoticSlider(0.5, 2.0, 0.1, "slowmo")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Game speed:"))); + me.TD(me, 1, 1.6, e = makeXonoticSlider(0.5, 2.0, 0.1, "slowmo")); me.TR(me); me.TR(me); - me.TD(me, 1, 1.2, makeXonoticTextLabel(0, "Teamplay settings:")); + me.TD(me, 1, 3, makeXonoticTextLabel(0, _("Teamplay settings:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Friendly fire scale:")); - me.TD(me, 1, 1.7, e = makeXonoticSlider(0, 1.0, 0.05, "g_friendlyfire")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Friendly fire scale:"))); + me.TD(me, 1, 1.6, e = makeXonoticSlider(0, 1.0, 0.05, "g_friendlyfire")); + me.TR(me); + me.TDempty(me, 0.4); + me.TD(me, 1, 2.6, e = makeXonoticCheckBox(0, "g_friendlyfire_virtual", _("Virtual friendly fire (effect only)"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Friendly fire penalty:")); - me.TD(me, 1, 1.7, e = makeXonoticSlider(0, 1.0, 0.05, "g_mirrordamage")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Friendly fire penalty:"))); + me.TD(me, 1, 1.6, e = makeXonoticSlider(0, 1.0, 0.05, "g_mirrordamage")); + me.TR(me); + me.TDempty(me, 0.4); + me.TD(me, 1, 2.6, e = makeXonoticCheckBox(0, "g_mirrordamage_virtual", _("Virtual penalty (effect only)"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Teams:")); - me.TD(me, 1, 1.7, e = makeXonoticTextSlider("g_tdm_teams_override g_domination_teams_override g_keyhunt_teams_override")); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Teams:"))); + me.TD(me, 1, 1.6, e = makeXonoticTextSlider("g_tdm_teams_override g_domination_teams_override g_keyhunt_teams_override")); e.addValue(e, "Default", "0"); e.addValue(e, "2 teams", "2"); e.addValue(e, "3 teams", "3"); e.addValue(e, "4 teams", "4"); e.configureXonoticTextSliderValues(e); + me.TR(me); + me.TR(me); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Map voting:"))); + me.TD(me, 1, 2, e = makeXonoticTextSlider("g_maplist_votable")); + e.addValue(e, _("No voting"), "0"); + e.addValue(e, _("2 choices"), "2"); + e.addValue(e, _("3 choices"), "3"); + e.addValue(e, _("4 choices"), "4"); + e.addValue(e, _("5 choices"), "5"); + e.addValue(e, _("6 choices"), "6"); + e.addValue(e, _("7 choices"), "7"); + e.addValue(e, _("8 choices"), "8"); + e.addValue(e, _("9 choices"), "9"); + e.configureXonoticTextSliderValues(e); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(0.5, 0, "sv_vote_simple_majority_factor", _("Simple majority wins vcall"))); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c b/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c index f3f620d73..677161b63 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c @@ -2,10 +2,10 @@ CLASS(XonoticMapInfoDialog) EXTENDS(XonoticDialog) METHOD(XonoticMapInfoDialog, fill, void(entity)) METHOD(XonoticMapInfoDialog, loadMapInfo, void(entity, float, entity)) - ATTRIB(XonoticMapInfoDialog, title, string, "Map Information") + ATTRIB(XonoticMapInfoDialog, title, string, _("Map Information")) ATTRIB(XonoticMapInfoDialog, color, vector, SKINCOLOR_DIALOG_MAPINFO) - ATTRIB(XonoticMapInfoDialog, intendedWidth, float, 0.85) - ATTRIB(XonoticMapInfoDialog, rows, float, 9) + ATTRIB(XonoticMapInfoDialog, intendedWidth, float, 1.0) + ATTRIB(XonoticMapInfoDialog, rows, float, 12) ATTRIB(XonoticMapInfoDialog, columns, float, 10) ATTRIB(XonoticMapInfoDialog, previewImage, entity, NULL) @@ -14,22 +14,7 @@ CLASS(XonoticMapInfoDialog) EXTENDS(XonoticDialog) ATTRIB(XonoticMapInfoDialog, descriptionLabel, entity, NULL) ATTRIB(XonoticMapInfoDialog, featuresLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeDeathmatchLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeTDMLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeLMSLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeArenaLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeRuneLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeDominationLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeKeyHuntLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeCTFLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeCALabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeAssaultLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeOnslaughtLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeRaceLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeCTSLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeNexballLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeFreezetagLabel, entity, NULL) - ATTRIB(XonoticMapInfoDialog, typeKeepawayLabel, entity, NULL) + ATTRIBARRAY(XonoticMapInfoDialog, typeLabels, entity, 24) ATTRIB(XonoticMapInfoDialog, currentMapIndex, float, 0) ATTRIB(XonoticMapInfoDialog, currentMapBSPName, string, string_null) @@ -61,7 +46,7 @@ void XonoticMapInfoDialog_loadMapInfo(entity me, float i, entity mlb) me.currentMapTitle = strzone(MapInfo_Map_title); me.currentMapAuthor = strzone(MapInfo_Map_author); me.currentMapDescription = strzone(MapInfo_Map_description); - me.currentMapFeaturesText = strzone((MapInfo_Map_supportedFeatures & MAPINFO_FEATURE_WEAPONS) ? "Full item placement" : "MinstaGib only"); + me.currentMapFeaturesText = strzone((MapInfo_Map_supportedFeatures & MAPINFO_FEATURE_WEAPONS) ? _("Full item placement") : _("MinstaGib only")); me.currentMapPreviewImage = strzone(strcat("/maps/", MapInfo_Map_bspname)); me.frame.setText(me.frame, me.currentMapBSPName); @@ -71,89 +56,57 @@ void XonoticMapInfoDialog_loadMapInfo(entity me, float i, entity mlb) me.featuresLabel.setText(me.featuresLabel, me.currentMapFeaturesText); me.previewImage.src = me.currentMapPreviewImage; - me.typeDeathmatchLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_DEATHMATCH); - me.typeTDMLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_TEAM_DEATHMATCH); - me.typeLMSLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_LMS); - me.typeArenaLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ARENA); - me.typeDominationLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_DOMINATION); - me.typeRuneLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RUNEMATCH); - me.typeKeyHuntLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_KEYHUNT); - me.typeCTFLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTF); - me.typeCALabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CA); - me.typeAssaultLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ASSAULT); - me.typeOnslaughtLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ONSLAUGHT); - me.typeRaceLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RACE); - me.typeCTSLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTS); - me.typeNexballLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_NEXBALL); - me.typeFreezetagLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_FREEZETAG); - me.typeKeepawayLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_KEEPAWAY); + for(i = 0; i < GameType_GetCount(); ++i) + { + entity e; + e = me.(typeLabels[i]); + e.disabled = !(MapInfo_Map_supportedGametypes & GameType_GetID(i)); + } MapInfo_ClearTemps(); } void XonoticMapInfoDialog_fill(entity me) { entity e; - float w, wgt; + float w, wgt, i, n; me.TR(me); me.TDempty(me, 0.2); me.TD(me, me.rows - 2, 3, e = makeXonoticImage(string_null, 4.0/3.0)); me.previewImage = e; me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); w = me.columns - me.currentColumn; - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Title:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Title:"))); me.TD(me, 1, w-1, e = makeXonoticTextLabel(0, "")); e.colorL = SKINCOLOR_MAPLIST_TITLE; e.allowCut = 1; me.titleLabel = e; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Author:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Author:"))); me.TD(me, 1, w-1, e = makeXonoticTextLabel(0, "")); e.colorL = SKINCOLOR_MAPLIST_AUTHOR; e.allowCut = 1; me.authorLabel = e; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Features:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Features:"))); me.TD(me, 1, w-1, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.featuresLabel = e; me.TR(me); - me.TD(me, 1, w, e = makeXonoticTextLabel(0, "Game types:")); - me.TR(me); wgt = (w-0.2)/5; - me.TDempty(me, 0.2); - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "DM")); - me.typeDeathmatchLabel = e; - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "TDM")); - me.typeTDMLabel = e; - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "LMS")); - me.typeLMSLabel = e; - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "Arena")); - me.typeArenaLabel = e; - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "Domination")); - me.typeDominationLabel = e; - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "Key Hunt")); - me.typeKeyHuntLabel = e; - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "CTF")); - me.typeCTFLabel = e; - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "CA")); - me.typeCALabel = e; - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "Assault")); - me.typeAssaultLabel = e; - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "Onslaught")); - me.typeOnslaughtLabel = e; - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "Race")); - me.typeRaceLabel = e; - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "CTS")); - me.typeCTSLabel = e; - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "Nexball")); - me.typeNexballLabel = e; - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "Freezetag")); - me.typeFreezetagLabel = e; - me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, "Keepaway")); - me.typeKeepawayLabel = e; + me.TD(me, 1, w, e = makeXonoticTextLabel(0, _("Game types:"))); + + + n = ceil(GameType_GetCount() / (me.rows - 6)); + wgt = (w - 0.2) / n; + for(i = 0; i < GameType_GetCount(); ++i) + { + if(mod(i, n) == 0) + { + me.TR(me); + me.TDempty(me, 0.2); + } + me.TD(me, 1, wgt, e = makeXonoticTextLabel(0, GameType_GetName(i))); + me.(typeLabels[i]) = e; + } me.gotoRC(me, me.rows - 2, 0); me.TD(me, 1, me.columns, e = makeXonoticTextLabel(0.5, "")); @@ -163,10 +116,10 @@ void XonoticMapInfoDialog_fill(entity me) me.gotoRC(me, me.rows - 1, 0); me.TDempty(me, 0.5); - me.TD(me, 1, me.columns - 5.5, e = makeXonoticButton("Close", '0 0 0')); + me.TD(me, 1, me.columns - 5.5, e = makeXonoticButton(_("Close"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; - me.TD(me, 1, me.columns - 5.5, me.startButton = e = makeXonoticButton("Play", '0 0 0')); + me.TD(me, 1, me.columns - 5.5, me.startButton = e = makeXonoticButton(_("Play"), '0 0 0')); me.startButton.onClick = MapList_LoadMap; me.startButton.onClickEntity = NULL; // filled later } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c b/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c index 984ae9b26..640c28a34 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c @@ -4,7 +4,7 @@ CLASS(XonoticMutatorsDialog) EXTENDS(XonoticDialog) METHOD(XonoticMutatorsDialog, fill, void(entity)) METHOD(XonoticMutatorsDialog, showNotify, void(entity)) METHOD(XonoticMutatorsDialog, close, void(entity)) - ATTRIB(XonoticMutatorsDialog, title, string, "Mutators") + ATTRIB(XonoticMutatorsDialog, title, string, _("Mutators")) ATTRIB(XonoticMutatorsDialog, color, vector, SKINCOLOR_DIALOG_MUTATORS) ATTRIB(XonoticMutatorsDialog, intendedWidth, float, 0.9) ATTRIB(XonoticMutatorsDialog, rows, float, 17) @@ -30,9 +30,9 @@ string WeaponArenaString() if(s == "0") return ""; if(s == "all") - return "All Weapons Arena"; + return _("All Weapons Arena"); if(s == "most") - return "Most Weapons Arena"; + return _("Most Weapons Arena"); if(s == weaponarenastring_cvar) return weaponarenastring; if(weaponarenastring) @@ -53,7 +53,7 @@ string WeaponArenaString() s = strcat(s, " & ", e.message); } } - s = strcat(substring(s, 3, strlen(s) - 3), " Arena"); + s = sprintf(_("%s Arena"), substring(s, 3, strlen(s) - 3)); weaponarenastring = strzone(s); @@ -65,37 +65,37 @@ string XonoticMutatorsDialog_toString(entity me) string s; s = ""; if(cvar("g_dodging")) - s = strcat(s, ", Dodging"); + s = strcat(s, ", ", _("Dodging")); if(cvar("g_minstagib")) - s = strcat(s, ", MinstaGib"); + s = strcat(s, ", ", _("MinstaGib")); if(cvar("g_nix")) - s = strcat(s, ", NIX"); + s = strcat(s, ", ", _("NIX")); if(cvar("g_rocket_flying")) - s = strcat(s, ", Rocket Flying"); + s = strcat(s, ", ", _("Rocket Flying")); if(cvar_string("g_weaponarena") != "0") s = strcat(s, ", ", WeaponArenaString()); if(cvar("g_start_weapon_laser") == 0) - s = strcat(s, ", No start weapons"); + s = strcat(s, ", ", _("No start weapons")); if(cvar("sv_gravity") < 800) - s = strcat(s, ", Low gravity"); + s = strcat(s, ", ", _("Low gravity")); if(cvar("g_cloaked")) - s = strcat(s, ", Cloaked"); + s = strcat(s, ", ", _("Cloaked")); if(cvar("g_grappling_hook")) - s = strcat(s, ", Hook"); + s = strcat(s, ", ", _("Hook")); if(cvar("g_midair")) - s = strcat(s, ", Midair"); + s = strcat(s, ", ", _("Midair")); if(cvar("g_vampire")) - s = strcat(s, ", Vampire"); + s = strcat(s, ", ", _("Vampire")); if(cvar("g_pinata")) - s = strcat(s, ", Pinata"); + s = strcat(s, ", ", _("Piñata")); if(cvar("g_weapon_stay")) - s = strcat(s, ", Weapons stay"); + s = strcat(s, ", ", _("Weapons stay")); if(cvar("g_bloodloss") > 0) - s = strcat(s, ", Bloodloss"); + s = strcat(s, ", ", _("Blood loss")); if(cvar("g_jetpack")) - s = strcat(s, ", Jet pack"); + s = strcat(s, ", ", _("Jet pack")); if(s == "") - return "None"; + return ZCTX(_("MUT^None")); else return substring(s, 2, strlen(s) - 2); } @@ -161,23 +161,23 @@ void XonoticMutatorsDialog_fill(entity me) float i, j; string str, hstr; me.TR(me); - me.TD(me, 1, 2, makeXonoticTextLabel(0, "Gameplay mutators:")); + me.TD(me, 1, 2, makeXonoticTextLabel(0, _("Gameplay mutators:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_dodging", "Dodging")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_dodging", _("Dodging"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_cloaked", "Cloaked")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_cloaked", _("Cloaked"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_midair", "Midair")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_midair", _("Midair"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_vampire", "Vampire")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_vampire", _("Vampire"))); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticSlider(10, 50, 1, "g_bloodloss"); - me.TD(me, 1, 2, e = makeXonoticSliderCheckBox(0, 1, s, "Blood loss")); + me.TD(me, 1, 2, e = makeXonoticSliderCheckBox(0, 1, s, _("Blood loss"))); me.TR(me); me.TDempty(me, 0.4); me.TD(me, 1, 1.8, s); @@ -186,36 +186,36 @@ void XonoticMutatorsDialog_fill(entity me) s = makeXonoticSlider(80, 400, 8, "sv_gravity"); s.valueDigits = 0; s.valueDisplayMultiplier = 0.125; // show gravity in percent - me.TD(me, 1, 2, e = makeXonoticSliderCheckBox(800, 1, s, "Low gravity")); + me.TD(me, 1, 2, e = makeXonoticSliderCheckBox(800, 1, s, _("Low gravity"))); e.savedValue = 200; // good on silvercity me.TR(me); me.TDempty(me, 0.4); me.TD(me, 1, 1.8, s); me.TR(me); me.TR(me); - me.TD(me, 1, 2, makeXonoticTextLabel(0, "Weapon & item mutators:")); + me.TD(me, 1, 2, makeXonoticTextLabel(0, _("Weapon & item mutators:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_grappling_hook", "Grappling hook")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_grappling_hook", _("Grappling hook"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_jetpack", "Jet pack")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_jetpack", _("Jet pack"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_rocket_flying", "Rocket Flying")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_rocket_flying", _("Rocket Flying"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_pinata", "Pinata")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_pinata", _("Piñata"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticCheckBoxEx(2, 0, "g_weapon_stay", "Weapons stay")); + me.TD(me, 1, 2, e = makeXonoticCheckBoxEx(2, 0, "g_weapon_stay", _("Weapons stay"))); me.TR(me); me.gotoRC(me, 0, 2); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 4, makeXonoticTextLabel(0, "Weapon arenas:")); + me.TD(me, 1, 4, makeXonoticTextLabel(0, _("Weapon arenas:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticRadioButton(1, string_null, string_null, "Regular (no arena)")); + me.TD(me, 1, 2, e = makeXonoticRadioButton(1, string_null, string_null, _("Regular (no arena)"))); for(i = WEP_FIRST, j = 0; i <= WEP_LAST; ++i) { w = get_weaponinfo(i); @@ -236,7 +236,7 @@ void XonoticMutatorsDialog_fill(entity me) } me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "menu_weaponarena_with_laser", "with laser")); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "menu_weaponarena_with_laser", _("with laser"))); // hook the draw function to gray it out e.draw_weaponarena = e.draw; e.draw = preDrawLaserWeaponArenaLaserButton; @@ -244,29 +244,29 @@ void XonoticMutatorsDialog_fill(entity me) e.saveCvars_weaponarena = e.saveCvars; e.saveCvars = saveCvarsLaserWeaponArenaLaserButton; me.TR(me); - me.TD(me, 1, 4, makeXonoticTextLabel(0, "Special arenas:")); + me.TD(me, 1, 4, makeXonoticTextLabel(0, _("Special arenas:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_minstagib", string_null, "MinstaGib")); + me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_minstagib", string_null, _("MinstaGib"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_nix", string_null, "NIX")); + me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_nix", string_null, _("NIX"))); me.TR(me); me.TDempty(me, 0.4); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "g_nix_with_laser", "with laser")); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "g_nix_with_laser", _("with laser"))); setDependent(e, "g_nix", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_weaponarena", "most", "Most weapons")); + me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_weaponarena", "most", _("Most weapons"))); e.cvarOffValue = "0"; me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_start_weapon_laser", "0", "No start weapons")); + me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "g_start_weapon_laser", "0", _("No start weapons"))); e.cvarOffValue = "-1"; - makeMulti(e, "g_start_weapon_shotgun g_start_weapon_uzi g_start_weapon_grenadelauncher g_start_weapon_minelayer g_start_weapon_electro g_start_weapon_crylink g_start_weapon_nex g_start_weapon_hagar g_start_weapon_rocketlauncher g_start_weapon_campingrifle g_start_weapon_hlac g_start_weapon_seeker g_start_weapon_minstanex g_start_weapon_hook g_start_weapon_porto g_start_weapon_tuba"); + makeMulti(e, "g_start_weapon_shotgun g_start_weapon_uzi g_start_weapon_grenadelauncher g_start_weapon_minelayer g_start_weapon_electro g_start_weapon_crylink g_start_weapon_nex g_start_weapon_hagar g_start_weapon_rocketlauncher g_start_weapon_sniperrifle g_start_weapon_hlac g_start_weapon_seeker g_start_weapon_minstanex g_start_weapon_hook g_start_weapon_porto g_start_weapon_tuba g_start_weapon_minelayer"); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_demo.c b/qcsrc/menu/xonotic/dialog_multiplayer_demo.c index ec57b7fca..85171e094 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_demo.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_demo.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticDemoBrowserTab) EXTENDS(XonoticTab) METHOD(XonoticDemoBrowserTab, fill, void(entity)) - ATTRIB(XonoticDemoBrowserTab, title, string, "Demo") + ATTRIB(XonoticDemoBrowserTab, title, string, _("Demo")) ATTRIB(XonoticDemoBrowserTab, intendedWidth, float, 0.9) ATTRIB(XonoticDemoBrowserTab, rows, float, 22) ATTRIB(XonoticDemoBrowserTab, columns, float, 6.5) @@ -25,12 +25,12 @@ void XonoticDemoBrowserTab_fill(entity me) entity dlist; me.TR(me); - me.TD(me, 1, me.columns, e = makeXonoticCheckBox(0, "cl_autodemo", "Record demos while playing")); + me.TD(me, 1, me.columns, e = makeXonoticCheckBox(0, "cl_autodemo", _("Record demos while playing"))); me.TR(me); dlist = makeXonoticDemoList(); me.TR(me); - me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, "Filter:")); - me.TD(me, 1, 0.5, btn = makeXonoticButton("Clear", '0 0 0')); + me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Filter:"))); + me.TD(me, 1, 0.5, btn = makeXonoticButton(_("Clear"), '0 0 0')); btn.onClick = InputBox_Clear_Click; me.TD(me, 1, me.columns - 1, e = makeXonoticInputBox(0, string_null)); e.onChange = DemoList_Filter_Change; @@ -40,10 +40,10 @@ void XonoticDemoBrowserTab_fill(entity me) me.TR(me); me.TD(me, me.rows - 4, me.columns, dlist); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns / 2, e = makeXonoticButton("Timedemo", '0 0 0')); + me.TD(me, 1, me.columns / 2, e = makeXonoticButton(_("Timedemo"), '0 0 0')); e.onClick = TimeDemo_Click; e.onClickEntity = dlist; - me.TD(me, 1, me.columns / 2, e = makeXonoticButton("Play", '0 0 0')); + me.TD(me, 1, me.columns / 2, e = makeXonoticButton(_("Play"), '0 0 0')); e.onClick = StartDemo_Click; e.onClickEntity = dlist; } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_join.c b/qcsrc/menu/xonotic/dialog_multiplayer_join.c index 799d33455..ee451744f 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_join.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_join.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticServerListTab) EXTENDS(XonoticTab) METHOD(XonoticServerListTab, fill, void(entity)) - ATTRIB(XonoticServerListTab, title, string, "Join") + ATTRIB(XonoticServerListTab, title, string, _("Join")) ATTRIB(XonoticServerListTab, intendedWidth, float, 0.9) ATTRIB(XonoticServerListTab, rows, float, 22) ATTRIB(XonoticServerListTab, columns, float, 6.5) @@ -25,23 +25,23 @@ void XonoticServerListTab_fill(entity me) slist = makeXonoticServerList(); me.TR(me); - me.TD(me, 1, 0.4, e = makeXonoticTextLabel(0, "Filter:")); - me.TD(me, 1, 0.6, btn = makeXonoticButton("Clear", '0 0 0')); + me.TD(me, 1, 0.4, e = makeXonoticTextLabel(0, _("Filter:"))); + me.TD(me, 1, 0.6, btn = makeXonoticButton(_("Clear"), '0 0 0')); btn.onClick = InputBox_Clear_Click; me.TD(me, 1, me.columns - 0.6 * 4 - 0.4, e = makeXonoticInputBox(0, string_null)); e.onChange = ServerList_Filter_Change; e.onChangeEntity = slist; btn.onClickEntity = e; slist.controlledTextbox = e; - me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "menu_slist_showempty", "Empty")); + me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "menu_slist_showempty", ZCTX(_("SRVS^Empty")))); slist.filterShowEmpty = e.checked; e.onClickEntity = slist; e.onClick = ServerList_ShowEmpty_Click; - me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "menu_slist_showfull", "Full")); + me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "menu_slist_showfull", ZCTX(_("SRVS^Full")))); slist.filterShowFull = e.checked; e.onClickEntity = slist; e.onClick = ServerList_ShowFull_Click; - me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "net_slist_pause", "Pause")); + me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "net_slist_pause", _("Pause"))); me.TR(me); me.TD(me, 1, 1, slist.sortButton1 = makeXonoticButton(string_null, '0 0 0')); @@ -53,21 +53,23 @@ void XonoticServerListTab_fill(entity me) me.TD(me, me.rows - 4, me.columns, slist); me.gotoRC(me, me.rows - 2, 0); - me.TD(me, 1, 0.6, e = makeXonoticTextLabel(0, "Address:")); + me.TD(me, 1, 0.6, e = makeXonoticTextLabel(0, _("Address:"))); me.TD(me, 1, 2.9, e = makeXonoticInputBox(0, string_null)); e.onEnter = ServerList_Connect_Click; e.onEnterEntity = slist; + e.onChange = ServerList_Update_favoriteButton; + e.onChangeEntity = slist; slist.ipAddressBox = e; me.TD(me, 1, 1.5, e = makeXonoticButton("", '0 0 0')); e.onClick = ServerList_Favorite_Click; e.onClickEntity = slist; slist.favoriteButton = e; - me.TD(me, 1, 1.5, e = makeXonoticButton("Info", '0 0 0')); + me.TD(me, 1, 1.5, e = makeXonoticButton(_("Info..."), '0 0 0')); e.onClick = ServerList_Info_Click; e.onClickEntity = slist; slist.infoButton = e; me.TR(me); - me.TD(me, 1, me.columns, e = makeXonoticButton("Join!", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("Join!"), '0 0 0')); e.onClick = ServerList_Connect_Click; e.onClickEntity = slist; slist.connectButton = e; diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c b/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c index 5f6262cf4..d396e7bbc 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c @@ -2,9 +2,9 @@ CLASS(XonoticServerInfoDialog) EXTENDS(XonoticDialog) METHOD(XonoticServerInfoDialog, fill, void(entity)) METHOD(XonoticServerInfoDialog, loadServerInfo, void(entity, float)) - ATTRIB(XonoticServerInfoDialog, title, string, "Server Information") + ATTRIB(XonoticServerInfoDialog, title, string, _("Server Information")) ATTRIB(XonoticServerInfoDialog, color, vector, SKINCOLOR_DIALOG_SERVERINFO) - ATTRIB(XonoticServerInfoDialog, intendedWidth, float, 0.68) + ATTRIB(XonoticServerInfoDialog, intendedWidth, float, 0.8) ATTRIB(XonoticServerInfoDialog, rows, float, 15) ATTRIB(XonoticServerInfoDialog, columns, float, 12) @@ -56,8 +56,8 @@ void Join_Click(entity btn, entity me); #ifdef IMPLEMENTATION void XonoticServerInfoDialog_loadServerInfo(entity me, float i) { - float m, pure, j; - string s, typestr, versionstr, numh, maxp, k, v; + float m, pure, freeslots, j, numh, maxp, numb; + string s, typestr, versionstr, k, v; if(me.currentServerName) strunzone(me.currentServerName); @@ -112,8 +112,8 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) me.cnameLabel.setText(me.cnameLabel, me.currentServerCName); pure = -1; - typestr = "N/A"; - versionstr = "N/A"; + typestr = _("N/A"); + versionstr = _("N/A"); SLIST_FIELD_QCSTATUS = gethostcacheindexforkey("qcstatus"); s = gethostcachestring(SLIST_FIELD_QCSTATUS, i); @@ -123,6 +123,7 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) typestr = argv(0); versionstr = argv(1); } + freeslots = -1; for(j = 2; j < m; ++j) { if(argv(j) == "") @@ -131,6 +132,8 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) v = substring(argv(j), 1, -1); if(k == "P") pure = stof(v); + else if(k == "S") + freeslots = stof(v); } me.currentServerType = strzone(typestr); @@ -145,14 +148,17 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) me.rawPlayerList.setPlayerList(me.rawPlayerList, me.currentServerPlayers); SLIST_FIELD_NUMHUMANS = gethostcacheindexforkey("numhumans"); - numh = ftos(gethostcachenumber(SLIST_FIELD_NUMHUMANS, i)); + numh = gethostcachenumber(SLIST_FIELD_NUMHUMANS, i); SLIST_FIELD_MAXPLAYERS = gethostcacheindexforkey("maxplayers"); - maxp = ftos(gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i)); - me.currentServerNumPlayers = strzone(strcat(numh,"/",maxp)); + maxp = gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i); + SLIST_FIELD_NUMBOTS = gethostcacheindexforkey("numbots"); + numb = gethostcachenumber(SLIST_FIELD_NUMBOTS, i); + if(freeslots < 0) + freeslots = maxp - numh - numb; + me.currentServerNumPlayers = strzone(sprintf(_("%d/%d, %d free player slots"), numh, maxp, freeslots)); me.numPlayersLabel.setText(me.numPlayersLabel, me.currentServerNumPlayers); - SLIST_FIELD_NUMBOTS = gethostcacheindexforkey("numbots"); - s = ftos(gethostcachenumber(SLIST_FIELD_NUMBOTS, i)); + s = ftos(numb); me.currentServerNumBots = strzone(s); me.numBotsLabel.setText(me.numBotsLabel, me.currentServerNumBots); @@ -163,7 +169,7 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) me.currentServerVersion = strzone(versionstr); me.versionLabel.setText(me.versionLabel, me.currentServerVersion); - me.currentServerPure = ((pure < 0) ? "N/A" : (pure == 0) ? "Official settings" : sprintf("%d modified settings", pure)); + me.currentServerPure = ((pure < 0) ? "N/A" : (pure == 0) ? _("Official settings") : sprintf(_("%d modified settings"), pure)); me.currentServerPure = strzone(me.currentServerPure); me.pureLabel.setText(me.pureLabel, me.currentServerPure); @@ -174,13 +180,13 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) s = crypto_getidfp(me.currentServerCName); if not(s) - s = "N/A"; + s = _("N/A"); me.currentServerID = strzone(s); me.idLabel.setText(me.idLabel, me.currentServerID); s = crypto_getkeyfp(me.currentServerCName); if not(s) - s = "N/A"; + s = _("N/A"); me.currentServerKey = strzone(s); me.keyLabel.setText(me.keyLabel, me.currentServerKey); @@ -188,35 +194,35 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) if(s == "") { if(cvar("crypto_aeslevel") >= 3) - me.currentServerEncrypt = "N/A (can't connect)"; + me.currentServerEncrypt = _("N/A (can't connect)"); else - me.currentServerEncrypt = "N/A"; + me.currentServerEncrypt = _("N/A"); } else switch(stof(substring(s, 0, 1))) { case 0: if(cvar("crypto_aeslevel") >= 3) - me.currentServerEncrypt = "not supported (can't connect)"; + me.currentServerEncrypt = _("not supported (can't connect)"); else - me.currentServerEncrypt = "not supported (won't encrypt)"; + me.currentServerEncrypt = _("not supported (won't encrypt)"); break; case 1: if(cvar("crypto_aeslevel") >= 2) - me.currentServerEncrypt = "supported (will encrypt)"; + me.currentServerEncrypt = _("supported (will encrypt)"); else - me.currentServerEncrypt = "supported (won't encrypt)"; + me.currentServerEncrypt = _("supported (won't encrypt)"); break; case 2: if(cvar("crypto_aeslevel") >= 1) - me.currentServerEncrypt = "requested (will encrypt)"; + me.currentServerEncrypt = _("requested (will encrypt)"); else - me.currentServerEncrypt = "requested (won't encrypt)"; + me.currentServerEncrypt = _("requested (won't encrypt)"); break; case 3: if(cvar("crypto_aeslevel") <= 0) - me.currentServerEncrypt = "required (can't connect)"; + me.currentServerEncrypt = _("required (can't connect)"); else - me.currentServerEncrypt = "required (will encrypt)"; + me.currentServerEncrypt = _("required (will encrypt)"); break; } me.encryptLabel.setText(me.encryptLabel, me.currentServerEncrypt); @@ -237,7 +243,7 @@ void XonoticServerInfoDialog_fill(entity me) me.cnameLabel = e; me.TR(me); - me.TD(me, 1, 5.5, e = makeXonoticTextLabel(0, "Players:")); + me.TD(me, 1, 5.5, e = makeXonoticTextLabel(0, _("Players:"))); me.TR(me); me.TD(me, me.rows - 4, 6, e = makeXonoticPlayerList()); me.rawPlayerList = e; @@ -245,70 +251,70 @@ void XonoticServerInfoDialog_fill(entity me) me.gotoRC(me, 1, 6.25); me.setFirstColumn(me, me.currentColumn); me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Type:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Type:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.typeLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Map:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Map:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.mapLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Gameplay:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Gameplay:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.pureLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Players:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Players:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.numPlayersLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Bots:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Bots:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.numBotsLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Mod:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Mod:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.modLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Version:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Version:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.versionLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Ping:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Ping:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.pingLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "CA:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("CA:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.keyLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Key:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Key:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.idLabel = e; me.TR(me); - me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, "Encryption:")); + me.TD(me, 1, 1.75, e = makeXonoticTextLabel(0, _("Encryption:"))); me.TD(me, 1, 4.0, e = makeXonoticTextLabel(0, "")); e.allowCut = 1; me.encryptLabel = e; me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns - 6, e = makeXonoticButton("Close", '0 0 0')); + me.TD(me, 1, me.columns - 6, e = makeXonoticButton(_("Close"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; - me.TD(me, 1, me.columns - 6, e = makeXonoticButton("Join!", '0 0 0')); + me.TD(me, 1, me.columns - 6, e = makeXonoticButton(_("Join!"), '0 0 0')); e.onClick = Join_Click; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c index 586896171..2b7b9a384 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c @@ -2,7 +2,7 @@ CLASS(XonoticPlayerSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticPlayerSettingsTab, fill, void(entity)) METHOD(XonoticPlayerSettingsTab, draw, void(entity)) - ATTRIB(XonoticPlayerSettingsTab, title, string, "Player Setup") + ATTRIB(XonoticPlayerSettingsTab, title, string, _("Player Setup")) ATTRIB(XonoticPlayerSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticPlayerSettingsTab, rows, float, 22) ATTRIB(XonoticPlayerSettingsTab, columns, float, 6.5) @@ -37,7 +37,7 @@ void XonoticPlayerSettingsTab_fill(entity me) float i, r, m, n; me.TR(me); - me.TD(me, 1, 0.5, me.playerNameLabel = makeXonoticTextLabel(0, "Name:")); + me.TD(me, 1, 0.5, me.playerNameLabel = makeXonoticTextLabel(0, _("Name:"))); me.playerNameLabelAlpha = me.playerNameLabel.alpha; me.TD(me, 1, 2.5, label = makeXonoticTextLabel(0, string_null)); label.allowCut = 1; @@ -46,7 +46,8 @@ void XonoticPlayerSettingsTab_fill(entity me) me.TR(me); me.TD(me, 1, 3.0, box = makeXonoticInputBox(1, "_cl_name")); box.forbiddenCharacters = "\r\n\\\"$"; // don't care, isn't getting saved - box.maxLength = -63; // negativ means encoded length in bytes + box.maxLength = -127; // negative means encoded length in bytes + box.saveImmediately = 1; label.textEntity = box; me.TR(me); me.TD(me, 5, 1, e = makeXonoticColorpicker(box)); @@ -59,7 +60,7 @@ void XonoticPlayerSettingsTab_fill(entity me) me.TR(me); me.gotoRC(me, 8, 0.0); pms = makeXonoticPlayerModelSelector(); - me.TD(me, 1, 0.6, e = makeXonoticTextLabel(1, "Model:")); + me.TD(me, 1, 0.6, e = makeXonoticTextLabel(1, _("Model:"))); me.TD(me, 1, 0.3, e = makeXonoticButton("<<", '0 0 0')); e.onClick = PlayerModelSelector_Prev_Click; e.onClickEntity = pms; @@ -84,30 +85,30 @@ void XonoticPlayerSettingsTab_fill(entity me) } me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Field of view:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Field of view:"))); me.TD(me, 1, 2, e = makeXonoticSlider(60, 130, 1, "fov")); me.TR(me); sl = makeXonoticSlider(0.45, 0.75, 0.01, "cl_bobcycle"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, sl, "View bobbing:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, sl, _("View bobbing:"))); makeMulti(sl, "cl_bob2cycle"); me.TD(me, 1, 2, sl); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Zoom factor:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Zoom factor:"))); me.TD(me, 1, 2, e = makeXonoticSlider(2, 16, 0.5, "cl_zoomfactor")); me.TR(me); sl = makeXonoticSlider(1, 8, 0.5, "cl_zoomspeed"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1, 1, sl, "Zoom speed:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1, 1, sl, _("Zoom speed:"))); me.TD(me, 1, 2, sl); me.TR(me); - me.TD(me, 1, 1.5, e = makeXonoticButton("Weapon settings...", '0 0 0')); + me.TD(me, 1, 1.5, e = makeXonoticButton(_("Weapon settings..."), '0 0 0')); e.onClick = DialogOpenButton_Click; e.onClickEntity = main.weaponsDialog; me.TD(me, 1, 1.5, e0 = makeXonoticTextLabel(0, string_null)); e0.textEntity = main.weaponsDialog; e0.allowCut = 1; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair:")); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "crosshair_per_weapon", "Per weapon")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair:"))); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "crosshair_per_weapon", _("Per weapon"))); me.TR(me); me.TDempty(me, 0.2); for(i = 1; i <= 10; ++i) { @@ -126,71 +127,71 @@ void XonoticPlayerSettingsTab_fill(entity me) } me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair size:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair size:"))); me.TD(me, 1, 1.8, e = makeXonoticSlider(0.10, 1.5, 0.05, "crosshair_size")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair alpha:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair alpha:"))); me.TD(me, 1, 1.8, e = makeXonoticSlider(0, 1, 0.1, "crosshair_alpha")); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Crosshair color:")); - me.TD(me, 2, 1.8, e = makeXonoticColorpickerString("crosshair_color", "crosshair_color")); - setDependent(e, "crosshair_color_per_weapon", 0, 0); + me.TD(me, 1, 0.9, e = makeXonoticRadioButton(4, "crosshair_color_per_weapon", string_null, _("Per weapon"))); + me.TD(me, 1, 0.9, e = makeXonoticRadioButton(4, "crosshair_color_by_health", string_null, _("By health"))); me.TR(me); me.TDempty(me, 0.3); - me.TD(me, 1, 0.7, e = makeXonoticCheckBox(0, "crosshair_color_per_weapon", "Per weapon")); + me.TD(me, 1, 0.9, e = makeXonoticRadioButton(4, string_null, string_null, _("Custom"))); + me.TD(me, 2, 1.8, e = makeXonoticColorpickerString("crosshair_color", "crosshair_color")); + setDependentAND(e, "crosshair_color_per_weapon", 0, 0, "crosshair_color_by_health", 0, 0); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "crosshair_dot", "Enable centered dot")); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "crosshair_dot", _("Enable center dot"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, "Size:")); + me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Size:"))); me.TD(me, 1, 0.9, e = makeXonoticSlider(0.2, 2, 0.1, "crosshair_dot_size")); setDependent(e, "crosshair_dot", 1, 1); - me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, "Alpha:")); + me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Alpha:"))); me.TD(me, 1, 0.9, e = makeXonoticSlider(0.10, 1, 0.1, "crosshair_dot_alpha")); setDependent(e, "crosshair_dot", 1, 1); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Hit test:")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "0", "None")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "1", "TrueAim")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "1.25", "Enemies")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Hit test:"))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "0", ZCTX(_("HTST^None")))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "1", _("TrueAim"))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "1.25", _("Enemies"))); me.TR(me); me.TDempty(me, 0.4); - me.TD(me, 1, 2.2, e = makeXonoticButton("Waypoints setup...", '0 0 0')); + me.TD(me, 1, 2.2, e = makeXonoticButton(_("Waypoints setup..."), '0 0 0')); e.onClick = DialogOpenButton_Click; e.onClickEntity = main.waypointDialog; - me.TDempty(me, 0.5); me.TR(me); me.TDempty(me, 0.4); - me.TD(me, 1, 2.2, e = makeXonoticButton("Enter HUD editor", '0 0 0')); + me.TD(me, 1, 2.2, e = makeXonoticButton(_("Enter HUD editor"), '0 0 0')); e.onClick = HUDSetup_Join_Click; e.onClickEntity = me; - me.TDempty(me, 0.5); - me.TR(me); me.TR(me); #ifdef ALLOW_FORCEMODELS - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Force models:")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, string_null, string_null, "None")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodelsfromxonotic", string_null, "Custom")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodels", string_null, "All")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Force models:"))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, string_null, string_null, ZCTX(_("MDL^None"))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodelsfromxonotic", string_null, ZCTX(_("MDL^Custom")))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodels", string_null, ZCTX(_("MDL^All")))); #endif - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_gentle", "Disable gore effects")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_gentle", _("Disable gore effects"))); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Gibs:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gibs:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_nogibs")); - e.addValue(e, "None", "1"); - e.addValue(e, "Few", "0.75"); - e.addValue(e, "Many", "0.5"); - e.addValue(e, "Lots", "0"); + e.addValue(e, ZCTX(_("GIBS^None")), "1"); + e.addValue(e, ZCTX(_("GIBS^Few")), "0.75"); + e.addValue(e, ZCTX(_("GIBS^Many")), "0.5"); + e.addValue(e, ZCTX(_("GIBS^Lots")), "0"); e.configureXonoticTextSliderValues(e); setDependent(e, "cl_gentle", 0, 0); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Damage splash:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Damage splash:"))); me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.05, "hud_damage")); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, makeXonoticCommandButton("Apply immediately", '0 0 0', "color -1 -1;name \"$_cl_name\";cl_cmd sendcvar cl_weaponpriority;sendcvar cl_zoomfactor;sendcvar cl_zoomspeed;sendcvar cl_autoswitch;sendcvar cl_shownames;sendcvar cl_forceplayermodelsfromxonotic;sendcvar cl_forceplayermodels;playermodel $_cl_playermodel;playerskin $_cl_playerskin", COMMANDBUTTON_APPLY)); + me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "color -1 -1;name \"$_cl_name\";cl_cmd sendcvar cl_weaponpriority;sendcvar cl_zoomfactor;sendcvar cl_zoomspeed;sendcvar cl_autoswitch;sendcvar cl_shownames;sendcvar cl_forceplayermodelsfromxonotic;sendcvar cl_forceplayermodels;playermodel $_cl_playermodel;playerskin $_cl_playerskin", COMMANDBUTTON_APPLY)); } void HUDSetup_Join_Click(entity me, entity btn) { diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c index dcc6a64f3..5805d2ea1 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c @@ -1,56 +1,45 @@ #ifdef INTERFACE CLASS(XonoticWaypointDialog) EXTENDS(XonoticDialog) - METHOD(XonoticWaypointDialog, toString, string(entity)) METHOD(XonoticWaypointDialog, fill, void(entity)) METHOD(XonoticWaypointDialog, showNotify, void(entity)) - ATTRIB(XonoticWaypointDialog, title, string, "Waypoints") - ATTRIB(XonoticWaypointDialog, color, vector, SKINCOLOR_DIALOG_RADAR) - ATTRIB(XonoticWaypointDialog, intendedWidth, float, 0.7) + ATTRIB(XonoticWaypointDialog, title, string, _("Waypoints")) + ATTRIB(XonoticWaypointDialog, color, vector, SKINCOLOR_DIALOG_WAYPOINTS) + ATTRIB(XonoticWaypointDialog, intendedWidth, float, 0.5) ATTRIB(XonoticWaypointDialog, rows, float, 6) - ATTRIB(XonoticWaypointDialog, columns, float, 4) + ATTRIB(XonoticWaypointDialog, columns, float, 3) ENDCLASS(XonoticWaypointDialog) #endif #ifdef IMPLEMENTATION void XonoticWaypointDialog_showNotify(entity me) { - loadAllCvars(me); -} -string XonoticWaypointDialog_toString(entity me) -{ - return "XXX"; + loadAllCvars(me); } void XonoticWaypointDialog_fill(entity me) { entity e; - - me.TR(me); - me.TD(me, 1, 4, makeXonoticTextLabel(0, "Waypoint settings:")); + me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 3.8, e = makeXonoticCheckBox(1, "cl_hidewaypoints", "Show base waypoints")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_hidewaypoints", _("Show base waypoints"))); me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Waypoint scale:")); - me.TD(me, 1, 3, e = makeXonoticSlider(0.5, 1.5, 0.01, "g_waypointsprite_scale")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Waypoint scale:"))); + me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 1.5, 0.05, "g_waypointsprite_scale")); setDependent(e, "cl_hidewaypoints", 0, 0); me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Waypoint alpha:")); - me.TD(me, 1, 3, e = makeXonoticSlider(0.1, 1, 0.01, "g_waypointsprite_alpha")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Waypoint alpha:"))); + me.TD(me, 1, 2, e = makeXonoticSlider(0.1, 1, 0.05, "g_waypointsprite_alpha")); setDependent(e, "cl_hidewaypoints", 0, 0); me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Show names:")); - me.TD(me, 1, 3, e = makeXonoticTextSlider("cl_shownames")); - e.addValue(e, "Never", "0"); - e.addValue(e, "Teammates", "1"); - e.addValue(e, "All players", "2"); + me.TR(me); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Show names:"))); + me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_shownames")); + e.addValue(e, _("Never"), "0"); + e.addValue(e, _("Teammates"), "1"); + e.addValue(e, _("All players"), "2"); e.configureXonoticTextSliderValues(e); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } - #endif diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c index ca6d705c6..d20a6483b 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c @@ -3,11 +3,11 @@ CLASS(XonoticWeaponsDialog) EXTENDS(XonoticDialog) METHOD(XonoticWeaponsDialog, toString, string(entity)) METHOD(XonoticWeaponsDialog, fill, void(entity)) METHOD(XonoticWeaponsDialog, showNotify, void(entity)) - ATTRIB(XonoticWeaponsDialog, title, string, "Weapon settings") + ATTRIB(XonoticWeaponsDialog, title, string, _("Weapon settings")) ATTRIB(XonoticWeaponsDialog, color, vector, SKINCOLOR_DIALOG_WEAPONS) - ATTRIB(XonoticWeaponsDialog, intendedWidth, float, 0.5) + ATTRIB(XonoticWeaponsDialog, intendedWidth, float, 0.4) ATTRIB(XonoticWeaponsDialog, rows, float, 17) - ATTRIB(XonoticWeaponsDialog, columns, float, 4) + ATTRIB(XonoticWeaponsDialog, columns, float, 3) ATTRIB(XonoticWeaponsDialog, weaponsList, entity, NULL) ENDCLASS(XonoticWeaponsDialog) #endif @@ -26,33 +26,33 @@ void XonoticWeaponsDialog_fill(entity me) entity e; me.TR(me); - me.TD(me, 1, 4, makeXonoticTextLabel(0, "Weapon priority list:")); + me.TD(me, 1, 3, makeXonoticTextLabel(0, _("Weapon priority list:"))); me.TR(me); - me.TD(me, 9, 4, e = me.weaponsList = makeXonoticWeaponsList()); + me.TD(me, 9, 3, e = me.weaponsList = makeXonoticWeaponsList()); me.gotoRC(me, 10, 0); - me.TDempty(me, 1); - me.TD(me, 1, 1, e = makeXonoticButton("Up", '0 0 0')); + me.TDempty(me, 0.5); + me.TD(me, 1, 1, e = makeXonoticButton(_("Up"), '0 0 0')); e.onClick = WeaponsList_MoveUp_Click; e.onClickEntity = me.weaponsList; - me.TD(me, 1, 1, e = makeXonoticButton("Down", '0 0 0')); + me.TD(me, 1, 1, e = makeXonoticButton(_("Down"), '0 0 0')); e.onClick = WeaponsList_MoveDown_Click; e.onClickEntity = me.weaponsList; - me.gotoRC(me, 11, 0); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_weaponpriority_useforcycling", "Use priority list for weapon cycling")); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_autoswitch", "Auto switch weapons on pickup")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_weaponpriority_useforcycling", _("Use priority list for weapon cycling"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_drawviewmodel", "Draw 1st person weapon model")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_autoswitch", _("Auto switch weapons on pickup"))); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_drawviewmodel", _("Draw 1st person weapon model"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_gunalign", "4", "Left align")); + me.TD(me, 1, 1.4, e = makeXonoticRadioButton(1, "cl_gunalign", "4", _("Left align"))); setDependent(e, "r_drawviewmodel", 1, 1); - me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_gunalign", "3", "Right align")); + me.TD(me, 1, 1.4, e = makeXonoticRadioButton(1, "cl_gunalign", "3", _("Right align"))); setDependent(e, "r_drawviewmodel", 1, 1); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_flipped", "Flip view horizontally")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_flipped", _("Flip view horizontally"))); me.TR(me); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_news.c b/qcsrc/menu/xonotic/dialog_news.c index cfe91afce..f638c770d 100644 --- a/qcsrc/menu/xonotic/dialog_news.c +++ b/qcsrc/menu/xonotic/dialog_news.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticNewsDialog) EXTENDS(XonoticDialog) METHOD(XonoticNewsDialog, fill, void(entity)) - ATTRIB(XonoticNewsDialog, title, string, "News") + ATTRIB(XonoticNewsDialog, title, string, _("News")) ATTRIB(XonoticNewsDialog, color, vector, SKINCOLOR_DIALOG_SETTINGS) ATTRIB(XonoticNewsDialog, intendedWidth, float, 0.96) ATTRIB(XonoticNewsDialog, rows, float, 24) @@ -15,6 +15,6 @@ void XonoticNewsDialog_fill(entity me) entity e; me.TR(me); me.TD(me, 24, 1, e = spawnGecko()); - e.configureBrowser( e, "http://alientrap.org/xonotic/index.php?module=news" ); + e.configureBrowser( e, _("http://www.xonotic.org/team/blog/") ); } #endif diff --git a/qcsrc/menu/xonotic/dialog_quit.c b/qcsrc/menu/xonotic/dialog_quit.c index 0229e0267..6d9dde47b 100644 --- a/qcsrc/menu/xonotic/dialog_quit.c +++ b/qcsrc/menu/xonotic/dialog_quit.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticQuitDialog) EXTENDS(XonoticDialog) METHOD(XonoticQuitDialog, fill, void(entity)) - ATTRIB(XonoticQuitDialog, title, string, "Quit") + ATTRIB(XonoticQuitDialog, title, string, _("Quit")) ATTRIB(XonoticQuitDialog, color, vector, SKINCOLOR_DIALOG_QUIT) ATTRIB(XonoticQuitDialog, intendedWidth, float, 0.5) ATTRIB(XonoticQuitDialog, rows, float, 3) @@ -14,11 +14,11 @@ void XonoticQuitDialog_fill(entity me) { entity e; me.TR(me); - me.TD(me, 1, 2, makeXonoticTextLabel(0.5, "Are you sure you want to quit?")); + me.TD(me, 1, 2, makeXonoticTextLabel(0.5, _("Are you sure you want to quit?"))); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticCommandButton("Yes", '1 0 0', "quit", 0)); - me.TD(me, 1, 1, e = makeXonoticButton("No", '0 1 0')); + me.TD(me, 1, 1, e = makeXonoticCommandButton(_("Yes"), '1 0 0', "quit", 0)); + me.TD(me, 1, 1, e = makeXonoticButton(_("No"), '0 1 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_settings.c b/qcsrc/menu/xonotic/dialog_settings.c index 1f19bf656..1f084a16c 100644 --- a/qcsrc/menu/xonotic/dialog_settings.c +++ b/qcsrc/menu/xonotic/dialog_settings.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticSettingsDialog) EXTENDS(XonoticDialog) METHOD(XonoticSettingsDialog, fill, void(entity)) - ATTRIB(XonoticSettingsDialog, title, string, "Settings") + ATTRIB(XonoticSettingsDialog, title, string, _("Settings")) ATTRIB(XonoticSettingsDialog, color, vector, SKINCOLOR_DIALOG_SETTINGS) ATTRIB(XonoticSettingsDialog, intendedWidth, float, 0.96) ATTRIB(XonoticSettingsDialog, rows, float, 19) @@ -15,12 +15,12 @@ void XonoticSettingsDialog_fill(entity me) entity mc; mc = makeXonoticTabController(me.rows - 2); me.TR(me); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Input", makeXonoticInputSettingsTab())); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Video", makeXonoticVideoSettingsTab())); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Effects", makeXonoticEffectsSettingsTab())); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Audio", makeXonoticAudioSettingsTab())); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Network", makeXonoticNetworkSettingsTab())); - me.TD(me, 1, 1, mc.makeTabButton(mc, "Misc", makeXonoticMiscSettingsTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Input"), makeXonoticInputSettingsTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Video"), makeXonoticVideoSettingsTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Effects"), makeXonoticEffectsSettingsTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Audio"), makeXonoticAudioSettingsTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Network"), makeXonoticNetworkSettingsTab())); + me.TD(me, 1, 1, mc.makeTabButton(mc, _("Misc"), makeXonoticMiscSettingsTab())); me.TR(me); me.TR(me); me.TD(me, me.rows - 2, me.columns, mc); diff --git a/qcsrc/menu/xonotic/dialog_settings_audio.c b/qcsrc/menu/xonotic/dialog_settings_audio.c index ddde45d2b..e38a87be6 100644 --- a/qcsrc/menu/xonotic/dialog_settings_audio.c +++ b/qcsrc/menu/xonotic/dialog_settings_audio.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticAudioSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticAudioSettingsTab, fill, void(entity)) - ATTRIB(XonoticAudioSettingsTab, title, string, "Audio") + ATTRIB(XonoticAudioSettingsTab, title, string, _("Audio")) ATTRIB(XonoticAudioSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticAudioSettingsTab, rows, float, 17) ATTRIB(XonoticAudioSettingsTab, columns, float, 6.5) @@ -24,155 +24,157 @@ void XonoticAudioSettingsTab_fill(entity me) me.TR(me); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "mastervolume"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Master:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Master:"))); me.TD(me, 1, 2, s); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "bgmvolume"); makeMulti(s, "snd_csqcchannel2volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Music:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Music:"))); me.TD(me, 1, 2, s); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_staticvolume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Ambient:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, ZCTX(_("VOL^Ambient:")))); makeMulti(s, "snd_entchannel2volume"); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_worldchannel0volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Info:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Info:"))); makeMulti(s, "snd_csqcchannel0volume"); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_entchannel3volume"); makeMulti(s, "snd_playerchannel0volume snd_playerchannel3volume snd_csqcchannel3volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Items:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Items:"))); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_playerchannel6volume"); makeMulti(s, "snd_csqcchannel6volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Pain:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Pain:"))); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_playerchannel7volume"); makeMulti(s, "snd_entchannel7volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Player:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Player:"))); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_entchannel4volume"); makeMulti(s, "snd_playerchannel4volume snd_entchannel6volume snd_csqcchannel4volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Shots:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Shots:"))); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_playerchannel2volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Voice:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Voice:"))); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_playerchannel1volume"); makeMulti(s, "snd_playerchannel5volume snd_entchannel1volume snd_entchannel5volume"); - me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, "Weapons:")); + me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Weapons:"))); me.TD(me, 1, 2, s); - setDependentStringNotEqual(e, "volume", "0"); - setDependentStringNotEqual(s, "volume", "0"); + setDependentStringNotEqual(e, "mastervolume", "0"); + setDependentStringNotEqual(s, "mastervolume", "0"); me.TR(me); me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Frequency:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Frequency:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("snd_speed")); - e.addValue(e, "8 kHz", "8000"); - e.addValue(e, "11.025 kHz", "11025"); - e.addValue(e, "16 kHz", "16000"); - e.addValue(e, "22.05 kHz", "22050"); - e.addValue(e, "24 kHz", "24000"); - e.addValue(e, "32 kHz", "32000"); - e.addValue(e, "44.1 kHz", "44100"); - e.addValue(e, "48 kHz", "48000"); + e.addValue(e, _("8 kHz"), "8000"); + e.addValue(e, _("11.025 kHz"), "11025"); + e.addValue(e, _("16 kHz"), "16000"); + e.addValue(e, _("22.05 kHz"), "22050"); + e.addValue(e, _("24 kHz"), "24000"); + e.addValue(e, _("32 kHz"), "32000"); + e.addValue(e, _("44.1 kHz"), "44100"); + e.addValue(e, _("48 kHz"), "48000"); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Channels:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Channels:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("snd_channels")); - e.addValue(e, "Mono", "1"); - e.addValue(e, "Stereo", "2"); - e.addValue(e, "2.1", "3"); - e.addValue(e, "3.1", "4"); - e.addValue(e, "4.1", "5"); - e.addValue(e, "5.1", "6"); - e.addValue(e, "6.1", "7"); - e.addValue(e, "7.1", "8"); + e.addValue(e, _("Mono"), "1"); + e.addValue(e, _("Stereo"), "2"); + e.addValue(e, _("2.1"), "3"); + e.addValue(e, _("4"), "4"); + e.addValue(e, _("5"), "5"); + e.addValue(e, _("5.1"), "6"); + e.addValue(e, _("6.1"), "7"); + e.addValue(e, _("7.1"), "8"); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "snd_swapstereo", "Swap Stereo")); + me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "snd_swapstereo", _("Swap Stereo"))); setDependent(e, "snd_channels", 1.5, 0.5); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "snd_spatialization_control", "Headphone friendly mode")); + me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "snd_spatialization_control", _("Headphone friendly mode"))); setDependent(e, "snd_channels", 1.5, 0.5); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Spatial voices:")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "0", "None")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "2", "Taunts")); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "1", "All")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Spatial voices:"))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "0", ZCTX(_("VOCS^None")))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "2", ZCTX(_("VOCS^Taunts")))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "1", ZCTX(_("VOCS^All")))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Taunt range:")); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Taunt range:"))); setDependent(e, "cl_voice_directional", 0.5, -0.5); me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_voice_directional_taunt_attenuation")); - e.addValue(e, "Very short", "3"); - e.addValue(e, "Short", "2"); - e.addValue(e, "Normal", "0.5"); - e.addValue(e, "Long", "0.25"); - e.addValue(e, "Full", "0.015625"); + e.addValue(e, ZCTX(_("RNG^Very short")), "3"); + e.addValue(e, ZCTX(_("RNG^Short")), "2"); + e.addValue(e, ZCTX(_("RNG^Normal")), "0.5"); + e.addValue(e, ZCTX(_("RNG^Long")), "0.25"); + e.addValue(e, ZCTX(_("RNG^Full")), "0.015625"); e.configureXonoticTextSliderValues(e); setDependent(e, "cl_voice_directional", 0.5, -0.5); me.TR(me); sl = makeXonoticSlider(0.15, 1, 0.05, "cl_autotaunt"); sl.valueDisplayMultiplier = 100; sl.valueDigits = 0; - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, sl, "Automatic taunts")); + me.TD(me, 1, 3, e = makeXonoticSliderCheckBox(0, 1, sl, _("Automatic taunts"))); if(sl.value != e.savedValue) e.savedValue = 0.65; // default me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Frequency:")); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Frequency:"))); me.TD(me, 1, 2, sl); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Time warning:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Time warning:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_sound_maptime_warning")); - e.addValue(e, "None", "0"); - e.addValue(e, "1 minute", "1"); - e.addValue(e, "5 minutes", "2"); - e.addValue(e, "Both", "3"); + e.addValue(e, ZCTX(_("WRN^None")), "0"); + e.addValue(e, _("1 minute"), "1"); + e.addValue(e, _("5 minutes"), "2"); + e.addValue(e, ZCTX(_("WRN^Both")), "3"); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_hitsound", "Hit indicator")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_hitsound", _("Hit indicator"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "menu_sounds", "Menu sounds")); + me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "menu_sounds", _("Menu sounds"))); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, makeXonoticCommandButton("Apply immediately", '0 0 0', "snd_restart; sendcvar cl_hitsound; sendcvar cl_autotaunt; sendcvar cl_voice_directional; sendcvar cl_voice_directional_taunt_attenuation", COMMANDBUTTON_APPLY)); + me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "snd_restart; sendcvar cl_hitsound; sendcvar cl_autotaunt; sendcvar cl_voice_directional; sendcvar cl_voice_directional_taunt_attenuation", COMMANDBUTTON_APPLY)); } #endif diff --git a/qcsrc/menu/xonotic/dialog_settings_effects.c b/qcsrc/menu/xonotic/dialog_settings_effects.c index cd108f0be..53903aac7 100644 --- a/qcsrc/menu/xonotic/dialog_settings_effects.c +++ b/qcsrc/menu/xonotic/dialog_settings_effects.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticEffectsSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticEffectsSettingsTab, fill, void(entity)) - ATTRIB(XonoticEffectsSettingsTab, title, string, "Effects") + ATTRIB(XonoticEffectsSettingsTab, title, string, _("Effects")) ATTRIB(XonoticEffectsSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticEffectsSettingsTab, rows, float, 17) ATTRIB(XonoticEffectsSettingsTab, columns, float, 6.5) @@ -35,47 +35,47 @@ void XonoticEffectsSettingsTab_fill(entity me) entity e, s; float n; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Quality preset:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Quality preset:"))); n = 5 + 2 * !!cvar("developer"); if(cvar("developer")) - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("OMG!", '1 0 1', "exec effects-omg.cfg", 0)); - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("Low", '0 0 0', "exec effects-low.cfg", 0)); - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("Medium", '0 0 0', "exec effects-med.cfg", 0)); - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("Normal", '0 0 0', "exec effects-normal.cfg", 0)); - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("High", '0 0 0', "exec effects-high.cfg", 0)); - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("Ultra", '0 0 0', "exec effects-ultra.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^OMG!")), '1 0 1', "exec effects-omg.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Low")), '0 0 0', "exec effects-low.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Medium")), '0 0 0', "exec effects-med.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Normal")), '0 0 0', "exec effects-normal.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^High")), '0 0 0', "exec effects-high.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Ultra")), '0 0 0', "exec effects-ultra.cfg", 0)); if(cvar("developer")) - me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton("Ultimate", '0 0 0', "exec effects-ultimate.cfg", 0)); + me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Ultimate")), '0 0 0', "exec effects-ultimate.cfg", 0)); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Geometry detail:")); + me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Geometry detail:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("r_subdivisions_tolerance")); - e.addValue(e, "Lowest", "16"); - e.addValue(e, "Low", "8"); - e.addValue(e, "Normal", "4"); - e.addValue(e, "Good", "3"); - e.addValue(e, "Best", "2"); - e.addValue(e, "Insane", "1"); + e.addValue(e, ZCTX(_("DET^Lowest")), "16"); + e.addValue(e, ZCTX(_("DET^Low")), "8"); + e.addValue(e, ZCTX(_("DET^Normal")), "4"); + e.addValue(e, ZCTX(_("DET^Good")), "3"); + e.addValue(e, ZCTX(_("DET^Best")), "2"); + e.addValue(e, ZCTX(_("DET^Insane")), "1"); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Antialiasing:")); + me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Antialiasing:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("vid_samples")); - e.addValue(e, "Disabled", "1"); - e.addValue(e, "2x", "2"); - e.addValue(e, "4x", "4"); + e.addValue(e, ZCTX(_("AA^Disabled")), "1"); + e.addValue(e, _("2x"), "2"); + e.addValue(e, _("4x"), "4"); e.configureXonoticTextSliderValues(e); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Texture resolution:")); + me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Texture resolution:"))); me.TD(me, 1, 2, e = makeXonoticPicmipSlider()); if(cvar("developer")) - e.addValue(e, "Leet", "1337"); - e.addValue(e, "Lowest", "2"); - e.addValue(e, "Low", "1"); - e.addValue(e, "Normal", "0"); - e.addValue(e, "Good", "-1"); - e.addValue(e, "Best", "-2"); + e.addValue(e, ZCTX(_("RES^Leet")), "1337"); + e.addValue(e, ZCTX(_("RES^Lowest")), "2"); + e.addValue(e, ZCTX(_("RES^Low")), "1"); + e.addValue(e, ZCTX(_("RES^Normal")), "0"); + e.addValue(e, ZCTX(_("RES^Good")), "-1"); + e.addValue(e, ZCTX(_("RES^Best")), "-2"); e.configureXonoticTextSliderValues(e); me.TR(me); me.TDempty(me, 0.2); @@ -88,108 +88,109 @@ void XonoticEffectsSettingsTab_fill(entity me) case 0: break; case 1: - me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", "Avoid lossy texture compression")); + me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", _("Avoid lossy texture compression"))); break; case 2: - me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", "Avoid lossy texture compression")); + me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", _("Avoid lossy texture compression"))); makeMulti(e, "gl_texturecompression"); break; } } me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Anisotropy:")); + me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Anisotropy:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("gl_texture_anisotropy")); - e.addValue(e, "Disabled", "1"); - e.addValue(e, "2x", "2"); - e.addValue(e, "4x", "4"); - e.addValue(e, "8x", "8"); - e.addValue(e, "16x", "16"); + e.addValue(e, ZCTX(_("ANISO^Disabled")), "1"); + e.addValue(e, _("2x"), "2"); + e.addValue(e, _("4x"), "4"); + e.addValue(e, _("8x"), "8"); + e.addValue(e, _("16x"), "16"); e.configureXonoticTextSliderValues(e); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Particle quality:")); - me.TD(me, 1, 2, e = makeXonoticSlider(0.2, 1.0, 0.1, "cl_particles_quality")); + me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Particle quality:"))); + me.TD(me, 1, 1.9, e = makeXonoticSlider(0.2, 1.0, 0.1, "cl_particles_quality")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Particle dist.:")); - me.TD(me, 1, 2, e = makeXonoticSlider(500, 2000, 100, "r_drawparticles_drawdistance")); + me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Particle distance:"))); + me.TD(me, 1, 1.9, e = makeXonoticSlider(500, 2000, 100, "r_drawparticles_drawdistance")); me.TR(me); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_decals", "Decals")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_decals", _("Decals"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Distance:")); + me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, _("Distance:"))); setDependent(e, "cl_decals", 1, 1); - me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance")); + me.TD(me, 1, 1.9, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance")); setDependent(e, "cl_decals", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Time:")); + me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, _("Time:"))); setDependent(e, "cl_decals", 1, 1); - me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_time")); + me.TD(me, 1, 1.9, e = makeXonoticSlider(1, 20, 1, "cl_decals_time")); setDependent(e, "cl_decals", 1, 1); me.gotoRC(me, 2, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 2, e = makeXonoticCheckBox(1, "mod_q3bsp_nolightmaps", "Use lightmaps")); - me.TD(me, 1, 1.9, e = makeXonoticCheckBox(0, "r_glsl_deluxemapping", "Deluxe mapping")); + me.TD(me, 1, 1.2, e = makeXonoticCheckBox(1, "mod_q3bsp_nolightmaps", _("Use lightmaps"))); + me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_glsl_deluxemapping", _("Deluxe mapping"))); setDependentAND(e, "vid_gl20", 1, 1, "mod_q3bsp_nolightmaps", 0, 0); - me.TD(me, 1, 0.7, e = makeXonoticCheckBox(0, "r_shadow_gloss", "Gloss")); + me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "r_shadow_gloss", _("Gloss"))); setDependentAND3(e, "vid_gl20", 1, 1, "r_glsl_deluxemapping", 1, 2, "mod_q3bsp_nolightmaps", 0, 0); me.TR(me); - me.TD(me, 1, 1.5, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping", "Offset mapping")); + me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping", _("Offset mapping"))); setDependent(e, "vid_gl20", 1, 1); - me.TD(me, 1, 1.9, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping_reliefmapping", "Relief mapping")); + me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping_reliefmapping", _("Relief mapping"))); setDependentAND(e, "vid_gl20", 1, 1, "r_glsl_offsetmapping", 1, 1); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_water", "Reflections:")); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_water", _("Reflections:"))); setDependent(e, "vid_gl20", 1, 1); me.TD(me, 1, 2, e = makeXonoticTextSlider("r_water_resolutionmultiplier")); - e.addValue(e, "Blurred", "0.25"); - e.addValue(e, "Good", "0.5"); - e.addValue(e, "Sharp", "1"); + e.addValue(e, _("Blurred"), "0.25"); + e.addValue(e, ZCTX(_("REFL^Good")), "0.5"); + e.addValue(e, _("Sharp"), "1"); e.configureXonoticTextSliderValues(e); setDependentAND(e, "vid_gl20", 1, 1, "r_water", 1, 1); me.TR(me); if(cvar("developer")) - me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(3, 0, "r_showsurfaces", "Show surfaces")); + me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(3, 0, "r_showsurfaces", _("Show surfaces"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticRadioButton(1, string_null, string_null, "No dynamic lighting")); + me.TD(me, 1, 3, e = makeXonoticRadioButton(1, string_null, string_null, _("No dynamic lighting"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "gl_flashblend", string_null, "Flash blend approximation")); + me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "gl_flashblend", string_null, _("Flash blend approximation"))); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "r_shadow_realtime_dlight", string_null, "Realtime dynamic lighting")); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_realtime_dlight_shadows", "Shadows")); + me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "r_shadow_realtime_dlight", string_null, _("Realtime dynamic lighting"))); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_realtime_dlight_shadows", _("Shadows"))); setDependent(e, "r_shadow_realtime_dlight", 1, 1); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "r_shadow_realtime_world", "Realtime world lighting")); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_realtime_world_shadows", "Shadows")); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "r_shadow_realtime_world", _("Realtime world lighting"))); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_realtime_world_shadows", _("Shadows"))); setDependent(e, "r_shadow_realtime_world", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "r_shadow_usenormalmap", "Use normal maps")); + me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "r_shadow_usenormalmap", _("Use normal maps"))); setDependentOR(e, "r_shadow_realtime_dlight", 1, 1, "r_shadow_realtime_world", 1, 1); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_shadowmapping", "Soft shadows")); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_shadowmapping", _("Soft shadows"))); setDependentWeird(e, someShadowCvarIsEnabled); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_coronas", "Coronas")); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_coronas", _("Coronas"))); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "r_coronas_occlusionquery", _("Use Occlusion Queries"))); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_bloom", "Bloom")); + me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_bloom", _("Bloom"))); setDependent(e, "r_hdr", 0, 0); - me.TD(me, 1, 2, e = makeXonoticCheckBoxEx(2, 0, "r_hdr", "High Dynamic Range (HDR)")); + me.TD(me, 1, 1.8, e = makeXonoticCheckBoxEx(2, 0, "r_hdr", _("High Dynamic Range (HDR)"))); me.TR(me); s = makeXonoticSlider(0.1, 1, 0.1, "r_motionblur"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, s, "Motion blur:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, s, _("Motion blur:"))); if(s.value != e.savedValue) e.savedValue = 0.5; // default me.TD(me, 1, 2, s); me.TR(me); s = makeXonoticSlider(0.1, 1, 0.1, "r_damageblur"); - me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, s, "Damage blur:")); + me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, s, _("Damage blur:"))); if(s.value != e.savedValue) e.savedValue = 0.4; // default me.TD(me, 1, 2, s); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, makeXonoticCommandButton("Apply immediately", '0 0 0', "vid_restart", COMMANDBUTTON_APPLY)); + me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "vid_restart", COMMANDBUTTON_APPLY)); } #endif diff --git a/qcsrc/menu/xonotic/dialog_settings_input.c b/qcsrc/menu/xonotic/dialog_settings_input.c index df3bd084a..ee244931d 100644 --- a/qcsrc/menu/xonotic/dialog_settings_input.c +++ b/qcsrc/menu/xonotic/dialog_settings_input.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticInputSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticInputSettingsTab, fill, void(entity)) - ATTRIB(XonoticInputSettingsTab, title, string, "Input") + ATTRIB(XonoticInputSettingsTab, title, string, _("Input")) ATTRIB(XonoticInputSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticInputSettingsTab, rows, float, 17) ATTRIB(XonoticInputSettingsTab, columns, float, 6.5) @@ -23,55 +23,46 @@ void XonoticInputSettingsTab_fill(entity me) entity kb; me.TR(me); - me.TD(me, 1, 3, e = makeXonoticTextLabel(0, "Key bindings:")); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Key bindings:"))); me.TR(me); me.TD(me, me.rows - 2, 3.3, kb = makeXonoticKeyBinder()); me.gotoRC(me, me.rows - 1, 0); me.TR(me); - me.TD(me, 1, 1.1, e = makeXonoticButton("Change key...", '0 0 0')); + me.TD(me, 1, 1.1, e = makeXonoticButton(_("Change key..."), '0 0 0')); e.onClick = KeyBinder_Bind_Change; e.onClickEntity = kb; kb.keyGrabButton = e; - me.TD(me, 1, 1.1, e = makeXonoticButton("Edit...", '0 0 0')); + me.TD(me, 1, 1.1, e = makeXonoticButton(_("Edit..."), '0 0 0')); e.onClick = KeyBinder_Bind_Edit; e.onClickEntity = kb; kb.userbindEditButton = e; kb.userbindEditDialog = main.userbindEditDialog; main.userbindEditDialog.keybindBox = kb; - me.TD(me, 1, 1.1, e = makeXonoticButton("Clear", '0 0 0')); + me.TD(me, 1, 1.1, e = makeXonoticButton(_("Clear"), '0 0 0')); e.onClick = KeyBinder_Bind_Clear; e.onClickEntity = kb; me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Sensitivity:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Sensitivity:"))); me.TD(me, 1, 2, e = makeXonoticSlider(1, 32, 0.2, "sensitivity")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "UI mouse speed:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("UI mouse speed:"))); me.TD(me, 1, 2, e = makeXonoticSlider(0.2, 4.0, 0.1, "menu_mouse_speed")); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "m_filter", "Mouse filter")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "m_filter", _("Mouse filter"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(1.022, "m_pitch", "Invert mouse")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(1.022, "m_pitch", _("Invert mouse"))); me.TR(me); if(cvar_type("joy_enable") & CVAR_TYPEFLAG_ENGINE) - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joy_enable", "Use joystick input")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joy_enable", _("Use joystick input"))); else if(cvar_type("joystick") & CVAR_TYPEFLAG_ENGINE) - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joystick", "Use joystick input")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joystick", _("Use joystick input"))); me.TR(me); if(cvar_type("vid_dgamouse") & CVAR_TYPEFLAG_ENGINE) - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_dgamouse", "Turn off OS mouse acceleration")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_dgamouse", _("Turn off OS mouse acceleration"))); else if(cvar_type("apple_mouse_noaccel") & CVAR_TYPEFLAG_ENGINE) - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "apple_mouse_noaccel", "Turn off OS mouse acceleration")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "apple_mouse_noaccel", _("Turn off OS mouse acceleration"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_closeontoggleconsole", "\"enter console\" also closes")); - me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Show binds:")); - me.TD(me, 1, 2, e = makeXonoticTextSlider("sbar_showbinds")); - e.addValue(e, "Actions", "0"); - e.addValue(e, "Bound keys", "1"); - e.addValue(e, "Both", "2"); - e.configureXonoticTextSliderValues(e); - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "cl_showpressedkeys", "Show pressed keys")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_closeontoggleconsole", _("\"enter console\" also closes"))); } #endif diff --git a/qcsrc/menu/xonotic/dialog_settings_input_userbind.c b/qcsrc/menu/xonotic/dialog_settings_input_userbind.c index 3cdfa95b7..aaf182fcd 100644 --- a/qcsrc/menu/xonotic/dialog_settings_input_userbind.c +++ b/qcsrc/menu/xonotic/dialog_settings_input_userbind.c @@ -2,7 +2,7 @@ CLASS(XonoticUserbindEditDialog) EXTENDS(XonoticDialog) METHOD(XonoticUserbindEditDialog, loadUserBind, void(entity, string, string, string)) METHOD(XonoticUserbindEditDialog, fill, void(entity)) - ATTRIB(XonoticUserbindEditDialog, title, string, "User defined key bind") + ATTRIB(XonoticUserbindEditDialog, title, string, _("User defined key bind")) ATTRIB(XonoticUserbindEditDialog, color, vector, SKINCOLOR_DIALOG_USERBIND) ATTRIB(XonoticUserbindEditDialog, intendedWidth, float, 0.7) ATTRIB(XonoticUserbindEditDialog, rows, float, 4) @@ -36,19 +36,19 @@ void XonoticUserbindEditDialog_fill(entity me) { entity e; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Name:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Name:"))); me.TD(me, 1, me.columns - 1, me.nameBox = makeXonoticInputBox(0, string_null)); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Command when pressed:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Command when pressed:"))); me.TD(me, 1, me.columns - 1, me.commandPressBox = makeXonoticInputBox(0, string_null)); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Command when released:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Command when released:"))); me.TD(me, 1, me.columns - 1, me.commandReleaseBox = makeXonoticInputBox(0, string_null)); me.TR(me); - me.TD(me, 1, me.columns / 2, e = makeXonoticButton("Save", '0 0 0')); + me.TD(me, 1, me.columns / 2, e = makeXonoticButton(_("Save"), '0 0 0')); e.onClick = XonoticUserbindEditDialog_Save; e.onClickEntity = me; - me.TD(me, 1, me.columns / 2, e = makeXonoticButton("Cancel", '0 0 0')); + me.TD(me, 1, me.columns / 2, e = makeXonoticButton(_("Cancel"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_settings_misc.c b/qcsrc/menu/xonotic/dialog_settings_misc.c index 14293d7f2..7fa3dc66b 100644 --- a/qcsrc/menu/xonotic/dialog_settings_misc.c +++ b/qcsrc/menu/xonotic/dialog_settings_misc.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticMiscSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticMiscSettingsTab, fill, void(entity)) - ATTRIB(XonoticMiscSettingsTab, title, string, "Misc") + ATTRIB(XonoticMiscSettingsTab, title, string, _("Misc")) ATTRIB(XonoticMiscSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticMiscSettingsTab, rows, float, 17) ATTRIB(XonoticMiscSettingsTab, columns, float, 6.5) @@ -23,54 +23,65 @@ void XonoticMiscSettingsTab_fill(entity me) entity sk; me.TR(me); - me.TD(me, 1, 3, e = makeXonoticTextLabel(0, "Menu skins:")); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Menu skins:"))); me.TR(me); me.TD(me, me.rows - 2, 3, sk = makeXonoticSkinList()); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, 3, e = makeXonoticButton("Apply immediately", '0 0 0')); + me.TD(me, 1, 3, e = makeXonoticButton(_("Apply immediately"), '0 0 0')); e.onClick = SetSkin_Click; e.onClickEntity = sk; me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showtime", "Show current time")); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Text language:"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showdate", "Show current date")); + me.TD(me, 3, 3, sk = makeXonoticLanguageList()); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showfps", "Show frames per second")); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_showspeed", "Speedometer")); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticButton(_("Apply immediately"), '0 0 0')); + e.onClick = SetLanguage_Click; + e.onClickEntity = sk; + + me.TR(me); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showtime", _("Show current time"))); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showdate", _("Show current date"))); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showfps", _("Show frames per second"))); + me.TR(me); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_showspeed", _("Speedometer"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "0", "qu/s (hidden)")); + me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "0", _("qu/s (hidden)"))); setDependent(e, "cl_showspeed", 1, 1); - me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "1", "qu/s")); + me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "1", _("qu/s"))); setDependent(e, "cl_showspeed", 1, 1); - me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "2", "m/s")); + me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "2", _("m/s"))); setDependent(e, "cl_showspeed", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "3", "km/h")); + me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "3", _("km/h"))); setDependent(e, "cl_showspeed", 1, 1); - me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "4", "mph")); + me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "4", _("mph"))); setDependent(e, "cl_showspeed", 1, 1); - me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "5", "knots")); + me.TD(me, 1, 2.8/3, e = makeXonoticRadioButton(1, "cl_showspeed_unit", "5", _("knots"))); setDependent(e, "cl_showspeed", 1, 1); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_showacceleration", "Show accelerometer")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_showacceleration", _("Show accelerometer"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 2.8/2, e = makeXonoticTextLabel(0, "Accelerometer scale:")); + me.TD(me, 1, 2.8/2, e = makeXonoticTextLabel(0, _("Accelerometer scale:"))); setDependent(e, "cl_showacceleration", 1, 1); me.TD(me, 1, 2.8/2, e = makeXonoticSlider(0.2, 2, 0.2, "cl_showacceleration_scale")); setDependent(e, "cl_showacceleration", 1, 1); me.TR(me); me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_maxfps_alwayssleep", "Minimize input latency")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_maxfps_alwayssleep", _("Minimize input latency"))); me.TR(me); me.TR(me); me.TDempty(me, 0.5); - me.TD(me, 1, 2, e = makeXonoticButton("Advanced settings...", '0 0 0')); + me.TD(me, 1, 2, e = makeXonoticButton(_("Advanced settings..."), '0 0 0')); e.onClick = DialogOpenButton_Click; e.onClickEntity = main.cvarsDialog; } diff --git a/qcsrc/menu/xonotic/dialog_settings_misc_cvars.c b/qcsrc/menu/xonotic/dialog_settings_misc_cvars.c index 0d846caf2..be2b64259 100644 --- a/qcsrc/menu/xonotic/dialog_settings_misc_cvars.c +++ b/qcsrc/menu/xonotic/dialog_settings_misc_cvars.c @@ -1,9 +1,8 @@ #ifdef INTERFACE CLASS(XonoticCvarsDialog) EXTENDS(XonoticDialog) - METHOD(XonoticCvarsDialog, toString, string(entity)) METHOD(XonoticCvarsDialog, fill, void(entity)) METHOD(XonoticCvarsDialog, showNotify, void(entity)) - ATTRIB(XonoticCvarsDialog, title, string, "Advanced settings") + ATTRIB(XonoticCvarsDialog, title, string, _("Advanced settings")) ATTRIB(XonoticCvarsDialog, color, vector, SKINCOLOR_DIALOG_CVARS) ATTRIB(XonoticCvarsDialog, intendedWidth, float, 0.8) ATTRIB(XonoticCvarsDialog, rows, float, 25) @@ -16,17 +15,13 @@ void XonoticCvarsDialog_showNotify(entity me) { loadAllCvars(me); } -string XonoticCvarsDialog_toString(entity me) -{ - return "XXX"; -} void XonoticCvarsDialog_fill(entity me) { entity e, cvarlist, btn; cvarlist = makeXonoticCvarList(); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Cvar filter:")); - me.TD(me, 1, 0.5, btn = makeXonoticButton("Clear", '0 0 0')); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Cvar filter:"))); + me.TD(me, 1, 0.5, btn = makeXonoticButton(_("Clear"), '0 0 0')); me.TD(me, 1, me.columns - 1.5, e = makeXonoticInputBox(0, string_null)); e.onChange = CvarList_Filter_Change; e.onChangeEntity = cvarlist; @@ -36,19 +31,21 @@ void XonoticCvarsDialog_fill(entity me) me.TR(me); me.TD(me, me.rows - me.currentRow - 7, me.columns, cvarlist); me.gotoRC(me, me.rows - 7, 0); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Setting:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Setting:"))); me.TD(me, 1, me.columns - 1, e = makeXonoticTextLabel(0, string_null)); cvarlist.cvarNameBox = e; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Type:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Type:"))); me.TD(me, 1, me.columns - 1, e = makeXonoticTextLabel(0, string_null)); cvarlist.cvarTypeBox = e; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Value:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Value:"))); me.TD(me, 1, me.columns - 2, e = makeXonoticInputBox(0, string_null)); cvarlist.cvarValueBox = e; e.onChange = CvarList_Value_Change; e.onChangeEntity = cvarlist; + e.onEnter = CvarList_End_Editing; + e.onEnterEntity = cvarlist; me.TD(me, 1, 1, e = makeXonoticButton(string_null, SKINCOLOR_CVARLIST_REVERTBUTTON)); cvarlist.cvarDefaultBox = e; e.onClick = CvarList_Revert_Click; @@ -56,12 +53,12 @@ void XonoticCvarsDialog_fill(entity me) e.allowCut = 1; e.marginLeft = e.marginRight = 0.5; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Description:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Description:"))); me.TD(me, 1, me.columns - 1, e = makeXonoticTextLabel(0, string_null)); cvarlist.cvarDescriptionBox = e; e.allowWrap = 1; me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_settings_network.c b/qcsrc/menu/xonotic/dialog_settings_network.c index 6e0c472af..9b6b7c330 100644 --- a/qcsrc/menu/xonotic/dialog_settings_network.c +++ b/qcsrc/menu/xonotic/dialog_settings_network.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticNetworkSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticNetworkSettingsTab, fill, void(entity)) - ATTRIB(XonoticNetworkSettingsTab, title, string, "Network") + ATTRIB(XonoticNetworkSettingsTab, title, string, _("Network")) ATTRIB(XonoticNetworkSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticNetworkSettingsTab, rows, float, 17) ATTRIB(XonoticNetworkSettingsTab, columns, float, 6.5) @@ -23,38 +23,38 @@ void XonoticNetworkSettingsTab_fill(entity me) entity e; me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_movement", "Client-side movement prediction")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_movement", _("Client-side movement prediction"))); me.TR(me); - //me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_nolerp", "Network update smoothing")); + //me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_nolerp", _("Network update smoothing"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "shownetgraph", "Show netgraph")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "shownetgraph", _("Show netgraph"))); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Network speed:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Network speed:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("_cl_rate")); - e.addValue(e, "56k", "4000"); - e.addValue(e, "ISDN", "7000"); - e.addValue(e, "Slow ADSL", "15000"); - e.addValue(e, "Fast ADSL", "20000"); - e.addValue(e, "Broadband", "66666"); + e.addValue(e, _("56k"), "4000"); + e.addValue(e, _("ISDN"), "7000"); + e.addValue(e, _("Slow ADSL"), "15000"); + e.addValue(e, _("Fast ADSL"), "20000"); + e.addValue(e, _("Broadband"), "66666"); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Input packets/s:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Input packets/s:"))); me.TD(me, 1, 2, e = makeXonoticSlider(20, 100, 1, "cl_netfps")); me.TR(me); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticTextLabel(0, "HTTP downloads:")); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("HTTP downloads:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Downloads:")); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Downloads:"))); me.TD(me, 1, 2, e = makeXonoticSlider(1, 5, 1, "cl_curl_maxdownloads")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Speed (kB/s):")); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Speed (kB/s):"))); me.TD(me, 1, 2, e = makeXonoticSlider(10, 1500, 10, "cl_curl_maxspeed")); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Client UDP port:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Client UDP port:"))); me.TD(me, 1, 0.64, e = makeXonoticInputBox(0, "cl_port")); } #endif diff --git a/qcsrc/menu/xonotic/dialog_settings_video.c b/qcsrc/menu/xonotic/dialog_settings_video.c index 0aa5e68cc..38b236b62 100644 --- a/qcsrc/menu/xonotic/dialog_settings_video.c +++ b/qcsrc/menu/xonotic/dialog_settings_video.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticVideoSettingsTab) EXTENDS(XonoticTab) METHOD(XonoticVideoSettingsTab, fill, void(entity)) - ATTRIB(XonoticVideoSettingsTab, title, string, "Video") + ATTRIB(XonoticVideoSettingsTab, title, string, _("Video")) ATTRIB(XonoticVideoSettingsTab, intendedWidth, float, 0.9) ATTRIB(XonoticVideoSettingsTab, rows, float, 17) ATTRIB(XonoticVideoSettingsTab, columns, float, 6.5) @@ -23,86 +23,85 @@ void XonoticVideoSettingsTab_fill(entity me) entity e; me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Resolution:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Resolution:"))); me.TD(me, 1, 2, e = makeXonoticResolutionSlider()); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Font/UI size:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Font/UI size:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("menu_vid_scale")); - e.addValue(e, "Unreadable", "-1"); - e.addValue(e, "Tiny", "-0.75"); - e.addValue(e, "Little", "-0.5"); - e.addValue(e, "Small", "-0.25"); - e.addValue(e, "Medium", "0"); - e.addValue(e, "Large", "0.25"); - e.addValue(e, "Huge", "0.5"); - e.addValue(e, "Gigantic", "0.75"); - e.addValue(e, "Colossal", "1"); + e.addValue(e, ZCTX(_("SZ^Unreadable")), "-1"); + e.addValue(e, ZCTX(_("SZ^Tiny")), "-0.75"); + e.addValue(e, ZCTX(_("SZ^Little")), "-0.5"); + e.addValue(e, ZCTX(_("SZ^Small")), "-0.25"); + e.addValue(e, ZCTX(_("SZ^Medium")), "0"); + e.addValue(e, ZCTX(_("SZ^Large")), "0.25"); + e.addValue(e, ZCTX(_("SZ^Huge")), "0.5"); + e.addValue(e, ZCTX(_("SZ^Gigantic")), "0.75"); + e.addValue(e, ZCTX(_("SZ^Colossal")), "1"); e.configureXonoticTextSliderValues(e); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Color depth:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Color depth:"))); me.TD(me, 1, 2, e = makeXonoticSlider(16, 32, 16, "vid_bitsperpixel")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "vid_fullscreen", "Full screen")); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "vid_vsync", "Vertical Synchronization")); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "vid_fullscreen", _("Full screen"))); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "vid_vsync", _("Vertical Synchronization"))); me.TR(me); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_gl20", "Use OpenGL 2.0 shaders (GLSL)")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_gl20", _("Use OpenGL 2.0 shaders (GLSL)"))); me.TR(me); - me.TR(me); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "r_coronas_occlusionquery", "Use Occlusion Queries")); + me.TDempty(me, 0.2); + me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "v_glslgamma", _("Use GLSL to handle color control"))); + setDependent(e, "vid_gl20", 1, 1); me.TR(me); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticTextLabel(0, "Vertex Buffer Objects (VBOs)")); + me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Vertex Buffer Objects (VBOs)"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "0", "Off")); - me.TD(me, 1, 2.1, e = makeXonoticRadioButton(1, "gl_vbo", "3", "Vertices, some Tris (compatible)")); + me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "0", ZCTX(_("VBO^Off")))); + me.TD(me, 1, 1.9, e = makeXonoticRadioButton(1, "gl_vbo", "3", _("Vertices, some Tris (compatible)"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "2", "Vertices")); - me.TD(me, 1, 2.1, e = makeXonoticRadioButton(1, "gl_vbo", "1", "Vertices and Triangles")); + me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "2", _("Vertices"))); + me.TD(me, 1, 1.9, e = makeXonoticRadioButton(1, "gl_vbo", "1", _("Vertices and Triangles"))); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Depth first:")); + me.TR(me); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Depth first:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("r_depthfirst")); - e.addValue(e, "Disabled", "0"); - e.addValue(e, "World", "1"); - e.addValue(e, "All", "2"); + e.addValue(e, ZCTX(_("DF^Disabled")), "0"); + e.addValue(e, ZCTX(_("DF^World")), "1"); + e.addValue(e, ZCTX(_("DF^All")), "2"); e.configureXonoticTextSliderValues(e); me.TR(me); if(cvar_type("apple_multithreadedgl") & CVAR_TYPEFLAG_ENGINE) - me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "apple_multithreadedgl", "Disable multithreaded OpenGL")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "apple_multithreadedgl", _("Disable multithreaded OpenGL"))); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "gl_finish", "Wait for GPU to finish each frame")); + me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "gl_finish", _("Wait for GPU to finish each frame"))); me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Brightness:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Brightness:"))); me.TD(me, 1, 2, e = makeXonoticSlider(0.0, 0.5, 0.02, "v_brightness")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Contrast:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Contrast:"))); me.TD(me, 1, 2, e = makeXonoticSlider(1.0, 3.0, 0.05, "v_contrast")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Gamma:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gamma:"))); me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 2.0, 0.05, "v_gamma")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Contrast boost:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Contrast boost:"))); me.TD(me, 1, 2, e = makeXonoticSlider(1.0, 5.0, 0.1, "v_contrastboost")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Saturation:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Saturation:"))); setDependent(e, "vid_gl20", 1, 1); me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 2.0, 0.05, "r_glsl_saturation")); setDependent(e, "vid_gl20", 1, 1); - me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_glslgamma", "Use GLSL to handle color control")); - setDependent(e, "vid_gl20", 1, 1); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Ambient:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, ZCTX(_("LIT^Ambient:")))); me.TD(me, 1, 2, e = makeXonoticSlider(0, 20.0, 1.0, "r_ambient")); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Intensity:")); + me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Intensity:"))); me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 2.0, 0.05, "r_hdr_scenebrightness")); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, makeXonoticCommandButton("Apply immediately", '0 0 0', "menu_cmd setresolution; vid_restart; menu_restart; togglemenu; defer 0.1 \"menu_cmd videosettings\"", COMMANDBUTTON_APPLY)); + me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "menu_cmd setresolution; vid_restart; menu_restart; togglemenu; defer 0.1 \"menu_cmd videosettings\"", COMMANDBUTTON_APPLY)); } #endif diff --git a/qcsrc/menu/xonotic/dialog_singleplayer.c b/qcsrc/menu/xonotic/dialog_singleplayer.c index 560192ff1..81eb68e39 100644 --- a/qcsrc/menu/xonotic/dialog_singleplayer.c +++ b/qcsrc/menu/xonotic/dialog_singleplayer.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticSingleplayerDialog) EXTENDS(XonoticDialog) METHOD(XonoticSingleplayerDialog, fill, void(entity)) - ATTRIB(XonoticSingleplayerDialog, title, string, "Singleplayer") + ATTRIB(XonoticSingleplayerDialog, title, string, _("Singleplayer")) ATTRIB(XonoticSingleplayerDialog, color, vector, SKINCOLOR_DIALOG_SINGLEPLAYER) ATTRIB(XonoticSingleplayerDialog, intendedWidth, float, 0.80) ATTRIB(XonoticSingleplayerDialog, rows, float, 24) @@ -56,14 +56,14 @@ void XonoticSingleplayerDialog_fill(entity me) me.TR(me); me.TDempty(me, (me.columns - 3) / 2); - me.TD(me, 2, 3, e = makeXonoticBigButton("Instant action! (random map with bots)", '0 0 0')); + me.TD(me, 2, 3, e = makeXonoticBigButton(_("Instant action! (random map with bots)"), '0 0 0')); e.onClick = InstantAction_LoadMap; e.onClickEntity = NULL; me.TR(me); me.TR(me); me.TR(me); me.TD(me, 1, 1, btnPrev = makeXonoticButton("<<", '0 0 0')); - me.TD(me, 1, me.columns - 2, lblTitle = makeXonoticTextLabel(0.5, "???")); + me.TD(me, 1, me.columns - 2, lblTitle = makeXonoticTextLabel(0.5, _("???"))); me.TD(me, 1, 1, btnNext = makeXonoticButton(">>", '0 0 0')); me.TR(me); me.TD(me, me.rows - 5, me.columns, me.campaignBox = makeXonoticCampaignList()); @@ -77,7 +77,7 @@ void XonoticSingleplayerDialog_fill(entity me) me.campaignBox.campaignGo(me.campaignBox, 0); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("Start Singleplayer!", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("Start Singleplayer!"), '0 0 0')); e.onClick = CampaignList_LoadMap; e.onClickEntity = me.campaignBox; } diff --git a/qcsrc/menu/xonotic/dialog_singleplayer_winner.c b/qcsrc/menu/xonotic/dialog_singleplayer_winner.c index 5d377e6d0..8e584b8a8 100644 --- a/qcsrc/menu/xonotic/dialog_singleplayer_winner.c +++ b/qcsrc/menu/xonotic/dialog_singleplayer_winner.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(XonoticWinnerDialog) EXTENDS(XonoticDialog) METHOD(XonoticWinnerDialog, fill, void(entity)) - ATTRIB(XonoticWinnerDialog, title, string, "Winner") + ATTRIB(XonoticWinnerDialog, title, string, _("Winner")) ATTRIB(XonoticWinnerDialog, color, vector, SKINCOLOR_DIALOG_SINGLEPLAYER) ATTRIB(XonoticWinnerDialog, intendedWidth, float, 0.32) ATTRIB(XonoticWinnerDialog, rows, float, 12) @@ -18,7 +18,7 @@ void XonoticWinnerDialog_fill(entity me) me.TD(me, me.rows - 2, me.columns, e = makeXonoticImage("/gfx/winner", -1)); me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeXonoticButton("OK", '0 0 0')); + me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; } diff --git a/qcsrc/menu/xonotic/dialog_teamselect.c b/qcsrc/menu/xonotic/dialog_teamselect.c index e0908ee36..7fb154c8a 100644 --- a/qcsrc/menu/xonotic/dialog_teamselect.c +++ b/qcsrc/menu/xonotic/dialog_teamselect.c @@ -2,7 +2,7 @@ CLASS(XonoticTeamSelectDialog) EXTENDS(XonoticRootDialog) METHOD(XonoticTeamSelectDialog, fill, void(entity)) // to be overridden by user to fill the dialog with controls METHOD(XonoticTeamSelectDialog, showNotify, void(entity)) - ATTRIB(XonoticTeamSelectDialog, title, string, "Team Selection") // ;) + ATTRIB(XonoticTeamSelectDialog, title, string, _("Team Selection")) // ;) ATTRIB(XonoticTeamSelectDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT) ATTRIB(XonoticTeamSelectDialog, intendedWidth, float, 0.4) ATTRIB(XonoticTeamSelectDialog, rows, float, 5) @@ -38,17 +38,17 @@ void XonoticTeamSelectDialog_fill(entity me) { entity e; me.TR(me); - me.TD(me, 2, 4, e = makeTeamButton("join 'best' team (auto-select)", '0 0 0', "cmd selectteam auto; cmd join")); + me.TD(me, 2, 4, e = makeTeamButton(_("join 'best' team (auto-select)"), '0 0 0', "cmd selectteam auto; cmd join")); e.preferredFocusPriority = 1; me.TR(me); me.TR(me); - me.TD(me, 2, 1, me.team1 = makeTeamButton("red", '1 0.5 0.5', "cmd selectteam red; cmd join")); - me.TD(me, 2, 1, me.team2 = makeTeamButton("blue", '0.5 0.5 1', "cmd selectteam blue; cmd join")); - me.TD(me, 2, 1, me.team3 = makeTeamButton("yellow", '1 1 0.5', "cmd selectteam yellow; cmd join")); - me.TD(me, 2, 1, me.team4 = makeTeamButton("pink", '1 0.5 1', "cmd selectteam pink; cmd join")); + me.TD(me, 2, 1, me.team1 = makeTeamButton(_("red"), '1 0.5 0.5', "cmd selectteam red; cmd join")); + me.TD(me, 2, 1, me.team2 = makeTeamButton(_("blue"), '0.5 0.5 1', "cmd selectteam blue; cmd join")); + me.TD(me, 2, 1, me.team3 = makeTeamButton(_("yellow"), '1 1 0.5', "cmd selectteam yellow; cmd join")); + me.TD(me, 2, 1, me.team4 = makeTeamButton(_("pink"), '1 0.5 1', "cmd selectteam pink; cmd join")); me.TR(me); me.TR(me); - me.TD(me, 1, 4, makeXonoticCommandButton("spectate", '0 0 0', "cmd spectate", 1)); + me.TD(me, 1, 4, makeXonoticCommandButton(_("spectate"), '0 0 0', "cmd spectate", 1)); } #endif diff --git a/qcsrc/menu/xonotic/gametypelist.c b/qcsrc/menu/xonotic/gametypelist.c new file mode 100644 index 000000000..ec21c65b9 --- /dev/null +++ b/qcsrc/menu/xonotic/gametypelist.c @@ -0,0 +1,85 @@ +#ifdef INTERFACE +CLASS(XonoticGametypeList) EXTENDS(XonoticListBox) + METHOD(XonoticGametypeList, configureXonoticGametypeList, void(entity)) + ATTRIB(XonoticGametypeList, rowsPerItem, float, 1) + METHOD(XonoticGametypeList, drawListBoxItem, void(entity, float, vector, float)) + METHOD(XonoticGametypeList, resizeNotify, void(entity, vector, vector, vector, vector)) + METHOD(XonoticGametypeList, setSelected, void(entity, float)) + METHOD(XonoticGametypeList, loadCvars, void(entity)) + METHOD(XonoticGametypeList, saveCvars, void(entity)) + + ATTRIB(XonoticGametypeList, realFontSize, vector, '0 0 0') + ATTRIB(XonoticGametypeList, realUpperMargin, float, 0) + ATTRIB(XonoticGametypeList, columnNameOrigin, float, 0) + ATTRIB(XonoticGametypeList, columnNameSize, float, 0) +ENDCLASS(XonoticGametypeList) +entity makeXonoticGametypeList(); +#endif + +#ifdef IMPLEMENTATION + +entity makeXonoticGametypeList(void) +{ + entity me; + me = spawnXonoticGametypeList(); + me.configureXonoticGametypeList(me); + return me; +} +void XonoticGametypeList_configureXonoticGametypeList(entity me) +{ + me.loadCvars(me); + me.configureXonoticListBox(me); + me.nItems = GameType_GetCount(); +} +void XonoticGametypeList_setSelected(entity me, float i) +{ + SUPER(XonoticGametypeList).setSelected(me, i); + me.saveCvars(me); +} + +void XonoticGametypeList_loadCvars(entity me) +{ + float t; + t = MapInfo_CurrentGametype(); + float i; + for(i = 0; i < GameType_GetCount(); ++i) + if(t == GameType_GetID(i)) + break; + if(i >= GameType_GetCount()) + { + for(i = 0; i < GameType_GetCount(); ++i) + if(t == MAPINFO_TYPE_DEATHMATCH) + break; + if(i >= GameType_GetCount()) + i = 0; + } + me.setSelected(me, i); + // do we need this: me.parent.gameTypeChangeNotify(me.parent); // to make sure +} +void XonoticGametypeList_saveCvars(entity me) +{ + float t; + t = GameType_GetID(me.selectedItem); + if(t == MapInfo_CurrentGametype()) + return; + MapInfo_SwitchGameType(t); + me.parent.gameTypeChangeNotify(me.parent); +} +void XonoticGametypeList_drawListBoxItem(entity me, float i, vector absSize, float isSelected) +{ + string s; + if(isSelected) + draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED); + s = GameType_GetName(i); + draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize)) * 0.5) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0); +} +void XonoticGametypeList_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize) +{ + SUPER(XonoticServerList).resizeNotify(me, relOrigin, relSize, absOrigin, absSize); + me.realFontSize_y = me.fontSize / (absSize_y * me.itemHeight); + me.realFontSize_x = me.fontSize / (absSize_x * (1 - me.controlWidth)); + me.realUpperMargin = 0.5 * (1 - me.realFontSize_y); + me.columnNameOrigin = 0; + me.columnNameSize = 1; +} +#endif diff --git a/qcsrc/menu/xonotic/inputbox.c b/qcsrc/menu/xonotic/inputbox.c index e457414b4..2a9c094b8 100644 --- a/qcsrc/menu/xonotic/inputbox.c +++ b/qcsrc/menu/xonotic/inputbox.c @@ -20,6 +20,8 @@ CLASS(XonoticInputBox) EXTENDS(InputBox) METHOD(XonoticInputBox, loadCvars, void(entity)) METHOD(XonoticInputBox, saveCvars, void(entity)) METHOD(XonoticInputBox, keyDown, float(entity, float, float, float)) + + ATTRIB(XonoticInputBox, saveImmediately, float, 0) ENDCLASS(XonoticInputBox) entity makeXonoticInputBox(float, string); #endif @@ -54,6 +56,8 @@ void XonoticInputBox_setText(entity me, string new) { SUPER(XonoticInputBox).setText(me, new); me.onChange(me, me.onChangeEntity); + if(me.saveImmediately) + me.saveCvars(me); } else SUPER(XonoticInputBox).setText(me, new); diff --git a/qcsrc/menu/xonotic/keybinder.c b/qcsrc/menu/xonotic/keybinder.c index 3117c65e4..f4a6c5a3e 100644 --- a/qcsrc/menu/xonotic/keybinder.c +++ b/qcsrc/menu/xonotic/keybinder.c @@ -47,7 +47,7 @@ void Xonotic_KeyBinds_Read() string s; Xonotic_KeyBinds_Count = 0; - fh = fopen("keybinds.txt", FILE_READ); + fh = fopen(language_filename("keybinds.txt"), FILE_READ); if(fh < 0) return; while((s = fgets(fh))) @@ -137,6 +137,7 @@ void XonoticKeyBinder_keyGrabbed(entity me, float key, float ascii) } } localcmd("\nbind \"", keynumtostring(key), "\" \"", func, "\"\n"); + localcmd("-zoom\n"); // to make sure we aren't in togglezoom'd state } void XonoticKeyBinder_editUserbind(entity me, string theName, string theCommandPress, string theCommandRelease) { @@ -197,7 +198,7 @@ void KeyBinder_Bind_Clear(entity btn, entity me) //localcmd("\nunbind \"", keynumtostring(k), "\"\n"); localcmd("\nbind \"", keynumtostring(k), "\" \"", KEY_NOT_BOUND_CMD, "\"\n"); } - + localcmd("-zoom\n"); // to make sure we aren't in togglezoom'd state } void XonoticKeyBinder_clickListBoxItem(entity me, float i, vector where) { diff --git a/qcsrc/menu/xonotic/languagelist.c b/qcsrc/menu/xonotic/languagelist.c new file mode 100644 index 000000000..0ea54dbca --- /dev/null +++ b/qcsrc/menu/xonotic/languagelist.c @@ -0,0 +1,184 @@ +#ifdef INTERFACE +CLASS(XonoticLanguageList) EXTENDS(XonoticListBox) + METHOD(XonoticLanguageList, configureXonoticLanguageList, void(entity)) + ATTRIB(XonoticLanguageList, rowsPerItem, float, 1) + METHOD(XonoticLanguageList, drawListBoxItem, void(entity, float, vector, float)) + METHOD(XonoticLanguageList, resizeNotify, void(entity, vector, vector, vector, vector)) + METHOD(XonoticLanguageList, setSelected, void(entity, float)) + METHOD(XonoticLanguageList, loadCvars, void(entity)) + METHOD(XonoticLanguageList, saveCvars, void(entity)) + + ATTRIB(XonoticLanguageList, realFontSize, vector, '0 0 0') + ATTRIB(XonoticLanguageList, realUpperMargin, float, 0) + ATTRIB(XonoticLanguageList, columnNameOrigin, float, 0) + ATTRIB(XonoticLanguageList, columnNameSize, float, 0) + + METHOD(XonoticLanguageList, clickListBoxItem, void(entity, float, vector)) // double click handling + METHOD(XonoticLanguageList, keyDown, float(entity, float, float, float)) // enter handling + ATTRIB(XonoticLanguageList, lastClickedLanguage, float, -1) + ATTRIB(XonoticLanguageList, lastClickedTime, float, 0) + + METHOD(XonoticLanguageList, destroy, void(entity)) + + ATTRIB(XonoticLanguageList, languagelist, float, -1) + METHOD(XonoticLanguageList, getLanguages, void(entity)) + METHOD(XonoticLanguageList, setLanguage, void(entity)) + METHOD(XonoticLanguageList, languageParameter, string(entity, float, float)) + + ATTRIB(XonoticLanguageList, name, string, "languageselector") // change this to make it noninteractive (for first run dialog) + + ATTRIB(XonoticLanguageList, doubleClickCommand, string, "menu_restart\ntogglemenu\ndefer 0.1 \"menu_cmd languageselect\"") +ENDCLASS(XonoticLanguageList) + +entity makeXonoticLanguageList(); +void SetLanguage_Click(entity btn, entity me); +#endif + +#ifdef IMPLEMENTATION + +#define LANGPARM_ID 0 +#define LANGPARM_NAME 1 +#define LANGPARM_NAME_LOCALIZED 2 +#define LANGPARM_COUNT 3 + +entity makeXonoticLanguageList() +{ + entity me; + me = spawnXonoticLanguageList(); + me.configureXonoticLanguageList(me); + return me; +} + +void XonoticLanguageList_configureXonoticLanguageList(entity me) +{ + me.configureXonoticListBox(me); + me.getLanguages(me); + me.loadCvars(me); +} + +void XonoticLanguageList_drawListBoxItem(entity me, float i, vector absSize, float isSelected) +{ + string s; + if(isSelected) + draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED); + s = me.languageParameter(me, i, LANGPARM_NAME_LOCALIZED); + draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize)) * 0.5) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0); +} + +void XonoticLanguageList_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize) +{ + SUPER(XonoticLanguageList).resizeNotify(me, relOrigin, relSize, absOrigin, absSize); + me.realFontSize_y = me.fontSize / (absSize_y * me.itemHeight); + me.realFontSize_x = me.fontSize / (absSize_x * (1 - me.controlWidth)); + me.realUpperMargin = 0.5 * (1 - me.realFontSize_y); + me.columnNameOrigin = 0; + me.columnNameSize = 1; +} + +void XonoticLanguageList_setSelected(entity me, float i) +{ + SUPER(XonoticLanguageList).setSelected(me, i); + me.saveCvars(me); +} + +void XonoticLanguageList_loadCvars(entity me) +{ + string s; + float i, n; + s = cvar_string("prvm_language"); + n = me.nItems; + + // default to English + for(i = 0; i < n; ++i) + { + if(me.languageParameter(me, i, LANGPARM_ID) == "en") + { + me.selectedItem = i; + break; + } + } + + // otherwise, find the language + for(i = 0; i < n; ++i) + { + if(me.languageParameter(me, i, LANGPARM_ID) == s) + { + me.selectedItem = i; + break; + } + } +} + +void XonoticLanguageList_saveCvars(entity me) +{ + cvar_set("prvm_language", me.languageParameter(me, me.selectedItem, LANGPARM_ID)); +} + +void XonoticLanguageList_clickListBoxItem(entity me, float i, vector where) +{ + if(i == me.lastClickedLanguage) + if(time < me.lastClickedTime + 0.3) + { + // DOUBLE CLICK! + me.setSelected(me, i); + me.setLanguage(me); + } + me.lastClickedLanguage = i; + me.lastClickedTime = time; +} + +float XonoticLanguageList_keyDown(entity me, float scan, float ascii, float shift) +{ + if(scan == K_ENTER || scan == K_KP_ENTER) { + me.setLanguage(me); + return 1; + } + else + return SUPER(XonoticLanguageList).keyDown(me, scan, ascii, shift); +} + +void XonoticLanguageList_destroy(entity me) +{ + buf_del(me.languagelist); +} + +void XonoticLanguageList_getLanguages(entity me) +{ + float buf, i, n, fh; + string s; + + buf = buf_create(); + + fh = fopen("languages.txt", FILE_READ); + while((s = fgets(fh))) + { + n = tokenize_console(s); + if(n < 3) + continue; + bufstr_set(buf, i * LANGPARM_COUNT + LANGPARM_ID, argv(0)); + bufstr_set(buf, i * LANGPARM_COUNT + LANGPARM_NAME, argv(1)); + bufstr_set(buf, i * LANGPARM_COUNT + LANGPARM_NAME_LOCALIZED, argv(2)); + ++i; + } + fclose(fh); + + me.languagelist = buf; + me.nItems = i; +} + +void XonoticLanguageList_setLanguage(entity me) +{ + localcmd(sprintf("\n%s\n", me.doubleClickCommand)); +} + +string XonoticLanguageList_languageParameter(entity me, float i, float key) +{ + return bufstr_get(me.languagelist, i * LANGPARM_COUNT + key); +} + +void SetLanguage_Click(entity btn, entity me) +{ + me.setLanguage(me); +} + +#endif diff --git a/qcsrc/menu/xonotic/mainwindow.c b/qcsrc/menu/xonotic/mainwindow.c index 72e5faac3..bd15150a8 100644 --- a/qcsrc/menu/xonotic/mainwindow.c +++ b/qcsrc/menu/xonotic/mainwindow.c @@ -1,6 +1,8 @@ #ifdef INTERFACE CLASS(MainWindow) EXTENDS(ModalController) METHOD(MainWindow, configureMainWindow, void(entity)) + METHOD(MainWindow, draw, void(entity)) + ATTRIB(MainWindow, firstRunDialog, entity, NULL) ATTRIB(MainWindow, advancedDialog, entity, NULL) ATTRIB(MainWindow, mutatorsDialog, entity, NULL) ATTRIB(MainWindow, weaponsDialog, entity, NULL) @@ -12,23 +14,38 @@ CLASS(MainWindow) EXTENDS(ModalController) ATTRIB(MainWindow, cvarsDialog, entity, NULL) ATTRIB(MainWindow, mainNexposee, entity, NULL) ATTRIB(MainWindow, fadedAlpha, float, SKINALPHA_BEHIND) + ATTRIB(MainWindow, dialogToShow, entity, NULL) ENDCLASS(MainWindow) #endif #ifdef IMPLEMENTATION +void MainWindow_draw(entity me) +{ + SUPER(MainWindow).draw(me); + + if(me.dialogToShow) + { + DialogOpenButton_Click_withCoords(world, me.dialogToShow, '0 0 0', eX * conwidth + eY * conheight); + me.dialogToShow = NULL; + } +} void DemoButton_Click(entity me, entity other) { - if(me.text == "Do not press this button again!") + if(me.text == _("Do not press this button again!")) DialogOpenButton_Click(me, other); else - me.setText(me, "Do not press this button again!"); + me.setText(me, _("Do not press this button again!")); } void MainWindow_configureMainWindow(entity me) { entity n, i; + me.firstRunDialog = i = spawnXonoticFirstRunDialog(); + i.configureDialog(i); + me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z); + i = spawnXonoticTeamSelectDialog(); i.configureDialog(i); me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z); @@ -173,6 +190,9 @@ void MainWindow_configureMainWindow(entity me) me.moveItemAfter(me, n, NULL); me.initializeDialog(me, n); + + if(cvar_string("_cl_name") == "Player") + me.dialogToShow = me.firstRunDialog; } #endif diff --git a/qcsrc/menu/xonotic/maplist.c b/qcsrc/menu/xonotic/maplist.c index 8b5ce6d6a..69757126b 100644 --- a/qcsrc/menu/xonotic/maplist.c +++ b/qcsrc/menu/xonotic/maplist.c @@ -275,26 +275,30 @@ void MapList_LoadMap(entity btn, entity me) m = MapInfo_BSPName_ByID(i); if not(m) { - print("Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n"); + print(_("Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n")); + me.refilter(me); return; } if(MapInfo_CheckMap(m)) { localcmd("\nmenu_loadmap_prepare\n"); if(cvar("menu_use_default_hostname")) - localcmd("hostname \"", strdecolorize(cvar_string("_cl_name")), "'s Xonotic server\"\n"); + localcmd("hostname \"", sprintf(_("%s's Xonotic Server"), strdecolorize(cvar_string("_cl_name"))), "\"\n"); MapInfo_LoadMap(m); } else { - print("Huh? Can't play this (invalid game type). Refiltering so this won't happen again.\n"); + print(_("Huh? Can't play this (invalid game type). Refiltering so this won't happen again.\n")); me.refilter(me); + return; } } float XonoticMapList_keyDown(entity me, float scan, float ascii, float shift) { string ch, save; + if(me.nItems <= 0) + return SUPER(XonoticMapList).keyDown(me, scan, ascii, shift); if(scan == K_ENTER || scan == K_KP_ENTER) { // pop up map info screen diff --git a/qcsrc/menu/xonotic/playermodel.c b/qcsrc/menu/xonotic/playermodel.c index bbef3a6b1..ef02224df 100644 --- a/qcsrc/menu/xonotic/playermodel.c +++ b/qcsrc/menu/xonotic/playermodel.c @@ -47,7 +47,7 @@ void XonoticPlayerModelSelector_configureXonoticPlayerModelSelector(entity me) float sortbuf, glob, i; string fn; - glob = search_begin(get_model_datafilename(string_null, -1, "txt"), TRUE, TRUE); + glob = search_begin(language_filename(get_model_datafilename(string_null, -1, "txt")), TRUE, TRUE); if (glob < 0) return; @@ -77,11 +77,11 @@ void XonoticPlayerModelSelector_configureXonoticPlayerModelSelector(entity me) bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_SKIN, ftos(get_model_parameters_modelskin)); get_model_parameters_desc = strcat(get_model_parameters_desc, "\n"); if(get_model_parameters_sex) - get_model_parameters_desc = strcat(get_model_parameters_desc, "\nSex: ", get_model_parameters_sex); + get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\nSex: %s", get_model_parameters_sex)); if(get_model_parameters_weight) - get_model_parameters_desc = strcat(get_model_parameters_desc, "\nWeight: ", ftos(get_model_parameters_weight), " kg"); + get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\nWeight: %g kg", get_model_parameters_weight)); if(get_model_parameters_age) - get_model_parameters_desc = strcat(get_model_parameters_desc, "\nAge: ", ftos(get_model_parameters_age)); + get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\nAge: %g", get_model_parameters_age)); while(substring(get_model_parameters_desc, -1, 1) == "\n") get_model_parameters_desc = substring(get_model_parameters_desc, 0, -2); bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_DESC, get_model_parameters_desc); @@ -171,7 +171,7 @@ void XonoticPlayerModelSelector_draw(entity me) if (me.numModels <= 0) { - draw_CenterText('0.5 0.5 0', "<no model found>", me.realFontSize, '1 1 1', 0.6, FALSE); + draw_CenterText('0.5 0.5 0', _("<no model found>"), me.realFontSize, '1 1 1', 0.6, FALSE); return; } diff --git a/qcsrc/menu/xonotic/rootdialog.c b/qcsrc/menu/xonotic/rootdialog.c index efc00822d..e8c9db364 100644 --- a/qcsrc/menu/xonotic/rootdialog.c +++ b/qcsrc/menu/xonotic/rootdialog.c @@ -3,7 +3,7 @@ CLASS(XonoticRootDialog) EXTENDS(XonoticDialog) // still to be customized by user /* ATTRIB(XonoticDialog, closable, float, 1) - ATTRIB(XonoticDialog, title, string, "Form1") // ;) + ATTRIB(XonoticDialog, title, string, _("Form1")) // ;) ATTRIB(XonoticDialog, color, vector, '1 0.5 1') ATTRIB(XonoticDialog, intendedWidth, float, 0) ATTRIB(XonoticDialog, rows, float, 3) diff --git a/qcsrc/menu/xonotic/serverlist.c b/qcsrc/menu/xonotic/serverlist.c index 3d5d3e843..0e4760e3f 100644 --- a/qcsrc/menu/xonotic/serverlist.c +++ b/qcsrc/menu/xonotic/serverlist.c @@ -63,6 +63,7 @@ void ServerList_ShowFull_Click(entity box, entity me); void ServerList_Filter_Change(entity box, entity me); void ServerList_Favorite_Click(entity btn, entity me); void ServerList_Info_Click(entity btn, entity me); +void ServerList_Update_favoriteButton(entity btn, entity me); #endif #ifdef IMPLEMENTATION @@ -107,6 +108,8 @@ float IsFavorite(string srv) if(srv == "") return FALSE; srv = netaddress_resolve(srv, 26000); + if(srv == "") + return FALSE; p = crypto_getidfp(srv); n = tokenize_console(cvar_string("net_slist_favorites")); for(i = 0; i < n; ++i) @@ -176,6 +179,14 @@ void ToggleFavorite(string srv) resorthostcache(); } +void ServerList_Update_favoriteButton(entity btn, entity me) +{ + if(IsFavorite(me.ipAddressBox.text)) + me.favoriteButton.setText(me.favoriteButton, _("Remove")); + else + me.favoriteButton.setText(me.favoriteButton, _("Bookmark")); +} + entity makeXonoticServerList() { entity me; @@ -247,7 +258,10 @@ void XonoticServerList_refreshServerList(entity me, float mode) m = SLIST_MASK_AND - 1; resethostcachemasks(); if(!me.filterShowFull) - sethostcachemasknumber(++m, SLIST_FIELD_FREESLOTS, 1, SLIST_TEST_GREATEREQUAL); + { + sethostcachemasknumber(++m, SLIST_FIELD_FREESLOTS, 1, SLIST_TEST_GREATEREQUAL); // legacy + sethostcachemaskstring(++m, SLIST_FIELD_QCSTATUS, ":S0:", SLIST_TEST_NOTCONTAIN); // g_maxplayers support + } if(!me.filterShowEmpty) sethostcachemasknumber(++m, SLIST_FIELD_NUMHUMANS, 1, SLIST_TEST_GREATEREQUAL); if(typestr != "") @@ -311,6 +325,7 @@ void XonoticServerList_draw(entity me) me.connectButton.disabled = ((me.nItems == 0) && (me.ipAddressBox.text == "")); me.infoButton.disabled = ((me.nItems == 0) || !owned); + me.favoriteButton.disabled = ((me.nItems == 0) && (me.ipAddressBox.text == "")); found = 0; if(me.selectedServer) @@ -350,12 +365,7 @@ void XonoticServerList_draw(entity me) if(me.ipAddressBoxFocused != me.ipAddressBox.focused) { if(me.ipAddressBox.focused || me.ipAddressBoxFocused < 0) - { - if(IsFavorite(me.ipAddressBox.text)) - me.favoriteButton.setText(me.favoriteButton, "Remove"); - else - me.favoriteButton.setText(me.favoriteButton, "Bookmark"); - } + ServerList_Update_favoriteButton(NULL, me); me.ipAddressBoxFocused = me.ipAddressBox.focused; } @@ -502,7 +512,7 @@ void XonoticServerList_resizeNotify(entity me, vector relOrigin, vector relSize, me.columnPingSize = me.realFontSize_x * 3; me.columnMapSize = me.realFontSize_x * 10; me.columnTypeSize = me.realFontSize_x * 4; - me.columnPlayersSize = me.realFontSize_x * 4; + me.columnPlayersSize = me.realFontSize_x * 5; me.columnNameSize = 1 - me.columnPlayersSize - me.columnMapSize - me.columnPingSize - me.columnIconsSize - me.columnTypeSize - 5 * me.realFontSize_x; me.columnPingOrigin = me.columnIconsOrigin + me.columnIconsSize + me.realFontSize_x; me.columnNameOrigin = me.columnPingOrigin + me.columnPingSize + me.realFontSize_x; @@ -510,11 +520,11 @@ void XonoticServerList_resizeNotify(entity me, vector relOrigin, vector relSize, me.columnTypeOrigin = me.columnMapOrigin + me.columnMapSize + me.realFontSize_x; me.columnPlayersOrigin = me.columnTypeOrigin + me.columnTypeSize + me.realFontSize_x; - me.positionSortButton(me, me.sortButton1, me.columnPingOrigin, me.columnPingSize, "Ping", ServerList_PingSort_Click); - me.positionSortButton(me, me.sortButton2, me.columnNameOrigin, me.columnNameSize, "Host name", ServerList_NameSort_Click); - me.positionSortButton(me, me.sortButton3, me.columnMapOrigin, me.columnMapSize, "Map", ServerList_MapSort_Click); - me.positionSortButton(me, me.sortButton4, me.columnTypeOrigin, me.columnTypeSize, "Type", ServerList_TypeSort_Click); - me.positionSortButton(me, me.sortButton5, me.columnPlayersOrigin, me.columnPlayersSize, "Players", ServerList_PlayerSort_Click); + me.positionSortButton(me, me.sortButton1, me.columnPingOrigin, me.columnPingSize, _("Ping"), ServerList_PingSort_Click); + me.positionSortButton(me, me.sortButton2, me.columnNameOrigin, me.columnNameSize, _("Host name"), ServerList_NameSort_Click); + me.positionSortButton(me, me.sortButton3, me.columnMapOrigin, me.columnMapSize, _("Map"), ServerList_MapSort_Click); + me.positionSortButton(me, me.sortButton4, me.columnTypeOrigin, me.columnTypeSize, _("Type"), ServerList_TypeSort_Click); + me.positionSortButton(me, me.sortButton5, me.columnPlayersOrigin, me.columnPlayersSize, _("Players"), ServerList_PlayerSort_Click); float f; f = me.currentSortField; @@ -569,8 +579,10 @@ void XonoticServerList_drawListBoxItem(entity me, float i, vector absSize, float if(isSelected) draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED); - if(gethostcachenumber(SLIST_FIELD_NUMPLAYERS, i) >= gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i)) + if(gethostcachenumber(SLIST_FIELD_FREESLOTS, i) <= 0) theAlpha = SKINALPHA_SERVERLIST_FULL; + else if(strstrofs(gethostcachestring(SLIST_FIELD_QCSTATUS, i), ":S0:", 0) >= 0) + theAlpha = SKINALPHA_SERVERLIST_FULL; // g_maxplayers support else if not(gethostcachenumber(SLIST_FIELD_NUMHUMANS, i)) theAlpha = SKINALPHA_SERVERLIST_EMPTY; else @@ -707,8 +719,11 @@ float XonoticServerList_keyDown(entity me, float scan, float ascii, float shift) } else if(scan == K_MOUSE2 || scan == K_SPACE) { - main.serverInfoDialog.loadServerInfo(main.serverInfoDialog, me.selectedItem); - DialogOpenButton_Click_withCoords(me, main.serverInfoDialog, org, sz); + if(me.nItems != 0) + { + main.serverInfoDialog.loadServerInfo(main.serverInfoDialog, me.selectedItem); + DialogOpenButton_Click_withCoords(me, main.serverInfoDialog, org, sz); + } } else if(scan == K_INS || scan == K_MOUSE3 || scan == K_KP_INS) { diff --git a/qcsrc/menu/xonotic/skinlist.c b/qcsrc/menu/xonotic/skinlist.c index 864b3054a..bb01f974c 100644 --- a/qcsrc/menu/xonotic/skinlist.c +++ b/qcsrc/menu/xonotic/skinlist.c @@ -102,10 +102,10 @@ void XonoticSkinList_getSkins(entity me) { s = search_getfilename(glob, i); bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_NAME, substring(s, 9, strlen(s) - 24)); // the * part - bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_TITLE, "<TITLE>"); - bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_AUTHOR, "<AUTHOR>"); + bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_TITLE, _("<TITLE>")); + bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_AUTHOR, _("<AUTHOR>")); bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_PREVIEW, strcat("/gfx/menu/", substring(s, 9, strlen(s) - 24), "/skinpreview")); - fh = fopen(s, FILE_READ); + fh = fopen(language_filename(s), FILE_READ); if(fh < 0) { print("Warning: can't open skinvalues.txt file\n"); @@ -160,7 +160,7 @@ void XonoticSkinList_drawListBoxItem(entity me, float i, vector absSize, float i draw_Picture(me.columnPreviewOrigin * eX, s, me.columnPreviewSize * eX + eY, '1 1 1', 1); s = me.skinParameter(me, i, SKINPARM_NAME); - s = strcat(s, ": ", me.skinParameter(me, i, SKINPARM_TITLE)); + s = sprintf(_("%s: %s"), s, me.skinParameter(me, i, SKINPARM_TITLE)); s = draw_TextShortenToWidth(s, me.columnNameSize, 0, me.realFontSize); draw_Text(me.realUpperMargin1 * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, SKINCOLOR_SKINLIST_TITLE, SKINALPHA_TEXT, 0); diff --git a/qcsrc/menu/xonotic/slider_decibels.c b/qcsrc/menu/xonotic/slider_decibels.c index 0e4b4e372..24edb4cb9 100644 --- a/qcsrc/menu/xonotic/slider_decibels.c +++ b/qcsrc/menu/xonotic/slider_decibels.c @@ -47,10 +47,10 @@ void XonoticDecibelsSlider_saveCvars(entity me) string XonoticDecibelsSlider_valueToText(entity me, float v) { if(v < -33) - return "OFF"; + return CTX(_("VOL^OFF")); else if(v >= -0.1) - return "MAX"; - return strcat(SUPER(XonoticDecibelsSlider).valueToText(me, v), " dB"); + return CTX(_("VOL^MAX")); + return sprintf(_("%s dB"), SUPER(XonoticDecibelsSlider).valueToText(me, v)); } #endif diff --git a/qcsrc/menu/xonotic/slider_picmip.c b/qcsrc/menu/xonotic/slider_picmip.c index e906242fe..ddedc4bab 100644 --- a/qcsrc/menu/xonotic/slider_picmip.c +++ b/qcsrc/menu/xonotic/slider_picmip.c @@ -3,6 +3,7 @@ CLASS(XonoticPicmipSlider) EXTENDS(XonoticTextSlider) METHOD(XonoticPicmipSlider, configureXonoticPicmipSlider, void(entity)) METHOD(XonoticPicmipSlider, draw, void(entity)) METHOD(XonoticPicmipSlider, autofix, void(entity)) + ATTRIB(XonoticPicmipSlider, have_s3tc, float, 0) ENDCLASS(XonoticPicmipSlider) entity makeXonoticPicmipSlider(); // note: you still need to call addValue and configureXonoticTextSliderValues! #endif @@ -19,23 +20,26 @@ void XonoticPicmipSlider_configureXonoticPicmipSlider(entity me) { me.configureXonoticTextSlider(me, "gl_picmip"); me.autofix(me); + me.have_s3tc = GL_Have_TextureCompression(); } -float texmemsize() +float texmemsize(float s3tc) { return ( - 2500 * pow(0.5, max(0, cvar("gl_picmip") + cvar("gl_picmip_other"))) - + 1500 * pow(0.5, max(0, cvar("gl_picmip") + cvar("gl_picmip_world"))) - ) * ((cvar("r_texture_dds_load") || cvar("gl_texturecompression")) ? 0.4 : 1.0); // TC: normalmaps 50%, other 25%, few incompressible, guessing 40% as conservative average + 2500 * pow(0.25, max(0, cvar("gl_picmip") + cvar("gl_picmip_other"))) + + 1500 * pow(0.25, max(0, cvar("gl_picmip") + cvar("gl_picmip_world"))) + ) * ((s3tc && (cvar("r_texture_dds_load") || cvar("gl_texturecompression"))) ? 0.2 : 1.0); // TC: normalmaps 50%, other 25%, few incompressible, guessing 40% as conservative average } void XonoticPicmipSlider_autofix(entity me) { float max_hard, max_soft; + if(cvar("menu_picmip_bypass")) + return; max_hard = cvar("sys_memsize_virtual"); max_soft = cvar("sys_memsize_physical"); if(max_hard > 0) { - while(me.value > 0 && texmemsize() > max_hard) + while(me.value > 0 && texmemsize(me.have_s3tc) > max_hard) me.setValue(me, me.value - 1); } // TODO also check the soft limit! diff --git a/qcsrc/menu/xonotic/slider_resolution.c b/qcsrc/menu/xonotic/slider_resolution.c index de34a410d..d5d013048 100644 --- a/qcsrc/menu/xonotic/slider_resolution.c +++ b/qcsrc/menu/xonotic/slider_resolution.c @@ -62,7 +62,7 @@ entity makeXonoticResolutionSlider() } void XonoticResolutionSlider_addResolution(entity me, float w, float h, float pixelheight) { - me.addValue(me, strzone(strcat(ftos(w), "x", ftos(h))), strzone(strcat(ftos(w), " ", ftos(h), " ", ftos(pixelheight)))); + me.addValue(me, strzone(sprintf(_("%dx%d"), w, h)), strzone(strcat(ftos(w), " ", ftos(h), " ", ftos(pixelheight)))); // FIXME (in case you ever want to dynamically instantiate this): THIS IS NEVER FREED } void XonoticResolutionSlider_configureXonoticResolutionSlider(entity me) @@ -83,11 +83,24 @@ void XonoticResolutionSlider_configureXonoticResolutionSlider(entity me) if(r == r0) continue; r0 = r; - if(r_x < 640 || r_y < 400) + if(r_x < 640 || r_y < 480) + continue; + if(r_x > 2 * r_y) // likely dualscreen resolution, skip this one continue; me.addResolution(me, r_x, r_y, r_z); } + if(me.nValues == 0) + { + me.addResolution(me, 640, 480, 1); + me.addResolution(me, 800, 600, 1); + me.addResolution(me, 1024, 768, 1); + me.addResolution(me, 1280, 960, 1); + me.addResolution(me, 1280, 1024, 1); + me.addResolution(me, 1650, 1080, 1); + me.addResolution(me, 1920, 1080, 1); + } + me.configureXonoticTextSliderValues(me); } void XonoticResolutionSlider_loadCvars(entity me) diff --git a/qcsrc/menu/xonotic/util.qc b/qcsrc/menu/xonotic/util.qc index c968c60ac..1d21ba491 100644 --- a/qcsrc/menu/xonotic/util.qc +++ b/qcsrc/menu/xonotic/util.qc @@ -1,11 +1,22 @@ +float GL_CheckExtension(string ext) +{ + return (strstrofs(strcat(" ", cvar_string("gl_info_extensions"), " "), strcat(" ", ext, " "), 0) >= 0); +} + +float GL_Have_TextureCompression() +{ + return (GL_CheckExtension("GL_EXT_texture_compression_s3tc") && GL_CheckExtension("GL_ARB_texture_compression")); +} + float tooltipdb; void loadTooltips() { - tooltipdb = db_load("tooltips.db"); + tooltipdb = db_load(language_filename("tooltips.db")); } void unloadTooltips() { - db_close(tooltipdb); + if(tooltipdb >= 0) + db_close(tooltipdb); tooltipdb = -1; } string getZonedTooltipForIdentifier(string s) @@ -13,14 +24,20 @@ string getZonedTooltipForIdentifier(string s) string t; if(s == "") return string_null; - t = db_get(tooltipdb, s); - if(t == "-") - return string_null; - if(t != "") - return strzone(t); - t = cvar_description(s); - if(t != "" && t != "custom cvar") - return strzone(t); + if(tooltipdb >= 0) + { + t = db_get(tooltipdb, s); + if(t == "-") + return string_null; + if(t != "") + return strzone(t); + } + if(prvm_language == "en" || prvm_language == "") + { + t = cvar_description(s); + if(t != "" && t != "custom cvar") + return strzone(t); + } dprint("WARNING: no tooltip set for ", s, "\n"); return string_null; } @@ -250,7 +267,7 @@ void URI_Get_Callback(float id, float status, string data) } else { - print("Received HTTP request data for an invalid id ", ftos(id), ".\n"); + print(sprintf(_("Received HTTP request data for an invalid id %d.\n"), id)); } } @@ -260,22 +277,22 @@ void UpdateNotification_URI_Get_Callback(float id, float status, string data) if(_Nex_ExtResponseSystem_UpdateTo) { - print("error: UpdateNotification_URI_Get_Callback has been called before\n"); + dprint("error: UpdateNotification_URI_Get_Callback has been called before\n"); return; } if(status != 0) { - print(sprintf("error receiving update notification: status is %d\n", status)); + print(sprintf(_("error receiving update notification: status is %d\n"), status)); return; } if(substring(data, 0, 1) == "<") { - print("error: received HTML instead of an update notification\n"); + print(_("error: received HTML instead of an update notification\n")); return; } if(strstrofs(data, "\r", 0) != -1) { - print("error: received carriage returns from update notification server\n"); + print(_("error: received carriage returns from update notification server\n")); return; } @@ -296,7 +313,7 @@ void UpdateNotification_URI_Get_Callback(float id, float status, string data) { // update needed if(n >= 2) - print(sprintf("Update can be downloaded at:\n%s\n", argv(1))); + print(sprintf(_("Update can be downloaded at:\n%s\n"), argv(1))); } _Nex_ExtResponseSystem_UpdateTo = strzone(_Nex_ExtResponseSystem_UpdateTo); @@ -317,7 +334,7 @@ float preMenuInit() draw_reset_cropped(); sz = eX * 0.025 + eY * 0.025 * (draw_scale_x / draw_scale_y); - draw_CenterText('0.5 0.5 0' - 1.25 * sz_y * eY, "Autogenerating mapinfo for newly added maps...", sz, '1 1 1', 1, 0); + draw_CenterText('0.5 0.5 0' - 1.25 * sz_y * eY, _("Autogenerating mapinfo for newly added maps..."), sz, '1 1 1', 1, 0); boxA = '0.05 0.5 0' + 0.25 * sz_y * eY; boxB = '0.95 0.5 0' + 1.25 * sz_y * eY; @@ -404,7 +421,7 @@ void preMenuDraw() // TODO rather turn this into a dialog fs = ((1/draw_scale_x) * eX + (1/draw_scale_y) * eY) * 12; line = eY * fs_y; - sz_x = draw_TextWidth(" http://www.xonotic.com/ ", 0, fs); + sz_x = draw_TextWidth(" http://www.xonotic.org/ ", 0, fs); sz_y = 3 * fs_y; draw_alpha = sin(time * 0.112 - 0.3) * 10; @@ -412,7 +429,7 @@ void preMenuDraw() + eY * (0.5 + 0.5 * (1 - sz_y) * sin(time * 0.071)); draw_Fill(mid - 0.5 * sz, sz, '1 1 0', 1); - draw_CenterText(mid - 1 * line, strcat("Update to ", _Nex_ExtResponseSystem_UpdateTo, " now!"), fs, '1 0 0', 1, 0); + draw_CenterText(mid - 1 * line, sprintf(_("Update to %s now!"), _Nex_ExtResponseSystem_UpdateTo), fs, '1 0 0', 1, 0); draw_CenterText(mid - 0 * line, "http://www.xonotic.org/", fs, '0 0 1', 1, 0); } if not(campaign_name_previous) @@ -459,29 +476,159 @@ float updateCompression() { float fh; float have_dds, have_jpg, have_tga; + float can_dds; if((have_dds = ((fh = fopen("dds/particles/particlefont.dds", FILE_READ)) >= 0))) fclose(fh); if((have_jpg = ((fh = fopen("particles/particlefont.jpg", FILE_READ)) >= 0))) fclose(fh); if((have_tga = ((fh = fopen("particles/particlefont.tga", FILE_READ)) >= 0))) fclose(fh); + can_dds = GL_Have_TextureCompression(); if(have_dds && (have_jpg || have_tga)) { // both? Let's only use good quality precompressed files - cvar_set("gl_texturecompression", "0"); - return 1; + // but ONLY if we actually support it! + if(can_dds) + { + cvar_set("gl_texturecompression", "0"); + return 1; + } + else + { + cvar_set("gl_texturecompression", "0"); + cvar_set("r_texture_dds_load", "0"); + return 0; + } } else if(have_dds) { // DDS only? We probably always want texture compression cvar_set("gl_texturecompression", "1"); cvar_set("r_texture_dds_load", "1"); + if(!can_dds) + print(_("^1ERROR: Texture compression is required but not supported.\n^1Expect visual problems.\n")); return 0; } else { // TGA only? Allow runtime compression - cvar_set("gl_texturecompression", cvar_string("r_texture_dds_load")); - return 2; + if(can_dds) + { + cvar_set("gl_texturecompression", cvar_string("r_texture_dds_load")); + return 2; + } + else + { + cvar_set("gl_texturecompression", "0"); + cvar_set("r_texture_dds_load", "0"); + return 0; + } } } + +// note: include only those that should be in the menu! +#define GAMETYPES \ + GAMETYPE(MAPINFO_TYPE_ARENA, _("Arena")) \ + GAMETYPE(MAPINFO_TYPE_ASSAULT, _("Assault")) \ + GAMETYPE(MAPINFO_TYPE_CTF, _("Capture The Flag")) \ + GAMETYPE(MAPINFO_TYPE_CA, _("Clan Arena")) \ + GAMETYPE(MAPINFO_TYPE_DEATHMATCH, _("Deathmatch")) \ + GAMETYPE(MAPINFO_TYPE_DOMINATION, _("Domination")) \ + GAMETYPE(MAPINFO_TYPE_FREEZETAG, _("Freeze Tag")) \ + GAMETYPE(MAPINFO_TYPE_KEEPAWAY, _("Keepaway")) \ + GAMETYPE(MAPINFO_TYPE_KEYHUNT, _("Key Hunt")) \ + GAMETYPE(MAPINFO_TYPE_LMS, _("Last Man Standing")) \ + GAMETYPE(MAPINFO_TYPE_NEXBALL, _("Nexball")) \ + GAMETYPE(MAPINFO_TYPE_ONSLAUGHT, _("Onslaught")) \ + GAMETYPE(MAPINFO_TYPE_RACE, _("Race")) \ + GAMETYPE(MAPINFO_TYPE_CTS, _("Race CTS")) \ + GAMETYPE(MAPINFO_TYPE_RUNEMATCH, _("Runematch")) \ + GAMETYPE(MAPINFO_TYPE_TEAM_DEATHMATCH, _("Team Deathmatch")) \ + /* nothing */ + +float GameType_GetID(float cnt) +{ + float i; + i = 0; +#define GAMETYPE(id,name) if(i++ == cnt) return id; + GAMETYPES +#undef GAMETYPE + return 0; +} +string GameType_GetName(float cnt) +{ + float i; + i = 0; +#define GAMETYPE(id,name) if(i++ == cnt) return name; + GAMETYPES +#undef GAMETYPE + return _("@!#%'n Tuba Throwing"); +} +float GameType_GetCount() +{ + float i; + i = 0; +#define GAMETYPE(id,name) ++i; + GAMETYPES +#undef GAMETYPE + return i; +} + +void dialog_hudpanel_common_notoggle(entity me, string panelname) +{ + float i; + entity e; + + me.TR(me); + me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Background:"))); + me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg")))); + e.addValue(e, _("Default"), ""); + e.addValue(e, _("Disable"), "0"); + e.addValue(e, strzone(strcat("border_", panelname)), strzone(strcat("border_", panelname))); + e.configureXonoticTextSliderValues(e); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Color:"))); + me.TD(me, 2, 2.6, e = makeXonoticColorpickerString(strzone(strcat("hud_panel_", panelname, "_bg_color")), "hud_panel_bg_color")); + setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_bg_color")), ""); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.0, e = makeXonoticCheckBoxString("", "1 1 1", strzone(strcat("hud_panel_", panelname, "_bg_color")), _("Use default"))); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Border size:"))); + me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_border")))); + e.addValue(e, _("Default"), ""); + e.addValue(e, _("Disable"), "0"); + for(i = 1; i <= 10; ++i) + e.addValue(e, strzone(ftos_decimals(i * 2, 0)), strzone(ftos(i * 2))); + e.configureXonoticTextSliderValues(e); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Alpha:"))); + me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_alpha")))); + e.addValue(e, _("Default"), ""); + for(i = 1; i <= 10; ++i) + e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); + e.configureXonoticTextSliderValues(e); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Team Color:"))); + me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_color_team")))); + e.addValue(e, _("Default"), ""); + e.addValue(e, _("Disable"), "0"); + for(i = 1; i <= 10; ++i) + e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10))); + e.configureXonoticTextSliderValues(e); + me.TR(me); + me.TDempty(me, 0.4); + me.TD(me, 1, 3.6, e = makeXonoticCheckBox(0, "hud_configure_teamcolorforced", _("Test team color in configure mode"))); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Padding:"))); + me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_bg_padding")))); + e.addValue(e, _("Default"), ""); + for(i = 0; i <= 10; ++i) + e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5))); + e.configureXonoticTextSliderValues(e); +} diff --git a/qcsrc/menu/xonotic/util.qh b/qcsrc/menu/xonotic/util.qh index ace912dc2..0d31f0150 100644 --- a/qcsrc/menu/xonotic/util.qh +++ b/qcsrc/menu/xonotic/util.qh @@ -1,3 +1,6 @@ +float GL_CheckExtension(string ext); +float GL_Have_TextureCompression(); + void forAllDescendants(entity root, void(entity, entity) funcPre, void(entity, entity) funcPost, entity pass); void saveAllCvars(entity root); void loadAllCvars(entity root); @@ -31,3 +34,17 @@ float URI_GET_CURL_END = 9; void Curl_URI_Get_Callback(float id, float status, string data); void URI_Get_Callback(float id, float status, string data); + +// game type list box stuff (does not NEED to contain all game types, other +// types stay available via console) +float GameType_GetID(float cnt); +string GameType_GetName(float cnt); +float GameType_GetCount(); + +void dialog_hudpanel_common_notoggle(entity me, string panelname); +#define DIALOG_HUDPANEL_COMMON_NOTOGGLE() \ + dialog_hudpanel_common_notoggle(me, panelname) +#define DIALOG_HUDPANEL_COMMON() \ + me.TR(me); \ + me.TD(me, 1, 4, e = makeXonoticCheckBox(0, strzone(strcat("hud_panel_", panelname)), _("Enable panel"))); \ + DIALOG_HUDPANEL_COMMON_NOTOGGLE() diff --git a/qcsrc/server/anticheat.qc b/qcsrc/server/anticheat.qc index 1da6ad3ec..d00c60b09 100644 --- a/qcsrc/server/anticheat.qc +++ b/qcsrc/server/anticheat.qc @@ -1,3 +1,5 @@ +.float anticheat_jointime; + void mean_accumulate(entity e, .float a, .float c, float mean, float value, float weight) { if(weight == 0) @@ -67,14 +69,14 @@ void anticheat_physics() { if(time < self.anticheat_div0_evade_offset) self.anticheat_div0_evade_v_angle = self.v_angle; - MEAN_ACCUMULATE(anticheat_div0_evade, 1 - (self.anticheat_div0_evade_forward_initial * v_forward), 1); + MEAN_ACCUMULATE(anticheat_div0_evade, 0.5 - 0.5 * (self.anticheat_div0_evade_forward_initial * v_forward), 1); } - MEAN_ACCUMULATE(anticheat_div0_strafebot_old, movement_oddity(self.movement, self.anticheat_div0_strafebot_movement_prev), max(0, sys_frametime - frametime)); + MEAN_ACCUMULATE(anticheat_div0_strafebot_old, movement_oddity(self.movement, self.anticheat_div0_strafebot_movement_prev), 1); self.anticheat_div0_strafebot_movement_prev = self.movement; if(vlen(self.anticheat_div0_strafebot_forward_prev)) - MEAN_ACCUMULATE(anticheat_div0_strafebot_new, 1 - (self.anticheat_div0_strafebot_forward_prev * v_forward), max(0, sys_frametime - frametime)); + MEAN_ACCUMULATE(anticheat_div0_strafebot_new, 0.5 - 0.5 * (self.anticheat_div0_strafebot_forward_prev * v_forward), 1); self.anticheat_div0_strafebot_forward_prev = v_forward; // generic speedhack detection: correlate anticheat_speedhack_movetime (UPDATED BEFORE THIS) and server time @@ -88,7 +90,7 @@ void anticheat_physics() self.anticheat_speedhack_offset = f; else { - MEAN_ACCUMULATE(anticheat_speedhack, fabs(f - self.anticheat_speedhack_offset), 1); + MEAN_ACCUMULATE(anticheat_speedhack, max(0, f - self.anticheat_speedhack_offset), 1); self.anticheat_speedhack_offset += (f - self.anticheat_speedhack_offset) * frametime * 0.1; } @@ -151,14 +153,26 @@ void anticheat_prethink() self.anticheat_div0_evade_offset = 0; } +string anticheat_display(float f, float tmin, float mi, float ma) +{ + string s; + s = ftos(f); + if(f <= mi) + return strcat(s, ":N"); + if(f >= ma) + return strcat(s, ":Y"); + return strcat(s, ":-"); +} + void anticheat_report() { if(!autocvar_sv_eventlog) return; - GameLogEcho(strcat(":anticheat:speedhack:", ftos(self.playerid), ":", ftos(MEAN_EVALUATE(anticheat_speedhack)))); - GameLogEcho(strcat(":anticheat:div0_strafebot_old:", ftos(self.playerid), ":", ftos(MEAN_EVALUATE(anticheat_div0_strafebot_old)))); - GameLogEcho(strcat(":anticheat:div0_strafebot_new:", ftos(self.playerid), ":", ftos(MEAN_EVALUATE(anticheat_div0_strafebot_new)))); - GameLogEcho(strcat(":anticheat:div0_evade:", ftos(self.playerid), ":", ftos(MEAN_EVALUATE(anticheat_div0_evade)))); + GameLogEcho(strcat(":anticheat:_time:", ftos(self.playerid), ":", ftos(servertime - self.anticheat_jointime))); + GameLogEcho(strcat(":anticheat:speedhack:", ftos(self.playerid), ":", anticheat_display(MEAN_EVALUATE(anticheat_speedhack), 240, 0.1, 0.15))); + GameLogEcho(strcat(":anticheat:div0_strafebot_old:", ftos(self.playerid), ":", anticheat_display(MEAN_EVALUATE(anticheat_div0_strafebot_old), 120, 0.3, 0.4))); + GameLogEcho(strcat(":anticheat:div0_strafebot_new:", ftos(self.playerid), ":", anticheat_display(MEAN_EVALUATE(anticheat_div0_strafebot_new), 120, 0.3, 0.4))); + GameLogEcho(strcat(":anticheat:div0_evade:", ftos(self.playerid), ":", anticheat_display(MEAN_EVALUATE(anticheat_div0_evade), 120, 0.1, 0.2))); } void anticheat_serverframe() @@ -169,6 +183,7 @@ void anticheat_serverframe() void anticheat_init() { self.anticheat_speedhack_offset = 0; + self.anticheat_jointime = servertime; } void anticheat_shutdown() diff --git a/qcsrc/server/assault.qc b/qcsrc/server/assault.qc index 0d7da7357..05b2cc750 100644 --- a/qcsrc/server/assault.qc +++ b/qcsrc/server/assault.qc @@ -71,7 +71,11 @@ void assault_objective_decrease_use() { } if(other.assault_sprite) + { WaypointSprite_Disown(other.assault_sprite, waypointsprite_deadlifetime); + if(other.classname == "func_assault_destructible") + other.sprite = world; + } else return; // already activated! cannot activate again! @@ -148,7 +152,11 @@ void target_objective_decrease_activate() for(ent = world; (ent = find(ent, target, self.targetname)); ) { if(ent.assault_sprite != world) + { WaypointSprite_Disown(ent.assault_sprite, waypointsprite_deadlifetime); + if(ent.classname == "func_assault_destructible") + ent.sprite = world; + } spr = WaypointSprite_SpawnFixed("<placeholder>", 0.5 * (ent.absmin + ent.absmax), ent, assault_sprite); spr.assault_decreaser = self; @@ -156,7 +164,12 @@ void target_objective_decrease_activate() spr.classname = "sprite_waypoint"; WaypointSprite_UpdateRule(spr, assault_attacker_team, SPRITERULE_TEAMPLAY); if(ent.classname == "func_assault_destructible") + { WaypointSprite_UpdateSprites(spr, "as-defend", "as-destroy", "as-destroy"); + WaypointSprite_UpdateMaxHealth(spr, ent.max_health); + WaypointSprite_UpdateHealth(spr, ent.health); + ent.sprite = spr; + } else WaypointSprite_UpdateSprites(spr, "as-defend", "as-push", "as-push"); WaypointSprite_UpdateTeamRadar(spr, RADARICON_OBJECTIVE, '1 0.5 0'); diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index c5beab269..7c3bcf897 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -35,7 +35,7 @@ float autocvar_bot_ai_enemydetectionradius; float autocvar_bot_ai_friends_aware_pickup_radius; float autocvar_bot_ai_ignoregoal_timeout; float autocvar_bot_ai_keyboard_distance; -float autocvar_bot_ai_keyboard_treshold; +float autocvar_bot_ai_keyboard_threshold; float autocvar_bot_ai_navigation_jetpack; float autocvar_bot_ai_navigation_jetpack_mindistance; float autocvar_bot_ai_strategyinterval; @@ -82,37 +82,38 @@ 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_campingrifle_auto_reload_on_switch; -float autocvar_g_balance_campingrifle_bursttime; -float autocvar_g_balance_campingrifle_magazinecapacity; -float autocvar_g_balance_campingrifle_primary_ammo; -float autocvar_g_balance_campingrifle_primary_animtime; -float autocvar_g_balance_campingrifle_primary_bulletconstant; -float autocvar_g_balance_campingrifle_primary_bullethail; -float autocvar_g_balance_campingrifle_primary_burstcost; -float autocvar_g_balance_campingrifle_primary_damage; -float autocvar_g_balance_campingrifle_primary_force; -float autocvar_g_balance_campingrifle_primary_headshotaddeddamage; -float autocvar_g_balance_campingrifle_primary_lifetime; -float autocvar_g_balance_campingrifle_primary_refire; -float autocvar_g_balance_campingrifle_primary_speed; -float autocvar_g_balance_campingrifle_primary_spread; -float autocvar_g_balance_campingrifle_primary_tracer; -float autocvar_g_balance_campingrifle_reloadtime; -float autocvar_g_balance_campingrifle_secondary; -float autocvar_g_balance_campingrifle_secondary_ammo; -float autocvar_g_balance_campingrifle_secondary_animtime; -float autocvar_g_balance_campingrifle_secondary_bulletconstant; -float autocvar_g_balance_campingrifle_secondary_bullethail; -float autocvar_g_balance_campingrifle_secondary_burstcost; -float autocvar_g_balance_campingrifle_secondary_damage; -float autocvar_g_balance_campingrifle_secondary_force; -float autocvar_g_balance_campingrifle_secondary_headshotaddeddamage; -float autocvar_g_balance_campingrifle_secondary_lifetime; -float autocvar_g_balance_campingrifle_secondary_refire; -float autocvar_g_balance_campingrifle_secondary_speed; -float autocvar_g_balance_campingrifle_secondary_spread; -float autocvar_g_balance_campingrifle_secondary_tracer; +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; +float autocvar_g_balance_sniperrifle_primary_bullethail; +float autocvar_g_balance_sniperrifle_primary_burstcost; +float autocvar_g_balance_sniperrifle_primary_damage; +float autocvar_g_balance_sniperrifle_primary_force; +float autocvar_g_balance_sniperrifle_primary_headshotaddeddamage; +float autocvar_g_balance_sniperrifle_primary_lifetime; +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; +float autocvar_g_balance_sniperrifle_secondary_bulletconstant; +float autocvar_g_balance_sniperrifle_secondary_bullethail; +float autocvar_g_balance_sniperrifle_secondary_burstcost; +float autocvar_g_balance_sniperrifle_secondary_damage; +float autocvar_g_balance_sniperrifle_secondary_force; +float autocvar_g_balance_sniperrifle_secondary_headshotaddeddamage; +float autocvar_g_balance_sniperrifle_secondary_lifetime; +float autocvar_g_balance_sniperrifle_secondary_reload; +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_cloaked_alpha; float autocvar_g_balance_crylink_primary_ammo; float autocvar_g_balance_crylink_primary_animtime; @@ -121,6 +122,7 @@ float autocvar_g_balance_crylink_primary_bounces; float autocvar_g_balance_crylink_primary_damage; float autocvar_g_balance_crylink_primary_edgedamage; float autocvar_g_balance_crylink_primary_force; +float autocvar_g_balance_crylink_primary_joindelay; float autocvar_g_balance_crylink_primary_joinexplode; float autocvar_g_balance_crylink_primary_joinexplode_damage; float autocvar_g_balance_crylink_primary_joinexplode_edgedamage; @@ -146,6 +148,7 @@ float autocvar_g_balance_crylink_secondary_bounces; float autocvar_g_balance_crylink_secondary_damage; float autocvar_g_balance_crylink_secondary_edgedamage; float autocvar_g_balance_crylink_secondary_force; +float autocvar_g_balance_crylink_secondary_joindelay; float autocvar_g_balance_crylink_secondary_joinexplode; float autocvar_g_balance_crylink_secondary_joinexplode_damage; float autocvar_g_balance_crylink_secondary_joinexplode_edgedamage; @@ -388,6 +391,7 @@ float autocvar_g_balance_laser_primary_damage; float autocvar_g_balance_laser_primary_delay; float autocvar_g_balance_laser_primary_edgedamage; float autocvar_g_balance_laser_primary_force; +float autocvar_g_balance_laser_primary_force_other_scale; float autocvar_g_balance_laser_primary_force_velocitybias; float autocvar_g_balance_laser_primary_force_zscale; float autocvar_g_balance_laser_primary_lifetime; @@ -400,6 +404,7 @@ float autocvar_g_balance_laser_secondary_animtime; float autocvar_g_balance_laser_secondary_damage; float autocvar_g_balance_laser_secondary_edgedamage; float autocvar_g_balance_laser_secondary_force; +float autocvar_g_balance_laser_secondary_force_other_scale; float autocvar_g_balance_laser_secondary_force_velocitybias; float autocvar_g_balance_laser_secondary_force_zscale; float autocvar_g_balance_laser_secondary_lifetime; @@ -414,6 +419,7 @@ float autocvar_g_balance_minelayer_edgedamage; float autocvar_g_balance_minelayer_force; float autocvar_g_balance_minelayer_health; float autocvar_g_balance_minelayer_lifetime; +float autocvar_g_balance_minelayer_lifetime_countdown; float autocvar_g_balance_minelayer_limit; float autocvar_g_balance_minelayer_protection; float autocvar_g_balance_minelayer_proximityradius; @@ -429,6 +435,7 @@ float autocvar_g_balance_minstanex_ammo; float autocvar_g_balance_minstanex_animtime; float autocvar_g_balance_minstanex_refire; float autocvar_g_balance_nex_charge; +float autocvar_g_balance_nex_charge_animlimit; float autocvar_g_balance_nex_charge_limit; float autocvar_g_balance_nex_charge_maxspeed; float autocvar_g_balance_nex_charge_mindmg; @@ -619,6 +626,7 @@ float autocvar_g_balance_tuba_refire; float autocvar_g_balance_uzi_bulletconstant; float autocvar_g_balance_uzi_burst; float autocvar_g_balance_uzi_burst_ammo; +float autocvar_g_balance_uzi_burst_animtime; float autocvar_g_balance_uzi_burst_refire; float autocvar_g_balance_uzi_burst_refire2; float autocvar_g_balance_uzi_burst_spread; @@ -719,9 +727,12 @@ float autocvar_g_freezetag_frozen_force; float autocvar_g_freezetag_point_leadlimit; float autocvar_g_freezetag_point_limit; float autocvar_g_freezetag_revive_extra_size; -float autocvar_g_freezetag_revive_time; +float autocvar_g_freezetag_revive_speed; +float autocvar_g_freezetag_revive_clearspeed; float autocvar_g_freezetag_warmup; #define autocvar_g_friendlyfire cvar("g_friendlyfire") +#define autocvar_g_friendlyfire_virtual cvar("g_friendlyfire_virtual") +#define autocvar_g_friendlyfire_virtual_force cvar("g_friendlyfire_virtual_force") float autocvar_g_full_getstatus_responses; float autocvar_g_fullbrightitems; float autocvar_g_fullbrightplayers; @@ -737,19 +748,23 @@ float autocvar_g_jetpack_attenuation; float autocvar_g_jetpack_fuel; float autocvar_g_jetpack_maxspeed_side; float autocvar_g_jetpack_maxspeed_up; -float autocvar_g_keepaway_ballcarrier_alpha; +float autocvar_g_keepaway_ballcarrier_effects; float autocvar_g_keepaway_ballcarrier_damage; float autocvar_g_keepaway_ballcarrier_force; float autocvar_g_keepaway_ballcarrier_highspeed; float autocvar_g_keepaway_ballcarrier_selfdamage; float autocvar_g_keepaway_ballcarrier_selfforce; -float autocvar_g_keepaway_bckillscore; float autocvar_g_keepaway_noncarrier_damage; float autocvar_g_keepaway_noncarrier_force; float autocvar_g_keepaway_noncarrier_selfdamage; float autocvar_g_keepaway_noncarrier_selfforce; float autocvar_g_keepaway_noncarrier_warn; +float autocvar_g_keepaway_score_bckill; +float autocvar_g_keepaway_score_killac; +float autocvar_g_keepaway_score_timepoints; +float autocvar_g_keepaway_score_timeinterval; float autocvar_g_keepawayball_damageforcescale; +float autocvar_g_keepawayball_effects; float autocvar_g_keepawayball_respawntime; float autocvar_g_keepawayball_trail_color; float autocvar_g_keyhunt_point_leadlimit; @@ -790,6 +805,7 @@ float autocvar_g_minstagib_ammo_drop; float autocvar_g_minstagib_extralives; float autocvar_g_minstagib_speed_highspeed; #define autocvar_g_mirrordamage cvar("g_mirrordamage") +#define autocvar_g_mirrordamage_virtual cvar("g_mirrordamage_virtual") float autocvar_g_monster_zombie_attack_run_damage; float autocvar_g_monster_zombie_attack_run_delay; float autocvar_g_monster_zombie_attack_run_force; @@ -854,6 +870,7 @@ float autocvar_g_player_alpha; float autocvar_g_player_brightness; float autocvar_g_playerclip_collisions; string autocvar_g_playerstats_uri; +float autocvar_g_playerstats_debug; float autocvar_g_powerup_shield; float autocvar_g_powerup_strength; float autocvar_g_powerup_superhealth; @@ -1102,7 +1119,6 @@ float autocvar_sv_friction; float autocvar_sv_friction_on_land; float autocvar_sv_gameplayfix_q2airaccelerate; #define autocvar_sv_gravity cvar("sv_gravity") -float autocvar_sv_hitsound_antispam_time; string autocvar_sv_intermission_cdtrack; string autocvar_sv_jumpspeedcap_max; float autocvar_sv_jumpspeedcap_max_disable_on_ramps; @@ -1164,16 +1180,21 @@ float autocvar_sv_warsowbunny_airforwardaccel; float autocvar_sv_warsowbunny_backtosideratio; float autocvar_sv_warsowbunny_topspeed; float autocvar_sv_warsowbunny_turnaccel; -string autocvar_sv_weaponstats_damagefile; -string autocvar_sv_weaponstats_killfile; +string autocvar_sv_weaponstats_file; float autocvar_sys_ticrate; float autocvar_teamplay_lockonrestart; float autocvar_teamplay_mode; #define autocvar_timelimit cvar("timelimit") #define autocvar_timelimit_override cvar("timelimit_override") +float autocvar_timelimit_increment; +float autocvar_timelimit_decrement; +float autocvar_timelimit_min; +float autocvar_timelimit_max; float autocvar_timelimit_overtime; float autocvar_timelimit_overtimes; float autocvar_timelimit_suddendeath; #define autocvar_utf8_enable cvar("utf8_enable") float autocvar_waypoint_benchmark; float autocvar_welcome_message_time; +float autocvar_sv_gameplayfix_gravityunaffectedbyticrate; +float autocvar_g_trueaim_minrange; diff --git a/qcsrc/server/bot/aim.qc b/qcsrc/server/bot/aim.qc index 1911daf9e..9ef109e2b 100644 --- a/qcsrc/server/bot/aim.qc +++ b/qcsrc/server/bot/aim.qc @@ -353,18 +353,19 @@ float bot_aim(float shotspeed, float shotspeedupward, float maxshottime, float a { f = bot_aimdir(v - shotorg, r); //dprint("AIM: ");dprint(vtos(self.bot_aimtargorigin));dprint(" + ");dprint(vtos(self.bot_aimtargvelocity));dprint(" * ");dprint(ftos(self.bot_aimlatency + vlen(self.bot_aimtargorigin - shotorg) / shotspeed));dprint(" = ");dprint(vtos(v));dprint(" : aimdir = ");dprint(vtos(normalize(v - shotorg)));dprint(" : ");dprint(vtos(shotdir));dprint("\n"); - traceline(shotorg, shotorg + shotdir * 10000, FALSE, self); - if (trace_ent.takedamage) - if (trace_fraction < 1) - if (!bot_shouldattack(trace_ent)) - return FALSE; + //traceline(shotorg, shotorg + shotdir * 10000, FALSE, self); + //if (trace_ent.takedamage) + //if (trace_fraction < 1) + //if (!bot_shouldattack(trace_ent)) + // return FALSE; traceline(shotorg, self.bot_aimtargorigin, FALSE, self); if (trace_fraction < 1) if (trace_ent != self.enemy) if (!bot_shouldattack(trace_ent)) return FALSE; } - if (r > maxshottime * shotspeed) - return FALSE; - return f; + + //if (r > maxshottime * shotspeed) + // return FALSE; + return TRUE; }; diff --git a/qcsrc/server/bot/havocbot/havocbot.qc b/qcsrc/server/bot/havocbot/havocbot.qc index c1785a8d2..fde9a26db 100644 --- a/qcsrc/server/bot/havocbot/havocbot.qc +++ b/qcsrc/server/bot/havocbot/havocbot.qc @@ -21,7 +21,8 @@ void havocbot_ai() } else { - self.havocbot_role(); + if not(self.jumppadcount) + self.havocbot_role(); } // TODO: tracewalk() should take care of this job (better path finding under water) @@ -169,7 +170,7 @@ void havocbot_keyboard_movement(vector destorg) local float trigger, trigger1; blend = bound(0,sk*0.1,1); - trigger = autocvar_bot_ai_keyboard_treshold; + trigger = autocvar_bot_ai_keyboard_threshold; trigger1 = 0 - trigger; // categorize forward movement @@ -231,12 +232,14 @@ void havocbot_bunnyhop(vector dir) return; // Don't jump when using some weapons + /* if(self.aistatus & AI_STATUS_ATTACKING) - if(self.weapon & WEP_CAMPINGRIFLE) + if(self.weapon == WEP_SNIPERRIFLE) return; if(self.goalcurrent.classname == "player") return; + */ maxspeed = autocvar_sv_maxspeed; @@ -337,6 +340,7 @@ void havocbot_bunnyhop(vector dir) } // Release jump button + if(!cvar("sv_pogostick")) if(self.flags & FL_ONGROUND == 0) { if(self.velocity_z < 0 || vlen(self.velocity)<maxspeed) @@ -452,14 +456,7 @@ void havocbot_movetogoal() // Handling of jump pads if(self.jumppadcount) { - if(self.flags & FL_ONGROUND) - { - self.jumppadcount = FALSE; - if(self.aistatus & AI_STATUS_OUT_JUMPPAD) - self.aistatus &~= AI_STATUS_OUT_JUMPPAD; - } - - // If got stuck on the jump pad try to reach the farther visible item + // If got stuck on the jump pad try to reach the farthest visible item if(self.aistatus & AI_STATUS_OUT_JUMPPAD) { if(fabs(self.velocity_z)<50) @@ -507,11 +504,20 @@ void havocbot_movetogoal() local float threshold; threshold = maxspeed * 0.2; if(fabs(self.velocity_x) < threshold && fabs(self.velocity_y) < threshold) + { + dprint("Warning: ", self.netname, " got stuck on a jumppad, trying to get out of it now\n"); self.aistatus |= AI_STATUS_OUT_JUMPPAD; + } return; } + + // Don't chase players while using a jump pad + if(self.goalcurrent.classname=="player" || self.goalstack01.classname=="player") + return; } } + else if(self.aistatus & AI_STATUS_OUT_JUMPPAD) + self.aistatus &~= AI_STATUS_OUT_JUMPPAD; // If there is a trigger_hurt right below try to use the jetpack or make a rocketjump if(skill>6) @@ -726,7 +732,7 @@ void havocbot_movetogoal() // (only when the bot is on the ground or jumping intentionally) self.aistatus &~= AI_STATUS_DANGER_AHEAD; - if(trace_fraction == 1) + if(trace_fraction == 1 && self.jumppadcount == 0) if(self.flags & FL_ONGROUND || self.aistatus & AI_STATUS_RUNNING || self.BUTTON_JUMP == TRUE) { // Look downwards @@ -887,7 +893,7 @@ void havocbot_chooseenemy() // I want to do a second scan if no enemy was found or I don't have weapons // TODO: Perform the scan when using the rifle (requires changes on the rifle code) - if(best || self.weapons) // || self.weapon == WEP_CAMPINGRIFLE + if(best || self.weapons) // || self.weapon == WEP_SNIPERRIFLE break; if(i) break; @@ -941,28 +947,12 @@ void havocbot_chooseweapon() return; // Workaround for rifle reloading (..) - if(self.weapon == WEP_CAMPINGRIFLE) - if(i < autocvar_g_balance_campingrifle_reloadtime + 1) + if(self.weapon == WEP_SNIPERRIFLE) + if(i < autocvar_g_balance_sniperrifle_reloadtime + 1) return; local float w; - local float rocket ; rocket =-1000; - local float nex ; nex =-1000; - local float hagar ; hagar =-1000; - local float grenade ; grenade =-1000; - local float mine ; mine =-1000; - local float electro ; electro =-1000; - local float crylink ; crylink =-1000; - local float uzi ; uzi =-1000; - local float shotgun ; shotgun =-1000; - local float campingrifle ; campingrifle =-1000; - local float laser ; laser =-1000; - local float minstanex ; minstanex =-1000; - local float bestscore; bestscore = 0; - local float bestweapon; bestweapon=self.switchweapon; local float distance; distance=bound(10,vlen(self.origin-self.enemy.origin)-200,10000); - local float maxdelaytime=0.5; - local float spreadpenalty=10; // Should it do a weapon combo? local float af, ct, combo_time, combo; @@ -1197,7 +1187,7 @@ vector havocbot_dodge() { // LordHavoc: disabled because this is too expensive return '0 0 0'; - /* +#if 0 local entity head; local vector dodge, v, n; local float danger, bestdanger, vl, d; @@ -1242,5 +1232,5 @@ vector havocbot_dodge() head = head.chain; } return dodge; - */ +#endif }; diff --git a/qcsrc/server/bot/havocbot/roles.qc b/qcsrc/server/bot/havocbot/roles.qc index cfd050398..514c364ac 100644 --- a/qcsrc/server/bot/havocbot/roles.qc +++ b/qcsrc/server/bot/havocbot/roles.qc @@ -315,7 +315,6 @@ void havocbot_chooserole_ka() void havocbot_chooserole() { dprint("choosing a role...\n"); - navigation_clearroute(); self.bot_strategytime = 0; if (g_ctf) havocbot_chooserole_ctf(); diff --git a/qcsrc/server/bot/navigation.qc b/qcsrc/server/bot/navigation.qc index f3e5c26a8..9e1a92a22 100644 --- a/qcsrc/server/bot/navigation.qc +++ b/qcsrc/server/bot/navigation.qc @@ -897,6 +897,7 @@ void navigation_goalrating_start() self.navigation_jetpack_goal = world; navigation_bestrating = -1; self.navigation_hasgoals = FALSE; + navigation_clearroute(); navigation_bestgoal = world; navigation_markroutes(world); }; diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index fea11ec93..6247aaf1f 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -2,15 +2,8 @@ void race_send_recordtime(float msg); void race_SendRankings(float pos, float prevpos, float del, float msg); void send_CSQC_teamnagger() { - WriteByte(0, SVC_TEMPENTITY); - WriteByte(0, TE_CSQC_TEAMNAGGER); -} - -void send_CSQC_cr_maxbullets(entity e) { - msg_entity = e; - WriteByte(MSG_ONE, SVC_TEMPENTITY); - WriteByte(MSG_ONE, TE_CSQC_CR_MAXBULLETS); - WriteByte(MSG_ONE, autocvar_g_balance_campingrifle_magazinecapacity); + WriteByte(MSG_BROADCAST, SVC_TEMPENTITY); + WriteByte(MSG_BROADCAST, TE_CSQC_TEAMNAGGER); } void Announce(string snd) { @@ -1072,6 +1065,8 @@ 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)) { @@ -1112,8 +1107,11 @@ float ClientInit_SendEntity(entity to, float sf) WriteCoord(MSG_ENTITY, self.ebouncefactor); // g_balance_grenadelauncher_bouncefactor WriteCoord(MSG_ENTITY, self.ebouncestop); // g_balance_grenadelauncher_bouncestop WriteByte(MSG_ENTITY, autocvar_g_balance_nex_secondary); // client has to know if it should zoom or not - WriteByte(MSG_ENTITY, autocvar_g_balance_campingrifle_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; } @@ -1371,7 +1369,7 @@ void ClientKill (void) { // do nothing } - else if(g_freezetag && self.freezetag_frozen == 1) + else if(self.freezetag_frozen) { // do nothing } @@ -1741,8 +1739,6 @@ void ClientConnect (void) else if(autocvar_sv_teamnagger && !(autocvar_bot_vs_human && (c3==-1 && c4==-1)) && !g_ca) // teamnagger is currently bad for ca send_CSQC_teamnagger(); - send_CSQC_cr_maxbullets(self); - CheatInitClient(); PlayerStats_AddPlayer(self); @@ -2048,7 +2044,7 @@ void player_powerups (void) self.modelflags &~= MF_ROCKET; } - self.effects &~= (EF_RED | EF_BLUE | EF_ADDITIVE | EF_FULLBRIGHT | EF_FLAME | EF_NODEPTHTEST); + self.effects &~= (EF_DIMLIGHT | EF_RED | EF_BLUE | EF_ADDITIVE | EF_FULLBRIGHT | EF_FLAME | EF_NODEPTHTEST); if(!self.modelindex || self.deadflag) // don't apply the flags if the player is gibbed return; @@ -2351,6 +2347,7 @@ void SpectateCopy(entity spectatee) { self.impulse = 0; self.items = spectatee.items; self.last_pickup = spectatee.last_pickup; + self.hit_time = spectatee.hit_time; self.metertime = spectatee.metertime; self.strength_finished = spectatee.strength_finished; self.invincible_finished = spectatee.invincible_finished; @@ -2358,6 +2355,10 @@ 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.sniperrifle_bulletcounter = spectatee.sniperrifle_bulletcounter; + self.minelayer_mines = spectatee.minelayer_mines; self.punchangle = spectatee.punchangle; self.view_ofs = spectatee.view_ofs; self.v_angle = spectatee.v_angle; @@ -2443,7 +2444,7 @@ void ShowRespawnCountdown() void LeaveSpectatorMode() { - if(isJoinAllowed()) { + if(nJoinAllowed(1)) { if(!teams_matter || autocvar_g_campaign || autocvar_g_balance_teams || (self.wasplayer && autocvar_g_changeteam_banned) || self.team_forced > 0) { self.classname = "player"; @@ -2480,25 +2481,30 @@ void LeaveSpectatorMode() * Determines whether the player is allowed to join. This depends on cvar * g_maxplayers, if it isn't used this function always return TRUE, otherwise * it checks whether the number of currently playing players exceeds g_maxplayers. - * @return bool TRUE if the player is allowed to join, false otherwise + * @return int number of free slots for players, 0 if none */ -float isJoinAllowed() { +float nJoinAllowed(float includeMe) { if(self.team_forced < 0) return FALSE; // forced spectators can never join + // TODO simplify this + local entity e; + + local float totalClients; + FOR_EACH_CLIENT(e) + totalClients += 1; + if (!autocvar_g_maxplayers) - return TRUE; + return maxclients - totalClients + includeMe; - local entity e; local float currentlyPlaying; - FOR_EACH_REALPLAYER(e) { - if(e.classname == "player") - currentlyPlaying += 1; - } + FOR_EACH_REALPLAYER(e) + currentlyPlaying += 1; + if(currentlyPlaying < autocvar_g_maxplayers) - return TRUE; + return min(maxclients - totalClients + includeMe, autocvar_g_maxplayers - currentlyPlaying); - return FALSE; + return 0; } /** @@ -2901,7 +2907,7 @@ void PlayerPreThink (void) } if(!zoomstate_set) - SetZoomState(self.BUTTON_ZOOM || (self.BUTTON_ATCK2 && self.weapon == WEP_NEX) || (self.BUTTON_ATCK2 && self.weapon == WEP_CAMPINGRIFLE && autocvar_g_balance_campingrifle_secondary == 0)); + SetZoomState(self.BUTTON_ZOOM || (self.BUTTON_ATCK2 && self.weapon == WEP_NEX) || (self.BUTTON_ATCK2 && self.weapon == WEP_SNIPERRIFLE && autocvar_g_balance_sniperrifle_secondary == 0)); float oldspectatee_status; oldspectatee_status = self.spectatee_status; @@ -3095,7 +3101,7 @@ void PlayerPostThink (void) playerdemo_write(); - if((g_cts || g_race) && self.cvar_cl_allow_uid2name == 1) + if((g_cts || g_race) && self.cvar_cl_allow_uidtracking == 1 && self.cvar_cl_allow_uid2name == 1) { if(!self.stored_netname) self.stored_netname = strzone(uid2name(self.crypto_idfp)); diff --git a/qcsrc/server/cl_physics.qc b/qcsrc/server/cl_physics.qc index e2feca927..a2773fedf 100644 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@ -23,7 +23,7 @@ When you press the jump key */ void PlayerJump (void) { - if(g_freezetag && self.freezetag_frozen) + if(self.freezetag_frozen) return; // no jumping in freezetag when frozen float mjumpheight; @@ -796,8 +796,6 @@ void SV_PlayerPhysics() bot_think(); } - MUTATOR_CALLHOOK(PlayerPhysics); - self.items &~= IT_USING_JETPACK; if(self.classname == "player") @@ -830,6 +828,13 @@ void SV_PlayerPhysics() if (self.movetype == MOVETYPE_NONE) return; + // when we get here, disableclientprediction cannot be 2 + self.disableclientprediction = 0; + if(time < self.ladder_time) + self.disableclientprediction = 1; + + MUTATOR_CALLHOOK(PlayerPhysics); + maxspd_mod = 1; swampspd_mod = 1; @@ -989,14 +994,21 @@ void SV_PlayerPhysics() // on a spawnfunc_func_ladder or swimming in spawnfunc_func_water self.flags &~= FL_ONGROUND; + float g; + g = autocvar_sv_gravity * frametime; + if(self.gravity) + g *= self.gravity; + if(autocvar_sv_gameplayfix_gravityunaffectedbyticrate) + { + g *= 0.5; + self.velocity_z += g; + } + self.velocity = self.velocity * (1 - frametime * autocvar_sv_friction); makevectors(self.v_angle); //wishvel = v_forward * self.movement_x + v_right * self.movement_y + v_up * self.movement_z; wishvel = v_forward * self.movement_x + v_right * self.movement_y + '0 0 1' * self.movement_z; - if (self.gravity) - self.velocity_z = self.velocity_z + self.gravity * autocvar_sv_gravity * frametime; - else - self.velocity_z = self.velocity_z + autocvar_sv_gravity * frametime; + self.velocity_z += g; if (self.ladder_entity.classname == "func_water") { f = vlen(wishvel); diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index 342cbbc3d..f1d290a9b 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -2,69 +2,53 @@ float weaponstats_buffer; void WeaponStats_Init() { - if(autocvar_sv_weaponstats_killfile != "" || autocvar_sv_weaponstats_damagefile != "") + if(autocvar_sv_weaponstats_file != "") weaponstats_buffer = buf_create(); else weaponstats_buffer = -1; } -#define WEAPONSTATS_GETINDEX(awep,vwep) ((vwep) + (awep) * (WEP_LAST - WEP_FIRST + 1) - (WEP_FIRST + WEP_FIRST * (WEP_LAST - WEP_FIRST + 1))) +#define WEAPONSTATS_GETINDEX(awep,abot,vwep,vbot) (((vwep) + (awep) * (WEP_LAST - WEP_FIRST + 1) - (WEP_FIRST + WEP_FIRST * (WEP_LAST - WEP_FIRST + 1))) * 4 + (abot) * 2 + (vbot)) void WeaponStats_Shutdown() { - float i, j, idx, f; + float i, j, ibot, jbot, idx; float fh; + vector v; string prefix; if(weaponstats_buffer < 0) return; prefix = strcat(autocvar_hostname, "\t", GetGametype(), "_", GetMapname(), "\t"); - if(autocvar_sv_weaponstats_killfile != "") + if(autocvar_sv_weaponstats_file != "") { - fh = fopen(autocvar_sv_weaponstats_killfile, FILE_APPEND); + fh = fopen(autocvar_sv_weaponstats_file, FILE_APPEND); if(fh >= 0) { - fputs(fh, "#begin killfile\n"); + fputs(fh, "#begin statsfile\n"); fputs(fh, strcat("#date ", strftime(TRUE, "%a %b %e %H:%M:%S %Z %Y"), "\n")); fputs(fh, strcat("#config ", ftos(crc16(FALSE, cvar_changes)), "\n")); - for(i = WEP_FIRST; i <= WEP_LAST; ++i) - for(j = WEP_FIRST; j <= WEP_LAST; ++j) + for(i = WEP_FIRST; i <= WEP_LAST; ++i) for(ibot = 0; ibot <= 1; ++ibot) + for(j = WEP_FIRST; j <= WEP_LAST; ++j) for(jbot = 0; jbot <= 1; ++jbot) { - idx = WEAPONSTATS_GETINDEX(i, j); - f = stov(bufstr_get(weaponstats_buffer, idx)) * '0 1 0'; - if(f != 0) - fputs(fh, strcat(prefix, ftos(i), "\t", ftos(j), "\t", ftos(f), "\n")); - } - fputs(fh, "#end\n\n"); - fclose(fh); - print("Weapon kill stats written\n"); - } - } - if(autocvar_sv_weaponstats_damagefile != "") - { - fh = fopen(autocvar_sv_weaponstats_damagefile, FILE_APPEND); - if(fh >= 0) - { - fputs(fh, "#begin damagefile\n"); - fputs(fh, strcat("#date ", strftime(TRUE, "%a %b %e %H:%M:%S %Z %Y"), "\n")); - fputs(fh, strcat("#config ", ftos(crc16(FALSE, cvar_changes)), "\n")); - for(i = WEP_FIRST; i <= WEP_LAST; ++i) - for(j = WEP_FIRST; j <= WEP_LAST; ++j) - { - idx = WEAPONSTATS_GETINDEX(i, j); - f = stov(bufstr_get(weaponstats_buffer, idx)) * '1 0 0'; - if(f != 0) - fputs(fh, strcat(prefix, ftos(i), "\t", ftos(j), "\t", ftos(f), "\n")); + idx = WEAPONSTATS_GETINDEX(i, ibot, j, jbot); + v = stov(bufstr_get(weaponstats_buffer, idx)); + if(v != '0 0 0') + { + //vector is: kills hits damage + fputs(fh, sprintf("%s%d %d\t%d %d\t", prefix, i, ibot, j, jbot)); + fputs(fh, sprintf("%d %d %g\n", v_x, v_y, v_z)); + } } fputs(fh, "#end\n\n"); fclose(fh); - print("Weapon damage stats written\n"); + print("Weapon stats written\n"); } } buf_del(weaponstats_buffer); weaponstats_buffer = -1; } -void WeaponStats_LogItem(float awep, float vwep, vector item) +void WeaponStats_LogItem(float awep, float abot, float vwep, float vbot, vector item) { float idx; if(weaponstats_buffer < 0) @@ -73,18 +57,18 @@ void WeaponStats_LogItem(float awep, float vwep, vector item) return; if(awep > WEP_LAST || vwep > WEP_LAST) return; - idx = WEAPONSTATS_GETINDEX(awep,vwep); + idx = WEAPONSTATS_GETINDEX(awep,abot,vwep,vbot); bufstr_set(weaponstats_buffer, idx, vtos(stov(bufstr_get(weaponstats_buffer, idx)) + item)); } -void WeaponStats_LogDamage(float awep, float vwep, float damage) +void WeaponStats_LogDamage(float awep, float abot, float vwep, float vbot, float damage) { if(damage < 0) error("negative damage?"); - WeaponStats_LogItem(awep, vwep, '1 0 0' * damage); + WeaponStats_LogItem(awep, abot, vwep, vbot, '0 0 1' * damage + '0 1 0'); } -void WeaponStats_LogKill(float awep, float vwep) +void WeaponStats_LogKill(float awep, float abot, float vwep, float vbot) { - WeaponStats_LogItem(awep, vwep, '0 1 0'); + WeaponStats_LogItem(awep, abot, vwep, vbot, '1 0 0'); } // changes by LordHavoc on 03/29/04 and 03/30/04 at Vermeulen's request @@ -325,11 +309,14 @@ void SpawnThrownWeapon (vector org, float w) { if(self.weapons & W_WeaponBit(j)) if(W_IsWeaponThrowable(j)) - W_ThrowNewWeapon(self, j, FALSE, self.origin, randomvec() * 175 + '0 0 325'); + W_ThrowNewWeapon(self, j, FALSE, org, randomvec() * 175 + '0 0 325'); } } else - W_ThrowWeapon(randomvec() * 125 + '0 0 200', org - self.origin, FALSE); + { + if(W_IsWeaponThrowable(self.weapon)) + W_ThrowNewWeapon(self, self.weapon, FALSE, org, randomvec() * 125 + '0 0 200'); + } } void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) @@ -371,7 +358,7 @@ void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float self.dmg_take = self.dmg_take + take;//max(take - 10, 0); self.dmg_inflictor = inflictor; - if (self.health <= -100 && self.modelindex != 0) + if (self.health <= -150 && self.modelindex != 0) { // don't use any animations as a gib self.frame = 0; @@ -387,13 +374,16 @@ void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float void ClientKill_Now_TeamChange(); void freezetag_CheckWinner(); -void freezetag_Unfreeze(); void PlayerDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) { local float take, save, waves, sdelay, dh, da, j; vector v; float valid_damage_for_weaponstats; + float excess; + + if((g_arena && numspawned < 2) || (g_ca && ca_players < required_ca_players) && !inWarmupStage) + return; dh = max(self.health, 0); da = max(self.armorvalue, 0); @@ -436,9 +426,6 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht else Violence_GibSplash_At(hitloc, force, 2, bound(0, damage, 200) / 16, self, attacker); - if((g_arena && numspawned < 2) || (g_ca && ca_players < required_ca_players) && !inWarmupStage) - return; - if (!g_minstagib) { v = healtharmor_applydamage(self.armorvalue, autocvar_g_balance_armor_blockpercent, damage); @@ -460,6 +447,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht MUTATOR_CALLHOOK(PlayerDamage_SplitHealthArmor); take = bound(0, damage_take, self.health); save = bound(0, damage_save, self.armorvalue); + excess = max(0, damage - take - save); if(sound_allowed(MSG_BROADCAST, attacker)) { @@ -549,19 +537,28 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht else self.pushltime = 0; + float abot, vbot, awep; + abot = (clienttype(attacker) == CLIENTTYPE_BOT); + vbot = (clienttype(self) == CLIENTTYPE_BOT); + valid_damage_for_weaponstats = 0; - if(clienttype(self) == CLIENTTYPE_REAL) - if(clienttype(attacker) == CLIENTTYPE_REAL) - if(self != attacker) - if(!DEATH_ISSPECIAL(deathtype)) + if(vbot || clienttype(self) == CLIENTTYPE_REAL) + if(abot || clienttype(attacker) == CLIENTTYPE_REAL) + if(attacker && self != attacker) if(IsDifferentTeam(self, attacker)) + { + if(DEATH_ISSPECIAL(deathtype)) + awep = attacker.weapon; + else + awep = DEATH_WEAPONOF(deathtype); valid_damage_for_weaponstats = 1; + } if(valid_damage_for_weaponstats) { dh = dh - max(self.health, 0); da = da - max(self.armorvalue, 0); - WeaponStats_LogDamage(DEATH_WEAPONOF(deathtype), self.weapon, dh + da); + WeaponStats_LogDamage(awep, abot, self.weapon, vbot, dh + da); } if (self.health < 1) @@ -576,7 +573,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht } if(valid_damage_for_weaponstats) - WeaponStats_LogKill(DEATH_WEAPONOF(deathtype), self.weapon); + WeaponStats_LogKill(awep, abot, self.weapon, vbot); if(sv_gentle < 1) // TODO make a "gentle" version? if(sound_allowed(MSG_BROADCAST, attacker)) @@ -631,9 +628,6 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht frag_target = self; MUTATOR_CALLHOOK(PlayerDies); - if(g_freezetag) - return; - if(self.flagcarried) { if(attacker.classname != "player" && attacker.classname != "gib") @@ -646,8 +640,31 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht if(self.ballcarried && g_nexball) DropBall(self.ballcarried, self.origin, self.velocity); Portal_ClearAllLater(self); - // clear waypoints + + if(clienttype(self) == CLIENTTYPE_REAL) + { + stuffcmd(self, "-zoom\n"); + self.fixangle = TRUE; + //msg_entity = self; + //WriteByte (MSG_ONE, SVC_SETANGLE); + //WriteAngle (MSG_ONE, self.v_angle_x); + //WriteAngle (MSG_ONE, self.v_angle_y); + //WriteAngle (MSG_ONE, 80); + } + + if(defer_ClientKill_Now_TeamChange) // TODO does this work with FreezeTag? + ClientKill_Now_TeamChange(); + + if(g_arena) + Spawnqueue_Unmark(self); + + if(g_freezetag) + return; + + // when we get here, player actually dies + // clear waypoints (do this AFTER FreezeTag) WaypointSprite_PlayerDead(); + // make the corpse upright (not tilted) self.angles_x = 0; self.angles_z = 0; @@ -669,12 +686,12 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht waves = 0; sdelay = cvar(strcat("g_", GetGametype(), "_respawn_delay")); if(!sdelay) - { - if(g_cts) - sdelay = 0; // no respawn delay in CTS - else - sdelay = autocvar_g_respawn_delay; - } + { + if(g_cts) + sdelay = 0; // no respawn delay in CTS + else + sdelay = autocvar_g_respawn_delay; + } waves = cvar(strcat("g_", GetGametype(), "_respawn_waves")); if(!waves) waves = autocvar_g_respawn_waves; @@ -699,35 +716,19 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht // set damage function to corpse damage self.event_damage = PlayerCorpseDamage; // call the corpse damage function just in case it wants to gib - self.event_damage(inflictor, attacker, 0, deathtype, hitloc, force); + self.event_damage(inflictor, attacker, excess, deathtype, hitloc, force); // set up to fade out later SUB_SetFade (self, time + 6 + random (), 1); - if(clienttype(self) == CLIENTTYPE_REAL) - { - self.fixangle = TRUE; - //msg_entity = self; - //WriteByte (MSG_ONE, SVC_SETANGLE); - //WriteAngle (MSG_ONE, self.v_angle_x); - //WriteAngle (MSG_ONE, self.v_angle_y); - //WriteAngle (MSG_ONE, 80); - } - - if(g_arena) - Spawnqueue_Unmark(self); - - if(defer_ClientKill_Now_TeamChange) - ClientKill_Now_TeamChange(); - if(sv_gentle > 0 || autocvar_ekg) { // remove corpse PlayerCorpseDamage (inflictor, attacker, 100.0, deathtype, hitloc, force); } // reset fields the weapons may use just in case - for (j = WEP_FIRST; j <= WEP_LAST; ++j) + for (j = WEP_FIRST; j <= WEP_LAST; ++j) { - weapon_action(j, WR_RESETPLAYER); + weapon_action(j, WR_RESETPLAYER); ATTACK_FINISHED_FOR(self, j) = 0; } } diff --git a/qcsrc/server/cl_weapons.qc b/qcsrc/server/cl_weapons.qc index 6de63b937..864dd77fc 100644 --- a/qcsrc/server/cl_weapons.qc +++ b/qcsrc/server/cl_weapons.qc @@ -1,8 +1,6 @@ void W_Reload() { - if(self.switchweapon == self.weapon) - if(self.weaponentity.state == WS_READY) - weapon_action(self.weapon, WR_RELOAD); + self.wish_reload = 1; } // switch between weapons @@ -236,6 +234,20 @@ string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vecto float W_IsWeaponThrowable(float w) { float wb, wa; + + if (!autocvar_g_pickup_items) + return 0; + if (g_weaponarena) + return 0; + if (g_lms) + return 0; + if (g_ca) + return 0; + if (g_cts) + return 0; + if (g_nexball && w == WEP_GRENADE_LAUNCHER) + return 0; + wb = W_WeaponBit(w); if(!wb) return 0; @@ -265,25 +277,13 @@ void W_ThrowWeapon(vector velo, vector delta, float doreduce) return; // just in case if(MUTATOR_CALLHOOK(ForbidThrowCurrentWeapon)) return; - if (g_weaponarena) - return; - if (g_lms) - return; - if (g_nexball && w == WEP_GRENADE_LAUNCHER) - return; - if (!autocvar_g_pickup_items) - return; - if (g_ca) - return; - if (g_cts) - return; if(!autocvar_g_weapon_throwable) return; if(autocvar_g_weapon_stay == 1) return; - if(!W_IsWeaponThrowable(w)) + if(self.weaponentity.state != WS_READY) return; - if(self.deadflag == DEAD_NO && self.weaponentity.state != WS_READY) + if(!W_IsWeaponThrowable(w)) return; wb = W_WeaponBit(w); @@ -295,13 +295,10 @@ void W_ThrowWeapon(vector velo, vector delta, float doreduce) a = W_ThrowNewWeapon(self, w, doreduce, self.origin + delta, velo); if not(a) return; - if(self.health >= 1) - { - if(a == "") - sprint(self, strcat("You dropped the ^2", W_Name(w), "\n")); - else - sprint(self, strcat("You dropped the ^2", W_Name(w), " with ", a, "\n")); - } + if(a == "") + sprint(self, strcat("You dropped the ^2", W_Name(w), "\n")); + else + sprint(self, strcat("You dropped the ^2", W_Name(w), " with ", a, "\n")); }; // Bringed back weapon frame diff --git a/qcsrc/server/cl_weaponsystem.qc b/qcsrc/server/cl_weaponsystem.qc index 4f5e76044..057c5cb1d 100644 --- a/qcsrc/server/cl_weaponsystem.qc +++ b/qcsrc/server/cl_weaponsystem.qc @@ -138,7 +138,7 @@ void W_SetupShot_Dir_ProjectileSize_Range(entity ent, vector s_forward, vector m local float oldsolid; vector vecs, dv; oldsolid = ent.dphitcontentsmask; - if(ent.weapon == WEP_CAMPINGRIFLE) + if(ent.weapon == WEP_SNIPERRIFLE) ent.dphitcontentsmask = DPCONTENTS_BODY | DPCONTENTS_CORPSE; else ent.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE; @@ -158,6 +158,10 @@ void W_SetupShot_Dir_ProjectileSize_Range(entity ent, vector s_forward, vector m v_right = vr; v_up = vu; + // un-adjust trueaim if shotend is too close + if(vlen(w_shotend - (ent.origin + ent.view_ofs)) < autocvar_g_trueaim_minrange) + w_shotend = ent.origin + ent.view_ofs + s_forward * autocvar_g_trueaim_minrange; + // track max damage if(accuracy_canbegooddamage(ent)) accuracy_add(ent, ent.weapon, maxdamage, 0); diff --git a/qcsrc/server/clientcommands.qc b/qcsrc/server/clientcommands.qc index 9203d87a1..226269d41 100644 --- a/qcsrc/server/clientcommands.qc +++ b/qcsrc/server/clientcommands.qc @@ -218,7 +218,7 @@ void SV_ParseClientCommand(string s) { if(!g_arena) if (self.classname != "player" && !lockteams) { - if(isJoinAllowed()) { + if(nJoinAllowed(1)) { self.classname = "player"; if(g_ca) self.caplayer = 1; diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index 86a57d460..d008f15d9 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -77,14 +77,13 @@ float maxclients; //.float style; //.float skill; .float sounds; +.float platmovetype; .string killtarget; .vector pos1, pos2; .vector mangle; -.float cvar_cl_hitsound; - .float pain_finished; //Added by Supajoe .float pain_frame; //" .float statdraintime; // record the one-second intervals between draining health and armour when they're over 100 @@ -267,7 +266,7 @@ void checkSpectatorBlock(); .float jointime; // time of joining .float alivetime; // time of being alive -float isJoinAllowed(); +float nJoinAllowed(float includeMe); #define PREVENT_JOIN_TEXT "^1You may not join the game at this time.\n\nThe player limit reached maximum capacity." //sv_timeout: pauses the game by setting the gamespeed to a really low value (see TIMEOUT_SLOWMO_VALUE) @@ -328,6 +327,7 @@ float sv_loddistance2; .string weaponorder_byimpulse; .float cvar_cl_allow_uid2name; +.float cvar_cl_allow_uidtracking; .string stored_netname; void Announce(string snd); @@ -400,10 +400,6 @@ float assault_attacker_team; .float speedrunning; // Q3 support -.float notteam; -.float notsingle; -.float notfree; -.float notq3a; float q3acompat_machineshotgunswap; // database @@ -603,6 +599,9 @@ string matchid; .float last_pickup; +.float hit_time; +.float typehit_time; + .float stat_leadlimit; float radar_showennemies; @@ -612,7 +611,9 @@ float client_cefc_accumulator; float client_cefc_accumulatortime; #endif -.float campingrifle_bulletcounter; +.float minelayer_mines; +.float sniperrifle_bulletcounter; +.float wish_reload; #define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_CORPSE; (e).dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE // when doing this, hagar can go through clones @@ -658,5 +659,7 @@ float serverflags; .float team_forced; // can be a team number to force a team, or 0 for default action, or -1 for forced spectator .float freezetag_frozen; -.float freezetag_beginrevive_time; .float freezetag_revive_progress; + +.entity muzzle_flash; +.float misc_bulletcounter; // replaces uzi & hlac bullet counter. diff --git a/qcsrc/server/func_breakable.qc b/qcsrc/server/func_breakable.qc index 44605ddee..3af433ace 100644 --- a/qcsrc/server/func_breakable.qc +++ b/qcsrc/server/func_breakable.qc @@ -122,6 +122,11 @@ void func_breakable_behave_destroyed() void func_breakable_behave_restore() { self.health = self.max_health; + if(self.sprite) + { + WaypointSprite_UpdateMaxHealth(self.sprite, self.max_health); + WaypointSprite_UpdateHealth(self.sprite, self.health); + } self.takedamage = DAMAGE_AIM; self.event_damage = func_breakable_damage; self.state = 0; @@ -180,9 +185,12 @@ void func_breakable_damage(entity inflictor, entity attacker, float damage, floa if(self.team) if(attacker.team == self.team) return; + self.health = self.health - damage; if(self.sprite) + { WaypointSprite_Ping(self.sprite); - self.health = self.health - damage; + WaypointSprite_UpdateHealth(self.sprite, self.health); + } func_breakable_colormod(); if(self.health <= 0) diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index 6ab29006d..22497c99d 100644 --- a/qcsrc/server/g_damage.qc +++ b/qcsrc/server/g_damage.qc @@ -102,7 +102,7 @@ void UpdateFrags(entity player, float f) // NOTE: f=0 means still count as a (positive) kill, but count no frags for it void W_SwitchWeapon_Force(entity e, float w); -void GiveFrags (entity attacker, entity targ, float f) +void GiveFrags (entity attacker, entity targ, float f, float deathtype) { float w; @@ -120,14 +120,12 @@ void GiveFrags (entity attacker, entity targ, float f) { // teamkill PlayerScore_Add(attacker, SP_KILLS, -1); // or maybe add a teamkills field? - PlayerStats_Event(attacker, PLAYERSTATS_KILLS, -1); } } else { // regular frag PlayerScore_Add(attacker, SP_KILLS, 1); - PlayerStats_Event(attacker, PLAYERSTATS_KILLS, 1); } PlayerScore_Add(targ, SP_DEATHS, 1); @@ -139,19 +137,36 @@ void GiveFrags (entity attacker, entity targ, float f) if(targ != attacker) // not for suicides if(g_weaponarena_random) { - // after a frag, choose another random weapon set - if(inWarmupStage) - w = warmup_start_weapons; - else - w = start_weapons; + // after a frag, exchange the current weapon (or the culprit, if detectable) by a new random weapon + float culprit; + culprit = DEATH_WEAPONOF(deathtype); + if(!culprit || !(attacker.weapons & W_WeaponBit(culprit))) + culprit = attacker.weapon; - attacker.weapons = randombits(w - (w & W_WeaponBit(attacker.weapon)), g_weaponarena_random, TRUE); - if(attacker.weapons < 0) + if(g_weaponarena_random_with_laser && culprit == WEPBIT_LASER) { - // error from randombits: no weapon available - // this means we can just give ALL weapons - attacker.weapons = w; + // no exchange } + else + { + if(inWarmupStage) + w = warmup_start_weapons; + else + w = start_weapons; + + // all others (including the culprit): remove + w &~= attacker.weapons; + + // among the remaining ones, choose one by random + w = randombits(w, 1, FALSE); + if(w) + { + attacker.weapons |= w; + attacker.weapons &~= W_WeaponBit(culprit); + } + } + + // after a frag, choose another random weapon set if not(attacker.weapons & W_WeaponBit(attacker.weapon)) W_SwitchWeapon_Force(attacker, w_getbestweapon(attacker)); } @@ -186,6 +201,8 @@ void GiveFrags (entity attacker, entity targ, float f) { if(!lms_next_place) lms_next_place = player_count; + else + lms_next_place = min(lms_next_place, player_count); PlayerScore_Add(targ, SP_LMS_RANK, lms_next_place); // won't ever spawn again --lms_next_place; } @@ -301,7 +318,7 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) if(deathtype != DEATH_TEAMCHANGE && deathtype != DEATH_QUIET) { LogDeath("suicide", deathtype, targ, targ); - GiveFrags(attacker, targ, -1); + GiveFrags(attacker, targ, -1, deathtype); } if (targ.killcount > 2) @@ -325,7 +342,7 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) else type = KILL_TEAM_BLUE; - GiveFrags(attacker, targ, -1); + GiveFrags(attacker, targ, -1, deathtype); Send_CSQC_Centerprint(attacker, s, "", type, MSG_KILL); @@ -352,6 +369,8 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) // TODO: make these print a newline if they dont Send_CSQC_Centerprint(attacker, "", "", KILL_FIRST_BLOOD, MSG_KILL); Send_CSQC_Centerprint(targ, "", "", KILL_FIRST_VICTIM, MSG_KILL); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_FIRSTBLOOD, 1); + PlayerStats_Event(targ, PLAYERSTATS_ACHIEVEMENT_FIRSTVICTIM, 1); } if((autocvar_sv_fragmessage_information_typefrag) && (targ.BUTTON_CHAT)) { @@ -379,10 +398,10 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) { UpdateFrags(attacker, ctf_score_value("score_kill")); PlayerScore_Add(attacker, SP_CTF_FCKILLS, 1); - GiveFrags(attacker, targ, 0); // for logging + GiveFrags(attacker, targ, 0, deathtype); // for logging } else - GiveFrags(attacker, targ, 1); + GiveFrags(attacker, targ, 1, deathtype); if (targ.killcount > 2) { Send_KillNotification(s, ftos(targ.killcount), a, KILL_END_SPREE, MSG_SPREE); @@ -397,36 +416,43 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) { Send_KillNotification(a, "", "", KILL_SPREE_3, MSG_SPREE); AnnounceTo(attacker, "03kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_3, 1); } else if (attacker.killcount == 5) { Send_KillNotification(a, "", "", KILL_SPREE_5, MSG_SPREE); AnnounceTo(attacker, "05kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_5, 1); } else if (attacker.killcount == 10) { Send_KillNotification(a, "", "", KILL_SPREE_10, MSG_SPREE); AnnounceTo(attacker, "10kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_10, 1); } else if (attacker.killcount == 15) { Send_KillNotification(a, "", "", KILL_SPREE_15, MSG_SPREE); AnnounceTo(attacker, "15kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_15, 1); } else if (attacker.killcount == 20) { Send_KillNotification(a, "", "", KILL_SPREE_20, MSG_SPREE); AnnounceTo(attacker, "20kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_20, 1); } else if (attacker.killcount == 25) { Send_KillNotification(a, "", "", KILL_SPREE_25, MSG_SPREE); AnnounceTo(attacker, "25kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_25, 1); } else if (attacker.killcount == 30) { Send_KillNotification(a, "", "", KILL_SPREE_30, MSG_SPREE); AnnounceTo(attacker, "30kills"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_30, 1); } LogDeath("frag", deathtype, attacker, targ); } @@ -441,9 +467,10 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) if(strstrofs(msg, "%", 0) < 0) msg = strcat("%s ", msg); - GiveFrags(targ, targ, -1); + GiveFrags(targ, targ, -1, deathtype); if(PlayerScore_Add(targ, SP_SCORE, 0) == -5) { AnnounceTo(targ, "botlike"); + PlayerStats_Event(attacker, PLAYERSTATS_ACHIEVEMENT_BOTLIKE, 1); } Send_KillNotification(s, msg, "", deathtype, MSG_KILL_ACTION); @@ -565,6 +592,29 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float else damage = autocvar_g_friendlyfire * damage; // mirrordamage will be used LATER + + if(autocvar_g_mirrordamage_virtual) + { + vector v; + v = healtharmor_applydamage(attacker.armorvalue, autocvar_g_balance_armor_blockpercent, mirrordamage); + attacker.dmg_take += v_x; + attacker.dmg_save += v_y; + attacker.dmg_inflictor = inflictor; + mirrordamage = 0; + mirrorforce = 0; + } + + if(autocvar_g_friendlyfire_virtual) + { + vector v; + v = healtharmor_applydamage(targ.armorvalue, autocvar_g_balance_armor_blockpercent, damage); + targ.dmg_take += v_x; + targ.dmg_save += v_y; + targ.dmg_inflictor = inflictor; + damage = 0; + if(!autocvar_g_friendlyfire_virtual_force) + force = '0 0 0'; + } } else damage = 0; @@ -606,12 +656,11 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float if (DEATH_ISWEAPON(deathtype, WEP_LASER)) { damage = 0; + mirrordamage = 0; if (targ != attacker) { if ((targ.health >= 1) && (targ.classname == "player")) centerprint(attacker, strcat(DAMAGE_CENTERPRINT_SPACER, "Secondary fire inflicts no damage!")); - damage = 0; - mirrordamage = 0; force = '0 0 0'; // keep mirrorforce attacker = targ; @@ -740,13 +789,12 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float { if(damage > 0) { - if(attacker.weapon != WEP_ELECTRO && attacker.weapon != WEP_LASER || ((attacker.weapon == WEP_ELECTRO && autocvar_g_balance_electro_lightning || attacker.weapon == WEP_LASER) && attacker.prevhitsound + autocvar_sv_hitsound_antispam_time < time)) + if(deathtype != DEATH_FIRE) { if(targ.BUTTON_CHAT) attacker.typehitsound += 1; else attacker.hitsound += 1; - attacker.prevhitsound = time; } damage_goodhits += 1; @@ -772,7 +820,9 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float else { if(deathtype != DEATH_FIRE) + { attacker.typehitsound += 1; + } if(mirrordamage > 0) if(time > attacker.teamkill_complain) { @@ -841,17 +891,18 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float { attacker = attacker_save; if(g_minstagib) - if(mirrordamage > 0) + if(mirrordamage > 0) + { + // just lose extra LIVES, don't kill the player for mirror damage + if(attacker.armorvalue > 0) { - // just lose extra LIVES, don't kill the player for mirror damage - if(attacker.armorvalue > 0) - { - attacker.armorvalue = attacker.armorvalue - 1; - centerprint(attacker, strcat(DAMAGE_CENTERPRINT_SPACER, "^3Remaining extra lives: ",ftos(attacker.armorvalue))); - attacker.hitsound += 1; - } - mirrordamage = 0; + attacker.armorvalue = attacker.armorvalue - 1; + centerprint(attacker, strcat(DAMAGE_CENTERPRINT_SPACER, "^3Remaining extra lives: ",ftos(attacker.armorvalue))); + attacker.hitsound += 1; } + mirrordamage = 0; + } + force = normalize(attacker.origin + attacker.view_ofs - hitloc) * mirrorforce; Damage(attacker, inflictor, attacker, mirrordamage, DEATH_MIRRORDAMAGE, attacker.origin, force); } @@ -981,33 +1032,47 @@ float RadiusDamage (entity inflictor, entity attacker, float coredamage, float e // laser force adjustments :P if(DEATH_WEAPONOF(deathtype) == WEP_LASER) { - vector vel; - - float force_zscale; - float force_velocitybiasramp; - float force_velocitybias; - - force_velocitybiasramp = autocvar_sv_maxspeed; - if(deathtype & HITTYPE_SECONDARY) - { - force_zscale = autocvar_g_balance_laser_secondary_force_zscale; - force_velocitybias = autocvar_g_balance_laser_secondary_force_velocitybias; - } - else - { - force_zscale = autocvar_g_balance_laser_primary_force_zscale; - force_velocitybias = autocvar_g_balance_laser_primary_force_velocitybias; - } - - vel = targ.velocity; - vel_z = 0; - vel = normalize(vel) * bound(0, vlen(vel) / force_velocitybiasramp, 1) * force_velocitybias; - force = - vlen(force) - * - normalize(normalize(force) + vel); - - force_z *= force_zscale; + if (targ == attacker) + { + vector vel; + + float force_zscale; + float force_velocitybiasramp; + float force_velocitybias; + + force_velocitybiasramp = autocvar_sv_maxspeed; + if(deathtype & HITTYPE_SECONDARY) + { + force_zscale = autocvar_g_balance_laser_secondary_force_zscale; + force_velocitybias = autocvar_g_balance_laser_secondary_force_velocitybias; + } + else + { + force_zscale = autocvar_g_balance_laser_primary_force_zscale; + force_velocitybias = autocvar_g_balance_laser_primary_force_velocitybias; + } + + vel = targ.velocity; + vel_z = 0; + vel = normalize(vel) * bound(0, vlen(vel) / force_velocitybiasramp, 1) * force_velocitybias; + force = + vlen(force) + * + normalize(normalize(force) + vel); + + force_z *= force_zscale; + } + else + { + if(deathtype & HITTYPE_SECONDARY) + { + force *= autocvar_g_balance_laser_secondary_force_other_scale; + } + else + { + force *= autocvar_g_balance_laser_primary_force_other_scale; + } + } } //if (targ == attacker) @@ -1180,6 +1245,10 @@ void Fire_ApplyDamage(entity e) if(e.watertype != CONTENT_LAVA) e.fire_endtime = 0; + // ice stops fire + if(e.freezetag_frozen) + e.fire_endtime = 0; + t = min(frametime, e.fire_endtime - time); d = e.fire_damagepersec * t; diff --git a/qcsrc/server/g_hook.qc b/qcsrc/server/g_hook.qc index ef379b9bc..dd6d73eff 100644 --- a/qcsrc/server/g_hook.qc +++ b/qcsrc/server/g_hook.qc @@ -332,6 +332,9 @@ void FireGrapplingHook (void) if((arena_roundbased && time < warmup) || (time < game_starttime)) return; + if(self.freezetag_frozen) + return; + makevectors(self.v_angle); s = self.cvar_cl_gunalign; @@ -370,7 +373,7 @@ void FireGrapplingHook (void) //missile.glow_size = 120; missile.touch = GrapplingHookTouch; missile.think = GrapplingHookThink; - missile.nextthink = time + 0.1; + missile.nextthink = time; missile.effects = /*EF_FULLBRIGHT | EF_ADDITIVE |*/ EF_LOWPRECISION; diff --git a/qcsrc/server/g_subs.qc b/qcsrc/server/g_subs.qc index 47f3a5a69..22c8931be 100644 --- a/qcsrc/server/g_subs.qc +++ b/qcsrc/server/g_subs.qc @@ -177,10 +177,51 @@ void SUB_CalcMoveDone (void) self.think1 (); } +void SUB_CalcMove_controller_think (void) +{ + entity oldself; + float traveltime; + float phasepos; + float nexttick; + vector delta; + vector veloc; + vector nextpos; + if(time < self.animstate_endtime) { + delta = self.destvec; + nexttick = time + sys_frametime; + + if(nexttick < self.animstate_endtime) { + traveltime = self.animstate_endtime - self.animstate_starttime; + phasepos = (nexttick - self.animstate_starttime) / traveltime; // range: [0, 1] + phasepos = 3.14159265 + (phasepos * 3.14159265); // range: [pi, 2pi] + phasepos = cos(phasepos); // cos [pi, 2pi] is in [-1, 1] + phasepos = phasepos + 1; // correct range to [0, 2] + phasepos = phasepos / 2; // correct range to [0, 1] + nextpos = self.origin + (delta * phasepos); + + veloc = nextpos - self.owner.origin; + veloc = veloc * (1 / sys_frametime); // so it arrives for the next frame + + } else { + veloc = self.finaldest - self.owner.origin; + veloc = veloc * (1 / sys_frametime); // so it arrives for the next frame + } + self.owner.velocity = veloc; + self.nextthink = nexttick; + } else { + oldself = self; + self.owner.think = self.think1; + self = self.owner; + remove(oldself); + self.think(); + } +} + void SUB_CalcMove (vector tdest, float tspeed, void() func) { vector delta; float traveltime; + entity controller; if (!tspeed) objerror ("No speed is defined!"); @@ -206,9 +247,36 @@ void SUB_CalcMove (vector tdest, float tspeed, void() func) return; } - self.velocity = delta * (1/traveltime); // QuakeC doesn't allow vector/float division + // Very short animations don't really show off the effect + // of controlled animation, so let's just use linear movement. + // Alternatively entities can choose to specify non-controlled movement. + // The only currently implemented alternative movement is linear (value 1) + if (traveltime < 0.15 || self.platmovetype == 1) + { + self.velocity = delta * (1/traveltime); // QuakeC doesn't allow vector/float division + self.nextthink = self.ltime + traveltime; + return; + } + controller = spawn(); + controller.classname = "SUB_CalcMove_controller"; + controller.owner = self; + controller.origin = self.origin; // starting point + controller.finaldest = (tdest + '0 0 0.125'); // where do we want to end? Offset to overshoot a bit. + controller.destvec = delta; + controller.animstate_starttime = time; + controller.animstate_endtime = time + traveltime; + controller.think = SUB_CalcMove_controller_think; + controller.think1 = self.think; + + // the thinking is now done by the controller + self.think = SUB_Null; self.nextthink = self.ltime + traveltime; + + // invoke controller + self = controller; + self.think(); + self = self.owner; } void SUB_CalcMoveEnt (entity ent, vector tdest, float tspeed, void() func) @@ -698,6 +766,33 @@ void LODmodel_attach() SetCustomizer(self, LOD_customize, LOD_uncustomize); } +void ApplyMinMaxScaleAngles(entity e) +{ + if(e.angles_x != 0 || e.angles_z != 0 || self.avelocity_x != 0 || self.avelocity_z != 0) // "weird" rotation + { + e.maxs = '1 1 1' * vlen( + '1 0 0' * max(-e.mins_x, e.maxs_x) + + '0 1 0' * max(-e.mins_y, e.maxs_y) + + '0 0 1' * max(-e.mins_z, e.maxs_z) + ); + e.mins = -e.maxs; + } + else if(e.angles_y != 0 || self.avelocity_y != 0) // yaw only is a bit better + { + e.maxs_x = vlen( + '1 0 0' * max(-e.mins_x, e.maxs_x) + + '0 1 0' * max(-e.mins_y, e.maxs_y) + ); + e.maxs_y = e.maxs_x; + e.mins_x = -e.maxs_x; + e.mins_y = -e.maxs_x; + } + if(e.scale) + setsize(e, e.mins * e.scale, e.maxs * e.scale); + else + setsize(e, e.mins, e.maxs); +} + void SetBrushEntityModel() { if(self.model != "") @@ -707,10 +802,7 @@ void SetBrushEntityModel() InitializeEntity(self, LODmodel_attach, INITPRIO_FINDTARGET); } setorigin(self, self.origin); - if(self.scale) - setsize(self, self.mins * self.scale, self.maxs * self.scale); - else - setsize(self, self.mins, self.maxs); + ApplyMinMaxScaleAngles(self); } void SetBrushEntityModelNoLOD() @@ -721,10 +813,7 @@ void SetBrushEntityModelNoLOD() setmodel(self, self.model); // no precision needed } setorigin(self, self.origin); - if(self.scale) - setsize(self, self.mins * self.scale, self.maxs * self.scale); - else - setsize(self, self.mins, self.maxs); + ApplyMinMaxScaleAngles(self); } /* diff --git a/qcsrc/server/g_triggers.qc b/qcsrc/server/g_triggers.qc index 0a70de75f..6c0921ba9 100644 --- a/qcsrc/server/g_triggers.qc +++ b/qcsrc/server/g_triggers.qc @@ -411,6 +411,14 @@ void spawnfunc_trigger_counter() self.reset = counter_reset; }; +void trigger_hurt_use() +{ + if(activator.classname == "player") + self.enemy = activator; + else + self.enemy = world; // let's just destroy it, if taking over is too much work +} + .float triggerhurttime; void trigger_hurt_touch() { @@ -429,7 +437,16 @@ void trigger_hurt_touch() { EXACTTRIGGER_TOUCH; other.triggerhurttime = time + 1; - Damage (other, self, self, self.dmg, DEATH_HURTTRIGGER, other.origin, '0 0 0'); + + entity own; + own = self.enemy; + if(own.classname != "player") + { + own = self; + self.enemy = world; // I still hate you all + } + + Damage (other, self, own, self.dmg, DEATH_HURTTRIGGER, other.origin, '0 0 0'); } } else @@ -465,6 +482,8 @@ void spawnfunc_trigger_hurt() EXACTTRIGGER_INIT; self.active = ACTIVE_ACTIVE; self.touch = trigger_hurt_touch; + self.use = trigger_hurt_use; + self.enemy = world; // I hate you all if (!self.dmg) self.dmg = 1000; if (!self.message) @@ -1703,6 +1722,7 @@ void follow_init() attach_sameorigin(dst, src, self.message); } + dst.solid = SOLID_NOT; // solid doesn't work with attachment remove(self); } else diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index e2a123adc..374f17c7b 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -237,6 +237,10 @@ void cvar_changes_init() #define BADPREFIX(p) if(substring(k, 0, strlen(p)) == p) continue #define BADPRESUFFIX(p,s) if(substring(k, 0, strlen(p)) == p && substring(k, -strlen(s), -1) == s) continue #define BADCVAR(p) if(k == p) continue + + // general excludes and namespaces for server admin used cvars + BADPREFIX("help_"); // PN's server has this listed as changed, let's not rat him out for THAT + // internal BADPREFIX("csqc_"); BADPREFIX("cvar_check_"); @@ -311,31 +315,32 @@ void cvar_changes_init() BADCVAR("g_forced_team_pink"); // mapinfo - BADCVAR("timelimit"); BADCVAR("fraglimit"); - BADCVAR("leadlimit"); - BADCVAR("g_tdm_teams"); - BADCVAR("g_keyhunt_teams"); - BADCVAR("g_domination_default_teams"); - BADCVAR("g_race_qualifying_timelimit"); - BADCVAR("g_lms"); BADCVAR("g_arena"); - BADCVAR("g_ca"); BADCVAR("g_assault"); + BADCVAR("g_ca"); BADCVAR("g_ctf"); + BADCVAR("g_cts"); BADCVAR("g_dm"); BADCVAR("g_domination"); + BADCVAR("g_domination_default_teams"); BADCVAR("g_freezetag"); + BADCVAR("g_keepaway"); BADCVAR("g_keyhunt"); BADCVAR("g_keyhunt_teams"); + BADCVAR("g_keyhunt_teams"); + BADCVAR("g_lms"); + BADCVAR("g_nexball"); BADCVAR("g_onslaught"); BADCVAR("g_race"); - BADCVAR("g_cts"); + BADCVAR("g_race_qualifying_timelimit"); BADCVAR("g_runematch"); BADCVAR("g_tdm"); - BADCVAR("g_nexball"); - BADCVAR("g_keepaway"); + BADCVAR("g_tdm_teams"); + BADCVAR("leadlimit"); + BADCVAR("nextmap"); BADCVAR("teamplay"); + BADCVAR("timelimit"); // long BADCVAR("hostname"); @@ -363,22 +368,33 @@ void cvar_changes_init() // does nothing visible BADCVAR("captureleadlimit_override"); BADCVAR("g_arena_point_leadlimit"); + BADCVAR("g_balance_kill_delay"); BADCVAR("g_ca_point_leadlimit"); + BADCVAR("g_ctf_captimerecord_always"); BADCVAR("g_ctf_capture_leadlimit"); + BADCVAR("g_ctf_flag_capture_effects"); + BADCVAR("g_ctf_flag_glowtrails"); + BADCVAR("g_ctf_flag_pickup_effects"); BADCVAR("g_domination_point_leadlimit"); + BADCVAR("g_forced_respawn"); BADCVAR("g_keyhunt_point_leadlimit"); BADCVAR("g_nexball_goalleadlimit"); BADCVAR("g_runematch_point_leadlimit"); BADCVAR("leadlimit_and_fraglimit"); BADCVAR("leadlimit_override"); - BADCVAR("sv_checkforpacketsduringsleep"); BADCVAR("pausable"); + BADCVAR("sv_checkforpacketsduringsleep"); BADCVAR("sv_timeout"); + BADCVAR("welcome_message_time"); BADPREFIX("crypto_"); BADPREFIX("g_chat_"); + BADPREFIX("g_ctf_captimerecord_"); + BADPREFIX("g_maplist_votable_"); BADPREFIX("net_"); BADPREFIX("prvm_"); + BADPREFIX("skill_"); BADPREFIX("sv_fragmessage_"); + BADPREFIX("sv_maxidle_"); BADPREFIX("sv_vote_"); BADPREFIX("timelimit_"); @@ -425,6 +441,7 @@ void cvar_changes_init() BADCVAR("hostname"); BADCVAR("log_file"); BADCVAR("maxplayers"); + BADCVAR("g_maxplayers"); BADCVAR("minplayers"); BADCVAR("net_address"); BADCVAR("port"); @@ -455,6 +472,7 @@ void cvar_changes_init() BADCVAR("timelimit_override"); BADCVAR("g_warmup"); BADPREFIX("g_warmup_"); + BADCVAR("teamplay_mode"); if(autocvar_g_minstagib) { @@ -805,8 +823,11 @@ 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, campingrifle_bulletcounter); + addstat(STAT_BULLETS_LOADED, AS_INT, sniperrifle_bulletcounter); 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); @@ -1510,11 +1531,6 @@ void DumpStats(float final) fputs(file, ":end\n"); fclose(file); } - - // send statistics - FOR_EACH_CLIENT(e) - PlayerStats_AddGlobalInfo(e); - PlayerStats_Shutdown(); } void FixIntermissionClient(entity e) @@ -1583,6 +1599,13 @@ void NextLevel() DumpStats(TRUE); + // send statistics + entity e; + PlayerStats_EndMatch(1); + FOR_EACH_CLIENT(e) + PlayerStats_AddGlobalInfo(e); + PlayerStats_Shutdown(); + if(autocvar_sv_eventlog) GameLogEcho(":gameover"); @@ -2820,16 +2843,16 @@ void EndFrame() if(self.classname == "spectator") { if(self.enemy.typehitsound) - play2(self, "misc/typehit.wav"); - else if(self.enemy.hitsound && self.cvar_cl_hitsound) - play2(self, "misc/hit.wav"); + self.typehit_time = time; + else if(self.enemy.hitsound) + self.hit_time = time; } else { if(self.typehitsound) - play2(self, "misc/typehit.wav"); - else if(self.hitsound && self.cvar_cl_hitsound) - play2(self, "misc/hit.wav"); + self.typehit_time = time; + else if(self.hitsound) + self.hit_time = time; } } altime = time + frametime * (1 + autocvar_g_antilag_nudge); @@ -2927,6 +2950,7 @@ void SV_Shutdown() print("Saving persistent data...\n"); Ban_SaveBans(); + PlayerStats_EndMatch(0); FOR_EACH_CLIENT(e) PlayerStats_AddGlobalInfo(e); PlayerStats_Shutdown(); diff --git a/qcsrc/server/gamecommand.qc b/qcsrc/server/gamecommand.qc index 5957e82bc..b15e6988f 100644 --- a/qcsrc/server/gamecommand.qc +++ b/qcsrc/server/gamecommand.qc @@ -626,6 +626,47 @@ void make_mapinfo_Think() } } +void changematchtime(float delta, float mi, float ma) +{ + float cur; + float new; + float lim; + + if(delta == 0) + return; + if(autocvar_timelimit < 0) + return; + + if(mi <= 10) + mi = 10; // at least ten sec in the future + cur = time - game_starttime; + if(cur > 0) + mi += cur; // from current time! + + lim = autocvar_timelimit * 60; + + if(delta > 0) + { + if(lim == 0) + return; // cannot increase any further + else if(lim < ma) + new = min(ma, lim + delta); + else // already above maximum: FAIL + return; + } + else + { + if(lim == 0) // infinite: try reducing to max, if we are allowed to + new = max(mi, ma); + else if(lim > mi) // above minimum: decrease + new = max(mi, lim + delta); + else // already below minimum: FAIL + return; + } + + cvar_set("timelimit", ftos(new)); +} + void GameCommand(string command) { float argc; @@ -653,6 +694,8 @@ void GameCommand(string command) print(" cvar_changes\n"); print(" cvar_purechanges\n"); print(" find classname\n"); + print(" extendmatchtime\n"); + print(" reducematchtime\n"); GameCommand_Vote("help", world); GameCommand_Ban("help"); GameCommand_Generic("help"); @@ -1379,6 +1422,18 @@ void GameCommand(string command) return; } + if(argv(0) == "extendmatchtime") + { + changematchtime(autocvar_timelimit_increment* 60, autocvar_timelimit_min*60, autocvar_timelimit_max*60); + return; + } + + if(argv(0) == "reducematchtime") + { + changematchtime(autocvar_timelimit_decrement*-60, autocvar_timelimit_min*60, autocvar_timelimit_max*60); + return; + } + print("Invalid command. For a list of supported commands, try sv_cmd help.\n"); } diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index 113e9f427..364c92599 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -603,7 +603,6 @@ void GetCvars(float f) GetCvars_handleFloat(s, f, cvar_cl_noantilag, "cl_noantilag"); GetCvars_handleFloat(s, f, cvar_cl_voice_directional, "cl_voice_directional"); GetCvars_handleFloat(s, f, cvar_cl_voice_directional_taunt_attenuation, "cl_voice_directional_taunt_attenuation"); - GetCvars_handleFloat(s, f, cvar_cl_hitsound, "cl_hitsound"); GetCvars_handleFloat(s, f, cvar_cl_accuracy_data_share, "cl_accuracy_data_share"); GetCvars_handleFloat(s, f, cvar_cl_accuracy_data_receive, "cl_accuracy_data_receive"); @@ -616,6 +615,7 @@ void GetCvars(float f) #endif GetCvars_handleFloatOnce(s, f, cvar_cl_gunalign, "cl_gunalign"); GetCvars_handleFloat(s, f, cvar_cl_allow_uid2name, "cl_allow_uid2name"); + GetCvars_handleFloat(s, f, cvar_cl_allow_uidtracking, "cl_allow_uidtracking"); // fixup of switchweapon (needed for LMS or when spectating is disabled, as PutClientInServer comes too early) if (f > 0) @@ -915,8 +915,15 @@ void readplayerstartcvars() g_weaponarena = 0; s = cvar_string("g_weaponarena"); - if (s == "0") + if (s == "0" || s == "") { + if(g_lms || g_ca) + s = "most"; + } + + if (s == "off") + { + // forcibly turn off weaponarena } else if (s == "all") { @@ -981,6 +988,40 @@ void readplayerstartcvars() if (g_weaponarena) { start_weapons = g_weaponarena; + if(!(g_lms || g_ca)) + start_items |= IT_UNLIMITED_AMMO; + } + else if (g_minstagib) + { + start_health = 100; + start_armorvalue = 0; + start_weapons = WEPBIT_MINSTANEX; + weapon_action(WEP_MINSTANEX, WR_PRECACHE); + g_minstagib_invis_alpha = cvar("g_minstagib_invis_alpha"); + + if (g_minstagib_invis_alpha <= 0) + g_minstagib_invis_alpha = -1; + } + else + { + for (i = WEP_FIRST; i <= WEP_LAST; ++i) + { + e = get_weaponinfo(i); + if(want_weapon("g_start_weapon_", e, FALSE)) + start_weapons |= e.weapons; + } + } + + if(!cvar("g_use_ammunition")) + start_items |= IT_UNLIMITED_AMMO; + + if(g_minstagib) + { + start_ammo_cells = cvar("g_minstagib_ammo_start"); + start_ammo_fuel = cvar("g_start_ammo_fuel"); + } + else if(start_items & IT_UNLIMITED_WEAPON_AMMO) + { for (j = WEP_FIRST; j <= WEP_LAST; ++j) { e = get_weaponinfo(j); @@ -998,32 +1039,16 @@ void readplayerstartcvars() start_ammo_fuel = 999; } } - start_items |= IT_UNLIMITED_AMMO; - } - else if (g_minstagib) - { - start_health = 100; - start_armorvalue = 0; - start_weapons = WEPBIT_MINSTANEX; - weapon_action(WEP_MINSTANEX, WR_PRECACHE); - start_ammo_cells = cvar("g_minstagib_ammo_start"); - g_minstagib_invis_alpha = cvar("g_minstagib_invis_alpha"); - start_ammo_fuel = cvar("g_start_ammo_fuel"); - - if (g_minstagib_invis_alpha <= 0) - g_minstagib_invis_alpha = -1; } else { - if (g_lms || g_ca) + if(g_lms || g_ca) { start_ammo_shells = cvar("g_lms_start_ammo_shells"); start_ammo_nails = cvar("g_lms_start_ammo_nails"); start_ammo_rockets = cvar("g_lms_start_ammo_rockets"); start_ammo_cells = cvar("g_lms_start_ammo_cells"); start_ammo_fuel = cvar("g_lms_start_ammo_fuel"); - start_health = cvar("g_lms_start_health"); - start_armorvalue = cvar("g_lms_start_armor"); } else { @@ -1033,13 +1058,12 @@ void readplayerstartcvars() start_ammo_cells = cvar("g_start_ammo_cells"); start_ammo_fuel = cvar("g_start_ammo_fuel"); } + } - for (i = WEP_FIRST; i <= WEP_LAST; ++i) - { - e = get_weaponinfo(i); - if(want_weapon("g_start_weapon_", e, FALSE)) - start_weapons |= e.weapons; - } + if (g_lms || g_ca) + { + start_health = cvar("g_lms_start_health"); + start_armorvalue = cvar("g_lms_start_armor"); } if (inWarmupStage) @@ -1080,22 +1104,6 @@ void readplayerstartcvars() warmup_start_ammo_fuel = max(warmup_start_ammo_fuel, cvar("g_balance_fuel_rotstable")); } - if(!cvar("g_use_ammunition")) - { - start_ammo_shells = cvar("g_pickup_shells_max"); - start_ammo_nails = cvar("g_pickup_nails_max"); - start_ammo_rockets = cvar("g_pickup_rockets_max"); - start_ammo_cells = cvar("g_pickup_cells_max"); - start_ammo_fuel = cvar("g_pickup_fuel_max"); - start_items |= IT_UNLIMITED_AMMO; - warmup_start_ammo_shells = cvar("g_pickup_shells_max"); - warmup_start_ammo_nails = cvar("g_pickup_nails_max"); - warmup_start_ammo_rockets = cvar("g_pickup_rockets_max"); - warmup_start_ammo_cells = cvar("g_pickup_cells_max"); - warmup_start_ammo_fuel = cvar("g_pickup_fuel_max"); - //warmup_start_items |= IT_UNLIMITED_AMMO; - } - if (g_jetpack) start_items |= IT_JETPACK; @@ -1630,8 +1638,6 @@ void precache() precache_sound ("misc/gib_splat02.wav"); precache_sound ("misc/gib_splat03.wav"); precache_sound ("misc/gib_splat04.wav"); - precache_sound ("misc/hit.wav"); - precache_sound ("misc/typehit.wav"); PrecacheGlobalSound((globalsound_fall = "misc/hitground 4")); PrecacheGlobalSound((globalsound_metalfall = "misc/metalhitground 4")); precache_sound ("misc/null.wav"); @@ -2545,10 +2551,7 @@ float MoveToRandomMapLocation(entity e, float goodcontents, float badcontents, f // rule 6: we must not end up in trigger_hurt if (tracebox_hits_trigger_hurt(start, e.mins, e.maxs, enddown)) - { - dprint("trigger_hurt! ouch! and nothing else could find it!\n"); continue; - } break; } @@ -2857,65 +2860,65 @@ void SoundEntity_Detach(entity pl) float ParseCommandPlayerSlotTarget_firsttoken; entity GetCommandPlayerSlotTargetFromTokenizedCommand(float tokens, float idx) // idx = start index { - string s; - entity e, head; - float n; + string s; + entity e, head; + float n; - s = string_null; + s = string_null; - ParseCommandPlayerSlotTarget_firsttoken = -1; + ParseCommandPlayerSlotTarget_firsttoken = -1; - if (tokens > idx) - { - if (substring(argv(idx), 0, 1) == "#") - { - s = substring(argv(idx), 1, -1); - ++idx; - if (s == "") - if (tokens > idx) - { - s = argv(idx); - ++idx; - } + if (tokens > idx) + { + if (substring(argv(idx), 0, 1) == "#") + { + s = substring(argv(idx), 1, -1); + ++idx; + if (s == "") if (tokens > idx) + { + s = argv(idx); + ++idx; + } ParseCommandPlayerSlotTarget_firsttoken = idx; - if (s == ftos(stof(s))) - { - e = edict_num(stof(s)); - if (e.flags & FL_CLIENT) - return e; - } - } - else - { - // it must be a nick name - s = argv(idx); - ++idx; + n = stof(s); + if (s == ftos(n) && n > 0 && n <= maxclients) + { + e = edict_num(n); + if (e.flags & FL_CLIENT) + return e; + } + } + else + { + // it must be a nick name + s = argv(idx); + ++idx; ParseCommandPlayerSlotTarget_firsttoken = idx; - n = 0; - FOR_EACH_CLIENT(head) - if (head.netname == s) - { - e = head; - ++n; - } - if (n == 1) - return e; + n = 0; + FOR_EACH_CLIENT(head) + if (head.netname == s) + { + e = head; + ++n; + } + if (n == 1) + return e; - s = strdecolorize(s); - n = 0; - FOR_EACH_CLIENT(head) - if (strdecolorize(head.netname) == s) - { - e = head; - ++n; - } - if (n == 1) - return e; - } - } + s = strdecolorize(s); + n = 0; + FOR_EACH_CLIENT(head) + if (strdecolorize(head.netname) == s) + { + e = head; + ++n; + } + if (n == 1) + return e; + } + } - return world; + return world; } .float scale2; diff --git a/qcsrc/server/mutators/base.qc b/qcsrc/server/mutators/base.qc index 0b1bea45e..697849680 100644 --- a/qcsrc/server/mutators/base.qc +++ b/qcsrc/server/mutators/base.qc @@ -87,19 +87,48 @@ float CallbackChain_Call(entity cb) return r; // callbacks return an error status, so 0 is default return value } -float Mutator_Add(float(float) func) +#define MAX_MUTATORS 8 +string loaded_mutators[MAX_MUTATORS]; +float Mutator_Add(mutatorfunc_t func, string name) { + float i, j; + j = -1; + for(i = 0; i < MAX_MUTATORS; ++i) + { + if(name == loaded_mutators[i]) + return 1; // already added + if(!loaded_mutators[i]) + j = i; + } + if(j < 0) + { + backtrace("WARNING: too many mutators, cannot add any more\n"); + return 0; + } + loaded_mutators[j] = name; + if(func(MUTATOR_ADDING) == 0) { // good return 1; } backtrace("WARNING: when adding mutator: adding failed\n"); - Mutator_Remove(func); + Mutator_Remove(func, name); return 0; } -void Mutator_Remove(float(float) func) +void Mutator_Remove(float(float) func, string name) { + float i; + for(i = 0; i < MAX_MUTATORS; ++i) + if(name == loaded_mutators[i]) + break; + if(i >= MAX_MUTATORS) + { + backtrace("WARNING: removing not-added mutator\n"); + return; + } + loaded_mutators[i] = string_null; + if(func(MUTATOR_REMOVING) != 0) { // baaaaad diff --git a/qcsrc/server/mutators/base.qh b/qcsrc/server/mutators/base.qh index b7c523dcb..05a5187e5 100644 --- a/qcsrc/server/mutators/base.qh +++ b/qcsrc/server/mutators/base.qh @@ -16,11 +16,12 @@ float CallbackChain_Call(entity cb); #define MUTATOR_REMOVING 0 #define MUTATOR_ADDING 1 -float Mutator_Add(float(float) func); -void Mutator_Remove(float(float) func); // calls error() on fail +typedef float(float) mutatorfunc_t; +float Mutator_Add(mutatorfunc_t func, string name); +void Mutator_Remove(mutatorfunc_t func, string name); // calls error() on fail -#define MUTATOR_ADD(name) Mutator_Add(MUTATOR_##name) -#define MUTATOR_REMOVE(name) Mutator_Remove(MUTATOR_##name) +#define MUTATOR_ADD(name) Mutator_Add(MUTATOR_##name, #name) +#define MUTATOR_REMOVE(name) Mutator_Remove(MUTATOR_##name, #name) #define MUTATOR_DEFINITION(name) float MUTATOR_##name(float mode) #define MUTATOR_DECLARATION(name) float MUTATOR_##name(float mode) #define MUTATOR_HOOKFUNCTION(name) float HOOKFUNCTION_##name() @@ -94,6 +95,10 @@ MUTATOR_HOOKABLE(FilterItem); // checks if the current item may be spawned (self.items and self.weapons may be read and written to, as well as the ammo_ fields) // return error to request removal +MUTATOR_HOOKABLE(TurretSpawn); + // return error to request removal + // INPUT: self - turret + MUTATOR_HOOKABLE(OnEntityPreSpawn); // return error to prevent entity spawn, or modify the entity diff --git a/qcsrc/server/mutators/gamemode_freezetag.qc b/qcsrc/server/mutators/gamemode_freezetag.qc index a1cc9deb6..4cddbbc70 100644 --- a/qcsrc/server/mutators/gamemode_freezetag.qc +++ b/qcsrc/server/mutators/gamemode_freezetag.qc @@ -2,6 +2,7 @@ void freezetag_Initialize() { precache_model("models/ice/ice.md3"); warmup = time + autocvar_g_start_delay + autocvar_g_freezetag_warmup; + ScoreRules_freezetag(); } void freezetag_CheckWinner() @@ -22,6 +23,7 @@ void freezetag_CheckWinner() entity e, winner; string teamname; + winner = world; FOR_EACH_PLAYER(e) { @@ -34,7 +36,6 @@ void freezetag_CheckWinner() if(winner != world) // just in case a winner wasn't found { - TeamScore_AddToTeam(winner.team, ST_SCORE, +1); if(winner.team == COLOR_TEAM1) teamname = "^1Red Team"; else if(winner.team == COLOR_TEAM2) @@ -47,20 +48,27 @@ void freezetag_CheckWinner() centerprint(e, strcat(teamname, "^5 wins the round, all other teams were frozen.\n")); } bprint(teamname, "^5 wins the round since all the other teams were frozen.\n"); + TeamScore_AddToTeam(winner.team, ST_SCORE, +1); } next_round = time + 5; } +// this is needed to allow the player to turn his view around (fixangle can't +// be used to freeze his view, as that also changes the angles), while not +// turning that ice object with the player void freezetag_Ice_Think() { setorigin(self, self.owner.origin - '0 0 16'); self.nextthink = time; } -void freezetag_Freeze() +void freezetag_Freeze(entity attacker) { + if(self.freezetag_frozen) + return; self.freezetag_frozen = 1; + self.freezetag_revive_progress = 0; entity ice; ice = spawn(); @@ -71,7 +79,11 @@ void freezetag_Freeze() ice.frame = floor(random() * 21); // ice model has 20 different looking frames setmodel(ice, "models/ice/ice.md3"); - self.movement = '0 0 0'; + entity oldself; + oldself = self; + self = ice; + freezetag_Ice_Think(); + self = oldself; // add waypoint WaypointSprite_Spawn("freezetag_frozen", 0, 0, self, '0 0 64', world, self.team, self, waypointsprite_attached, TRUE); @@ -79,11 +91,30 @@ void freezetag_Freeze() { WaypointSprite_UpdateTeamRadar(self.waypointsprite_attached, RADARICON_WAYPOINT, '0.25 0.90 1'); } + + if(attacker == self) + { + // you froze your own dumb self + // counted as "suicide" already + PlayerScore_Add(self, SP_SCORE, -1); + } + else if(attacker.classname == "player") + { + // got frozen by an enemy + // counted as "kill" and "death" already + PlayerScore_Add(self, SP_SCORE, -1); + PlayerScore_Add(attacker, SP_SCORE, +1); + } + else + { + // nothing - got frozen by the game type rules themselves + } } -void freezetag_Unfreeze() +void freezetag_Unfreeze(entity attacker) { self.freezetag_frozen = 0; + self.freezetag_revive_progress = 0; // remove the ice block entity ice; @@ -116,7 +147,7 @@ MUTATOR_HOOKFUNCTION(freezetag_RemovePlayer) if(totalspawned > 2) // only check for winners if we had more than two players (one of them left, don't let the other player win just because of that) freezetag_CheckWinner(); - freezetag_Unfreeze(); + freezetag_Unfreeze(world); return 1; } @@ -135,7 +166,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerDies) --pinkalive; --totalalive; - freezetag_Freeze(); + freezetag_Freeze(frag_attacker); } if(frag_attacker.classname == STR_PLAYER) @@ -163,7 +194,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerDies) MUTATOR_HOOKFUNCTION(freezetag_PlayerSpawn) { - freezetag_Unfreeze(); // start by making sure that all ice blocks are removed + freezetag_Unfreeze(world); // start by making sure that all ice blocks are removed if(totalspawned == 1 && time > game_starttime) // only one player active on server, start a new match immediately if(!next_round && warmup && (time < warmup - autocvar_g_freezetag_warmup || time > warmup)) // not awaiting next round @@ -174,7 +205,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerSpawn) if(warmup && time > warmup) // spawn too late, freeze player { centerprint(self, "^1You spawned after the round started, you'll spawn as frozen.\n"); - freezetag_Freeze(); + freezetag_Freeze(world); } return 1; @@ -188,64 +219,86 @@ MUTATOR_HOOKFUNCTION(freezetag_GiveFragsForKill) MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink) { - vector revive_extra_size; - revive_extra_size = '1 1 1' * autocvar_g_freezetag_revive_extra_size; + float n; + vector revive_extra_size; - float teammate_nearby; - FOR_EACH_PLAYER(other) if(self != other) - { - if(other.freezetag_frozen == 0) - { - if(other.team == self.team) - { - teammate_nearby = boxesoverlap(self.absmin - revive_extra_size, self.absmax + revive_extra_size, other.absmin, other.absmax); - if(teammate_nearby) - break; - } - } - } + revive_extra_size = '1 1 1' * autocvar_g_freezetag_revive_extra_size; - if(teammate_nearby && self.freezetag_frozen == 1) // OK, there is at least one teammate reviving us - { - if(self.freezetag_beginrevive_time == -9999) // initialize values if this is the first frame of revival - { - self.freezetag_beginrevive_time = time; - self.freezetag_revive_progress = 0; - } - else - { - self.freezetag_revive_progress = (time - self.freezetag_beginrevive_time) / autocvar_g_freezetag_revive_time; - if(time - self.freezetag_beginrevive_time >= autocvar_g_freezetag_revive_time) - { - freezetag_Unfreeze(); - - centerprint(self, strcat("^5You were revived by ^7", other.netname, ".\n")); - centerprint(other, strcat("^5You revived ^7", self.netname, ".\n")); - bprint("^7", other.netname, "^5 revived ^7", self.netname, ".\n"); - - self.freezetag_beginrevive_time = -9999; - self.freezetag_revive_progress = 0; - } - } - // now find EVERY teammate within reviving radius, set their revive_progress values correct - FOR_EACH_PLAYER(other) if(self != other) - { - if(other.freezetag_frozen == 0) - { - if(other.team == self.team) - { - teammate_nearby = boxesoverlap(self.absmin - revive_extra_size, self.absmax + revive_extra_size, other.absmin, other.absmax); - if(teammate_nearby) - other.freezetag_revive_progress = self.freezetag_revive_progress; - } - } - } - } - else if(!teammate_nearby) // only if no teammate is nearby will we reset - { - self.freezetag_beginrevive_time = -9999; - self.freezetag_revive_progress = 0; - } + entity o; + o = world; + n = 0; + FOR_EACH_PLAYER(other) if(self != other) + { + if(other.freezetag_frozen == 0) + { + if(other.team == self.team) + { + if(boxesoverlap(self.absmin - revive_extra_size, self.absmax + revive_extra_size, other.absmin, other.absmax)) + { + if(!o) + o = other; + ++n; + } + } + } + } + + if(n && self.freezetag_frozen) // OK, there is at least one teammate reviving us + { + self.freezetag_revive_progress = bound(0, self.freezetag_revive_progress + frametime * autocvar_g_freezetag_revive_speed, 1); + + if(self.freezetag_revive_progress >= 1) + { + freezetag_Unfreeze(self); + + // EVERY team mate nearby gets a point (even if multiple!) + FOR_EACH_PLAYER(other) if(self != other) + { + if(other.freezetag_frozen == 0) + { + if(other.team == self.team) + { + if(boxesoverlap(self.absmin - revive_extra_size, self.absmax + revive_extra_size, other.absmin, other.absmax)) + { + PlayerScore_Add(other, SP_FREEZETAG_REVIVALS, +1); + PlayerScore_Add(other, SP_SCORE, +1); + } + } + } + } + + if(n > 1) + centerprint(self, strcat("^5You were revived by ^7", o.netname, "^5 et al.\n")); + else + centerprint(self, strcat("^5You were revived by ^7", o.netname, "^5.\n")); + centerprint(o, strcat("^5You revived ^7", self.netname, "^5.\n")); + if(n > 1) + bprint("^7", o.netname, "^5 et al revived ^7", self.netname, "^5.\n"); + else + bprint("^7", o.netname, "^5 revived ^7", self.netname, "^5.\n"); + } + + // now find EVERY teammate within reviving radius, set their revive_progress values correct + FOR_EACH_PLAYER(other) if(self != other) + { + if(other.freezetag_frozen == 0) + { + if(other.team == self.team) + { + if(boxesoverlap(self.absmin - revive_extra_size, self.absmax + revive_extra_size, other.absmin, other.absmax)) + other.freezetag_revive_progress = self.freezetag_revive_progress; + } + } + } + } + else if(!n && self.freezetag_frozen) // only if no teammate is nearby will we reset + { + self.freezetag_revive_progress = bound(0, self.freezetag_revive_progress - frametime * autocvar_g_freezetag_revive_clearspeed, 1); + } + else if(!n) + { + self.freezetag_revive_progress = 0; // thawing nobody + } return 1; } @@ -253,7 +306,10 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink) MUTATOR_HOOKFUNCTION(freezetag_PlayerPhysics) { if(self.freezetag_frozen) + { self.movement = '0 0 0'; + self.disableclientprediction = 1; + } return 1; } @@ -270,6 +326,13 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerDamage_Calculate) return 1; } +MUTATOR_HOOKFUNCTION(freezetag_ForbidThrowCurrentWeapon) +{ + if (self.freezetag_frozen) + return 1; + return 0; +} + MUTATOR_DEFINITION(gamemode_freezetag) { MUTATOR_HOOK(MakePlayerObserver, freezetag_RemovePlayer, CBC_ORDER_ANY); @@ -280,6 +343,7 @@ MUTATOR_DEFINITION(gamemode_freezetag) MUTATOR_HOOK(PlayerPreThink, freezetag_PlayerPreThink, CBC_ORDER_FIRST); MUTATOR_HOOK(PlayerPhysics, freezetag_PlayerPhysics, CBC_ORDER_FIRST); MUTATOR_HOOK(PlayerDamage_Calculate, freezetag_PlayerDamage_Calculate, CBC_ORDER_ANY); + MUTATOR_HOOK(ForbidThrowCurrentWeapon, freezetag_ForbidThrowCurrentWeapon, CBC_ORDER_FIRST); //first, last or any? dunno. MUTATOR_ONADD { diff --git a/qcsrc/server/mutators/gamemode_keepaway.qc b/qcsrc/server/mutators/gamemode_keepaway.qc index 9fb47afbb..60c39d434 100644 --- a/qcsrc/server/mutators/gamemode_keepaway.qc +++ b/qcsrc/server/mutators/gamemode_keepaway.qc @@ -2,6 +2,7 @@ void ka_SpawnBall(void); void ka_TouchEvent(void); void ka_RespawnBall(void); void ka_DropEvent(entity); +void ka_TimeScoring(void); float ka_ballcarrier_waypointsprite_visible_for_player(entity); @@ -28,26 +29,26 @@ void ka_Reset() // used to clear the ballcarrier whenever the match switches fro ka_RespawnBall(); } -void ka_SpawnBall() // loads various values for the ball +void ka_SpawnBall() // loads various values for the ball, runs only once at start of match { if(!g_keepaway) { return; } entity e; e = spawn(); e.model = "models/orbs/orbblue.md3"; - e.scale = 1; precache_model(e.model); setmodel(e, e.model); setsize(e, '-16 -16 -20', '16 16 20'); // 20 20 20 was too big, player is only 16 16 24... gotta cheat with the Z (20) axis so that the particle isn't cut off e.classname = "keepawayball"; e.damageforcescale = autocvar_g_keepawayball_damageforcescale; e.takedamage = DAMAGE_YES; + e.solid = SOLID_TRIGGER; + e.movetype = MOVETYPE_BOUNCE; e.glow_color = autocvar_g_keepawayball_trail_color; e.glow_trail = TRUE; - e.movetype = MOVETYPE_BOUNCE; - e.touch = ka_TouchEvent; e.flags = FL_ITEM; e.reset = ka_Reset; + e.touch = ka_TouchEvent; e.owner = world; InitializeEntity(e, ka_RespawnBall, INITPRIO_SETLOCATION); // is this the right priority? Neh, I have no idea.. Well-- it works! So. @@ -55,15 +56,16 @@ void ka_SpawnBall() // loads various values for the ball void ka_RespawnBall() // runs whenever the ball needs to be relocated { + if(gameover) { return; } vector oldballorigin = self.origin; - + if(MoveToRandomMapLocation(self, DPCONTENTS_SOLID | DPCONTENTS_CORPSE | DPCONTENTS_PLAYERCLIP, DPCONTENTS_SLIME | DPCONTENTS_LAVA | DPCONTENTS_SKY | DPCONTENTS_BODY | DPCONTENTS_DONOTENTER, Q3SURFACEFLAG_SKY, 10, 1024, 256)) { makevectors(self.angles); self.movetype = MOVETYPE_BOUNCE; self.velocity = '0 0 200'; self.angles = '0 0 0'; - self.solid = SOLID_TRIGGER; + self.effects = autocvar_g_keepawayball_effects; self.think = ka_RespawnBall; self.nextthink = time + autocvar_g_keepawayball_respawntime; @@ -84,6 +86,7 @@ void ka_RespawnBall() // runs whenever the ball needs to be relocated void ka_TouchEvent() // runs any time that the ball comes in contact with something { + if(gameover) { return; } if(!self) { return; } if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT) { // The ball fell off the map, respawn it since players can't get to it @@ -103,24 +106,22 @@ void ka_TouchEvent() // runs any time that the ball comes in contact with someth self.owner = other; other.ballcarried = self; setattachment(self, other, ""); - setorigin(self, '3 0 20'); + setorigin(self, '0 0 0'); - // make the ball invisible/unable to do anything + // make the ball invisible/unable to do anything/set up time scoring self.velocity = '0 0 0'; self.movetype = MOVETYPE_NONE; - self.touch = SUB_Null; self.effects |= EF_NODRAW; - self.think = SUB_Null; - self.nextthink = 0; + self.touch = SUB_Null; + self.think = ka_TimeScoring; + self.nextthink = time + autocvar_g_keepaway_score_timeinterval; self.takedamage = DAMAGE_NO; // apply effects to player other.glow_color = autocvar_g_keepawayball_trail_color; other.glow_trail = TRUE; - other.effects |= EF_DIMLIGHT; - other.alpha = autocvar_g_keepaway_ballcarrier_alpha; - other.exteriorweaponentity.alpha = autocvar_g_keepaway_ballcarrier_alpha; - + other.effects |= autocvar_g_keepaway_ballcarrier_effects; + // messages and sounds Send_KillNotification(other.netname, "", "", KA_PICKUPBALL, MSG_KA); WriteByte(MSG_BROADCAST, SVC_CENTERPRINT); @@ -149,11 +150,10 @@ void ka_DropEvent(entity plyr) // runs any time that a player is supposed to los // reset the ball setattachment(ball, world, ""); ball.movetype = MOVETYPE_BOUNCE; - ball.solid = SOLID_TRIGGER; // is this needed? ball.wait = time + 1; + ball.touch = ka_TouchEvent; ball.think = ka_RespawnBall; ball.nextthink = time + autocvar_g_keepawayball_respawntime; - ball.touch = ka_TouchEvent; ball.takedamage = DAMAGE_YES; ball.effects &~= EF_NODRAW; setorigin(ball, plyr.origin + '0 0 10'); @@ -162,11 +162,9 @@ void ka_DropEvent(entity plyr) // runs any time that a player is supposed to los ball.owner = world; // reset the player effects - plyr.effects &~= EF_DIMLIGHT; - plyr.alpha = default_player_alpha; - plyr.exteriorweaponentity.alpha = default_weapon_alpha; plyr.glow_trail = FALSE; - + plyr.effects &~= autocvar_g_keepaway_ballcarrier_effects; + // messages and sounds Send_KillNotification(plyr.netname, "", "", KA_DROPBALL, MSG_KA); WriteByte(MSG_BROADCAST, SVC_CENTERPRINT); @@ -174,7 +172,7 @@ void ka_DropEvent(entity plyr) // runs any time that a player is supposed to los sound(other, CHAN_AUTO, "keepaway/dropped.wav", VOL_BASE, ATTN_NONE); // ATTN_NONE (it's a sound intended to be heard anywhere) // scoring - PlayerScore_Add(plyr, SP_KEEPAWAY_DROPS, 1); + // PlayerScore_Add(plyr, SP_KEEPAWAY_DROPS, 1); Not anymore, this is 100% the same as pickups and is useless. // waypoints WaypointSprite_Spawn("ka-ball", 0, 0, ball, '0 0 64', world, ball.team, ball, waypointsprite_attachedforcarrier, FALSE); @@ -187,20 +185,24 @@ void ka_DropEvent(entity plyr) // runs any time that a player is supposed to los float ka_ballcarrier_waypointsprite_visible_for_player(entity e) // runs on waypoints which are attached to ballcarriers, updates once per frame { if(e.ballcarried) - { if(other.classname == "spectator") return FALSE; // we don't want spectators of the ballcarrier to see the attached waypoint on the top of their screen - else if(g_minstagib && (e.items & IT_STRENGTH)) - return FALSE; // if the ballcarrier has invisibility, don't draw the waypoint as this is the function of invisibility in keepaway - } + + // TODO: Make the ballcarrier lack a waypointsprite whenever they have the invisibility powerup return TRUE; } -MUTATOR_HOOKFUNCTION(ka_RemovePlayer) +void ka_TimeScoring() { - if(self.ballcarried) { ka_DropEvent(self); } // a player with the ball has left the match, drop it - return 0; + if(self.owner.ballcarried) + { // add points for holding the ball after a certain amount of time + if(autocvar_g_keepaway_score_timepoints) + PlayerScore_Add(self.owner, SP_SCORE, autocvar_g_keepaway_score_timepoints); + + PlayerScore_Add(self.owner, SP_KEEPAWAY_BCTIME, (autocvar_g_keepaway_score_timeinterval / 1)); // interval is divided by 1 so that time always shows "seconds" + self.nextthink = time + autocvar_g_keepaway_score_timeinterval; + } } MUTATOR_HOOKFUNCTION(ka_Scoring) @@ -209,15 +211,15 @@ MUTATOR_HOOKFUNCTION(ka_Scoring) { if(frag_target.ballcarried) { // add to amount of times killing carrier PlayerScore_Add(frag_attacker, SP_KEEPAWAY_CARRIERKILLS, 1); - if(autocvar_g_keepaway_bckillscore) // add bckills to the score - PlayerScore_Add(frag_attacker, SP_KEEPAWAY_SCORE, 1); + if(autocvar_g_keepaway_score_bckill) // add bckills to the score + PlayerScore_Add(frag_attacker, SP_SCORE, autocvar_g_keepaway_score_bckill); } else if(!frag_attacker.ballcarried) if(autocvar_g_keepaway_noncarrier_warn) centerprint_atprio(frag_attacker, (CENTERPRIO_SPAM + 5), "Killing people while you don't have the ball gives no points!"); if(frag_attacker.ballcarried) // add to amount of kills while ballcarrier - PlayerScore_Add(frag_attacker, SP_KEEPAWAY_SCORE, 1); + PlayerScore_Add(frag_attacker, SP_SCORE, autocvar_g_keepaway_score_killac); } if(self.ballcarried) { ka_DropEvent(self); } // a player with the ball has died, drop it @@ -227,7 +229,7 @@ MUTATOR_HOOKFUNCTION(ka_Scoring) MUTATOR_HOOKFUNCTION(ka_GiveFragsForKill) { frag_score = 0; // no frags counted in keepaway - return 0; + return 1; // you deceptive little bugger ;3 This needs to be true in order for this function to even count. } MUTATOR_HOOKFUNCTION(ka_PlayerPreThink) @@ -277,62 +279,32 @@ MUTATOR_HOOKFUNCTION(ka_PlayerDamage) // for changing damage and force values th return 0; } +MUTATOR_HOOKFUNCTION(ka_RemovePlayer) +{ + if(self.ballcarried) { ka_DropEvent(self); } // a player with the ball has left the match, drop it + return 0; +} + MUTATOR_HOOKFUNCTION(ka_PlayerPowerups) { - if(self.ballcarried) - { - // if the player has the ball, force ballcarrier alpha upon them - self.alpha = autocvar_g_keepaway_ballcarrier_alpha; - self.exteriorweaponentity.alpha = autocvar_g_keepaway_ballcarrier_alpha; + // In the future this hook is supposed to allow me to do some extra stuff with waypointsprites and invisibility powerup + // So bare with me until I can fix a certain bug with ka_ballcarrier_waypointsprite_visible_for_player() - // if we're in minstagib and a ballcarrier has just picked up invisibility, - // notify all the other players that the ballcarrier no longer has a waypoint - if(g_minstagib) - { - if(olditems & IT_STRENGTH) - { - if(time > self.strength_finished) - { // this only runs ONCE right after the player loses invisibility - bprint(self.netname, "^7 isn't invisible from radar anymore.\n"); - } - } - else - { - if(time < self.strength_finished) - { // this only runs ONCE right after the player gains invisibility - bprint(self.netname, "^7 has picked up invisibility and can no longer be seen on radar!\n"); - } - } - } - } - else if(g_minstagib) - { - // if we're in minstagib and a noncarrier has invisibility, assure that we apply the invisibility effects normally - if(olditems & IT_STRENGTH) - { - self.alpha = g_minstagib_invis_alpha; - self.exteriorweaponentity.alpha = g_minstagib_invis_alpha; - } - } - else - { - // if we're a normal player with no powerups that edit alpha make sure the alpha is default. - // (normal powerups just use EF_ADDITIVE) - self.alpha = default_player_alpha; - self.exteriorweaponentity.alpha = default_weapon_alpha; - } + self.effects &~= autocvar_g_keepaway_ballcarrier_effects; + + if(self.ballcarried) + self.effects |= autocvar_g_keepaway_ballcarrier_effects; return 0; } MUTATOR_DEFINITION(gamemode_keepaway) { - // I don't quite understand these orders, perhaps someone could enlighten me? MUTATOR_HOOK(MakePlayerObserver, ka_RemovePlayer, CBC_ORDER_ANY); MUTATOR_HOOK(ClientDisconnect, ka_RemovePlayer, CBC_ORDER_ANY); MUTATOR_HOOK(PlayerDies, ka_Scoring, CBC_ORDER_ANY); MUTATOR_HOOK(GiveFragsForKill, ka_GiveFragsForKill, CBC_ORDER_ANY); - MUTATOR_HOOK(PlayerPreThink, ka_PlayerPreThink, CBC_ORDER_FIRST); + MUTATOR_HOOK(PlayerPreThink, ka_PlayerPreThink, CBC_ORDER_ANY); MUTATOR_HOOK(PlayerDamage_Calculate, ka_PlayerDamage, CBC_ORDER_ANY); MUTATOR_HOOK(PlayerPowerups, ka_PlayerPowerups, CBC_ORDER_ANY); diff --git a/qcsrc/server/nexball.qc b/qcsrc/server/nexball.qc index b1f59497a..13e8eea40 100644 --- a/qcsrc/server/nexball.qc +++ b/qcsrc/server/nexball.qc @@ -725,6 +725,7 @@ float w_nexball_weapon(float req) precache_model ("models/elaser.mdl"); precache_sound ("nexball/shoot1.wav"); precache_sound ("nexball/shoot2.wav"); + precache_sound ("misc/typehit.wav"); } else if (req == WR_SETUP) weapon_setup(WEP_PORTO); diff --git a/qcsrc/server/playerstats.qc b/qcsrc/server/playerstats.qc index 7904e30ef..c5ba3b013 100644 --- a/qcsrc/server/playerstats.qc +++ b/qcsrc/server/playerstats.qc @@ -3,6 +3,7 @@ string playerstats_last; string events_last; .float playerstats_addedglobalinfo; float playerstats_requested; +.string playerstats_id; void PlayerStats_Init() { @@ -17,16 +18,60 @@ void PlayerStats_Init() playerstats_waitforme = FALSE; // must wait for it at match end PlayerStats_AddEvent(PLAYERSTATS_ALIVETIME); - PlayerStats_AddEvent(PLAYERSTATS_KILLS); + PlayerStats_AddEvent(PLAYERSTATS_WINS); + PlayerStats_AddEvent(PLAYERSTATS_MATCHES); + PlayerStats_AddEvent(PLAYERSTATS_JOINS); + PlayerStats_AddEvent(PLAYERSTATS_SCOREBOARD_VALID); + + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_3); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_5); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_10); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_15); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_20); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_25); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_30); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_BOTLIKE); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_FIRSTBLOOD); + PlayerStats_AddEvent(PLAYERSTATS_ACHIEVEMENT_FIRSTVICTIM); } void PlayerStats_AddPlayer(entity e) { - if(!e.crypto_idfp || playerstats_db < 0) + if(playerstats_db < 0) return; + + if(e.crypto_idfp != "" && e.cvar_cl_allow_uidtracking == 1) + e.playerstats_id = strzone(e.crypto_idfp); + else if(clienttype(e) == CLIENTTYPE_BOT) + e.playerstats_id = strzone(sprintf("bot#%d", e.playerid)); + else + e.playerstats_id = strzone(sprintf("player#%d", e.playerid)); string key; - key = sprintf("%s:*", e.crypto_idfp); + key = sprintf("%s:*", e.playerstats_id); + + string p; + p = db_get(playerstats_db, key); + if(p == "") + { + if(playerstats_last) + { + db_put(playerstats_db, key, playerstats_last); + strunzone(playerstats_last); + } + else + db_put(playerstats_db, key, "#"); + playerstats_last = strzone(e.playerstats_id); + } +} + +void PlayerStats_AddTeam(float t) +{ + if(playerstats_db < 0) + return; + + string key; + key = sprintf("team#%d:*", t); string p; p = db_get(playerstats_db, key); @@ -39,7 +84,7 @@ void PlayerStats_AddPlayer(entity e) } else db_put(playerstats_db, key, "#"); - playerstats_last = strzone(e.crypto_idfp); + playerstats_last = strzone(sprintf("team%d", t)); } } @@ -68,12 +113,22 @@ void PlayerStats_AddEvent(string event_id) void PlayerStats_Event(entity e, string event_id, float value) { - if(!e.crypto_idfp || playerstats_db < 0) + if(!e.playerstats_id || playerstats_db < 0) return; string key; float val; - key = sprintf("%s:%s", e.crypto_idfp, event_id); + key = sprintf("%s:%s", e.playerstats_id, event_id); + val = stof(db_get(playerstats_db, key)); + val += value; + db_put(playerstats_db, key, ftos(val)); +} + +void PlayerStats_TeamScore(float t, string event_id, float value) +{ + string key; + float val; + key = sprintf("team#%d:%s", t, event_id); val = stof(db_get(playerstats_db, key)); val += value; db_put(playerstats_db, key, ftos(val)); @@ -85,6 +140,34 @@ void PlayerStats_Sent_URI_Get_Callback(float id, float status, string data) playerstats_waitforme = TRUE; } +/* + format spec: + + A collection of lines of the format <key> SPACE <value> NEWLINE, where + <key> is always a single character. + + The following keys are defined: + + V: format version (always 1) + T: time at which the game ended + G: game type + M: map name + S: "hostname" of the server + C: number of "unpure" cvar changes + P: player ID of an existing player; this also sets the owner for all following "n" and "e" lines (lower case!) + n: nickname of the player (optional) + e: followed by an event name, a space, and the event count/score + event names can be: + alivetime: total playing time of the player + wins: number of games won (can only be set if matches is set) + matches: number of matches played to the end (not aborted by map switch) + joins: number of matches joined (always 1 unless player never played during the match) + scoreboardvalid: set to 1 if the player was there at the end of the match + total-<scoreboardname>: total score of that scoreboard item + scoreboard-<scoreboardname>: end-of-game score of that scoreboard item (can differ in non-team games) + achievement-<achievementname>: achievement counters +*/ + //#NO AUTOCVARS START void PlayerStats_Shutdown() { @@ -122,11 +205,18 @@ void PlayerStats_Shutdown() { float v; v = stof(db_get(playerstats_db, sprintf("%s:%s", p, e))); - bufstr_set(b, i++, sprintf("e %s %f", e, v)); + if(v != 0) + bufstr_set(b, i++, sprintf("e %s %g", e, v)); } } bufstr_set(b, i++, ""); + if(autocvar_g_playerstats_debug) + { + for(i = 0; i < buf_getsize(b); ++i) + print(bufstr_get(b, i), "\n"); + } + if(crypto_uri_postbuf(uri, URI_GET_PLAYERSTATS_SENT, "text/plain", "\n", b, 0)) playerstats_requested = TRUE; else @@ -146,14 +236,38 @@ void PlayerStats_AddGlobalInfo(entity p) { if(playerstats_db < 0) return; - if(!p.crypto_idfp || playerstats_db < 0) + if(!p.playerstats_id || playerstats_db < 0) return; p.playerstats_addedglobalinfo = TRUE; // add global info! if(p.alivetime) PlayerStats_Event(p, PLAYERSTATS_ALIVETIME, time - p.alivetime); + + if(p.alivetime) + PlayerStats_Event(p, PLAYERSTATS_ALIVETIME, time - p.alivetime); - if(p.cvar_cl_allow_uid2name == 1) - db_put(playerstats_db, sprintf("%s:_netname", p.crypto_idfp), p.netname); + if(p.cvar_cl_allow_uid2name == 1 || clienttype(p) == CLIENTTYPE_BOT) + db_put(playerstats_db, sprintf("%s:_netname", p.playerstats_id), p.netname); + + if(p.alivetime > 0) + PlayerStats_Event(p, PLAYERSTATS_JOINS, 1); + + strunzone(p.playerstats_id); + p.playerstats_id = string_null; +} + +void PlayerStats_EndMatch(float finished) +{ + entity p; + FOR_EACH_PLAYER(p) + { + PlayerScore_PlayerStats(p); + PlayerStats_Event(p, PLAYERSTATS_SCOREBOARD_VALID, 1); + if(finished) + { + PlayerStats_Event(p, PLAYERSTATS_WINS, p.winning); + PlayerStats_Event(p, PLAYERSTATS_MATCHES, 1); + } + } } diff --git a/qcsrc/server/playerstats.qh b/qcsrc/server/playerstats.qh index fea546a12..baaddcbb6 100644 --- a/qcsrc/server/playerstats.qh +++ b/qcsrc/server/playerstats.qh @@ -1,6 +1,23 @@ // time the player was alive and kicking -string PLAYERSTATS_ALIVETIME = "alivetime"; -string PLAYERSTATS_KILLS = "kills"; +string PLAYERSTATS_ALIVETIME = "alivetime"; +string PLAYERSTATS_WINS = "wins"; +string PLAYERSTATS_MATCHES = "matches"; +string PLAYERSTATS_JOINS = "joins"; +string PLAYERSTATS_SCOREBOARD_VALID = "scoreboardvalid"; + +string PLAYERSTATS_TOTAL = "total-"; +string PLAYERSTATS_SCOREBOARD = "scoreboard-"; + +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_3 = "achievement-kill-spree-3"; +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_5 = "achievement-kill-spree-5"; +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_10 = "achievement-kill-spree-10"; +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_15 = "achievement-kill-spree-15"; +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_20 = "achievement-kill-spree-20"; +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_25 = "achievement-kill-spree-25"; +string PLAYERSTATS_ACHIEVEMENT_KILL_SPREE_30 = "achievement-kill-spree-30"; +string PLAYERSTATS_ACHIEVEMENT_BOTLIKE = "achievement-botlike"; +string PLAYERSTATS_ACHIEVEMENT_FIRSTBLOOD = "achievement-firstblood"; +string PLAYERSTATS_ACHIEVEMENT_FIRSTVICTIM = "achievement-firstvictim"; // delay map switch until this is set float playerstats_waitforme; @@ -11,12 +28,18 @@ void PlayerStats_Init(); // add a new player void PlayerStats_AddPlayer(entity e); +// add a new team +void PlayerStats_AddTeam(float t); + // add a new event void PlayerStats_AddEvent(string event_id); // call on each event to track, or at player disconnect OR match end for "global stuff" void PlayerStats_Event(entity e, string event_id, float value); +// add a team score +void PlayerStats_TeamScore(float t, string event_id, float value); + // call at game over void PlayerStats_Shutdown(); // send stats to the server @@ -25,3 +48,6 @@ void PlayerStats_Sent_URI_Get_Callback(float id, float status, string data); // call this whenever a player leaves void PlayerStats_AddGlobalInfo(entity p); + +// call this at the end of the match +void PlayerStats_EndMatch(float finished); diff --git a/qcsrc/server/scores.qc b/qcsrc/server/scores.qc index 2c5e2b144..6c7a7dbc3 100644 --- a/qcsrc/server/scores.qc +++ b/qcsrc/server/scores.qc @@ -88,6 +88,7 @@ void TeamScore_Spawn(float t, string name) Net_LinkEntity(ts, FALSE, 0, TeamScore_SendEntity); teamscorekeepers[t - 1] = ts; ++teamscores_entities_count; + PlayerStats_AddTeam(t); } float TeamScore_AddToTeam(float t, float scorefield, float score) @@ -150,6 +151,11 @@ void ScoreInfo_SetLabel_PlayerScore(float i, string label, float scoreflags) scores_primary = scores[i]; scores_flags_primary = scoreflags; } + if(label != "") + { + PlayerStats_AddEvent(strcat(PLAYERSTATS_TOTAL, label)); + PlayerStats_AddEvent(strcat(PLAYERSTATS_SCOREBOARD, label)); + } } void ScoreInfo_SetLabel_TeamScore(float i, string label, float scoreflags) @@ -245,6 +251,7 @@ void PlayerScore_Clear(entity player) if(teamscores_entities_count) return; + if(g_lms) return; if(g_arena || g_ca) return; if(g_race && !g_race_qualifying) return; @@ -330,6 +337,8 @@ float PlayerScore_Add(entity player, float scorefield, float score) if(score) if(scores_label[scorefield] != "") s.SendFlags |= pow(2, scorefield); + PlayerStats_Event(s.owner, strcat(PLAYERSTATS_TOTAL, scores_label[scorefield]), score); + s.(scores_accumulated[scorefield]) += score; return (s.(scores[scorefield]) += score); } @@ -366,10 +375,18 @@ void WinningConditionHelper() entity winnerscorekeeper; entity secondscorekeeper; entity sk; + float slots; + + // format: + // gametype:P<pure>:S<slots>::plabel,plabel:tlabel,tlabel:teamid:tscore,tscore:teamid:tscore,tscore + // score labels always start with a symbol or with lower case + // so to match pure, match for :P0: + // to match full, match for :S0: s = GetGametype(); s = strcat(s, ":", autocvar_g_xonoticversion); s = strcat(s, ":P", ftos(cvar_purechanges_count)); + s = strcat(s, ":S", ftos(nJoinAllowed(0))); s = strcat(s, "::", GetPlayerScoreString(world, 1)); // make this 1 once we can, note: this doesn't contain any :<letter> fullstatus = autocvar_g_full_getstatus_responses; @@ -864,3 +881,30 @@ void Score_NicePrint(entity to) } } +void PlayerScore_PlayerStats(entity p) +{ + entity s; + float i; + s = p.scorekeeper; + + for(i = 0; i < MAX_SCORE; ++i) + if(s.(scores[i]) != 0) + if(scores_label[i] != "") + PlayerStats_Event(s.owner, strcat(PLAYERSTATS_SCOREBOARD, scores_label[i]), s.(scores[i])); +} + +void PlayerScore_TeamStats(void) +{ + entity sk; + float t, i; + for(t = 0; t < 16; ++t) + { + sk = teamscorekeepers[t]; + if(!sk) + continue; + for(i = 0; i < MAX_TEAMSCORE; ++i) + if(sk.(teamscores[i]) != 0) + if(teamscores_label[i] != "") + PlayerStats_TeamScore(t, strcat(PLAYERSTATS_SCOREBOARD, teamscores_label[i]), sk.(teamscores[i])); + } +} diff --git a/qcsrc/server/scores.qh b/qcsrc/server/scores.qh index 3ac0b03b5..f94b68332 100644 --- a/qcsrc/server/scores.qh +++ b/qcsrc/server/scores.qh @@ -2,6 +2,8 @@ entity scores_initialized; // non-world when scores labels/rules have been set .float scores[MAX_SCORE]; .float teamscores[MAX_TEAMSCORE]; +.float scores_accumulated[MAX_SCORE]; // for player stats only + /** * Attaches a PlayerScore entity to a player. Use that in ClientConnect. * Remember to detach it in ClientDisconnect! diff --git a/qcsrc/server/scores_rules.qc b/qcsrc/server/scores_rules.qc index a4c993d83..2e75fefb9 100644 --- a/qcsrc/server/scores_rules.qc +++ b/qcsrc/server/scores_rules.qc @@ -34,7 +34,6 @@ void ScoreRules_basics_end() } void ScoreRules_generic() { - CheckAllowedTeams(world); if(teams_matter) { CheckAllowedTeams(world); @@ -191,14 +190,22 @@ void ScoreRules_nexball(float teams) // Keep Away stuff #define SP_KEEPAWAY_PICKUPS 4 #define SP_KEEPAWAY_CARRIERKILLS 5 -#define SP_KEEPAWAY_DROPS 6 -#define SP_KEEPAWAY_SCORE 7 +#define SP_KEEPAWAY_BCTIME 6 void ScoreRules_keepaway() { - ScoreRules_basics(0, SFL_SORT_PRIO_PRIMARY, 0, FALSE); // SFL_SORT_PRIO_PRIMARY - ScoreInfo_SetLabel_PlayerScore(SP_KEEPAWAY_SCORE, "score", SFL_SORT_PRIO_PRIMARY); - ScoreInfo_SetLabel_PlayerScore(SP_KEEPAWAY_PICKUPS, "pickups", 0); + ScoreRules_basics(0, SFL_SORT_PRIO_PRIMARY, 0, TRUE); // SFL_SORT_PRIO_PRIMARY + ScoreInfo_SetLabel_PlayerScore(SP_KEEPAWAY_PICKUPS, "pickups", 0); ScoreInfo_SetLabel_PlayerScore(SP_KEEPAWAY_CARRIERKILLS, "bckills", 0); - ScoreInfo_SetLabel_PlayerScore(SP_KEEPAWAY_DROPS, "drops", SFL_LOWER_IS_BETTER); + ScoreInfo_SetLabel_PlayerScore(SP_KEEPAWAY_BCTIME, "bctime", SFL_SORT_PRIO_SECONDARY); + ScoreRules_basics_end(); +} + +// FreezeTag stuff +#define SP_FREEZETAG_REVIVALS 4 +void ScoreRules_freezetag() +{ + CheckAllowedTeams(world); + ScoreRules_basics(((c4>=0) ? 4 : (c3>=0) ? 3 : 2), SFL_SORT_PRIO_PRIMARY, SFL_SORT_PRIO_PRIMARY, TRUE); // SFL_SORT_PRIO_PRIMARY + ScoreInfo_SetLabel_PlayerScore(SP_FREEZETAG_REVIVALS, "revivals", 0); ScoreRules_basics_end(); } diff --git a/qcsrc/server/sv_main.qc b/qcsrc/server/sv_main.qc index c73f0355f..68a86e9c4 100644 --- a/qcsrc/server/sv_main.qc +++ b/qcsrc/server/sv_main.qc @@ -2,7 +2,7 @@ void CreatureFrame (void) { local entity oldself; - local float dm, maxspeed; + local float dm; oldself = self; self = findfloat(world, iscreature, TRUE); while (self) @@ -67,9 +67,10 @@ void CreatureFrame (void) self.dmg = 2; } // check for falling damage + float velocity_len = vlen(self.velocity); if(!self.hook.state && !g_ca && !(g_cts && !autocvar_g_cts_selfdamage)) { - dm = vlen(self.oldvelocity) - vlen(self.velocity); // dm is now the velocity DECREASE. Velocity INCREASE should never cause a sound or any damage. + dm = vlen(self.oldvelocity) - velocity_len; // dm is now the velocity DECREASE. Velocity INCREASE should never cause a sound or any damage. if (self.deadflag) dm = (dm - autocvar_g_balance_falldamage_deadminspeed) * autocvar_g_balance_falldamage_factor; else @@ -78,15 +79,14 @@ void CreatureFrame (void) Damage (self, world, world, dm, DEATH_FALL, self.origin, '0 0 0'); } - maxspeed = autocvar_g_maxspeed; - if(maxspeed > 0 && vlen(self.velocity) > maxspeed) + if(autocvar_g_maxspeed > 0 && velocity_len > autocvar_g_maxspeed) Damage (self, world, world, 100000, DEATH_SHOOTING_STAR, self.origin, '0 0 0'); // play stupid sounds if (g_footsteps) if (!gameover) if (self.flags & FL_ONGROUND) - if (vlen(self.velocity) > autocvar_sv_maxspeed * 0.6) + if (velocity_len > autocvar_sv_maxspeed * 0.6) if (!self.deadflag) if (time < self.lastground + 0.2) { @@ -232,10 +232,11 @@ void StartFrame (void) .float anglejitter; .string gametypefilter; .string cvarfilter; +float DoesQ3ARemoveThisEntity(); void SV_OnEntityPreSpawnFunction() { if(self.gametypefilter != "") - if not(isGametypeInFilter(game, teams_matter, self.gametypefilter)) + if not(isGametypeInFilter(game, teams_matter, have_team_spawns, self.gametypefilter)) { remove(self); return; @@ -350,6 +351,12 @@ void SV_OnEntityPreSpawnFunction() } } + if(DoesQ3ARemoveThisEntity()) + { + remove(self); + return; + } + // support special -1 and -2 angle from radiant if (self.angles == '0 -1 0') self.angles = '-90 0 0'; diff --git a/qcsrc/server/t_items.qc b/qcsrc/server/t_items.qc index 143b3be48..5cd714b65 100644 --- a/qcsrc/server/t_items.qc +++ b/qcsrc/server/t_items.qc @@ -735,36 +735,6 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime, waypoint_spawnforitem(self); } - if(teams_matter) - { - if(self.notteam) - { - print("removed non-teamplay ", self.classname, "\n"); - startitem_failed = TRUE; - remove (self); - return; - } - } - else - { - if(self.notfree) - { - print("removed non-FFA ", self.classname, "\n"); - startitem_failed = TRUE; - remove (self); - return; - } - } - - if(self.notq3a) - { - // We aren't TA or something like that, so we keep the Q3A entities - print("removed non-Q3A ", self.classname, "\n"); - startitem_failed = TRUE; - remove (self); - return; - } - /* * can't do it that way, as it would break maps * TODO make a target_give like entity another way, that perhaps has diff --git a/qcsrc/server/t_jumppads.qc b/qcsrc/server/t_jumppads.qc index 36048e860..1e72b765a 100644 --- a/qcsrc/server/t_jumppads.qc +++ b/qcsrc/server/t_jumppads.qc @@ -127,9 +127,9 @@ vector trigger_push_calculatevelocity(vector org, entity tgt, float ht) void trigger_push_touch() { - if (self.active == ACTIVE_NOT) - return; - + if (self.active == ACTIVE_NOT) + return; + // FIXME: add a .float for whether an entity should be tossed by jumppads if (!other.iscreature) if (other.classname != "corpse") @@ -171,7 +171,7 @@ void trigger_push_touch() } local float ct; ct = clienttype(other); - if( ct == CLIENTTYPE_REAL) + if( ct == CLIENTTYPE_REAL || ct == CLIENTTYPE_BOT) { local float i; local float found; @@ -185,11 +185,14 @@ void trigger_push_touch() other.jumppadcount = other.jumppadcount + 1; } - if(self.message) - centerprint(other, self.message); + if(ct == CLIENTTYPE_REAL) + { + if(self.message) + centerprint(other, self.message); + } + else + other.lastteleporttime = time; } - else if(ct == CLIENTTYPE_BOT) - other.lastteleporttime = time; else other.jumppadcount = TRUE; @@ -289,8 +292,8 @@ void spawnfunc_trigger_push() SetMovedir (); EXACTTRIGGER_INIT; - - self.active = ACTIVE_ACTIVE; + + self.active = ACTIVE_ACTIVE; self.use = trigger_push_use; self.touch = trigger_push_touch; diff --git a/qcsrc/server/t_plats.qc b/qcsrc/server/t_plats.qc index 3089ab650..f90c812d9 100644 --- a/qcsrc/server/t_plats.qc +++ b/qcsrc/server/t_plats.qc @@ -245,37 +245,43 @@ void spawnfunc_func_plat() void() train_next; void train_wait() { - self.think = train_next; - self.nextthink = self.ltime + self.wait; - if(self.noise != "") stopsoundto(MSG_BROADCAST, self, CHAN_TRIGGER); // send this as unreliable only, as the train will resume operation shortly anyway + + if(self.wait < 0) + { + train_next(); + } + else + { + self.think = train_next; + self.nextthink = self.ltime + self.wait; + } + + entity oldself; + oldself = self; + self = self.enemy; + SUB_UseTargets(); + self = oldself; + self.enemy = world; }; void train_next() { local entity targ; targ = find(world, targetname, self.target); + self.enemy = targ; self.target = targ.target; if (!self.target) objerror("train_next: no next target"); self.wait = targ.wait; if (!self.wait) self.wait = 0.1; - if(self.wait < 0) - { - if (targ.speed) - SUB_CalcMove(targ.origin - self.mins, targ.speed, train_next); - else - SUB_CalcMove(targ.origin - self.mins, self.speed, train_next); - } + + if (targ.speed) + SUB_CalcMove(targ.origin - self.mins, targ.speed, train_wait); else - { - if (targ.speed) - SUB_CalcMove(targ.origin - self.mins, targ.speed, train_wait); - else - SUB_CalcMove(targ.origin - self.mins, self.speed, train_wait); - } + SUB_CalcMove(targ.origin - self.mins, self.speed, train_wait); if(self.noise != "") sound(self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_IDLE); @@ -536,6 +542,7 @@ void spawnfunc_func_pendulum() self.blocked = generic_plat_blocked; + self.avelocity_z = 0.0000001; if not(InitMovingBrushTrigger()) return; @@ -1433,8 +1440,10 @@ void spawnfunc_func_door_rotating() self.angles = '0 0 0'; self.max_health = self.health; + self.avelocity = self.movedir; if not(InitMovingBrushTrigger()) return; + self.velocity = '0 0 0'; //self.effects |= EF_LOWPRECISION; self.classname = "door_rotating"; diff --git a/qcsrc/server/t_quake3.qc b/qcsrc/server/t_quake3.qc index 44036ade4..8cc7e4797 100644 --- a/qcsrc/server/t_quake3.qc +++ b/qcsrc/server/t_quake3.qc @@ -23,7 +23,7 @@ void spawnfunc_weapon_plasmagun() { spawnfunc_weapon_hagar(); } void spawnfunc_ammo_cells() { spawnfunc_item_rockets(); } // Rail -> Rifle -void spawnfunc_weapon_railgun() { spawnfunc_weapon_campingrifle(); } +void spawnfunc_weapon_railgun() { spawnfunc_weapon_sniperrifle(); } void spawnfunc_ammo_slugs() { spawnfunc_item_bullets(); } // BFG -> Crylink @@ -130,3 +130,54 @@ void spawnfunc_team_CTF_redspawn() { spawnfunc_info_player_team1(); } void spawnfunc_team_CTF_bluespawn() { spawnfunc_info_player_team2(); } void spawnfunc_item_flight() { spawnfunc_item_jetpack(); } + +.float notteam; +.float notsingle; +.float notfree; +.float notq3a; +.float notta; +.string gametype; +float DoesQ3ARemoveThisEntity() +{ + // Q3 style filters (DO NOT USE, THIS IS COMPAT ONLY) + + if(self.notq3a) + if(!teams_matter || g_tdm || g_ctf) + return 1; + + if(self.notta) + if not(!teams_matter || g_tdm || g_ctf) + return 1; + + if(self.notsingle) + if(maxclients == 1) + return 1; + + if(self.notteam) + if(teams_matter) + return 1; + + if(self.notfree) + if(!teams_matter) + return 1; + + if(self.gametype) + { + string gametypename; + // static char *gametypeNames[] = {"ffa", "tournament", "single", "team", "ctf", "oneflag", "obelisk", "harvester", "teamtournament"}; + gametypename = "ffa"; + if(teams_matter) + gametypename = "team"; + if(g_arena) + gametypename = "tournament"; + if(g_ctf) + gametypename = "ctf"; + if(maxclients == 1) + gametypename = "single"; + // we do not have the other types (oneflag, obelisk, harvester, teamtournament) + if(strstrofs(self.gametype, gametypename, 0) < 0) + return 1; + } + + return 0; +} diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index 9cb52c1da..0363d35a0 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -524,7 +524,7 @@ void PrintWelcomeMessage(entity pl) if(g_midair) modifications = strcat(modifications, ", Midair"); if(g_pinata) - modifications = strcat(modifications, ", Pinata"); + modifications = strcat(modifications, ", Piñata"); if(g_weapon_stay && !g_cts) modifications = strcat(modifications, ", Weapons stay"); if(g_bloodloss > 0) diff --git a/qcsrc/server/tturrets/system/system_aimprocs.qc b/qcsrc/server/tturrets/system/system_aimprocs.qc index 80344a9e1..843af3d5a 100644 --- a/qcsrc/server/tturrets/system/system_aimprocs.qc +++ b/qcsrc/server/tturrets/system/system_aimprocs.qc @@ -19,15 +19,15 @@ TFL_AIM_GROUND vector turret_stdproc_aim_generic() { - vector pre_pos,prep; - float distance,impact_time,i,mintime; + vector pre_pos, prep; + float distance, impact_time, i, mintime; turret_tag_fire_update(); if(self.aim_flags & TFL_AIM_SIMPLE) return real_origin(self.enemy); - mintime = max(self.attack_finished_single - time,0) + sys_frametime ; + mintime = max(self.attack_finished_single - time,0) + sys_frametime; // Baseline pre_pos = real_origin(self.enemy); diff --git a/qcsrc/server/tturrets/system/system_damage.qc b/qcsrc/server/tturrets/system/system_damage.qc index b7af33af8..c7f25a446 100644 --- a/qcsrc/server/tturrets/system/system_damage.qc +++ b/qcsrc/server/tturrets/system/system_damage.qc @@ -287,8 +287,6 @@ void turret_stdproc_damage (entity inflictor, entity attacker, float damage, flo // thorw head slightly off aim when hit? if (self.damage_flags & TFL_DMG_HEADSHAKE) { - //baseent.tur_aimoff_x += (random() * damage); - //baseent.tur_aimoff_y += ((random()*0.75) * damage); self.tur_head.angles_x = self.tur_head.angles_x + (-0.5 + random()) * damage; self.tur_head.angles_y = self.tur_head.angles_y + (-0.5 + random()) * damage; } @@ -296,11 +294,8 @@ void turret_stdproc_damage (entity inflictor, entity attacker, float damage, flo if (self.turrcaps_flags & TFL_TURRCAPS_MOVE) self.velocity = self.velocity + vforce; - // FIXME: Better damage feedback - // Start burning when we have 10% or less health left - //if (self.health < (self.tur_health * 0.1)) - // self.effects = EF_FLAME; - + // FIXME: Better damage feedback? + if (self.health <= 0) { self.event_damage = SUB_Null; diff --git a/qcsrc/server/tturrets/system/system_main.qc b/qcsrc/server/tturrets/system/system_main.qc index 4a2e886af..7d023e99e 100644 --- a/qcsrc/server/tturrets/system/system_main.qc +++ b/qcsrc/server/tturrets/system/system_main.qc @@ -637,6 +637,10 @@ void turret_think() if (self.ammo < self.ammo_max) self.ammo = min(self.ammo + self.ammo_recharge, self.ammo_max); + if (self.health < (self.tur_health * 0.5)) + if(random() < 0.25) + te_spark(self.origin + '0 0 40', randomvec() * 256 + '0 0 256', 16); + // Inactive turrets needs to run the think loop, // So they can handle animation and wake up if need be. if not (self.tur_active) @@ -873,6 +877,7 @@ float turret_stdproc_init (string cvar_base_name, float csqc_shared, string base { e = spawn(); + /* setorigin(e,'0 0 0'); setmodel(e,"models/turrets/plasma.md3"); vector v; @@ -883,6 +888,7 @@ float turret_stdproc_init (string cvar_base_name, float csqc_shared, string base //crash(); } setmodel(e,""); + */ e.classname = "turret_manager"; e.think = turrets_manager_think; @@ -1129,6 +1135,10 @@ float turret_stdproc_init (string cvar_base_name, float csqc_shared, string base // Offsets & origins if (!self.tur_shotorg) self.tur_shotorg = '50 0 50'; +// Gane hooks + if(MUTATOR_CALLHOOK(TurretSpawn)) + return 0; + // End of default & sanety checks, start building the turret. // Spawn extra bits @@ -1234,7 +1244,7 @@ float turret_stdproc_init (string cvar_base_name, float csqc_shared, string base activator = ee; self.use(); } - + turret_stdproc_respawn(); return 1; } diff --git a/qcsrc/server/tturrets/units/unit_fusionreactor.qc b/qcsrc/server/tturrets/units/unit_fusionreactor.qc index 601a934c5..03b0c40ad 100644 --- a/qcsrc/server/tturrets/units/unit_fusionreactor.qc +++ b/qcsrc/server/tturrets/units/unit_fusionreactor.qc @@ -2,19 +2,6 @@ void spawnfunc_turret_fusionreactor(); void turret_fusionreactor_dinit(); void turret_fusionreactor_fire(); -float turret_fusionreactor_firecheck() -{ - if (self.enemy == world) return 0; - if not (self.enemy.ammo_flags & TFL_AMMO_RECIVE) return 0; - if not (self.enemy.ammo_flags & TFL_AMMO_ENERGY) return 0; - if (self.ammo < self.shot_dmg) return 0; - if (self.enemy.ammo >= self.enemy.ammo_max) return 0; - if (self.tur_dist_aimpos > self.target_range) return 0; - if (self.tur_dist_aimpos < self.target_range_min) return 0; - - return 1; -} - void turret_fusionreactor_fire() { vector fl_org; @@ -22,20 +9,51 @@ void turret_fusionreactor_fire() self.enemy.ammo = min(self.enemy.ammo + self.shot_dmg,self.enemy.ammo_max); fl_org = 0.5 * (self.enemy.absmin + self.enemy.absmax); te_smallflash(fl_org); - //te_lightning1(world,self.origin,self.enemy.origin); } void turret_fusionreactor_postthink() { - float f; - f = self.ammo / self.ammo_max; - self.tur_head.avelocity = '0 250 0' * f; + self.tur_head.avelocity = '0 250 0' * (self.ammo / self.ammo_max); } +/* void turret_fusionreactor_respawnhook() { self.tur_head.avelocity = '0 50 0'; } +*/ + +/** +** Preforms pre-fire checks for fusionreactor +**/ +float turret_fusionreactor_firecheck() +{ + if (self.attack_finished_single > time) + return 0; + + if (self.enemy.deadflag != DEAD_NO) + return 0; + + if (self.enemy == world) + return 0; + + if (self.ammo < self.shot_dmg) + return 0; + + if (self.enemy.ammo >= self.enemy.ammo_max) + return 0; + + if (vlen(self.enemy.origin - self.origin) > self.target_range) + return 0; + + if(self.team != self.enemy.team) + return 0; + + if not (self.enemy.ammo_flags & TFL_AMMO_ENERGY) + return 0; + + return 1; +} void turret_fusionreactor_dinit() { @@ -48,7 +66,7 @@ void turret_fusionreactor_dinit() self.shoot_flags = TFL_SHOOT_HITALLVALID; self.aim_flags = TFL_AIM_NO; self.track_flags = TFL_TRACK_NO; - self.turret_respawnhook = turret_fusionreactor_respawnhook; + // self.turret_respawnhook = turret_fusionreactor_respawnhook; if (turret_stdproc_init("fusreac_std",0,"models/turrets/base.md3","models/turrets/reactor.md3") == 0) { diff --git a/qcsrc/server/tturrets/units/unit_walker.qc b/qcsrc/server/tturrets/units/unit_walker.qc index 5d37db492..d1d48c46c 100644 --- a/qcsrc/server/tturrets/units/unit_walker.qc +++ b/qcsrc/server/tturrets/units/unit_walker.qc @@ -618,16 +618,16 @@ void walker_attack() sound (self, CHAN_WEAPON, "weapons/uzi_fire.wav", VOL_BASE, ATTN_NORM); fireBallisticBullet (self.tur_shotorg, self.tur_shotdir_updated,self.shot_spread, self.shot_speed, 5, self.shot_dmg, 0, self.shot_force, DEATH_TURRET, 0, 1, autocvar_g_balance_uzi_bulletconstant); endFireBallisticBullet(); - if (self.uzi_bulletcounter == 2) + if (self.misc_bulletcounter == 2) { UziFlash(); setattachment(self.muzzle_flash, self.tur_head, "tag_fire"); - self.uzi_bulletcounter = 0; + self.misc_bulletcounter = 0; } - self.uzi_bulletcounter = self.uzi_bulletcounter + 1; + self.misc_bulletcounter = self.misc_bulletcounter + 1; self.tur_head.frame = self.tur_head.frame + 1; } diff --git a/qcsrc/server/vehicles/spiderbot.qc b/qcsrc/server/vehicles/spiderbot.qc index fa0781fa7..6743f73d2 100644 --- a/qcsrc/server/vehicles/spiderbot.qc +++ b/qcsrc/server/vehicles/spiderbot.qc @@ -255,17 +255,17 @@ void spiderbot_miniguns_do() { // Fire bullets, alternating trails left<->right self = self.owner; - if(self.uzi_bulletcounter == 1) + if(self.misc_bulletcounter == 1) { spiderbot_minigun_fire(self.vehicle.gun1, 0); spiderbot_minigun_fire(self.vehicle.gun2, 1); - self.uzi_bulletcounter = 0; + self.misc_bulletcounter = 0; } else { spiderbot_minigun_fire(self.vehicle.gun1, 1); spiderbot_minigun_fire(self.vehicle.gun2, 0); - self.uzi_bulletcounter += 1; + self.misc_bulletcounter += 1; } self = self.vehicle; diff --git a/qcsrc/server/w_all.qc b/qcsrc/server/w_all.qc index 573074403..930a413d5 100644 --- a/qcsrc/server/w_all.qc +++ b/qcsrc/server/w_all.qc @@ -16,6 +16,6 @@ #include "w_hook.qc" #include "w_hlac.qc" #include "w_tuba.qc" -#include "w_campingrifle.qc" +#include "w_sniperrifle.qc" #include "w_fireball.qc" #include "w_seeker.qc" diff --git a/qcsrc/server/w_campingrifle.qc b/qcsrc/server/w_campingrifle.qc deleted file mode 100644 index 777f0d112..000000000 --- a/qcsrc/server/w_campingrifle.qc +++ /dev/null @@ -1,333 +0,0 @@ -#ifdef REGISTER_WEAPON -REGISTER_WEAPON(CAMPINGRIFLE, w_campingrifle, IT_NAILS, 7, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "campingrifle", "campingrifle", "Sniper Rifle"); -#else -#ifdef SVQC -//Camping rifle Primary mode: manually operated bolt*, Secondary: full automatic** -//* Manually operating the bolt means that all the power of the gas is used to propell the bullet. In this mode the bolt is prevented from moving backwards in response to the firing of the bullet. -//** In fully automatic mode some of the gas is used to extract and reload the next cartrige, thus there is less power and range. - -.float campingrifle_accumulator; - -float W_CampingRifle_CheckMaxBullets(float checkammo) -{ - float maxbulls; - maxbulls = autocvar_g_balance_campingrifle_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_campingrifle_primary_ammo, autocvar_g_balance_campingrifle_secondary_ammo))); - if(self.campingrifle_bulletcounter > maxbulls || !autocvar_g_balance_campingrifle_magazinecapacity) - self.campingrifle_bulletcounter = maxbulls; - return (self.campingrifle_bulletcounter == maxbulls); -} - -void W_CampingRifle_ReloadedAndReady() -{ - float t; - self.campingrifle_bulletcounter = autocvar_g_balance_campingrifle_magazinecapacity; - W_CampingRifle_CheckMaxBullets(TRUE); - t = ATTACK_FINISHED(self) - autocvar_g_balance_campingrifle_reloadtime - 1; - ATTACK_FINISHED(self) = t; - w_ready(); -} - -float W_CampingRifle_Reload() -{ - float t; - - W_CampingRifle_CheckMaxBullets(TRUE); - - if(self.ammo_nails < min(autocvar_g_balance_campingrifle_primary_ammo, autocvar_g_balance_campingrifle_secondary_ammo)) // when we get here, bulletcounter must be 0 or -1 - { - print("cannot reload... not enough bullets\n"); - self.campingrifle_bulletcounter = -1; // reload later - W_SwitchToOtherWeapon(self); - return 0; - } - - if (self.campingrifle_bulletcounter >= autocvar_g_balance_campingrifle_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_campingrifle_reloadtime + 1; - ATTACK_FINISHED(self) = t; - - weapon_thinkf(WFRAME_RELOAD, autocvar_g_balance_campingrifle_reloadtime, W_CampingRifle_ReloadedAndReady); - - self.campingrifle_bulletcounter = -1; - - return 1; -} - -void W_CampingRifle_CheckReloadAndReady() -{ - w_ready(); - if(self.campingrifle_bulletcounter <= 0) - if(W_CampingRifle_Reload()) - return; -} - -void W_CampingRifle_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; - - 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_campingrifle_secondary_damage + autocvar_g_balance_campingrifle_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_campingrifle_primary_damage + autocvar_g_balance_campingrifle_primary_headshotaddeddamage); - - pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 2000, 1); - - if(self.BUTTON_ZOOM) // if zoomed, shoot from the eye - { - w_shotdir = v_forward; - w_shotorg = self.origin + self.view_ofs + ((w_shotorg - self.origin - self.view_ofs) * v_forward) * v_forward; - } - - if(deathtype & HITTYPE_SECONDARY) - fireBallisticBullet(w_shotorg, w_shotdir, pSpread, pSpeed, pLifetime, pDamage, pHeadshotAddedDamage / pDamage, pForce, deathtype, (autocvar_g_balance_campingrifle_secondary_tracer ? EF_RED : EF_BLUE), 1, pBulletConstant); - else - fireBallisticBullet(w_shotorg, w_shotdir, pSpread, pSpeed, pLifetime, pDamage, pHeadshotAddedDamage / pDamage, pForce, deathtype, (autocvar_g_balance_campingrifle_primary_tracer ? EF_RED : EF_BLUE), 1, pBulletConstant); - endFireBallisticBullet(); - - 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.campingrifle_bulletcounter = self.campingrifle_bulletcounter - 1; - W_CampingRifle_CheckMaxBullets(TRUE); -} - -void W_CampingRifle_Attack() -{ - W_CampingRifle_FireBullet(autocvar_g_balance_campingrifle_primary_spread, autocvar_g_balance_campingrifle_primary_damage, autocvar_g_balance_campingrifle_primary_headshotaddeddamage, autocvar_g_balance_campingrifle_primary_force, autocvar_g_balance_campingrifle_primary_speed, autocvar_g_balance_campingrifle_primary_lifetime, autocvar_g_balance_campingrifle_primary_ammo, WEP_CAMPINGRIFLE, autocvar_g_balance_campingrifle_primary_bulletconstant); -} - -void W_CampingRifle_Attack2() -{ - W_CampingRifle_FireBullet(autocvar_g_balance_campingrifle_secondary_spread, autocvar_g_balance_campingrifle_secondary_damage, autocvar_g_balance_campingrifle_secondary_headshotaddeddamage, autocvar_g_balance_campingrifle_secondary_force, autocvar_g_balance_campingrifle_secondary_speed, autocvar_g_balance_campingrifle_secondary_lifetime, autocvar_g_balance_campingrifle_secondary_ammo, WEP_CAMPINGRIFLE | HITTYPE_SECONDARY, autocvar_g_balance_campingrifle_secondary_bulletconstant); -} - -void spawnfunc_weapon_campingrifle (void) -{ - weapon_defaultspawnfunc(WEP_CAMPINGRIFLE); -} - -.void(void) campingrifle_bullethail_attackfunc; -.float campingrifle_bullethail_frame; -.float campingrifle_bullethail_animtime; -.float campingrifle_bullethail_refire; -void W_CampingRifle_BulletHail_Continue() -{ - float r, sw, af; - W_CampingRifle_CheckReloadAndReady(); - if(self.campingrifle_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; - ATTACK_FINISHED(self) = time; - print(ftos(self.ammo_nails), "\n"); - r = weapon_prepareattack(self.campingrifle_bullethail_frame == WFRAME_FIRE2, self.campingrifle_bullethail_refire); - if(self.switchweapon == self.weapon) - self.switchweapon = sw; - if(r) - { - self.campingrifle_bullethail_attackfunc(); - weapon_thinkf(self.campingrifle_bullethail_frame, self.campingrifle_bullethail_animtime, W_CampingRifle_BulletHail_Continue); - print("thinkf set\n"); - } - else - { - ATTACK_FINISHED(self) = af; // reset attack_finished if we didn't fire, so the last shot enforces the refire time - print("out of ammo... ", ftos(self.weaponentity.state), "\n"); - } -} - -void W_CampingRifle_BulletHail(float mode, void(void) AttackFunc, float fr, float animtime, float refire) -{ - // if we get here, we have at least one bullet to fire - AttackFunc(); - if(mode) - { - // continue hail - self.campingrifle_bullethail_attackfunc = AttackFunc; - self.campingrifle_bullethail_frame = fr; - self.campingrifle_bullethail_animtime = animtime; - self.campingrifle_bullethail_refire = refire; - weapon_thinkf(fr, animtime, W_CampingRifle_BulletHail_Continue); - } - else - { - // just one shot - weapon_thinkf(fr, animtime, W_CampingRifle_CheckReloadAndReady); - } -} - -.float bot_secondary_campingriflemooth; -float w_campingrifle(float req) -{ - float full; - if (req == WR_AIM) - { - self.BUTTON_ATCK=FALSE; - self.BUTTON_ATCK2=FALSE; - if(vlen(self.origin-self.enemy.origin) > 1000) - self.bot_secondary_campingriflemooth = 0; - if(self.bot_secondary_campingriflemooth == 0) - { - if(bot_aim(autocvar_g_balance_campingrifle_primary_speed, 0, autocvar_g_balance_campingrifle_primary_lifetime, TRUE)) - { - self.BUTTON_ATCK = TRUE; - if(random() < 0.01) self.bot_secondary_campingriflemooth = 1; - } - } - else - { - if(bot_aim(autocvar_g_balance_campingrifle_secondary_speed, 0, autocvar_g_balance_campingrifle_secondary_lifetime, TRUE)) - { - self.BUTTON_ATCK2 = TRUE; - if(random() < 0.03) self.bot_secondary_campingriflemooth = 0; - } - } - } - else if (req == WR_THINK) - { - if(self.campingrifle_bulletcounter < 0) // forced reload (e.g. because interrupted) - { - if(self.switchweapon == self.weapon) - if(self.weaponentity.state == WS_READY) - W_CampingRifle_Reload(); - } - else - { - self.campingrifle_accumulator = bound(time - autocvar_g_balance_campingrifle_bursttime, self.campingrifle_accumulator, time); - if (self.BUTTON_ATCK) - if (weapon_prepareattack_check(0, autocvar_g_balance_campingrifle_primary_refire)) - if (time >= self.campingrifle_accumulator + autocvar_g_balance_campingrifle_primary_burstcost) - { - weapon_prepareattack_do(0, autocvar_g_balance_campingrifle_primary_refire); - W_CampingRifle_BulletHail(autocvar_g_balance_campingrifle_primary_bullethail, W_CampingRifle_Attack, WFRAME_FIRE1, autocvar_g_balance_campingrifle_primary_animtime, autocvar_g_balance_campingrifle_primary_refire); - self.campingrifle_accumulator += autocvar_g_balance_campingrifle_primary_burstcost; - } - if (self.BUTTON_ATCK2) - { - if (autocvar_g_balance_campingrifle_secondary) - { - if (weapon_prepareattack_check(1, autocvar_g_balance_campingrifle_secondary_refire)) - if (time >= self.campingrifle_accumulator + autocvar_g_balance_campingrifle_secondary_burstcost) - { - weapon_prepareattack_do(1, autocvar_g_balance_campingrifle_secondary_refire); - W_CampingRifle_BulletHail(autocvar_g_balance_campingrifle_secondary_bullethail, W_CampingRifle_Attack2, WFRAME_FIRE2, autocvar_g_balance_campingrifle_secondary_animtime, autocvar_g_balance_campingrifle_primary_refire); - self.campingrifle_accumulator += autocvar_g_balance_campingrifle_secondary_burstcost; - } - } - } - } - } - 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"); - } - else if (req == WR_SETUP) - { - weapon_setup(WEP_CAMPINGRIFLE); - - full = W_CampingRifle_CheckMaxBullets(TRUE); - if(autocvar_g_balance_campingrifle_auto_reload_on_switch) - if(!full) - self.campingrifle_bulletcounter = -1; - } - else if (req == WR_CHECKAMMO1) - return self.ammo_nails >= autocvar_g_balance_campingrifle_primary_ammo; - else if (req == WR_CHECKAMMO2) - return self.ammo_nails >= autocvar_g_balance_campingrifle_secondary_ammo; - else if (req == WR_RELOAD) - { - W_CampingRifle_Reload(); - } - else if (req == WR_RESETPLAYER) - { - self.campingrifle_accumulator = time - autocvar_g_balance_campingrifle_bursttime; - self.campingrifle_bulletcounter = autocvar_g_balance_campingrifle_magazinecapacity; - W_CampingRifle_CheckMaxBullets(FALSE); - } - return TRUE; -}; -#endif -#ifdef CSQC -float w_campingrifle(float req) -{ - if(req == WR_IMPACTEFFECT) - { - vector org2; - org2 = w_org + w_backoff * 2; - pointparticles(particleeffectnum("machinegun_impact"), org2, w_backoff * 1000, 1); - if(!w_issilent) - { - if(w_random < 0.2) - sound(self, CHAN_PROJECTILE, "weapons/ric1.wav", VOL_BASE, ATTN_NORM); - else if(w_random < 0.4) - sound(self, CHAN_PROJECTILE, "weapons/ric2.wav", VOL_BASE, ATTN_NORM); - else if(w_random < 0.5) - sound(self, CHAN_PROJECTILE, "weapons/ric3.wav", VOL_BASE, ATTN_NORM); - } - } - else if(req == WR_PRECACHE) - { - precache_sound("weapons/ric1.wav"); - precache_sound("weapons/ric2.wav"); - precache_sound("weapons/ric3.wav"); - } - else if (req == WR_SUICIDEMESSAGE) - { - if(w_deathtype & HITTYPE_SECONDARY) - w_deathtypestring = "%s shot themself automatically"; - else - w_deathtypestring = "%s sniped themself somehow"; - } - else if (req == WR_KILLMESSAGE) - { - if(w_deathtype & HITTYPE_SECONDARY) - { - if(w_deathtype & HITTYPE_BOUNCE) - w_deathtypestring = "%s failed to hide from %s's bullet hail"; - else - w_deathtypestring = "%s died in %s's bullet hail"; - } - else - { - if(w_deathtype & HITTYPE_BOUNCE) - { - // TODO special headshot message here too? - w_deathtypestring = "%s failed to hide from %s's rifle"; - } - else - { - if(w_deathtype & HITTYPE_HEADSHOT) - w_deathtypestring = "%s got hit in the head by %s"; - else - w_deathtypestring = "%s was sniped by %s"; - } - } - } - return TRUE; -} -#endif -#endif diff --git a/qcsrc/server/w_common.qc b/qcsrc/server/w_common.qc index 49e277383..2d9ecfd8b 100644 --- a/qcsrc/server/w_common.qc +++ b/qcsrc/server/w_common.qc @@ -23,6 +23,7 @@ void W_GiveWeapon (entity e, float wep, string name) } .float railgundistance; +.vector railgunforce; void FireRailgunBullet (vector start, vector end, float bdamage, float bforce, float mindist, float maxdist, float halflifedist, float forcehalflifedist, float deathtype) { local vector hitloc, force, endpoint, dir; @@ -67,6 +68,7 @@ void FireRailgunBullet (vector start, vector end, float bdamage, float bforce, f trace_ent.railgunhitloc = end; trace_ent.railgunhitsolidbackup = trace_ent.solid; trace_ent.railgundistance = vlen(WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos) - start); + trace_ent.railgunforce = WarpZone_TransformVelocity(WarpZone_trace_transform, force); // stop if this is a wall if (trace_ent.solid == SOLID_BSP) @@ -130,7 +132,7 @@ void FireRailgunBullet (vector start, vector end, float bdamage, float bforce, f // apply the damage if (ent.takedamage) - Damage (ent, self, self, bdamage * f, deathtype, hitloc, force * ffs); + Damage (ent, self, self, bdamage * f, deathtype, hitloc, ent.railgunforce * ffs); // create a small explosion to throw gibs around (if applicable) //setorigin (explosion, hitloc); @@ -182,7 +184,7 @@ void W_BallisticBullet_Hit (void) if(headshot) f *= q; - if(DEATH_WEAPONOF(self.projectiledeathtype) == WEP_CAMPINGRIFLE) + if(DEATH_WEAPONOF(self.projectiledeathtype) == WEP_SNIPERRIFLE) { if(headshot) AnnounceTo(self.owner, "headshot"); @@ -391,6 +393,8 @@ void fireBallisticBullet(vector start, vector dir, float spread, float pSpeed, f if(tracereffects & EF_RED) eff = particleeffectnum("tr_rifle"); + else if(tracereffects & EF_BLUE) + eff = particleeffectnum("tr_rifle_weak"); else eff = particleeffectnum("tr_bullet"); diff --git a/qcsrc/server/w_crylink.qc b/qcsrc/server/w_crylink.qc index 4495b720c..93a110dad 100644 --- a/qcsrc/server/w_crylink.qc +++ b/qcsrc/server/w_crylink.qc @@ -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_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "crylink", "crylink", _("Crylink")); #else #ifdef SVQC .float gravity; @@ -16,6 +16,8 @@ void W_Crylink_CheckLinks(entity e) if(e == world) error("W_Crylink_CheckLinks: entity is world"); + if(e.classname != "spike") + error("W_Crylink_CheckLinks: entity is not a spike"); p = e; for(i = 0; i < 1000; ++i) @@ -32,10 +34,13 @@ void W_Crylink_CheckLinks(entity e) void W_Crylink_Dequeue_Raw(entity own, entity prev, entity me, entity next) { + W_Crylink_CheckLinks(next); if(me == own.crylink_lastgroup) own.crylink_lastgroup = ((me == next) ? world : next); prev.queuenext = next; next.queueprev = prev; + if(me != next) + W_Crylink_CheckLinks(next); } void W_Crylink_Dequeue(entity e) @@ -52,7 +57,10 @@ void W_Crylink_LinkExplode (entity e, entity e2) if(e == e.realowner.crylink_lastgroup) e.realowner.crylink_lastgroup = world; - RadiusDamage (e, e.realowner, autocvar_g_balance_crylink_primary_damage * a, autocvar_g_balance_crylink_primary_edgedamage * a, autocvar_g_balance_crylink_primary_radius, world, autocvar_g_balance_crylink_primary_force * a, e.projectiledeathtype, other); + if(e.projectiledeathtype & HITTYPE_SECONDARY) + RadiusDamage (e, e.realowner, autocvar_g_balance_crylink_secondary_damage * a, autocvar_g_balance_crylink_secondary_edgedamage * a, autocvar_g_balance_crylink_secondary_radius, world, autocvar_g_balance_crylink_secondary_force * a, e.projectiledeathtype, other); + else + RadiusDamage (e, e.realowner, autocvar_g_balance_crylink_primary_damage * a, autocvar_g_balance_crylink_primary_edgedamage * a, autocvar_g_balance_crylink_primary_radius, world, autocvar_g_balance_crylink_primary_force * a, e.projectiledeathtype, other); if(e.queuenext != e2) W_Crylink_LinkExplode(e.queuenext, e2); @@ -151,6 +159,8 @@ vector W_Crylink_LinkJoin(entity e, float jspeed, float jtime) // p->velocity -> HUEG away from center } + W_Crylink_CheckLinks(e); + return targ_origin; } @@ -272,7 +282,7 @@ void W_Crylink_Touch2 (void) } float a; - a = 1 - (time - self.fade_time) * self.fade_rate; + a = bound(0, 1 - (time - self.fade_time) * self.fade_rate, 1); finalhit = ((self.cnt <= 0) || (other.takedamage != DAMAGE_NO)); if(finalhit) @@ -397,6 +407,7 @@ void W_Crylink_Attack (void) proj.fade_rate = 1 / autocvar_g_balance_crylink_primary_other_fadetime; proj.nextthink = time + autocvar_g_balance_crylink_primary_other_lifetime + autocvar_g_balance_crylink_primary_other_fadetime; } + proj.teleport_time = time + autocvar_g_balance_crylink_primary_joindelay; proj.cnt = autocvar_g_balance_crylink_primary_bounces; //proj.scale = 1 + 1 * proj.cnt; @@ -413,6 +424,7 @@ void W_Crylink_Attack (void) counter = counter + 1; } self.crylink_lastgroup = proj; + W_Crylink_CheckLinks(proj); } void W_Crylink_Attack2 (void) @@ -484,6 +496,7 @@ void W_Crylink_Attack2 (void) proj.fade_rate = 1 / autocvar_g_balance_crylink_secondary_line_fadetime; proj.nextthink = time + autocvar_g_balance_crylink_secondary_line_lifetime + autocvar_g_balance_crylink_secondary_line_fadetime; } + proj.teleport_time = time + autocvar_g_balance_crylink_secondary_joindelay; proj.cnt = autocvar_g_balance_crylink_secondary_bounces; //proj.scale = 1 + 1 * proj.cnt; @@ -542,7 +555,7 @@ float w_crylink(float req) } else { - if (self.crylink_waitrelease) + if (self.crylink_waitrelease && (!self.crylink_lastgroup || time > self.crylink_lastgroup.teleport_time)) { // fired and released now! if(self.crylink_lastgroup) @@ -550,7 +563,6 @@ float w_crylink(float req) vector pos; entity linkjoineffect; - if(self.crylink_waitrelease == 1) { pos = W_Crylink_LinkJoin(self.crylink_lastgroup, autocvar_g_balance_crylink_primary_joinspread * autocvar_g_balance_crylink_primary_speed, autocvar_g_balance_crylink_primary_jointime); @@ -567,8 +579,6 @@ float w_crylink(float req) linkjoineffect.nextthink = time + w_crylink_linkjoin_time; linkjoineffect.owner = self; setorigin(linkjoineffect, pos); - - } self.crylink_waitrelease = 0; if(!w_crylink(WR_CHECKAMMO1) && !w_crylink(WR_CHECKAMMO2)) @@ -635,16 +645,16 @@ float w_crylink(float req) } else if (req == WR_SUICIDEMESSAGE) { - w_deathtypestring = "%s succeeded at self-destructing themself with the Crylink"; + w_deathtypestring = _("%s succeeded at self-destructing themself with the Crylink"); } else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_BOUNCE) - w_deathtypestring = "%s could not hide from %s's Crylink"; // unchecked: SPLASH (SECONDARY can't be) + w_deathtypestring = _("%s could not hide from %s's Crylink"); // unchecked: SPLASH (SECONDARY can't be) else if(w_deathtype & HITTYPE_SPLASH) - w_deathtypestring = "%s was too close to %s's Crylink"; // unchecked: SECONDARY + w_deathtypestring = _("%s was too close to %s's Crylink"); // unchecked: SECONDARY else - w_deathtypestring = "%s took a close look at %s's Crylink"; // unchecked: SECONDARY + w_deathtypestring = _("%s took a close look at %s's Crylink"); // unchecked: SECONDARY } return TRUE; } diff --git a/qcsrc/server/w_electro.qc b/qcsrc/server/w_electro.qc index 1ae02b161..f5491f39a 100644 --- a/qcsrc/server/w_electro.qc +++ b/qcsrc/server/w_electro.qc @@ -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_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "electro", "electro", _("Electro")); #else #ifdef SVQC .float electro_count; @@ -232,7 +232,7 @@ void lgbeam_think() 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 || (g_freezetag && self.owner.freezetag_frozen)) + 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(self == self.owner.lgbeam) self.owner.lgbeam = world; @@ -295,6 +295,7 @@ void W_Electro_Attack3 (void) entity beam, oldself; self.lgbeam = beam = spawn(); + beam.classname = "lgbeam"; beam.solid = SOLID_NOT; beam.think = lgbeam_think; beam.owner = self; @@ -377,6 +378,15 @@ float w_electro(float req) { if (self.BUTTON_ATCK) { + if(autocvar_g_balance_electro_lightning) + if(self.BUTTON_ATCK_prev) + { + // prolong the animtime while the gun is being fired + if(self.animstate_startframe == self.anim_shoot_x && self.animstate_numframes == self.anim_shoot_y) + weapon_thinkf(WFRAME_DONTCHANGE, autocvar_g_balance_electro_primary_animtime, w_ready); + else + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_electro_primary_animtime, w_ready); + } if (weapon_prepareattack(0, (autocvar_g_balance_electro_lightning ? 0 : autocvar_g_balance_electro_primary_refire))) { if(autocvar_g_balance_electro_lightning) @@ -385,19 +395,24 @@ float w_electro(float req) { W_Electro_Attack3(); } - self.BUTTON_ATCK_prev = 1; + if(!self.BUTTON_ATCK_prev) + { + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_electro_primary_animtime, w_ready); + self.BUTTON_ATCK_prev = 1; + } } else { W_Electro_Attack(); + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_electro_primary_animtime, w_ready); } - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_electro_primary_animtime, w_ready); } } else { if(autocvar_g_balance_electro_lightning) { if (self.BUTTON_ATCK_prev != 0) { + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_electro_primary_animtime, w_ready); ATTACK_FINISHED(self) = time + autocvar_g_balance_electro_primary_refire * W_WeaponRateFactor(); } self.BUTTON_ATCK_prev = 0; @@ -411,7 +426,7 @@ float w_electro(float req) 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; + self.electro_secondarytime = time + autocvar_g_balance_electro_secondary_refire2 * W_WeaponRateFactor(); } } else if (req == WR_PRECACHE) @@ -485,27 +500,27 @@ float w_electro(float req) else if (req == WR_SUICIDEMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) - w_deathtypestring = "%s could not remember where they put plasma"; + w_deathtypestring = _("%s could not remember where they put plasma"); else - w_deathtypestring = "%s played with plasma"; + w_deathtypestring = _("%s played with plasma"); } else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) { if(w_deathtype & HITTYPE_SPLASH) // unchecked: BOUNCE - w_deathtypestring = "%s just noticed %s's blue ball"; + w_deathtypestring = _("%s just noticed %s's blue ball"); else // unchecked: BOUNCE - w_deathtypestring = "%s got in touch with %s's blue ball"; + w_deathtypestring = _("%s got in touch with %s's blue ball"); } else { if(w_deathtype & HITTYPE_BOUNCE) // combo - w_deathtypestring = "%s felt the electrifying air of %s's combo"; + w_deathtypestring = _("%s felt the electrifying air of %s's combo"); else if(w_deathtype & HITTYPE_SPLASH) - w_deathtypestring = "%s got too close to %s's blue beam"; + w_deathtypestring = _("%s got too close to %s's blue beam"); else - w_deathtypestring = "%s was blasted by %s's blue beam"; + w_deathtypestring = _("%s was blasted by %s's blue beam"); } } return TRUE; diff --git a/qcsrc/server/w_fireball.qc b/qcsrc/server/w_fireball.qc index 98b2b7f74..73ff1595a 100644 --- a/qcsrc/server/w_fireball.qc +++ b/qcsrc/server/w_fireball.qc @@ -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_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "fireball", "fireball", _("Fireball")); #else #ifdef SVQC .float bot_primary_fireballmooth; // whatever a mooth is @@ -389,32 +389,32 @@ float w_fireball(float req) else if (req == WR_SUICIDEMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) - w_deathtypestring = "%s forgot about some firemine"; + w_deathtypestring = _("%s forgot about some firemine"); else - w_deathtypestring = "%s should have used a smaller gun"; + w_deathtypestring = _("%s should have used a smaller gun"); } else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) { if(w_deathtype & HITTYPE_HEADSHOT) - w_deathtypestring = "%s tried to catch %s's firemine"; + w_deathtypestring = _("%s tried to catch %s's firemine"); else - w_deathtypestring = "%s fatefully ignored %s's firemine"; + w_deathtypestring = _("%s fatefully ignored %s's firemine"); } else { if(w_deathtype & HITTYPE_BOUNCE) { if(w_deathtype & HITTYPE_SPLASH) // BFG effect - w_deathtypestring = "%s could not hide from %s's fireball"; + w_deathtypestring = _("%s could not hide from %s's fireball"); else // laser - w_deathtypestring = "%s saw the pretty lights of %s's fireball"; + w_deathtypestring = _("%s saw the pretty lights of %s's fireball"); } else if(w_deathtype & HITTYPE_SPLASH) - w_deathtypestring = "%s got too close to %s's fireball"; + w_deathtypestring = _("%s got too close to %s's fireball"); else - w_deathtypestring = "%s tasted %s's fireball"; + w_deathtypestring = _("%s tasted %s's fireball"); } } return TRUE; diff --git a/qcsrc/server/w_grenadelauncher.qc b/qcsrc/server/w_grenadelauncher.qc index b46c091ce..d5f6c5d68 100644 --- a/qcsrc/server/w_grenadelauncher.qc +++ b/qcsrc/server/w_grenadelauncher.qc @@ -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_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "gl", "grenadelauncher", _("Mortar")) #else #ifdef SVQC .float gl_detonate_later; @@ -354,19 +354,19 @@ float w_glauncher(float req) else if (req == WR_SUICIDEMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) - w_deathtypestring = "%s tried out his own grenade"; + w_deathtypestring = _("%s tried out his own grenade"); else - w_deathtypestring = "%s detonated"; + w_deathtypestring = _("%s detonated"); } else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_SPLASH) if(w_deathtype & HITTYPE_BOUNCE) // (must be secondary then) - w_deathtypestring = "%s didn't see %s's grenade"; + w_deathtypestring = _("%s didn't see %s's grenade"); else // unchecked: SECONDARY - w_deathtypestring = "%s almost dodged %s's grenade"; + w_deathtypestring = _("%s almost dodged %s's grenade"); else // unchecked: SECONDARY, BOUNCE - w_deathtypestring = "%s ate %s's grenade"; + w_deathtypestring = _("%s ate %s's grenade"); } return TRUE; } diff --git a/qcsrc/server/w_hagar.qc b/qcsrc/server/w_hagar.qc index 472a1e0d5..5fb25642e 100644 --- a/qcsrc/server/w_hagar.qc +++ b/qcsrc/server/w_hagar.qc @@ -1,5 +1,5 @@ #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_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "hagar", "hagar", _("Hagar")) #else #ifdef SVQC // NO bounce protection, as bounces are limited! @@ -182,13 +182,13 @@ float w_hagar(float req) precache_sound("weapons/hagexp3.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s played with tiny rockets"; + w_deathtypestring = _("%s played with tiny rockets"); else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_BOUNCE) // must be secondary; unchecked: SPLASH - w_deathtypestring = "%s hoped %s's missiles wouldn't bounce"; + w_deathtypestring = _("%s hoped %s's missiles wouldn't bounce"); else // unchecked: SPLASH, SECONDARY - w_deathtypestring = "%s was pummeled by %s"; + w_deathtypestring = _("%s was pummeled by %s"); } return TRUE; } diff --git a/qcsrc/server/w_hlac.qc b/qcsrc/server/w_hlac.qc index e3d3cb991..4bba3b805 100644 --- a/qcsrc/server/w_hlac.qc +++ b/qcsrc/server/w_hlac.qc @@ -1,26 +1,18 @@ #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_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "hlac", "hlac", _("Heavy Laser Assault Cannon")) #else #ifdef SVQC -.float HLAC_bulletcounter; -void W_HLAC_Touch (void) -{ - PROJECTILE_TOUCH; - self.event_damage = SUB_Null; - - RadiusDamage (self, self.owner, autocvar_g_balance_hlac_primary_damage, autocvar_g_balance_hlac_primary_edgedamage, autocvar_g_balance_hlac_primary_radius, world, autocvar_g_balance_hlac_primary_force, self.projectiledeathtype, other); - - remove (self); -} - -void W_HLAC_Touch2 (void) +void W_HLAC_Touch (void) { PROJECTILE_TOUCH; self.event_damage = SUB_Null; - - RadiusDamage (self, self.owner, autocvar_g_balance_hlac_secondary_damage, autocvar_g_balance_hlac_secondary_edgedamage, autocvar_g_balance_hlac_secondary_radius, world, autocvar_g_balance_hlac_secondary_force, self.projectiledeathtype, other); + + if(self.projectiledeathtype & HITTYPE_SECONDARY) + RadiusDamage (self, self.owner, autocvar_g_balance_hlac_secondary_damage, autocvar_g_balance_hlac_secondary_edgedamage, autocvar_g_balance_hlac_secondary_radius, world, autocvar_g_balance_hlac_secondary_force, self.projectiledeathtype, other); + else + RadiusDamage (self, self.owner, autocvar_g_balance_hlac_primary_damage, autocvar_g_balance_hlac_primary_edgedamage, autocvar_g_balance_hlac_primary_radius, world, autocvar_g_balance_hlac_primary_force, self.projectiledeathtype, other); remove (self); } @@ -35,7 +27,7 @@ void W_HLAC_Attack (void) self.ammo_cells = self.ammo_cells - autocvar_g_balance_hlac_primary_ammo; } - spread = autocvar_g_balance_hlac_primary_spread_min + (autocvar_g_balance_hlac_primary_spread_add * self.HLAC_bulletcounter); + 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); if(self.crouch) spread = spread * autocvar_g_balance_hlac_primary_spread_crouchmod; @@ -51,7 +43,6 @@ void W_HLAC_Attack (void) missile = spawn (); missile.owner = self; missile.classname = "hlacbolt"; - // missile.dmg = issecondary; missile.bot_dodge = TRUE; missile.bot_dodgerating = autocvar_g_balance_hlac_primary_damage; @@ -63,7 +54,7 @@ void W_HLAC_Attack (void) setsize(missile, '0 0 0', '0 0 0'); W_SetupProjectileVelocity(missile, autocvar_g_balance_hlac_primary_speed, spread); - missile.angles = vectoangles (missile.velocity); + //missile.angles = vectoangles (missile.velocity); // csqc missile.touch = W_HLAC_Touch; missile.think = SUB_Remove; @@ -95,7 +86,6 @@ void W_HLAC_Attack2f (void) missile = spawn (); missile.owner = self; missile.classname = "hlacbolt"; - // missile.dmg = issecondary; missile.bot_dodge = TRUE; missile.bot_dodgerating = autocvar_g_balance_hlac_secondary_damage; @@ -107,9 +97,9 @@ void W_HLAC_Attack2f (void) setsize(missile, '0 0 0', '0 0 0'); W_SetupProjectileVelocity(missile, autocvar_g_balance_hlac_secondary_speed, spread); - missile.angles = vectoangles (missile.velocity); + //missile.angles = vectoangles (missile.velocity); // csqc - missile.touch = W_HLAC_Touch2; + missile.touch = W_HLAC_Touch; missile.think = SUB_Remove; missile.nextthink = time + autocvar_g_balance_hlac_secondary_lifetime; @@ -161,7 +151,7 @@ void HLAC_fire1_02() ATTACK_FINISHED(self) = time + autocvar_g_balance_hlac_primary_refire * W_WeaponRateFactor(); W_HLAC_Attack(); - self.HLAC_bulletcounter = self.HLAC_bulletcounter + 1; + self.misc_bulletcounter = self.misc_bulletcounter + 1; weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_hlac_primary_refire, HLAC_fire1_02); } else @@ -184,7 +174,7 @@ float w_hlac(float req) if (self.BUTTON_ATCK) if (weapon_prepareattack(0, autocvar_g_balance_hlac_primary_refire)) { - self.HLAC_bulletcounter = 0; + self.misc_bulletcounter = 0; W_HLAC_Attack(); weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_hlac_primary_refire, HLAC_fire1_02); } @@ -230,9 +220,9 @@ float w_hlac(float req) precache_sound("weapons/laserimpact.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s should have used a smaller gun"; + w_deathtypestring = _("%s should have used a smaller gun"); else if (req == WR_KILLMESSAGE) - w_deathtypestring = "%s was cut down by %s"; + w_deathtypestring = _("%s was cut down by %s"); return TRUE; } #endif diff --git a/qcsrc/server/w_hook.qc b/qcsrc/server/w_hook.qc index e191077b3..da5e3f942 100644 --- a/qcsrc/server/w_hook.qc +++ b/qcsrc/server/w_hook.qc @@ -1,5 +1,5 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(HOOK, w_hook, IT_CELLS|IT_FUEL, 0, WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, 0, "hookgun", "hook", "Grappling Hook"); +REGISTER_WEAPON(HOOK, w_hook, IT_CELLS|IT_FUEL, 0, WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, 0, "hookgun", "hook", _("Grappling Hook")) #else #ifdef SVQC .float dmg; @@ -264,9 +264,9 @@ float w_hook(float req) precache_sound("weapons/hookbomb_impact.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s did the impossible"; + w_deathtypestring = _("%s did the impossible"); else if (req == WR_KILLMESSAGE) - w_deathtypestring = "%s has run into %s's gravity bomb"; + w_deathtypestring = _("%s has run into %s's gravity bomb"); return TRUE; } #endif diff --git a/qcsrc/server/w_laser.qc b/qcsrc/server/w_laser.qc index 5f680eb08..4ce133193 100644 --- a/qcsrc/server/w_laser.qc +++ b/qcsrc/server/w_laser.qc @@ -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_CANCLIMB | WEP_TYPE_SPLASH, 0, "laser", "laser", _("Laser")) #else #ifdef SVQC void(float imp) W_SwitchWeapon; @@ -282,13 +282,13 @@ float w_laser(float req) precache_sound("weapons/laserimpact.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s lasered themself to hell"; + w_deathtypestring = _("%s lasered themself to hell"); else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) - w_deathtypestring = "%s was cut in half by %s's gauntlet"; // unchecked: SPLASH + w_deathtypestring = _("%s was cut in half by %s's gauntlet"); // unchecked: SPLASH else - w_deathtypestring = "%s was lasered to death by %s"; // unchecked: SPLASH + w_deathtypestring = _("%s was lasered to death by %s"); // unchecked: SPLASH } return TRUE; } diff --git a/qcsrc/server/w_minelayer.qc b/qcsrc/server/w_minelayer.qc index 42c8ec3ec..88e720ede 100644 --- a/qcsrc/server/w_minelayer.qc +++ b/qcsrc/server/w_minelayer.qc @@ -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_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) @@ -73,6 +73,7 @@ void W_Mine_Explode () self.owner.switchweapon = w_getbestweapon(self.owner); } } + self.owner.minelayer_mines -= 1; remove (self); } @@ -92,6 +93,7 @@ void W_Mine_DoRemoteExplode () self.owner.switchweapon = w_getbestweapon(self.owner); } } + self.owner.minelayer_mines -= 1; remove (self); } @@ -110,7 +112,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) + if(autocvar_g_balance_minelayer_protection && self.mine_explodeanyway == 0) { entity head; head = findradius(self.origin, autocvar_g_balance_minelayer_radius); @@ -126,21 +128,34 @@ 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; self.nextthink = time; - if (time > self.cnt) + + // our lifetime has expired, it's time to die - mine_time just allows us to play a sound for this + // TODO: replace this mine_trigger.wav sound with a real countdown + if ((time > self.cnt) && (!self.mine_time)) { - other = world; - self.projectiledeathtype |= HITTYPE_BOUNCE; - W_Mine_Explode(); - return; + 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.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 - // TODO: Do this on team change too + // TODO: Do this on team change too -- Samual: But isn't a player killed when they switch teams? if(self.owner.classname != "player" || self.owner.deadflag != DEAD_NO) { other = world; @@ -165,7 +180,10 @@ void W_Mine_Think (void) // explode if it's time to if(self.mine_time && time >= self.mine_time) + { W_Mine_ProximityExplode(); + return; + } // remote detonation if (self.owner.weapon == WEP_MINE_LAYER) @@ -201,11 +219,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") ); @@ -247,7 +262,7 @@ void W_Mine_Attack (void) mine.touch = W_Mine_Touch; mine.think = W_Mine_Think; mine.nextthink = time; - mine.cnt = time + autocvar_g_balance_minelayer_lifetime; + mine.cnt = time + (autocvar_g_balance_minelayer_lifetime - autocvar_g_balance_minelayer_lifetime_countdown); mine.flags = FL_PROJECTILE; CSQCProjectile(mine, TRUE, PROJECTILE_MINE, TRUE); @@ -262,6 +277,8 @@ 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 @@ -435,15 +452,15 @@ float w_minelayer(float req) precache_sound("weapons/mine_exp.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s exploded"; + w_deathtypestring = _("%s exploded"); else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_BOUNCE) // (remote detonation) - w_deathtypestring = "%s got too close to %s's mine"; + w_deathtypestring = _("%s got too close to %s's mine"); else if(w_deathtype & HITTYPE_SPLASH) - w_deathtypestring = "%s almost dodged %s's mine"; + w_deathtypestring = _("%s almost dodged %s's mine"); else - w_deathtypestring = "%s stepped on %s's mine"; + w_deathtypestring = _("%s stepped on %s's mine"); } return TRUE; } diff --git a/qcsrc/server/w_minstanex.qc b/qcsrc/server/w_minstanex.qc index f515d98b5..89f209937 100644 --- a/qcsrc/server/w_minstanex.qc +++ b/qcsrc/server/w_minstanex.qc @@ -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_CANCLIMB | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_HIGH, "minstanex", "minstanex", _("MinstaNex")) #else #ifdef SVQC .float minstanex_lasthit; @@ -254,9 +254,9 @@ float w_minstanex(float req) precache_sound("weapons/neximpact.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s did the impossible"; + w_deathtypestring = _("%s did the impossible"); else if (req == WR_KILLMESSAGE) - w_deathtypestring = "%s has been vaporized by %s"; + w_deathtypestring = _("%s has been vaporized by %s"); return TRUE; } #endif diff --git a/qcsrc/server/w_nex.qc b/qcsrc/server/w_nex.qc index 7b1239b89..e05698851 100644 --- a/qcsrc/server/w_nex.qc +++ b/qcsrc/server/w_nex.qc @@ -1,5 +1,5 @@ #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_TYPE_HITSCAN, BOT_PICKUP_RATING_HIGH, "nex", "nex", _("Nex")) #else #ifdef SVQC void SendCSQCNexBeamParticle(float charge) { @@ -47,8 +47,8 @@ void W_Nex_Attack (float issecondary) { charge = autocvar_g_balance_nex_charge_mindmg / mydmg + (1 - autocvar_g_balance_nex_charge_mindmg / mydmg) * self.nex_charge; self.nex_charge *= autocvar_g_balance_nex_charge_shot_multiplier; // do this AFTER setting mydmg/myforce - // O RLY? -- divVerent - // YA RLY -- FruitieX + // O RLY? -- divVerent + // YA RLY -- FruitieX } else charge = 1; @@ -56,10 +56,10 @@ void W_Nex_Attack (float issecondary) myforce *= charge; W_SetupShot (self, TRUE, 5, "weapons/nexfire.wav", CHAN_WEAPON, mydmg); - if(charge > autocvar_g_balance_nex_charge_limit && autocvar_g_balance_nex_charge_limit) // if the Nex is overcharged, we play an extra sound - { - sound (self, CHAN_WEAPON2, "weapons/nexcharge.wav", VOL_BASE * (charge - 0.5 * autocvar_g_balance_nex_charge_limit) / (1 - 0.5 * autocvar_g_balance_nex_charge_limit), ATTN_NORM); - } + if(charge > autocvar_g_balance_nex_charge_animlimit && autocvar_g_balance_nex_charge_animlimit) // if the Nex is overcharged, we play an extra sound + { + sound (self, CHAN_WEAPON2, "weapons/nexcharge.wav", VOL_BASE * (charge - 0.5 * autocvar_g_balance_nex_charge_animlimit) / (1 - 0.5 * autocvar_g_balance_nex_charge_animlimit), ATTN_NORM); + } yoda = 0; FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, mydmg, myforce, mymindist, mymaxdist, myhalflife, myforcehalflife, WEP_NEX); @@ -69,7 +69,7 @@ void W_Nex_Attack (float issecondary) //beam and muzzle flash done on client SendCSQCNexBeamParticle(charge); - + // flash and burn the wall if (trace_ent.solid == SOLID_BSP && !(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)) Damage_DamageInfo(trace_endpos, mydmg, 0, 0, myforce * w_shotdir, WEP_NEX, self); @@ -94,27 +94,13 @@ float w_nex(float req) if(autocvar_g_balance_nex_charge && self.nex_charge < autocvar_g_balance_nex_charge_limit) self.nex_charge = min(1, self.nex_charge + autocvar_g_balance_nex_charge_rate * frametime / W_TICSPERFRAME); - if(autocvar_g_balance_nex_charge) - { - self.weaponentity_glowmod_x = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_red_half * min(1, self.nex_charge / autocvar_g_balance_nex_charge_limit); - self.weaponentity_glowmod_y = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_green_half * min(1, self.nex_charge / autocvar_g_balance_nex_charge_limit); - self.weaponentity_glowmod_z = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_blue_half * min(1, self.nex_charge / autocvar_g_balance_nex_charge_limit); - - if(self.nex_charge > autocvar_g_balance_nex_charge_limit) - { - self.weaponentity_glowmod_x = self.weaponentity_glowmod_x + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_red_full * (self.nex_charge - autocvar_g_balance_nex_charge_limit) / (1 - autocvar_g_balance_nex_charge_limit); - self.weaponentity_glowmod_y = self.weaponentity_glowmod_y + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_green_full * (self.nex_charge - autocvar_g_balance_nex_charge_limit) / (1 - autocvar_g_balance_nex_charge_limit); - self.weaponentity_glowmod_z = self.weaponentity_glowmod_z + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_blue_full * (self.nex_charge - autocvar_g_balance_nex_charge_limit) / (1 - autocvar_g_balance_nex_charge_limit); - } - } - if(autocvar_g_balance_nex_secondary_chargepool) - if(self.nex_chargepool_ammo < 1) - { - if(self.nex_chargepool_pauseregen_finished < time) - self.nex_chargepool_ammo = min(1, self.nex_chargepool_ammo + autocvar_g_balance_nex_secondary_chargepool_regen * frametime / W_TICSPERFRAME); - self.pauseregen_finished = max(self.pauseregen_finished, time + autocvar_g_balance_nex_secondary_chargepool_pause_health_regen); - } + if(self.nex_chargepool_ammo < 1) + { + if(self.nex_chargepool_pauseregen_finished < time) + self.nex_chargepool_ammo = min(1, self.nex_chargepool_ammo + autocvar_g_balance_nex_secondary_chargepool_regen * frametime / W_TICSPERFRAME); + self.pauseregen_finished = max(self.pauseregen_finished, time + autocvar_g_balance_nex_secondary_chargepool_pause_health_regen); + } if (self.BUTTON_ATCK) { @@ -124,43 +110,52 @@ float w_nex(float req) weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_nex_primary_animtime, w_ready); } } - if (self.BUTTON_ATCK2) + 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) { self.nex_charge_rottime = time + autocvar_g_balance_nex_charge_rot_pause; dt = frametime / W_TICSPERFRAME; - if(autocvar_g_balance_nex_secondary_chargepool) + 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.nex_charge < 1) + 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); + 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; } + } + + 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; } } @@ -174,6 +169,20 @@ float w_nex(float req) } } } + + if(autocvar_g_balance_nex_charge) + { + self.weaponentity_glowmod_x = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_red_half * min(1, self.nex_charge / autocvar_g_balance_nex_charge_animlimit); + self.weaponentity_glowmod_y = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_green_half * min(1, self.nex_charge / autocvar_g_balance_nex_charge_animlimit); + self.weaponentity_glowmod_z = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_blue_half * min(1, self.nex_charge / autocvar_g_balance_nex_charge_animlimit); + + if(self.nex_charge > autocvar_g_balance_nex_charge_animlimit) + { + self.weaponentity_glowmod_x = self.weaponentity_glowmod_x + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_red_full * (self.nex_charge - autocvar_g_balance_nex_charge_animlimit) / (1 - autocvar_g_balance_nex_charge_animlimit); + self.weaponentity_glowmod_y = self.weaponentity_glowmod_y + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_green_full * (self.nex_charge - autocvar_g_balance_nex_charge_animlimit) / (1 - autocvar_g_balance_nex_charge_animlimit); + self.weaponentity_glowmod_z = self.weaponentity_glowmod_z + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_blue_full * (self.nex_charge - autocvar_g_balance_nex_charge_animlimit) / (1 - autocvar_g_balance_nex_charge_animlimit); + } + } } else if (req == WR_PRECACHE) { @@ -212,9 +221,9 @@ float w_nex(float req) precache_sound("weapons/neximpact.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s did the impossible"; + w_deathtypestring = _("%s did the impossible"); else if (req == WR_KILLMESSAGE) - w_deathtypestring = "%s has been vaporized by %s"; + w_deathtypestring = _("%s has been vaporized by %s"); return TRUE; } #endif diff --git a/qcsrc/server/w_porto.qc b/qcsrc/server/w_porto.qc index 8083a7968..4e9a2cd70 100644 --- a/qcsrc/server/w_porto.qc +++ b/qcsrc/server/w_porto.qc @@ -1,5 +1,5 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(PORTO, w_porto, 0, 0, WEP_TYPE_OTHER, 0, "porto" , "porto", "Port-O-Launch"); +REGISTER_WEAPON(PORTO, w_porto, 0, 0, WEP_TYPE_OTHER, 0, "porto" , "porto", _("Port-O-Launch")) #else #ifdef SVQC .entity porto_current; @@ -290,9 +290,9 @@ float w_porto(float req) // nothing to do } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s did the impossible"; + w_deathtypestring = _("%s did the impossible"); else if (req == WR_KILLMESSAGE) - w_deathtypestring = "%s felt %s doing the impossible to him"; + w_deathtypestring = _("%s felt %s doing the impossible to him"); return TRUE; } #endif diff --git a/qcsrc/server/w_rocketlauncher.qc b/qcsrc/server/w_rocketlauncher.qc index a5b64c4bf..21874b790 100644 --- a/qcsrc/server/w_rocketlauncher.qc +++ b/qcsrc/server/w_rocketlauncher.qc @@ -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_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "rl", "rocketlauncher", _("Rocket Launcher")) #else #ifdef SVQC .float rl_release; @@ -477,15 +477,15 @@ float w_rlauncher(float req) precache_sound("weapons/rocket_impact.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s exploded"; + w_deathtypestring = _("%s exploded"); else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_BOUNCE) // (remote detonation) - w_deathtypestring = "%s got too close to %s's rocket"; + w_deathtypestring = _("%s got too close to %s's rocket"); else if(w_deathtype & HITTYPE_SPLASH) - w_deathtypestring = "%s almost dodged %s's rocket"; + w_deathtypestring = _("%s almost dodged %s's rocket"); else - w_deathtypestring = "%s ate %s's rocket"; + w_deathtypestring = _("%s ate %s's rocket"); } return TRUE; } diff --git a/qcsrc/server/w_seeker.qc b/qcsrc/server/w_seeker.qc index eb64dddd8..81d55a226 100644 --- a/qcsrc/server/w_seeker.qc +++ b/qcsrc/server/w_seeker.qc @@ -1,5 +1,5 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(SEEKER, w_seeker, IT_ROCKETS, 9, 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_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "seeker", "seeker", _("T.A.G. Seeker")) #else #ifdef SVQC //.float proxytime; = autoswitch @@ -520,13 +520,13 @@ float w_seeker(float req) precache_sound("weapons/tag_impact.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s played with tiny rockets"; + w_deathtypestring = _("%s played with tiny rockets"); else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) - w_deathtypestring = "%s ran into %s's flac"; + w_deathtypestring = _("%s ran into %s's flac"); else - w_deathtypestring = "%s was tagged by %s"; + w_deathtypestring = _("%s was tagged by %s"); } return TRUE; } diff --git a/qcsrc/server/w_shotgun.qc b/qcsrc/server/w_shotgun.qc index 08c4a901e..6d0d094eb 100644 --- a/qcsrc/server/w_shotgun.qc +++ b/qcsrc/server/w_shotgun.qc @@ -1,5 +1,5 @@ #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_TYPE_HITSCAN, BOT_PICKUP_RATING_LOW, "shotgun", "shotgun", _("Shotgun")) #else #ifdef SVQC void W_Shotgun_Attack (void) @@ -56,9 +56,12 @@ void shotgun_meleethink (void) vector angle; angle = v_forward; + float meleetime; + meleetime = autocvar_g_balance_shotgun_secondary_melee_time * W_WeaponRateFactor(); + // perform trace float f; - f = (self.cnt + autocvar_g_balance_shotgun_secondary_melee_time - time) / autocvar_g_balance_shotgun_secondary_melee_time * 2 - 1; + f = (self.cnt + meleetime - time) / meleetime * 2 - 1; vector targpos; targpos = self.owner.origin + self.owner.view_ofs + angle * autocvar_g_balance_shotgun_secondary_melee_range + v_right * f * autocvar_g_balance_shotgun_secondary_melee_swing + v_up * f * autocvar_g_balance_shotgun_secondary_melee_swing; @@ -74,7 +77,7 @@ void shotgun_meleethink (void) Damage (trace_ent, self.owner, self.owner, autocvar_g_balance_shotgun_secondary_damage * min(1, f + 1), WEP_SHOTGUN | HITTYPE_SECONDARY , self.owner.origin + self.owner.view_ofs, force); remove(self); } - else if(time >= self.cnt + autocvar_g_balance_shotgun_secondary_melee_time) // missed, remove ent + else if(time >= self.cnt + meleetime) // missed, remove ent remove(self); else // continue swinging the weapon in hope of hitting someone :) self.nextthink = time; @@ -173,13 +176,13 @@ float w_shotgun(float req) precache_sound("weapons/ric3.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s did the impossible"; + w_deathtypestring = _("%s did the impossible"); else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) - w_deathtypestring = "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun"; + w_deathtypestring = _("%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun"); else - w_deathtypestring = "%s was gunned by %s"; + w_deathtypestring = _("%s was gunned by %s"); } return TRUE; } diff --git a/qcsrc/server/w_sniperrifle.qc b/qcsrc/server/w_sniperrifle.qc new file mode 100644 index 000000000..a03a9b610 --- /dev/null +++ b/qcsrc/server/w_sniperrifle.qc @@ -0,0 +1,353 @@ +#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")) +#else +#ifdef SVQC +//Sniper rifle Primary mode: manually operated bolt*, Secondary: full automatic** +//* Manually operating the bolt means that all the power of the gas is used to propell the bullet. In this mode the bolt is prevented from moving backwards in response to the firing of the bullet. +//** In fully automatic mode some of the gas is used to extract and reload the next cartrige, thus there is less power and range. + +.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; + + 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); + + if(self.BUTTON_ZOOM) // if zoomed, shoot from the eye + { + w_shotdir = v_forward; + w_shotorg = self.origin + self.view_ofs + ((w_shotorg - self.origin - self.view_ofs) * v_forward) * v_forward; + } + + if(deathtype & HITTYPE_SECONDARY) + fireBallisticBullet(w_shotorg, w_shotdir, pSpread, pSpeed, pLifetime, pDamage, pHeadshotAddedDamage / pDamage, pForce, deathtype, (autocvar_g_balance_sniperrifle_secondary_tracer ? EF_RED : EF_BLUE), 1, pBulletConstant); + else + fireBallisticBullet(w_shotorg, w_shotdir, pSpread, pSpeed, pLifetime, pDamage, pHeadshotAddedDamage / pDamage, pForce, deathtype, (autocvar_g_balance_sniperrifle_primary_tracer ? EF_RED : EF_BLUE), 1, pBulletConstant); + endFireBallisticBullet(); + + 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() +{ + W_SniperRifle_FireBullet(autocvar_g_balance_sniperrifle_primary_spread, autocvar_g_balance_sniperrifle_primary_damage, autocvar_g_balance_sniperrifle_primary_headshotaddeddamage, autocvar_g_balance_sniperrifle_primary_force, autocvar_g_balance_sniperrifle_primary_speed, autocvar_g_balance_sniperrifle_primary_lifetime, autocvar_g_balance_sniperrifle_primary_ammo, WEP_SNIPERRIFLE, autocvar_g_balance_sniperrifle_primary_bulletconstant); +} + +void W_SniperRifle_Attack2() +{ + W_SniperRifle_FireBullet(autocvar_g_balance_sniperrifle_secondary_spread, autocvar_g_balance_sniperrifle_secondary_damage, autocvar_g_balance_sniperrifle_secondary_headshotaddeddamage, autocvar_g_balance_sniperrifle_secondary_force, autocvar_g_balance_sniperrifle_secondary_speed, autocvar_g_balance_sniperrifle_secondary_lifetime, autocvar_g_balance_sniperrifle_secondary_ammo, WEP_SNIPERRIFLE | HITTYPE_SECONDARY, autocvar_g_balance_sniperrifle_secondary_bulletconstant); +} + +void spawnfunc_weapon_sniperrifle (void) +{ + weapon_defaultspawnfunc(WEP_SNIPERRIFLE); +} + +// compatibility alias +void spawnfunc_weapon_campingrifle (void) +{ + spawnfunc_weapon_sniperrifle(); +} + +.void(void) sniperrifle_bullethail_attackfunc; +.float sniperrifle_bullethail_frame; +.float sniperrifle_bullethail_animtime; +.float sniperrifle_bullethail_refire; +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; + ATTACK_FINISHED(self) = time; + print(ftos(self.ammo_nails), "\n"); + r = weapon_prepareattack(self.sniperrifle_bullethail_frame == WFRAME_FIRE2, self.sniperrifle_bullethail_refire); + if(self.switchweapon == self.weapon) + self.switchweapon = sw; + if(r) + { + self.sniperrifle_bullethail_attackfunc(); + weapon_thinkf(self.sniperrifle_bullethail_frame, self.sniperrifle_bullethail_animtime, W_SniperRifle_BulletHail_Continue); + print("thinkf set\n"); + } + else + { + ATTACK_FINISHED(self) = af; // reset attack_finished if we didn't fire, so the last shot enforces the refire time + print("out of ammo... ", ftos(self.weaponentity.state), "\n"); + } +} + +void W_SniperRifle_BulletHail(float mode, void(void) AttackFunc, float fr, float animtime, float refire) +{ + // if we get here, we have at least one bullet to fire + AttackFunc(); + if(mode) + { + // continue hail + self.sniperrifle_bullethail_attackfunc = AttackFunc; + self.sniperrifle_bullethail_frame = fr; + self.sniperrifle_bullethail_animtime = animtime; + self.sniperrifle_bullethail_refire = refire; + weapon_thinkf(fr, animtime, W_SniperRifle_BulletHail_Continue); + } + else + { + // just one shot + weapon_thinkf(fr, animtime, W_SniperRifle_CheckReloadAndReady); + } +} + +.float bot_secondary_sniperriflemooth; +float w_sniperrifle(float req) +{ + float full; + if (req == WR_AIM) + { + self.BUTTON_ATCK=FALSE; + self.BUTTON_ATCK2=FALSE; + if(vlen(self.origin-self.enemy.origin) > 1000) + self.bot_secondary_sniperriflemooth = 0; + if(self.bot_secondary_sniperriflemooth == 0) + { + if(bot_aim(autocvar_g_balance_sniperrifle_primary_speed, 0, autocvar_g_balance_sniperrifle_primary_lifetime, TRUE)) + { + self.BUTTON_ATCK = TRUE; + if(random() < 0.01) self.bot_secondary_sniperriflemooth = 1; + } + } + else + { + if(bot_aim(autocvar_g_balance_sniperrifle_secondary_speed, 0, autocvar_g_balance_sniperrifle_secondary_lifetime, TRUE)) + { + self.BUTTON_ATCK2 = TRUE; + if(random() < 0.03) self.bot_secondary_sniperriflemooth = 0; + } + } + } + else if (req == WR_THINK) + { + if(self.sniperrifle_bulletcounter < 0) // forced reload (e.g. because interrupted) + { + self.wish_reload = 1; + } + else + { + self.sniperrifle_accumulator = bound(time - autocvar_g_balance_sniperrifle_bursttime, self.sniperrifle_accumulator, time); + if (self.BUTTON_ATCK) + if (weapon_prepareattack_check(0, autocvar_g_balance_sniperrifle_primary_refire)) + if (time >= self.sniperrifle_accumulator + autocvar_g_balance_sniperrifle_primary_burstcost) + { + weapon_prepareattack_do(0, autocvar_g_balance_sniperrifle_primary_refire); + W_SniperRifle_BulletHail(autocvar_g_balance_sniperrifle_primary_bullethail, W_SniperRifle_Attack, WFRAME_FIRE1, autocvar_g_balance_sniperrifle_primary_animtime, autocvar_g_balance_sniperrifle_primary_refire); + self.sniperrifle_accumulator += autocvar_g_balance_sniperrifle_primary_burstcost; + } + if (self.BUTTON_ATCK2) + { + if (autocvar_g_balance_sniperrifle_secondary) + { + if(autocvar_g_balance_sniperrifle_secondary_reload) + self.wish_reload = 1; + else + { + if (weapon_prepareattack_check(1, autocvar_g_balance_sniperrifle_secondary_refire)) + if (time >= self.sniperrifle_accumulator + autocvar_g_balance_sniperrifle_secondary_burstcost) + { + weapon_prepareattack_do(1, autocvar_g_balance_sniperrifle_secondary_refire); + W_SniperRifle_BulletHail(autocvar_g_balance_sniperrifle_secondary_bullethail, W_SniperRifle_Attack2, WFRAME_FIRE2, autocvar_g_balance_sniperrifle_secondary_animtime, autocvar_g_balance_sniperrifle_primary_refire); + self.sniperrifle_accumulator += autocvar_g_balance_sniperrifle_secondary_burstcost; + } + } + } + } + } + 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"); + } + 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; + } + else if (req == WR_CHECKAMMO1) + return self.ammo_nails >= autocvar_g_balance_sniperrifle_primary_ammo; + else if (req == WR_CHECKAMMO2) + return self.ammo_nails >= autocvar_g_balance_sniperrifle_secondary_ammo; + else if (req == WR_RELOAD) + { + self.wish_reload = 1; + } + 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); + } + return TRUE; +}; +#endif +#ifdef CSQC +float w_sniperrifle(float req) +{ + if(req == WR_IMPACTEFFECT) + { + vector org2; + org2 = w_org + w_backoff * 2; + pointparticles(particleeffectnum("machinegun_impact"), org2, w_backoff * 1000, 1); + if(!w_issilent) + { + if(w_random < 0.2) + sound(self, CHAN_PROJECTILE, "weapons/ric1.wav", VOL_BASE, ATTN_NORM); + else if(w_random < 0.4) + sound(self, CHAN_PROJECTILE, "weapons/ric2.wav", VOL_BASE, ATTN_NORM); + else if(w_random < 0.5) + sound(self, CHAN_PROJECTILE, "weapons/ric3.wav", VOL_BASE, ATTN_NORM); + } + } + else if(req == WR_PRECACHE) + { + precache_sound("weapons/ric1.wav"); + precache_sound("weapons/ric2.wav"); + precache_sound("weapons/ric3.wav"); + } + else if (req == WR_SUICIDEMESSAGE) + { + if(w_deathtype & HITTYPE_SECONDARY) + w_deathtypestring = _("%s shot themself automatically"); + else + w_deathtypestring = _("%s sniped themself somehow"); + } + else if (req == WR_KILLMESSAGE) + { + if(w_deathtype & HITTYPE_SECONDARY) + { + if(w_deathtype & HITTYPE_BOUNCE) + w_deathtypestring = _("%s failed to hide from %s's bullet hail"); + else + w_deathtypestring = _("%s died in %s's bullet hail"); + } + else + { + if(w_deathtype & HITTYPE_BOUNCE) + { + // TODO special headshot message here too? + w_deathtypestring = _("%s failed to hide from %s's rifle"); + } + else + { + if(w_deathtype & HITTYPE_HEADSHOT) + w_deathtypestring = _("%s got hit in the head by %s"); + else + w_deathtypestring = _("%s was sniped by %s"); + } + } + } + return TRUE; +} +#endif +#endif diff --git a/qcsrc/server/w_tuba.qc b/qcsrc/server/w_tuba.qc index 1ea9cec97..98767516a 100644 --- a/qcsrc/server/w_tuba.qc +++ b/qcsrc/server/w_tuba.qc @@ -1,5 +1,5 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(TUBA, w_tuba, 0, 1, WEP_FLAG_HIDDEN | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "tuba", "tuba", "@!#%'n Tuba"); +REGISTER_WEAPON(TUBA, w_tuba, 0, 1, WEP_FLAG_HIDDEN | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "tuba", "tuba", _("@!#%'n Tuba")) #else #ifdef SVQC //#define TUBA_NOTE(n) strcat("weapons/tuba_note", ftos(n), ".wav") @@ -257,11 +257,11 @@ float w_tuba(float req) } else if (req == WR_SUICIDEMESSAGE) { - w_deathtypestring = "%s hurt his own ears with the @!#%%'n Tuba"; + w_deathtypestring = _("%s hurt his own ears with the @!#%%'n Tuba"); } else if (req == WR_KILLMESSAGE) { - w_deathtypestring = "%s died of %s's great playing on the @!#%%'n Tuba"; + w_deathtypestring = _("%s died of %s's great playing on the @!#%%'n Tuba"); } return TRUE; } diff --git a/qcsrc/server/w_uzi.qc b/qcsrc/server/w_uzi.qc index 2d50143de..0e563405a 100644 --- a/qcsrc/server/w_uzi.qc +++ b/qcsrc/server/w_uzi.qc @@ -1,8 +1,7 @@ #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_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "uzi", "uzi", _("Machine Gun")) #else #ifdef SVQC -.entity muzzle_flash; // leilei's fancy muzzleflash stuff void Uzi_Flash_Go() @@ -40,17 +39,16 @@ void UziFlash() self.muzzle_flash.owner = self; } -.float uzi_bulletcounter; void W_Uzi_Attack (float deathtype) { if not(self.items & IT_UNLIMITED_WEAPON_AMMO) { - if (self.uzi_bulletcounter == 1) + 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.uzi_bulletcounter == 1) ? autocvar_g_balance_uzi_first_damage : autocvar_g_balance_uzi_sustained_damage)); + 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) { self.punchangle_x = random () - 0.5; @@ -60,7 +58,7 @@ void W_Uzi_Attack (float deathtype) // this attack_finished just enforces a cooldown at the end of a burst ATTACK_FINISHED(self) = time + autocvar_g_balance_uzi_first_refire * W_WeaponRateFactor(); - if (self.uzi_bulletcounter == 1) + if (self.misc_bulletcounter == 1) fireBallisticBullet(w_shotorg, w_shotdir, autocvar_g_balance_uzi_first_spread, autocvar_g_balance_uzi_speed, 5, autocvar_g_balance_uzi_first_damage, 0, autocvar_g_balance_uzi_first_force, deathtype, 0, 1, autocvar_g_balance_uzi_bulletconstant); else fireBallisticBullet(w_shotorg, w_shotdir, autocvar_g_balance_uzi_sustained_spread, autocvar_g_balance_uzi_speed, 5, autocvar_g_balance_uzi_sustained_damage, 0, autocvar_g_balance_uzi_sustained_force, deathtype, 0, 1, autocvar_g_balance_uzi_bulletconstant); @@ -92,7 +90,7 @@ void uzi_fire1_02() w_ready(); return; } - self.uzi_bulletcounter = self.uzi_bulletcounter + 1; + self.misc_bulletcounter = self.misc_bulletcounter + 1; W_Uzi_Attack(WEP_UZI); weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, uzi_fire1_02); } @@ -128,11 +126,11 @@ void uzi_mode1_fire_auto() self.punchangle_y = random () - 0.5; } - uzi_spread = bound(autocvar_g_balance_uzi_spread_min, autocvar_g_balance_uzi_spread_min + (autocvar_g_balance_uzi_spread_add * self.uzi_bulletcounter), autocvar_g_balance_uzi_spread_max); + uzi_spread = bound(autocvar_g_balance_uzi_spread_min, autocvar_g_balance_uzi_spread_min + (autocvar_g_balance_uzi_spread_add * self.misc_bulletcounter), autocvar_g_balance_uzi_spread_max); fireBallisticBullet(w_shotorg, w_shotdir, uzi_spread, autocvar_g_balance_uzi_speed, 5, autocvar_g_balance_uzi_sustained_damage, 0, autocvar_g_balance_uzi_sustained_force, WEP_UZI, 0, 1, autocvar_g_balance_uzi_bulletconstant); endFireBallisticBullet(); - self.uzi_bulletcounter = self.uzi_bulletcounter + 1; + self.misc_bulletcounter = self.misc_bulletcounter + 1; pointparticles(particleeffectnum("uzi_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); @@ -168,13 +166,15 @@ void uzi_mode1_fire_burst() 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); - self.uzi_bulletcounter = self.uzi_bulletcounter + 1; - if (self.uzi_bulletcounter == 0) - weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_uzi_burst_refire2, w_ready); + self.misc_bulletcounter = self.misc_bulletcounter + 1; + if (self.misc_bulletcounter == 0) + { + ATTACK_FINISHED(self) = time + autocvar_g_balance_uzi_burst_refire2 * W_WeaponRateFactor(); + weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_uzi_burst_animtime, w_ready); + } else { weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_uzi_burst_refire, uzi_mode1_fire_burst); - dprint("bullets:", ftos(self.uzi_bulletcounter),"\n"); } } @@ -197,7 +197,7 @@ float w_uzi(float req) if (self.BUTTON_ATCK) if (weapon_prepareattack(0, 0)) { - self.uzi_bulletcounter = 0; + self.misc_bulletcounter = 0; uzi_mode1_fire_auto(); } @@ -214,7 +214,7 @@ float w_uzi(float req) if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_nails = self.ammo_nails - autocvar_g_balance_uzi_burst_ammo; - self.uzi_bulletcounter = autocvar_g_balance_uzi_burst * -1; + self.misc_bulletcounter = autocvar_g_balance_uzi_burst * -1; uzi_mode1_fire_burst(); } } @@ -224,7 +224,7 @@ float w_uzi(float req) if (self.BUTTON_ATCK) if (weapon_prepareattack(0, 0)) { - self.uzi_bulletcounter = 1; + self.misc_bulletcounter = 1; W_Uzi_Attack(WEP_UZI); // sets attack_finished weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, uzi_fire1_02); } @@ -232,7 +232,7 @@ float w_uzi(float req) if (self.BUTTON_ATCK2 && autocvar_g_balance_uzi_first) if (weapon_prepareattack(1, 0)) { - self.uzi_bulletcounter = 1; + self.misc_bulletcounter = 1; W_Uzi_Attack(WEP_UZI | HITTYPE_SECONDARY); // sets attack_finished weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_uzi_first_refire, w_ready); } @@ -284,13 +284,13 @@ float w_uzi(float req) precache_sound("weapons/ric3.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s did the impossible"; + w_deathtypestring = _("%s did the impossible"); else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) - w_deathtypestring = "%s was sniped by %s"; + w_deathtypestring = _("%s was sniped by %s"); else - w_deathtypestring = "%s was riddled full of holes by %s"; + w_deathtypestring = _("%s was riddled full of holes by %s"); } return TRUE; } diff --git a/qcsrc/server/waypointsprites.qc b/qcsrc/server/waypointsprites.qc index 5bbf02676..bda0e77b8 100644 --- a/qcsrc/server/waypointsprites.qc +++ b/qcsrc/server/waypointsprites.qc @@ -81,8 +81,13 @@ void WaypointSprite_UpdateTeamRadar(entity e, float icon, vector col) e.SendFlags |= 32; } +.float waypointsprite_pingtime; void WaypointSprite_Ping(entity e) { + // anti spam + if(time < e.waypointsprite_pingtime) + return; + e.waypointsprite_pingtime = time + 0.3; // ALWAYS sends (this causes a radar circle), thus no check e.cnt |= 0x80; e.SendFlags |= 32; diff --git a/qcsrc/warpzonelib/mathlib.qc b/qcsrc/warpzonelib/mathlib.qc index b460a063d..42262102e 100644 --- a/qcsrc/warpzonelib/mathlib.qc +++ b/qcsrc/warpzonelib/mathlib.qc @@ -18,7 +18,9 @@ int isinf(float x) } int isnan(float x) { - return !(x + x == x + x); + float y; + y = x; + return (x != y); } int isnormal(float x) { diff --git a/quake.rc b/quake.rc index a85fbab69..2c0f409ea 100644 --- a/quake.rc +++ b/quake.rc @@ -3,6 +3,7 @@ exec config.cfg maxplayers $menu_maxplayers exec data/campaign.cfg exec config_update.cfg +exec font-xolonium.cfg exec autoexec.cfg stuffcmds //startdemos demos/demo1 demos/demo2 demos/demo3 diff --git a/textures/hlac_glass.tga b/textures/hlac_glass.tga new file mode 100644 index 000000000..e0ed0a720 Binary files /dev/null and b/textures/hlac_glass.tga differ diff --git a/textures/hlac_plasma.tga b/textures/hlac_plasma.tga new file mode 100644 index 000000000..5603b16e7 Binary files /dev/null and b/textures/hlac_plasma.tga differ diff --git a/tooltips.db b/tooltips.db index e8aa0f6cd..a0443b703 100644 --- a/tooltips.db +++ b/tooltips.db @@ -29,9 +29,10 @@ \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 diff --git a/tooltips.db.de b/tooltips.db.de new file mode 100644 index 000000000..b23b40eab --- /dev/null +++ b/tooltips.db.de @@ -0,0 +1,227 @@ +0 +\XonoticSingleplayerDialog\Spiele die Einzelspieler-Kampagne oder habe Instant-Action Spiele gegen Bots + + +\XonoticMultiplayerDialog\Spiele online, gegen deine Freunde im LAN, gucke dir Demos an oder ändere deine Spieler-Einstellungen +\XonoticMultiplayerDialog/Server\Finde Server und spiele online +\menu_slist_showempty\Aktiviere die Anzeige von leeren Servern +\menu_slist_showfull\Aktiviere die Anzeige von vollen Servern, die keinen freien Platz mehr haben +\net_slist_pause\Unterbreche die automatische Aktualisierung der Serverliste um ein "Herumspringen" zu verhindern +\XonoticMultiplayerDialog/Info\Lass dir mehr Informationen über den markierten Server anzeigen +\XonoticMultiplayerDialog/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 +\XonoticMultiplayerDialog/Demos\Gucke dir Demos an +\XonoticMultiplayerDialog/Spieler-Einstellungen\Ändere deine Spieler-Einstellungen + +\XonoticTeamSelectDialog/'bestem' Team beitreten\Automatische Auswahl des Teams (bevorzugt) +\XonoticTeamSelectDialog/rot\Trete dem roten Team bei +\XonoticTeamSelectDialog/blau\Trete dem blauen Team bei +\XonoticTeamSelectDialog/gelb\Trete dem gelben Team bei +\XonoticTeamSelectDialog/pink\Trete dem pinken Team bei + +\timelimit_override\Wähle ein Zeitlimit bei dem die Map endet oder verwende den Map-Standard für diese Option. +\fraglimit_override\Wähle die Anzahl an Frags die benötigt wird, damit die Map endet oder verwende den Map-Standard für diese Option. +\menu_maxplayers\Wähle die maximale Anzahl der Spieler, welche sich mit deinem Server gleichzeitig verbinden dürfen. Freie Plätze können mit Bots aufgefüllt werden. +\bot_number\Wähle die maximale Anzahl von Bots auf dem Server. +\skill\Stelle die Stärke der Bots ein. +\g_maplist_votable\Anzahl von Maps, welche am Ende des Spiels zur Wahl stehen. +\sv_vote_simple_majority_factor\Die einfache Mehrheit gewinnt die Abstimmung. +\XonoticMultiplayerDialog/Erweiterte Einstellungen...\Erweiterte Einstellungen für den Server +\XonoticMultiplayerDialog/Mutators...\Wähle Mutators und Waffen-Arenen. +\g_dodging\Ausweichmodus: Es ist möglich rasch zur Seite zu springen (spezielle Bewegung). +\g_cloaked\Tarnmodus: Alle Spieler sind fast unsichtbar. +\g_footsteps\Schrittklang: Schritte von Spielern erzeugen Geräusche. +\g_midair\"Luft"modus: Dem Gegner Schaden zuzufügen ist nur möglich, wenn er sich in der Luft befindet. +\g_vampire\Vampirmodus: Der Schaden dem du anderen Spielern zufügst, wird deiner eigenen Lebensenergie hinzugefügt. +\g_bloodloss\Blutverlust: Aktiviere diesen Modus und stelle den Wert der Lebensenergie, bei der Spieler auf Grund von Blutverlust betäubt wirken, ein. +\sv_gravity\Verringere die Schwerkraft und lass Gegenstände langsamer zu Boden fallen, ein niedrigerer Wert verringert die Gravitation. +\g_grappling_hook\Neu erzeugte/auferstandene Spieler starten mit dem Enterhaken. +\g_jetpack\Neu erzeugte/auferstandene Spieler starten mit dem Jetpack. +\g_pinata\Gestorbene Spieler lassen alle Waffen fallen, die sie besaßen - Waffen verschwinden nicht. +\g_rocket_flying\Raketen fliegen in allen Physikeinstellungen. +\g_weapon_stay\Alle Waffen bleiben liegen, auch wenn sie aufgenommen wurden. +\g_weaponarena\Waffen-Arenen: Die Auswahl einer Waffen-Arena führt dazu, dass jeder Spieler mit der gewählten Waffe startet. Diese hat unendlich viel Munition, andere Waffen sind nicht vorhanden. - Spezielle Waffen-Arenen: Spieler starten mit allen Waffen und unendlich viel Munition +\menu_weaponarena_with_laser\Aktiviere auch den Laser in der Waffen-Arena. +\g_minstagib\Alle Spieler starten mit der Minstanex, eine elektromagnetische Schienenkanone mit unendlich viel Schaden. Wenn ein Spieler keine Munition mehr hat, bleiben ihm 10 Sekunden um neue zu finden, ansonsten stirbt er. Der 2. Feuermodus ist Laser, welcher keinen Schaden hinzufügen kann. Dieser eignet sich gut für Tricksprünge. +\g_nix\Es gibt keine aufzusammelnden Gegenstände in Xonotic - Anstelle der Möglichkeit Waffen aufzusammeln, spielen alle mit der gleichen Waffe. Nach einiger Zeit startet ein Countdown, danach wechseln alle Spieler zu einer neuen gleichen Waffe. +\g_nix_with_laser\In 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 Entwickler +\XonoticTeamSelectDialog\- +\XonoticMutatorsDialog\- +\XonoticMapInfoDialog\- +\XonoticUserbindEditDialog\- +\XonoticWinnerDialog\- +\XonoticWeaponsDialog\- +\XonoticRadarDialog\- +\XonoticServerInfoDialog\- +\XonoticCvarsDialog\- + +\XonoticQuitDialog\Beende das Spiel +\XonoticQuitDialog/Ja\Zurück an die Arbeit... +\XonoticQuitDialog/Nein\Ich muss noch ein paar Typen fraggen! + +\XonoticSettingsDialog/Eingabe\Einstellungen der Eingabe +\sensitivity\Geschwindigkeitsmultiplikator um die Sensivität der Maus einzustellen. +\menu_mouse_speed\Multiplikator für die Geschwindigkeit der Maus im Menü, hat keinen Effekt auf die Mausbewegung im Spiel. +\m_filter\Glättet die Mausbewegung, aber verringert die Reaktion des Zielens etwas. +\m_pitch\Umkehren der Mausbewegung entlang der Y-Achse. +\vid_dgamouse\Verwende die DGA Maus Eingabe. +\joy_enable\Zur Verwendung eines Joysticks aktivieren. +\con_closeontoggleconsole\Schließen der Konsole auch mit der Taste, die zum Öffnen verwendet wird +\sbar_showbinds\Darstellung von gedrückten Aktionen / gedrückten Tasten, während des Spielens. +\cl_showpressedkeys\Lass dir die gedrückten Tasten während des Spielens anzeigen. + +\XonoticSettingsDialog/Grafik\Grafik 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) +\vid_gl20\Aktiviere OpenGL 2.0 für Lichteffekte (Standard: aktiviert) +\gl_vbo\Speicher Eckpunkte und/oder Dreiecke der statischen Geometrie im Videospeicher um ein schnelleres Rendern zu ermöglichen (Standard: Eckpunkte, einige Dreiecke) +\r_depthfirst\Verhindere das Überblenden, in dem das Tiefenbild der Szene vor dem Licht gerendert wird (Standard: nur Map) +\gl_texturecompression\Komprimiere die Texturen für Grafikkarten mit einem geringen Grafikspeicher (Standard: deaktiviert) +\gl_finish\Die Grafikkarte wartet bis die CPU die Berechnung eines jeden Frames beendet hat, dies kann bei merkwürdigen Verhalten der Eingabe helfen (Standard: deaktiviert) +\v_brightness\Helligkeit von Schwarz (Standard: 0) +\v_contrast\Helligkeit von Weiß (Standard: 1) +\v_gamma\Korrekturwert für die Kontraststärke (Gamma-Wert), Helligkeitseffekt, der keinen Einfluss auf Weiß und Schwarz hat (Standard: 1) +\v_contrastboost\Faktor für die Änderung des Kontrasts in dunklen Bildteilen (Standard: 1) +\r_glsl_saturation\Sättigungskorrektur (0 = Graustufenbild, 1 = normales Bild, 2 = übersättigtes Bild), benötigt GLSL Farbkontrolle (Standard: 1) +\v_glslgamma\Aktiviere die Verwendung von GLSL um die Gamma-Korrektur zu ermöglichen, kann die Leistung stark verringern (Standard: Aus) +\r_ambient\Umgebungslicht, ein zu hoch eingestellter Wert lässt die Map matt und flach erscheinen (Standard: 4) +\r_hdr_scenebrightness\Globales Rendern der Lichtstärke (Standard: 1) +\vid_samples\Aktiviere Antialiasing um Ecken der 3D-Geometire zu glätten. Kann die Leistung stark verringern (Standard: Aus) +\v_flipped\Linkshänder Modus (Standard: deaktiviert) + +\XonoticSettingsDialog/Effekte\Einstellungen der Effekte +\r_subdivisions_tolerance\Ändere die Qualität der Geometrie in der Map - Rundheit/Glattheit von Kurven (Standard: Gut) +\gl_picmip\Ändere die Auflösung von Texturen. Ein geringerer Wert verringert die Auslastung des Speichers, aber lässt die Texturen verschwommen aussehen. (Standard: Gut) +\gl_texturecompression\Wenn aktiviert, wird die Kompression von Texturen verhindert. +\r_picmipworld\Wenn aktiviert, wird nur die Texturqualität von Modellen verringert (Standard: aktiviert) +\mod_q3bsp_nolightmaps\Verwende hochauflösende Lightmaps, welche sehr schön aussehen, aber etwas mehr Videospeicher benötigen. (Standard: aktiviert) +\cl_particles_quality\Faktor für die Anzahl von Partikel. Weniger beudetet weniger Parikel, was zu einer besseren Performance führt. (Standard: 1.0) +\r_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, als eingestellt, entfernte Dekore werden nicht dargestellt (Standard: 300) +\cl_decals_time\Zeit in Sekunden nach dem Dekore verschwinden (Standard: 2) +\cl_gentle\Blut und Fleischteile werden durch andere, nicht blutige, Effekte ersetzt +\cl_nogibs\Verringere die Anzahl von Fleischteilen oder entferne sie vollständig (Standard: Viele) +\v_kicktime\Wert für die Dauer der Beeinträchtigung der Sicht durch einen Schaden (Standard: 0) +\gl_texture_anisotropy\Qualität für das Filtern von Anisotropie (Standard: Aus) +\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\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 - 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\- +\volume\- +\snd_staticvolume\- +\snd_worldchannel0volume\- +\snd_entchannel3volume\- +\snd_playerchannel6volume\- +\snd_playerchannel7volume\- +\snd_entchannel4volume\- +\snd_playerchannel2volume\- +\snd_playerchannel1volume\- +\snd_speed\Ausgangsfrequenz des Tons +\snd_channels\Anzahl der Kanäle für die Audiowiedergabe +\snd_swapstereo\Linken und rechten Kanal der Stereowiedergabe tauschen +\snd_spatialization_control\Aktiviere "räumlicheren" Klang (Mischung des linken und rechten Kanals um die Stereo-Trennung leicht zu verringern, für Kopfhörer). +\cl_voice_directional\Aktiviere richtungsunabhängige Geräusche. +\cl_voice_directional_taunt_attenuation\Distanz in der spöttige Bemerkungen anderer Spieler gehört werden können. +\cl_autotaunt\Automatisches Abspielen einer spöttigen Bemerkung, wenn Gegner gefraggt wurden. +\cl_sound_maptime_warning\Abspielen einer Ansage für die verbleibenden Minuten des Spiels. +\cl_hitsound\Spiele einen Treffer-Sound, wenn der Spieler auf den gezielt wurde, getroffen wurde. +\menu_sounds\Sound abspielen, wenn auf ein Menüitem geklickt wird oder mit dem Mauszeiger auf das Menüitem gezeit wird. + +\XonoticSettingsDialog/Netzwerk\Netzwerk Einstellungen +\cl_movement\Aktiviere die Client-seitige Bewegungssimulation +\cl_nolerp\Enable network update smoothing +\shownetgraph\Anzeige eines Netzwerkgraphens für gesendete/empfangene Pakete und weitere Informationen +\_cl_rate\Gib deine Netzwerkgeschwindigkeit mit dem Schieberegler an. +\cl_netfps\Anzahl der Pakete die pro Sekunde zum Server, mit dem du verbunden bist, geschickt werden sollen. +\cl_curl_maxdownloads\Maximale Anzahl der gleichzeitigen HTTP/FTP Downloads +\cl_curl_maxspeed\Stelle die maximale Download Geschwindigkeit ein. +\cl_port\Stelle den zu verwendenden UDP Port als Client ein. Wenn der Port auf 0 gesetzt ist, wird kein Port erzwungen. + +\XonoticSettingsDialog/Sonstiges\Sonstige Einstellungen, wie Sprache, Menü-Skins +\showtime\Uhrzeit im Spiel anzeigen, geeignet für Screenshots +\showdate\Datum im Spiel anzeigen, geeignet für Screenshots +\showfps\Zeige die gerenderten Frames pro Sekunde +\cl_showspeed\Zeige die Gescheindigkeit des Spielers +\cl_showspeed_unit\Wähle die Einheit, in der die Geschindigkeit angezeigt werden soll, qu/s = in/s +\cl_showacceleration\Zeige die Beschleunigung des Spielers +\cl_showacceleration_scale\Skalierungsfaktor für das Akzelerometer + +\XonoticSettingsDialog/Erweiterte Einstellungen...\Erweiterte Einstellungen, in denen du jede beliebige Variable des Spiels ändern kannst +\g_friendlyfire\Prozentualer Anteil des Schadens, der Mitspielern hinzugefügt wird +\g_mirrordamage\Percentage of teamdamage that will be mirrored to you +\g_tdm_teams_override\Überschreibe die Standardgröße eines Teams in Teammodi + +\cl_teamradar_position\- +\cl_teamradar_size\- +\cl_teamradar_zoommode\- +\cl_teamradar_rotation\- +\cl_teamradar_scale\- +\cl_teamradar_foreground_alpha\- +\cl_teamradar_background_alpha\Wert für die Opazität des Radar-Hintergrunds +\viewsize\Aktiviere/Deaktiviere den HUD-Hintergrund +\sbar_alpha_bg\Wert für die Opazität des HUD-Hintergrunds +\sbar_color_bg_r\Roter Farbanteil des HUD-Hintergrunds +\sbar_color_bg_g\Grüner Farbanteil des HUD-Hintergrunds +\sbar_color_bg_b\Blauer Farbanteil des HUD-Hintergrunds +\sbar_color_bg_team\Team-Farben Sättigung des HUD-Hintergrunds +\cl_hidewaypoints\Lass dir verschiedene Spieltyp spezifische Wegpunkte anzeigen +\g_waypointsprite_scale\Skalierungsfaktor für Wegpunkte +\g_waypointsprite_alpha\Verändere den Wert der Transparenz von der Anzeige der Wegpunkte +\cl_shownames\Lass dir den Namen des Spielers anzeigen auf den du gerade zielst. + +\crosshair_hittest\None: do not do hit tests for the crosshair; TrueAim: blur the crosshair when you would not hit the wall; Enemies: also enlarge the crosshair when you would hit an enemy diff --git a/tooltips.db.fr b/tooltips.db.fr new file mode 100644 index 000000000..cf672c3e4 --- /dev/null +++ b/tooltips.db.fr @@ -0,0 +1,221 @@ +0 +\XonoticSingleplayerDialog\Jouer en mode un joueur contre des adversaires contrôlés par l'ordinateur + + +\XonoticMultiplayerDialog\Jouer en ligne avec des amis en réseau local ou sur Internet +\XonoticMultiplayerDialog/Servers\Trouver des serveurs pour y jouer dessus +\menu_slist_showempty\Montrer les serveurs vides +\menu_slist_showfull\Montrer les serveurs où toutes les places sont prises +\net_slist_pause\Ne met pas à jour la liste de serveurs pour éviter de "glisser" sur un autre serveur +\XonoticMultiplayerDialog/Info\Montrer plus d'information sur le serveur séléctionné +\XonoticMultiplayerDialog/Bookmark\Mettre le serveur en haut de la liste pour pouvoir le repérer plus facilement plus tard +\XonoticMultiplayerDialog/Havoc\Changer au mode Havoc qui comporte des modifications sur le jeu +\XonoticMultiplayerDialog/Create\Héberger votre propre partie +\XonoticMultiplayerDialog/Demos\Regarder des Vidéos pré-enregistrées +\XonoticMultiplayerDialog/Player Setup\Personaliser vos paramètres + +\XonoticTeamSelectDialog/join 'best' team (auto-select)\Auto-séléction de l'équipe qui a le plus besoin de vous (recommandé) +\XonoticTeamSelectDialog/red\Joindre l'équipe rouge +\XonoticTeamSelectDialog/blue\Joindre l'équipe bleue +\XonoticTeamSelectDialog/yellow\Joindre l'équipe jaune +\XonoticTeamSelectDialog/pink\Joindre l'équipe rose + +\timelimit_override\Limite de temps au match, le match se finit quand elle est atteinte +\fraglimit_override\Limite de tués pour le match, le match se finit quand elle est atteinte +\menu_maxplayers\Le nombre maximum de personnes pouvant jouer sur votre serveur en même temps +\bot_number\Nombre d'adversaires ordinateur +\skill\Spécifier la difficulté des adversaires ordinateur +\g_maplist_votable\Le nombre de cartes pouvant être votées à la fin du match +\sv_vote_simple_majority_factor\À partir de 51% de oui seulement, un vote est gagné +\XonoticMultiplayerDialog/Advanced settings...\Paramètres du serveur avancés +\XonoticMultiplayerDialog/Mutators...\Spéciales et arènes d'une seule arme +\g_cloaked\Tous les joueurs sont presque invisibles +\g_footsteps\Activer les bruitages de pas +\g_midair\Il faut que votre adversaire soit en l'air pour lui faire mal +\g_vampire\Les dégâts faits à vos enemies vous font gagner de la santé +\g_bloodloss\Si vous avez moins de santé que spécifié ici, vous perdrez du sang et mourez progressivement +\sv_gravity\Vous tombez plus lentement, comme sur la lune +\g_grappling_hook\Tous les joueurs ont un grappin +\g_jetpack\Tous les joueurs ont un jetpack +\g_pinata\Tous les joueurs lâchent toutes leurs armes quand ils meurent +\g_weapon_stay\Les armes restent où elles sont quand elles sont prises sur la carte +\g_weaponarena\Séléctionner une arène d'une seule arme donne des munitions illimitées pour cette arme, et désactive toutes les autres armes +\menu_weaponarena_with_laser\Also enable the laser in the weapon arena +\g_minstagib\Tous les joueurs reçoivent un MinstaNex, qui est un sniper hyperpuissant qui tue d'un coup. Si vous n'avez plus de munitions, vous mourez progressivement. +\g_nixnex\No Items Xonotic; tous les joueurs ont la même arme en même temps, et on change d'arme régulièrement +\g_nixnex_with_laser\Porter le laser avec l'arme du No Items Xonotic +\XonoticMultiplayerDialog/All\Séléctionner toutes les cartes +\XonoticMultiplayerDialog/None\Déséléctionner toutes les cartes + + +\XonoticMultiplayerDialog/Timedemo\Faire un test de performance en utilisant la vidéo choisie + +\fov\Champ de vision en degrés, par défaut 90, certains joueurs préfèrent entre 110 et 130 +\cl_bobcycle\Effet de "tremblement" de la caméra en courant +\cl_zoomfactor\Facteur de Zoom +\cl_zoomsensitivity\Changer la sensitivité du Zoom: 0 est la plus basse, 1 ne comporte pas de changement par rapport au mode dézoomé +\cl_zoomspeed\Facteur "d'adoucissement" du Zoom, 0 désactive complètement +\XonoticMultiplayerDialog/Weapon settings...\Paramétrer les armes (affichage, priorité) + +\cl_weaponpriority_useforcycling\Utiliser la liste de priorité pour le changement d'armes à la molette +\cl_autoswitch\Automatiquement changer d'arme si vous avez une meilleure arme que celle que vous portez +\r_drawviewmodel\Afficher l'arme à la permière personne +\cl_gunalign\Position de l'arme à l'écran, reconnection au serveur nécessaire pour prendre effet + +\crosshair_per_weapon\Set a different crosshair for each weapon, good if you play without weapon models +\crosshair_color_override\Also set the color of the crosshair depending on the weapon you are currently holding +\crosshair_size\Ajuster la taille du viseur +\crosshair_color_alpha\Ajuster l'opacité du viseur +\crosshair_color_red\Couleur: intensité du rouge dans le viseur +\crosshair_color_green\Couleur: intensité du vert dans le viseur +\crosshair_color_blue\Couleur: intensité du bleu dans le viseur +\sbar_hudselector\Utiliser l'ancienne interface HUD +\XonoticMultiplayerDialog/Radar, HUD & Waypoints...\Ajuster les paramètres de l'interface, de la mini-carte et des Waypoints +\_cl_name\Pseudonyme utilisé pour vous reconnaître dans le jeu + +\XonoticSettingsDialog\Changer les paramètres du jeu +\XonoticCreditsDialog\Les Crédits de Xonotic +\XonoticTeamSelectDialog\- +\XonoticMutatorsDialog\- +\XonoticMapInfoDialog\- +\XonoticUserbindEditDialog\- +\XonoticWinnerDialog\- +\XonoticWeaponsDialog\- +\XonoticRadarDialog\- +\XonoticServerInfoDialog\- +\XonoticCvarsDialog\- + +\XonoticQuitDialog\Quitter Xonotic +\XonoticQuitDialog/Yes\Retour au boulot... +\XonoticQuitDialog/No\'Faut que je fragge plus de monde! + +\XonoticSettingsDialog/Input\Paramètres contrôle souris/clavier +\sensitivity\Sensitivité de la souris +\menu_mouse_speed\Sensitivité de la souris dans les menus, n'affecte pas le jeu +\m_filter\Adoucit le mouvement de souris, mais crée une légère latence de souris +\m_pitch\Inverser la souris sur l'axe vertical (mode jeu d'avion) +\vid_dgamouse\Utiliser une souris DGA +\con_closeontoggleconsole\Autoriser la fermeture de console avec la touche d'ouverture de console (sinon, Shift+Échap) +\sbar_showbinds\Afficher les actions possibles avec des touches/commandes +\cl_showpressedkeys\Afficher les touches qu'un joueur est en train d'appuyer + +\XonoticSettingsDialog/Video\Video settings +\vid_width\Résolution de l'écran +\vid_bitsperpixel\Profondeur des couleurs: 16 bits est plus rapide, mais 32 bits est de meilleure qualité (recommandé) +\vid_fullscreen\Activer le mode plein écran (par défaut: activé) +\vid_vsync\Activer la syncronisation verticale pour éviter des problèmes d'affichage, limite le nombre maximum d'images par seconde (par défaut: désactivé) +\r_glsl\Activer les Shaders OpenGL 2.0 pour des effets de lumière améliorés +\gl_vbo\Utiliser les VBOs pour stocker les modèles 3D statiques dans la mémoire pour une meilleure performance (par défaut: Points et Triangles) +\r_depthfirst\Éviter des problèmes de profondeur de rendu en faisant un rendu de profondeur de la carte/joueurs avant le rendu "standard" (par défaut: désactivé) +\gl_texturecompression\Compresser les textures pour économiser de la mémoire graphique (par défaut: aucun) +\gl_finish\Faire attendre le processeur que le rendu graphique se finisse pour éviter des problèmes d'affichage divers (par défaut: désactivé) +\v_brightness\Luminosité du noir (par défaut: 0) +\v_contrast\Luminosité du blanc (par défaut: 1) +\v_gamma\Correction du gamma ne changeant pas la luminosité du noir ou du blanc (par défaut: 1.125) +\v_contrastboost\Multiplier le constraste dans des salles sombres (par défaut: 1) +\r_glsl_saturation\Ajustement de la saturation (0 = noir et blanc, 1 = normal, 2 = saturé) des couleurs (par défaut: 1) +\v_glslgamma\Utiliser GLSL pour corriger le gamma, attention, cela risque d'augementer fortement l'utilisation de ressources (par défaut: désactivé) +\r_ambient\Lumière ambiente, si elle est trop élévée, les cartes auront un éclairage plus "plat" et moins contrasté +\r_hdr_scenebrightness\Éclairage du rendu global (par défaut: 1) +\vid_samples\Activer l'anticrénelage, réduit l'effet d'escalier sur les modèles 3D, mais augmente fortement l'utilisation des ressources +\v_flipped\Mode mirroir (par défaut: désactivé) + +\XonoticSettingsDialog/Effects\Paramètres des effets graphiques +\r_subdivisions_tolerance\Ajuster la qualité des modèles 3D de carte (courbes, tuyaux) (par défaut: normal) +\gl_picmip\Ajuster la qualité des textures. La baisser diminue l'utilisation des ressources, mais rend les textures floues. (par défaut: normal) +\r_picmipworld\If set, only reduce the texture quality of models (default: enabled) +\mod_q3bsp_nolightmaps\Utiliser des lightmaps haute résolution, augmente l'utilisation des resources, mais rend les lightmaps plus nettes (par défaut: activé) +\cl_particles_quality\Nombre de particules; moins de particules consomment moins de ressources (par défaut: 0.5) +\r_drawparticles_drawdistance\Toutes les particules qui sont plus loin que cette distance ne seront pas affichées (par défaut: 1000) +\cl_decals\Activer les marques d'impacts et de sang (par défaut: activé) +\r_drawdecals_drawdistance\Toutes les marques d'impacts qui sont plus loin que cette distance ne seront pas affichées (par défaut: 300) +\cl_decals_time\Temps en secondes avant que les marques d'impacts disparaissent (par défaut: 2 secondes) +\cl_gentle\Remplacer les effets gore par des effets moins violents (par défaut: désactivé) +\cl_nogibs\Réduire le nombre de Gibs ou les désactiver totalement (par défaut: beaucoup) +\v_kicktime\Faire trembler la vue en recevant des dégâts (par défaut: 0) +\gl_texture_anisotropy\Qualité du filtrage anistrope (par défaut: 1x) +\r_glsl_deluxemapping\Utiliser les effets lumineux avancés (par défaut: activé) +\r_shadow_gloss\Utiliser le reflet des textures (par défaut: activé) +\gl_flashblend\Enable faster but uglier dynamic lights by rendering bright coronas instead of real dynamic lights (default: disabled) +\r_shadow_realtime_dlight\Activer le rendu des lumières dynamiques en temps réel (par défaut: activé) +\r_shadow_realtime_dlight_shadows\Activer le rendu des ombres depuis les lumières dynamiques en temps réel (par défaut: désactivé) +\r_shadow_realtime_world\Activer le rendu des lumières carte en temps réel, a un gros impact sur la performance (par défaut: désactivé) +\r_shadow_realtime_world_shadows\Activer le rendu des ombres depuis les lumières carte en temps réel, a un impact sur la performance aussi (par défaut: désactivé) +\r_shadow_usenormalmap\Utiliser des effets d'ombrage de lumière sur les textures (par défaut: activé) +\r_showsurfaces\Désactiver les textures et les remplacer par des couleurs unies. Utile pour les configurations très faible, mais laid. (par défaut: désactivé) +\r_glsl_offsetmapping\Activer l'effet de relief sur les textures, a un léger impact sur la performance (par défaut: désactivé) +\r_glsl_offsetmapping_reliefmapping\Augmenter la qualité des effets de relief sur les textures, a un gros impact sur la performance (par défaut: désactivé) +\r_water\Activer des reflets de réflecion et de réfraction d'eau et des portails Warpzone (par défaut: désactivé) +\r_water_resolutionmultiplier\Qualité des reflets d'eau et des portails Warpzone, l'augmenter a un gros impact sur la performance (par défaut: bon) +\r_coronas\Activer des effets d'éblouissement peu gourmands (par défaut: activé) +\r_coronas_occlusionquery\Prendre en compte la visibilité pour les effets "Brillance Lumière" (par défaut: activé) +\r_bloom\Activer un effet d'éblouissement plus beau, mais gourmand (par défaut: désactivé) +\r_hdr\Activer un effet d'ébloissement encore plus beau, mais encore plus gourmand (par défaut: désactivé) +\r_motionblur\Intensité du flou de mouvement - 0.5 est recommandé +\r_damageblur\Intensité du flou en recevant des dégâts - 0.4 est recommandé + +\XonoticSettingsDialog/Audio\Audio settings +\bgmvolume\- +\volume\- +\snd_staticvolume\- +\snd_worldchannel0volume\- +\snd_entchannel3volume\- +\snd_playerchannel6volume\- +\snd_playerchannel7volume\- +\snd_entchannel4volume\- +\snd_playerchannel2volume\- +\snd_playerchannel1volume\- +\snd_speed\Fréquence de la sortie audio +\snd_channels\Nombre de canaux pour la sortie audio +\snd_swapstereo\Échanger les canneaux stéréo gauche/droite +\snd_spatialization_control\Essayer de diminuer le "constraste" entre la partie gauche et droite du casque audio pour un meilleur son +\cl_voice_directional\Activer les voix des personnages sur la carte +\cl_voice_directional_taunt_attenuation\Distance à laquelle les voix sont audibles +\cl_autotaunt\Automatiquement narguer les enemis quand vous les tuez +\cl_sound_maptime_warning\Voix (en anglais) qui vous dit le temps restant avant la fin du match +\cl_hitsound\Jouer un son quand vous touchez un enemi +\menu_sounds\Jouer des sons en cliquant ou en passant la souris sur des options + +\XonoticSettingsDialog/Network\Paramètres du jeu en réseau +\cl_movement\Activer la prédiction des mouvements du joueur pour éviter les saccades lors de parties en réseau +\cl_nolerp\Algorithme pour éviter les saccades lors de parties en réseau +\shownetgraph\Show a +\_cl_rate\Specify your network speed with this slider +\cl_netfps\Nombre maximum de paquets à envoyer au server chaque seconde +\cl_curl_maxdownloads\Nombre maximum de téléchargements simultanés +\cl_curl_maxspeed\Vitesse maximum de téléchargement +\cl_port\Forcer le client à passer par le port défini (UDP) s'il n'est pas 0 + +\XonoticSettingsDialog/Misc\Autres paramètres +\showtime\Montrer l'heure, utile pour les captures d'écran +\showdate\Montrer la date, utile pour les captures d'écran +\showfps\Montrer le nombre d'Images Par Seconde rendues (Frames Per Second = FPS) +\cl_showspeed\Montrer la vitesse du joueur +\cl_showspeed_unit\Séléctionner l'unité de mesure de la vitesse (qu/s = in/s) +\cl_showacceleration\Montrer l'accélération du joueur +\cl_showacceleration_scale\Éxagérer l'accéléromètre avec ce facteur pour qu'il soit plus visible + +\XonoticSettingsDialog/Advanced settings...\Paramètres avancés pour configuer le jeu dans ses moindres détails +\g_friendlyfire\Pourcentage de dégâts infligés aux équipiers si vous les touchez +\g_mirrordamage\Pourcentage de dégâts infligés aux équipiers qui vous sera renvoyé +\g_tdm_teams_override\Écraser le nombre d'équipes défini par la carte + +\cl_teamradar_position\- +\cl_teamradar_size\- +\cl_teamradar_zoommode\- +\cl_teamradar_rotation\- +\cl_teamradar_scale\- +\cl_teamradar_foreground_alpha\- +\cl_teamradar_background_alpha\Opacité de l'arrière-plan du radar +\viewsize\Enable/Désactiver l'arrière plan de l'interface +\sbar_alpha_bg\Opacité de l'arrière plan de l'interface +\sbar_color_bg_r\Intensité du rouge dans l'arrière-plan de l'interface +\sbar_color_bg_g\Intensité du vert dans l'arrière-plan de l'interface +\sbar_color_bg_b\Intensité du bleu dans l'arrière-plan de l'interface +\sbar_color_bg_team\Saturation de la couleur d'équipe avec l'arrière-plan de l'interface +\cl_hidewaypoints\Montrer/Cacher les Waypoints (flèches 3D) +\g_waypointsprite_scale\Ajuster la taille des Waypoints +\g_waypointsprite_alpha\Ajuster l'opacité des Waypoints +\cl_shownames\Afficher le nom du joueur que vous pointez avec votre viseur + +\crosshair_hittest\Aucun: aucun effet de viseur - TrueAim: rendre le viseur flou si vous risquez de vous blesser vous même ou un équipier - Enemis: rendre le viseur plus grand si vous pouvez toucher un enemi diff --git a/tooltips.db.ru b/tooltips.db.ru new file mode 100644 index 000000000..c5ba916a1 --- /dev/null +++ b/tooltips.db.ru @@ -0,0 +1,221 @@ +0 +\XonoticSingleplayerDialog\Начать одиночную кампанию или быструю игру против ботов + + +\XonoticMultiplayerDialog\Играть по сети, просмотреть демо или изменить настройки игрока +\XonoticMultiplayerDialog/Servers\Поиск игровых серверов +\menu_slist_showempty\Показывать пустые сервера +\menu_slist_showfull\Показывать полные сервера, не имеющие свободных мест +\net_slist_pause\Приостановить обновление списка серверов для предотвращения их скакания +\XonoticMultiplayerDialog/Info\Показать больше сведений о выбранном сервере +\XonoticMultiplayerDialog/Bookmark\Добавить выбранный сервер в закладки, так найти его будет быстрее +\XonoticMultiplayerDialog/Havoc\Change to Havoc mode which has some modifications to the gameplay +\XonoticMultiplayerDialog/Create\Запустить собственную игру +\XonoticMultiplayerDialog/Demos\Список демо для просмотра +\XonoticMultiplayerDialog/Player Setup\Изменить настройки игрока + +\XonoticTeamSelectDialog/join 'best' team (auto-select)\Автовыбор команды (советуется) +\XonoticTeamSelectDialog/red\Присоединиться к красной команде +\XonoticTeamSelectDialog/blue\Присоединиться к синей команде +\XonoticTeamSelectDialog/yellow\Присоединиться к жёлтой команде +\XonoticTeamSelectDialog/pink\Присоединиться к розовой команде + +\timelimit_override\Ограничение времени в минутах, состязание закончится при его достижении +\fraglimit_override\Количество очков, необходимых для завершения состязания +\menu_maxplayers\Предельное количество игроков и ботов, которые могут быть одновременно подключены к серверу +\bot_number\Количество ботов на сервере +\skill\Насколько искусными будут боты +\g_maplist_votable\Количество карт, предлагаемых в голосовании после состязания +\sv_vote_simple_majority_factor\Простое большинство выигрывает голосование +\XonoticMultiplayerDialog/Advanced settings...\Дополнительные серверные настройки +\XonoticMultiplayerDialog/Mutators...\Мутаторы и арены оружий +\g_cloaked\Все игроки почти невидимы +\g_footsteps\Включить звуки шагов +\g_midair\Только находящиеся в воздухе получают повреждения +\g_vampire\Урон, наносимый противнику, прибавляется к собственному здоровью +\g_bloodloss\Величина здоровья, ниже которой наступает оглушение из-за потери крови +\sv_gravity\Падение происходит медленнее. Чем ниже значение, тем ниже гравитация +\g_grappling_hook\Передвижение и полёты на подтягивающем крюке +\g_jetpack\Полёты на реактивном ранце +\g_pinata\Во время смерти выбрасывается всё оружие, которое нёс "убитый", что даёт возможность его подобрать +\g_weapon_stay\Всё собранное оружие остаётся после возрождений +\g_weaponarena\Selecting a weapon arena will give all players that weapon at spawn as well as unlimited ammo, and disable all other weapon pickups. +\menu_weaponarena_with_laser\Also enable the laser in the weapon arena +\g_minstagib\Players will be given the Minstanex, which is a railgun with infinite damage. If the player runs out of ammo, he will have 10 seconds to find some or if he fails to do so, face death. The secondary fire mode is a laser which does not inflict any damage and is good for doing trickjumps. +\g_nixnex\No items Xonotic - instead of pickup items, everyone plays with the same weapon. After some time, a countdown will start, after which everyone will switch to another weapon. +\g_nixnex_with_laser\Always carry the laser as an additional weapon in NixNex +\XonoticMultiplayerDialog/All\Выбрать все карты +\XonoticMultiplayerDialog/None\Снять выделение со всех карт + + +\XonoticMultiplayerDialog/Timedemo\Замерить, насколько быстро компьютер способен играть выбранное демо + +\fov\Угол обзора в градусах, допустимы значения от 60 то 130, по умолчанию 90 +\cl_bobcycle\Частота качания вида +\cl_zoomfactor\How big the zoom factor is when the zoom button is pressed +\cl_zoomsensitivity\How zoom changes sensitivity, from 0 (lower sensitivity) to 1 (no sensitivity change) +\cl_zoomspeed\How fast the view will be zoomed, disable to zoom instantly +\XonoticMultiplayerDialog/Weapon settings...\Set your most preferred weapons, autoswitch and weapon model settings + +\cl_weaponpriority_useforcycling\Make use of the list above when cycling through weapons with the mouse wheel +\cl_autoswitch\Automatically switch to newly picked up weapons if they are better than what you are carrying +\r_drawviewmodel\Draw the weapon model +\cl_gunalign\Position of the weapon model; requires reconnect + +\crosshair_per_weapon\Set a different crosshair for each weapon, good if you play without weapon models +\crosshair_color_override\Also set the color of the crosshair depending on the weapon you are currently holding +\crosshair_size\Настроить размер перекрестья +\crosshair_color_alpha\Настроить прозрачность перекрестья +\crosshair_color_red\Красная составляющая цвета перекрестья +\crosshair_color_green\Зелёная составляющая цвета перекрестья +\crosshair_color_blue\Синяя составляющая цвета перекрестья +\sbar_hudselector\Use the old HUD layout +\XonoticMultiplayerDialog/Radar, HUD & Waypoints...\Настроить радар, HUD и отметки +\_cl_name\Имя, под которым вы появитесь в игре + +\XonoticSettingsDialog\Изменить настройки игры +\XonoticCreditsDialog\The Xonotic credits +\XonoticTeamSelectDialog\- +\XonoticMutatorsDialog\- +\XonoticMapInfoDialog\- +\XonoticUserbindEditDialog\- +\XonoticWinnerDialog\- +\XonoticWeaponsDialog\- +\XonoticRadarDialog\- +\XonoticServerInfoDialog\- +\XonoticCvarsDialog\- + +\XonoticQuitDialog\Выйти из игры +\XonoticQuitDialog/Yes\Пора саночки возить... +\XonoticQuitDialog/No\Остались здесь ещё дела! + +\XonoticSettingsDialog/Input\Настройки устройств ввода +\sensitivity\Множитель скорости мыши +\menu_mouse_speed\Множитель скорости мыши в меню, не влияет на прицеливание в игре +\m_filter\Сглаживает движения мыши, но значительно ухудшает отзывчивость прицеливания +\m_pitch\Обратить движения мыши по вертикальной оси +\vid_dgamouse\Использовать DGA ввод для мыши +\con_closeontoggleconsole\Использовать привязку для открытия консоли также и для её сокрытия +\sbar_showbinds\Отображать действия / привязанные клавиши в строках, показываемых во время игры +\cl_showpressedkeys\Показывать, какие кнопки движений нажимает игрок + +\XonoticSettingsDialog/Video\Настройки изображения +\vid_width\Разрешение экрана +\vid_bitsperpixel\Сколько бит на точку использовать для вывода, советуется 32 +\vid_fullscreen\Включить полноэкранный режим (по умолчанию: включено) +\vid_vsync\Enable vertical synchronization to prevent tearing, will cap your fps to the screen refresh rate (default: disabled) +\r_glsl\Enable OpenGL 2.0 pixel shaders for lightning (default: enabled) +\gl_vbo\Make use of Vertex Buffer Objects to store static geometry in video memory for faster rendering (default: Vertex and Triangles) +\r_depthfirst\Eliminate overdraw by rendering a depth-only version of the scene before the normal rendering starts (default: disabled) +\gl_texturecompression\Compress the textures for video cards with small amounts of video memory available (default: None) +\gl_finish\Make the CPU wait for the GPU to finish each frame, can help with some strange input or video lag on some machines (default: disabled) +\v_brightness\Яркость чёрного (по умолчанию: 0) +\v_contrast\Яркость белого (по умолчанию: 1) +\v_gamma\Inverse gamma correction value, a brightness effect that does not affect white or black (default: 1.125) +\v_contrastboost\By how much to multiply the contrast in dark areas (default: 1) +\r_glsl_saturation\Saturation adjustment (0 = grayscale, 1 = normal, 2 = oversaturated), requires GLSL color control (default: 1) +\v_glslgamma\Enable use of GLSL to apply gamma correction, note that it might decrease performance by a lot (default: disabled) +\r_ambient\Окружающее освещение, если выставлено слишком сильным, приводит к тому, что свет на картах выглядит блёклым и плоским (по умолчанию: 4) +\r_hdr_scenebrightness\Общая яркость вывода (по умолчанию: 1) +\vid_samples\Enable antialiasing, which smooths the edges of 3D geometry. Note that it might decrease performance by quite a lot (default: disabled) +\v_flipped\Poor man's left handed mode (default: off) + +\XonoticSettingsDialog/Effects\Настройки эффектов +\r_subdivisions_tolerance\Change the smoothness of the curves on the map (default: normal) +\gl_picmip\Change the sharpness of the textures. Lowering it will effectively reduce texture memory usage, but make the textures appear very blurry. (default: good) +\r_picmipworld\If set, only reduce the texture quality of models (default: enabled) +\mod_q3bsp_nolightmaps\Use high resolution lightmaps, which will look pretty but use up some extra video memory (default: enabled) +\cl_particles_quality\Multiplier for amount of particles. Less means less particles, which in turn gives for better performance (default: 0.5) +\r_drawparticles_drawdistance\Particles further away than this will not be drawn (default: 1000) +\cl_decals\Enable decals (bullet holes and blood) (default: enabled) +\r_drawdecals_drawdistance\Decals further away than this will not be drawn (default: 300) +\cl_decals_time\Time in seconds before decals fade away (default: 2) +\cl_gentle\Replace blood and gibs with content that does not have any gore effects (default: disabled) +\cl_nogibs\Reduce the amount of gibs or remove them completely (default: lots) +\v_kicktime\How long a view kick from damage lasts (default: 0) +\gl_texture_anisotropy\Anisotropic filtering quality (default: 1x) +\r_glsl_deluxemapping\Use per-pixel lighting effects (default: enabled) +\r_shadow_gloss\Enable the use of glossmaps on textures supporting it (default: enabled) +\gl_flashblend\Enable faster but uglier dynamic lights by rendering bright coronas instead of real dynamic lights (default: disabled) +\r_shadow_realtime_dlight\Enable rendering of dynamic lights such as explosions and rocket lights (default: enabled) +\r_shadow_realtime_dlight_shadows\Enable rendering of shadows from dynamic lights (default: disabled) +\r_shadow_realtime_world\Enable rendering of full realtime world lighting on maps that support it. Note that this might have a big impact on performance. (default: disabled) +\r_shadow_realtime_world_shadows\Enable rendering of shadows from realtime world lights (default: disabled) +\r_shadow_usenormalmap\Enable use of directional shading on textures (default: enabled) +\r_showsurfaces\Disable textures completely for very slow hardware. This gives a huge performance boost, but looks very ugly. (default: disabled) +\r_glsl_offsetmapping\Offset mapping effect that will make textures with bumpmaps appear like they "pop out" of the flat 2D surface (default: disabled) +\r_glsl_offsetmapping_reliefmapping\Higher quality offset mapping, which also has a huge impact on performance (default: disabled) +\r_water\Reflection and refraction quality, has a huge impact on performance on maps with reflecting surfaces (default: disabled) +\r_water_resolutionmultiplier\Resolution of reflections/refractions (default: good) +\r_coronas\Enable corona flares around certain lights (default: enabled) +\r_coronas_occlusionquery\Fade coronas according to visibility (default: enabled) +\r_bloom\Enable bloom effect, which brightens the neighboring pixels of very bright pixels. Has a big impact on performance. (default: disabled) +\r_hdr\Higher quality version of bloom, which has a huge impact on performance. (default: disabled) +\r_motionblur\Motion blur strength - 0.5 recommended +\r_damageblur\Amount of motion blur when hurt - 0.4 recommended + +\XonoticSettingsDialog/Audio\Настройки звука +\bgmvolume\- +\volume\- +\snd_staticvolume\- +\snd_worldchannel0volume\- +\snd_entchannel3volume\- +\snd_playerchannel6volume\- +\snd_playerchannel7volume\- +\snd_entchannel4volume\- +\snd_playerchannel2volume\- +\snd_playerchannel1volume\- +\snd_speed\Частота дискретизации для вывода звука +\snd_channels\Число каналов для вывода звука +\snd_swapstereo\Поменять местами правый и левый каналы +\snd_spatialization_control\Enable spatialization (blend the right and left channel slightly to decrease stereo separation a bit for headphones) +\cl_voice_directional\Enable directional voices +\cl_voice_directional_taunt_attenuation\Расстояние, с которого будут слышны насмешки +\cl_autotaunt\Автоматически насмехаться над противниками после их поражений +\cl_sound_maptime_warning\Звук предупреждения, сообщающий оставшиеся до конца состязания минуты +\cl_hitsound\Играть звук оповещения, когда выстрел достигает противника +\menu_sounds\Играть звуки при взаимодействии с меню + +\XonoticSettingsDialog/Network\Настройки сети +\cl_movement\Включить предсказание движения на стороне клиента +\cl_nolerp\Enable network update smoothing +\shownetgraph\Показывать график размеров пакетов и других сведений +\_cl_rate\Укажите скорость вашей сети с помощью этого ползунка +\cl_netfps\Сколько пакетов посылать серверу каждую секунду +\cl_curl_maxdownloads\Предел одновременных HTTP/FTP загрузок +\cl_curl_maxspeed\Предел скорости скачивания +\cl_port\Force client to use chosen port unless it is set to 0 + +\XonoticSettingsDialog/Misc\Разные настройки +\showtime\Показывать текущее время, полезно на снимках экранов +\showdate\Показывать текущую дату, полезно на снимках экранов +\showfps\Show your rendered frames per second +\cl_showspeed\Показывать скорость игрока +\cl_showspeed_unit\Выбор единиц измерения спидометра. qu/s = quake units/second = дюйм/секунду +\cl_showacceleration\Показывать ускорение игрока +\cl_showacceleration_scale\Excaggerate the accelerometer by this scale multiplier + +\XonoticSettingsDialog/Advanced settings...\Продвинутые настройки, в которых можно подстроить каждую переменную игры +\g_friendlyfire\Доля урона, получаемого союзниками от союзников +\g_mirrordamage\Доля урона, наносимого союзнику, которая будет отражена на себя +\g_tdm_teams_override\Заменить значение по умолчанию количества команд в командных играх + +\cl_teamradar_position\- +\cl_teamradar_size\- +\cl_teamradar_zoommode\- +\cl_teamradar_rotation\- +\cl_teamradar_scale\- +\cl_teamradar_foreground_alpha\- +\cl_teamradar_background_alpha\Значение прозрачности фона радара +\viewsize\Включить/выключить фон HUD +\sbar_alpha_bg\Значение прозрачности фона HUD +\sbar_color_bg_r\Красная составляющая цвета фона HUD +\sbar_color_bg_g\Зелёная составляющая цвета фона HUD +\sbar_color_bg_b\Синяя составляющая цвета фона HUD +\sbar_color_bg_team\Насыщенность командного цвета фона HUD +\cl_hidewaypoints\Показывать различные отметки, определяемые видом игры +\g_waypointsprite_scale\Множитель размера отметок +\g_waypointsprite_alpha\Управление прозрачностью отметок +\cl_shownames\Показывать имя игрока, в которого вы целитесь + +\crosshair_hittest\Отключена: нет проверок перекрестья на попадание; TrueAim: размывать перекрестье, когда не наведено на стену; Враги: также увеличивать перекрестье, когда наведено на врага diff --git a/update-cvarcount.sh b/update-cvarcount.sh index 0bd63e9fb..b7c87a34a 100755 --- a/update-cvarcount.sh +++ b/update-cvarcount.sh @@ -14,6 +14,7 @@ for b in balance*.cfg; do awk '/^seta? g_/ { print $2; }' "$b" | sort -u | tr -d '\r' > "$B" diff "$A" "$B" | grep '^[<>]' | sort rm -f "$A" "$B" - exit 1 + echo "Please wait for 30 seconds, so you have had enough time to read this..." + sleep 30 fi done diff --git a/xonotic-credits.txt b/xonotic-credits.txt index ec46525c9..4cb860e19 100644 --- a/xonotic-credits.txt +++ b/xonotic-credits.txt @@ -1,7 +1,7 @@ **Core Team Rudolf "divVerent" Polzer --z- +Tyler "-z-" Mulligan Merlijn Hofstra morphed mand1nga @@ -14,7 +14,7 @@ tZork Diabolik a.k.a Dib *2D Art / Web --z- (web / game) +Tyler "-z-" Mulligan (web / game) FruitieX (game / web) *3D Art @@ -22,7 +22,7 @@ morphed *Concept Art LJFHutch -theShadow +Pearce "theShadow" Michal *Level Design FruitieX @@ -42,7 +42,7 @@ FruitieX tZork *Marketing / PR --z- +Tyler "-z-" Mulligan mand1nga *Legal @@ -53,6 +53,27 @@ Merlijn Hofstra DarkPlaces by Forest "LordHavoc" Hale +**Translators + +*German +Rudolf "divVerent" Polzer + +*Finnish +Exitium + +*French +Calinou + +*Portuguese +Ricardo "Hellgardia" Silva + +*Romanian +MirceaKitsune + +*Russian +Lord Canistra +Nikoli + **Active Contributors Antonio "terencehill" Piu Ben "MooKow" Banker @@ -63,7 +84,9 @@ Kristian "morfar" Johansson kojn Maik "SavageX" Merten MrBougo +Ruszkai "C.Brutail" Ákos Samual Lenks +Severin "sev" Meyer Stephan "esteel" Stahl Wolfgang "Blub\0" Bumiller @@ -124,7 +147,6 @@ Rick "Rat" Kelley Robert "ai" Kuroto Ronan Sajt -Severin "sev" Meyer Shaggy Shank Simon O'Callaghan diff --git a/xonotic-credits.txt.fr b/xonotic-credits.txt.fr new file mode 100644 index 000000000..2c53d6aee --- /dev/null +++ b/xonotic-credits.txt.fr @@ -0,0 +1,167 @@ +**Dévlopeurs principaux + +Rudolf "divVerent" Polzer +Tyler "-z-" Mulligan +Merlijn Hofstra +morphed +mand1nga +tZork + + +**Dévlopeurs secondaires + +*Art +Diabolik a.k.a Dib + +*Textures / Web +Tyler "-z-" Mulligan (web / game) +FruitieX (game / web) + +*Modèles 3D +morphed + +*Concepts +LJFHutch +Pearce "theShadow" Michal + +*Création des cartes +FruitieX +MirceaKitsune + +*Musique / Sons +mand1nga +Merlijn Hofstra +remaxim + +*Améliorations du moteur et QA +Rudolf "divVerent" Polzer + +*Code source du jeu +Rudolf "divVerent" Polzer +FruitieX +tZork + +*Marketing / Management du Projet +Tyler "-z-" Mulligan +mand1nga + +*Légalité +Rudolf "divVerent" Polzer +Merlijn Hofstra + +**Moteur du jeu +DarkPlaces +by Forest "LordHavoc" Hale + +**Traducteurs + +*Allemand +Rudolf "divVerent" Polzer + +*Finnish (TODO TRANSLATE THIS) +Exitium + +*Français +Calinou + +*Portugais +Ricardo "Hellgardia" Silva + +*Roumain +MirceaKitsune + +*Russe +Lord Canistra +Nikoli + +**Contribueurs actifs +Antonio "terencehill" Piu +Ben "MooKow" Banker +Calinou +chooksta +Cuinn "Cuinnton" Herrick +Kristian "morfar" Johansson +kojn +Maik "SavageX" Merten +MrBougo +Ruszkai "C.Brutail" Ákos +Samual Lenks +Severin "sev" Meyer +Stephan "esteel" Stahl +Wolfgang "Blub\0" Bumiller + +**Anciens contribueurs +Alexander "motorsep" Zubov +Amos "torus" Dudley +Andreas "Black" Kirsch +Attila "WW3" Houtkooper +BigMac +blkrbt +Braden "meoblast001" Walters +Brain Younds +Chris "amethyst7" Matz +Christian Ice +Clinton "Kaziganthe" Freeman +Dan "Digger" Korostelev +Dan "Wazat" Hale +Donkey +dstrek +Dustin Geeraert +Edgenetwork +Edward "Ed" Holness +Eric "Munyul Verminard" Sambach +Fabien "H. Reaper" Tschirhart +FrikaC +Garth "Zombie" Hendy +Gerd "Elysis" Raudenbusch +Gottfried "Toddd" Hofmann +Henning "Tymo" Janssen +"Innovati" +Jitspoe +Jody Gallagher +Juergen "LowDragon" Timm +KadaverJack +Kevin "Tyrann" Shanahan +Kurt Dereli +lcatlnx +Lee David Ash +Lee Vermeulen +leileilol +Marius "GreEn`mArine" Shekow +Marko "Urre" Permanto +Mathieu "Elric" Olivier +Mattrew "Tronyn" Rye +MauveBib +Mephisto +michaelb +Michael "Tenshihan" Quinn +Munyul +Netzwerg +NoelCower +Parapraxis +Paul "Strahlemann" Evers +Petithomme +Q1 Retexturing Project +Qantourisc +Rick "Rat" Kelley +Robert "ai" Kuroto +Ronan +Sajt +Severin "sev" Meyer +Shaggy +Shank +Simon O'Callaghan +SomeGuy +Spike +Spirit +Steve Vermeulen +Supajoe +Tei +terencehill +Tomaz +Ulrich Galbraith +Vortex +William Libert +William "Willis" Weilep +Yves "EviLair" Allaire +Zenex