From: terencehill Date: Sat, 9 Apr 2011 17:34:08 +0000 (+0200) Subject: Merge branch 'master' into terencehill/screenshot_viewer X-Git-Tag: xonotic-v0.8.0~139^2~1^2~155^2~46 X-Git-Url: http://de.git.xonotic.org/?a=commitdiff_plain;h=6f75b40eeb1ba7aee59806ef1f1cf1d75e4f857e;hp=422afb8e27b123718f19dcaf6c3b807e71b96d04;p=xonotic%2Fxonotic-data.pk3dir.git Merge branch 'master' into terencehill/screenshot_viewer --- diff --git a/.gitattributes b/.gitattributes index ec3bfe3d1..d81668595 100644 --- a/.gitattributes +++ b/.gitattributes @@ -195,6 +195,7 @@ strip crlf=input TMAP -diff -crlf todo crlf=input TODO crlf=input +tooltips.db diff crlf=input *.ttf -diff -crlf *.TTF -diff -crlf *.txt crlf=input diff --git a/balance25.cfg b/balance25.cfg index 361c45d61..482edc142 100644 --- a/balance25.cfg +++ b/balance25.cfg @@ -178,6 +178,7 @@ set g_balance_falldamage_deadminspeed 150 set g_balance_falldamage_minspeed 1400 set g_balance_falldamage_factor 0.15 set g_balance_falldamage_maxdamage 25 +set g_balance_damagepush_speedfactor 0 // }}} // {{{ powerups @@ -243,6 +244,8 @@ set g_balance_laser_secondary_gauntlet 0 set g_balance_laser_secondary_force_zscale 1 set g_balance_laser_secondary_force_velocitybias 0 set g_balance_laser_secondary_force_other_scale 1 +set g_balance_laser_reload_ammo 0 //default: 6 +set g_balance_laser_reload_time 2 // }}} // {{{ shotgun set g_balance_shotgun_primary_bullets 6 @@ -263,6 +266,8 @@ set g_balance_shotgun_secondary_damage 115 set g_balance_shotgun_secondary_force 150 set g_balance_shotgun_secondary_refire 1.1 set g_balance_shotgun_secondary_animtime 1 +set g_balance_shotgun_reload_ammo 0 //default: 5 +set g_balance_shotgun_reload_time 2 // }}} // {{{ uzi set g_balance_uzi_mode 0 // Activates varible spread for sustained & burst mode secondary @@ -294,6 +299,9 @@ set g_balance_uzi_sustained_ammo 1 set g_balance_uzi_speed 18000 set g_balance_uzi_bulletconstant 115 // 13.1qu + +set g_balance_uzi_reload_ammo 0 //default: 30 +set g_balance_uzi_reload_time 2 // }}} // {{{ mortar set g_balance_grenadelauncher_primary_type 0 @@ -334,6 +342,9 @@ set g_balance_grenadelauncher_secondary_remote_detonateprimary 0 set g_balance_grenadelauncher_bouncefactor 0.5 set g_balance_grenadelauncher_bouncestop 0.075 + +set g_balance_grenadelauncher_reload_ammo 0 //default: 12 +set g_balance_grenadelauncher_reload_time 2 // }}} // {{{ minelayer set g_balance_minelayer_damage 35 @@ -343,6 +354,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 @@ -356,6 +368,8 @@ set g_balance_minelayer_remote_damage 45 set g_balance_minelayer_remote_edgedamage 40 set g_balance_minelayer_remote_radius 200 set g_balance_minelayer_remote_force 300 +set g_balance_minelayer_reload_ammo 0 //default: 15 +set g_balance_minelayer_reload_time 2 // }}} // {{{ electro set g_balance_electro_lightning 0 @@ -399,6 +413,8 @@ set g_balance_electro_combo_force 200 set g_balance_electro_combo_radius 250 set g_balance_electro_combo_comboradius 0 set g_balance_electro_combo_speed 2000 +set g_balance_electro_reload_ammo 0 //default: 20 +set g_balance_electro_reload_time 2 // }}} // {{{ crylink set g_balance_crylink_primary_damage 18 @@ -455,6 +471,9 @@ set g_balance_crylink_secondary_middle_lifetime 5 // range: 35000 full, fades to set g_balance_crylink_secondary_middle_fadetime 5 set g_balance_crylink_secondary_line_lifetime 2 // range: 35000 full, fades to 70000 set g_balance_crylink_secondary_line_fadetime 2 + +set g_balance_crylink_reload_ammo 0 //default: 10 +set g_balance_crylink_reload_time 2 // }}} // {{{ nex set g_balance_nex_primary_damage 100 @@ -488,6 +507,7 @@ set g_balance_nex_charge 0 set g_balance_nex_charge_mindmg 40 set g_balance_nex_charge_start 0 set g_balance_nex_charge_rate 0.1 +set g_balance_nex_charge_animlimit 0.5 set g_balance_nex_charge_limit 0.5 set g_balance_nex_charge_rot_rate 0 set g_balance_nex_charge_rot_pause 0 // Dont rot down untill this long after release of charge button @@ -495,11 +515,17 @@ set g_balance_nex_charge_shot_multiplier 0.5 set g_balance_nex_charge_velocity_rate 0.2 set g_balance_nex_charge_minspeed 400 set g_balance_nex_charge_maxspeed 1000 + +set g_balance_nex_reload_ammo 0 //default: 25 +set g_balance_nex_reload_time 2 // }}} // {{{ minstanex set g_balance_minstanex_refire 1 set g_balance_minstanex_animtime 0.3 set g_balance_minstanex_ammo 10 +set g_balance_minstanex_laser_ammo 0 +set g_balance_minstanex_reload_ammo 0 //default: 50 +set g_balance_minstanex_reload_time 2 // }}} // {{{ hagar set g_balance_hagar_primary_damage 37 @@ -522,6 +548,8 @@ set g_balance_hagar_secondary_lifetime_min 30 set g_balance_hagar_secondary_lifetime_rand 0 set g_balance_hagar_secondary_refire 0.15 set g_balance_hagar_secondary_ammo 1 +set g_balance_hagar_reload_ammo 0 //default: 25 +set g_balance_hagar_reload_time 2 // }}} // {{{ rocketlauncher set g_balance_rocketlauncher_damage 105 @@ -547,6 +575,8 @@ set g_balance_rocketlauncher_remote_damage 105 set g_balance_rocketlauncher_remote_edgedamage 40 set g_balance_rocketlauncher_remote_radius 150 set g_balance_rocketlauncher_remote_force 600 +set g_balance_rocketlauncher_reload_ammo 0 //default: 25 +set g_balance_rocketlauncher_reload_time 2 // }}} // {{{ porto set g_balance_porto_primary_refire 1.5 @@ -608,11 +638,11 @@ set g_balance_hlac_secondary_refire 1 set g_balance_hlac_secondary_animtime 0.3 set g_balance_hlac_secondary_ammo 10 set g_balance_hlac_secondary_shots 6 + +set g_balance_hlac_reload_ammo 0 //default: 20 +set g_balance_hlac_reload_time 2 // }}} // {{{ sniperrifle -set g_balance_sniperrifle_magazinecapacity 8 -set g_balance_sniperrifle_reloadtime 2 // matches reload anim -set g_balance_sniperrifle_auto_reload_on_switch 0 set g_balance_sniperrifle_bursttime 0 set g_balance_sniperrifle_primary_tracer 0 set g_balance_sniperrifle_primary_damage 60 @@ -642,6 +672,8 @@ set g_balance_sniperrifle_secondary_ammo 10 set g_balance_sniperrifle_secondary_bulletconstant 130 // 18.3qu set g_balance_sniperrifle_secondary_burstcost 0 set g_balance_sniperrifle_secondary_bullethail 0 // empty magazine on shot +set g_balance_sniperrifle_reload_ammo 80 //default: 80 +set g_balance_sniperrifle_reload_time 2 // }}} // {{{ tuba set g_balance_tuba_refire 0.05 @@ -691,8 +723,11 @@ set g_balance_fireball_secondary_speed 900 set g_balance_fireball_secondary_speed_up 100 set g_balance_fireball_secondary_speed_z 0 set g_balance_fireball_secondary_spread 0 +set g_balance_fireball_reload_ammo 0 //default: 60 +set g_balance_fireball_reload_time 2 // }}} // {{{ seeker +set g_balance_seeker_type 0 // 0 = old seeker, 1 = new seeker. THIS IS A TEMPORARY CVAR FOR TESTING, will be removed later. set g_balance_seeker_flac_ammo 0.5 set g_balance_seeker_flac_animtime 0.1 set g_balance_seeker_flac_damage 15 @@ -741,4 +776,7 @@ set g_balance_seeker_tag_lifetime 15 set g_balance_seeker_tag_refire 0.7 set g_balance_seeker_tag_speed 9000 set g_balance_seeker_tag_spread 0 +set g_balance_seeker_tag_tracker_lifetime 10 +set g_balance_seeker_reload_ammo 0 //default: 15 +set g_balance_seeker_reload_time 2 // End new seeker diff --git a/balanceLeeStricklin.cfg b/balanceLeeStricklin.cfg index 03f58bf36..7232f876c 100644 --- a/balanceLeeStricklin.cfg +++ b/balanceLeeStricklin.cfg @@ -178,6 +178,7 @@ set g_balance_falldamage_deadminspeed 150 set g_balance_falldamage_minspeed 1400 set g_balance_falldamage_factor 0.15 set g_balance_falldamage_maxdamage 25 +set g_balance_damagepush_speedfactor 0 // }}} // {{{ powerups @@ -243,6 +244,8 @@ set g_balance_laser_secondary_gauntlet 1 set g_balance_laser_secondary_force_zscale 1.25 set g_balance_laser_secondary_force_velocitybias 0 set g_balance_laser_secondary_force_other_scale 1 +set g_balance_laser_reload_ammo 0 //default: 6 +set g_balance_laser_reload_time 2 // }}} // {{{ shotgun set g_balance_shotgun_primary_bullets 5 @@ -263,6 +266,8 @@ set g_balance_shotgun_secondary_damage 84 set g_balance_shotgun_secondary_force 147 set g_balance_shotgun_secondary_refire 1.1 set g_balance_shotgun_secondary_animtime 1 +set g_balance_shotgun_reload_ammo 0 //default: 5 +set g_balance_shotgun_reload_time 2 // }}} // {{{ uzi set g_balance_uzi_mode 0 // Activates varible spread for sustained & burst mode secondary @@ -294,6 +299,9 @@ set g_balance_uzi_sustained_ammo 1 set g_balance_uzi_speed 18000 set g_balance_uzi_bulletconstant 300 // 13.1qu + +set g_balance_uzi_reload_ammo 0 //default: 30 +set g_balance_uzi_reload_time 2 // }}} // {{{ mortar set g_balance_grenadelauncher_primary_type 0 @@ -334,6 +342,9 @@ set g_balance_grenadelauncher_secondary_remote_detonateprimary 0 set g_balance_grenadelauncher_bouncefactor 0.7 set g_balance_grenadelauncher_bouncestop 0.12 + +set g_balance_grenadelauncher_reload_ammo 0 //default: 12 +set g_balance_grenadelauncher_reload_time 2 // }}} // {{{ minelayer set g_balance_minelayer_damage 65 @@ -343,6 +354,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.3 set g_balance_minelayer_animtime 0.4 set g_balance_minelayer_ammo 5 @@ -356,6 +368,8 @@ set g_balance_minelayer_remote_damage 45 set g_balance_minelayer_remote_edgedamage 40 set g_balance_minelayer_remote_radius 200 set g_balance_minelayer_remote_force 300 +set g_balance_minelayer_reload_ammo 0 //default: 15 +set g_balance_minelayer_reload_time 2 // }}} // {{{ electro set g_balance_electro_lightning 0 @@ -399,6 +413,8 @@ set g_balance_electro_combo_force 200 set g_balance_electro_combo_radius 250 set g_balance_electro_combo_comboradius 70 set g_balance_electro_combo_speed 400 +set g_balance_electro_reload_ammo 0 //default: 20 +set g_balance_electro_reload_time 2 // }}} // {{{ crylink set g_balance_crylink_primary_damage 23 @@ -455,6 +471,9 @@ set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to set g_balance_crylink_secondary_middle_fadetime 5 set g_balance_crylink_secondary_line_lifetime 2 // range: 4000 full, fades to 8000 set g_balance_crylink_secondary_line_fadetime 2 + +set g_balance_crylink_reload_ammo 0 //default: 10 +set g_balance_crylink_reload_time 2 // }}} // {{{ nex set g_balance_nex_primary_damage 72 @@ -488,6 +507,7 @@ set g_balance_nex_charge 1 set g_balance_nex_charge_mindmg 40 set g_balance_nex_charge_start 0 set g_balance_nex_charge_rate 0.1 +set g_balance_nex_charge_animlimit 0.5 set g_balance_nex_charge_limit 0.5 set g_balance_nex_charge_rot_rate 0 set g_balance_nex_charge_rot_pause 0 // Dont rot down untill this long after release of charge button @@ -495,11 +515,17 @@ set g_balance_nex_charge_shot_multiplier 0 set g_balance_nex_charge_velocity_rate 0.2 set g_balance_nex_charge_minspeed "" set g_balance_nex_charge_maxspeed "" + +set g_balance_nex_reload_ammo 0 //default: 25 +set g_balance_nex_reload_time 2 // }}} // {{{ minstanex set g_balance_minstanex_refire 1 set g_balance_minstanex_animtime 0.278 set g_balance_minstanex_ammo 10 +set g_balance_minstanex_laser_ammo 0 +set g_balance_minstanex_reload_ammo 0 //default: 50 +set g_balance_minstanex_reload_time 2 // }}} // {{{ hagar set g_balance_hagar_primary_damage 43 @@ -522,6 +548,8 @@ set g_balance_hagar_secondary_lifetime_min 5 set g_balance_hagar_secondary_lifetime_rand 0 set g_balance_hagar_secondary_refire 0.15 set g_balance_hagar_secondary_ammo 2 +set g_balance_hagar_reload_ammo 0 //default: 25 +set g_balance_hagar_reload_time 2 // }}} // {{{ rocketlauncher set g_balance_rocketlauncher_damage 65 @@ -547,6 +575,8 @@ set g_balance_rocketlauncher_remote_damage 120 set g_balance_rocketlauncher_remote_edgedamage 46 set g_balance_rocketlauncher_remote_radius 185 set g_balance_rocketlauncher_remote_force 590 +set g_balance_rocketlauncher_reload_ammo 0 //default: 25 +set g_balance_rocketlauncher_reload_time 2 // }}} // {{{ porto set g_balance_porto_primary_refire 1.5 @@ -608,11 +638,11 @@ set g_balance_hlac_secondary_refire 1 set g_balance_hlac_secondary_animtime 0.3 set g_balance_hlac_secondary_ammo 11 set g_balance_hlac_secondary_shots 6 + +set g_balance_hlac_reload_ammo 0 //default: 20 +set g_balance_hlac_reload_time 2 // }}} // {{{ sniperrifle -set g_balance_sniperrifle_magazinecapacity 8 -set g_balance_sniperrifle_reloadtime 2 // matches reload anim -set g_balance_sniperrifle_auto_reload_on_switch 0 set g_balance_sniperrifle_bursttime 0.85 // 0.35 - 0.1 + 0.35 - 0.1 + 0.35 = three secondaries set g_balance_sniperrifle_primary_tracer 0 set g_balance_sniperrifle_primary_damage 75 @@ -642,6 +672,8 @@ set g_balance_sniperrifle_secondary_ammo 10 set g_balance_sniperrifle_secondary_bulletconstant 130 // 18.3qu set g_balance_sniperrifle_secondary_burstcost 0 set g_balance_sniperrifle_secondary_bullethail 0 +set g_balance_sniperrifle_reload_ammo 80 //default: 80 +set g_balance_sniperrifle_reload_time 2 // }}} // {{{ tuba set g_balance_tuba_refire 0.05 @@ -691,8 +723,11 @@ set g_balance_fireball_secondary_speed 650 set g_balance_fireball_secondary_speed_up 0 set g_balance_fireball_secondary_speed_z 0 set g_balance_fireball_secondary_spread 0 +set g_balance_fireball_reload_ammo 0 //default: 60 +set g_balance_fireball_reload_time 2 // }}} // {{{ seeker +set g_balance_seeker_type 0 // 0 = old seeker, 1 = new seeker. THIS IS A TEMPORARY CVAR FOR TESTING, will be removed later. set g_balance_seeker_flac_ammo 0.5 set g_balance_seeker_flac_animtime 0.1 set g_balance_seeker_flac_damage 15 @@ -741,4 +776,7 @@ set g_balance_seeker_tag_lifetime 15 set g_balance_seeker_tag_refire 0.7 set g_balance_seeker_tag_speed 9000 set g_balance_seeker_tag_spread 0 +set g_balance_seeker_tag_tracker_lifetime 10 +set g_balance_seeker_reload_ammo 0 //default: 15 +set g_balance_seeker_reload_time 2 // End new seeker diff --git a/balanceSamual.cfg b/balanceSamual.cfg index 75fa37b37..187362d70 100644 --- a/balanceSamual.cfg +++ b/balanceSamual.cfg @@ -7,45 +7,45 @@ set g_start_weapon_minelayer -1 "0 = never provide the weapon, 1 = always provid set g_start_weapon_electro -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_crylink -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_nex -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_hagar -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_hagar 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" // UNTIL IT CAN BE REMOVED FROM CODE set g_start_weapon_rocketlauncher -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_minstanex -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_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_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_hlac 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" // UNTIL IT CAN BE REMOVED FROM CODE +set g_start_weapon_sniperrifle 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" // UNTIL IT CAN BE REMOVED FROM CODE 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" -set g_balance_health_start 150 +set g_balance_health_start 100 set g_balance_armor_start 0 set g_start_ammo_shells 15 set g_start_ammo_nails 0 set g_start_ammo_rockets 0 set g_start_ammo_cells 0 set g_start_ammo_fuel 0 -set g_warmup_start_health 200 "starting values when being in warmup-stage" +set g_warmup_start_health 100 "starting values when being in warmup-stage" set g_warmup_start_armor 100 "starting values when being in warmup-stage" -set g_warmup_start_ammo_shells 50 "starting values when being in warmup-stage" -set g_warmup_start_ammo_nails 150 "starting values when being in warmup-stage" -set g_warmup_start_ammo_rockets 50 "starting values when being in warmup-stage" -set g_warmup_start_ammo_cells 50 "starting values when being in warmup-stage" +set g_warmup_start_ammo_shells 30 "starting values when being in warmup-stage" +set g_warmup_start_ammo_nails 160 "starting values when being in warmup-stage" +set g_warmup_start_ammo_rockets 80 "starting values when being in warmup-stage" +set g_warmup_start_ammo_cells 90 "starting values when being in warmup-stage" set g_warmup_start_ammo_fuel 0 "starting values when being in warmup-stage" set g_lms_start_health 200 set g_lms_start_armor 200 -set g_lms_start_ammo_shells 120 -set g_lms_start_ammo_nails 400 -set g_lms_start_ammo_rockets 120 -set g_lms_start_ammo_cells 200 +set g_lms_start_ammo_shells 60 +set g_lms_start_ammo_nails 320 +set g_lms_start_ammo_rockets 160 +set g_lms_start_ammo_cells 180 set g_lms_start_ammo_fuel 0 set g_balance_nix_roundtime 25 set g_balance_nix_incrtime 1.6 -set g_balance_nix_ammo_shells 120 -set g_balance_nix_ammo_nails 400 -set g_balance_nix_ammo_rockets 120 -set g_balance_nix_ammo_cells 200 +set g_balance_nix_ammo_shells 60 +set g_balance_nix_ammo_nails 320 +set g_balance_nix_ammo_rockets 160 +set g_balance_nix_ammo_cells 180 set g_balance_nix_ammo_fuel 0 -set g_balance_nix_ammoincr_shells 2 +set g_balance_nix_ammoincr_shells 2 // eh this will need figured out later I assume set g_balance_nix_ammoincr_nails 6 set g_balance_nix_ammoincr_rockets 2 set g_balance_nix_ammoincr_cells 2 @@ -57,21 +57,21 @@ set g_pickup_ammo_anyway 1 set g_pickup_weapons_anyway 1 set g_pickup_shells 15 set g_pickup_shells_weapon 15 -set g_pickup_shells_max 90 +set g_pickup_shells_max 60 set g_pickup_nails 80 set g_pickup_nails_weapon 80 set g_pickup_nails_max 320 set g_pickup_rockets 40 set g_pickup_rockets_weapon 40 set g_pickup_rockets_max 160 -set g_pickup_cells 50 -set g_pickup_cells_weapon 50 -set g_pickup_cells_max 200 +set g_pickup_cells 30 +set g_pickup_cells_weapon 30 +set g_pickup_cells_max 180 set g_pickup_fuel 50 set g_pickup_fuel_weapon 50 set g_pickup_fuel_jetpack 100 set g_pickup_fuel_max 100 -set g_pickup_armorsmall 10 +set g_pickup_armorsmall 5 set g_pickup_armorsmall_max 200 set g_pickup_armorsmall_anyway 1 set g_pickup_armormedium 25 @@ -83,17 +83,17 @@ set g_pickup_armorbig_anyway 1 set g_pickup_armorlarge 100 set g_pickup_armorlarge_max 200 set g_pickup_armorlarge_anyway 1 -set g_pickup_healthsmall 10 -set g_pickup_healthsmall_max 250 +set g_pickup_healthsmall 5 +set g_pickup_healthsmall_max 200 set g_pickup_healthsmall_anyway 1 set g_pickup_healthmedium 25 -set g_pickup_healthmedium_max 250 +set g_pickup_healthmedium_max 200 set g_pickup_healthmedium_anyway 1 set g_pickup_healthlarge 50 -set g_pickup_healthlarge_max 250 +set g_pickup_healthlarge_max 200 set g_pickup_healthlarge_anyway 1 set g_pickup_healthmega 100 -set g_pickup_healthmega_max 250 +set g_pickup_healthmega_max 200 set g_pickup_healthmega_anyway 1 set g_pickup_respawntime_short 15 set g_pickup_respawntime_medium 20 @@ -104,7 +104,7 @@ set g_pickup_respawntime_ammo 10 set g_pickup_respawntimejitter_short 0 set g_pickup_respawntimejitter_medium 0 set g_pickup_respawntimejitter_long 0 -set g_pickup_respawntimejitter_powerup 10 +set g_pickup_respawntimejitter_powerup 30 set g_pickup_respawntimejitter_weapon 0 set g_pickup_respawntimejitter_ammo 0 // }}} @@ -114,18 +114,18 @@ set g_balance_health_regen 0 set g_balance_health_regenlinear 5 set g_balance_pause_health_regen 5 set g_balance_pause_health_regen_spawn 0 -set g_balance_health_rot 0 -set g_balance_health_rotlinear 4 -set g_balance_pause_health_rot 3 +set g_balance_health_rot 0.04 +set g_balance_health_rotlinear 2 +set g_balance_pause_health_rot 0.5 set g_balance_pause_health_rot_spawn 5 set g_balance_health_regenstable 100 -set g_balance_health_rotstable 150 +set g_balance_health_rotstable 100 set g_balance_health_limit 999 set g_balance_armor_regen 0 set g_balance_armor_regenlinear 0 -set g_balance_armor_rot 0 +set g_balance_armor_rot 0.04 set g_balance_armor_rotlinear 2 -set g_balance_pause_armor_rot 3 +set g_balance_pause_armor_rot 1 set g_balance_pause_armor_rot_spawn 5 set g_balance_armor_regenstable 100 set g_balance_armor_rotstable 100 @@ -174,10 +174,11 @@ set g_projectiles_spread_style 7 // 5: forward + circle with 1-r falloff // 6: forward + circle with 1-r^2 falloff // 7: forward + circle with (1-r)(2-r) falloff -set g_balance_falldamage_deadminspeed 150 -set g_balance_falldamage_minspeed 1000 +set g_balance_falldamage_deadminspeed 250 +set g_balance_falldamage_minspeed 900 set g_balance_falldamage_factor 0.20 -set g_balance_falldamage_maxdamage 15 +set g_balance_falldamage_maxdamage 40 +set g_balance_damagepush_speedfactor 2.5 // }}} // {{{ powerups @@ -220,7 +221,7 @@ set g_balance_laser_primary_speed 6000 set g_balance_laser_primary_spread 0 set g_balance_laser_primary_refire 0.7 set g_balance_laser_primary_animtime 0.3 -set g_balance_laser_primary_lifetime 30 +set g_balance_laser_primary_lifetime 5 set g_balance_laser_primary_shotangle 0 set g_balance_laser_primary_delay 0 set g_balance_laser_primary_gauntlet 0 @@ -236,19 +237,21 @@ set g_balance_laser_secondary_speed 12000 set g_balance_laser_secondary_spread 0 set g_balance_laser_secondary_refire 0.7 set g_balance_laser_secondary_animtime 0.3 -set g_balance_laser_secondary_lifetime 30 +set g_balance_laser_secondary_lifetime 5 set g_balance_laser_secondary_shotangle -90 set g_balance_laser_secondary_delay 0 set g_balance_laser_secondary_gauntlet 0 set g_balance_laser_secondary_force_zscale 1.25 set g_balance_laser_secondary_force_velocitybias 0 set g_balance_laser_secondary_force_other_scale 1 +set g_balance_laser_reload_ammo 0 //default: 6 +set g_balance_laser_reload_time 2 // }}} // {{{ shotgun -set g_balance_shotgun_primary_bullets 12 -set g_balance_shotgun_primary_damage 5 +set g_balance_shotgun_primary_bullets 14 +set g_balance_shotgun_primary_damage 4 set g_balance_shotgun_primary_force 15 -set g_balance_shotgun_primary_spread 0.11 +set g_balance_shotgun_primary_spread 0.12 set g_balance_shotgun_primary_refire 0.75 set g_balance_shotgun_primary_animtime 0.2 set g_balance_shotgun_primary_ammo 1 @@ -263,17 +266,19 @@ set g_balance_shotgun_secondary_damage 115 set g_balance_shotgun_secondary_force 150 set g_balance_shotgun_secondary_refire 1.1 set g_balance_shotgun_secondary_animtime 1 +set g_balance_shotgun_reload_ammo 0 //default: 5 +set g_balance_shotgun_reload_time 2 // }}} // {{{ uzi set g_balance_uzi_mode 1 // Activates varible spread for sustained & burst mode secondary set g_balance_uzi_spread_min 0.02 -set g_balance_uzi_spread_max 0.1 +set g_balance_uzi_spread_max 0.06 set g_balance_uzi_spread_add 0.012 set g_balance_uzi_burst 3 // # of bullets in a burst (if set to 2 or more) set g_balance_uzi_burst_animtime 0.3 set g_balance_uzi_burst_refire 0.06 // refire between burst bullets -set g_balance_uzi_burst_refire2 0.75 // refire after burst +set g_balance_uzi_burst_refire2 0.45 // refire after burst set g_balance_uzi_burst_spread 0.03 set g_balance_uzi_burst_damage 25 set g_balance_uzi_burst_force 20 @@ -294,46 +299,52 @@ set g_balance_uzi_sustained_ammo 1 set g_balance_uzi_speed 18000 set g_balance_uzi_bulletconstant 115 // 13.1qu + +set g_balance_uzi_reload_ammo 60 //default: 30 +set g_balance_uzi_reload_time 2 // }}} // {{{ mortar set g_balance_grenadelauncher_primary_type 0 set g_balance_grenadelauncher_primary_damage 50 set g_balance_grenadelauncher_primary_edgedamage 25 -set g_balance_grenadelauncher_primary_force 300 -set g_balance_grenadelauncher_primary_radius 140 -set g_balance_grenadelauncher_primary_speed 2000 -set g_balance_grenadelauncher_primary_speed_up 220 +set g_balance_grenadelauncher_primary_force 250 +set g_balance_grenadelauncher_primary_radius 130 +set g_balance_grenadelauncher_primary_speed 1900 +set g_balance_grenadelauncher_primary_speed_up 225 set g_balance_grenadelauncher_primary_speed_z 0 -set g_balance_grenadelauncher_primary_spread 0 -set g_balance_grenadelauncher_primary_lifetime 30 +set g_balance_grenadelauncher_primary_spread 0.02 +set g_balance_grenadelauncher_primary_lifetime 5 set g_balance_grenadelauncher_primary_lifetime2 1 set g_balance_grenadelauncher_primary_refire 0.8 set g_balance_grenadelauncher_primary_animtime 0.3 set g_balance_grenadelauncher_primary_ammo 2 -set g_balance_grenadelauncher_primary_health 25 -set g_balance_grenadelauncher_primary_damageforcescale 4 +set g_balance_grenadelauncher_primary_health 0 +set g_balance_grenadelauncher_primary_damageforcescale 0 set g_balance_grenadelauncher_primary_remote_minbouncecnt 0 set g_balance_grenadelauncher_secondary_type 1 set g_balance_grenadelauncher_secondary_damage 60 set g_balance_grenadelauncher_secondary_edgedamage 30 -set g_balance_grenadelauncher_secondary_force 300 -set g_balance_grenadelauncher_secondary_radius 140 +set g_balance_grenadelauncher_secondary_force 250 +set g_balance_grenadelauncher_secondary_radius 130 set g_balance_grenadelauncher_secondary_speed 1400 set g_balance_grenadelauncher_secondary_speed_up 150 set g_balance_grenadelauncher_secondary_speed_z 0 -set g_balance_grenadelauncher_secondary_spread 0 +set g_balance_grenadelauncher_secondary_spread 0.02 set g_balance_grenadelauncher_secondary_lifetime 1 set g_balance_grenadelauncher_secondary_lifetime2 0 set g_balance_grenadelauncher_secondary_refire 0.7 set g_balance_grenadelauncher_secondary_animtime 0.3 set g_balance_grenadelauncher_secondary_ammo 2 -set g_balance_grenadelauncher_secondary_health 70 +set g_balance_grenadelauncher_secondary_health 0 set g_balance_grenadelauncher_secondary_damageforcescale 4 set g_balance_grenadelauncher_secondary_remote_detonateprimary 0 set g_balance_grenadelauncher_bouncefactor 0.5 set g_balance_grenadelauncher_bouncestop 0.075 + +set g_balance_grenadelauncher_reload_ammo 0 //default: 12 +set g_balance_grenadelauncher_reload_time 2 // }}} // {{{ minelayer set g_balance_minelayer_damage 40 @@ -341,14 +352,15 @@ set g_balance_minelayer_edgedamage 20 set g_balance_minelayer_force 250 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_speed 1000 +set g_balance_minelayer_lifetime 10 +set g_balance_minelayer_lifetime_countdown 0.5 set g_balance_minelayer_refire 1.5 set g_balance_minelayer_animtime 0.4 -set g_balance_minelayer_ammo 5 +set g_balance_minelayer_ammo 4 set g_balance_minelayer_health 15 -set g_balance_minelayer_limit 4 // 0 disables the limit -set g_balance_minelayer_protection 1 // don't explode if the mine would hurt the owner or a team mate +set g_balance_minelayer_limit 3 // 0 disables the limit +set g_balance_minelayer_protection 0 // 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 set g_balance_minelayer_time 0.5 @@ -356,6 +368,8 @@ set g_balance_minelayer_remote_damage 45 set g_balance_minelayer_remote_edgedamage 40 set g_balance_minelayer_remote_radius 200 set g_balance_minelayer_remote_force 300 +set g_balance_minelayer_reload_ammo 0 //default: 15 +set g_balance_minelayer_reload_time 2 // }}} // {{{ electro set g_balance_electro_lightning 0 @@ -367,7 +381,7 @@ set g_balance_electro_primary_radius 100 set g_balance_electro_primary_comboradius 150 set g_balance_electro_primary_speed 2500 set g_balance_electro_primary_spread 0 -set g_balance_electro_primary_lifetime 30 +set g_balance_electro_primary_lifetime 5 set g_balance_electro_primary_refire 0.6 set g_balance_electro_primary_animtime 0.1 set g_balance_electro_primary_ammo 4 @@ -375,8 +389,8 @@ 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 45 -set g_balance_electro_secondary_edgedamage 22.5 +set g_balance_electro_secondary_damage 40 +set g_balance_electro_secondary_edgedamage 20 set g_balance_electro_secondary_force 200 set g_balance_electro_secondary_radius 150 set g_balance_electro_secondary_speed 900 @@ -385,7 +399,7 @@ set g_balance_electro_secondary_speed_z 0 set g_balance_electro_secondary_spread 0.05 set g_balance_electro_secondary_lifetime 3 set g_balance_electro_secondary_refire 0.2 -set g_balance_electro_secondary_refire2 1.25 +set g_balance_electro_secondary_refire2 1.5 set g_balance_electro_secondary_animtime 0.2 set g_balance_electro_secondary_ammo 2 set g_balance_electro_secondary_health 5 @@ -395,10 +409,12 @@ set g_balance_electro_secondary_bouncefactor 0.5 set g_balance_electro_secondary_bouncestop 0.075 set g_balance_electro_combo_damage 40 set g_balance_electro_combo_edgedamage 20 -set g_balance_electro_combo_force 200 -set g_balance_electro_combo_radius 250 -set g_balance_electro_combo_comboradius 0 +set g_balance_electro_combo_force 120 +set g_balance_electro_combo_radius 175 +set g_balance_electro_combo_comboradius 250 set g_balance_electro_combo_speed 2000 +set g_balance_electro_reload_ammo 0 //default: 20 +set g_balance_electro_reload_time 2 // }}} // {{{ crylink set g_balance_crylink_primary_damage 10 @@ -409,9 +425,9 @@ set g_balance_crylink_primary_speed 1800 set g_balance_crylink_primary_spread 0.075 set g_balance_crylink_primary_shots 7 set g_balance_crylink_primary_bounces 1 -set g_balance_crylink_primary_refire 0.5 +set g_balance_crylink_primary_refire 0.7 set g_balance_crylink_primary_animtime 0.3 -set g_balance_crylink_primary_ammo 4 +set g_balance_crylink_primary_ammo 3 set g_balance_crylink_primary_bouncedamagefactor 0.5 set g_balance_crylink_primary_joindelay 0 set g_balance_crylink_primary_joinspread 0.4 @@ -430,13 +446,13 @@ set g_balance_crylink_primary_other_fadetime 5 set g_balance_crylink_secondary 1 set g_balance_crylink_secondary_damage 5 -set g_balance_crylink_secondary_edgedamage 2.5 +set g_balance_crylink_secondary_edgedamage 0 set g_balance_crylink_secondary_force -40 -set g_balance_crylink_secondary_radius 30 -set g_balance_crylink_secondary_speed 1700 -set g_balance_crylink_secondary_spread 0.03 +set g_balance_crylink_secondary_radius 70 +set g_balance_crylink_secondary_speed 2000 +set g_balance_crylink_secondary_spread 0.02 set g_balance_crylink_secondary_shots 3 -set g_balance_crylink_secondary_bounces 0 +set g_balance_crylink_secondary_bounces 1 set g_balance_crylink_secondary_refire 0.2 set g_balance_crylink_secondary_animtime 0.2 set g_balance_crylink_secondary_ammo 2 @@ -455,17 +471,20 @@ set g_balance_crylink_secondary_middle_lifetime 5 // range: 35000 full, fades to set g_balance_crylink_secondary_middle_fadetime 5 set g_balance_crylink_secondary_line_lifetime 5 set g_balance_crylink_secondary_line_fadetime 5 + +set g_balance_crylink_reload_ammo 0 //default: 10 +set g_balance_crylink_reload_time 2 // }}} // {{{ nex set g_balance_nex_primary_damage 90 set g_balance_nex_primary_force 400 -set g_balance_nex_primary_refire 1.5 +set g_balance_nex_primary_refire 1.25 set g_balance_nex_primary_animtime 0.3 -set g_balance_nex_primary_ammo 5 -set g_balance_nex_primary_damagefalloff_mindist 1000 -set g_balance_nex_primary_damagefalloff_maxdist 3000 -set g_balance_nex_primary_damagefalloff_halflife 1500 -set g_balance_nex_primary_damagefalloff_forcehalflife 1500 +set g_balance_nex_primary_ammo 6 +set g_balance_nex_primary_damagefalloff_mindist 0 // 1000 For tZork ;3 +set g_balance_nex_primary_damagefalloff_maxdist 0 // 3000 +set g_balance_nex_primary_damagefalloff_halflife 0 // 1500 +set g_balance_nex_primary_damagefalloff_forcehalflife 0 // 1500 set g_balance_nex_secondary 0 set g_balance_nex_secondary_charge 0 @@ -487,28 +506,35 @@ set g_balance_nex_secondary_damagefalloff_forcehalflife 0 set g_balance_nex_charge 1 set g_balance_nex_charge_mindmg 40 set g_balance_nex_charge_start 0 -set g_balance_nex_charge_rate 0.2 -set g_balance_nex_charge_limit 0.5 +set g_balance_nex_charge_rate 0.3 +set g_balance_nex_charge_animlimit 0.5 +set g_balance_nex_charge_limit 1 set g_balance_nex_charge_rot_rate 0 set g_balance_nex_charge_rot_pause 0 // Dont rot down untill this long after release of charge button set g_balance_nex_charge_shot_multiplier 0.25 -set g_balance_nex_charge_velocity_rate 0.3 +set g_balance_nex_charge_velocity_rate 0 set g_balance_nex_charge_minspeed 400 set g_balance_nex_charge_maxspeed 800 + +set g_balance_nex_reload_ammo 0 //default: 25 +set g_balance_nex_reload_time 2 // }}} // {{{ minstanex set g_balance_minstanex_refire 1 set g_balance_minstanex_animtime 0.3 set g_balance_minstanex_ammo 10 +set g_balance_minstanex_laser_ammo 0 +set g_balance_minstanex_reload_ammo 0 //default: 50 +set g_balance_minstanex_reload_time 2 // }}} -// {{{ hagar +// {{{ hagar // TO BE REMOVED set g_balance_hagar_primary_damage 30 set g_balance_hagar_primary_edgedamage 15 set g_balance_hagar_primary_force 50 set g_balance_hagar_primary_radius 70 set g_balance_hagar_primary_spread 0.08 set g_balance_hagar_primary_speed 2000 -set g_balance_hagar_primary_lifetime 0.12 +set g_balance_hagar_primary_lifetime 5 set g_balance_hagar_primary_refire 0.15 set g_balance_hagar_primary_ammo 1 set g_balance_hagar_secondary 1 @@ -518,35 +544,39 @@ set g_balance_hagar_secondary_force 100 set g_balance_hagar_secondary_radius 65 set g_balance_hagar_secondary_spread 0.015 set g_balance_hagar_secondary_speed 2000 -set g_balance_hagar_secondary_lifetime_min 30 +set g_balance_hagar_secondary_lifetime_min 10 set g_balance_hagar_secondary_lifetime_rand 0 set g_balance_hagar_secondary_refire 0.15 set g_balance_hagar_secondary_ammo 1 +set g_balance_hagar_reload_ammo 0 //default: 25 +set g_balance_hagar_reload_time 2 // }}} // {{{ rocketlauncher set g_balance_rocketlauncher_damage 80 set g_balance_rocketlauncher_edgedamage 40 set g_balance_rocketlauncher_force 400 set g_balance_rocketlauncher_radius 100 -set g_balance_rocketlauncher_speed 1600 -set g_balance_rocketlauncher_speedaccel 1600 +set g_balance_rocketlauncher_speed 1500 +set g_balance_rocketlauncher_speedaccel 1500 set g_balance_rocketlauncher_speedstart 800 -set g_balance_rocketlauncher_lifetime 30 -set g_balance_rocketlauncher_refire 1.2 +set g_balance_rocketlauncher_lifetime 10 +set g_balance_rocketlauncher_refire 1.1 set g_balance_rocketlauncher_animtime 0.3 -set g_balance_rocketlauncher_ammo 3 -set g_balance_rocketlauncher_health 40 -set g_balance_rocketlauncher_damageforcescale 4 +set g_balance_rocketlauncher_ammo 4 +set g_balance_rocketlauncher_health 0 // 30 // 5 hitpoints above maximum laser value -- this way lasers can't blow it up, but grenadelauncher still can most the time. +set g_balance_rocketlauncher_damageforcescale 1 // low damage force scale so that it can still be affected by other hits, but not so much that it does a 90 degree turn set g_balance_rocketlauncher_detonatedelay 0.05 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time -set g_balance_rocketlauncher_guiderate 140 // max degrees per second +set g_balance_rocketlauncher_guiderate 110 // max degrees per second set g_balance_rocketlauncher_guideratedelay 0.01 // immediate set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic) -set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in +set g_balance_rocketlauncher_guidedelay 0.2 // delay before guiding kicks in set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again set g_balance_rocketlauncher_remote_damage 70 set g_balance_rocketlauncher_remote_edgedamage 35 set g_balance_rocketlauncher_remote_radius 100 set g_balance_rocketlauncher_remote_force 400 +set g_balance_rocketlauncher_reload_ammo 0 //default: 25 +set g_balance_rocketlauncher_reload_time 2 // }}} // {{{ porto set g_balance_porto_primary_refire 1.5 @@ -576,17 +606,17 @@ set g_balance_hook_secondary_animtime 0.3 // 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 // }}} -// {{{ hlac +// {{{ hlac // TO BE REMOVED set g_balance_hlac_primary_spread_min 0.01 set g_balance_hlac_primary_spread_max 0.25 set g_balance_hlac_primary_spread_add 0.0045 set g_balance_hlac_primary_spread_crouchmod 0.25 -set g_balance_hlac_primary_damage 20 -set g_balance_hlac_primary_edgedamage 10 -set g_balance_hlac_primary_force 100 +set g_balance_hlac_primary_damage 18 +set g_balance_hlac_primary_edgedamage 9 +set g_balance_hlac_primary_force 90 set g_balance_hlac_primary_radius 70 -set g_balance_hlac_primary_speed 12000 +set g_balance_hlac_primary_speed 9000 set g_balance_hlac_primary_lifetime 5 set g_balance_hlac_primary_refire 0.15 @@ -597,9 +627,9 @@ set g_balance_hlac_secondary 1 set g_balance_hlac_secondary_spread 0.15 set g_balance_hlac_secondary_spread_crouchmod 0.5 -set g_balance_hlac_secondary_damage 20 -set g_balance_hlac_secondary_edgedamage 10 -set g_balance_hlac_secondary_force 100 +set g_balance_hlac_secondary_damage 15 +set g_balance_hlac_secondary_edgedamage 7.5 +set g_balance_hlac_secondary_force 90 set g_balance_hlac_secondary_radius 70 set g_balance_hlac_secondary_speed 9000 set g_balance_hlac_secondary_lifetime 5 @@ -608,26 +638,26 @@ set g_balance_hlac_secondary_refire 1 set g_balance_hlac_secondary_animtime 0.3 set g_balance_hlac_secondary_ammo 10 set g_balance_hlac_secondary_shots 6 + +set g_balance_hlac_reload_ammo 0 //default: 20 +set g_balance_hlac_reload_time 2 // }}} // {{{ sniperrifle -set g_balance_sniperrifle_magazinecapacity 8 // make it pretty much useless in close combat -set g_balance_sniperrifle_reloadtime 2 // matches reload anim -set g_balance_sniperrifle_auto_reload_on_switch 0 set g_balance_sniperrifle_bursttime 0 set g_balance_sniperrifle_primary_tracer 1 -set g_balance_sniperrifle_primary_damage 50 -set g_balance_sniperrifle_primary_headshotaddeddamage 70 +set g_balance_sniperrifle_primary_damage 60 +set g_balance_sniperrifle_primary_headshotaddeddamage 50 set g_balance_sniperrifle_primary_spread 0 set g_balance_sniperrifle_primary_force 100 set g_balance_sniperrifle_primary_speed 40000 set g_balance_sniperrifle_primary_lifetime 5 -set g_balance_sniperrifle_primary_refire 1 -set g_balance_sniperrifle_primary_animtime 0.5 +set g_balance_sniperrifle_primary_refire 1.5 +set g_balance_sniperrifle_primary_animtime 0.7 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 0 // Nex and sniper rifle should never be on the same map, so this (zoom on secondary) is okay set g_balance_sniperrifle_secondary_reload 0 set g_balance_sniperrifle_secondary_tracer 0 set g_balance_sniperrifle_secondary_damage 25 @@ -642,6 +672,8 @@ set g_balance_sniperrifle_secondary_ammo 10 set g_balance_sniperrifle_secondary_bulletconstant 110 // 15.5qu set g_balance_sniperrifle_secondary_burstcost 0 set g_balance_sniperrifle_secondary_bullethail 0 // empty magazine on shot +set g_balance_sniperrifle_reload_ammo 80 //default: 80 +set g_balance_sniperrifle_reload_time 2 // }}} // {{{ tuba set g_balance_tuba_refire 0.05 @@ -654,26 +686,26 @@ set g_balance_tuba_edgedamage 0 set g_balance_tuba_radius 200 set g_balance_tuba_force 40 // }}} -// {{{ fireball -set g_balance_fireball_primary_ammo 40 -set g_balance_fireball_primary_animtime 0.15 +// {{{ fireball // this is a superweapon -- lets make it behave as one. +set g_balance_fireball_primary_ammo 20 +set g_balance_fireball_primary_animtime 0.2 set g_balance_fireball_primary_bfgdamage 100 set g_balance_fireball_primary_bfgforce 0 set g_balance_fireball_primary_bfgradius 1000 set g_balance_fireball_primary_damage 200 -set g_balance_fireball_primary_damageforcescale 4 -set g_balance_fireball_primary_edgedamage 0 -set g_balance_fireball_primary_force 700 -set g_balance_fireball_primary_health 50 +set g_balance_fireball_primary_damageforcescale 0 +set g_balance_fireball_primary_edgedamage 50 +set g_balance_fireball_primary_force 600 +set g_balance_fireball_primary_health 0 set g_balance_fireball_primary_laserburntime 0.5 set g_balance_fireball_primary_laserdamage 80 set g_balance_fireball_primary_laseredgedamage 20 set g_balance_fireball_primary_laserradius 256 set g_balance_fireball_primary_lifetime 15 set g_balance_fireball_primary_radius 200 -set g_balance_fireball_primary_refire 5 +set g_balance_fireball_primary_refire 2 set g_balance_fireball_primary_refire2 0 -set g_balance_fireball_primary_speed 650 +set g_balance_fireball_primary_speed 1200 set g_balance_fireball_primary_spread 0 set g_balance_fireball_secondary_ammo 5 set g_balance_fireball_secondary_animtime 0.3 @@ -686,59 +718,65 @@ set g_balance_fireball_secondary_laserdamage 50 set g_balance_fireball_secondary_laseredgedamage 20 set g_balance_fireball_secondary_laserradius 110 set g_balance_fireball_secondary_lifetime 7 -set g_balance_fireball_secondary_refire 2 +set g_balance_fireball_secondary_refire 1.5 set g_balance_fireball_secondary_speed 900 set g_balance_fireball_secondary_speed_up 100 set g_balance_fireball_secondary_speed_z 0 set g_balance_fireball_secondary_spread 0 +set g_balance_fireball_reload_ammo 0 //default: 100 +set g_balance_fireball_reload_time 2 // }}} // {{{ seeker -set g_balance_seeker_flac_ammo 1 +set g_balance_seeker_type 1 // 0 = old seeker, 1 = new seeker. THIS IS A TEMPORARY CVAR FOR TESTING, will be removed later. +set g_balance_seeker_flac_ammo 0.5 set g_balance_seeker_flac_animtime 0.1 -set g_balance_seeker_flac_damage 20 +set g_balance_seeker_flac_damage 15 set g_balance_seeker_flac_edgedamage 10 set g_balance_seeker_flac_force 50 -set g_balance_seeker_flac_lifetime 30 -set g_balance_seeker_flac_lifetime_rand 0 -set g_balance_seeker_flac_radius 70 -set g_balance_seeker_flac_refire 0.2 +set g_balance_seeker_flac_lifetime 0.1 +set g_balance_seeker_flac_lifetime_rand 0.05 +set g_balance_seeker_flac_radius 100 +set g_balance_seeker_flac_refire 0.1 set g_balance_seeker_flac_speed 3000 -set g_balance_seeker_flac_speed_up 0 +set g_balance_seeker_flac_speed_up 1000 set g_balance_seeker_flac_speed_z 0 -set g_balance_seeker_flac_spread 0.05 -set g_balance_seeker_missile_accel 3000 +set g_balance_seeker_flac_spread 0.4 +set g_balance_seeker_tag_ammo 1 +set g_balance_seeker_tag_animtime 0.2 +set g_balance_seeker_tag_damageforcescale 0 +set g_balance_seeker_tag_health 0 +set g_balance_seeker_tag_lifetime 15 +set g_balance_seeker_tag_refire 0.75 // LOG: 0.7 -> 0.75 +set g_balance_seeker_tag_speed 5000 +set g_balance_seeker_tag_spread 0 +set g_balance_seeker_tag_tracker_lifetime 10 +set g_balance_seeker_missile_accel 1500 set g_balance_seeker_missile_ammo 2 -set g_balance_seeker_missile_animtime 0.3 -set g_balance_seeker_missile_count 4 -set g_balance_seeker_missile_damage 40 +set g_balance_seeker_missile_animtime 0.2 +set g_balance_seeker_missile_count 3 // LOG: 8 -> 3 +set g_balance_seeker_missile_damage 16 // LOG: 15 -> 30 set g_balance_seeker_missile_damageforcescale 4 set g_balance_seeker_missile_decel 6000 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_health 5 +set g_balance_seeker_missile_edgedamage 8 +set g_balance_seeker_missile_force 50 // LOG: 100 -> 150 +set g_balance_seeker_missile_health 1 set g_balance_seeker_missile_lifetime 15 set g_balance_seeker_missile_proxy 0 set g_balance_seeker_missile_proxy_delay 0.2 set g_balance_seeker_missile_proxy_maxrange 45 -set g_balance_seeker_missile_radius 80 -set g_balance_seeker_missile_refire 0.5 -set g_balance_seeker_missile_smart 1 +set g_balance_seeker_missile_radius 70 +set g_balance_seeker_missile_refire 0.25 +set g_balance_seeker_missile_smart 0 set g_balance_seeker_missile_smart_mindist 800 set g_balance_seeker_missile_smart_trace_max 2500 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 1500 +set g_balance_seeker_missile_speed_up 0 set g_balance_seeker_missile_speed_z 0 -set g_balance_seeker_missile_speed_max 1250 +set g_balance_seeker_missile_speed_max 2000 // 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_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_speed 9000 -set g_balance_seeker_tag_spread 0 +set g_balance_seeker_missile_turnrate 0.15 +set g_balance_seeker_reload_ammo 0 //default: 15 +set g_balance_seeker_reload_time 2 // End new seeker diff --git a/balanceXonotic.cfg b/balanceXonotic.cfg index 53f98d57b..55dde194b 100644 --- a/balanceXonotic.cfg +++ b/balanceXonotic.cfg @@ -78,7 +78,7 @@ set g_pickup_armormedium 25 set g_pickup_armormedium_max 50 set g_pickup_armormedium_anyway 0 set g_pickup_armorbig 50 -set g_pickup_armorbig_max 50 +set g_pickup_armorbig_max 75; // LOG: to allow a little more armor from medium armor set g_pickup_armorbig_anyway 0 set g_pickup_armorlarge 100 set g_pickup_armorlarge_max 150 @@ -153,8 +153,8 @@ set g_weaponforcefactor 1 "weapon force multiplier" set g_weaponspreadfactor 1 "weapon spread multiplier" set g_balance_firetransfer_time 0.9 set g_balance_firetransfer_damage 0.8 -set g_throughfloor_damage 0.5 -set g_throughfloor_force 0.7 +set g_throughfloor_damage 0.7 +set g_throughfloor_force 0.8 set g_projectiles_newton_style 2 // possible values: // 0: absolute velocity projectiles (like Quake) @@ -178,6 +178,7 @@ set g_balance_falldamage_deadminspeed 150 set g_balance_falldamage_minspeed 800 set g_balance_falldamage_factor 0.20 set g_balance_falldamage_maxdamage 15 +set g_balance_damagepush_speedfactor 2.5 // }}} // {{{ powerups @@ -243,12 +244,14 @@ set g_balance_laser_secondary_gauntlet 1 set g_balance_laser_secondary_force_zscale 1.25 set g_balance_laser_secondary_force_velocitybias 0 set g_balance_laser_secondary_force_other_scale 0 +set g_balance_laser_reload_ammo 0 //default: 6 +set g_balance_laser_reload_time 2 // }}} // {{{ shotgun set g_balance_shotgun_primary_bullets 18 -set g_balance_shotgun_primary_damage 4 +set g_balance_shotgun_primary_damage 3.5 // LOG: changed from 4 to 3.5, total damage 63 set g_balance_shotgun_primary_force 20 -set g_balance_shotgun_primary_spread 0.18 +set g_balance_shotgun_primary_spread 0.16 // LOG: changed from 0.18 -> 0.16 to compensate a little for lower damage set g_balance_shotgun_primary_refire 1 set g_balance_shotgun_primary_animtime 0.3 set g_balance_shotgun_primary_ammo 1 @@ -263,11 +266,13 @@ set g_balance_shotgun_secondary_damage 110 set g_balance_shotgun_secondary_force 150 set g_balance_shotgun_secondary_refire 1.1 set g_balance_shotgun_secondary_animtime 1 +set g_balance_shotgun_reload_ammo 0 //default: 5 +set g_balance_shotgun_reload_time 2 // }}} // {{{ uzi set g_balance_uzi_mode 1 // Activates varible spread for sustained & burst mode secondary 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) @@ -280,7 +285,7 @@ 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 22 +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 @@ -294,6 +299,9 @@ set g_balance_uzi_sustained_ammo 1 set g_balance_uzi_speed 18000 set g_balance_uzi_bulletconstant 115 // 13.1qu + +set g_balance_uzi_reload_ammo 0 //default: 30 +set g_balance_uzi_reload_time 2 // }}} // {{{ mortar set g_balance_grenadelauncher_primary_type 0 @@ -334,6 +342,9 @@ set g_balance_grenadelauncher_secondary_remote_detonateprimary 0 set g_balance_grenadelauncher_bouncefactor 0.5 set g_balance_grenadelauncher_bouncestop 0.12 + +set g_balance_grenadelauncher_reload_ammo 0 //default: 12 +set g_balance_grenadelauncher_reload_time 2 // }}} // {{{ minelayer set g_balance_minelayer_damage 42 @@ -343,11 +354,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.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,6 +368,8 @@ set g_balance_minelayer_remote_damage 45 set g_balance_minelayer_remote_edgedamage 40 set g_balance_minelayer_remote_radius 200 set g_balance_minelayer_remote_force 300 +set g_balance_minelayer_reload_ammo 0 //default: 15 +set g_balance_minelayer_reload_time 2 // }}} // {{{ electro set g_balance_electro_lightning 1 @@ -399,11 +413,13 @@ set g_balance_electro_combo_force 80 set g_balance_electro_combo_radius 250 set g_balance_electro_combo_comboradius 0 set g_balance_electro_combo_speed 400 +set g_balance_electro_reload_ammo 0 //default: 20 +set g_balance_electro_reload_time 2 // }}} // {{{ crylink -set g_balance_crylink_primary_damage 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 @@ -429,18 +445,18 @@ 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 8 +set g_balance_crylink_secondary_damage 5 // LOG: 8 -> 5 set g_balance_crylink_secondary_edgedamage 3 -set g_balance_crylink_secondary_force 20 -set g_balance_crylink_secondary_radius 20 -set g_balance_crylink_secondary_speed 1500 +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.8 +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 2 -set g_balance_crylink_secondary_bouncedamagefactor 0.2 +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 @@ -449,12 +465,15 @@ 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 0.25 + +set g_balance_crylink_reload_ammo 0 //default: 10 +set g_balance_crylink_reload_time 2 // }}} // {{{ nex set g_balance_nex_primary_damage 90 @@ -467,8 +486,8 @@ 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.25 @@ -488,18 +507,25 @@ 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_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 set g_balance_nex_charge_maxspeed 1000 + +set g_balance_nex_reload_ammo 0 //default: 25 +set g_balance_nex_reload_time 2 // }}} // {{{ minstanex set g_balance_minstanex_refire 1 set g_balance_minstanex_animtime 0.50 set g_balance_minstanex_ammo 10 +set g_balance_minstanex_laser_ammo 0 +set g_balance_minstanex_reload_ammo 0 //default: 50 +set g_balance_minstanex_reload_time 2 // }}} // {{{ hagar set g_balance_hagar_primary_damage 14 @@ -522,6 +548,8 @@ set g_balance_hagar_secondary_lifetime_min 5 set g_balance_hagar_secondary_lifetime_rand 0 set g_balance_hagar_secondary_refire 0.12 set g_balance_hagar_secondary_ammo 1 +set g_balance_hagar_reload_ammo 0 //default: 25 +set g_balance_hagar_reload_time 2 // }}} // {{{ rocketlauncher set g_balance_rocketlauncher_damage 82 @@ -547,6 +575,8 @@ set g_balance_rocketlauncher_remote_damage 60 set g_balance_rocketlauncher_remote_edgedamage 20 set g_balance_rocketlauncher_remote_radius 120 set g_balance_rocketlauncher_remote_force 350 +set g_balance_rocketlauncher_reload_ammo 0 //default: 25 +set g_balance_rocketlauncher_reload_time 2 // }}} // {{{ porto set g_balance_porto_primary_refire 1.5 @@ -608,11 +638,11 @@ set g_balance_hlac_secondary_refire 0.8 set g_balance_hlac_secondary_animtime 0.4 set g_balance_hlac_secondary_ammo 4 set g_balance_hlac_secondary_shots 6 + +set g_balance_hlac_reload_ammo 0 //default: 20 +set g_balance_hlac_reload_time 2 // }}} // {{{ sniperrifle -set g_balance_sniperrifle_magazinecapacity 8 // make it pretty much useless in close combat -set g_balance_sniperrifle_reloadtime 2 // matches reload anim -set g_balance_sniperrifle_auto_reload_on_switch 0 set g_balance_sniperrifle_bursttime 0 set g_balance_sniperrifle_primary_tracer 1 set g_balance_sniperrifle_primary_damage 60 @@ -642,6 +672,8 @@ set g_balance_sniperrifle_secondary_ammo 10 set g_balance_sniperrifle_secondary_bulletconstant 110 // 15.5qu set g_balance_sniperrifle_secondary_burstcost 0 set g_balance_sniperrifle_secondary_bullethail 0 // empty magazine on shot +set g_balance_sniperrifle_reload_ammo 80 //default: 80 +set g_balance_sniperrifle_reload_time 2 // }}} // {{{ tuba set g_balance_tuba_refire 0.05 @@ -691,8 +723,11 @@ set g_balance_fireball_secondary_speed 900 set g_balance_fireball_secondary_speed_up 100 set g_balance_fireball_secondary_speed_z 0 set g_balance_fireball_secondary_spread 0 +set g_balance_fireball_reload_ammo 0 //default: 60 +set g_balance_fireball_reload_time 2 // }}} // {{{ seeker +set g_balance_seeker_type 0 // 0 = old seeker, 1 = new seeker. THIS IS A TEMPORARY CVAR FOR TESTING, will be removed later. set g_balance_seeker_flac_ammo 0.5 set g_balance_seeker_flac_animtime 0.1 set g_balance_seeker_flac_damage 15 @@ -709,13 +744,13 @@ 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.2 -set g_balance_seeker_missile_count 8 -set g_balance_seeker_missile_damage 15 +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 100 +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 @@ -730,7 +765,7 @@ 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 @@ -738,7 +773,10 @@ 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 +set g_balance_seeker_tag_tracker_lifetime 10 +set g_balance_seeker_reload_ammo 0 //default: 15 +set g_balance_seeker_reload_time 2 // End new seeker diff --git a/balancetZork.cfg b/balancetZork.cfg index 87612d234..72f938ba5 100644 --- a/balancetZork.cfg +++ b/balancetZork.cfg @@ -178,6 +178,7 @@ set g_balance_falldamage_deadminspeed 150 set g_balance_falldamage_minspeed 800 set g_balance_falldamage_factor 0.02 // maxspeed = minspeed + maxdamage / factor = 4550 set g_balance_falldamage_maxdamage 75 +set g_balance_damagepush_speedfactor 0 // }}} // {{{ powerups @@ -243,6 +244,8 @@ set g_balance_laser_secondary_gauntlet 0 set g_balance_laser_secondary_force_zscale 1 set g_balance_laser_secondary_force_velocitybias 0 set g_balance_laser_secondary_force_other_scale 1 +set g_balance_laser_reload_ammo 0 //default: 6 +set g_balance_laser_reload_time 2 // }}} // {{{ shotgun set g_balance_shotgun_primary_bullets 10 @@ -263,6 +266,8 @@ set g_balance_shotgun_secondary_damage 110 set g_balance_shotgun_secondary_force 150 set g_balance_shotgun_secondary_refire 1.1 set g_balance_shotgun_secondary_animtime 1 +set g_balance_shotgun_reload_ammo 0 //default: 5 +set g_balance_shotgun_reload_time 2 // }}} // {{{ uzi set g_balance_uzi_mode 1 // Activates varible spread for sustained & burst mode secondary @@ -294,6 +299,9 @@ set g_balance_uzi_sustained_ammo 1 set g_balance_uzi_speed 18000 set g_balance_uzi_bulletconstant 115 // 13.1qu + +set g_balance_uzi_reload_ammo 0 //default: 30 +set g_balance_uzi_reload_time 2 // }}} // {{{ mortar set g_balance_grenadelauncher_primary_type 0 @@ -334,6 +342,9 @@ set g_balance_grenadelauncher_secondary_remote_detonateprimary 0 set g_balance_grenadelauncher_bouncefactor 0.5 set g_balance_grenadelauncher_bouncestop 0.075 + +set g_balance_grenadelauncher_reload_ammo 0 //default: 12 +set g_balance_grenadelauncher_reload_time 2 // }}} // {{{ minelayer set g_balance_minelayer_damage 35 @@ -343,6 +354,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 @@ -356,6 +368,8 @@ set g_balance_minelayer_remote_damage 45 set g_balance_minelayer_remote_edgedamage 40 set g_balance_minelayer_remote_radius 200 set g_balance_minelayer_remote_force 300 +set g_balance_minelayer_reload_ammo 0 //default: 15 +set g_balance_minelayer_reload_time 2 // }}} // {{{ electro set g_balance_electro_lightning 0 @@ -399,6 +413,8 @@ set g_balance_electro_combo_force 150 set g_balance_electro_combo_radius 250 set g_balance_electro_combo_comboradius 0 set g_balance_electro_combo_speed 1000 +set g_balance_electro_reload_ammo 0 //default: 20 +set g_balance_electro_reload_time 2 // }}} // {{{ crylink set g_balance_crylink_primary_damage 5 @@ -455,6 +471,8 @@ set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to set g_balance_crylink_secondary_middle_fadetime 5 set g_balance_crylink_secondary_line_lifetime 2 // range: 4000 full, fades to 8000 set g_balance_crylink_secondary_line_fadetime 2 +set g_balance_crylink_reload_ammo 0 //default: 10 +set g_balance_crylink_reload_time 2 // }}} // {{{ nex set g_balance_nex_primary_damage 100 @@ -488,6 +506,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 @@ -495,11 +514,17 @@ set g_balance_nex_charge_shot_multiplier 0 set g_balance_nex_charge_velocity_rate 0 set g_balance_nex_charge_minspeed 400 set g_balance_nex_charge_maxspeed 1000 + +set g_balance_nex_reload_ammo 0 //default: 25 +set g_balance_nex_reload_time 2 // }}} // {{{ minstanex set g_balance_minstanex_refire 1 set g_balance_minstanex_animtime 0.3 set g_balance_minstanex_ammo 10 +set g_balance_minstanex_laser_ammo 0 +set g_balance_minstanex_reload_ammo 0 //default: 50 +set g_balance_minstanex_reload_time 2 // }}} // {{{ hagar set g_balance_hagar_primary_damage 25 @@ -522,6 +547,8 @@ set g_balance_hagar_secondary_lifetime_min 30 set g_balance_hagar_secondary_lifetime_rand 0 set g_balance_hagar_secondary_refire 0.15 set g_balance_hagar_secondary_ammo 1 +set g_balance_hagar_reload_ammo 0 //default: 25 +set g_balance_hagar_reload_time 2 // }}} // {{{ rocketlauncher set g_balance_rocketlauncher_damage 120 @@ -547,6 +574,8 @@ set g_balance_rocketlauncher_remote_damage 90 set g_balance_rocketlauncher_remote_edgedamage 20 set g_balance_rocketlauncher_remote_radius 125 set g_balance_rocketlauncher_remote_force 350 +set g_balance_rocketlauncher_reload_ammo 0 //default: 25 +set g_balance_rocketlauncher_reload_time 2 // }}} // {{{ porto set g_balance_porto_primary_refire 1.5 @@ -608,11 +637,11 @@ set g_balance_hlac_secondary_refire 1 set g_balance_hlac_secondary_animtime 0.7 set g_balance_hlac_secondary_ammo 10 set g_balance_hlac_secondary_shots 6 + +set g_balance_hlac_reload_ammo 0 //default: 20 +set g_balance_hlac_reload_time 2 // }}} // {{{ sniperrifle -set g_balance_sniperrifle_magazinecapacity 8 // make it pretty much useless in close combat -set g_balance_sniperrifle_reloadtime 2 // matches reload anim -set g_balance_sniperrifle_auto_reload_on_switch 0 set g_balance_sniperrifle_bursttime 0 set g_balance_sniperrifle_primary_tracer 1 set g_balance_sniperrifle_primary_damage 40 @@ -642,6 +671,8 @@ set g_balance_sniperrifle_secondary_ammo 10 set g_balance_sniperrifle_secondary_bulletconstant 110 // 15.5qu set g_balance_sniperrifle_secondary_burstcost 0 set g_balance_sniperrifle_secondary_bullethail 0 // empty magazine on shot +set g_balance_sniperrifle_reload_ammo 80 //default: 80 +set g_balance_sniperrifle_reload_time 2 // }}} // {{{ tuba set g_balance_tuba_refire 0.05 @@ -691,8 +722,11 @@ set g_balance_fireball_secondary_speed 900 set g_balance_fireball_secondary_speed_up 100 set g_balance_fireball_secondary_speed_z 0 set g_balance_fireball_secondary_spread 0 +set g_balance_fireball_reload_ammo 0 //default: 60 +set g_balance_fireball_reload_time 2 // }}} // {{{ seeker +set g_balance_seeker_type 0 // 0 = old seeker, 1 = new seeker. THIS IS A TEMPORARY CVAR FOR TESTING, will be removed later. set g_balance_seeker_flac_ammo 0.5 set g_balance_seeker_flac_animtime 0.1 set g_balance_seeker_flac_damage 15 @@ -741,4 +775,7 @@ set g_balance_seeker_tag_lifetime 15 set g_balance_seeker_tag_refire 1 set g_balance_seeker_tag_speed 9000 set g_balance_seeker_tag_spread 0 +set g_balance_seeker_tag_tracker_lifetime 10 +set g_balance_seeker_reload_ammo 0 //default: 15 +set g_balance_seeker_reload_time 2 // End new seeker diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 8fa273a1d..bddddb12e 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" @@ -181,14 +185,16 @@ 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_size 2 "bullet counter ring size for Rifle, velocity ring for Nex" +seta crosshair_ring 1 "main cvar to enable or disable normal crosshair rings" +seta crosshair_ring_inner 0 "allow inner rings to be drawn too" +seta crosshair_ring_size 2 "ring size" seta crosshair_ring_alpha 0.2 "ring alpha" -seta crosshair_ring_sniperrifle_alpha 0.15 - -seta crosshair_ring_nex_outer_alpha 0.15 +seta crosshair_ring_nex 1 "draw a ring showing the current charge of the nexgun" +seta crosshair_ring_nex_alpha 0.15 seta crosshair_ring_nex_inner_alpha 0.15 seta crosshair_ring_nex_inner_color_red 0.8 seta crosshair_ring_nex_inner_color_green 0 @@ -196,9 +202,16 @@ seta crosshair_ring_nex_inner_color_blue 0 seta crosshair_ring_nex_currentcharge_scale 30 seta crosshair_ring_nex_currentcharge_movingavg_rate 0.05 +seta crosshair_ring_minelayer 1 +seta crosshair_ring_minelayer_alpha 0.15 + +seta crosshair_ring_reload 1 "main cvar to enable or disable ammo crosshair rings" +seta crosshair_ring_reload_size 2.5 "reload ring size" +seta crosshair_ring_reload_alpha 0.2 "reload ring alpha" + seta cl_reticle_stretch 0 "whether to stretch reticles so they fit the screen (brakes image proportions)" -seta cl_reticle_item_nex 1 "draw aiming 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" @@ -228,6 +241,7 @@ vid_conheight 600 v_deathtilt 0 // needed for spectators (who are dead to avoid prediction) // these settings determine how much the view is affected by movement/damage +cl_smoothviewheight 0.05 // time of the averaging to the viewheight value so that it creates a smooth transition for crouching and such. 0 for instant transition cl_deathfade 1 // fade screen to dark red when dead, value represents how fast the fade is (higher is faster) cl_bobcycle 0 // how long the cycle of up/down view movement takes (only works if cl_bob is not 0), default is 0.6 cl_bob 0.01 // how much view moves up/down when moving (does not move if cl_bobcycle is 0, but still enables cl_bobmodel), default is 0.02 @@ -287,7 +301,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 +313,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)" @@ -339,6 +354,8 @@ set g_respawn_ghosts 1 "if 1 dead bodies become ghosts and float away when the p set g_respawn_ghosts_speed 5 "the speed with which respawn ghosts float and rotate" set g_respawn_ghosts_maxtime 6 "maximum amount of time a respawn ghost can last, minimum time is half this value. 0 disables and ghosts fade when the body would" +set sv_gibhealth 100 "Minus health a dead body must have in order to get gibbed" + // fragmessage: This allows extra information to be displayed with the frag centerprints. set sv_fragmessage_information_ping 1 "Enable ping display information, 0 = Never display; 1 = Always display (If the player is a bot, it will say bot instead of the ping.)" set sv_fragmessage_information_handicap 1 "Enable handicap display information, 0 = Never display; 1 = Only when the player has handicap on; 2 = Always display (Displays Off if off)" @@ -415,7 +432,7 @@ set bot_ai_aimskill_firetolerance_mindegrees 2 "Minimum angle tolerance. Used on 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" @@ -431,7 +448,7 @@ set bot_ai_bunnyhop_startdistance 100 "Run to goals located further than this di 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" @@ -475,7 +492,7 @@ set g_powerup_superhealth 1 "if set to 0 the mega health powerup will not spawn set g_powerup_strength 1 "if set to 0 the strength powerup will not spawn on the map" set g_powerup_shield 1 "if set to 0 the shield (invincibility) powerup will not spawn on the map" set g_balance_powerup_timer 1 "if set to 0 the powerups dont wear off" -set g_use_ammunition 1 "if set to 0 all weapons you pick up have unlimited ammunition" +set g_use_ammunition 1 "if set to 0 all weapons have unlimited ammunition" set g_pickup_items 1 "if set to 0 all items (health, armor, ammo, weapons...) are removed from the map" set g_minstagib 0 "enable minstagib" set g_minstagib_extralives 2 "how many extra lives you will get per powerup" @@ -925,7 +942,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 @@ -1742,7 +1758,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" @@ -1931,10 +1947,6 @@ collision_endposnudge 1 set cl_lerpanim_maxdelta_framegroups 0.05 // must be faster than fastest weapon refire set cl_lerpanim_maxdelta_server 0.1 // must be slower than slowest server controlled anim (e.g. animinfo stuff) -// FIXME workaround for engine bug -sv_gameplayfix_nudgeoutofsolid 0 -// to div0: remove this once 5b7ac1706712977bbc0297d2d53294e73574c7cd (svn r9537) is in the stable branch of the engine again - // otherwise, antilag breaks sv_gameplayfix_consistentplayerprethink 1 @@ -2009,6 +2021,7 @@ scr_infobar_height 12 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 +set vid_netwmfullscreen 0 // doesn't support non-native res // particles optimization r_drawparticles_nearclip_min 8 @@ -2048,6 +2061,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 @@ -2097,7 +2112,6 @@ exec ctfscoring-ai.cfg exec effects-normal.cfg exec physicsX0.cfg exec turrets.cfg -exec font-xolonium.cfg // hud cvar descriptions exec _hud_descriptions.cfg @@ -2108,3 +2122,9 @@ exec hud_luminos.cfg // enable menu syncing alias menu_sync "menu_cmd sync" alias scoreboard_columns_set "cl_cmd scoreboard_columns_set $*" + +// BALANCE TESTING (TEMPORARY, PLEASE REMOVE LATER) +alias balanceSamual "exec balanceSamual.cfg; restart" +alias balanceFruitieX "exec balanceXonotic.cfg; restart" +bind f7 balanceSamual +bind f8 balanceFruitieX diff --git a/effectinfo.txt b/effectinfo.txt index bb44e5b4d..e2b476ce8 100644 --- a/effectinfo.txt +++ b/effectinfo.txt @@ -1691,11 +1691,11 @@ effect crylink_impact countabsolute 1 type decal tex 47 47 -size 8 8 +size 24 24 alpha 256 256 0 originjitter 12 12 12 -//lightradius 60 -//lightradiusfade 300 +//lightradius 200 +//lightradiusfade 800 //lightcolor 3.2 0.4 4 // purple flare effect effect crylink_impact @@ -1703,34 +1703,34 @@ countabsolute 1 type static tex 39 39 color 0x504060 0x504060 -size 8 8 +size 24 24 alpha 256 256 512 // purple sparks effect crylink_impact -count 10 +count 40 type spark tex 41 41 color 0xA040C0 0xA040C0 bounce 2 -size 1 2 +size 6 6 alpha 256 256 1024 -velocityjitter 256 256 256 +velocityjitter 512 512 512 // purple splash effect crylink_impact count 1.5 type static color 0xE070FF 0xE070FF -size 8 8 +size 16 16 alpha 256 256 512 -velocityjitter 8 8 8 +velocityjitter 32 32 32 // purple splash effect crylink_impact -count 1.5 +count 3 type static color 0xE070FF 0xE070FF -size 8 8 +size 16 16 alpha 256 256 1024 -velocityjitter 32 32 32 +velocityjitter 256 256 256 @@ -5194,3 +5194,66 @@ velocityjitter 0 0 5 velocitymultiplier 15 airfriction -1 rotate 0 360 -180 180 + +// seeker missile trail +effect TR_SEEKER +trailspacing 10 +type smoke +notunderwater +color 0x000000 0x666666 +tex 0 8 +size 2 2 +bounce 1 +sizeincrease 11 +alpha 200 300 200 +lightradius 100 +lighttime 0 +lightcolor 6 3 1 +originjitter 2 2 2 +velocityjitter 3 3 3 +velocitymultiplier -0.02 +rotate -180 180 -30 30 +//gravity -0.11 +// fire +effect TR_SEEKER +trailspacing 4 +type static +color 0xffdf72 0x811200 +tex 48 55 +size 5 5 +sizeincrease -30 +alpha 100 144 588 +airfriction 8 +velocityjitter 32 32 32 +velocitymultiplier -1.5 +// bubbles +effect TR_SEEKER +type bubble +underwater +trailspacing 16 +tex 62 62 +size 1 2 +alpha 256 256 256 +gravity -0.125 +bounce 1.5 +liquidfriction 4 +velocityjitter 16 16 16 +velocitymultiplier -0.31 +rotate 0 0 0 0 +// sparks +effect TR_SEEKER +notunderwater +trailspacing 20 +type spark +tex 40 40 +color 0xFFFDD9 0xFFFDD9 +size 0.5 0.5 +alpha 444 512 1866 +stretchfactor 0.3 +//gravity 1 +bounce 1 +//velocityoffset 0 0 15 +airfriction 5 +originjitter 1 1 1 +velocityjitter 100 100 100 +velocitymultiplier -0.31 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/accelbar.tga b/gfx/hud/default/accelbar.tga new file mode 100644 index 000000000..fd938581f Binary files /dev/null and b/gfx/hud/default/accelbar.tga differ diff --git a/gfx/hud/luminos/accelbar.tga b/gfx/hud/luminos/accelbar.tga new file mode 100644 index 000000000..fd938581f Binary files /dev/null and b/gfx/hud/luminos/accelbar.tga differ diff --git a/gfx/hud/luminos/border_small_healtharmor.tga b/gfx/hud/luminos/border_small_healtharmor.tga new file mode 100644 index 000000000..e27f2a396 Binary files /dev/null and b/gfx/hud/luminos/border_small_healtharmor.tga differ diff --git a/gfx/hud/luminos/border_small_modicons.tga b/gfx/hud/luminos/border_small_modicons.tga new file mode 100644 index 000000000..64d84f06e Binary files /dev/null and b/gfx/hud/luminos/border_small_modicons.tga differ diff --git a/gfx/hud/luminos/border_small_powerups.tga b/gfx/hud/luminos/border_small_powerups.tga new file mode 100644 index 000000000..0737860ec Binary files /dev/null and b/gfx/hud/luminos/border_small_powerups.tga differ diff --git a/gfx/hud/luminos/border_small_radar.tga b/gfx/hud/luminos/border_small_radar.tga new file mode 100644 index 000000000..30729f5d0 Binary files /dev/null and b/gfx/hud/luminos/border_small_radar.tga differ diff --git a/gfx/hud/luminos/border_small_score.tga b/gfx/hud/luminos/border_small_score.tga new file mode 100644 index 000000000..c8c506ca0 Binary files /dev/null and b/gfx/hud/luminos/border_small_score.tga differ diff --git a/gfx/hud/luminos/border_small_timer.tga b/gfx/hud/luminos/border_small_timer.tga new file mode 100644 index 000000000..c8c506ca0 Binary files /dev/null and b/gfx/hud/luminos/border_small_timer.tga differ diff --git a/gfx/hud/luminos/border_small_weapons.tga b/gfx/hud/luminos/border_small_weapons.tga new file mode 100644 index 000000000..d0b58a855 Binary files /dev/null and b/gfx/hud/luminos/border_small_weapons.tga differ diff --git a/gfx/hud/old/accelbar.tga b/gfx/hud/old/accelbar.tga new file mode 100644 index 000000000..0bbad1787 Binary files /dev/null and b/gfx/hud/old/accelbar.tga differ 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/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/hook-firing_swap.cfg b/hook-firing_swap.cfg index 42d8379c5..a24a98c93 100644 --- a/hook-firing_swap.cfg +++ b/hook-firing_swap.cfg @@ -9,23 +9,24 @@ // after exec'ing them all from your autoexec.cfg // Set the cvars for each gun -seta cl_swapattacks_tuba 0 seta cl_swapattacks_laser 0 seta cl_swapattacks_shotgun 0 seta cl_swapattacks_uzi 0 -seta cl_swapattacks_sniperrifle 0 seta cl_swapattacks_grenadelauncher 0 +seta cl_swapattacks_minelayer 0 seta cl_swapattacks_electro 0 -seta cl_swapattacks_hlac 0 seta cl_swapattacks_crylink 0 -seta cl_swapattacks_minstanex 0 seta cl_swapattacks_nex 0 seta cl_swapattacks_hagar 0 -seta cl_swapattacks_seeker 0 -seta cl_swapattacks_fireball 0 seta cl_swapattacks_rocketlauncher 0 -seta cl_swapattacks_hook 0 seta cl_swapattacks_porto 0 +seta cl_swapattacks_minstanex 0 +seta cl_swapattacks_hook 0 +seta cl_swapattacks_hlac 0 +seta cl_swapattacks_tuba 0 +seta cl_swapattacks_sniperrifle 0 +seta cl_swapattacks_fireball 0 +seta cl_swapattacks_seeker 0 // This part of the code is necessary to keep us firing when we switch weapons while holding a fire button pressed // Also updates the keys before firing, so we don't have to switch to another weapon and back to apply the changes diff --git a/hud_luminos.cfg b/hud_luminos.cfg index a3f3ed39e..57be0d0a7 100644 --- a/hud_luminos.cfg +++ b/hud_luminos.cfg @@ -1,15 +1,15 @@ seta hud_skin "luminos" -seta hud_panel_bg "border_default" -seta hud_panel_bg_color "1 0.4375 0" -seta hud_panel_bg_color_team "0" +seta hud_panel_bg "0" +seta hud_panel_bg_color "0.6875 0.84375 1" +seta hud_panel_bg_color_team "1" seta hud_panel_bg_alpha "1" seta hud_panel_bg_border "8" seta hud_panel_bg_padding "2" seta hud_panel_fg_alpha "1" -seta hud_dock "dock" -seta hud_dock_color "0 0.1875 0.40625" -seta hud_dock_color_team "0.700000" +seta hud_dock "0" +seta hud_dock_color "0 0.449576 0.860796" +seta hud_dock_color_team "1" seta hud_dock_alpha "1" seta hud_progressbar_alpha "0.500000" @@ -20,7 +20,7 @@ seta hud_progressbar_armor_color "0 0.6 0" seta hud_progressbar_fuel_color "0.6 0.6 0" seta hud_progressbar_nexball_color "0.7 0.1 0" -seta _hud_panelorder "10 9 6 8 14 5 0 4 13 2 7 1 3 11 12 " +seta _hud_panelorder "12 9 10 5 6 14 0 7 4 11 2 1 3 8 13 " seta hud_configure_grid "1" seta hud_configure_grid_xsize "0.010000" @@ -29,9 +29,9 @@ seta hud_configure_grid_ysize "0.010000" seta scr_centerpos "0.25" seta hud_panel_weapons 1 -seta hud_panel_weapons_pos "0.920000 0.090000" -seta hud_panel_weapons_size "0.060000 0.630000" -seta hud_panel_weapons_bg "" +seta hud_panel_weapons_pos "0.940000 0.180000" +seta hud_panel_weapons_size "0.060000 0.610000" +seta hud_panel_weapons_bg "border_small_weapons" seta hud_panel_weapons_bg_color "" seta hud_panel_weapons_bg_color_team "" seta hud_panel_weapons_bg_alpha "" @@ -46,11 +46,11 @@ seta hud_panel_weapons_ammo_color "0 1 0" seta hud_panel_weapons_ammo_alpha "1" seta hud_panel_weapons_aspect "2" seta hud_panel_weapons_timeout "3" -seta hud_panel_weapons_timeout_effect "1" +seta hud_panel_weapons_timeout_effect "2" seta hud_panel_ammo 1 -seta hud_panel_ammo_pos "0.190000 0.920000" -seta hud_panel_ammo_size "0.120000 0.070000" +seta hud_panel_ammo_pos "0.330000 0.960000" +seta hud_panel_ammo_size "0.350000 0.040000" seta hud_panel_ammo_bg "" seta hud_panel_ammo_bg_color "" seta hud_panel_ammo_bg_color_team "" @@ -60,20 +60,20 @@ seta hud_panel_ammo_bg_padding "" seta hud_panel_ammo_onlycurrent "0" seta hud_panel_ammo_iconalign "0" seta hud_panel_ammo_progressbar "0" -seta hud_panel_ammo_progressbar_xoffset "0" seta hud_panel_ammo_progressbar_name "progressbar" +seta hud_panel_ammo_progressbar_xoffset "0" seta hud_panel_ammo_text "1" seta hud_panel_powerups 1 -seta hud_panel_powerups_pos "0.660000 0.940000" -seta hud_panel_powerups_size "0.330000 0.060000" -seta hud_panel_powerups_bg "0" +seta hud_panel_powerups_pos "0.360000 0.850000" +seta hud_panel_powerups_size "0.290000 0.030000" +seta hud_panel_powerups_bg "border_small_powerups" seta hud_panel_powerups_bg_color "" seta hud_panel_powerups_bg_color_team "" seta hud_panel_powerups_bg_alpha "" seta hud_panel_powerups_bg_border "" -seta hud_panel_powerups_bg_padding "" -seta hud_panel_powerups_flip "1" +seta hud_panel_powerups_bg_padding "0" +seta hud_panel_powerups_flip "0" seta hud_panel_powerups_iconalign "4" seta hud_panel_powerups_baralign "4" seta hud_panel_powerups_progressbar "1" @@ -82,9 +82,9 @@ seta hud_panel_powerups_progressbar_shield "progressbar" seta hud_panel_powerups_text "1" seta hud_panel_healtharmor 1 -seta hud_panel_healtharmor_pos "0.330000 0.920000" -seta hud_panel_healtharmor_size "0.310000 0.070000" -seta hud_panel_healtharmor_bg "" +seta hud_panel_healtharmor_pos "0.320000 0.910000" +seta hud_panel_healtharmor_size "0.370000 0.060000" +seta hud_panel_healtharmor_bg "border_small_healtharmor" seta hud_panel_healtharmor_bg_color "" seta hud_panel_healtharmor_bg_color_team "" seta hud_panel_healtharmor_bg_alpha "" @@ -99,8 +99,8 @@ seta hud_panel_healtharmor_progressbar_armor "progressbar" seta hud_panel_healtharmor_text "1" seta hud_panel_notify 1 -seta hud_panel_notify_pos "0.660000 0.730000" -seta hud_panel_notify_size "0.320000 0.190000" +seta hud_panel_notify_pos "0.710000 0.800000" +seta hud_panel_notify_size "0.290000 0.190000" seta hud_panel_notify_bg "0" seta hud_panel_notify_bg_color "" seta hud_panel_notify_bg_color_team "" @@ -108,41 +108,42 @@ 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 -seta hud_panel_timer_pos "0.870000 0" -seta hud_panel_timer_size "0.130000 0.060000" -seta hud_panel_timer_bg "0" +seta hud_panel_timer_pos "0.800000 0.040000" +seta hud_panel_timer_size "0.070000 0.040000" +seta hud_panel_timer_bg "border_small_timer" seta hud_panel_timer_bg_color "" seta hud_panel_timer_bg_color_team "" 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_pos "0.030000 0.020000" -seta hud_panel_radar_size "0.170000 0.220000" -seta hud_panel_radar_bg "" +seta hud_panel_radar 2 +seta hud_panel_radar_pos "0 0" +seta hud_panel_radar_size "0.200000 0.240000" +seta hud_panel_radar_bg "border_small_radar" seta hud_panel_radar_bg_color "" seta hud_panel_radar_bg_color_team "" -seta hud_panel_radar_bg_alpha "" +seta hud_panel_radar_bg_alpha "0.800000" seta hud_panel_radar_bg_border "" -seta hud_panel_radar_bg_padding "-3" +seta hud_panel_radar_bg_padding "-1" seta hud_panel_radar_foreground_alpha "0.800000" seta hud_panel_score 1 -seta hud_panel_score_pos "0.020000 0.920000" -seta hud_panel_score_size "0.150000 0.070000" -seta hud_panel_score_bg "" +seta hud_panel_score_pos "0.890000 0.030000" +seta hud_panel_score_size "0.100000 0.050000" +seta hud_panel_score_bg "border_small_score" seta hud_panel_score_bg_color "" seta hud_panel_score_bg_color_team "" seta hud_panel_score_bg_alpha "" seta hud_panel_score_bg_border "" -seta hud_panel_score_bg_padding "" +seta hud_panel_score_bg_padding "0" seta hud_panel_racetimer 1 -seta hud_panel_racetimer_pos "0.360000 0.090000" +seta hud_panel_racetimer_pos "0.360000 0.110000" seta hud_panel_racetimer_size "0.280000 0.090000" seta hud_panel_racetimer_bg "0" seta hud_panel_racetimer_bg_color "" @@ -152,29 +153,29 @@ seta hud_panel_racetimer_bg_border "" seta hud_panel_racetimer_bg_padding "" seta hud_panel_vote 1 -seta hud_panel_vote_pos "0.020000 0.650000" -seta hud_panel_vote_size "0.230000 0.110000" -seta hud_panel_vote_bg "" +seta hud_panel_vote_pos "0.710000 0.660000" +seta hud_panel_vote_size "0.210000 0.100000" +seta hud_panel_vote_bg "border_vote" seta hud_panel_vote_bg_color "" seta hud_panel_vote_bg_color_team "" seta hud_panel_vote_bg_alpha "" seta hud_panel_vote_bg_border "" seta hud_panel_vote_bg_padding "" -seta hud_panel_vote_alreadyvoted_alpha "0.800000" +seta hud_panel_vote_alreadyvoted_alpha "0.500000" seta hud_panel_modicons 1 -seta hud_panel_modicons_pos "0.040000 0.270000" -seta hud_panel_modicons_size "0.080000 0.200000" -seta hud_panel_modicons_bg "" +seta hud_panel_modicons_pos "0.410000 0" +seta hud_panel_modicons_size "0.180000 0.080000" +seta hud_panel_modicons_bg "border_small_modicons" seta hud_panel_modicons_bg_color "" seta hud_panel_modicons_bg_color_team "" seta hud_panel_modicons_bg_alpha "" seta hud_panel_modicons_bg_border "" -seta hud_panel_modicons_bg_padding "" +seta hud_panel_modicons_bg_padding "0" seta hud_panel_pressedkeys 1 -seta hud_panel_pressedkeys_pos "0.410000 0.710000" -seta hud_panel_pressedkeys_size "0.180000 0.130000" +seta hud_panel_pressedkeys_pos "0.450000 0.720000" +seta hud_panel_pressedkeys_size "0.110000 0.090000" seta hud_panel_pressedkeys_bg "0" seta hud_panel_pressedkeys_bg_color "" seta hud_panel_pressedkeys_bg_color_team "" @@ -184,8 +185,8 @@ seta hud_panel_pressedkeys_bg_padding "" seta hud_panel_pressedkeys_aspect "1.600000" seta hud_panel_chat 1 -seta hud_panel_chat_pos "0.020000 0.780000" -seta hud_panel_chat_size "0.630000 0.110000" +seta hud_panel_chat_pos "0.010000 0.700000" +seta hud_panel_chat_size "0.460000 0.190000" seta hud_panel_chat_bg "0" seta hud_panel_chat_bg_color "" seta hud_panel_chat_bg_color_team "" @@ -194,8 +195,8 @@ seta hud_panel_chat_bg_border "" seta hud_panel_chat_bg_padding "" seta hud_panel_engineinfo 0 -seta hud_panel_engineinfo_pos "0.910000 0.970000" -seta hud_panel_engineinfo_size "0.090000 0.030000" +seta hud_panel_engineinfo_pos "0.930000 0.970000" +seta hud_panel_engineinfo_size "0.070000 0.030000" seta hud_panel_engineinfo_bg "0" seta hud_panel_engineinfo_bg_color "" seta hud_panel_engineinfo_bg_color_team "" @@ -204,8 +205,8 @@ seta hud_panel_engineinfo_bg_border "" seta hud_panel_engineinfo_bg_padding "" seta hud_panel_infomessages 1 -seta hud_panel_infomessages_pos "0.510000 0" -seta hud_panel_infomessages_size "0.340000 0.090000" +seta hud_panel_infomessages_pos "0.720000 0.100000" +seta hud_panel_infomessages_size "0.280000 0.080000" seta hud_panel_infomessages_bg "0" seta hud_panel_infomessages_bg_color "" seta hud_panel_infomessages_bg_color_team "" 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_old.cfg b/hud_luminos_old.cfg new file mode 100644 index 000000000..ca8ea38de --- /dev/null +++ b/hud_luminos_old.cfg @@ -0,0 +1,218 @@ +seta hud_skin "luminos" +seta hud_panel_bg "border_default" +seta hud_panel_bg_color "1 0.4375 0" +seta hud_panel_bg_color_team "0" +seta hud_panel_bg_alpha "1" +seta hud_panel_bg_border "8" +seta hud_panel_bg_padding "2" +seta hud_panel_fg_alpha "1" + +seta hud_dock "dock" +seta hud_dock_color "0 0.1875 0.40625" +seta hud_dock_color_team "0.700000" +seta hud_dock_alpha "1" + +seta hud_progressbar_alpha "0.500000" +seta hud_progressbar_strength_color "0 0 0.6" +seta hud_progressbar_shield_color "0.6 0 0.6" +seta hud_progressbar_health_color "0.6 0 0" +seta hud_progressbar_armor_color "0 0.6 0" +seta hud_progressbar_fuel_color "0.6 0.6 0" +seta hud_progressbar_nexball_color "0.7 0.1 0" + +seta _hud_panelorder "10 9 6 8 14 5 0 4 13 2 7 1 3 11 12 " + +seta hud_configure_grid "1" +seta hud_configure_grid_xsize "0.010000" +seta hud_configure_grid_ysize "0.010000" + +seta scr_centerpos "0.25" + +seta hud_panel_weapons 1 +seta hud_panel_weapons_pos "0.920000 0.090000" +seta hud_panel_weapons_size "0.060000 0.630000" +seta hud_panel_weapons_bg "" +seta hud_panel_weapons_bg_color "" +seta hud_panel_weapons_bg_color_team "" +seta hud_panel_weapons_bg_alpha "" +seta hud_panel_weapons_bg_border "" +seta hud_panel_weapons_bg_padding "" +seta hud_panel_weapons_complainbubble "1" +seta hud_panel_weapons_complainbubble_padding "-10" +seta hud_panel_weapons_complainbubble_color_outofammo "0.8 0 0" +seta hud_panel_weapons_complainbubble_color_donthave "0.8 0.5 0" +seta hud_panel_weapons_complainbubble_color_unavailable "0 0.3 0.8" +seta hud_panel_weapons_ammo_color "0 1 0" +seta hud_panel_weapons_ammo_alpha "1" +seta hud_panel_weapons_aspect "2" +seta hud_panel_weapons_timeout "3" +seta hud_panel_weapons_timeout_effect "1" + +seta hud_panel_ammo 1 +seta hud_panel_ammo_pos "0.190000 0.920000" +seta hud_panel_ammo_size "0.120000 0.070000" +seta hud_panel_ammo_bg "" +seta hud_panel_ammo_bg_color "" +seta hud_panel_ammo_bg_color_team "" +seta hud_panel_ammo_bg_alpha "" +seta hud_panel_ammo_bg_border "" +seta hud_panel_ammo_bg_padding "" +seta hud_panel_ammo_onlycurrent "0" +seta hud_panel_ammo_iconalign "0" +seta hud_panel_ammo_progressbar "0" +seta hud_panel_ammo_progressbar_xoffset "0" +seta hud_panel_ammo_progressbar_name "progressbar" +seta hud_panel_ammo_text "1" + +seta hud_panel_powerups 1 +seta hud_panel_powerups_pos "0.660000 0.940000" +seta hud_panel_powerups_size "0.330000 0.060000" +seta hud_panel_powerups_bg "0" +seta hud_panel_powerups_bg_color "" +seta hud_panel_powerups_bg_color_team "" +seta hud_panel_powerups_bg_alpha "" +seta hud_panel_powerups_bg_border "" +seta hud_panel_powerups_bg_padding "" +seta hud_panel_powerups_flip "1" +seta hud_panel_powerups_iconalign "4" +seta hud_panel_powerups_baralign "4" +seta hud_panel_powerups_progressbar "1" +seta hud_panel_powerups_progressbar_strength "progressbar" +seta hud_panel_powerups_progressbar_shield "progressbar" +seta hud_panel_powerups_text "1" + +seta hud_panel_healtharmor 1 +seta hud_panel_healtharmor_pos "0.330000 0.920000" +seta hud_panel_healtharmor_size "0.310000 0.070000" +seta hud_panel_healtharmor_bg "" +seta hud_panel_healtharmor_bg_color "" +seta hud_panel_healtharmor_bg_color_team "" +seta hud_panel_healtharmor_bg_alpha "" +seta hud_panel_healtharmor_bg_border "" +seta hud_panel_healtharmor_bg_padding "" +seta hud_panel_healtharmor_flip "0" +seta hud_panel_healtharmor_iconalign "4" +seta hud_panel_healtharmor_baralign "4" +seta hud_panel_healtharmor_progressbar "1" +seta hud_panel_healtharmor_progressbar_health "progressbar" +seta hud_panel_healtharmor_progressbar_armor "progressbar" +seta hud_panel_healtharmor_text "1" + +seta hud_panel_notify 1 +seta hud_panel_notify_pos "0.660000 0.730000" +seta hud_panel_notify_size "0.320000 0.190000" +seta hud_panel_notify_bg "0" +seta hud_panel_notify_bg_color "" +seta hud_panel_notify_bg_color_team "" +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 +seta hud_panel_timer_pos "0.870000 0" +seta hud_panel_timer_size "0.130000 0.060000" +seta hud_panel_timer_bg "0" +seta hud_panel_timer_bg_color "" +seta hud_panel_timer_bg_color_team "" +seta hud_panel_timer_bg_alpha "" +seta hud_panel_timer_bg_border "" +seta hud_panel_timer_bg_padding "0" + +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 "" +seta hud_panel_radar_bg_color "" +seta hud_panel_radar_bg_color_team "" +seta hud_panel_radar_bg_alpha "" +seta hud_panel_radar_bg_border "" +seta hud_panel_radar_bg_padding "-3" +seta hud_panel_radar_foreground_alpha "0.800000" + +seta hud_panel_score 1 +seta hud_panel_score_pos "0.020000 0.920000" +seta hud_panel_score_size "0.150000 0.070000" +seta hud_panel_score_bg "" +seta hud_panel_score_bg_color "" +seta hud_panel_score_bg_color_team "" +seta hud_panel_score_bg_alpha "" +seta hud_panel_score_bg_border "" +seta hud_panel_score_bg_padding "" + +seta hud_panel_racetimer 1 +seta hud_panel_racetimer_pos "0.360000 0.090000" +seta hud_panel_racetimer_size "0.280000 0.090000" +seta hud_panel_racetimer_bg "0" +seta hud_panel_racetimer_bg_color "" +seta hud_panel_racetimer_bg_color_team "" +seta hud_panel_racetimer_bg_alpha "" +seta hud_panel_racetimer_bg_border "" +seta hud_panel_racetimer_bg_padding "" + +seta hud_panel_vote 1 +seta hud_panel_vote_pos "0.020000 0.650000" +seta hud_panel_vote_size "0.230000 0.110000" +seta hud_panel_vote_bg "" +seta hud_panel_vote_bg_color "" +seta hud_panel_vote_bg_color_team "" +seta hud_panel_vote_bg_alpha "" +seta hud_panel_vote_bg_border "" +seta hud_panel_vote_bg_padding "" +seta hud_panel_vote_alreadyvoted_alpha "0.800000" + +seta hud_panel_modicons 1 +seta hud_panel_modicons_pos "0.040000 0.270000" +seta hud_panel_modicons_size "0.080000 0.200000" +seta hud_panel_modicons_bg "" +seta hud_panel_modicons_bg_color "" +seta hud_panel_modicons_bg_color_team "" +seta hud_panel_modicons_bg_alpha "" +seta hud_panel_modicons_bg_border "" +seta hud_panel_modicons_bg_padding "" + +seta hud_panel_pressedkeys 1 +seta hud_panel_pressedkeys_pos "0.410000 0.710000" +seta hud_panel_pressedkeys_size "0.180000 0.130000" +seta hud_panel_pressedkeys_bg "0" +seta hud_panel_pressedkeys_bg_color "" +seta hud_panel_pressedkeys_bg_color_team "" +seta hud_panel_pressedkeys_bg_alpha "" +seta hud_panel_pressedkeys_bg_border "" +seta hud_panel_pressedkeys_bg_padding "" +seta hud_panel_pressedkeys_aspect "1.600000" + +seta hud_panel_chat 1 +seta hud_panel_chat_pos "0.020000 0.780000" +seta hud_panel_chat_size "0.630000 0.110000" +seta hud_panel_chat_bg "0" +seta hud_panel_chat_bg_color "" +seta hud_panel_chat_bg_color_team "" +seta hud_panel_chat_bg_alpha "" +seta hud_panel_chat_bg_border "" +seta hud_panel_chat_bg_padding "" + +seta hud_panel_engineinfo 0 +seta hud_panel_engineinfo_pos "0.910000 0.970000" +seta hud_panel_engineinfo_size "0.090000 0.030000" +seta hud_panel_engineinfo_bg "0" +seta hud_panel_engineinfo_bg_color "" +seta hud_panel_engineinfo_bg_color_team "" +seta hud_panel_engineinfo_bg_alpha "" +seta hud_panel_engineinfo_bg_border "" +seta hud_panel_engineinfo_bg_padding "" + +seta hud_panel_infomessages 1 +seta hud_panel_infomessages_pos "0.510000 0" +seta hud_panel_infomessages_size "0.340000 0.090000" +seta hud_panel_infomessages_bg "0" +seta hud_panel_infomessages_bg_color "" +seta hud_panel_infomessages_bg_color_team "" +seta hud_panel_infomessages_bg_alpha "" +seta hud_panel_infomessages_bg_border "" +seta hud_panel_infomessages_bg_padding "0" +seta hud_panel_infomessages_flip "1" + +menu_sync 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/input-tuba.cfg b/input-tuba.cfg index b83af0752..a129ed766 100644 --- a/input-tuba.cfg +++ b/input-tuba.cfg @@ -11,10 +11,10 @@ // Then, grab a Tuba, then play notes on your MIDI keyboard! // // If you have no keyboard input, you can map the tuba notes to your keyboard: +// for German keyboard layout // in_bindmap 3 0 -// for US keyboard layout, and +// for US keyboard layout // in_bindmap 4 0 -// for German keyboard layout alias +tuba_l "+moveleft; +tuba_$*" alias -tuba_l "-moveleft; -tuba_$*" diff --git a/keybinds.txt.es b/keybinds.txt.es new file mode 100644 index 000000000..e92f03b80 --- /dev/null +++ b/keybinds.txt.es @@ -0,0 +1,91 @@ +"" "Movimiento" +"+forward" "adelante" +"+back" "atrás" +"+moveleft" "izquierda" +"+moveright" "derecha" +"+jump" "saltar / nadar" +"+crouch" "agacharse / bajar" +"+hook" "gancho / jet pack" +"" "" +"" "Ataque" +"+fire" "ataque primario" +"+fire2" "ataque secundario" +"" "" +"" "Cambio de arma" +"weapprev" "anterior" +"weapnext" "siguiente" +"weaplast" "anteriormente usado" +"weapbest" "mejor" +"reload" "recargar" +"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" +"" "" +"" "Vista" +"+zoom" "mantener zoom" +"togglezoom" "cambiar zoom" +"+showscores" "mostrar puntaje" +"screenshot" "captura de pantalla" +"" "" +"" "Communicación" +"messagemode" "chat público" +"messagemode2" "chat de equipo" +"+con_chat_maximize" "mostrar historial del chat" +"vyes" "votar SI" +"vno" "votar NO" +"ready" "preparado" +"" "" +"" "Cliente" +"+show_info" "información del servidor" +"toggleconsole" "entrar en la consola" +"disconnect" "desconectar" +"quit" "salir" +"" "" +"" "Juego en equipo" +"messagemode2" "chat de equipo" +"team_auto" "unirse al equipo automáticamente" +"menu_showteamselect" "menu de equipo" +"spec" "entrar al modo espectador" +"dropweapon" "soltar arma" +"+use" "soltar llave / soltar bandera" +"" "" +"" "Definido por el usuario" +"+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 index 6154f8e8e..9004df21f 100644 --- a/languages.txt +++ b/languages.txt @@ -1,7 +1,12 @@ de German "Deutsch" en English "English" +fi Finnish "Suomi" fr French "Français" +hu Hungarian "Magyar" +it Italian "Italiano" nl Dutch "Nederlands" pt Portuguese "Português" ro Romanian "Romana" ru Russian "Русский" +se Swedish "Svenska" +es Spanish "Español" diff --git a/menu.dat.de.po b/menu.dat.de.po index 074b519f3..93773ddd0 100644 --- a/menu.dat.de.po +++ b/menu.dat.de.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: 0.1preview\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-27 17:06+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\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" -"Language: de\n" #: qcsrc/menu/gamecommand.qc:47 #, c-format @@ -83,23 +83,23 @@ msgstr "???" msgid "Level %d: %s" msgstr "Level %d: %s" -#: qcsrc/menu/xonotic/cvarlist.c:84 +#: qcsrc/menu/xonotic/cvarlist.c:85 msgid "will be saved to config.cfg" msgstr "wird in config.cfg gespeichert" -#: qcsrc/menu/xonotic/cvarlist.c:86 +#: qcsrc/menu/xonotic/cvarlist.c:87 msgid "will not be saved" msgstr "wird nicht gespeichert" -#: qcsrc/menu/xonotic/cvarlist.c:88 +#: qcsrc/menu/xonotic/cvarlist.c:89 msgid "private" msgstr "privat" -#: qcsrc/menu/xonotic/cvarlist.c:90 +#: qcsrc/menu/xonotic/cvarlist.c:91 msgid "engine setting" msgstr "Engine-Einstellung" -#: qcsrc/menu/xonotic/cvarlist.c:92 +#: qcsrc/menu/xonotic/cvarlist.c:93 msgid "read only" msgstr "nur lesen" @@ -110,9 +110,9 @@ 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:46 +#: 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:59 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:61 #: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 msgid "OK" msgstr "OK" @@ -418,7 +418,7 @@ msgid "Fade out after:" msgstr "Ausblenden nach:" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 msgid "Never" msgstr "Nie" @@ -828,7 +828,7 @@ msgid "Game types:" msgstr "Spieltyp:" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 msgid "Close" msgstr "Schließen" @@ -1009,7 +1009,7 @@ msgid "Info..." msgstr "Info..." #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 msgid "Join!" msgstr "Verbinden!" @@ -1019,105 +1019,105 @@ 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:177 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +#: 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:151 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:158 #, c-format -msgid "%d/%d" -msgstr "%d/%d" +msgid "%d/%d, %d free player slots" +msgstr "%d/%d, %d freie Slots" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#: 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:166 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 msgid "Official settings" msgstr "Offizielle Einstellungen" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191 +#: 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:199 +#: 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:201 +#: 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:205 +#: 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:207 +#: 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:211 +#: 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:213 +#: 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:217 +#: 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:219 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225 msgid "required (will encrypt)" msgstr "notwendig (aktiv)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:240 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +#: 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:248 +#: 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:253 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 msgid "Map:" msgstr "Map:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 msgid "Gameplay:" msgstr "Spielregeln:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 msgid "Bots:" msgstr "Bots:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 msgid "Mod:" msgstr "Mod:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 msgid "Version:" msgstr "Version:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 msgid "Ping:" msgstr "Ping:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 msgid "CA:" msgstr "CA:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 msgid "Key:" msgstr "Schlüssel:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 msgid "Encryption:" msgstr "Krypto:" @@ -1256,30 +1256,26 @@ msgid "Waypoints" msgstr "Wegpunkte" #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 -msgid "Waypoint settings:" -msgstr "Wegpunkt-Einstellungen:" - -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 msgid "Show base waypoints" msgstr "Basis-Wegpunkte anzeigen" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 msgid "Waypoint scale:" msgstr "Wegpunkt-Skalierung:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 msgid "Waypoint alpha:" msgstr "Wegpunkt-Alpha:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 msgid "Show names:" msgstr "Namen anzeigen:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 msgid "Teammates" msgstr "Mitspieler" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 msgid "All players" msgstr "Alle Spieler" @@ -1337,7 +1333,7 @@ msgstr "Beenden" #: qcsrc/menu/xonotic/dialog_quit.c:17 msgid "Are you sure you want to quit?" -msgstr "Wollen Sie wirklich das Spiel beenden?" +msgstr "Wollen Sie das Spiel wirklich beenden?" #: qcsrc/menu/xonotic/dialog_quit.c:20 msgid "Yes" @@ -1948,7 +1944,7 @@ msgstr "Einstellung:" msgid "Value:" msgstr "Wert:" -#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 msgid "Description:" msgstr "Beschreibung:" @@ -2211,31 +2207,31 @@ msgstr "" msgid "" msgstr "" -#: qcsrc/menu/xonotic/serverlist.c:357 +#: qcsrc/menu/xonotic/serverlist.c:360 msgid "Remove" msgstr "Vergessen" -#: qcsrc/menu/xonotic/serverlist.c:359 +#: qcsrc/menu/xonotic/serverlist.c:362 msgid "Bookmark" msgstr "Speichern" -#: qcsrc/menu/xonotic/serverlist.c:515 +#: qcsrc/menu/xonotic/serverlist.c:518 msgid "Ping" msgstr "Ping" -#: qcsrc/menu/xonotic/serverlist.c:516 +#: qcsrc/menu/xonotic/serverlist.c:519 msgid "Host name" msgstr "Servername" -#: qcsrc/menu/xonotic/serverlist.c:517 +#: qcsrc/menu/xonotic/serverlist.c:520 msgid "Map" msgstr "Map" -#: qcsrc/menu/xonotic/serverlist.c:518 +#: qcsrc/menu/xonotic/serverlist.c:521 msgid "Type" msgstr "Typ" -#: qcsrc/menu/xonotic/serverlist.c:519 +#: qcsrc/menu/xonotic/serverlist.c:522 msgid "Players" msgstr "Spieler" @@ -2410,25 +2406,25 @@ msgstr "Panel aktivieren" msgid "Crylink" msgstr "Crylink" -#: qcsrc/server/w_crylink.qc:637 +#: qcsrc/server/w_crylink.qc:645 #, c-format msgid "%s succeeded at self-destructing themself with the Crylink" -msgstr "" +msgstr "%s hat sich erfolgreich mit der Crylink selbst zerstört" -#: qcsrc/server/w_crylink.qc:642 +#: qcsrc/server/w_crylink.qc:650 #, c-format msgid "%s could not hide from %s's Crylink" -msgstr "" +msgstr "%s konnte sich nicht vor %ss Crylink verstecken" -#: qcsrc/server/w_crylink.qc:644 +#: qcsrc/server/w_crylink.qc:652 #, c-format msgid "%s was too close to %s's Crylink" -msgstr "" +msgstr "%s ist %ss Crylink zu nahe getreten" -#: qcsrc/server/w_crylink.qc:646 +#: qcsrc/server/w_crylink.qc:654 #, c-format msgid "%s took a close look at %s's Crylink" -msgstr "" +msgstr "%s hat %ss Crylink genau unter die Lupe genommen" #: qcsrc/server/w_electro.qc:2 msgid "Electro" @@ -2437,37 +2433,37 @@ msgstr "Electro" #: qcsrc/server/w_electro.qc:503 #, c-format msgid "%s could not remember where they put plasma" -msgstr "" +msgstr "%s konnte sich nicht erinnern, wo das Plasma lag" #: qcsrc/server/w_electro.qc:505 #, c-format msgid "%s played with plasma" -msgstr "" +msgstr "%s hat mit Plasma gespielt" #: qcsrc/server/w_electro.qc:512 #, c-format msgid "%s just noticed %s's blue ball" -msgstr "" +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 "" +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 "" +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 "" +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 "" +msgstr "%s wurde von %ss blauen Strahl erwischt" #: qcsrc/server/w_fireball.qc:2 msgid "Fireball" @@ -2476,42 +2472,42 @@ msgstr "Fireball" #: qcsrc/server/w_fireball.qc:392 #, c-format msgid "%s forgot about some firemine" -msgstr "" +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 "" +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 "" +msgstr "%s hat versucht %ss Feuermine zu fangen" #: qcsrc/server/w_fireball.qc:403 #, c-format msgid "%s fatefully ignored %s's firemine" -msgstr "" +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 "" +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 "" +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 "" +msgstr "%s ist %ss Feuerball zu nahe getreten" #: qcsrc/server/w_fireball.qc:417 #, c-format msgid "%s tasted %s's fireball" -msgstr "" +msgstr "%s hat von %ss Feuerball probiert" #: qcsrc/server/w_grenadelauncher.qc:2 msgid "Mortar" @@ -2520,27 +2516,27 @@ msgstr "Mortar" #: qcsrc/server/w_grenadelauncher.qc:357 #, c-format msgid "%s tried out his own grenade" -msgstr "" +msgstr "%s wollte wissen, ob seine Granate funktioniert" #: qcsrc/server/w_grenadelauncher.qc:359 #, c-format msgid "%s detonated" -msgstr "" +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 "" +msgstr "%s hat %ss Granate nicht gesehen" #: qcsrc/server/w_grenadelauncher.qc:367 #, c-format msgid "%s almost dodged %s's grenade" -msgstr "" +msgstr "%s ist fast %ss Granate ausgewichen" #: qcsrc/server/w_grenadelauncher.qc:369 #, c-format msgid "%s ate %s's grenade" -msgstr "" +msgstr "%s nahm %ss Granate in den Mund" #: qcsrc/server/w_hagar.qc:2 msgid "Hagar" @@ -2549,17 +2545,17 @@ msgstr "Hagar" #: qcsrc/server/w_hagar.qc:185 qcsrc/server/w_seeker.qc:523 #, c-format msgid "%s played with tiny rockets" -msgstr "" +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 "" +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 "" +msgstr "%s hat sich von %s zerlegen lassen" #: qcsrc/server/w_hlac.qc:2 msgid "Heavy Laser Assault Cannon" @@ -2568,7 +2564,7 @@ msgstr "Heavy Laser Assault Cannon" #: qcsrc/server/w_hlac.qc:225 #, c-format msgid "%s was cut down by %s" -msgstr "" +msgstr "%s ist von %s niedergeschossen worden" #: qcsrc/server/w_hook.qc:2 msgid "Grappling Hook" @@ -2579,12 +2575,12 @@ msgstr "Grappling Hook" #: qcsrc/server/w_shotgun.qc:179 qcsrc/server/w_uzi.qc:287 #, c-format msgid "%s did the impossible" -msgstr "" +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 "" +msgstr "%s ist in %ss Gravitationsbombe reingelaufen" #: qcsrc/server/w_laser.qc:2 msgid "Laser" @@ -2593,17 +2589,17 @@ msgstr "Laser" #: qcsrc/server/w_laser.qc:285 #, c-format msgid "%s lasered themself to hell" -msgstr "" +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 "" +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 "" +msgstr "%s ist von %s zu Tode gelasert worden" #: qcsrc/server/w_minelayer.qc:2 msgid "Mine Layer" @@ -2612,22 +2608,22 @@ msgstr "Mine Layer" #: qcsrc/server/w_minelayer.qc:438 qcsrc/server/w_rocketlauncher.qc:480 #, c-format msgid "%s exploded" -msgstr "" +msgstr "%s ist explodiert" #: qcsrc/server/w_minelayer.qc:442 #, c-format msgid "%s got too close to %s's mine" -msgstr "" +msgstr "%s ist %ss Mine zu nahe getreten" #: qcsrc/server/w_minelayer.qc:444 #, c-format msgid "%s almost dodged %s's mine" -msgstr "" +msgstr "%s ist fast %ss Mine ausgewichen" #: qcsrc/server/w_minelayer.qc:446 #, c-format msgid "%s stepped on %s's mine" -msgstr "" +msgstr "%s ist auf %ss Mine gelatscht" #: qcsrc/server/w_minstanex.qc:2 msgid "MinstaNex" @@ -2636,7 +2632,7 @@ msgstr "MinstaNex" #: qcsrc/server/w_minstanex.qc:259 qcsrc/server/w_nex.qc:226 #, c-format msgid "%s has been vaporized by %s" -msgstr "" +msgstr "%s hat sich, dank %ss Nex, in Luft aufgelöst" #: qcsrc/server/w_nex.qc:2 msgid "Nex" @@ -2649,7 +2645,7 @@ msgstr "Port-O-Launch" #: qcsrc/server/w_porto.qc:295 #, c-format msgid "%s felt %s doing the impossible to him" -msgstr "" +msgstr "%s hat gespürt, wie %s das Unmögliche für ihn getan hat" #: qcsrc/server/w_rocketlauncher.qc:2 msgid "Rocket Launcher" @@ -2658,17 +2654,17 @@ msgstr "Rocket Launcher" #: qcsrc/server/w_rocketlauncher.qc:484 #, c-format msgid "%s got too close to %s's rocket" -msgstr "" +msgstr "%s ist %ss Rakete zu nahe getreten" #: qcsrc/server/w_rocketlauncher.qc:486 #, c-format msgid "%s almost dodged %s's rocket" -msgstr "" +msgstr "%s ist fast %ss Rakete ausgewichen" #: qcsrc/server/w_rocketlauncher.qc:488 #, c-format msgid "%s ate %s's rocket" -msgstr "" +msgstr "%s hat %ss Rakete in den Mund genommen" #: qcsrc/server/w_seeker.qc:2 msgid "T.A.G. Seeker" @@ -2677,12 +2673,12 @@ msgstr "T.A.G. Seeker" #: qcsrc/server/w_seeker.qc:527 #, c-format msgid "%s ran into %s's flac" -msgstr "" +msgstr "%s ist in %ss Flac reingerannt" #: qcsrc/server/w_seeker.qc:529 #, c-format msgid "%s was tagged by %s" -msgstr "" +msgstr "%s wurde von %s getaggt" #: qcsrc/server/w_shotgun.qc:2 msgid "Shotgun" @@ -2691,12 +2687,12 @@ msgstr "Shotgun" #: qcsrc/server/w_shotgun.qc:183 #, c-format msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun" -msgstr "" +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 "" +msgstr "%s ist von %s abgeballert worden" #: qcsrc/server/w_sniperrifle.qc:2 msgid "Sniper Rifle" @@ -2705,37 +2701,37 @@ msgstr "Sniper Rifle" #: qcsrc/server/w_sniperrifle.qc:321 #, c-format msgid "%s shot themself automatically" -msgstr "" +msgstr "%s hat sich vollautomatisch selbst erschossen" #: qcsrc/server/w_sniperrifle.qc:323 #, c-format msgid "%s sniped themself somehow" -msgstr "" +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 "" +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 "" +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 "" +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 "" +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 "" +msgstr "%s ist von Scharfschütze %s getroffen worden" #: qcsrc/server/w_tuba.qc:2 #, c-format @@ -2746,11 +2742,14 @@ msgstr "@!#%'n Tuba" #, 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" @@ -2759,4 +2758,10 @@ msgstr "Machine Gun" #: qcsrc/server/w_uzi.qc:293 #, c-format msgid "%s was riddled full of holes by %s" -msgstr "" +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.es.po b/menu.dat.es.po new file mode 100644 index 000000000..55016607f --- /dev/null +++ b/menu.dat.es.po @@ -0,0 +1,2829 @@ +# Xonotic Menu +# Copyright (C) 2011 Team Xonotic +# This file is distributed under the same license as the Xonotic package. +# Rodrigo Mouton Laudin , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: Xonotic 0.1preview\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-03-24 19:40+0100\n" +"PO-Revisión-Date: 2011-03-24 19:40+0100\n" +"Last-Translator: Rodrigo Mouton Laudin \n" +"Language: es\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: estado es %d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Uso: menu_cmd commando..., donde los posibles comandos son:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " sync - recarga todas las cvar en el menu actual\n" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr " directmenu ITEM - selecciona un item del menu como principal\n" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "error creando el manejador curl\n" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +"Comando no valido. Para una lista de comandos soportados, teclea menu_cmd " +"help\n" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "navegador no 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: texto %s demasiado largo para la 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 "Personalizado" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4MQC Información de compilación/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 "Nivel %d: %s" + +#: qcsrc/menu/xonotic/cvarlist.c:85 +msgid "will be saved to config.cfg" +msgstr "será guardado en config.cfg" + +#: qcsrc/menu/xonotic/cvarlist.c:87 +msgid "will not be saved" +msgstr "no será guardado" + +#: qcsrc/menu/xonotic/cvarlist.c:89 +msgid "private" +msgstr "privado" + +#: qcsrc/menu/xonotic/cvarlist.c:91 +msgid "engine setting" +msgstr "configuración del motor" + +#: qcsrc/menu/xonotic/cvarlist.c:93 +msgid "read only" +msgstr "sólo lectura" + +#: 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 "Bienvenido" + +#: 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 "" +"Bienvenido a Xonotic, por favor seleccióne su Lenguaje preferido y luego ingrese " +"su nombre de jugador. Estas opciones pueden ser modificadas luego utilizando el menú " +"de configuración" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:38 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Lenguaje:" + +#: 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 "Nombre:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:69 +msgid "Save settings" +msgstr "Guardar configuración" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "panel de munición" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Pantalla de munición:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Mostrar sólo la munición 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 "Izquierda" + +#: 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 "Derecha" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Panel de chat" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "Entradas de chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Tamaño del chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "Tiempo de vida del chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "Alarma de chat" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Panel de Información del Motor" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Información del Motor:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "Usar un algoritmo de promediado de fps" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Panel de 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 "Alineado de 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 "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 "Fuera" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +msgid "Icon alignment:" +msgstr "Alineado de íconos" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Intercambiar la posición de vida y armadura" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "Panel de Información de Mensajes" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "Información de mensajes:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "Intercambiar alineamiento" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Panel de íconos modificado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "Panel de notificaciónes" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "Notificaciones:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "Imprimir tambien notificaciónes en la consola" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "Intercambiar orden de notificaciónes" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "Tiempo de vida de la entrada:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "Desaparecimento de la entrada:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Panel de Poderes" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "Intercambiar posición de escudo y fuerza" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "Panel de teclas presionadas" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "Panel desactivado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "Panel activado cuando este espectador" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 +msgid "Panel always enabled" +msgstr "Panel sempre activado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "Forzar aspecto:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Panel de Cronómetro de Carrera" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "Panel de Radar" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "Panel activo en juegos de equipo" + +#: 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 "Transparencia:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36 +msgid "Rotation:" +msgstr "Rotación:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "Al frente" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "Oeste" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40 +msgid "South" +msgstr "Sul" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41 +msgid "East" +msgstr "Este" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42 +msgid "North" +msgstr "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 zoom:" + +#: 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 "Reducido" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "Siempre 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 "Panel de Puntos" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "Panel del 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 tiempo pasado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "Panel de votos" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "Transparencia despues del voto:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Panel de armas" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Desaparecer despues:" + +#: 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 "Efecto de desvanecimento" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +#, fuzzy +msgid "EF^None" +msgstr "Ninguno" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Corte" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Transparencia" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "íconos de armas" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "Mostra ID de 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 "Lazo" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Mostrar precision" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Mostrar munición" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Color de la barra de munición:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Transparencia de la barra de munición:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "configuración del panel HUD" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "Panel de fondo por defecto:" + +#: 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 "Color:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:599 +msgid "Border size:" +msgstr "Tamaño de limite:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "Color del equipo:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:625 +msgid "Test team color in configure mode" +msgstr "Probar color del equipo en modo configuración" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:628 +msgid "Padding:" +msgstr "Relleno:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "Muelle de HUD:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +#, fuzzy +msgid "DOCK^Disabled" +msgstr "Desactivado" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +#, fuzzy +msgid "DOCK^Small" +msgstr "Pequeno" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +#, fuzzy +msgid "DOCK^Medium" +msgstr "Medio" + +#: 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 "Configuración de grilla:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Ajustar paneles a la grilla" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Tamaño de grilla:" + +#: 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 "Salir de la configuración" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Multijugador" + +#: 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 "Crear" + +#: 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 "Jugador" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Tipo de juego:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Configuración del encuentro:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Limite de tiempo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "Usar definicion especifica del 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 puntos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "Slots de Jugadores:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Número de bots:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Dificultad del bot:" + +#: 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 "Ganaras" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Puedes ganar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Podrias ganar ganar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Avanzado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Experto" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Profesional" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Asesino" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "No humano" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "Semi-dios" + +#: 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 "Configuración avanzada..." + +#: 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 ninguno" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Comenzar Multijugador!" + +#: 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 "Vueltas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Metas:" + +#: 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 "configuración avanzada del servidor" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Configuración del juego:" + +#: 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 "Proteccion del colocado:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Velocidad del juego:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Configuración del juego en equipo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Escala de daño a aliados:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Daño virtual a aliados (apenas afecta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "Penalizacion de daño a aliados:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "Penalizacion virtual (apenas afecta)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "Equipos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "Votacion de mapa:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "No votar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "2 opciones" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 opciones" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 opciones" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 opciones" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 opciones" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 opciones" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 opciones" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 opciones" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "La mayoría simple gana" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Información del mapa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "Colocado total del item" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "Sólo 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 juego:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 +msgid "Close" +msgstr "Cerrar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Jugar" + +#: 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 con todas las armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Arena con la mayoría de las 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 "Agacharse" + +#: 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 "Vuelo de cohete" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "Empezar sin armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "Poca gravedad" + +#: 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 "aire" + +#: 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 "Las armas permanecen" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "Pérdida de sangre" + +#: 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 "Ninguno" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Mutators del juego" + +#: 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 (no arena)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "con laser" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Arenas especiales:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "Mayoría de las 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 "Grabar demos mientras se juega" + +#: 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 "Limpiar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Demo temporizado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Ingresar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +#, fuzzy +msgid "SRVS^Empty" +msgstr "Vacío" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +#, fuzzy +msgid "SRVS^Full" +msgstr "Completo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "Pausar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Direccion:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:65 +msgid "Info..." +msgstr "Información..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 +msgid "Join!" +msgstr "Ingresar!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "Información del 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 configuración modificada" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 +msgid "Official settings" +msgstr "configuración oficial" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197 +msgid "N/A (can't connect)" +msgstr "N/A (no se puede conectar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "not supported (can't connect)" +msgstr "no soportado (no se puede conectar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "not supported (won't encrypt)" +msgstr "no soportado (sin cifrado)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "supported (will encrypt)" +msgstr "soportado (cifrado)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "supported (won't encrypt)" +msgstr "suportado (no cifrado)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "requested (will encrypt)" +msgstr "pedido (cifrado)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "requested (won't encrypt)" +msgstr "pedido (sin cifrado)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223 +msgid "required (can't connect)" +msgstr "requerido (no se puede conectarr)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225 +msgid "required (will encrypt)" +msgstr "requerido (cifrado)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:246 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:269 +msgid "Players:" +msgstr "Jugadores:" + +#: 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 "Jugabilidad:" + +#: 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 "Llave:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 +msgid "Encryption:" +msgstr "Encriptación:" + +#: 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 visión:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Ver flotando:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Factor de zoom:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Velocidad de zoom:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Configuración de 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 "Tamaño da mira:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Transparencia da mira:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Color de mira:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Activar punto central" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Tamaño:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Test de tiro:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +#, fuzzy +msgid "HTST^None" +msgstr "Ninguno" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "Apuntado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Enemigos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Configurar puntos de camino..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "Entrar en el editor de HUD" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Forzar modelos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +#, fuzzy +msgid "MDL^None" +msgstr "Ninguno" + +#: 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 efectos de sangre" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Gibs:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +#, fuzzy +msgid "GIBS^None" +msgstr "Ninguno" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "Pocas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +#, fuzzy +msgid "GIBS^Many" +msgstr "Muchas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +#, fuzzy +msgid "GIBS^Lots" +msgstr "Abundante" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Daño 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 "Puntos de camino" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Show base waypoints" +msgstr "Mostrar puntos de camino" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 +msgid "Waypoint scale:" +msgstr "Escala:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint alpha:" +msgstr "Transparencia:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Show names:" +msgstr "Mostrar nombres:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 +msgid "Teammates" +msgstr "Compañeros de equipo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 +msgid "All players" +msgstr "Todos los jugadores" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "configuración de armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Lista de prioridad de armas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Arriba" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Abajo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "Usar lista de prioridad para ciclo de armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Cambiar de arma al recojer" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "Dibujar modelo de arma en primera persona" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "Alinear a la izquierda" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "Alinear a la derecha" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "Invertir vista horizontalmente" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "Novedades" + +#: 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 "Salir" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "Estas seguro de querer salir?" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "Si" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "No" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Configuración" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Entrada" + +#: 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 "Efectos" + +#: qcsrc/menu/xonotic/dialog_settings.c:21 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:4 +msgid "Audio" +msgstr "Sonido" + +#: qcsrc/menu/xonotic/dialog_settings.c:22 +#: qcsrc/menu/xonotic/dialog_settings_network.c:4 +msgid "Network" +msgstr "Red" + +#: 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 "Musica:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +#, fuzzy +msgid "VOL^Ambient:" +msgstr "Ambiente:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Información:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Items:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Dolor:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Jugador:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Disparos:" + +#: 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 "Frecuencia:" + +#: 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 "Canales:" + +#: 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 "Intercambiar Stereo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Modo para auricular" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Voces espaciales:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +#, fuzzy +msgid "VOCS^None" +msgstr "Ninguno" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +#, fuzzy +msgid "VOCS^Taunts" +msgstr "bromas" + +#: 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 "Nivel de taunts:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +#, fuzzy +msgid "RNG^Very short" +msgstr "Bien corto" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +#, fuzzy +msgid "RNG^Short" +msgstr "Corto" + +#: 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 Automatico" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Aviso de tiempo:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +#, fuzzy +msgid "WRN^None" +msgstr "Ninguno" + +#: 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 "Sonidos del menú" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Predefinición de calidad:" + +#: 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 "Bajo" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +#, fuzzy +msgid "PRE^Medium" +msgstr "Media" + +#: 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 "Detalles 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 "Bajo" + +#: 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 "Bueno" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +#, fuzzy +msgid "DET^Best" +msgstr "Mejor" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +#, fuzzy +msgid "DET^Insane" +msgstr "Insano" + +#: 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 "Deshabilitado" + +#: 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 "Resolución de textura:" + +#: 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 "Bajo" + +#: 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 "Bueno" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +#, fuzzy +msgid "RES^Best" +msgstr "Mejor" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "Evitar compresion de Textura con Pérdida" + +#: 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 "Deshabilitado" + +#: 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 "Calidad de partículas:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Distancia de 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 "Distancia:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Tiempo:" + +#: 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 "Mapeado Deluxe" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "Brillo" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "Despl. de mapeado" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "Mapeado Relief" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:143 +msgid "Reflections:" +msgstr "Reflejos:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Borroso" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +#, fuzzy +msgid "REFL^Good" +msgstr "Bueno" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Ajustado" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Mostrar superficies" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Sin iluminación dinámica" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Aproximación de flash mezclado" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Iluminación dinámica en tiempo 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 "Iluminación del mundo en tiempo real" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Usar mapa de normales" + +#: 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 de oclusion" + +#: 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 "Distorsión p/ movimiento:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:188 +msgid "Damage blur:" +msgstr "Distorsión por daño:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Asignacion de Teclas" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Cambiar tecla..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Editar..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Sensibilidad:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "Velocidad del puntero:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Filtro del raton" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Invertir eje Y" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "Usar entrada de joystick" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "Desactivar aceleracion del raton" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "\"entrar a la consola\" tambien cerrar" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 +msgid "User defined key bind" +msgstr "Usar teclas definidas" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Comandar cuando se presiona:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Comandar cuando se suelta:" + +#: 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 "Textura del menú:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Mostrar el tiempo actual" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Mostrar la fecha actual" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "Mostrar cuadros por segundo" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Medidor de Velocidad" + +#: 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 "nudos" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Mostrar acelerómetro" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Escala del acelerómetro:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Minimizar retardo de entrada" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Configuración avanzada" + +#: 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 "Configuración:" + +#: 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 "Descripción:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Predicción de movimento de lado del cliente" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Mostrar gráfico de red" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Velocidad de red:" + +#: 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 ancha" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Paquetes de entrada /s" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "Descargas via HTTP:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "Descargas:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Velocidad (kB/s):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "Puerto UDP del Cliente:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Resolución:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Tamaño de Font/UI:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +#, fuzzy +msgid "SZ^Unreadable" +msgstr "Ilegible" + +#: 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 "Muy pequeña" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +#, fuzzy +msgid "SZ^Small" +msgstr "Pequeña" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +#, fuzzy +msgid "SZ^Medium" +msgstr "Media" + +#: 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 "Profundidad del color:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "Pantalla entera" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "Sincronizacion 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 como manejador de colores" + +#: 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 +#, fuzzy +msgid "VBO^Off" +msgstr "Desactivado" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:60 +msgid "Vertices, some Tris (compatible)" +msgstr "Vértices, algunos triangulos (compatible)" + +#: 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 "Vertices y triangulos" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "Depth first:" +msgstr "Profundidad primero:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +#, fuzzy +msgid "DF^Disabled" +msgstr "Desactivado" + +#: 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 multi-hilos OpenGL" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:77 +msgid "Wait for GPU to finish each frame" +msgstr "Esperar a la GPU para terminar cada frame" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:80 +msgid "Brightness:" +msgstr "Brillo:" + +#: 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 "Resaltador de contraste" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:92 +msgid "Saturation:" +msgstr "Saturacion de color:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:98 +#, fuzzy +msgid "LIT^Ambient:" +msgstr "Ambiente:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:101 +msgid "Intensity:" +msgstr "Intensidad:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Jugador" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "Accion instantanea! (Mapa aleatorio con bots)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Comenzar!" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Vencedor" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Selección de equipo" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "Ingresar 'mejor' equipo (selección automática)" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "rojo" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "azul" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "amarillo" + +#: 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 "No vuelva a presionar este boton!" + +#: 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? no puedes jugarlo (m es nulo). Reflitrando para que esto no vuelva " +"a ocurrir.\n" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "Servidor de Xonotic de %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? no puedes jugarlo (tipo de juego invalido). Reflitrado para que esto " +"no vuelva a ocurrir.\n" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.c:360 +msgid "Remove" +msgstr "Remover" + +#: qcsrc/menu/xonotic/serverlist.c:362 +msgid "Bookmark" +msgstr "Marcador" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Ping" +msgstr "Ping" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Host name" +msgstr "Nombre del 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 "Jugadores" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "" +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 "DESACTIVADO" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +#, fuzzy +msgid "VOL^MAX" +msgstr "MAXIMO" + +#: 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 "Se ha recibido un pedido de datos HTTP para un id inválido: %d. \n" + +#: qcsrc/menu/xonotic/util.qc:285 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "error recibiendo notificación de actualización: el estado es %d\n" + +#: qcsrc/menu/xonotic/util.qc:290 +msgid "error: received HTML instead of an update notification\n" +msgstr "error: se ha recibido HTML en vez de una notificación de actualización\n" + +#: qcsrc/menu/xonotic/util.qc:295 +msgid "error: received carriage returns from update notification server\n" +msgstr "" +"error: se recibieron retornos de carro desde el servidor que notifica las actualizaciones\n" + +#: qcsrc/menu/xonotic/util.qc:316 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"Actualización puede ser descargada en:\n" +"%s\n" + +#: qcsrc/menu/xonotic/util.qc:337 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Generación automática de información para mapas nuevos..." + +#: qcsrc/menu/xonotic/util.qc:432 +#, c-format +msgid "Update to %s now!" +msgstr "Actualizar para %s ahora!" + +#: qcsrc/menu/xonotic/util.qc:509 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"^1ERROR: Se requiere la compresion de texturas, pero no es soportada.\n" +"^1Pueden ocurrir posibles problemas visuales.\n" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Arena" +msgstr "Arena" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Assault" +msgstr "Asalto" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Capture The Flag" +msgstr "Captura la Bandera" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Clan Arena" +msgstr "Clan arena" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Deathmatch" +msgstr "Combate a muerte" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Domination" +msgstr "Dominación" + +#: 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 "Caza de llave" + +#: qcsrc/menu/xonotic/util.qc:540 +msgid "Last Man Standing" +msgstr "Ultimo Sobreviviente" + +#: qcsrc/menu/xonotic/util.qc:541 +msgid "Nexball" +msgstr "Nexball" + +#: qcsrc/menu/xonotic/util.qc:542 +msgid "Onslaught" +msgstr "Embestida" + +#: qcsrc/menu/xonotic/util.qc:543 +msgid "Race" +msgstr "Carrera" + +#: qcsrc/menu/xonotic/util.qc:544 +msgid "Race CTS" +msgstr "Carrera CTS" + +#: qcsrc/menu/xonotic/util.qc:545 +msgid "Runematch" +msgstr "Runamatch" + +#: qcsrc/menu/xonotic/util.qc:546 +msgid "Team Deathmatch" +msgstr "Combate a muerte por equipos" + +#: 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 "Fondo:" + +#: 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 Defecto" + +#: qcsrc/menu/xonotic/util.qc:596 +msgid "Use default" +msgstr "Usar por defecto" + +#: qcsrc/menu/xonotic/util.qc:616 +msgid "Team Color:" +msgstr "Color del equipo:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Activar panel" + +#: 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 logró autodestruirse con el Crylink" + +#: qcsrc/server/w_crylink.qc:650 +#, c-format +msgid "%s could not hide from %s's Crylink" +msgstr "%s no se pudo esconder del Crylink de %s" + +#: qcsrc/server/w_crylink.qc:652 +#, c-format +msgid "%s was too close to %s's Crylink" +msgstr "%s estuvo demasiado cerca del Crylink de %s" + +#: qcsrc/server/w_crylink.qc:654 +#, c-format +msgid "%s took a close look at %s's Crylink" +msgstr "%s miró de cerca al 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 no pudo recordar donde dejó su plasma la última vez" + +#: qcsrc/server/w_electro.qc:505 +#, c-format +msgid "%s played with plasma" +msgstr "%s jugó con plasma" + +#: qcsrc/server/w_electro.qc:512 +#, c-format +msgid "%s just noticed %s's blue ball" +msgstr "%s acaba de percatarse de la bola azul de %s" + +#: qcsrc/server/w_electro.qc:514 +#, c-format +msgid "%s got in touch with %s's blue ball" +msgstr "%s tuvo un encuentro cercano con la bola azul de %s" + +#: qcsrc/server/w_electro.qc:519 +#, c-format +msgid "%s felt the electrifying air of %s's combo" +msgstr "%s sintió el aire electrificante del combo de %s" + +#: qcsrc/server/w_electro.qc:521 +#, c-format +msgid "%s got too close to %s's blue beam" +msgstr "%s estuvo demasiado cerca del rayo azul de %s" + +#: qcsrc/server/w_electro.qc:523 +#, c-format +msgid "%s was blasted by %s's blue beam" +msgstr "%s estuvo en estado critico por el rayo azul de %s" + +#: 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 se olvidó de algunas minas de fuego" + +#: qcsrc/server/w_fireball.qc:394 qcsrc/server/w_hlac.qc:223 +#, c-format +msgid "%s should have used a smaller gun" +msgstr "%s tendría que haber usado un arma más chica" + +#: qcsrc/server/w_fireball.qc:401 +#, c-format +msgid "%s tried to catch %s's firemine" +msgstr "%s intentó agarrar la mina de fuego de %s" + +#: qcsrc/server/w_fireball.qc:403 +#, c-format +msgid "%s fatefully ignored %s's firemine" +msgstr "%s fatalmente ignoró la mina de fuego de %s" + +#: qcsrc/server/w_fireball.qc:410 +#, c-format +msgid "%s could not hide from %s's fireball" +msgstr "%s no se puedo esconder del fireball de %s" + +#: qcsrc/server/w_fireball.qc:412 +#, c-format +msgid "%s saw the pretty lights of %s's fireball" +msgstr "%s vió las lindas luces del fireball de %s" + +#: qcsrc/server/w_fireball.qc:415 +#, c-format +msgid "%s got too close to %s's fireball" +msgstr "%s estuvo demasiado cerca del fireball de %s" + +#: qcsrc/server/w_fireball.qc:417 +#, c-format +msgid "%s tasted %s's fireball" +msgstr "%s probó el fireball de %s" + +#: qcsrc/server/w_grenadelauncher.qc:2 +msgid "Mortar" +msgstr "Mortero" + +#: qcsrc/server/w_grenadelauncher.qc:357 +#, c-format +msgid "%s tried out his own grenade" +msgstr "%s probó su propia granada" + +#: qcsrc/server/w_grenadelauncher.qc:359 +#, c-format +msgid "%s detonated" +msgstr "%s ha detonado" + +#: qcsrc/server/w_grenadelauncher.qc:365 +#, c-format +msgid "%s didn't see %s's grenade" +msgstr "%s no vió la granada de %s" + +#: qcsrc/server/w_grenadelauncher.qc:367 +#, c-format +msgid "%s almost dodged %s's grenade" +msgstr "%s casi esquivó la granada de %s" + +#: qcsrc/server/w_grenadelauncher.qc:369 +#, c-format +msgid "%s ate %s's grenade" +msgstr "%s se comió la granada 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 jugó con pequeños cohetes" + +#: qcsrc/server/w_hagar.qc:189 +#, c-format +msgid "%s hoped %s's missiles wouldn't bounce" +msgstr "%s esperó que no le reboten misiles de %s" + +#: qcsrc/server/w_hagar.qc:191 +#, c-format +msgid "%s was pummeled by %s" +msgstr "%s fue molido por %s" + +#: 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 fue rebanado por %s" + +#: 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 hizo lo imposible" + +#: qcsrc/server/w_hook.qc:269 +#, c-format +msgid "%s has run into %s's gravity bomb" +msgstr "%s entró a la bomba de gravedad 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 se fué al infierno montado en su laser" + +#: qcsrc/server/w_laser.qc:289 +#, c-format +msgid "%s was cut in half by %s's gauntlet" +msgstr "%s fue cortado a la mitad por el gauntlet de %s" + +#: qcsrc/server/w_laser.qc:291 +#, c-format +msgid "%s was lasered to death by %s" +msgstr "%s fue muerto por el laser de %s" + +#: 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 explotó" + +#: qcsrc/server/w_minelayer.qc:442 +#, c-format +msgid "%s got too close to %s's mine" +msgstr "%s estuvo cerca de la mina de %s" + +#: qcsrc/server/w_minelayer.qc:444 +#, c-format +msgid "%s almost dodged %s's mine" +msgstr "%s casi esquivo la mina de %s" + +#: qcsrc/server/w_minelayer.qc:446 +#, c-format +msgid "%s stepped on %s's mine" +msgstr "%s caminó encima de la mina de %s" + +#: 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 ha sido vaporizado por %s" + +#: 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 sintió a %s hacer lo imposible por él/ella" + +#: 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 estuvo demasiado cerca del cohete de %s" + +#: qcsrc/server/w_rocketlauncher.qc:486 +#, c-format +msgid "%s almost dodged %s's rocket" +msgstr "%s casi esquivó el cohete de %s" + +#: qcsrc/server/w_rocketlauncher.qc:488 +#, c-format +msgid "%s ate %s's rocket" +msgstr "%s se comió el misil de %s" + +#: 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 se cruzó con el flac de %s" + +#: qcsrc/server/w_seeker.qc:529 +#, c-format +msgid "%s was tagged by %s" +msgstr "%s fue marcado por %s" + +#: qcsrc/server/w_shotgun.qc:2 +msgid "Shotgun" +msgstr "Escopeta" + +#: qcsrc/server/w_shotgun.qc:183 +#, c-format +msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun" +msgstr "%2$s ^7abofeteó %1$s ^7con una gran ^2shotgun" + +#: qcsrc/server/w_shotgun.qc:185 +#, c-format +msgid "%s was gunned by %s" +msgstr "%s fue tiroteado por %s" + +#: 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 se disparó a si mismo" + +#: qcsrc/server/w_sniperrifle.qc:323 +#, c-format +msgid "%s sniped themself somehow" +msgstr "%s se disparó a si mismo" + +#: qcsrc/server/w_sniperrifle.qc:330 +#, c-format +msgid "%s failed to hide from %s's bullet hail" +msgstr "%s no logró esconderse del granizo de balas de %s" + +#: qcsrc/server/w_sniperrifle.qc:332 +#, c-format +msgid "%s died in %s's bullet hail" +msgstr "%s murió en el granizo de balas de %s" + +#: qcsrc/server/w_sniperrifle.qc:339 +#, c-format +msgid "%s failed to hide from %s's rifle" +msgstr "%s no logró esconderse del rifle de %s" + +#: qcsrc/server/w_sniperrifle.qc:344 +#, c-format +msgid "%s got hit in the head by %s" +msgstr "%s fué disparado en la cabeza por %s" + +#: qcsrc/server/w_sniperrifle.qc:346 qcsrc/server/w_uzi.qc:291 +#, c-format +msgid "%s was sniped by %s" +msgstr "%s fué disparado con un rifle por %s" + +#: 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 se lastimó sus propios oídos con la Tuba de @!#%%" + +#: qcsrc/server/w_tuba.qc:264 +#, c-format +msgid "%s died of %s's great playing on the @!#%%'n Tuba" +msgstr "%s murió por la gran interpretación de Tuba de @!#%%" + +#: 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 fue totalmente acribillado por %s" + +#~ msgid "Waypoint settings:" +#~ msgstr "configuración de puntos de camino:" + +#~ msgid "%d/%d" +#~ msgstr "%d/%d" diff --git a/menu.dat.fi.po b/menu.dat.fi.po new file mode 100644 index 000000000..04f96094f --- /dev/null +++ b/menu.dat.fi.po @@ -0,0 +1,2394 @@ +# 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-01-18 17:06+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Henry 'Exitium' Sanmark <henry.sanmark@gmail.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4MQC Version tiedot: %s\n" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "HUOM: tekstikentän teksti %s on liian pitkä, joten se lyhennetään %f\n" + +#: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "omavalintainen" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "Selainta ei ole alustettu!" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Esine %d" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +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/xonotic/dialog_settings_video.c:4 +#: qcsrc/menu/xonotic/dialog_settings.c:19 +msgid "Video" +msgstr "Video" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Näytön tarkkuus:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Kirjainten/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 Occlusion Queries" +msgstr "Käytä Occlusion Queryä" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:55 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Vertex Buffer Object (VBO)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:58 +msgid "VBO^Off" +msgstr "VBO^Pois" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +msgid "Vertices, some Tris (compatible)" +msgstr "Verteksit, vähän kolmioita (yhteensopivin)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:62 +msgid "Vertices" +msgstr "Verteksit" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices and Triangles" +msgstr "Verteksit ja kolmiot" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:65 +msgid "Depth first:" +msgstr "Syvyys ensin (Depth First):" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "DF^Disabled" +msgstr "DF^Pois" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:68 +msgid "DF^World" +msgstr "DF^Maailma" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +msgid "DF^All" +msgstr "DF^Kaikki" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:73 +msgid "Disable multithreaded OpenGL" +msgstr "Ota monisäkeinen OpenGL pois päältä" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Wait for GPU to finish each frame" +msgstr "Anna näytönohjaimen viimeistellä jokainen ruutu" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:78 +msgid "Brightness:" +msgstr "Kirkkaus:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:81 +msgid "Contrast:" +msgstr "Kontrasti:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:84 +msgid "Gamma:" +msgstr "Gamma:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:87 +msgid "Contrast boost:" +msgstr "Kontrastin lisäys:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:90 +msgid "Saturation:" +msgstr "Kylläisyys:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:95 +msgid "Use GLSL to handle color control" +msgstr "Käytä GLSL:ää värien hallinnassa" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:99 +msgid "LIT^Ambient:" +msgstr "LIT^Ympäristö:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:102 +msgid "Intensity:" +msgstr "Intensiivisyys:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:106 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:30 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:41 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:194 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:193 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:178 +msgid "Apply immediately" +msgstr "Ota heti käyttöön" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +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:602 +#: qcsrc/menu/xonotic/util.qc:618 qcsrc/menu/xonotic/util.qc:635 +msgid "Disable" +msgstr "Pois päältä" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 qcsrc/menu/xonotic/util.qc:607 +msgid "Color:" +msgstr "Väri:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 qcsrc/menu/xonotic/util.qc:615 +msgid "Border size:" +msgstr "Reunan koko:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:43 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:82 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:151 +#: qcsrc/menu/xonotic/util.qc:624 +msgid "Alpha:" +msgstr "Alpha:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "Joukkueen väri:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:641 +msgid "Test team color in configure mode" +msgstr "Kokeile joukkueen väriä muokkaustilassa" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:644 +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_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_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Modi-ikonit paneeli" + +#: 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_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Välimatkat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Waypoint settings:" +msgstr "Välimatkojen asetukset:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 +msgid "Show base waypoints" +msgstr "Näytä päämäärien välimatkat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint scale:" +msgstr "Välimatkan skaala:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Waypoint alpha:" +msgstr "Välimatkojen alpha:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +msgid "Show names:" +msgstr "Näytä nimet:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +msgid "Never" +msgstr "Ei ikinä" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +msgid "Teammates" +msgstr "Oma joukkue" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +msgid "All players" +msgstr "Kaikki pelaajat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:46 +#: qcsrc/menu/xonotic/dialog_credits.c:21 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:59 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:269 +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:55 +msgid "OK" +msgstr "OK" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Tekijät" + +#: 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:24 +#: qcsrc/menu/xonotic/dialog_settings_input.c:41 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:29 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:33 +msgid "Clear" +msgstr "Tyhjennä" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Asetus:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:248 +msgid "Type:" +msgstr "Tyyppi:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Arvo:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +msgid "Description:" +msgstr "Kuvaus:" + +#: 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_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" + +#: 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 "seuraa sivusta" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Asetukset" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Ohjaus" + +#: 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_firstrun.c:4 +msgid "Welcome" +msgstr "Tervetuloa" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:32 +msgid "Please answer a few initial questions to enhance the game experience." +msgstr "Ole hyvä ja vastaa muutamaan alustavaan kysymykseen parantaaksesi pelikokemustasi." + +#: qcsrc/menu/xonotic/dialog_firstrun.c:36 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Tekstin kieli:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:45 +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:39 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:40 +msgid "Name:" +msgstr "Nimi:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:67 +msgid "Save settings" +msgstr "Tallenna asetukset" + +#: 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/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 komentorivin" + +#: 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: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/mainwindow.c:35 qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "Älä paina enää näppäintä!" + +#: qcsrc/menu/xonotic/dialog_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_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_multiplayer_join.c:4 +msgid "Join" +msgstr "Liity" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +msgid "Filter:" +msgstr "Suodatin:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +msgid "SRVS^Empty" +msgstr "SRVS^Tyhjä" + +#: 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:311 +msgid "Join!" +msgstr "Liity!" + +#: 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/util.qh:49 +msgid "Enable panel" +msgstr "Ota paneeli käyttöön" + +#: 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.c:84 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +msgid "Advanced settings..." +msgstr "Edistyneet asetukset..." + +#: 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 bottien kera)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Aloita yksinpeli!" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "<TITLE>" +msgstr "<TITLE>" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "<AUTHOR>" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "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_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:177 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +msgid "N/A" +msgstr "N/A" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:151 +#, c-format +msgid "%d/%d" +msgstr "%d/%d" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +msgid "Official settings" +msgstr "Viralliset asetukset" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#, c-format +msgid "%d modified settings" +msgstr "%d muokatut asetukset" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191 +msgid "N/A (can't connect)" +msgstr "N/A (ei voida yhdistää)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199 +msgid "not supported (can't connect)" +msgstr "ei tuettu (ei voida yhdistää)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:201 +msgid "not supported (won't encrypt)" +msgstr "ei tuettu (salaus ei onnistu)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "supported (will encrypt)" +msgstr "tuettu (salaus onnistuu)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "supported (won't encrypt)" +msgstr "tuettu (salaus ei onnistu)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "requested (will encrypt)" +msgstr "pyydetty (salaus onnistuu)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "requested (won't encrypt)" +msgstr "pyydetty (salaus ei onnistu)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "required (can't connect)" +msgstr "vaadittu (ei voida yhdistää)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "required (will encrypt)" +msgstr "vaadittu (salaus onnistuu)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:240 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +msgid "Players:" +msgstr "Pelaajat:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:253 +msgid "Map:" +msgstr "Kartta:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +msgid "Gameplay:" +msgstr "Pelitila:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +msgid "Bots:" +msgstr "Botit:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +msgid "Mod:" +msgstr "Modi:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +msgid "Version:" +msgstr "Versio:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +msgid "Ping:" +msgstr "Viive:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "CA:" +msgstr "Lipunryöstö (CTF)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "Key:" +msgstr "Avain (Key)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Encryption:" +msgstr "Salaus:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +msgid "Close" +msgstr "Sulje" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +msgid "VOL^OFF" +msgstr "VOL^OFF" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +msgid "VOL^MAX" +msgstr "VOL^MAX" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "%s dB" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "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_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: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_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Kilpajuoksun ajanoton paneeli" + +#: 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_multiplayer_create.c:5 +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +msgid "Create" +msgstr "Luo" + +#: 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 "Helppo voitto" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Helpohko" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Keskitaso" + +#: 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: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_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Voittaja" + +#: 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_multiplayer_playersetup.c:5 +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +msgid "Player Setup" +msgstr "Pelaajan asetukset" + +#: 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/cvarlist.c:84 +msgid "will be saved to config.cfg" +msgstr "tallennetaan config.cfg-tiedostoon" + +#: qcsrc/menu/xonotic/cvarlist.c:86 +msgid "will not be saved" +msgstr "ei tallenneta" + +#: qcsrc/menu/xonotic/cvarlist.c:88 +msgid "private" +msgstr "yksityinen" + +#: qcsrc/menu/xonotic/cvarlist.c:90 +msgid "engine setting" +msgstr "pelimoottorin asetus" + +#: qcsrc/menu/xonotic/cvarlist.c:92 +msgid "read only" +msgstr "vain luku" + +#: 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_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:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Pelaa" + +#: 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" + +#: qcsrc/menu/xonotic/util.qc:263 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "Vastaanotettiin epäkelpo HTTP datapyyntö: %d.\n" + +#: qcsrc/menu/xonotic/util.qc:278 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "virhe vastaanottaessa päivitystiedotetta: tilanne %d\n" + +#: qcsrc/menu/xonotic/util.qc:283 +msgid "error: received HTML instead of an update notification\n" +msgstr "virhe: vastaanotettiin HTML päivitystiedotteen asemesta\n" + +#: qcsrc/menu/xonotic/util.qc:288 +msgid "error: received carriage returns from update notification server\n" +msgstr "virhe: vastaanotettiin tyhjää dataa päivitystiedotepalvelimelta\n" + +#: qcsrc/menu/xonotic/util.qc:309 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "Päivitys on ladattavissa:\n" +"%s\n" + +#: qcsrc/menu/xonotic/util.qc:330 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Luodaan automaattisesti karttatietoja vastikään lisätyille kartoille..." + +#: qcsrc/menu/xonotic/util.qc:425 +#, c-format +msgid "Update to %s now!" +msgstr "Päivitä versioon %s nyt!" + +#: qcsrc/menu/xonotic/util.qc:502 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "^1VIRHE: Tekstuurien pakkaus vaaditaan mutta ei ole tuettuna.\n" +"^1Grafiikkavirheitä odotettavissa.\n" + +#: qcsrc/menu/xonotic/util.qc:524 +msgid "Arena" +msgstr "Areena" + +#: qcsrc/menu/xonotic/util.qc:525 +msgid "Assault" +msgstr "Rynnäkkö (Assault)" + +#: qcsrc/menu/xonotic/util.qc:526 +msgid "Capture The Flag" +msgstr "Lipunryöstö (CTF)" + +#: qcsrc/menu/xonotic/util.qc:527 +msgid "Clan Arena" +msgstr "Klaaniareena (Clan Arena)" + +#: qcsrc/menu/xonotic/util.qc:528 +msgid "Deathmatch" +msgstr "Mättö (Deathmatch)" + +#: qcsrc/menu/xonotic/util.qc:529 +msgid "Domination" +msgstr "Hallinta (Domination)" + +#: qcsrc/menu/xonotic/util.qc:530 +msgid "Freeze Tag" +msgstr "Pakkashippa (Freeze Tag)" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Keepaway" +msgstr "Pakomatka (Keepaway)" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Key Hunt" +msgstr "Avaimenmetsästys (Key Hunt)" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Last Man Standing" +msgstr "Viimeiseen mieheen (Last Man Standing)" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Nexball" +msgstr "Nexpallo (Nexball)" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Onslaught" +msgstr "Suurtaistelu (Onslaught)" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Race" +msgstr "Kilpailu (RACE)" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Race CTS" +msgstr "Kilpailu CTS" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Runematch" +msgstr "Riimu-ottelu (Runematch)" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Team Deathmatch" +msgstr "Joukkuemättö (Team Deatchmatch)" + +#: qcsrc/menu/xonotic/util.qc:558 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "@!#% tuubanheitto!" + +#: qcsrc/menu/xonotic/util.qc:599 +msgid "Background:" +msgstr "Tausta:" + +#: qcsrc/menu/xonotic/util.qc:601 qcsrc/menu/xonotic/util.qc:617 +#: qcsrc/menu/xonotic/util.qc:626 qcsrc/menu/xonotic/util.qc:634 +#: qcsrc/menu/xonotic/util.qc:646 +msgid "Default" +msgstr "Perusasetus" + +#: qcsrc/menu/xonotic/util.qc:612 +msgid "Use default" +msgstr "Käytä perusasetusta" + +#: qcsrc/menu/xonotic/util.qc:632 +msgid "Team Color:" +msgstr "Joukkueen väri" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "<no model found>" +msgstr "<mallia ei löytynyt>" + +#: 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_powerups.c:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:40 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:40 +msgid "Left" +msgstr "Vasen" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:41 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:41 +msgid "Right" +msgstr "Oikea" + +#: qcsrc/menu/xonotic/dialog_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_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Laadun esiasetus:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +msgid "PRE^OMG!" +msgstr "PRE^Nörtti" + +#: 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 "Kappaleiden laatu:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Kappaleiden 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 "Pikselikohtainen valaistus" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "Kiilto" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "Korosta tekstuurien kuhmuja" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "Tehokas tekstuurien kuhmujen korostus" + +#: 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 "Yksinkertaiset valot" + +#: 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ä tekstuurien suunnattua varjostamista" + +#: 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:175 +msgid "Bloom" +msgstr "Hehku" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:177 +msgid "High Dynamic Range (HDR)" +msgstr "HDR" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:181 +msgid "Motion blur:" +msgstr "Liikesumeus:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:187 +msgid "Damage blur:" +msgstr "Vahinkosumeus:" + +#: 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/serverlist.c:357 +msgid "Remove" +msgstr "Poista" + +#: qcsrc/menu/xonotic/serverlist.c:359 +msgid "Bookmark" +msgstr "Kirjanmerkki" + +#: qcsrc/menu/xonotic/serverlist.c:515 +msgid "Ping" +msgstr "Viive" + +#: qcsrc/menu/xonotic/serverlist.c:516 +msgid "Host name" +msgstr "Palvelimen nimi" + +#: qcsrc/menu/xonotic/serverlist.c:517 +msgid "Map" +msgstr "Kartta" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Type" +msgstr "Tyyppi" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Players" +msgstr "Pelaajat" + +#: 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/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:43 +msgid "Timedemo" +msgstr "Aikademo" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Tehonlisäyspaneeli" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +msgid "Enable status bar" +msgstr "Ota tilapalkki käyttöön" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +msgid "Status bar alignment:" +msgstr "Tilapalkin kohdistus:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:42 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:42 +msgid "Inward" +msgstr "Sisäänpäin" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:43 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:43 +msgid "Outward" +msgstr "Ulospäin" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +msgid "Icon alignment:" +msgstr "Kuvakkeen kohdistus:" + +#: 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_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äristö:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Tiedoitukset:" + +#: 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 "Puhe:" + +#: 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 "Taajuus:" + +#: 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_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Moninpeli" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Palvelimet" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Demot" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Elämä/panssaripaneeli" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Vaihda elämän ja panssarin paikkaa" diff --git a/menu.dat.fr.po b/menu.dat.fr.po index 1c9d54646..031125cb1 100644 --- a/menu.dat.fr.po +++ b/menu.dat.fr.po @@ -1,21 +1,23 @@ # Xonotic French Translation. # Copyright (C) 2011 # This file is distributed under the same license as the PACKAGE package. -# Calinou <hugohachel@gmail.com>, 2011. # -#, fuzzy +# Calinou <hugohachel@gmail.com>, 2011. +# Maxime Paradis <taximus.micro@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: Xonotic 0.1preview\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-27 17:06+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" +"POT-Creation-Date: 2011-02-07 07:50+0100\n" +"PO-Revision-Date: 2011-03-09 15:48-0500\n" +"Last-Translator: Maxime Paradis <taximus.micro@gmail.com>\n" +"Language-Team: French <kde-i18n-doc@kde.org>\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: qcsrc/menu/gamecommand.qc:47 #, c-format @@ -33,7 +35,7 @@ msgstr " sync - recharge toutes les variables sur la page actuelle\n" #: qcsrc/menu/gamecommand.qc:67 msgid " directmenu ITEM - select a menu item as main item\n" msgstr "" -" directmenu OBJET - séléctionner un objet de menu comme objet principal\n" +" directmenu OBJET - sélectionner un objet de menu comme objet principal\n" #: qcsrc/menu/gamecommand.qc:193 msgid "error creating curl handle\n" @@ -68,7 +70,7 @@ msgstr "%d (%s)" #: qcsrc/menu/item/textslider.c:29 qcsrc/menu/item/textslider.c:31 msgid "custom" -msgstr "personalisé" +msgstr "personnalisé" #: qcsrc/menu/menu.qc:29 #, c-format @@ -85,23 +87,23 @@ msgstr "???" msgid "Level %d: %s" msgstr "Niveau %d: %s" -#: qcsrc/menu/xonotic/cvarlist.c:84 +#: qcsrc/menu/xonotic/cvarlist.c:85 msgid "will be saved to config.cfg" -msgstr "sera sauvegardé" +msgstr "sera sauvegardé vers config.cfg" -#: qcsrc/menu/xonotic/cvarlist.c:86 +#: qcsrc/menu/xonotic/cvarlist.c:87 msgid "will not be saved" -msgstr "ne sera pas sauvegardé" +msgstr "ne sera pas sauvegardé vers config.cfg" -#: qcsrc/menu/xonotic/cvarlist.c:88 +#: qcsrc/menu/xonotic/cvarlist.c:89 msgid "private" msgstr "privé" -#: qcsrc/menu/xonotic/cvarlist.c:90 +#: qcsrc/menu/xonotic/cvarlist.c:91 msgid "engine setting" msgstr "paramètre moteur" -#: qcsrc/menu/xonotic/cvarlist.c:92 +#: qcsrc/menu/xonotic/cvarlist.c:93 msgid "read only" msgstr "lecture seule" @@ -112,9 +114,9 @@ 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:46 +#: 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:59 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:61 #: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 msgid "OK" msgstr "OK" @@ -129,6 +131,9 @@ msgid "" "player name to get started. You can change these options later through the " "menu system." msgstr "" +"Bienvenue sur Xonotic, veuillez sélectionner 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 @@ -301,12 +306,12 @@ msgstr "Panneau désactivé" #: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 msgid "Panel enabled when spectating" -msgstr "Paneau activé en spectateur" +msgstr "Panneau activé en spectateur" #: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 #: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 msgid "Panel always enabled" -msgstr "Paneau toujours activé" +msgstr "Panneau toujours activé" #: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 msgid "Forced aspect:" @@ -417,7 +422,7 @@ msgid "Fade out after:" msgstr "Effacer après:" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 msgid "Never" msgstr "Jamais" @@ -468,7 +473,7 @@ msgstr "Monter la précision" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 msgid "Show Ammo" -msgstr "Montrer barre de monitions" +msgstr "Montrer barre de munitions" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 msgid "Ammo bar color:" @@ -510,7 +515,7 @@ msgstr "Couleur d'équipe:" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 qcsrc/menu/xonotic/util.qc:625 msgid "Test team color in configure mode" -msgstr "Affichier la couleur d'équipe en mode configuration" +msgstr "Afficher la couleur d'équipe en mode configuration" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 qcsrc/menu/xonotic/util.qc:628 msgid "Padding:" @@ -546,7 +551,7 @@ msgstr "Paramètres grille:" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 msgid "Snap panels to grid" -msgstr "Coller paneaux sur la grille" +msgstr "Coller panneaux sur la grille" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 msgid "Grid size:" @@ -554,11 +559,11 @@ msgstr "Taille de grille:" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:103 msgid "X:" -msgstr "X:" +msgstr "Hori.:" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:109 msgid "Y:" -msgstr "Y:" +msgstr "Vert.:" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:117 msgid "Exit setup" @@ -655,7 +660,7 @@ msgstr "Expert" #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 msgid "Pro" -msgstr "Professionel" +msgstr "Professionnel" #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 msgid "Assassin" @@ -684,11 +689,11 @@ msgstr "Liste de cartes:" #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 msgid "Select all" -msgstr "Tout séléctionner" +msgstr "Tout sélectionner" #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 msgid "Select none" -msgstr "Ne rien séléctionner" +msgstr "Ne rien sélectionner" #: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 msgid "Start Multiplayer!" @@ -831,7 +836,7 @@ msgid "Game types:" msgstr "Modes de jeux:" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 msgid "Close" msgstr "Fermer" @@ -1012,7 +1017,7 @@ msgid "Info..." msgstr "Info..." #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 msgid "Join!" msgstr "Joindre !" @@ -1022,105 +1027,105 @@ 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:177 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +#: 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:151 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:158 #, c-format -msgid "%d/%d" -msgstr "%d/%d" +msgid "%d/%d, %d free player slots" +msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#: 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:166 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 msgid "Official settings" msgstr "Paramètres Officiels" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191 +#: 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:199 +#: 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:201 +#: 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:205 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 msgid "supported (will encrypt)" msgstr "supporté (cryptage)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +#: 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:211 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 msgid "requested (will encrypt)" -msgstr "démandé (cryptage)" +msgstr "demandé (cryptage)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 msgid "requested (won't encrypt)" -msgstr "démandé (pas de cryptage)" +msgstr "demandé (pas de cryptage)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +#: 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:219 +#: 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:240 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +#: 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:248 +#: 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:253 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 msgid "Map:" msgstr "Carte:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 msgid "Gameplay:" msgstr "Mode:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 msgid "Bots:" msgstr "Robots:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 msgid "Mod:" msgstr "Modification:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 msgid "Version:" msgstr "Version:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 msgid "Ping:" msgstr "Latence:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 msgid "CA:" msgstr "CA:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 msgid "Key:" msgstr "Clé:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 msgid "Encryption:" msgstr "Cryptage:" @@ -1191,7 +1196,7 @@ msgstr "TrueAim" #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 msgid "Enemies" -msgstr "Enemis" +msgstr "Ennemis" #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 msgid "Waypoints setup..." @@ -1259,30 +1264,26 @@ msgid "Waypoints" msgstr "Waypoints" #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 -msgid "Waypoint settings:" -msgstr "Paramètres Waypoint (flèches 3D sur la carte):" - -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 msgid "Show base waypoints" msgstr "Montrer les Waypoints de drapeau" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 msgid "Waypoint scale:" msgstr "Taille des Waypoints:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 msgid "Waypoint alpha:" msgstr "Opacité Waypoints:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 msgid "Show names:" msgstr "Montrer les noms:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 msgid "Teammates" msgstr "Équipiers" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 msgid "All players" msgstr "Tous les joueurs" @@ -1324,7 +1325,7 @@ msgstr "À droite" #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 msgid "Flip view horizontally" -msgstr "Vue Mirroir" +msgstr "Vue Miroir" #: qcsrc/menu/xonotic/dialog_news.c:4 msgid "News" @@ -1393,9 +1394,8 @@ msgid "Music:" msgstr "Musique:" #: qcsrc/menu/xonotic/dialog_settings_audio.c:40 -#, fuzzy msgid "VOL^Ambient:" -msgstr "Ambience:" +msgstr "Ambiance:" #: qcsrc/menu/xonotic/dialog_settings_audio.c:48 msgid "Info:" @@ -1691,7 +1691,7 @@ msgstr "Éviter la compression rapide" #: qcsrc/menu/xonotic/dialog_settings_effects.c:100 msgid "Anisotropy:" -msgstr "Filtrage Anistrope:" +msgstr "Filtrage Anisotrope:" #: qcsrc/menu/xonotic/dialog_settings_effects.c:102 msgid "ANISO^Disabled" @@ -1747,7 +1747,7 @@ msgstr "Textures relief avancé" #: qcsrc/menu/xonotic/dialog_settings_effects.c:143 msgid "Reflections:" -msgstr "Réflections:" +msgstr "Réflexions:" #: qcsrc/menu/xonotic/dialog_settings_effects.c:146 msgid "Blurred" @@ -1832,7 +1832,7 @@ msgstr "Éditer..." #: qcsrc/menu/xonotic/dialog_settings_input.c:46 msgid "Sensitivity:" -msgstr "Senstitivité:" +msgstr "Sensibilité:" #: qcsrc/menu/xonotic/dialog_settings_input.c:49 msgid "UI mouse speed:" @@ -1862,7 +1862,7 @@ msgstr "\"ouvrir la console\" ferme aussi la console" #: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 msgid "User defined key bind" -msgstr "Touche d'éxécution:" +msgstr "Touche d'exécution:" #: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 msgid "Command when pressed:" @@ -1870,7 +1870,7 @@ msgstr "Commande quand appuyée:" #: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 msgid "Command when released:" -msgstr "Commande quand relachée:" +msgstr "Commande quand relâchée:" #: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 msgid "Save" @@ -1952,7 +1952,7 @@ msgstr "Paramètre:" msgid "Value:" msgstr "Valeur:" -#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 msgid "Description:" msgstr "Description:" @@ -2062,18 +2062,18 @@ msgstr "Plein écran" #: qcsrc/menu/xonotic/dialog_settings_video.c:46 msgid "Vertical Synchronization" -msgstr "Syncronisation verticale" +msgstr "Synchronisation verticale" #: qcsrc/menu/xonotic/dialog_settings_video.c:49 msgid "Use OpenGL 2.0 shaders (GLSL)" -msgstr "Utiliser OpenGL 2.0 (GLSL)" +msgstr "Utiliser shader OpenGL 2.0 (GLSL)" #: qcsrc/menu/xonotic/dialog_settings_video.c:52 msgid "Use GLSL to handle color control" msgstr "Utiliser GLSL pour gérer les couleurs" #: qcsrc/menu/xonotic/dialog_settings_video.c:56 -msgid "Vertex Buffer Objects (VBOs)" +msgid "Vertex Buffer Objects (VBOs)\"ourd" msgstr "Objets en tampon mémoire (VBOs)" #: qcsrc/menu/xonotic/dialog_settings_video.c:59 @@ -2094,6 +2094,7 @@ msgid "Vertices and Triangles" msgstr "Points et Triangles" #: qcsrc/menu/xonotic/dialog_settings_video.c:67 +#, fuzzy msgid "Depth first:" msgstr "Fixeur profondeur:" @@ -2141,9 +2142,8 @@ msgid "Saturation:" msgstr "Saturation:" #: qcsrc/menu/xonotic/dialog_settings_video.c:98 -#, fuzzy msgid "LIT^Ambient:" -msgstr "Ambience:" +msgstr "Ambiance:" #: qcsrc/menu/xonotic/dialog_settings_video.c:101 msgid "Intensity:" @@ -2167,11 +2167,11 @@ msgstr "Gagné" #: qcsrc/menu/xonotic/dialog_teamselect.c:5 msgid "Team Selection" -msgstr "Séléction d'équipe" +msgstr "Sélection d'équipe" #: qcsrc/menu/xonotic/dialog_teamselect.c:41 msgid "join 'best' team (auto-select)" -msgstr "auto-séléction équipe (recommandé)" +msgstr "auto-sélection équipe (recommandé)" #: qcsrc/menu/xonotic/dialog_teamselect.c:45 msgid "red" @@ -2220,31 +2220,31 @@ msgstr "" msgid "<no model found>" msgstr "<modèle non trouvé>" -#: qcsrc/menu/xonotic/serverlist.c:357 +#: qcsrc/menu/xonotic/serverlist.c:360 msgid "Remove" msgstr "Supprimer" -#: qcsrc/menu/xonotic/serverlist.c:359 +#: qcsrc/menu/xonotic/serverlist.c:362 msgid "Bookmark" msgstr "Marque-page" -#: qcsrc/menu/xonotic/serverlist.c:515 +#: qcsrc/menu/xonotic/serverlist.c:518 msgid "Ping" msgstr "Latence" -#: qcsrc/menu/xonotic/serverlist.c:516 +#: qcsrc/menu/xonotic/serverlist.c:519 msgid "Host name" msgstr "Nom d'Hôte" -#: qcsrc/menu/xonotic/serverlist.c:517 +#: qcsrc/menu/xonotic/serverlist.c:520 msgid "Map" msgstr "Carte" -#: qcsrc/menu/xonotic/serverlist.c:518 +#: qcsrc/menu/xonotic/serverlist.c:521 msgid "Type" msgstr "Mode" -#: qcsrc/menu/xonotic/serverlist.c:519 +#: qcsrc/menu/xonotic/serverlist.c:522 msgid "Players" msgstr "Joueurs" @@ -2287,7 +2287,8 @@ msgstr "A reçu la demande HTTP d'ID invalide %d.\n" #: qcsrc/menu/xonotic/util.qc:285 #, c-format msgid "error receiving update notification: status is %d\n" -msgstr "error pour recevoir la notification de mise à jour: le statut est %d\n" +msgstr "" +"erreur pour recevoir la notification de mise à jour: le statut est %d\n" #: qcsrc/menu/xonotic/util.qc:290 msgid "error: received HTML instead of an update notification\n" @@ -2419,168 +2420,168 @@ msgstr "Activer ce panneau" #: qcsrc/server/w_crylink.qc:2 msgid "Crylink" -msgstr "" +msgstr "Crylink" -#: qcsrc/server/w_crylink.qc:637 +#: qcsrc/server/w_crylink.qc:645 #, c-format msgid "%s succeeded at self-destructing themself with the Crylink" -msgstr "" +msgstr "%s a réussi à se suicider avec le Crylink" -#: qcsrc/server/w_crylink.qc:642 +#: qcsrc/server/w_crylink.qc:650 #, c-format msgid "%s could not hide from %s's Crylink" -msgstr "" +msgstr "%s n'a pas pu se cacher du Crylink de %s" -#: qcsrc/server/w_crylink.qc:644 +#: qcsrc/server/w_crylink.qc:652 #, c-format msgid "%s was too close to %s's Crylink" -msgstr "" +msgstr "%s a été trop près du Crylink de %s" -#: qcsrc/server/w_crylink.qc:646 +#: qcsrc/server/w_crylink.qc:654 #, c-format msgid "%s took a close look at %s's Crylink" -msgstr "" +msgstr "%s a voulu voir se qui se trouvait dans le Crylink de %s" #: qcsrc/server/w_electro.qc:2 msgid "Electro" -msgstr "" +msgstr "Electro" #: qcsrc/server/w_electro.qc:503 #, c-format msgid "%s could not remember where they put plasma" -msgstr "" +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 "" +msgstr "%s a joué avec du plasma" #: qcsrc/server/w_electro.qc:512 #, c-format msgid "%s just noticed %s's blue ball" -msgstr "" +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 "" +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 "" +msgstr "%s se sent électrisé par le combo de %s" #: qcsrc/server/w_electro.qc:521 #, c-format msgid "%s got too close to %s's blue beam" -msgstr "" +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 "" +msgstr "%s a été désintégré à cause du rayon plasma de %s" #: qcsrc/server/w_fireball.qc:2 #, fuzzy msgid "Fireball" -msgstr "Nexball" +msgstr "Fireball" #: qcsrc/server/w_fireball.qc:392 #, c-format msgid "%s forgot about some firemine" -msgstr "" +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 "" +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 "" +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 "" +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 "" +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 "" +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 "" +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 "" +msgstr "%s a goûté la boule de feu de %s" #: qcsrc/server/w_grenadelauncher.qc:2 msgid "Mortar" -msgstr "" +msgstr "Mortier" #: qcsrc/server/w_grenadelauncher.qc:357 #, c-format msgid "%s tried out his own grenade" -msgstr "" +msgstr "%s a mangé sa propre grenade" #: qcsrc/server/w_grenadelauncher.qc:359 #, c-format msgid "%s detonated" -msgstr "" +msgstr "%s a fait boum" #: qcsrc/server/w_grenadelauncher.qc:365 #, c-format msgid "%s didn't see %s's grenade" -msgstr "" +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 "" +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 "" +msgstr "%s a mangé la grenade de %s" #: qcsrc/server/w_hagar.qc:2 msgid "Hagar" -msgstr "" +msgstr "Hagar" #: qcsrc/server/w_hagar.qc:185 qcsrc/server/w_seeker.qc:523 #, c-format msgid "%s played with tiny rockets" -msgstr "" +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 "" +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 "" +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 "" +msgstr "Canon Laser Lourd d'Assaut " #: qcsrc/server/w_hlac.qc:225 #, c-format msgid "%s was cut down by %s" -msgstr "" +msgstr "%s s'est fait couper par %s" #: qcsrc/server/w_hook.qc:2 #, fuzzy @@ -2592,188 +2593,194 @@ msgstr "Grappin" #: qcsrc/server/w_shotgun.qc:179 qcsrc/server/w_uzi.qc:287 #, c-format msgid "%s did the impossible" -msgstr "" +msgstr "%s a fait l'impossible" #: qcsrc/server/w_hook.qc:269 #, c-format msgid "%s has run into %s's gravity bomb" -msgstr "" +msgstr "%s a été emprisonné par la bombe à gravité de %s" #: qcsrc/server/w_laser.qc:2 msgid "Laser" -msgstr "" +msgstr "Laser" #: qcsrc/server/w_laser.qc:285 #, c-format msgid "%s lasered themself to hell" -msgstr "" +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 "" +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 "" +msgstr "%s a été désintégré par le laser de %s" #: qcsrc/server/w_minelayer.qc:2 #, fuzzy msgid "Mine Layer" -msgstr "Monojoueur" +msgstr "Lance-Mines" #: qcsrc/server/w_minelayer.qc:438 qcsrc/server/w_rocketlauncher.qc:480 #, c-format msgid "%s exploded" -msgstr "" +msgstr "%s a explosé" #: qcsrc/server/w_minelayer.qc:442 #, c-format msgid "%s got too close to %s's mine" -msgstr "" +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 "" +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 "" +msgstr "%s a marché sur la mine de %s" #: qcsrc/server/w_minstanex.qc:2 #, fuzzy msgid "MinstaNex" -msgstr "MinstaGib" +msgstr "MinstaNex" #: qcsrc/server/w_minstanex.qc:259 qcsrc/server/w_nex.qc:226 #, c-format msgid "%s has been vaporized by %s" -msgstr "" +msgstr "%s s'est fait vaporiser par %s" #: qcsrc/server/w_nex.qc:2 #, fuzzy msgid "Nex" -msgstr "Nexball" +msgstr "Nex" #: qcsrc/server/w_porto.qc:2 msgid "Port-O-Launch" -msgstr "" +msgstr "Lance-O-Port" #: qcsrc/server/w_porto.qc:295 #, c-format msgid "%s felt %s doing the impossible to him" -msgstr "" +msgstr "%s a eu tort de prendre le portail de %s" #: qcsrc/server/w_rocketlauncher.qc:2 msgid "Rocket Launcher" -msgstr "" +msgstr "Lance-Roquettes" #: qcsrc/server/w_rocketlauncher.qc:484 #, c-format msgid "%s got too close to %s's rocket" -msgstr "" +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 "" +msgstr "%s a presque esquivé la roquette de %s" #: qcsrc/server/w_rocketlauncher.qc:488 #, c-format msgid "%s ate %s's rocket" -msgstr "" +msgstr "%s a mangé la roquette de %s" #: qcsrc/server/w_seeker.qc:2 msgid "T.A.G. Seeker" -msgstr "" +msgstr "T.A.G. Chercheur" #: qcsrc/server/w_seeker.qc:527 #, c-format msgid "%s ran into %s's flac" -msgstr "" +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 "" +msgstr "%s s'est fait tagguer par %s" #: qcsrc/server/w_shotgun.qc:2 #, fuzzy msgid "Shotgun" -msgstr "Tirs:" +msgstr "Fusil" #: qcsrc/server/w_shotgun.qc:183 #, c-format msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun" -msgstr "" +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 "" +msgstr "%s s'est fait fusiller par %s" #: qcsrc/server/w_sniperrifle.qc:2 msgid "Sniper Rifle" -msgstr "" +msgstr "Fusil Sniper" #: qcsrc/server/w_sniperrifle.qc:321 #, c-format msgid "%s shot themself automatically" -msgstr "" +msgstr "%s s'est suicidé au sniper" #: qcsrc/server/w_sniperrifle.qc:323 #, c-format msgid "%s sniped themself somehow" -msgstr "" +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 "" +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 "" +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 "" +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 "" +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 "" +msgstr "%s s'est fait descendre au sniper par %s" #: qcsrc/server/w_tuba.qc:2 #, fuzzy, c-format msgid "@!#%'n Tuba" -msgstr "Lancer de @!#%'n Tuba" +msgstr "@!#%'n Tuba" #: qcsrc/server/w_tuba.qc:260 #, c-format msgid "%s hurt his own ears with the @!#%%'n Tuba" -msgstr "" +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 "" +msgstr "%s n'a pas aimé la musique de %s et en est mort" #: qcsrc/server/w_uzi.qc:2 msgid "Machine Gun" -msgstr "" +msgstr "Mitraillette" #: qcsrc/server/w_uzi.qc:293 #, c-format msgid "%s was riddled full of holes by %s" -msgstr "" +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 index c2b16b0fc..d604e379e 100644 --- a/menu.dat.hu.po +++ b/menu.dat.hu.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-27 17:06+0100\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" @@ -81,23 +82,23 @@ msgstr "???" msgid "Level %d: %s" msgstr "Szint %d: %s" -#: qcsrc/menu/xonotic/cvarlist.c:84 +#: 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:86 +#: qcsrc/menu/xonotic/cvarlist.c:87 msgid "will not be saved" msgstr "Nem lesz elmentve" -#: qcsrc/menu/xonotic/cvarlist.c:88 +#: qcsrc/menu/xonotic/cvarlist.c:89 msgid "private" msgstr "magán" -#: qcsrc/menu/xonotic/cvarlist.c:90 +#: qcsrc/menu/xonotic/cvarlist.c:91 msgid "engine setting" msgstr "motor beállítás" -#: qcsrc/menu/xonotic/cvarlist.c:92 +#: qcsrc/menu/xonotic/cvarlist.c:93 msgid "read only" msgstr "csak olvasható" @@ -108,9 +109,9 @@ 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:46 +#: 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:59 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:61 #: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 msgid "OK" msgstr "Rendben" @@ -413,7 +414,7 @@ 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:41 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 msgid "Never" msgstr "Soha" @@ -824,7 +825,7 @@ 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:308 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 msgid "Close" msgstr "Zárt" @@ -1005,7 +1006,7 @@ msgid "Info..." msgstr "Info..." #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 msgid "Join!" msgstr "Csatlakozz!" @@ -1015,105 +1016,105 @@ 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:177 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +#: 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:151 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:158 #, c-format -msgid "%d/%d" -msgstr "%d/%d" +msgid "%d/%d, %d free player slots" +msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#: 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:166 +#: 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:191 +#: 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:199 +#: 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:201 +#: 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:205 +#: 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:207 +#: 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:211 +#: 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:213 +#: 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:217 +#: 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:219 +#: 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:240 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +#: 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:248 +#: 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:253 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 msgid "Map:" msgstr "Pálya:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 msgid "Gameplay:" msgstr "Játék:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 msgid "Bots:" msgstr "Botok:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 msgid "Mod:" msgstr "Mod:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 msgid "Version:" msgstr "Verzió:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 msgid "Ping:" msgstr "Ping:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 msgid "CA:" msgstr "CA:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 msgid "Key:" msgstr "Kulcs:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 msgid "Encryption:" msgstr "Titkosítás:" @@ -1252,30 +1253,26 @@ msgid "Waypoints" msgstr "Útpontok" #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 -msgid "Waypoint settings:" -msgstr "Útpont beállítások:" - -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 msgid "Show base waypoints" msgstr "Alap útpontok mutatása" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +#: 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:34 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 msgid "Waypoint alpha:" msgstr "Útpont alpha:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 msgid "Show names:" msgstr "Nevek mutatása:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 msgid "Teammates" msgstr "Csapattársak" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 msgid "All players" msgstr "Minden játékos" @@ -1944,7 +1941,7 @@ msgstr "Beállítás:" msgid "Value:" msgstr "Érték:" -#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 msgid "Description:" msgstr "Leírás:" @@ -2209,31 +2206,31 @@ msgstr "" msgid "<no model found>" msgstr "<modell nem található>" -#: qcsrc/menu/xonotic/serverlist.c:357 +#: qcsrc/menu/xonotic/serverlist.c:360 msgid "Remove" msgstr "Eltávolítás" -#: qcsrc/menu/xonotic/serverlist.c:359 +#: qcsrc/menu/xonotic/serverlist.c:362 msgid "Bookmark" msgstr "Könyvjelző" -#: qcsrc/menu/xonotic/serverlist.c:515 +#: qcsrc/menu/xonotic/serverlist.c:518 msgid "Ping" msgstr "Ping" -#: qcsrc/menu/xonotic/serverlist.c:516 +#: qcsrc/menu/xonotic/serverlist.c:519 msgid "Host name" msgstr "Gazda név" -#: qcsrc/menu/xonotic/serverlist.c:517 +#: qcsrc/menu/xonotic/serverlist.c:520 msgid "Map" msgstr "Térkép" -#: qcsrc/menu/xonotic/serverlist.c:518 +#: qcsrc/menu/xonotic/serverlist.c:521 msgid "Type" msgstr "Típus" -#: qcsrc/menu/xonotic/serverlist.c:519 +#: qcsrc/menu/xonotic/serverlist.c:522 msgid "Players" msgstr "Játékosok" @@ -2407,22 +2404,22 @@ msgstr "Panel engedélyezés" msgid "Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:637 +#: qcsrc/server/w_crylink.qc:645 #, c-format msgid "%s succeeded at self-destructing themself with the Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:642 +#: qcsrc/server/w_crylink.qc:650 #, c-format msgid "%s could not hide from %s's Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:644 +#: qcsrc/server/w_crylink.qc:652 #, c-format msgid "%s was too close to %s's Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:646 +#: qcsrc/server/w_crylink.qc:654 #, c-format msgid "%s took a close look at %s's Crylink" msgstr "" @@ -2770,3 +2767,9 @@ msgstr "" #~ "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.it.po b/menu.dat.it.po new file mode 100644 index 000000000..1dab9f184 --- /dev/null +++ b/menu.dat.it.po @@ -0,0 +1,2402 @@ +# Xonotic Menu +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Felice Sallustio <fel.sallustio@gmail.com>, 2011. +# Antonio 'terencehill' Piu <piuntn@gmail.com>, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: 0.1preview\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-01-18 17:06+0100\n" +"PO-Revision-Date: 2011-03-27 18:47+0100\n" +"Last-Translator: Antonio 'terencehill' Piu <piuntn@gmail.com>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Italian\n" + +#: qcsrc/menu/menu.qc:29 +#, c-format +msgid "^4MQC Build information: %s\n" +msgstr "^4MQC Build information: %s\n" + +#: qcsrc/menu/item/slider.c:64 +#, c-format +msgid "%d (%s)" +msgstr "%d (%s)" + +#: qcsrc/menu/item/label.c:63 +#, c-format +msgid "NOTE: label text %s too wide for label, condensed by factor %f\n" +msgstr "NOTA: testo dell'etichetta %s troppo grande per l'etichetta, compresso di un fattore %f\n" + +#: qcsrc/menu/item/textslider.c:29 +#: qcsrc/menu/item/textslider.c:31 +msgid "custom" +msgstr "personalizzato" + +#: qcsrc/menu/item/gecko.c:49 +msgid "Browser not initialized!" +msgstr "Browser non inizializzato!" + +#: qcsrc/menu/item/listbox.c:300 +#, c-format +msgid "Item %d" +msgstr "Oggetto %d" + +#: qcsrc/menu/gamecommand.qc:47 +#, c-format +msgid "error: status is %d\n" +msgstr "errore: lo stato è impostato su %d\n" + +#: qcsrc/menu/gamecommand.qc:65 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Uso: menu_cmd command..., dove i possibili comandi sono:\n" + +#: qcsrc/menu/gamecommand.qc:66 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr "sync - ricarica tutte le cvar sulla corrente pagina\n" + +#: qcsrc/menu/gamecommand.qc:67 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr " directmenu OGGETTO - seleziona un oggetto come il principale\n" + +#: qcsrc/menu/gamecommand.qc:193 +msgid "error creating curl handle\n" +msgstr "error creating curl handle\n" + +#: qcsrc/menu/gamecommand.qc:239 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "Comando non valido. Per una lista dei comandi supportati, prova menu_cmd help.\n" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:4 +#: qcsrc/menu/xonotic/dialog_settings.c:19 +msgid "Video" +msgstr "Video" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:26 +msgid "Resolution:" +msgstr "Risoluzione:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:29 +msgid "Font/UI size:" +msgstr "Dimensioni caratteri:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:31 +msgid "SZ^Unreadable" +msgstr "SZ^Illeggibile" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:32 +msgid "SZ^Tiny" +msgstr "SZ^Minuscolo" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:33 +msgid "SZ^Little" +msgstr "SZ^Molto piccolo" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:34 +msgid "SZ^Small" +msgstr "SZ^Piccolo" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:35 +msgid "SZ^Medium" +msgstr "SZ^Medio" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:36 +msgid "SZ^Large" +msgstr "SZ^Largo" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:37 +msgid "SZ^Huge" +msgstr "SZ^Enorme" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:38 +msgid "SZ^Gigantic" +msgstr "SZ^Gigante" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:39 +msgid "SZ^Colossal" +msgstr "SZ^Colossale" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:42 +msgid "Color depth:" +msgstr "Profondità colore:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:45 +msgid "Full screen" +msgstr "Schermo intero" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:46 +msgid "Vertical Synchronization" +msgstr "Sincronizzazione verticale" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:49 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "Usa gli shader OpenGL 2.0 (GLSL)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:52 +msgid "Use Occlusion Queries" +msgstr "Usa le Occlusion Queries" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:55 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Vertex Buffer Objects (VBOs)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:58 +msgid "VBO^Off" +msgstr "VBO^Off" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:59 +msgid "Vertices, some Tris (compatible)" +msgstr "Vertici, alcuni Triangoli (compatibile)" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:62 +msgid "Vertices" +msgstr "Vertici" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:63 +msgid "Vertices and Triangles" +msgstr "Vertici e Triangoli" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:65 +msgid "Depth first:" +msgstr "Profondità prima:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:67 +msgid "DF^Disabled" +msgstr "DF^Disabilitata" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:68 +msgid "DF^World" +msgstr "DF^Globale" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:69 +msgid "DF^All" +msgstr "DF^Tutto" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:73 +msgid "Disable multithreaded OpenGL" +msgstr "Disabilita il multithreading OpenGL" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:75 +msgid "Wait for GPU to finish each frame" +msgstr "Attendi che la GPU finisca di elaborare ogni frame" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:78 +msgid "Brightness:" +msgstr "Luminosità:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:81 +msgid "Contrast:" +msgstr "Contrasto:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:84 +msgid "Gamma:" +msgstr "Gamma:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:87 +msgid "Contrast boost:" +msgstr "Aumenta contrasto:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:90 +msgid "Saturation:" +msgstr "Saturazione:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:95 +msgid "Use GLSL to handle color control" +msgstr "Usa GLSL per gestire il controllo del colore" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:99 +msgid "LIT^Ambient:" +msgstr "LIT^Ambiente:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:102 +msgid "Intensity:" +msgstr "Intensità:" + +#: qcsrc/menu/xonotic/dialog_settings_video.c:106 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:30 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:41 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:194 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:193 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:178 +msgid "Apply immediately" +msgstr "Applica immediatamente" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:4 +msgid "Panel HUD Setup" +msgstr "Setup del Panel HUD" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:21 +msgid "Panel background defaults:" +msgstr "Sfondo del pannello predefinito:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:25 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:37 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:52 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:91 +#: qcsrc/menu/xonotic/util.qc:602 +#: qcsrc/menu/xonotic/util.qc:618 +#: qcsrc/menu/xonotic/util.qc:635 +msgid "Disable" +msgstr "Disabilita" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:30 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:77 +#: qcsrc/menu/xonotic/util.qc:607 +msgid "Color:" +msgstr "Colore:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:35 +#: qcsrc/menu/xonotic/util.qc:615 +msgid "Border size:" +msgstr "Dimensioni del bordo:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:43 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:82 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:32 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:151 +#: qcsrc/menu/xonotic/util.qc:624 +msgid "Alpha:" +msgstr "Opacità:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:89 +msgid "Team color:" +msgstr "Colore team:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:58 +#: qcsrc/menu/xonotic/util.qc:641 +msgid "Test team color in configure mode" +msgstr "Prova colore team in modalità configurazione" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:61 +#: qcsrc/menu/xonotic/util.qc:644 +msgid "Padding:" +msgstr "Riempimento:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:68 +msgid "HUD Dock:" +msgstr "Sfondo dell'HUD:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:70 +msgid "DOCK^Disabled" +msgstr "DOCK^Disabilitato" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:71 +msgid "DOCK^Small" +msgstr "DOCK^Piccolo" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:72 +msgid "DOCK^Medium" +msgstr "DOCK^Medio" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:73 +msgid "DOCK^Large" +msgstr "DOCK^Largo" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:96 +msgid "Grid settings:" +msgstr "Impostazioni griglia:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:99 +msgid "Snap panels to grid" +msgstr "Incolla i pannelli alla griglia" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:102 +msgid "Grid size:" +msgstr "Dimensioni griglia:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:103 +msgid "X:" +msgstr "X:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:109 +msgid "Y:" +msgstr "Y:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.c:117 +msgid "Exit setup" +msgstr "Esci dal setup" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:4 +msgid "Vote Panel" +msgstr "Pannello di voto" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.c:22 +msgid "Alpha after voting:" +msgstr "Opacità dopo aver votato:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.c:4 +msgid "Mod Icons Panel" +msgstr "Pannello delle icone delle Mod" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:4 +msgid "Info Messages Panel" +msgstr "Pannello delle informazioni" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:22 +msgid "Info messages:" +msgstr "Informazioni" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.c:25 +msgid "Flip align" +msgstr "Inverti allineamento" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:5 +msgid "Waypoints" +msgstr "Waypoint" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 +msgid "Waypoint settings:" +msgstr "Impostazioni dei waypoint" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 +msgid "Show base waypoints" +msgstr "Mostra i waypoint della base" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +msgid "Waypoint scale:" +msgstr "Grandezza dei waypoint:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +msgid "Waypoint alpha:" +msgstr "Opacità dei waypoint" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +msgid "Show names:" +msgstr "Mostra nomi:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 +msgid "Never" +msgstr "Mai" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +msgid "Teammates" +msgstr "Compagni del team" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +msgid "All players" +msgstr "Tutti i giocatori" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:46 +#: qcsrc/menu/xonotic/dialog_credits.c:21 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:59 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:269 +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:55 +msgid "OK" +msgstr "OK" + +#: qcsrc/menu/xonotic/dialog_credits.c:5 +msgid "Credits" +msgstr "Crediti" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:5 +msgid "Advanced settings" +msgstr "Impostazioni avanzate" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:23 +msgid "Cvar filter:" +msgstr "Filtro delle cvar:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:24 +#: qcsrc/menu/xonotic/dialog_settings_input.c:41 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:29 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:33 +msgid "Clear" +msgstr "Pulisci" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:34 +msgid "Setting:" +msgstr "Impostazioni:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:38 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:248 +msgid "Type:" +msgstr "Tipo:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:42 +msgid "Value:" +msgstr "Valore:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +msgid "Description:" +msgstr "Descrizione:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:4 +msgid "Pressed Keys Panel" +msgstr "Pannello dei tasto premuti" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:21 +msgid "Panel disabled" +msgstr "Pannello disabilitato" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:22 +msgid "Panel enabled when spectating" +msgstr "Pannello abilitato in modalità spettatore" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:23 +msgid "Panel always enabled" +msgstr "Pannello sempre abilitato" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c:30 +msgid "Forced aspect:" +msgstr "Forza aspetto:" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:5 +msgid "Team Selection" +msgstr "Selezione team" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:41 +msgid "join 'best' team (auto-select)" +msgstr "entra nel 'miglior' team (auto-selezione)" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:45 +msgid "red" +msgstr "rosso" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:46 +msgid "blue" +msgstr "blu" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:47 +msgid "yellow" +msgstr "giallo" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:48 +msgid "pink" +msgstr "rosa" + +#: qcsrc/menu/xonotic/dialog_teamselect.c:51 +msgid "spectate" +msgstr "spettatore" + +#: qcsrc/menu/xonotic/slider_resolution.c:65 +#, c-format +msgid "%dx%d" +msgstr "%dx%d" + +#: qcsrc/menu/xonotic/dialog_settings.c:4 +msgid "Settings" +msgstr "Impostazioni" + +#: qcsrc/menu/xonotic/dialog_settings.c:18 +#: qcsrc/menu/xonotic/dialog_settings_input.c:4 +msgid "Input" +msgstr "Comandi" + +#: qcsrc/menu/xonotic/dialog_settings.c:20 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:4 +msgid "Effects" +msgstr "Effetti" + +#: qcsrc/menu/xonotic/dialog_settings.c:21 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:4 +msgid "Audio" +msgstr "Audio" + +#: qcsrc/menu/xonotic/dialog_settings.c:22 +#: qcsrc/menu/xonotic/dialog_settings_network.c:4 +msgid "Network" +msgstr "Rete" + +#: qcsrc/menu/xonotic/dialog_settings.c:23 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:4 +msgid "Misc" +msgstr "Altro" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:4 +msgid "Welcome" +msgstr "Benvenuto" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:32 +msgid "Please answer a few initial questions to enhance the game experience." +msgstr "Per favore rispondi a poche domande iniziali per migliorare l'esperienza di gioco." + +#: qcsrc/menu/xonotic/dialog_firstrun.c:36 +#: qcsrc/menu/xonotic/dialog_settings_misc.c:35 +msgid "Text language:" +msgstr "Lingua testo:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:45 +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:39 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:40 +msgid "Name:" +msgstr "Nome:" + +#: qcsrc/menu/xonotic/dialog_firstrun.c:67 +msgid "Save settings" +msgstr "Salva impostazioni" + +#: qcsrc/menu/xonotic/campaign.c:284 +#: qcsrc/menu/xonotic/dialog_singleplayer.c:66 +msgid "???" +msgstr "???" + +#: qcsrc/menu/xonotic/campaign.c:285 +#, c-format +msgid "Level %d: %s" +msgstr "Livello %d: %s" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:26 +msgid "Key bindings:" +msgstr "Associazione tasti (bind):" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:31 +msgid "Change key..." +msgstr "Cambia tasto..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:35 +msgid "Edit..." +msgstr "Modifica..." + +#: qcsrc/menu/xonotic/dialog_settings_input.c:46 +msgid "Sensitivity:" +msgstr "Sensibilità:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:49 +msgid "UI mouse speed:" +msgstr "Velocità UI mouse:" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:52 +msgid "Mouse filter" +msgstr "Filtro mouse" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:54 +msgid "Invert mouse" +msgstr "Inverti mouse" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:57 +#: qcsrc/menu/xonotic/dialog_settings_input.c:59 +msgid "Use joystick input" +msgstr "Usa joystick" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:62 +#: qcsrc/menu/xonotic/dialog_settings_input.c:64 +msgid "Turn off OS mouse acceleration" +msgstr "Disattiva l'accelerazione mouse dell'OS" + +#: qcsrc/menu/xonotic/dialog_settings_input.c:66 +msgid "\"enter console\" also closes" +msgstr "\"apri console\" chiude anche" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:4 +msgid "Weapons Panel" +msgstr "Pannello armi" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:24 +msgid "Fade out after:" +msgstr "Dissolvi dopo:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:28 +#, c-format +msgid "%ds" +msgstr "%ds" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:32 +msgid "Fade effect:" +msgstr "Effetto dissolvenza:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:33 +msgid "EF^None" +msgstr "EF^Nessuno" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:35 +msgid "Slide" +msgstr "Slide" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:37 +msgid "Alpha" +msgstr "Opacità" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:40 +msgid "Weapon icons:" +msgstr "Icone armi:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:43 +msgid "Show weapon ID as:" +msgstr "Mostra ID arma come:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:44 +msgid "SHOWAS^None" +msgstr "SHOWAS^Nessuno" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:45 +msgid "Number" +msgstr "Numero" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:46 +msgid "Bind" +msgstr "Bind" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:49 +msgid "Show Accuracy" +msgstr "Mostra precisione" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:50 +msgid "Show Ammo" +msgstr "Mostra munizioni" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:53 +msgid "Ammo bar color:" +msgstr "Colore barra munizioni:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:59 +msgid "Ammo bar alpha:" +msgstr "Opacità barra munizioni:" + +#: qcsrc/menu/xonotic/mainwindow.c:35 +#: qcsrc/menu/xonotic/mainwindow.c:38 +msgid "Do not press this button again!" +msgstr "Non premere questo tasto di nuovo!" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:4 +msgid "Engine Info Panel" +msgstr "Pannello info motore" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:22 +msgid "Engine info:" +msgstr "Info motore:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.c:25 +msgid "Use an averaging algorithm for fps" +msgstr "Usa un algoritmo mediano per gli fps" + +#: qcsrc/menu/xonotic/dialog_quit.c:4 +msgid "Quit" +msgstr "Esci" + +#: qcsrc/menu/xonotic/dialog_quit.c:17 +msgid "Are you sure you want to quit?" +msgstr "Sei sicuro di voler uscire?" + +#: qcsrc/menu/xonotic/dialog_quit.c:20 +msgid "Yes" +msgstr "Si" + +#: qcsrc/menu/xonotic/dialog_quit.c:21 +msgid "No" +msgstr "No" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:4 +msgid "Join" +msgstr "Entra" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:28 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:32 +msgid "Filter:" +msgstr "Filtro:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:36 +msgid "SRVS^Empty" +msgstr "SRVS^Vuoti" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:40 +msgid "SRVS^Full" +msgstr "SRVS^Pieni" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:44 +msgid "Pause" +msgstr "In pausa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:56 +msgid "Address:" +msgstr "Indirizzo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:65 +msgid "Info..." +msgstr "Info..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311 +msgid "Join!" +msgstr "Entra!" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:4 +msgid "Notification Panel" +msgstr "Pannello di notifica" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:22 +msgid "Notifications:" +msgstr "Notifiche:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:25 +msgid "Also print notifications to the console" +msgstr "Mostra anche le notifiche sulla console" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:28 +msgid "Flip notify order" +msgstr "Inverti ordine delle notifiche" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:31 +msgid "Entry lifetime:" +msgstr "Durata notifica:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.c:35 +msgid "Entry fadetime:" +msgstr "Durata dissolvenza:" + +#: qcsrc/menu/xonotic/util.qh:49 +msgid "Enable panel" +msgstr "Abilita pannello" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:26 +msgid "Menu skins:" +msgstr "Temi del menu:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:47 +msgid "Show current time" +msgstr "Mostra orario corrente" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:49 +msgid "Show current date" +msgstr "Mostra data corrente" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:51 +msgid "Show frames per second" +msgstr "Mostra fotogrammi al secondo" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:53 +msgid "Speedometer" +msgstr "Tachimetro" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:56 +msgid "qu/s (hidden)" +msgstr "qu/s (nascosto)" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:58 +msgid "qu/s" +msgstr "qu/s" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:60 +msgid "m/s" +msgstr "m/s" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:64 +msgid "km/h" +msgstr "km/h" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:66 +msgid "mph" +msgstr "mph" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:68 +msgid "knots" +msgstr "nodi" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:71 +msgid "Show accelerometer" +msgstr "Mostra accelerometro" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:74 +msgid "Accelerometer scale:" +msgstr "Scala accelerometro:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:80 +msgid "Minimize input latency" +msgstr "Minimizza latenza in entrata" + +#: qcsrc/menu/xonotic/dialog_settings_misc.c:84 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:98 +msgid "Advanced settings..." +msgstr "Impostazioni avanzate..." + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:4 +msgid "Singleplayer" +msgstr "Giocatore singolo" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:59 +msgid "Instant action! (random map with bots)" +msgstr "Inizia ora! (mappa casuale con bot)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.c:80 +msgid "Start Singleplayer!" +msgstr "Inizia modalità Giocatore Singolo!" + +#: qcsrc/menu/xonotic/skinlist.c:105 +msgid "<TITLE>" +msgstr "<TITOLO>" + +#: qcsrc/menu/xonotic/skinlist.c:106 +msgid "<AUTHOR>" +msgstr "<AUTORE>" + +#: qcsrc/menu/xonotic/skinlist.c:163 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: qcsrc/menu/xonotic/dialog_news.c:4 +msgid "News" +msgstr "Notizie" + +#: qcsrc/menu/xonotic/dialog_news.c:18 +msgid "http://www.xonotic.org/team/blog/" +msgstr "http://www.xonotic.org/team/blog/" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:5 +msgid "Server Information" +msgstr "Informazioni del server" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:115 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:116 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:177 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +msgid "N/A" +msgstr "N/A" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:151 +#, c-format +msgid "%d/%d" +msgstr "%d/%d" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +msgid "Official settings" +msgstr "Impostazioni ufficiali" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#, c-format +msgid "%d modified settings" +msgstr "%d impostazioni modificate" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191 +msgid "N/A (can't connect)" +msgstr "N/A (impossibile connettersi)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199 +msgid "not supported (can't connect)" +msgstr "non supportato (impossibile connettersi)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:201 +msgid "not supported (won't encrypt)" +msgstr "non supportato (non criptato)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +msgid "supported (will encrypt)" +msgstr "supportato (criptato)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +msgid "supported (won't encrypt)" +msgstr "supportato (non criptato)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +msgid "requested (will encrypt)" +msgstr "richiesto (criptato)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +msgid "requested (won't encrypt)" +msgstr "richiesto (non criptato)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +msgid "required (can't connect)" +msgstr "richiesto (impossibile connettersi)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +msgid "required (will encrypt)" +msgstr "richiesto (criptato)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:240 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +msgid "Players:" +msgstr "Giocatori:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:253 +msgid "Map:" +msgstr "Mappa:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +msgid "Gameplay:" +msgstr "Gameplay:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +msgid "Bots:" +msgstr "Bot:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +msgid "Mod:" +msgstr "Mod:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +msgid "Version:" +msgstr "Versione:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +msgid "Ping:" +msgstr "Ping:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +msgid "CA:" +msgstr "CA:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +msgid "Key:" +msgstr "Chiave:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +msgid "Encryption:" +msgstr "Crittografia:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 +msgid "Close" +msgstr "Chiudi" + +#: qcsrc/menu/xonotic/slider_decibels.c:50 +msgid "VOL^OFF" +msgstr "VOL^OFF" + +#: qcsrc/menu/xonotic/slider_decibels.c:52 +msgid "VOL^MAX" +msgstr "VOL^MAX" + +#: qcsrc/menu/xonotic/slider_decibels.c:53 +#, c-format +msgid "%s dB" +msgstr "%s dB" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:7 +msgid "Mutators" +msgstr "Mutatori" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:33 +msgid "All Weapons Arena" +msgstr "Arena con tutte le armi" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:35 +msgid "Most Weapons Arena" +msgstr "Arena con la maggior parte delle armi" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:56 +#, c-format +msgid "%s Arena" +msgstr "Arena con %s" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:167 +msgid "Dodging" +msgstr "Dodging" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:250 +msgid "MinstaGib" +msgstr "MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:253 +msgid "NIX" +msgstr "NIX" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:74 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:205 +msgid "Rocket Flying" +msgstr "Razzo volante" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:264 +msgid "No start weapons" +msgstr "Senza armi all'inizio" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:80 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:189 +msgid "Low gravity" +msgstr "Bassa gravità" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:170 +msgid "Cloaked" +msgstr "Invisibile" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:84 +msgid "Hook" +msgstr "Hook" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:173 +msgid "Midair" +msgstr "A mezz'aria" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:88 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:176 +msgid "Vampire" +msgstr "Vampiro" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:90 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 +msgid "Piñata" +msgstr "Piñata" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:92 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:211 +msgid "Weapons stay" +msgstr "Armi rimangono" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:94 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:180 +msgid "Blood loss" +msgstr "Perdita di sangue" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:96 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:202 +msgid "Jet pack" +msgstr "Jet pack" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:98 +msgid "MUT^None" +msgstr "MUT^Nessuno" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:164 +msgid "Gameplay mutators:" +msgstr "Mutatori di gioco:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:196 +msgid "Weapon & item mutators:" +msgstr "Mutatori di armi ed oggetti:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:199 +msgid "Grappling hook" +msgstr "Grappling hook" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:215 +msgid "Weapon arenas:" +msgstr "Arene di armi:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:218 +msgid "Regular (no arena)" +msgstr "Regolare (no arena)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:239 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:256 +msgid "with laser" +msgstr "con laser" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:247 +msgid "Special arenas:" +msgstr "Arene speciali:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:260 +msgid "Most weapons" +msgstr "Maggior parte delle armi" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:4 +msgid "Radar Panel" +msgstr "Pannello Radar" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:22 +msgid "Panel enabled in teamgames" +msgstr "Pannello abilitato nei teamgames" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:29 +msgid "Radar:" +msgstr "Radar:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:36 +msgid "Rotation:" +msgstr "Rotazione:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:38 +msgid "Forward" +msgstr "Avanti" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:39 +msgid "West" +msgstr "Ovest" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:40 +msgid "South" +msgstr "Sud" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:41 +msgid "East" +msgstr "Est" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:42 +msgid "North" +msgstr "Nord" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:46 +msgid "Scale:" +msgstr "Scala:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:50 +msgid "Zoom mode:" +msgstr "Modalità zoom:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:52 +msgid "Zoomed in" +msgstr "Ingrandito" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:53 +msgid "Zoomed out" +msgstr "Non ingrandito" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:54 +msgid "Always zoomed" +msgstr "Sempre ingrandito" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.c:55 +msgid "Never zoomed" +msgstr "Mai ingrandito" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.c:4 +msgid "Race Timer Panel" +msgstr "Pannello tempi Corsa" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:4 +msgid "Chat Panel" +msgstr "Pannello Chat" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:22 +msgid "Chat entries:" +msgstr "N° righe della chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:25 +msgid "Chat size:" +msgstr "Dimensioni chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:29 +msgid "Chat lifetime:" +msgstr "Durata chat:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.c:33 +msgid "Chat beep sound" +msgstr "Suono della chat" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:5 +#: qcsrc/menu/xonotic/dialog_multiplayer.c:19 +msgid "Create" +msgstr "Crea" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:35 +msgid "Game type:" +msgstr "Tipo di gioco:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:47 +msgid "Match settings:" +msgstr "Impostazioni partita:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:50 +msgid "Time limit:" +msgstr "Limite di tempo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:54 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:62 +msgid "Use map specified default" +msgstr "Usa le impostazioni di default della mappa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:57 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:156 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:157 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:158 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:162 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:163 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:164 +msgid "Point limit:" +msgstr "Limiti di punteggio:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:65 +msgid "Player slots:" +msgstr "Posti per giocatori:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:68 +msgid "Number of bots:" +msgstr "Numero di bot:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:72 +msgid "Bot skill:" +msgstr "Abilità bot:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:75 +msgid "Botlike" +msgstr "\"Come un bot\"" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:76 +msgid "Beginner" +msgstr "Principiante" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:77 +msgid "You will win" +msgstr "Vincerai" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:78 +msgid "You can win" +msgstr "Puoi vincere" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:79 +msgid "You might win" +msgstr "Potresti vincere" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:80 +msgid "Advanced" +msgstr "Avanzato" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:81 +msgid "Expert" +msgstr "Esperto" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:82 +msgid "Pro" +msgstr "Pro" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:83 +msgid "Assassin" +msgstr "Assassino" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:84 +msgid "Unhuman" +msgstr "Inumano" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:85 +msgid "Godlike" +msgstr "\"Come un Dio\"" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:89 +msgid "Mutators..." +msgstr "Mutatori..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:105 +msgid "Map list:" +msgstr "Lista delle mappe:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:111 +msgid "Select all" +msgstr "Seleziona tutto" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:114 +msgid "Select none" +msgstr "Deseleziona tutto" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:120 +msgid "Start Multiplayer!" +msgstr "Inizia Multiplayer!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:155 +msgid "Capture limit:" +msgstr "Limite catture:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:159 +msgid "Lives:" +msgstr "Vite:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:160 +msgid "Laps:" +msgstr "Giri:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:161 +msgid "Goals:" +msgstr "Goal:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.c:165 +msgid "Frag limit:" +msgstr "Limiti di frag:" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:4 +msgid "Winner" +msgstr "Vincitore" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:5 +msgid "User defined key bind" +msgstr "Tasti \"bind\" definiti dall'utente" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:42 +msgid "Command when pressed:" +msgstr "Comando quando premuto:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:45 +msgid "Command when released:" +msgstr "Comando quando rilasciato:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:48 +msgid "Save" +msgstr "Salva" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.c:51 +msgid "Cancel" +msgstr "Annulla" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:5 +#: qcsrc/menu/xonotic/dialog_multiplayer.c:21 +msgid "Player Setup" +msgstr "Setup giocatore" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:63 +msgid "Model:" +msgstr "Modello:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:88 +msgid "Field of view:" +msgstr "Campo di vista:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:92 +msgid "View bobbing:" +msgstr "Ondeggiamento vista:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:96 +msgid "Zoom factor:" +msgstr "Moltiplicatore zoom:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:100 +msgid "Zoom speed:" +msgstr "Velocità zoom:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:103 +msgid "Weapon settings..." +msgstr "Impostazioni arma..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:110 +msgid "Crosshair:" +msgstr "Mirino:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:111 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:143 +msgid "Per weapon" +msgstr "Per singola arma" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:130 +msgid "Crosshair size:" +msgstr "Dimensioni mirino:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:134 +msgid "Crosshair alpha:" +msgstr "Opacità mirino:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:138 +msgid "Crosshair color:" +msgstr "Colore mirino:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:145 +msgid "Enable center dot" +msgstr "Abilita puntino al centro" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:148 +msgid "Size:" +msgstr "Dimensioni:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:155 +msgid "Hit test:" +msgstr "Test colpi:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:156 +msgid "HTST^None" +msgstr "HTST^Nessuno" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:157 +msgid "TrueAim" +msgstr "TrueAim" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:158 +msgid "Enemies" +msgstr "Nemici" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:161 +msgid "Waypoints setup..." +msgstr "Setup dei waypoint..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:167 +msgid "Enter HUD editor" +msgstr "Apri HUD editor" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:174 +msgid "Force models:" +msgstr "Forza modelli:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:175 +msgid "MDL^None" +msgstr "MDL^Nessuno" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:176 +msgid "MDL^Custom" +msgstr "MDL^Personalizzato" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:177 +msgid "MDL^All" +msgstr "MDL^Tutti" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:179 +msgid "Disable gore effects" +msgstr "Disabilita effetti sangue" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:181 +msgid "Gibs:" +msgstr "Gib:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:183 +msgid "GIBS^None" +msgstr "GIBS^Nessuno" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:184 +msgid "GIBS^Few" +msgstr "GIBS^Pochi" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:185 +msgid "GIBS^Many" +msgstr "GIBS^Molti" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:186 +msgid "GIBS^Lots" +msgstr "GIBS^Parecchi" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c:190 +msgid "Damage splash:" +msgstr "Schizzo del danno:" + +#: qcsrc/menu/xonotic/cvarlist.c:84 +msgid "will be saved to config.cfg" +msgstr "sarà salvato su config.cfg" + +#: qcsrc/menu/xonotic/cvarlist.c:86 +msgid "will not be saved" +msgstr "non sarà salvato" + +#: qcsrc/menu/xonotic/cvarlist.c:88 +msgid "private" +msgstr "privata" + +#: qcsrc/menu/xonotic/cvarlist.c:90 +msgid "engine setting" +msgstr "impostazioni motore" + +#: qcsrc/menu/xonotic/cvarlist.c:92 +msgid "read only" +msgstr "sola lettura" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.c:4 +msgid "Score Panel" +msgstr "Pannello punteggio" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:4 +msgid "Timer Panel" +msgstr "Pannello tempo" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:22 +msgid "Timer:" +msgstr "Tempo:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.c:25 +msgid "Show elapsed time" +msgstr "Mostra tempo trascorso" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:5 +msgid "Map Information" +msgstr "Informazioni mappa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "Full item placement" +msgstr "Posizionamento oggetti completo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 +msgid "MinstaGib only" +msgstr "Solo MinstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:78 +msgid "Title:" +msgstr "Titolo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:84 +msgid "Author:" +msgstr "Autore:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:90 +msgid "Features:" +msgstr "Caratteristiche:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:95 +msgid "Game types:" +msgstr "Tipi di gioco:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:122 +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:46 +msgid "Play" +msgstr "Gioca" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:6 +msgid "Advanced server settings" +msgstr "Impostazioni avanzate server" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:25 +msgid "Game settings:" +msgstr "Impostazioni gioco:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:28 +msgid "Allow spectating" +msgstr "Permetti spettatori" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:31 +msgid "Spawn shield:" +msgstr "Protezione nascita:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:36 +msgid "Game speed:" +msgstr "Velocità gioco:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:40 +msgid "Teamplay settings:" +msgstr "Impostazioni Teamplay:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:43 +msgid "Friendly fire scale:" +msgstr "Scala di fuoco amico:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:47 +msgid "Virtual friendly fire (effect only)" +msgstr "Penalità virtuale (solo effetto)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:50 +msgid "Friendly fire penalty:" +msgstr "Penalità fuoco amico:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:54 +msgid "Virtual penalty (effect only)" +msgstr "Penalità virtuale (solo effetto)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:57 +msgid "Teams:" +msgstr "Team:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:66 +msgid "Map voting:" +msgstr "Voto della mappa:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:68 +msgid "No voting" +msgstr "Nessun voto" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:69 +msgid "2 choices" +msgstr "2 scelte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:70 +msgid "3 choices" +msgstr "3 scelte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:71 +msgid "4 choices" +msgstr "4 scelte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:72 +msgid "5 choices" +msgstr "5 scelte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:73 +msgid "6 choices" +msgstr "6 scelte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:74 +msgid "7 choices" +msgstr "7 scelte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:75 +msgid "8 choices" +msgstr "8 scelte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:76 +msgid "9 choices" +msgstr "9 scelte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c:79 +msgid "Simple majority wins vcall" +msgstr "La semplice maggioranza vince il vcall" + +#: qcsrc/menu/xonotic/util.qc:263 +#, c-format +msgid "Received HTTP request data for an invalid id %d.\n" +msgstr "Ricevuta richiesta HTTP per un invalido id %d.\n" + +#: qcsrc/menu/xonotic/util.qc:278 +#, c-format +msgid "error receiving update notification: status is %d\n" +msgstr "errore durante la notifica d'aggiornamento: lo stato è impostato su %d\n" + +#: qcsrc/menu/xonotic/util.qc:283 +msgid "error: received HTML instead of an update notification\n" +msgstr "errore: ricevuto HTML invece di una notifica d'aggiornamento\n" + +#: qcsrc/menu/xonotic/util.qc:288 +msgid "error: received carriage returns from update notification server\n" +msgstr "error: received carriage returns from update notification server\n" + +#: qcsrc/menu/xonotic/util.qc:309 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"L'aggiornamento può essere scaricato da:\n" +"%s\n" + +#: qcsrc/menu/xonotic/util.qc:330 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Autogenerando le mapinfo per le nuove mappe..." + +#: qcsrc/menu/xonotic/util.qc:425 +#, c-format +msgid "Update to %s now!" +msgstr "Aggiorna a %s ora!" + +#: qcsrc/menu/xonotic/util.qc:502 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"^1ERRORE: La compressione texture è richiesta ma non supportata.\n" +"^1Previsti problemi visuali.\n" + +#: qcsrc/menu/xonotic/util.qc:524 +msgid "Arena" +msgstr "Arena" + +#: qcsrc/menu/xonotic/util.qc:525 +msgid "Assault" +msgstr "Assalto" + +#: qcsrc/menu/xonotic/util.qc:526 +msgid "Capture The Flag" +msgstr "Capture The Flag" + +#: qcsrc/menu/xonotic/util.qc:527 +msgid "Clan Arena" +msgstr "Clan Arena" + +#: qcsrc/menu/xonotic/util.qc:528 +msgid "Deathmatch" +msgstr "Deathmatch" + +#: qcsrc/menu/xonotic/util.qc:529 +msgid "Domination" +msgstr "Dominazione" + +#: qcsrc/menu/xonotic/util.qc:530 +msgid "Freeze Tag" +msgstr "Freeze Tag" + +#: qcsrc/menu/xonotic/util.qc:531 +msgid "Keepaway" +msgstr "Keepaway" + +#: qcsrc/menu/xonotic/util.qc:532 +msgid "Key Hunt" +msgstr "Key Hunt" + +#: qcsrc/menu/xonotic/util.qc:533 +msgid "Last Man Standing" +msgstr "Last Man Standing" + +#: qcsrc/menu/xonotic/util.qc:534 +msgid "Nexball" +msgstr "Nexball" + +#: qcsrc/menu/xonotic/util.qc:535 +msgid "Onslaught" +msgstr "Onslaught" + +#: qcsrc/menu/xonotic/util.qc:536 +msgid "Race" +msgstr "Corsa" + +#: qcsrc/menu/xonotic/util.qc:537 +msgid "Race CTS" +msgstr "Corsa CTS" + +#: qcsrc/menu/xonotic/util.qc:538 +msgid "Runematch" +msgstr "Runematch" + +#: qcsrc/menu/xonotic/util.qc:539 +msgid "Team Deathmatch" +msgstr "Team Deathmatch" + +#: qcsrc/menu/xonotic/util.qc:558 +#, c-format +msgid "@!#%'n Tuba Throwing" +msgstr "@!#%'n Tuba Throwing" + +#: qcsrc/menu/xonotic/util.qc:599 +msgid "Background:" +msgstr "Sfondo:" + +#: qcsrc/menu/xonotic/util.qc:601 +#: qcsrc/menu/xonotic/util.qc:617 +#: qcsrc/menu/xonotic/util.qc:626 +#: qcsrc/menu/xonotic/util.qc:634 +#: qcsrc/menu/xonotic/util.qc:646 +msgid "Default" +msgstr "Predefinito" + +#: qcsrc/menu/xonotic/util.qc:612 +msgid "Use default" +msgstr "Usa predefinito" + +#: qcsrc/menu/xonotic/util.qc:632 +msgid "Team Color:" +msgstr "Colore Team:" + +#: qcsrc/menu/xonotic/playermodel.c:174 +msgid "<no model found>" +msgstr "<nessun modello trovato>" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:4 +msgid "Ammo Panel" +msgstr "Pannello munizioni" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:22 +msgid "Ammunition display:" +msgstr "Mostra munizioni:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:25 +msgid "Show only current ammo type" +msgstr "Mostra solo il tipo corrente di munizioni" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:29 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:40 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:40 +msgid "Left" +msgstr "Sinistra" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:41 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:41 +msgid "Right" +msgstr "Destra" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:6 +msgid "Weapon settings" +msgstr "Impostazioni arma" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:29 +msgid "Weapon priority list:" +msgstr "Lista priorità armi:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:34 +msgid "Up" +msgstr "Su" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:37 +msgid "Down" +msgstr "Giù" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:41 +msgid "Use priority list for weapon cycling" +msgstr "Usa la lista di priorità per ciclare le armi" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:43 +msgid "Auto switch weapons on pickup" +msgstr "Cambia automaticamente armi dopo raccolta" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:45 +msgid "Draw 1st person weapon model" +msgstr "Mostra modello arma in 1ª persona" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:48 +msgid "Left align" +msgstr "Allinea a sinistra" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:50 +msgid "Right align" +msgstr "Allinea a destra" + +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c:53 +msgid "Flip view horizontally" +msgstr "Capovolgi la vista orizzontalmente" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:38 +msgid "Quality preset:" +msgstr "Preset qualità:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:41 +msgid "PRE^OMG!" +msgstr "PRE^Oh mio dio!" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:42 +msgid "PRE^Low" +msgstr "PRE^Bassa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:43 +msgid "PRE^Medium" +msgstr "PRE^Media" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:44 +msgid "PRE^Normal" +msgstr "PRE^Normale" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:45 +msgid "PRE^High" +msgstr "PRE^Alta" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:46 +msgid "PRE^Ultra" +msgstr "PRE^Ultra" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:48 +msgid "PRE^Ultimate" +msgstr "PRE^Massima" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:52 +msgid "Geometry detail:" +msgstr "Dettagli geometrici:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:54 +msgid "DET^Lowest" +msgstr "DET^Molto bassi" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:55 +msgid "DET^Low" +msgstr "DET^Bassi" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:56 +msgid "DET^Normal" +msgstr "DET^Normali" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:57 +msgid "DET^Good" +msgstr "DET^Buoni" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:58 +msgid "DET^Best" +msgstr "DET^Ottimi" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:59 +msgid "DET^Insane" +msgstr "DET^Bestiali" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:62 +msgid "Antialiasing:" +msgstr "Antialiasing:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:64 +msgid "AA^Disabled" +msgstr "AA^Disabilitato" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:65 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:103 +msgid "2x" +msgstr "2x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:66 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:104 +msgid "4x" +msgstr "4x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:70 +msgid "Texture resolution:" +msgstr "Risoluzione texture:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:73 +msgid "RES^Leet" +msgstr "RES^Leet" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:74 +msgid "RES^Lowest" +msgstr "RES^Molto bassa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:75 +msgid "RES^Low" +msgstr "RES^Bassa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:76 +msgid "RES^Normal" +msgstr "RES^Normale" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:77 +msgid "RES^Good" +msgstr "RES^Buona" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:78 +msgid "RES^Best" +msgstr "RES^Ottima" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:91 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:94 +msgid "Avoid lossy texture compression" +msgstr "Evita compressione texture con perdita" + +#: 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^Disabilitato" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:105 +msgid "8x" +msgstr "8x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:106 +msgid "16x" +msgstr "16x" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:110 +msgid "Particle quality:" +msgstr "Qualità dei particolari:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:113 +msgid "Particle distance:" +msgstr "Distanza dei particolari:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:117 +msgid "Decals" +msgstr "Segni" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:120 +msgid "Distance:" +msgstr "Distanza:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:126 +msgid "Time:" +msgstr "Tempo:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:132 +msgid "Use lightmaps" +msgstr "Usa lightmaps" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:133 +msgid "Deluxe mapping" +msgstr "Mappaggio Deluxe" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:135 +msgid "Gloss" +msgstr "Lucentezza" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:138 +msgid "Offset mapping" +msgstr "Mappaggio in offset" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:140 +msgid "Relief mapping" +msgstr "Mappaggio in rilievo" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:143 +msgid "Reflections:" +msgstr "Riflessioni:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:146 +msgid "Blurred" +msgstr "Sfocate" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:147 +msgid "REFL^Good" +msgstr "REFL^Buone" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:148 +msgid "Sharp" +msgstr "Nitide" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:153 +msgid "Show surfaces" +msgstr "Mostra superfici" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:155 +msgid "No dynamic lighting" +msgstr "Nessuna illuminazione dinamica" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:157 +msgid "Flash blend approximation" +msgstr "Approssimazione Flash blend" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:159 +msgid "Realtime dynamic lighting" +msgstr "Illuminazione dinamica in tempo reale" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:160 +#: qcsrc/menu/xonotic/dialog_settings_effects.c:164 +msgid "Shadows" +msgstr "Ombre" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:163 +msgid "Realtime world lighting" +msgstr "Illuminazione globale in tempo reale" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:168 +msgid "Use normal maps" +msgstr "Usa mappe normali" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:170 +msgid "Soft shadows" +msgstr "Ombre morbide" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:173 +msgid "Coronas" +msgstr "Corone" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:175 +msgid "Bloom" +msgstr "Bloom" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:177 +msgid "High Dynamic Range (HDR)" +msgstr "High Dynamic Range (HDR)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:181 +msgid "Motion blur:" +msgstr "Sfocatura da movimento:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.c:187 +msgid "Damage blur:" +msgstr "Sfocatura da danno:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:26 +msgid "Client-side movement prediction" +msgstr "Predizione del movimento lato client" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:30 +msgid "Show netgraph" +msgstr "Mostra grafico di rete" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:33 +msgid "Network speed:" +msgstr "Velocità rete:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:35 +msgid "56k" +msgstr "56k" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:36 +msgid "ISDN" +msgstr "ISDN" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:37 +msgid "Slow ADSL" +msgstr "ADSL lenta" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:38 +msgid "Fast ADSL" +msgstr "ADSL veloce" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:39 +msgid "Broadband" +msgstr "Banda larga" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:42 +msgid "Input packets/s:" +msgstr "Pacchetti/sec in entrata:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:46 +msgid "HTTP downloads:" +msgstr "Download via HTTP:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:49 +msgid "Downloads:" +msgstr "N° di download:" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:53 +msgid "Speed (kB/s):" +msgstr "Velocità (kB/s):" + +#: qcsrc/menu/xonotic/dialog_settings_network.c:57 +msgid "Client UDP port:" +msgstr "Porta UDP del client:" + +#: qcsrc/menu/xonotic/serverlist.c:357 +msgid "Remove" +msgstr "Rimuovi" + +#: qcsrc/menu/xonotic/serverlist.c:359 +msgid "Bookmark" +msgstr "Aggiungi tra i preferiti" + +#: qcsrc/menu/xonotic/serverlist.c:515 +msgid "Ping" +msgstr "Ping" + +#: qcsrc/menu/xonotic/serverlist.c:516 +msgid "Host name" +msgstr "Nome dell'host" + +#: qcsrc/menu/xonotic/serverlist.c:517 +msgid "Map" +msgstr "Mappa" + +#: qcsrc/menu/xonotic/serverlist.c:518 +msgid "Type" +msgstr "Tipo" + +#: qcsrc/menu/xonotic/serverlist.c:519 +msgid "Players" +msgstr "Giocatori" + +#: qcsrc/menu/xonotic/maplist.c:278 +msgid "Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" +msgstr "Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" + +#: qcsrc/menu/xonotic/maplist.c:286 +#, c-format +msgid "%s's Xonotic Server" +msgstr "Server Xonotic di %s" + +#: qcsrc/menu/xonotic/maplist.c:291 +msgid "Huh? Can't play this (invalid game type). Refiltering so this won't happen again.\n" +msgstr "Huh? Can't play this (invalid game type). Refiltering so this won't happen again.\n" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:4 +msgid "Demo" +msgstr "Demo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:28 +msgid "Record demos while playing" +msgstr "Registra demo durante le partite" + +#: qcsrc/menu/xonotic/dialog_multiplayer_demo.c:43 +msgid "Timedemo" +msgstr "Timedemo" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:4 +msgid "Powerups Panel" +msgstr "Pannello dei Powerup" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:22 +msgid "Enable status bar" +msgstr "Abilita barra di stato" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:24 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:24 +msgid "Status bar alignment:" +msgstr "Allineamento barra di stato:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:42 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:42 +msgid "Inward" +msgstr "Interno" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:43 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:43 +msgid "Outward" +msgstr "Esterno" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:37 +msgid "Icon alignment:" +msgstr "Allineamento icone:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.c:45 +msgid "Flip strength and shield positions" +msgstr "Inverti posizioni di armatura e vita" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:27 +msgid "Master:" +msgstr "Master:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:33 +msgid "Music:" +msgstr "Musica:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:40 +msgid "VOL^Ambient:" +msgstr "VOL^Ambiente:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:48 +msgid "Info:" +msgstr "Info:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:57 +msgid "Items:" +msgstr "Oggetti:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:65 +msgid "Pain:" +msgstr "Dolore:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:73 +msgid "Player:" +msgstr "Giocatore:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:81 +msgid "Shots:" +msgstr "Spari:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:88 +msgid "Voice:" +msgstr "Voce:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:96 +msgid "Weapons:" +msgstr "Armi:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:103 +#: qcsrc/menu/xonotic/dialog_settings_audio.c:161 +msgid "Frequency:" +msgstr "Frequenza:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:105 +msgid "8 kHz" +msgstr "8 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:106 +msgid "11.025 kHz" +msgstr "11.025 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:107 +msgid "16 kHz" +msgstr "16 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:108 +msgid "22.05 kHz" +msgstr "22.05 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:109 +msgid "24 kHz" +msgstr "24 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:110 +msgid "32 kHz" +msgstr "32 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:111 +msgid "44.1 kHz" +msgstr "44.1 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:112 +msgid "48 kHz" +msgstr "48 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:115 +msgid "Channels:" +msgstr "Canali:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:117 +msgid "Mono" +msgstr "Mono" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:118 +msgid "Stereo" +msgstr "Stereo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:119 +msgid "2.1" +msgstr "2.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:120 +msgid "4" +msgstr "4" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:121 +msgid "5" +msgstr "5" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:122 +msgid "5.1" +msgstr "5.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:123 +msgid "6.1" +msgstr "6.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:124 +msgid "7.1" +msgstr "7.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:128 +msgid "Swap Stereo" +msgstr "Scambia canali stereo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:132 +msgid "Headphone friendly mode" +msgstr "Modalità cuffie" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:136 +msgid "Spatial voices:" +msgstr "Voci spaziali:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:137 +msgid "VOCS^None" +msgstr "VOCS^Nessuna" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:138 +msgid "VOCS^Taunts" +msgstr "VOCS^Insulti" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:139 +msgid "VOCS^All" +msgstr "VOCS^Tutte" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:142 +msgid "Taunt range:" +msgstr "Range di insulti:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:145 +msgid "RNG^Very short" +msgstr "RNG^Molto ristretto" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:146 +msgid "RNG^Short" +msgstr "RNG^Ristretto" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:147 +msgid "RNG^Normal" +msgstr "RNG^Normale" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:148 +msgid "RNG^Long" +msgstr "RNG^Lungo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:149 +msgid "RNG^Full" +msgstr "RNG^Pieno" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:156 +msgid "Automatic taunts" +msgstr "Insulti automatici" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:165 +msgid "Time warning:" +msgstr "Avvertimento di tempo:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:167 +msgid "WRN^None" +msgstr "WRN^Nessuno" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:168 +msgid "1 minute" +msgstr "1 minuto" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:169 +msgid "5 minutes" +msgstr "5 minuti" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:170 +msgid "WRN^Both" +msgstr "WNR^Entrambi" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:173 +msgid "Hit indicator" +msgstr "Indicatore di colpo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.c:175 +msgid "Menu sounds" +msgstr "Suoni del menu" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:4 +msgid "Multiplayer" +msgstr "Multiplayer" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:18 +msgid "Servers" +msgstr "Server" + +#: qcsrc/menu/xonotic/dialog_multiplayer.c:20 +msgid "Demos" +msgstr "Demo" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:4 +msgid "Health/Armor Panel" +msgstr "Pannello vita/armatura" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.c:45 +msgid "Flip health and armor positions" +msgstr "Inverti posizioni di vita e armatura" + diff --git a/menu.dat.nl.po b/menu.dat.nl.po index 739df7d38..79eb878d8 100644 --- a/menu.dat.nl.po +++ b/menu.dat.nl.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-27 17:06+0100\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" -"Language: \n" #: qcsrc/menu/gamecommand.qc:47 #, c-format @@ -84,23 +84,23 @@ msgstr "???" msgid "Level %d: %s" msgstr "Level %d: %s" -#: qcsrc/menu/xonotic/cvarlist.c:84 +#: qcsrc/menu/xonotic/cvarlist.c:85 msgid "will be saved to config.cfg" msgstr "word in config.cfg opgeslagen" -#: qcsrc/menu/xonotic/cvarlist.c:86 +#: qcsrc/menu/xonotic/cvarlist.c:87 msgid "will not be saved" msgstr "word niet opgeslagen" -#: qcsrc/menu/xonotic/cvarlist.c:88 +#: qcsrc/menu/xonotic/cvarlist.c:89 msgid "private" msgstr "privé " -#: qcsrc/menu/xonotic/cvarlist.c:90 +#: qcsrc/menu/xonotic/cvarlist.c:91 msgid "engine setting" msgstr "engine instelling" -#: qcsrc/menu/xonotic/cvarlist.c:92 +#: qcsrc/menu/xonotic/cvarlist.c:93 msgid "read only" msgstr "alleen lezen" @@ -111,9 +111,9 @@ 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:46 +#: 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:59 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:61 #: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 msgid "OK" msgstr "OK" @@ -416,7 +416,7 @@ msgid "Fade out after:" msgstr "Vervagen na:" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 msgid "Never" msgstr "Nooit" @@ -826,7 +826,7 @@ msgid "Game types:" msgstr "Game modus:" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 msgid "Close" msgstr "Dichtdoen" @@ -1007,7 +1007,7 @@ msgid "Info..." msgstr "Info..." #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 msgid "Join!" msgstr "Meedoen!" @@ -1017,105 +1017,105 @@ 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:177 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +#: 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:151 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:158 #, c-format -msgid "%d/%d" -msgstr "%d/%d" +msgid "%d/%d, %d free player slots" +msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#: 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:166 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 msgid "Official settings" msgstr "Officiële configuratie" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191 +#: 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:199 +#: 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:201 +#: 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:205 +#: 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:207 +#: 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:211 +#: 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:213 +#: 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:217 +#: 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:219 +#: 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:240 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +#: 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:248 +#: 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:253 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 msgid "Map:" msgstr "Map:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 msgid "Gameplay:" msgstr "Gameplay:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 msgid "Bots:" msgstr "Bots:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 msgid "Mod:" msgstr "Mod:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 msgid "Version:" msgstr "Versie:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 msgid "Ping:" msgstr "Ping:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 msgid "CA:" msgstr "CA:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 msgid "Key:" msgstr "Sleutel:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 msgid "Encryption:" msgstr "Versleuteling:" @@ -1254,30 +1254,26 @@ msgid "Waypoints" msgstr "Wegwijzers" #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 -msgid "Waypoint settings:" -msgstr "Wegwijzer instellingen" - -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 msgid "Show base waypoints" msgstr "Laat wegwijzers zien voor de basis" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 msgid "Waypoint scale:" msgstr "Wegwijzer schaal:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 msgid "Waypoint alpha:" msgstr "Wegwijzer alpha:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 msgid "Show names:" msgstr "Laat namen zien:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 msgid "Teammates" msgstr "Teammaten" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 msgid "All players" msgstr "Alle spelers" @@ -1946,7 +1942,7 @@ msgstr "Cvar" msgid "Value:" msgstr "Waarde:" -#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 msgid "Description:" msgstr "Omschrijving:" @@ -2210,31 +2206,31 @@ msgstr "" msgid "<no model found>" msgstr "<geen model gevonden>" -#: qcsrc/menu/xonotic/serverlist.c:357 +#: qcsrc/menu/xonotic/serverlist.c:360 msgid "Remove" msgstr "Verwijderen" -#: qcsrc/menu/xonotic/serverlist.c:359 +#: qcsrc/menu/xonotic/serverlist.c:362 msgid "Bookmark" msgstr "Bookmark" -#: qcsrc/menu/xonotic/serverlist.c:515 +#: qcsrc/menu/xonotic/serverlist.c:518 msgid "Ping" msgstr "Ping" -#: qcsrc/menu/xonotic/serverlist.c:516 +#: qcsrc/menu/xonotic/serverlist.c:519 msgid "Host name" msgstr "Server naam" -#: qcsrc/menu/xonotic/serverlist.c:517 +#: qcsrc/menu/xonotic/serverlist.c:520 msgid "Map" msgstr "Map" -#: qcsrc/menu/xonotic/serverlist.c:518 +#: qcsrc/menu/xonotic/serverlist.c:521 msgid "Type" msgstr "Type" -#: qcsrc/menu/xonotic/serverlist.c:519 +#: qcsrc/menu/xonotic/serverlist.c:522 msgid "Players" msgstr "Spelers" @@ -2408,22 +2404,22 @@ msgstr "Activeer paneel" msgid "Crylink" msgstr "Crylink" -#: qcsrc/server/w_crylink.qc:637 +#: qcsrc/server/w_crylink.qc:645 #, c-format msgid "%s succeeded at self-destructing themself with the Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:642 +#: qcsrc/server/w_crylink.qc:650 #, c-format msgid "%s could not hide from %s's Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:644 +#: qcsrc/server/w_crylink.qc:652 #, c-format msgid "%s was too close to %s's Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:646 +#: qcsrc/server/w_crylink.qc:654 #, c-format msgid "%s took a close look at %s's Crylink" msgstr "" @@ -2758,3 +2754,9 @@ msgstr "Machine Gun" #, 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 index 3088b78ba..9991ef5bd 100644 --- a/menu.dat.pt.po +++ b/menu.dat.pt.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: Xontoic 0.1preview\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-27 17:06+0100\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" -"Language: Portuguese\n" #: qcsrc/menu/gamecommand.qc:47 #, c-format @@ -51,8 +51,8 @@ msgstr "Browser não inicializado!" #, 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" +"NOTA: marca texto %s demasiado larga para etiqueta, condensada por factor " +"%f\n" #: qcsrc/menu/item/listbox.c:300 #, c-format @@ -71,7 +71,7 @@ msgstr "modificado" #: qcsrc/menu/menu.qc:29 #, c-format msgid "^4MQC Build information: %s\n" -msgstr "^4MQ Informação da Build %s\n" +msgstr "^4MQC Informação da Build %s\n" #: qcsrc/menu/xonotic/campaign.c:284 #: qcsrc/menu/xonotic/dialog_singleplayer.c:66 @@ -83,23 +83,23 @@ msgstr "???" msgid "Level %d: %s" msgstr "Nível %d: %s" -#: qcsrc/menu/xonotic/cvarlist.c:84 +#: 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:86 +#: qcsrc/menu/xonotic/cvarlist.c:87 msgid "will not be saved" msgstr "não será guardado" -#: qcsrc/menu/xonotic/cvarlist.c:88 +#: qcsrc/menu/xonotic/cvarlist.c:89 msgid "private" msgstr "privado" -#: qcsrc/menu/xonotic/cvarlist.c:90 +#: qcsrc/menu/xonotic/cvarlist.c:91 msgid "engine setting" msgstr "definição do motor" -#: qcsrc/menu/xonotic/cvarlist.c:92 +#: qcsrc/menu/xonotic/cvarlist.c:93 msgid "read only" msgstr "apenas ler" @@ -110,9 +110,9 @@ 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:46 +#: 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:59 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:61 #: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 msgid "OK" msgstr "OK" @@ -415,7 +415,7 @@ msgid "Fade out after:" msgstr "Desaparecer após:" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 msgid "Never" msgstr "Nunca" @@ -831,7 +831,7 @@ msgid "Game types:" msgstr "Modos de jogo:" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 msgid "Close" msgstr "Fechar" @@ -1015,7 +1015,7 @@ msgid "Info..." msgstr "Informação..." #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 msgid "Join!" msgstr "Juntar!" @@ -1025,105 +1025,105 @@ 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:177 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +#: 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:151 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:158 #, c-format -msgid "%d/%d" -msgstr "%d/%d" +msgid "%d/%d, %d free player slots" +msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#: 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:166 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 msgid "Official settings" msgstr "Definições oficiais" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191 +#: 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:199 +#: 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:201 +#: 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:205 +#: 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:207 +#: 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:211 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 msgid "requested (will encrypt)" msgstr "pedido (encripta)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +#: 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:217 +#: 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:219 +#: 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:240 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +#: 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:248 +#: 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:253 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 msgid "Map:" msgstr "Mapa:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 msgid "Gameplay:" msgstr "Jogabilidade:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 msgid "Bots:" msgstr "Jogadores controlados pelo computador:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 msgid "Mod:" msgstr "Mod:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 msgid "Version:" msgstr "Versão:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 msgid "Ping:" msgstr "Ping:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 msgid "CA:" msgstr "CA:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 msgid "Key:" msgstr "Chave:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 msgid "Encryption:" msgstr "Encriptação:" @@ -1269,30 +1269,26 @@ msgid "Waypoints" msgstr "Caminhos" #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 -msgid "Waypoint settings:" -msgstr "Definições dos caminhos:" - -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 msgid "Show base waypoints" msgstr "Mostrar caminhos base" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 msgid "Waypoint scale:" msgstr "Escala dos Caminhos:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 msgid "Waypoint alpha:" msgstr "Caminhos alfa:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 msgid "Show names:" msgstr "Mostrar nomes:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 msgid "Teammates" msgstr "Companheiros de Equipa" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 msgid "All players" msgstr "Todos os jogadores" @@ -1994,7 +1990,7 @@ msgstr "Definição:" msgid "Value:" msgstr "Valor:" -#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 msgid "Description:" msgstr "Descrição:" @@ -2272,31 +2268,31 @@ msgstr "" msgid "<no model found>" msgstr "<nenhum modelo encontrado>" -#: qcsrc/menu/xonotic/serverlist.c:357 +#: qcsrc/menu/xonotic/serverlist.c:360 msgid "Remove" msgstr "Remover" -#: qcsrc/menu/xonotic/serverlist.c:359 +#: qcsrc/menu/xonotic/serverlist.c:362 msgid "Bookmark" msgstr "Marcar" -#: qcsrc/menu/xonotic/serverlist.c:515 +#: qcsrc/menu/xonotic/serverlist.c:518 msgid "Ping" msgstr "Ping" -#: qcsrc/menu/xonotic/serverlist.c:516 +#: qcsrc/menu/xonotic/serverlist.c:519 msgid "Host name" msgstr "Nome do Host" -#: qcsrc/menu/xonotic/serverlist.c:517 +#: qcsrc/menu/xonotic/serverlist.c:520 msgid "Map" msgstr "Mapa" -#: qcsrc/menu/xonotic/serverlist.c:518 +#: qcsrc/menu/xonotic/serverlist.c:521 msgid "Type" msgstr "Tipo" -#: qcsrc/menu/xonotic/serverlist.c:519 +#: qcsrc/menu/xonotic/serverlist.c:522 msgid "Players" msgstr "Jogadores" @@ -2474,22 +2470,22 @@ msgstr "Actival painel" msgid "Crylink" msgstr "Crylink" -#: qcsrc/server/w_crylink.qc:637 +#: qcsrc/server/w_crylink.qc:645 #, c-format msgid "%s succeeded at self-destructing themself with the Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:642 +#: qcsrc/server/w_crylink.qc:650 #, c-format msgid "%s could not hide from %s's Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:644 +#: qcsrc/server/w_crylink.qc:652 #, c-format msgid "%s was too close to %s's Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:646 +#: qcsrc/server/w_crylink.qc:654 #, c-format msgid "%s took a close look at %s's Crylink" msgstr "" @@ -2824,3 +2820,9 @@ msgstr "Machine Gun" #, 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 index 151c5b29c..0703f7933 100644 --- a/menu.dat.ro.po +++ b/menu.dat.ro.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: Xonotic 0.1preview\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-27 17:06+0100\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" -"Language: ro\n" #: qcsrc/menu/gamecommand.qc:47 #, c-format @@ -83,23 +83,23 @@ msgstr "???" msgid "Level %d: %s" msgstr "Nivelul %d: %s" -#: qcsrc/menu/xonotic/cvarlist.c:84 +#: 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:86 +#: qcsrc/menu/xonotic/cvarlist.c:87 msgid "will not be saved" msgstr "nu se va salva" -#: qcsrc/menu/xonotic/cvarlist.c:88 +#: qcsrc/menu/xonotic/cvarlist.c:89 msgid "private" msgstr "privat" -#: qcsrc/menu/xonotic/cvarlist.c:90 +#: qcsrc/menu/xonotic/cvarlist.c:91 msgid "engine setting" msgstr "setari motor" -#: qcsrc/menu/xonotic/cvarlist.c:92 +#: qcsrc/menu/xonotic/cvarlist.c:93 msgid "read only" msgstr "numai de citit" @@ -110,9 +110,9 @@ 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:46 +#: 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:59 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:61 #: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 msgid "OK" msgstr "OK" @@ -415,7 +415,7 @@ msgid "Fade out after:" msgstr "Atenuare opacitate dupa:" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 msgid "Never" msgstr "Niciodata" @@ -831,7 +831,7 @@ msgid "Game types:" msgstr "Moduri de joc:" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 msgid "Close" msgstr "Inchidere" @@ -1015,7 +1015,7 @@ msgid "Info..." msgstr "Informatii..." #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 msgid "Join!" msgstr "Alaturare!" @@ -1025,105 +1025,105 @@ 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:177 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +#: 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:151 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:158 #, c-format -msgid "%d/%d" -msgstr "%d/%d" +msgid "%d/%d, %d free player slots" +msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#: 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:166 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 msgid "Official settings" msgstr "Setarile oficiale" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191 +#: 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:199 +#: 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:201 +#: 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:205 +#: 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:207 +#: 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:211 +#: 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:213 +#: 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:217 +#: 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:219 +#: 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:240 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +#: 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:248 +#: 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:253 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 msgid "Map:" msgstr "Harta:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 msgid "Gameplay:" msgstr "Mod:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 msgid "Bots:" msgstr "Boti:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 msgid "Mod:" msgstr "Modificare:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 msgid "Version:" msgstr "Versiune:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 msgid "Ping:" msgstr "Latenta:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 msgid "CA:" msgstr "CA:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 msgid "Key:" msgstr "Cheie:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 msgid "Encryption:" msgstr "Encriptare:" @@ -1269,30 +1269,26 @@ msgid "Waypoints" msgstr "Indicatoare" #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 -msgid "Waypoint settings:" -msgstr "Setari indicatoare:" - -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 msgid "Show base waypoints" msgstr "Afisaj indicatoare de baza" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 msgid "Waypoint scale:" msgstr "Marime indicatoare:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 msgid "Waypoint alpha:" msgstr "Opacitate indicatoare:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 msgid "Show names:" msgstr "Afisaj nume:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 msgid "Teammates" msgstr "Coechipieri" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 msgid "All players" msgstr "Toti jucatorii" @@ -1993,7 +1989,7 @@ msgstr "Setari:" msgid "Value:" msgstr "Valoare:" -#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 msgid "Description:" msgstr "Descriere:" @@ -2271,31 +2267,31 @@ msgstr "" msgid "<no model found>" msgstr "<nu a fost gasit nici un model>" -#: qcsrc/menu/xonotic/serverlist.c:357 +#: qcsrc/menu/xonotic/serverlist.c:360 msgid "Remove" msgstr "Stergere" -#: qcsrc/menu/xonotic/serverlist.c:359 +#: qcsrc/menu/xonotic/serverlist.c:362 msgid "Bookmark" msgstr "Favorit" -#: qcsrc/menu/xonotic/serverlist.c:515 +#: qcsrc/menu/xonotic/serverlist.c:518 msgid "Ping" msgstr "Latenta" -#: qcsrc/menu/xonotic/serverlist.c:516 +#: qcsrc/menu/xonotic/serverlist.c:519 msgid "Host name" msgstr "Nume server" -#: qcsrc/menu/xonotic/serverlist.c:517 +#: qcsrc/menu/xonotic/serverlist.c:520 msgid "Map" msgstr "Harta" -#: qcsrc/menu/xonotic/serverlist.c:518 +#: qcsrc/menu/xonotic/serverlist.c:521 msgid "Type" msgstr "Mod" -#: qcsrc/menu/xonotic/serverlist.c:519 +#: qcsrc/menu/xonotic/serverlist.c:522 msgid "Players" msgstr "Jucatori" @@ -2471,22 +2467,22 @@ msgstr "Activare panou" msgid "Crylink" msgstr "Crylink" -#: qcsrc/server/w_crylink.qc:637 +#: qcsrc/server/w_crylink.qc:645 #, c-format msgid "%s succeeded at self-destructing themself with the Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:642 +#: qcsrc/server/w_crylink.qc:650 #, c-format msgid "%s could not hide from %s's Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:644 +#: qcsrc/server/w_crylink.qc:652 #, c-format msgid "%s was too close to %s's Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:646 +#: qcsrc/server/w_crylink.qc:654 #, c-format msgid "%s took a close look at %s's Crylink" msgstr "" @@ -2821,3 +2817,9 @@ msgstr "Machine Gun" #, 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 index 7d6a2feed..3c3ef48e2 100644 --- a/menu.dat.ru.po +++ b/menu.dat.ru.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: 0.1preview\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-27 17:06+0100\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" -"Language: ru\n" #: qcsrc/menu/gamecommand.qc:47 #, c-format @@ -81,24 +81,24 @@ msgstr "???" msgid "Level %d: %s" msgstr "Уровень %d: %s" -#: qcsrc/menu/xonotic/cvarlist.c:84 +#: qcsrc/menu/xonotic/cvarlist.c:85 msgid "will be saved to config.cfg" msgstr "будет сохранено в config.cfg" -#: qcsrc/menu/xonotic/cvarlist.c:86 +#: qcsrc/menu/xonotic/cvarlist.c:87 msgid "will not be saved" msgstr "не будет сохранено" # личное, частное -#: qcsrc/menu/xonotic/cvarlist.c:88 +#: qcsrc/menu/xonotic/cvarlist.c:89 msgid "private" msgstr "личное" -#: qcsrc/menu/xonotic/cvarlist.c:90 +#: qcsrc/menu/xonotic/cvarlist.c:91 msgid "engine setting" msgstr "установка движка" -#: qcsrc/menu/xonotic/cvarlist.c:92 +#: qcsrc/menu/xonotic/cvarlist.c:93 msgid "read only" msgstr "только чтение" @@ -109,9 +109,9 @@ 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:46 +#: 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:59 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:61 #: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 msgid "OK" msgstr "ОК" @@ -418,7 +418,7 @@ msgid "Fade out after:" msgstr "Исчезать после:" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 msgid "Never" msgstr "Никогда" @@ -828,7 +828,7 @@ msgid "Game types:" msgstr "Режимы игры:" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 msgid "Close" msgstr "Закрыть" @@ -1011,7 +1011,7 @@ msgid "Info..." msgstr "Сведения..." #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 msgid "Join!" msgstr "Присоединиться" @@ -1021,105 +1021,105 @@ 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:177 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +#: 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:151 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:158 #, c-format -msgid "%d/%d" -msgstr "%d/%d" +msgid "%d/%d, %d free player slots" +msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#: 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:166 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 msgid "Official settings" msgstr "Официальные настройки" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197 msgid "N/A (can't connect)" msgstr "Н/Д (не могу подключиться)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 msgid "not supported (can't connect)" msgstr "не поддерживается (не могу подключиться)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:201 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 msgid "not supported (won't encrypt)" msgstr "не поддерживается (шифрования не будет)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 msgid "supported (will encrypt)" msgstr "поддерживается (будет шифрование)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 msgid "supported (won't encrypt)" msgstr "поддерживается (шифрования не будет)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 msgid "requested (will encrypt)" msgstr "запрошено (будет шифрование)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 msgid "requested (won't encrypt)" msgstr "запрошено (шифрования не будет)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223 msgid "required (can't connect)" msgstr "требуется (не могу подключиться)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225 msgid "required (will encrypt)" msgstr "требуется (будет шифрование)" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:240 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +#: 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:248 +#: 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:253 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 msgid "Map:" msgstr "Карта:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 msgid "Gameplay:" msgstr "Геймплей:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 msgid "Bots:" msgstr "Боты:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 msgid "Mod:" msgstr "Мод:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 msgid "Version:" msgstr "Версия:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 msgid "Ping:" msgstr "Пинг:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 msgid "CA:" msgstr "CA:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 msgid "Key:" msgstr "Ключ:" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 msgid "Encryption:" msgstr "Шифрование:" @@ -1258,30 +1258,26 @@ msgid "Waypoints" msgstr "Отметки" #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 -msgid "Waypoint settings:" -msgstr "Настройки отметок:" - -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 msgid "Show base waypoints" msgstr "Показывать основные отметки" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 msgid "Waypoint scale:" msgstr "Размер отметок:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 msgid "Waypoint alpha:" msgstr "Прозрачность отметок:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 msgid "Show names:" msgstr "Показывать имена:" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 msgid "Teammates" msgstr "Союзники" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 msgid "All players" msgstr "Все игроки" @@ -1954,7 +1950,7 @@ msgstr "Настройка:" msgid "Value:" msgstr "Значение:" -#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 msgid "Description:" msgstr "Описание:" @@ -2218,31 +2214,31 @@ msgstr "" msgid "<no model found>" msgstr "<модель игрока не найдена>" -#: qcsrc/menu/xonotic/serverlist.c:357 +#: qcsrc/menu/xonotic/serverlist.c:360 msgid "Remove" msgstr "Убрать" -#: qcsrc/menu/xonotic/serverlist.c:359 +#: qcsrc/menu/xonotic/serverlist.c:362 msgid "Bookmark" msgstr "В закладки" -#: qcsrc/menu/xonotic/serverlist.c:515 +#: qcsrc/menu/xonotic/serverlist.c:518 msgid "Ping" msgstr "Пинг" -#: qcsrc/menu/xonotic/serverlist.c:516 +#: qcsrc/menu/xonotic/serverlist.c:519 msgid "Host name" msgstr "Имя сервера" -#: qcsrc/menu/xonotic/serverlist.c:517 +#: qcsrc/menu/xonotic/serverlist.c:520 msgid "Map" msgstr "Карта" -#: qcsrc/menu/xonotic/serverlist.c:518 +#: qcsrc/menu/xonotic/serverlist.c:521 msgid "Type" msgstr "Вид" -#: qcsrc/menu/xonotic/serverlist.c:519 +#: qcsrc/menu/xonotic/serverlist.c:522 msgid "Players" msgstr "Игроки" @@ -2418,22 +2414,22 @@ msgstr "Включить панель" msgid "Crylink" msgstr "Crylink" -#: qcsrc/server/w_crylink.qc:637 +#: qcsrc/server/w_crylink.qc:645 #, c-format msgid "%s succeeded at self-destructing themself with the Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:642 +#: qcsrc/server/w_crylink.qc:650 #, c-format msgid "%s could not hide from %s's Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:644 +#: qcsrc/server/w_crylink.qc:652 #, c-format msgid "%s was too close to %s's Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:646 +#: qcsrc/server/w_crylink.qc:654 #, c-format msgid "%s took a close look at %s's Crylink" msgstr "" @@ -2768,3 +2764,9 @@ msgstr "Machine Gun" #, 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 index 743beffac..7494655db 100644 --- a/menu.dat.se.po +++ b/menu.dat.se.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-27 17:06+0100\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" -"Language: se\n" #: qcsrc/menu/gamecommand.qc:47 #, c-format @@ -82,23 +82,23 @@ msgstr "" msgid "Level %d: %s" msgstr "" -#: qcsrc/menu/xonotic/cvarlist.c:84 +#: qcsrc/menu/xonotic/cvarlist.c:85 msgid "will be saved to config.cfg" msgstr "" -#: qcsrc/menu/xonotic/cvarlist.c:86 +#: qcsrc/menu/xonotic/cvarlist.c:87 msgid "will not be saved" msgstr "" -#: qcsrc/menu/xonotic/cvarlist.c:88 +#: qcsrc/menu/xonotic/cvarlist.c:89 msgid "private" msgstr "" -#: qcsrc/menu/xonotic/cvarlist.c:90 +#: qcsrc/menu/xonotic/cvarlist.c:91 msgid "engine setting" msgstr "" -#: qcsrc/menu/xonotic/cvarlist.c:92 +#: qcsrc/menu/xonotic/cvarlist.c:93 msgid "read only" msgstr "" @@ -109,9 +109,9 @@ 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:46 +#: 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:59 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:61 #: qcsrc/menu/xonotic/dialog_singleplayer_winner.c:21 msgid "OK" msgstr "OK" @@ -416,7 +416,7 @@ msgid "Fade out after:" msgstr "Tona ut efter:" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.c:26 -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:41 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:36 msgid "Never" msgstr "Aldrig" @@ -827,7 +827,7 @@ msgid "Game types:" msgstr "Speltyper:" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:119 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:308 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:314 msgid "Close" msgstr "Stäng" @@ -1009,7 +1009,7 @@ msgid "Info..." msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_join.c:70 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:311 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:317 msgid "Join!" msgstr "" @@ -1019,105 +1019,105 @@ 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:177 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:183 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:193 +#: 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:151 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:158 #, c-format -msgid "%d/%d" +msgid "%d/%d, %d free player slots" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 #, c-format msgid "%d modified settings" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:166 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:172 msgid "Official settings" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:191 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:197 msgid "N/A (can't connect)" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:199 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 msgid "not supported (can't connect)" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:201 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 msgid "not supported (won't encrypt)" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:205 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 msgid "supported (will encrypt)" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:207 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 msgid "supported (won't encrypt)" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:211 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 msgid "requested (will encrypt)" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:213 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 msgid "requested (won't encrypt)" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:217 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:223 msgid "required (can't connect)" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:219 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:225 msgid "required (will encrypt)" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:240 -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:263 +#: 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:248 +#: 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:253 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:259 msgid "Map:" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:258 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:264 msgid "Gameplay:" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:268 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:274 msgid "Bots:" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:273 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:279 msgid "Mod:" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:278 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:284 msgid "Version:" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:283 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 msgid "Ping:" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:289 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 msgid "CA:" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:295 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 msgid "Key:" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:301 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.c:307 msgid "Encryption:" msgstr "" @@ -1257,30 +1257,26 @@ msgid "Waypoints" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:23 -msgid "Waypoint settings:" -msgstr "" - -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:26 msgid "Show base waypoints" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:25 msgid "Waypoint scale:" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:29 msgid "Waypoint alpha:" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:39 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:34 msgid "Show names:" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:42 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:37 msgid "Teammates" msgstr "" -#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:43 +#: qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c:38 msgid "All players" msgstr "" @@ -1962,7 +1958,7 @@ msgstr "Inställning:" msgid "Value:" msgstr "Värde:" -#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:54 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.c:56 msgid "Description:" msgstr "Beskrivning:" @@ -2225,31 +2221,31 @@ msgstr "" msgid "<no model found>" msgstr "<ingen modell funnen>" -#: qcsrc/menu/xonotic/serverlist.c:357 +#: qcsrc/menu/xonotic/serverlist.c:360 msgid "Remove" msgstr "" -#: qcsrc/menu/xonotic/serverlist.c:359 +#: qcsrc/menu/xonotic/serverlist.c:362 msgid "Bookmark" msgstr "" -#: qcsrc/menu/xonotic/serverlist.c:515 +#: qcsrc/menu/xonotic/serverlist.c:518 msgid "Ping" msgstr "" -#: qcsrc/menu/xonotic/serverlist.c:516 +#: qcsrc/menu/xonotic/serverlist.c:519 msgid "Host name" msgstr "" -#: qcsrc/menu/xonotic/serverlist.c:517 +#: qcsrc/menu/xonotic/serverlist.c:520 msgid "Map" msgstr "" -#: qcsrc/menu/xonotic/serverlist.c:518 +#: qcsrc/menu/xonotic/serverlist.c:521 msgid "Type" msgstr "" -#: qcsrc/menu/xonotic/serverlist.c:519 +#: qcsrc/menu/xonotic/serverlist.c:522 msgid "Players" msgstr "" @@ -2423,22 +2419,22 @@ msgstr "" msgid "Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:637 +#: qcsrc/server/w_crylink.qc:645 #, c-format msgid "%s succeeded at self-destructing themself with the Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:642 +#: qcsrc/server/w_crylink.qc:650 #, c-format msgid "%s could not hide from %s's Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:644 +#: qcsrc/server/w_crylink.qc:652 #, c-format msgid "%s was too close to %s's Crylink" msgstr "" -#: qcsrc/server/w_crylink.qc:646 +#: qcsrc/server/w_crylink.qc:654 #, c-format msgid "%s took a close look at %s's Crylink" msgstr "" diff --git a/models/items/5hp.tga b/models/items/5hp.tga new file mode 100644 index 000000000..e731fe4fe Binary files /dev/null and b/models/items/5hp.tga differ diff --git a/models/items/5hp_gloss.tga b/models/items/5hp_gloss.tga new file mode 100644 index 000000000..4e4b32b62 Binary files /dev/null and b/models/items/5hp_gloss.tga differ diff --git a/models/items/5hp_glow.tga b/models/items/5hp_glow.tga new file mode 100644 index 000000000..f1ae8f20a Binary files /dev/null and b/models/items/5hp_glow.tga differ diff --git a/models/items/5hp_norm.tga b/models/items/5hp_norm.tga new file mode 100644 index 000000000..78eb7c34d Binary files /dev/null and b/models/items/5hp_norm.tga differ diff --git a/models/items/5hp_reflect.tga b/models/items/5hp_reflect.tga new file mode 100644 index 000000000..e880795a0 Binary files /dev/null and b/models/items/5hp_reflect.tga differ diff --git a/models/items/g_h1.md3 b/models/items/g_h1.md3 index 3b6e7e970..9e6da7569 100644 Binary files a/models/items/g_h1.md3 and b/models/items/g_h1.md3 differ diff --git a/models/items/g_h100.md3 b/models/items/g_h100.md3 index 1893bc538..f589d08bc 100644 Binary files a/models/items/g_h100.md3 and b/models/items/g_h100.md3 differ diff --git a/models/items/g_h25.md3 b/models/items/g_h25.md3 index 09ca47b04..06419c944 100644 Binary files a/models/items/g_h25.md3 and b/models/items/g_h25.md3 differ diff --git a/models/items/g_h50.md3 b/models/items/g_h50.md3 index 9d26a5676..90a91f2a5 100644 Binary files a/models/items/g_h50.md3 and b/models/items/g_h50.md3 differ diff --git a/models/items/glass_gloss.tga b/models/items/glass_gloss.tga new file mode 100644 index 000000000..55e379309 Binary files /dev/null and b/models/items/glass_gloss.tga differ diff --git a/models/items/h25.tga b/models/items/h25.tga new file mode 100644 index 000000000..377c6e491 Binary files /dev/null and b/models/items/h25.tga differ diff --git a/models/items/h25_gloss.tga b/models/items/h25_gloss.tga new file mode 100644 index 000000000..73e16a153 Binary files /dev/null and b/models/items/h25_gloss.tga differ diff --git a/models/items/h25_glow.tga b/models/items/h25_glow.tga new file mode 100644 index 000000000..d76a2bca3 Binary files /dev/null and b/models/items/h25_glow.tga differ diff --git a/models/items/h25_norm.tga b/models/items/h25_norm.tga new file mode 100644 index 000000000..769d3884a Binary files /dev/null and b/models/items/h25_norm.tga differ diff --git a/models/items/h25_reflect.tga b/models/items/h25_reflect.tga new file mode 100644 index 000000000..73e16a153 Binary files /dev/null and b/models/items/h25_reflect.tga differ diff --git a/models/items/h50.tga b/models/items/h50.tga new file mode 100644 index 000000000..36cdbe0c0 Binary files /dev/null and b/models/items/h50.tga differ diff --git a/models/items/h50_gloss.tga b/models/items/h50_gloss.tga new file mode 100644 index 000000000..4a52e3f61 Binary files /dev/null and b/models/items/h50_gloss.tga differ diff --git a/models/items/h50_glow.tga b/models/items/h50_glow.tga new file mode 100644 index 000000000..0b6efb0f2 Binary files /dev/null and b/models/items/h50_glow.tga differ diff --git a/models/items/h50_norm.tga b/models/items/h50_norm.tga new file mode 100644 index 000000000..4ef747579 Binary files /dev/null and b/models/items/h50_norm.tga differ diff --git a/models/items/h50_reflect.tga b/models/items/h50_reflect.tga new file mode 100644 index 000000000..272b07ed8 Binary files /dev/null and b/models/items/h50_reflect.tga differ diff --git a/models/items/h_mega.tga b/models/items/h_mega.tga new file mode 100644 index 000000000..2c56ea290 Binary files /dev/null and b/models/items/h_mega.tga differ diff --git a/models/items/h_mega_gloss.tga b/models/items/h_mega_gloss.tga new file mode 100644 index 000000000..26cb0310e Binary files /dev/null and b/models/items/h_mega_gloss.tga differ diff --git a/models/items/h_mega_glow.tga b/models/items/h_mega_glow.tga new file mode 100644 index 000000000..ede6462fe Binary files /dev/null and b/models/items/h_mega_glow.tga differ diff --git a/models/items/h_mega_norm.tga b/models/items/h_mega_norm.tga new file mode 100644 index 000000000..39a88d7f7 Binary files /dev/null and b/models/items/h_mega_norm.tga differ diff --git a/models/items/h_mega_reflect.tga b/models/items/h_mega_reflect.tga new file mode 100644 index 000000000..6fc8a8b2f Binary files /dev/null and b/models/items/h_mega_reflect.tga differ diff --git a/models/items/red.tga b/models/items/red.tga new file mode 100644 index 000000000..07ce79a10 Binary files /dev/null and b/models/items/red.tga differ diff --git a/models/items/red_gloss.tga b/models/items/red_gloss.tga new file mode 100644 index 000000000..55e379309 Binary files /dev/null and b/models/items/red_gloss.tga differ diff --git a/models/items/red_reflect.tga b/models/items/red_reflect.tga new file mode 100644 index 000000000..e8eaf4f9e Binary files /dev/null and b/models/items/red_reflect.tga differ diff --git a/models/sprites/make-sprites.sh b/models/sprites/make-sprites.sh index 87f24a6d0..9f08c21f9 100644 --- a/models/sprites/make-sprites.sh +++ b/models/sprites/make-sprites.sh @@ -206,3 +206,5 @@ sprite item-fuelregen "Fuel regen" ff8000 000000 0.5 ff8000 ffff00 0.5 sprite item-jetpack "Jet Pack" 808080 000000 0.5 808080 ffff00 0.5 sprite freezetag_frozen "Frozen!" 40e6ff 000000 0.0 # bright cyan + +sprite tagged-target "Tagged" 80ff0f 000000 0.25 80ff0f ffff80 0.25 diff --git a/models/sprites/tagged-target_frame0.tga b/models/sprites/tagged-target_frame0.tga new file mode 100644 index 000000000..3ff6c2fe7 Binary files /dev/null and b/models/sprites/tagged-target_frame0.tga differ diff --git a/models/sprites/tagged-target_frame1.tga b/models/sprites/tagged-target_frame1.tga new file mode 100644 index 000000000..60881fcd4 Binary files /dev/null and b/models/sprites/tagged-target_frame1.tga 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/physicsX0.cfg b/physicsX0.cfg index 8fec02686..f1e4abc52 100644 --- a/physicsX0.cfg +++ b/physicsX0.cfg @@ -1,7 +1,7 @@ // "NoQWBunny" physics based on XPM sv_gravity 800 sv_maxspeed 360 -sv_maxairspeed 400 +sv_maxairspeed 360 sv_stopspeed 100 sv_accelerate 15 @@ -26,9 +26,9 @@ sv_airstrafeaccelerate 24 sv_maxairstrafespeed 100 sv_airstrafeaccel_qw -0.95 sv_aircontrol 125 -sv_aircontrol_penalty 150 +sv_aircontrol_penalty 180 sv_aircontrol_power 2 -sv_airspeedlimit_nonqw 800 +sv_airspeedlimit_nonqw 700 sv_warsowbunny_turnaccel 0 sv_warsowbunny_accel 0.1593 sv_warsowbunny_topspeed 925 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 3d1529594..b3b056948 100644 --- a/qcsrc/client/Defs.qc +++ b/qcsrc/client/Defs.qc @@ -261,7 +261,7 @@ vector w_org, w_backoff; float sniperrifle_scope; float nex_scope; -float cr_maxbullets; +float minelayer_maxmines; float bgmtime; diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index f87538a9e..91ce46479 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -136,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(); @@ -149,6 +151,9 @@ void CSQC_Init(void) } Tuba_Precache(); + if(autocvar_cl_reticle_item_normal) precache_pic("gfx/reticle_normal"); + if(autocvar_cl_reticle_item_nex) precache_pic("gfx/reticle_nex"); + get_mi_min_max_texcoords(1); // try the CLEVER way first minimapname = strcat("gfx/", mi_shortname, "_radar.tga"); shortmapname = mi_shortname; @@ -1092,7 +1097,7 @@ void Ent_Init() serverflags = ReadByte(); - cr_maxbullets = ReadByte(); + minelayer_maxmines = ReadByte(); g_trueaim_minrange = ReadCoord(); diff --git a/qcsrc/client/View.qc b/qcsrc/client/View.qc index d3bbf79cb..09ec96eab 100644 --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@ -353,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; @@ -378,6 +381,7 @@ void CSQC_UpdateView(float w, float h) vid_height = vf_size_y; vector reticle_pos, reticle_size; + vector splash_pos, splash_size; WaypointSprite_Load(); @@ -641,35 +645,36 @@ void CSQC_UpdateView(float w, float h) else if(activeweapon == WEP_NEX && button_attack2 || activeweapon == WEP_SNIPERRIFLE && button_attack2) reticle_type = 2; // nex zoom - if(autocvar_cl_reticle_stretch) + if (reticle_type) { - reticle_size_x = vid_conwidth; - reticle_size_y = vid_conheight; - reticle_pos_x = 0; - reticle_pos_y = 0; - } - else - { - reticle_size_x = max(vid_conwidth, vid_conheight); - reticle_size_y = max(vid_conwidth, vid_conheight); - reticle_pos_x = (vid_conwidth - reticle_size_x) / 2; - reticle_pos_y = (vid_conheight - reticle_size_y) / 2; - } + if(autocvar_cl_reticle_stretch) + { + reticle_size_x = vid_conwidth; + reticle_size_y = vid_conheight; + reticle_pos_x = 0; + reticle_pos_y = 0; + } + else + { + reticle_size_x = max(vid_conwidth, vid_conheight); + reticle_size_y = max(vid_conwidth, vid_conheight); + reticle_pos_x = (vid_conwidth - reticle_size_x) / 2; + reticle_pos_y = (vid_conheight - reticle_size_y) / 2; + } - f = current_zoomfraction; - if(zoomscript_caught) - f = 1; - if(autocvar_cl_reticle_item_normal) - { - precache_pic("gfx/reticle_normal"); - if(reticle_type == 1 && f) - drawpic(reticle_pos, "gfx/reticle_normal", reticle_size, '1 1 1', f * autocvar_cl_reticle_item_normal, DRAWFLAG_NORMAL); - } - if(autocvar_cl_reticle_item_nex) - { - precache_pic("gfx/reticle_nex"); - if(reticle_type == 2 && f) - drawpic(reticle_pos, "gfx/reticle_nex", reticle_size, '1 1 1', f * autocvar_cl_reticle_item_nex, DRAWFLAG_NORMAL); + f = current_zoomfraction; + if(zoomscript_caught) + f = 1; + if(autocvar_cl_reticle_item_normal) + { + if(reticle_type == 1 && f) + drawpic(reticle_pos, "gfx/reticle_normal", reticle_size, '1 1 1', f * autocvar_cl_reticle_item_normal, DRAWFLAG_NORMAL); + } + if(autocvar_cl_reticle_item_nex) + { + if(reticle_type == 2 && f) + drawpic(reticle_pos, "gfx/reticle_nex", reticle_size, '1 1 1', f * autocvar_cl_reticle_item_nex, DRAWFLAG_NORMAL); + } } @@ -725,6 +730,11 @@ void CSQC_UpdateView(float w, float h) if(autocvar_hud_damage) { + splash_size_x = max(vid_conwidth, vid_conheight); + splash_size_y = max(vid_conwidth, vid_conheight); + splash_pos_x = (vid_conwidth - splash_size_x) / 2; + splash_pos_y = (vid_conheight - splash_size_y) / 2; + float myhealth_flash_temp; myhealth = getstati(STAT_HEALTH); @@ -781,7 +791,7 @@ void CSQC_UpdateView(float w, float h) drawfill('0 0 0', eX * vid_conwidth + eY * vid_conheight, myhealth_gentlergb, autocvar_hud_damage_gentle_alpha_multiplier * bound(0, myhealth_flash_temp, 1) * autocvar_hud_damage, DRAWFLAG_NORMAL); } else - drawpic(reticle_pos, "gfx/blood", reticle_size, stov(autocvar_hud_damage_color), bound(0, myhealth_flash_temp, 1) * autocvar_hud_damage, DRAWFLAG_NORMAL); + drawpic(splash_pos, "gfx/blood", splash_size, stov(autocvar_hud_damage_color), bound(0, myhealth_flash_temp, 1) * autocvar_hud_damage, DRAWFLAG_NORMAL); } // Draw the mouse cursor @@ -809,6 +819,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) @@ -850,7 +873,7 @@ void CSQC_UpdateView(float w, float h) // TrueAim check float shottype; - float bullets, ring_scale; + // wcross_origin = '0.5 0 0' * vid_conwidth + '0 0.5 0' * vid_conheight; wcross_origin = project_3d_to_2d(view_origin + MAX_SHOT_DISTANCE * view_forward); wcross_origin_z = 0; @@ -899,6 +922,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); @@ -929,6 +996,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 @@ -983,50 +1071,79 @@ void CSQC_UpdateView(float w, float h) wcross_scale *= 1 - autocvar__menu_alpha; wcross_alpha *= 1 - autocvar__menu_alpha; - - ring_scale = autocvar_crosshair_ring_size; - wcross_size = drawgetimagesize(wcross_name) * wcross_scale; - float nex_charge, nex_chargepool; - nex_charge = getstatf(STAT_NEX_CHARGE); - nex_chargepool = getstatf(STAT_NEX_CHARGEPOOL); + // crosshair rings for weapon stats + if (autocvar_crosshair_ring || autocvar_crosshair_ring_reload) + { + // declarations and stats + float ring_value, ring_scale, ring_alpha, ring_inner_value, ring_inner_alpha; + string ring_image, ring_inner_image; + vector ring_rgb, ring_inner_rgb; + + ring_scale = autocvar_crosshair_ring_size; - if(nex_charge_movingavg == 0) // this should only happen if we have just loaded up the game - nex_charge_movingavg = nex_charge; + float weapon_clipload, weapon_clipsize; + weapon_clipload = getstati(STAT_WEAPON_CLIPLOAD); + weapon_clipsize = getstati(STAT_WEAPON_CLIPSIZE); - // ring around crosshair representing bullets left in camping rifle clip - if (activeweapon == WEP_SNIPERRIFLE && cr_maxbullets) - { - bullets = getstati(STAT_BULLETS_LOADED); - f = bound(0, bullets / cr_maxbullets, 1); + float nex_charge, nex_chargepool; + nex_charge = getstatf(STAT_NEX_CHARGE); + nex_chargepool = getstatf(STAT_NEX_CHARGEPOOL); - a = autocvar_crosshair_ring_sniperrifle_alpha; - DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring.tga", f, wcross_color, wcross_alpha * a, DRAWFLAG_ADDITIVE); - } - else if (activeweapon == WEP_NEX && nex_charge) // ring around crosshair representing velocity-dependent damage for the nex - { - if(nex_chargepool || use_nex_chargepool) - { - use_nex_chargepool = 1; + if(nex_charge_movingavg == 0) // this should only happen if we have just loaded up the game + nex_charge_movingavg = nex_charge; + - a = autocvar_crosshair_ring_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); + // handle the values + if (activeweapon == WEP_NEX && nex_charge && autocvar_crosshair_ring_nex) // ring around crosshair representing velocity-dependent damage for the nex + { + 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 = autocvar_crosshair_ring_nex_inner_alpha; + ring_inner_rgb = eX * autocvar_crosshair_ring_nex_inner_color_red + eY * autocvar_crosshair_ring_nex_inner_color_green + eZ * autocvar_crosshair_ring_nex_inner_color_blue; + ring_inner_image = "gfx/crosshair_ring_inner.tga"; + + // draw the outer ring to show the current charge of the weapon + ring_value = nex_charge; + ring_alpha = autocvar_crosshair_ring_nex_alpha; + ring_rgb = wcross_color; + ring_image = "gfx/crosshair_ring_nexgun.tga"; } - else + else if (activeweapon == WEP_MINE_LAYER && minelayer_maxmines && autocvar_crosshair_ring_minelayer) { - // indicate how much we're charging right now with an inner circle - a = autocvar_crosshair_ring_nex_inner_alpha; - nex_charge_movingavg = (1 - autocvar_crosshair_ring_nex_currentcharge_movingavg_rate) * nex_charge_movingavg + autocvar_crosshair_ring_nex_currentcharge_movingavg_rate * nex_charge; + ring_value = bound(0, getstati(STAT_LAYED_MINES) / minelayer_maxmines, 1); // if you later need to use the count of bullets in another place, then add a float for it. For now, no need to. + ring_alpha = autocvar_crosshair_ring_minelayer_alpha; + ring_rgb = wcross_color; + ring_image = "gfx/crosshair_ring.tga"; + } - rgb = eX * autocvar_crosshair_ring_nex_inner_color_red + eY * autocvar_crosshair_ring_nex_inner_color_green + eZ * autocvar_crosshair_ring_nex_inner_color_blue; - DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring_inner.tga", bound(0, autocvar_crosshair_ring_nex_currentcharge_scale * (nex_charge - nex_charge_movingavg), 1), rgb, wcross_alpha * a, DRAWFLAG_ADDITIVE); + if(autocvar_crosshair_ring_reload && weapon_clipsize) // forces there to be only an ammo ring + { + ring_value = bound(0, weapon_clipload / weapon_clipsize, 1); + ring_scale = autocvar_crosshair_ring_reload_size; + ring_alpha = autocvar_crosshair_ring_reload_alpha; + ring_rgb = wcross_color; + + // Note: This is to stop Taoki from complaining that the image doesn't match all potential balances. + // if a new image for another weapon is added, add the code (and its respective file/value) here + if ((activeweapon == WEP_SNIPERRIFLE) && (weapon_clipsize == 80)) + ring_image = "gfx/crosshair_ring_sniperrifle.tga"; + else + ring_image = "gfx/crosshair_ring.tga"; } - // draw the charge - a = autocvar_crosshair_ring_nex_outer_alpha; - DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring.tga", nex_charge, wcross_color, wcross_alpha * a, DRAWFLAG_ADDITIVE); + if (autocvar_crosshair_ring_inner && 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, wcross_alpha * ring_inner_alpha, DRAWFLAG_ADDITIVE); + + if (ring_value) + DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, ring_image, ring_value, ring_rgb, wcross_alpha * ring_alpha, DRAWFLAG_ADDITIVE); } #define CROSSHAIR_DO_BLUR(M,sz,wcross_name,wcross_alpha) \ @@ -1539,7 +1656,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 153fc7160..e11266ce0 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,24 +99,35 @@ 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_sniperrifle_alpha; +float autocvar_crosshair_ring; +float autocvar_crosshair_ring_inner; +float autocvar_crosshair_ring_minelayer; +float autocvar_crosshair_ring_minelayer_alpha; +float autocvar_crosshair_ring_nex; +float autocvar_crosshair_ring_nex_alpha; float autocvar_crosshair_ring_nex_currentcharge_movingavg_rate; float autocvar_crosshair_ring_nex_currentcharge_scale; float autocvar_crosshair_ring_nex_inner_alpha; float autocvar_crosshair_ring_nex_inner_color_blue; float autocvar_crosshair_ring_nex_inner_color_green; float autocvar_crosshair_ring_nex_inner_color_red; -float autocvar_crosshair_ring_nex_outer_alpha; float autocvar_crosshair_ring_size; +float autocvar_crosshair_ring_reload; +float autocvar_crosshair_ring_reload_alpha; +float autocvar_crosshair_ring_reload_size; float autocvar_crosshair_size; float autocvar_ekg; float autocvar_fov; +float autocvar_g_balance_damagepush_speedfactor; float autocvar_g_balance_tuba_attenuation; float autocvar_g_balance_tuba_fadetime; float autocvar_g_balance_tuba_volume; @@ -206,6 +217,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; @@ -290,3 +302,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/damage.qc b/qcsrc/client/damage.qc index 13c8e462e..783f66759 100644 --- a/qcsrc/client/damage.qc +++ b/qcsrc/client/damage.qc @@ -57,7 +57,7 @@ void Ent_DamageInfo(float isNew) if(self.damageforcescale) if(vlen(thisforce)) { - self.move_velocity = self.move_velocity + self.damageforcescale * thisforce; + self.move_velocity = self.move_velocity + damage_explosion_calcpush(self.damageforcescale * thisforce, self.move_velocity, autocvar_g_balance_damagepush_speedfactor); self.move_flags &~= FL_ONGROUND; } diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc index a383c355c..4728284a4 100644 --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@ -395,9 +395,9 @@ string MakeRaceString(float cp, float mytime, float histime, float lapdelta, str if(histime < 0) return strcat(col, cpname); else if(hisname == "") - return strcat(col, sprintf(_("%s (%s)")), cpname, timestr); + return strcat(col, sprintf(_("%s (%s)"), cpname, timestr)); else - return strcat(col, sprintf(_("%s (%s %s)")), 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) @@ -1619,7 +1619,7 @@ void HUD_Weapons(void) } // TODO make this configurable - if(weaponorder_bypriority != autocvar_cl_weaponpriority) + if(weaponorder_bypriority != autocvar_cl_weaponpriority || !weaponorder[0]) { if(weaponorder_bypriority) strunzone(weaponorder_bypriority); @@ -1823,7 +1823,7 @@ void HUD_Weapons(void) string s; if(complain_weapon_type == 0) { - s = "Out of ammo"; + s = _("Out of ammo"); color = stov(autocvar_hud_panel_weapons_complainbubble_color_outofammo); } else if(complain_weapon_type == 1) { @@ -2750,7 +2750,7 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s } } else if(type == KILL_FIRST_BLOOD) - print(sprintf("^1%s^1 drew first blood\n", s1)); + print(sprintf(_("^1%s^1 drew first blood\n"), s1)); else if (type == DEATH_TELEFRAG) { HUD_KillNotify_Push(s1, s2, 1, DEATH_TELEFRAG); if(gentle) @@ -2910,7 +2910,7 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s } else if (type == DEATH_SLIME) { HUD_KillNotify_Push(s1, "", 0, DEATH_SLIME); if(alsoprint) - print (sprintf("^1%s^1 was slimed\n", s1)); + print (sprintf(_("^1%s^1 was slimed\n"), s1)); } else if (type == DEATH_LAVA) { HUD_KillNotify_Push(s1, "", 0, DEATH_LAVA); if(alsoprint) @@ -3001,7 +3001,7 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s print(sprintf(_("%s^7 returned the %s\n"), s1, s2)); } else if(type == INFO_CAPTUREFLAG) { HUD_KillNotify_Push(s1, s2, 0, INFO_CAPTUREFLAG); - print(sprintf(_("%1^7 captured the %s%s\n"), s1, s2, s3)); + print(sprintf(_("%s^7 captured the %s%s\n"), s1, s2, s3)); } } else if(msg == MSG_RACE) { if(type == RACE_SERVER_RECORD) { @@ -3142,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; @@ -3316,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 != "") @@ -3402,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 != "") @@ -3888,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(_("^2Name ^7instead of \"^1Unregistered player\" ^7in stats")); + vote_called_vote = strzone(_("^2Name ^7instead of \"^1Unregistered player^7\" in stats")); uid2name_dialog = 1; } @@ -3980,9 +3981,9 @@ void HUD_VoteWindow(void) drawcolorcodedstring_aspect(pos + eY * (2/8) * mySize_y, s, eX * mySize_x + eY * (1.75/8) * mySize_y, a, DRAWFLAG_NORMAL); // print the yes/no counts - s = sprintf(_("Yes (%s): %d"), getcommandkey("vyes", "vyes"), ftos(vote_yescount)); + s = sprintf(_("Yes (%s): %d"), getcommandkey("vyes", "vyes"), vote_yescount); drawstring_aspect(pos + eY * (4/8) * mySize_y, s, eX * 0.5 * mySize_x + eY * (1.5/8) * mySize_y, '0 1 0', a, DRAWFLAG_NORMAL); - s = sprintf(_("No (%s): %d"), getcommandkey("vno", "vno"), ftos(vote_nocount)); + s = sprintf(_("No (%s): %d"), getcommandkey("vno", "vno"), vote_nocount); drawstring_aspect(pos + eX * 0.5 * mySize_x + eY * (4/8) * mySize_y, s, eX * 0.5 * mySize_x + eY * (1.5/8) * mySize_y, '1 0 0', a, DRAWFLAG_NORMAL); // draw the progress bar backgrounds @@ -4957,7 +4958,7 @@ void HUD_InfoMessages(void) } else if(warmup_stage && !intermission && !spectatee_status) { - s = strcat("^2Press ^3%s^2 to end warmup", getcommandkey("ready", "ready")); + s = sprintf(_("^2Press ^3%s^2 to end warmup"), getcommandkey("ready", "ready")); drawInfoMessage(s) } @@ -4983,7 +4984,7 @@ void HUD_InfoMessages(void) if (tm) if (tm.team != COLOR_SPECTATOR) if (tm.team_size == ts_max) - s = strcat(s, sprintf(" Press ^3%s%s to adjust", getcommandkey("team menu", "menu_showteamselect"), blinkcolor)); + s = strcat(s, sprintf(_(" Press ^3%s%s to adjust"), getcommandkey("team menu", "menu_showteamselect"), blinkcolor)); drawInfoMessage(s) } } @@ -5096,9 +5097,9 @@ void HUD_ShowAcceleration(void) } if (acceleration > 0) - HUD_Panel_DrawProgressBar(pos, eX * (vid_conwidth - pos_x) + eY * sz, "statusbar", 0, 0, acceleration * scale, rgb, alpha * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(pos, eX * (vid_conwidth - pos_x) + eY * sz, "accelbar", 0, 0, acceleration * scale, rgb, alpha * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); else - HUD_Panel_DrawProgressBar(eY * pos_y, eX * pos_x + eY * sz, "statusbar", 0, 1, -acceleration * scale, rgb, alpha * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(eY * pos_y, eX * pos_x + eY * sz, "accelbar", 0, 1, -acceleration * scale, rgb, alpha * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); } void HUD_Reset (void) diff --git a/qcsrc/client/mapvoting.qc b/qcsrc/client/mapvoting.qc index e94d6a68a..a9e7ca4a9 100644 --- a/qcsrc/client/mapvoting.qc +++ b/qcsrc/client/mapvoting.qc @@ -26,7 +26,7 @@ string MapVote_FormatMapItem(float id, string map, float count, float maxwidth, { if(count == 1) post = _(" (1 vote)"); - else + else if(count >= 0) post = sprintf(_(" (%d votes)"), count); } else diff --git a/qcsrc/client/miscfunctions.qc b/qcsrc/client/miscfunctions.qc index d38b7c9ba..41ecb91ef 100644 --- a/qcsrc/client/miscfunctions.qc +++ b/qcsrc/client/miscfunctions.qc @@ -501,7 +501,7 @@ void drawpic_aspect_skin_expanding(vector position, string pic, vector scale, ve float sz; sz = expandingbox_sizefactor_from_fadelerp(fadelerp); - drawpic_skin(position + expandingbox_resize_centered_box_offset(sz, scale, 1), pic, scale * sz, rgb, alpha * (1 - fadelerp), flag); + drawpic_aspect_skin(position + expandingbox_resize_centered_box_offset(sz, scale, 1), pic, scale * sz, rgb, alpha * (1 - fadelerp), flag); } void drawpic_aspect_skin_expanding_two(vector position, string pic, vector scale, vector rgb, float alpha, float flag, float fadelerp) diff --git a/qcsrc/client/progs.src b/qcsrc/client/progs.src index 1334d7d3c..e296a477b 100644 --- a/qcsrc/client/progs.src +++ b/qcsrc/client/progs.src @@ -14,6 +14,7 @@ csqc_builtins.qc ../common/util.qh ../common/items.qh +../common/explosion_equation.qh ../common/mapinfo.qh @@ -71,8 +72,11 @@ noise.qc ../common/mapinfo.qc ../common/items.qc ../server/w_all.qc +../common/explosion_equation.qc ../warpzonelib/anglestransform.qc ../warpzonelib/mathlib.qc ../warpzonelib/common.qc ../warpzonelib/client.qc + +../common/if-this-file-errors-scroll-up-and-fix-the-warnings.fteqccfail diff --git a/qcsrc/client/projectile.qc b/qcsrc/client/projectile.qc index cede03c5a..092cdc21a 100644 --- a/qcsrc/client/projectile.qc +++ b/qcsrc/client/projectile.qc @@ -292,8 +292,8 @@ void Ent_Projectile() case PROJECTILE_FIREBALL: self.model = ""; self.modelindex = 0; self.traileffect = particleeffectnum("fireball"); break; // particle effect is good enough case PROJECTILE_FIREMINE: self.model = ""; self.modelindex = 0; self.traileffect = particleeffectnum("firemine"); break; // particle effect is good enough case PROJECTILE_TAG: setmodel(self, "models/laser.mdl"); self.traileffect = particleeffectnum("TR_ROCKET"); break; - case PROJECTILE_FLAC: setmodel(self, "models/hagarmissile.mdl"); self.scale = 0.4; self.traileffect = particleeffectnum("TR_ROCKET"); break; - case PROJECTILE_SEEKER: setmodel(self, "models/tagrocket.md3"); self.scale = 2; self.traileffect = particleeffectnum("TR_ROCKET"); break; + case PROJECTILE_FLAC: setmodel(self, "models/hagarmissile.mdl"); self.scale = 0.4; self.traileffect = particleeffectnum("TR_SEEKER"); break; + case PROJECTILE_SEEKER: setmodel(self, "models/tagrocket.md3"); self.traileffect = particleeffectnum("TR_SEEKER"); break; default: error("Received invalid CSQC projectile, can't work with this!"); break; @@ -372,7 +372,6 @@ void Ent_Projectile() self.maxs = '4 4 4'; break; case PROJECTILE_TAG: - loopsound(self, CHAN_PROJECTILE, "weapons/tag_rocket_fly.wav", VOL_BASE, ATTN_NORM); self.mins = '-2 -2 -2'; self.maxs = '2 2 2'; break; @@ -381,6 +380,7 @@ void Ent_Projectile() self.maxs = '2 2 2'; break; case PROJECTILE_SEEKER: + loopsound(self, CHAN_PROJECTILE, "weapons/tag_rocket_fly.wav", VOL_BASE, ATTN_NORM); self.mins = '-4 -4 -4'; self.maxs = '4 4 4'; break; diff --git a/qcsrc/client/scoreboard.qc b/qcsrc/client/scoreboard.qc index 7b90fcda3..517065ac5 100644 --- a/qcsrc/client/scoreboard.qc +++ b/qcsrc/client/scoreboard.qc @@ -17,6 +17,7 @@ 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")); @@ -252,7 +253,7 @@ void Cmd_HUD_Help(float argc) 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(_("^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")); @@ -267,6 +268,8 @@ void Cmd_HUD_Help(float argc) 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" @@ -293,7 +296,7 @@ string HUD_DefaultColumnLayout() "+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 +ka/time +freezetag/revivals ", + "+as/objectives +nexball/faults +nexball/goals +ka/pickups +ka/bckills +ka/bctime +freezetag/revivals ", "-lms,race,nexball/score"); } @@ -356,7 +359,7 @@ 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; } diff --git a/qcsrc/client/waypointsprites.qc b/qcsrc/client/waypointsprites.qc index 8ecadaeb8..bcd8c433e 100644 --- a/qcsrc/client/waypointsprites.qc +++ b/qcsrc/client/waypointsprites.qc @@ -406,6 +406,29 @@ void Ent_WaypointSprite() self.entremove = Ent_RemoveWaypointSprite; } +void WaypointSprite_Load_Frames(string ext) +{ + float dh, n, i, o, f; + string s, sname, sframes; + dh = search_begin(strcat("models/sprites/*_frame*", ext), FALSE, FALSE); + if (dh < 0) + return; + float ext_len = strlen(ext); + n = search_getsize(dh); + for(i = 0; i < n; ++i) + { + s = search_getfilename(dh, i); + s = substring(s, 15, strlen(s) - 15 - ext_len); // strip models/sprites/ and extension + + o = strstrofs(s, "_frame", 0); + sname = strcat("/spriteframes/", substring(s, 0, o)); + sframes = substring(s, o + 6, strlen(s) - o - 6); + f = stof(sframes) + 1; + db_put(tempdb, sname, ftos(max(f, stof(db_get(tempdb, sname))))); + } + search_end(dh); +} + void WaypointSprite_Load() { waypointsprite_fadedistance = vlen(mi_scale); @@ -428,38 +451,8 @@ void WaypointSprite_Load() if(!waypointsprite_initialized) { - float dh, n, i, o, f; - string s, sname, sframes; - - dh = search_begin("models/sprites/*_frame*.tga", FALSE, FALSE); - n = search_getsize(dh); - for(i = 0; i < n; ++i) - { - s = search_getfilename(dh, i); - s = substring(s, 15, strlen(s) - 15 - 4); // strip models/sprites/ and .tga - - o = strstrofs(s, "_frame", 0); - sname = strcat("/spriteframes/", substring(s, 0, o)); - sframes = substring(s, o + 6, strlen(s) - o - 6); - f = stof(sframes) + 1; - db_put(tempdb, sname, ftos(max(f, stof(db_get(tempdb, sname))))); - } - search_end(dh); - - dh = search_begin("models/sprites/*_frame*.jpg", FALSE, FALSE); - n = search_getsize(dh); - for(i = 0; i < n; ++i) - { - s = search_getfilename(dh, i); - s = substring(s, 15, strlen(s) - 15 - 4); // strip models/sprites/ and .jpg - - o = strstrofs(s, "_frame", 0); - sname = strcat("/spriteframes/", substring(s, 0, o)); - sframes = substring(s, o + 6, strlen(s) - o - 6); - f = stof(sframes) + 1; - db_put(tempdb, sname, ftos(max(f, stof(db_get(tempdb, sname))))); - } - search_end(dh); + WaypointSprite_Load_Frames(".tga"); + WaypointSprite_Load_Frames(".jpg"); waypointsprite_initialized = true; } } diff --git a/qcsrc/common/constants.qh b/qcsrc/common/constants.qh index 90376b5b9..419ab73e8 100644 --- a/qcsrc/common/constants.qh +++ b/qcsrc/common/constants.qh @@ -62,7 +62,7 @@ const float TE_CSQC_TARGET_MUSIC = 111; const float TE_CSQC_NOTIFY = 112; const float TE_CSQC_WEAPONCOMPLAIN = 113; const float TE_CSQC_NEX_SCOPE = 116; -const float TE_CSQC_CR_MAXBULLETS = 117; +const float TE_CSQC_MINELAYER_MAXMINES = 117; const float RACE_NET_CHECKPOINT_HIT_QUALIFYING = 0; // byte checkpoint, short time, short recordtime, string recordholder const float RACE_NET_CHECKPOINT_CLEAR = 1; @@ -308,11 +308,15 @@ const float STAT_FUEL = 44; const float STAT_NB_METERSTART = 45; const float STAT_SHOTORG = 46; // compressShotOrigin const float STAT_LEADLIMIT = 47; -const float STAT_BULLETS_LOADED = 48; -const float STAT_NEX_CHARGE = 49; -const float STAT_LAST_PICKUP = 50; -const float STAT_HUD = 51; -const float STAT_NEX_CHARGEPOOL = 52; +const float STAT_WEAPON_CLIPLOAD = 48; +const float STAT_WEAPON_CLIPSIZE = 49; +const float STAT_NEX_CHARGE = 50; +const float STAT_LAST_PICKUP = 51; +const float STAT_HUD = 52; +const float STAT_NEX_CHARGEPOOL = 53; +const float STAT_HIT_TIME = 54; +const float STAT_TYPEHIT_TIME = 55; +const float STAT_LAYED_MINES = 56; // see DP source, quakedef.h const float STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW = 222; @@ -621,6 +625,7 @@ float WR_KILLMESSAGE = 8; // (CSQC) sets w_deathtypestring or leaves it alone float WR_RELOAD = 9; // (SVQC) does not need to do anything float WR_RESETPLAYER = 10; // (SVQC) does not need to do anything float WR_IMPACTEFFECT = 11; // (CSQC) impact effect +float WR_SWITCHABLE = 12; // (CSQC) impact effect float HUD_PANEL_WEAPONS = 0; diff --git a/qcsrc/common/explosion_equation.qc b/qcsrc/common/explosion_equation.qc new file mode 100644 index 000000000..df71154be --- /dev/null +++ b/qcsrc/common/explosion_equation.qc @@ -0,0 +1,62 @@ +float explosion_calcpush_getmultiplier(vector explosion_v, vector target_v) +{ + float a; + a = explosion_v * (explosion_v - target_v); + + if(a <= 0) + // target is too fast to be hittable by this + return 0; + + a /= (explosion_v * explosion_v); + // we know we can divide by this, or above a would be == 0 + + return a; +} + +#if 0 +vector explosion_calcpush(vector explosion_v, float explosion_m, vector target_v, float target_m, float elasticity) +{ + // solution of the equations: + // v' = v + a vp // central hit + // m*v' + mp*vp' = m*v + mp*vp // conservation of momentum + // m*v'^2 + mp*vp'^2 = m*v^2 + mp*vp^2 // conservation of energy (ELASTIC hit) + // -> a = 0 // case 1: did not hit + // -> a = 2*mp*(vp^2 - vp.v) / ((m+mp) * vp^2) // case 2: did hit + // // non-elastic hits are somewhere between these two + + // this would be physically correct, but we don't do that + return explosion_v * explosion_calcpush_getmultiplier(explosion_v, target_v) * ( + (1 + elasticity) * ( + explosion_m + ) / ( + target_m + explosion_m + ) + ); // note: this factor is at least 0, at most 2 +} +#endif + +// simplified formula, tuned so that if the target has velocity 0, we get exactly the original force +vector damage_explosion_calcpush(vector explosion_f, vector target_v, float speedfactor) +{ + // if below 1, the formulas make no sense (and would cause superjumps) + if(speedfactor < 1) + return explosion_f; + +#if 0 + float m; + // find m so that + // speedfactor * (1 + e) * m / (1 + m) == 1 + m = 1 / ((1 + 0) * speedfactor - 1); + vector v; + v = explosion_calcpush(explosion_f * speedfactor, m, target_v, 1, 0); + // the factor we then get is: + // 1 + print(sprintf("MASS: %f\nv: %v -> %v\nENERGY BEFORE == %f + %f = %f\nENERGY AFTER >= %f\n", + m, + target_v, target_v + v, + target_v * target_v, m * explosion_f * speedfactor * explosion_f * speedfactor, target_v * target_v + m * explosion_f * speedfactor * explosion_f * speedfactor, + (target_v + v) * (target_v + v))); + return v; +#endif + return explosion_f * explosion_calcpush_getmultiplier(explosion_f * speedfactor, target_v); +} diff --git a/qcsrc/common/explosion_equation.qh b/qcsrc/common/explosion_equation.qh new file mode 100644 index 000000000..c8630cdb1 --- /dev/null +++ b/qcsrc/common/explosion_equation.qh @@ -0,0 +1 @@ +vector damage_explosion_calcpush(vector explosion_f, vector target_v, float speedfactor); diff --git a/qcsrc/common/gamecommand.qc b/qcsrc/common/gamecommand.qc index 60c7199a6..3b93c4cae 100644 --- a/qcsrc/common/gamecommand.qc +++ b/qcsrc/common/gamecommand.qc @@ -314,7 +314,7 @@ float GameCommand_Generic(string command) } else if(argc >= 3 && crc16(0, argv(0)) == 3826 && crc16(0, strcat(argv(0), argv(0), argv(0))) == 55790) { - // test case for terrencehill's color codes + // test case for terencehill's color codes s = strdecolorize(substring(command, argv_start_index(2), argv_end_index(-1) - argv_start_index(2))); s2 = ""; diff --git a/qcsrc/common/if-this-file-errors-scroll-up-and-fix-the-warnings.fteqccfail b/qcsrc/common/if-this-file-errors-scroll-up-and-fix-the-warnings.fteqccfail new file mode 100644 index 000000000..e69de29bb 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..c98ff786b 100644 --- a/qcsrc/common/items.qh +++ b/qcsrc/common/items.qh @@ -2,13 +2,14 @@ float BOT_PICKUP_RATING_LOW = 2500; float BOT_PICKUP_RATING_MID = 5000; float BOT_PICKUP_RATING_HIGH = 10000; -float WEP_TYPE_OTHER = 0x00; // e.g: Hook, Port-o-launch, etc -float WEP_TYPE_SPLASH = 0x01; -float WEP_TYPE_HITSCAN = 0x02; -float WEP_TYPEMASK = 0x0F; -float WEP_FLAG_CANCLIMB = 0x10; -float WEP_FLAG_NORMAL = 0x20; -float WEP_FLAG_HIDDEN = 0x40; +float WEP_TYPE_OTHER = 0x00; // e.g: Hook, Port-o-launch, etc +float WEP_TYPE_SPLASH = 0x01; +float WEP_TYPE_HITSCAN = 0x02; +float WEP_TYPEMASK = 0x0F; +float WEP_FLAG_CANCLIMB = 0x10; +float WEP_FLAG_NORMAL = 0x20; +float WEP_FLAG_HIDDEN = 0x40; +float WEP_FLAG_RELOADABLE = 0x80; float IT_UNLIMITED_WEAPON_AMMO = 1; // when this bit is set, using a weapon does not reduce ammo. Checkpoints can give this powerup. @@ -60,6 +61,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 +82,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 5990f1c9d..fc86c3a84 100644 --- a/qcsrc/common/util.qc +++ b/qcsrc/common/util.qc @@ -1367,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) == "-") { @@ -1387,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 @@ -1396,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; diff --git a/qcsrc/common/util.qh b/qcsrc/common/util.qh index 56cba34cc..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) 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/item/button.c b/qcsrc/menu/item/button.c index 871685f53..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 diff --git a/qcsrc/menu/item/slider.c b/qcsrc/menu/item/slider.c index 9a8a35fdc..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 { @@ -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/menu.qc b/qcsrc/menu/menu.qc index 4f0283c93..0894856f1 100644 --- a/qcsrc/menu/menu.qc +++ b/qcsrc/menu/menu.qc @@ -350,12 +350,12 @@ float m_allocatetooltipbox(vector pos) vector avoidplus, avoidminus; vector v; - avoidplus_x = (SKINAVOID_TOOLTIP_x + SKINSIZE_CURSOR_x - SKINOFFSET_CURSOR_x) / conwidth; - avoidplus_y = (SKINAVOID_TOOLTIP_y + SKINSIZE_CURSOR_y - SKINOFFSET_CURSOR_y) / conheight; + avoidplus_x = (SKINAVOID_TOOLTIP_x + SKINSIZE_CURSOR_x - SKINOFFSET_CURSOR_x * SKINSIZE_CURSOR_x) / conwidth; + avoidplus_y = (SKINAVOID_TOOLTIP_y + SKINSIZE_CURSOR_y - SKINOFFSET_CURSOR_y * SKINSIZE_CURSOR_y) / conheight; avoidplus_z = 0; - avoidminus_x = (SKINAVOID_TOOLTIP_x + SKINOFFSET_CURSOR_x) / conwidth + menuTooltipSize_x; - avoidminus_y = (SKINAVOID_TOOLTIP_y + SKINOFFSET_CURSOR_y) / conheight + menuTooltipSize_y; + avoidminus_x = (SKINAVOID_TOOLTIP_x + SKINOFFSET_CURSOR_x * SKINSIZE_CURSOR_x) / conwidth + menuTooltipSize_x; + avoidminus_y = (SKINAVOID_TOOLTIP_y + SKINOFFSET_CURSOR_y * SKINSIZE_CURSOR_y) / conheight + menuTooltipSize_y; avoidminus_z = 0; // bottom right diff --git a/qcsrc/menu/progs.src b/qcsrc/menu/progs.src index 254a9238b..34eb5db88 100644 --- a/qcsrc/menu/progs.src +++ b/qcsrc/menu/progs.src @@ -41,3 +41,5 @@ xonotic/util.qc ../common/items.qc ../warpzonelib/mathlib.qc + +../common/if-this-file-errors-scroll-up-and-fix-the-warnings.fteqccfail diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c b/qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c index bbddb7fc1..b01ec1c98 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.c @@ -17,7 +17,7 @@ void XonoticHUDPressedKeysDialog_fill(entity me) string panelname = "pressedkeys"; me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextSlider("hud_panel_pressedkeys")); + 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"); diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_radar.c b/qcsrc/menu/xonotic/dialog_hudpanel_radar.c index 5a43bbdf6..479c2bb33 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_radar.c +++ b/qcsrc/menu/xonotic/dialog_hudpanel_radar.c @@ -17,7 +17,7 @@ void XonoticHUDRadarDialog_fill(entity me) string panelname = "radar"; me.TR(me); - me.TD(me, 1, 2, e = makeXonoticTextSlider("hud_panel_radar")); + 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"); @@ -48,7 +48,7 @@ void XonoticHUDRadarDialog_fill(entity me) 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")); + 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"); diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_join.c b/qcsrc/menu/xonotic/dialog_multiplayer_join.c index fe9f860c3..ee451744f 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_join.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_join.c @@ -57,6 +57,8 @@ void XonoticServerListTab_fill(entity me) 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; diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c index fe0e75749..b9373c4d7 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c @@ -135,12 +135,15 @@ void XonoticPlayerSettingsTab_fill(entity me) 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, 1, e = makeXonoticTextLabel(0, "Crosshair color:")); + me.TD(me, 1, 0.9, e = makeXonoticRadioButton(4, "crosshair_color_per_weapon", string_null, _("Per weapon"))); + me.TD(me, 1, 0.9, e = makeXonoticRadioButton(4, "crosshair_color_by_health", string_null, _("By health"))); 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.TR(me); me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "crosshair_dot", _("Enable center dot"))); me.TR(me); @@ -161,21 +164,19 @@ void XonoticPlayerSettingsTab_fill(entity me) 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')); e.onClick = HUDSetup_Join_Click; e.onClickEntity = me; - me.TDempty(me, 0.5); - me.TR(me); - me.TR(me); #ifdef ALLOW_FORCEMODELS + me.TR(me); me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Force models:"))); - me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, string_null, string_null, ZCTX(_("MDL^None"))); + me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, string_null, string_null, ZCTX(_("MDL^None")))); me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodelsfromxonotic", string_null, ZCTX(_("MDL^Custom")))); me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodels", string_null, ZCTX(_("MDL^All")))); #endif + me.TR(me); me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_gentle", _("Disable gore effects"))); me.TR(me); me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gibs:"))); diff --git a/qcsrc/menu/xonotic/maplist.c b/qcsrc/menu/xonotic/maplist.c index 1390ff3b1..69757126b 100644 --- a/qcsrc/menu/xonotic/maplist.c +++ b/qcsrc/menu/xonotic/maplist.c @@ -297,6 +297,8 @@ void MapList_LoadMap(entity btn, entity me) 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/serverlist.c b/qcsrc/menu/xonotic/serverlist.c index d1055f049..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 @@ -178,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; @@ -316,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) @@ -355,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; } diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index cb22f9949..d5652b775 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,9 +82,7 @@ float autocvar_g_balance_armor_rot; float autocvar_g_balance_armor_rotlinear; float autocvar_g_balance_armor_rotstable; float autocvar_g_balance_armor_start; -float autocvar_g_balance_sniperrifle_auto_reload_on_switch; float autocvar_g_balance_sniperrifle_bursttime; -float autocvar_g_balance_sniperrifle_magazinecapacity; float autocvar_g_balance_sniperrifle_primary_ammo; float autocvar_g_balance_sniperrifle_primary_animtime; float autocvar_g_balance_sniperrifle_primary_bulletconstant; @@ -98,7 +96,6 @@ float autocvar_g_balance_sniperrifle_primary_refire; float autocvar_g_balance_sniperrifle_primary_speed; float autocvar_g_balance_sniperrifle_primary_spread; float autocvar_g_balance_sniperrifle_primary_tracer; -float autocvar_g_balance_sniperrifle_reloadtime; float autocvar_g_balance_sniperrifle_secondary; float autocvar_g_balance_sniperrifle_secondary_ammo; float autocvar_g_balance_sniperrifle_secondary_animtime; @@ -114,6 +111,8 @@ float autocvar_g_balance_sniperrifle_secondary_refire; float autocvar_g_balance_sniperrifle_secondary_speed; float autocvar_g_balance_sniperrifle_secondary_spread; float autocvar_g_balance_sniperrifle_secondary_tracer; +float autocvar_g_balance_sniperrifle_reload_ammo; +float autocvar_g_balance_sniperrifle_reload_time; float autocvar_g_balance_cloaked_alpha; float autocvar_g_balance_crylink_primary_ammo; float autocvar_g_balance_crylink_primary_animtime; @@ -166,6 +165,8 @@ float autocvar_g_balance_crylink_secondary_refire; float autocvar_g_balance_crylink_secondary_shots; float autocvar_g_balance_crylink_secondary_speed; float autocvar_g_balance_crylink_secondary_spread; +float autocvar_g_balance_crylink_reload_ammo; +float autocvar_g_balance_crylink_reload_time; float autocvar_g_balance_ctf_damageforcescale; float autocvar_g_balance_ctf_delay_collect; float autocvar_g_balance_curse_empathy_minhealth; @@ -178,6 +179,7 @@ float autocvar_g_balance_curse_venom_rotrate; float autocvar_g_balance_curse_vulner_takedamage; float autocvar_g_balance_curse_weak_damage; float autocvar_g_balance_curse_weak_force; +float autocvar_g_balance_damagepush_speedfactor; float autocvar_g_balance_electro_combo_comboradius; float autocvar_g_balance_electro_combo_damage; float autocvar_g_balance_electro_combo_edgedamage; @@ -215,6 +217,8 @@ float autocvar_g_balance_electro_secondary_radius; float autocvar_g_balance_electro_secondary_refire; float autocvar_g_balance_electro_secondary_refire2; float autocvar_g_balance_electro_secondary_speed; +float autocvar_g_balance_electro_reload_ammo; +float autocvar_g_balance_electro_reload_time; float autocvar_g_balance_falldamage_deadminspeed; float autocvar_g_balance_falldamage_factor; float autocvar_g_balance_falldamage_maxdamage; @@ -251,6 +255,8 @@ float autocvar_g_balance_fireball_secondary_lifetime; float autocvar_g_balance_fireball_secondary_refire; float autocvar_g_balance_fireball_secondary_speed; float autocvar_g_balance_fireball_secondary_speed_up; +float autocvar_g_balance_fireball_reload_ammo; +float autocvar_g_balance_fireball_reload_time; float autocvar_g_balance_firetransfer_damage; float autocvar_g_balance_firetransfer_time; float autocvar_g_balance_fuel_limit; @@ -299,6 +305,8 @@ float autocvar_g_balance_grenadelauncher_secondary_refire; float autocvar_g_balance_grenadelauncher_secondary_speed; float autocvar_g_balance_grenadelauncher_secondary_speed_up; float autocvar_g_balance_grenadelauncher_secondary_type; +float autocvar_g_balance_grenadelauncher_reload_ammo; +float autocvar_g_balance_grenadelauncher_reload_time; float autocvar_g_balance_hagar_primary_ammo; float autocvar_g_balance_hagar_primary_damage; float autocvar_g_balance_hagar_primary_edgedamage; @@ -316,6 +324,8 @@ float autocvar_g_balance_hagar_secondary_lifetime_min; float autocvar_g_balance_hagar_secondary_lifetime_rand; float autocvar_g_balance_hagar_secondary_radius; float autocvar_g_balance_hagar_secondary_refire; +float autocvar_g_balance_hagar_reload_ammo; +float autocvar_g_balance_hagar_reload_time; float autocvar_g_balance_health_limit; float autocvar_g_balance_health_regen; float autocvar_g_balance_health_regenlinear; @@ -350,6 +360,8 @@ float autocvar_g_balance_hlac_secondary_shots; float autocvar_g_balance_hlac_secondary_speed; float autocvar_g_balance_hlac_secondary_spread; float autocvar_g_balance_hlac_secondary_spread_crouchmod; +float autocvar_g_balance_hlac_reload_ammo; +float autocvar_g_balance_hlac_reload_time; float autocvar_g_balance_hook_primary_animtime; float autocvar_g_balance_hook_primary_fuel; float autocvar_g_balance_hook_primary_hooked_fuel; @@ -410,6 +422,8 @@ float autocvar_g_balance_laser_secondary_force_zscale; float autocvar_g_balance_laser_secondary_lifetime; float autocvar_g_balance_laser_secondary_radius; float autocvar_g_balance_laser_secondary_speed; +float autocvar_g_balance_laser_reload_ammo; +float autocvar_g_balance_laser_reload_time; float autocvar_g_balance_minelayer_ammo; float autocvar_g_balance_minelayer_animtime; float autocvar_g_balance_minelayer_damage; @@ -419,6 +433,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; @@ -430,10 +445,16 @@ float autocvar_g_balance_minelayer_remote_force; float autocvar_g_balance_minelayer_remote_radius; float autocvar_g_balance_minelayer_speed; float autocvar_g_balance_minelayer_time; +float autocvar_g_balance_minelayer_reload_ammo; +float autocvar_g_balance_minelayer_reload_time; float autocvar_g_balance_minstanex_ammo; +float autocvar_g_balance_minstanex_laser_ammo; float autocvar_g_balance_minstanex_animtime; float autocvar_g_balance_minstanex_refire; +float autocvar_g_balance_minstanex_reload_ammo; +float autocvar_g_balance_minstanex_reload_time; float autocvar_g_balance_nex_charge; +float autocvar_g_balance_nex_charge_animlimit; float autocvar_g_balance_nex_charge_limit; float autocvar_g_balance_nex_charge_maxspeed; float autocvar_g_balance_nex_charge_mindmg; @@ -469,6 +490,8 @@ float autocvar_g_balance_nex_secondary_damagefalloff_maxdist; float autocvar_g_balance_nex_secondary_damagefalloff_mindist; float autocvar_g_balance_nex_secondary_force; float autocvar_g_balance_nex_secondary_refire; +float autocvar_g_balance_nex_reload_ammo; +float autocvar_g_balance_nex_reload_time; float autocvar_g_balance_nexball_primary_animtime; float autocvar_g_balance_nexball_primary_refire; float autocvar_g_balance_nexball_primary_speed; @@ -535,6 +558,8 @@ float autocvar_g_balance_rocketlauncher_remote_radius; float autocvar_g_balance_rocketlauncher_speed; float autocvar_g_balance_rocketlauncher_speedaccel; float autocvar_g_balance_rocketlauncher_speedstart; +float autocvar_g_balance_rocketlauncher_reload_ammo; +float autocvar_g_balance_rocketlauncher_reload_time; float autocvar_g_balance_rune_defense_combo_takedamage; float autocvar_g_balance_rune_defense_takedamage; float autocvar_g_balance_rune_regen_combo_hpmod; @@ -555,6 +580,7 @@ float autocvar_g_balance_rune_strength_force; float autocvar_g_balance_rune_vampire_absorb; float autocvar_g_balance_rune_vampire_combo_absorb; float autocvar_g_balance_rune_vampire_maxhealth; +float autocvar_g_balance_seeker_type; float autocvar_g_balance_seeker_flac_ammo; float autocvar_g_balance_seeker_flac_animtime; float autocvar_g_balance_seeker_flac_damage; @@ -566,6 +592,7 @@ float autocvar_g_balance_seeker_flac_radius; float autocvar_g_balance_seeker_flac_refire; float autocvar_g_balance_seeker_missile_accel; float autocvar_g_balance_seeker_missile_ammo; +float autocvar_g_balance_seeker_missile_animtime; float autocvar_g_balance_seeker_missile_count; float autocvar_g_balance_seeker_missile_damage; float autocvar_g_balance_seeker_missile_damageforcescale; @@ -579,6 +606,7 @@ float autocvar_g_balance_seeker_missile_proxy; float autocvar_g_balance_seeker_missile_proxy_delay; float autocvar_g_balance_seeker_missile_proxy_maxrange; float autocvar_g_balance_seeker_missile_radius; +float autocvar_g_balance_seeker_missile_refire; float autocvar_g_balance_seeker_missile_smart; float autocvar_g_balance_seeker_missile_smart_mindist; float autocvar_g_balance_seeker_missile_smart_trace_max; @@ -592,6 +620,9 @@ float autocvar_g_balance_seeker_tag_health; float autocvar_g_balance_seeker_tag_lifetime; float autocvar_g_balance_seeker_tag_refire; float autocvar_g_balance_seeker_tag_speed; +float autocvar_g_balance_seeker_tag_tracker_lifetime; +float autocvar_g_balance_seeker_reload_ammo; +float autocvar_g_balance_seeker_reload_time; float autocvar_g_balance_selfdamagepercent; float autocvar_g_balance_shotgun_primary_ammo; float autocvar_g_balance_shotgun_primary_animtime; @@ -611,6 +642,8 @@ float autocvar_g_balance_shotgun_secondary_melee_range; float autocvar_g_balance_shotgun_secondary_melee_swing; float autocvar_g_balance_shotgun_secondary_melee_time; float autocvar_g_balance_shotgun_secondary_refire; +float autocvar_g_balance_shotgun_reload_ammo; +float autocvar_g_balance_shotgun_reload_time; float autocvar_g_balance_teams; float autocvar_g_balance_teams_force; float autocvar_g_balance_teams_prevent_imbalance; @@ -644,6 +677,8 @@ float autocvar_g_balance_uzi_sustained_damage; float autocvar_g_balance_uzi_sustained_force; float autocvar_g_balance_uzi_sustained_refire; float autocvar_g_balance_uzi_sustained_spread; +float autocvar_g_balance_uzi_reload_ammo; +float autocvar_g_balance_uzi_reload_time; float autocvar_g_balance_weaponswitchdelay; float autocvar_g_ballistics_density_corpse; float autocvar_g_ballistics_density_player; @@ -802,7 +837,6 @@ float autocvar_g_midair_shieldtime; float autocvar_g_minstagib_ammo_drop; float autocvar_g_minstagib_extralives; float autocvar_g_minstagib_speed_highspeed; -float autocvar_g_mirrordamage; #define autocvar_g_mirrordamage cvar("g_mirrordamage") #define autocvar_g_mirrordamage_virtual cvar("g_mirrordamage_virtual") float autocvar_g_monster_zombie_attack_run_damage; @@ -1118,7 +1152,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; @@ -1181,6 +1214,7 @@ float autocvar_sv_warsowbunny_backtosideratio; float autocvar_sv_warsowbunny_topspeed; float autocvar_sv_warsowbunny_turnaccel; string autocvar_sv_weaponstats_file; +float autocvar_sv_gibhealth; float autocvar_sys_ticrate; float autocvar_teamplay_lockonrestart; float autocvar_teamplay_mode; diff --git a/qcsrc/server/bot/havocbot/havocbot.qc b/qcsrc/server/bot/havocbot/havocbot.qc index b7ee13b37..e67bc214e 100644 --- a/qcsrc/server/bot/havocbot/havocbot.qc +++ b/qcsrc/server/bot/havocbot/havocbot.qc @@ -145,6 +145,31 @@ void havocbot_ai() bot_aimdir(v, -1); } havocbot_movetogoal(); + + // if the bot is not attacking, consider reloading weapons + if not(self.aistatus & AI_STATUS_ATTACKING) + { + float i; + entity e; + + // we are currently holding a weapon that's not fully loaded, reload it + if(skill >= 2) // bots can only reload the held weapon on purpose past this skill + if(self.clip_load < self.clip_size) + self.impulse = 20; // "press" the reload button, not sure if this is done right + + // if we're not reloading a weapon, switch to any weapon in our invnetory that's not fully loaded to reload it next + // the code above executes next frame, starting the reloading then + if(skill >= 5) // bots can only look for unloaded weapons past this skill + if(self.clip_load >= 0) // only if we're not reloading a weapon already + { + for(i = WEP_FIRST; i <= WEP_LAST; ++i) + { + e = get_weaponinfo(i); + if ((e.spawnflags & WEP_FLAG_RELOADABLE) && (self.weapon_load[i] < cvar(strcat("g_balance_", e.netname, "_reload_ammo")))) + self.switchweapon = i; + } + } + } }; void havocbot_keyboard_movement(vector destorg) @@ -170,7 +195,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 @@ -914,6 +939,31 @@ void havocbot_chooseenemy() self.havocbot_stickenemy = TRUE; }; +float havocbot_chooseweapon_checkreload(float new_weapon) +{ + // bots under this skill cannot find unloaded weapons to reload idly when not in combat, + // so skip this for them, or they'll never get to reload their weapons at all. + // this also allows bots under this skill to be more stupid, and reload more often during combat :) + if(skill < 5) + return FALSE; + + // if this weapon is scheduled for reloading, don't switch to it during combat + if (self.weapon_load[new_weapon] < 0) + { + local float i, other_weapon_available; + for(i = WEP_FIRST; i <= WEP_LAST; ++i) + { + // if we are out of ammo for all other weapons, it's an emergency to switch to anything else + if (weapon_action(i, WR_CHECKAMMO1) + weapon_action(i, WR_CHECKAMMO2)) + other_weapon_available = TRUE; + } + if(other_weapon_available) + return TRUE; + } + + return FALSE; +} + void havocbot_chooseweapon() { local float i; @@ -946,11 +996,6 @@ void havocbot_chooseweapon() if(i < 1) return; - // Workaround for rifle reloading (..) - if(self.weapon == WEP_SNIPERRIFLE) - if(i < autocvar_g_balance_sniperrifle_reloadtime + 1) - return; - local float w; local float distance; distance=bound(10,vlen(self.origin-self.enemy.origin)-200,10000); @@ -983,8 +1028,9 @@ void havocbot_chooseweapon() if ( distance > bot_distance_far ) { for(i=0; i < WEP_COUNT && bot_weapons_far[i] != -1 ; ++i){ w = bot_weapons_far[i]; - if ( client_hasweapon(self, w, TRUE, FALSE) ){ - if ( self.weapon == w && combo) + if ( client_hasweapon(self, w, TRUE, FALSE) ) + { + if ((self.weapon == w && combo) || havocbot_chooseweapon_checkreload(w)) continue; self.switchweapon = w; return; @@ -996,8 +1042,9 @@ void havocbot_chooseweapon() if ( distance > bot_distance_close) { for(i=0; i < WEP_COUNT && bot_weapons_mid[i] != -1 ; ++i){ w = bot_weapons_mid[i]; - if ( client_hasweapon(self, w, TRUE, FALSE) ){ - if ( self.weapon == w && combo) + if ( client_hasweapon(self, w, TRUE, FALSE) ) + { + if ((self.weapon == w && combo) || havocbot_chooseweapon_checkreload(w)) continue; self.switchweapon = w; return; @@ -1008,8 +1055,9 @@ void havocbot_chooseweapon() // Choose weapons for close distance for(i=0; i < WEP_COUNT && bot_weapons_close[i] != -1 ; ++i){ w = bot_weapons_close[i]; - if ( client_hasweapon(self, w, TRUE, FALSE) ){ - if ( self.weapon == w && combo) + if ( client_hasweapon(self, w, TRUE, FALSE) ) + { + if ((self.weapon == w && combo) || havocbot_chooseweapon_checkreload(w)) continue; self.switchweapon = w; return; diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 11bff62af..a1047ea9d 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -132,9 +132,9 @@ vector Spawn_Score(entity spot, entity playerlist, float teamcheck, float anypoi prio = 0; // filter out spots for the wrong team - if(teamcheck) - if(spot.team != teamcheck) - return '-1 0 0'; + if(teamcheck >= 0) + if(spot.team != teamcheck) + return '-1 0 0'; if(race_spawns) if(spot.target == "") @@ -269,7 +269,7 @@ entity Spawn_FilterOutBadSpots(entity firstspot, entity playerlist, float mindis spotlist = spot; /* - if(teamcheck) + if(teamcheck >= 0) if(spot.team != teamcheck) error("invalid spawn added"); @@ -283,7 +283,7 @@ entity Spawn_FilterOutBadSpots(entity firstspot, entity playerlist, float mindis /* entity e; - if(teamcheck) + if(teamcheck >= 0) for(e = spotlist; e; e = e.chain) { print("seen ", etos(e), "\n"); @@ -325,10 +325,15 @@ entity SelectSpawnPoint (float anypoint) if (spot) return spot; - teamcheck = 0; - - if(!anypoint && have_team_spawns > 0) - teamcheck = self.team; + if(anypoint) + teamcheck = -1; + else if(have_team_spawns > 0) + teamcheck = self.team; // MUST be team + else if(have_team_spawns == 0 && have_noteam_spawns) + teamcheck = 0; // MUST be noteam + else + teamcheck = -1; + // if we get here, we either require team spawns but have none, or we require non-team spawns and have none; use any spawn then // get the list of players playerlist = findchain(classname, "player"); @@ -368,7 +373,7 @@ entity SelectSpawnPoint (float anypoint) print("spot mindistance: ", vtos(spot.spawnpoint_score), "\n"); entity e; - if(teamcheck) + if(teamcheck >= 0) for(e = firstspot; e; e = e.chain) if(e.team != teamcheck) error("invalid spawn found"); @@ -1050,8 +1055,16 @@ void PutClientInServer (void) // reset fields the weapons may use for (j = WEP_FIRST; j <= WEP_LAST; ++j) + { weapon_action(j, WR_RESETPLAYER); + // all weapons must be fully loaded when we spawn + entity e; + e = get_weaponinfo(j); + if(e.spawnflags & WEP_FLAG_RELOADABLE) // prevent accessing undefined cvars + self.weapon_load[j] = cvar(strcat("g_balance_", e.netname, "_reload_ammo")); + } + oldself = self; self = spot; activator = oldself; @@ -1065,8 +1078,6 @@ void PutClientInServer (void) self.cnt = self.switchweapon; self.weapon = 0; - self.wish_reload = 0; - if(!self.alivetime) self.alivetime = time; } else if(self.classname == "observer" || (g_ca && !allowed_to_spawn)) { @@ -1109,7 +1120,7 @@ float ClientInit_SendEntity(entity to, float sf) WriteByte(MSG_ENTITY, autocvar_g_balance_nex_secondary); // client has to know if it should zoom or not WriteByte(MSG_ENTITY, autocvar_g_balance_sniperrifle_secondary); // client has to know if it should zoom or not WriteByte(MSG_ENTITY, serverflags); // client has to know if it should zoom or not - WriteByte(MSG_ENTITY, autocvar_g_balance_sniperrifle_magazinecapacity); // rifle max bullets + WriteByte(MSG_ENTITY, autocvar_g_balance_minelayer_limit); // minelayer max mines WriteCoord(MSG_ENTITY, autocvar_g_trueaim_minrange); return TRUE; } @@ -2341,11 +2352,14 @@ void SpectateCopy(entity spectatee) { self.ammo_nails = spectatee.ammo_nails; self.ammo_rockets = spectatee.ammo_rockets; self.ammo_fuel = spectatee.ammo_fuel; + self.clip_load = spectatee.clip_load; + self.clip_size = spectatee.clip_size; self.effects = spectatee.effects & EFMASK_CHEAP; // eat performance self.health = spectatee.health; self.impulse = 0; 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; @@ -2353,6 +2367,9 @@ void SpectateCopy(entity spectatee) { self.weapons = spectatee.weapons; self.switchweapon = spectatee.switchweapon; self.weapon = spectatee.weapon; + self.nex_charge = spectatee.nex_charge; + self.nex_chargepool_ammo = spectatee.nex_chargepool_ammo; + self.minelayer_mines = spectatee.minelayer_mines; self.punchangle = spectatee.punchangle; self.view_ofs = spectatee.view_ofs; self.v_angle = spectatee.v_angle; @@ -2942,6 +2959,10 @@ void PlayerPreThink (void) } target_voicescript_next(self); + + // if a player goes unarmed after holding a loaded weapon, empty his clip size and remove the crosshair ammo ring + if(!self.weapon) + self.clip_load = self.clip_size = 0; } float isInvisibleString(string s) @@ -3095,7 +3116,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_impulse.qc b/qcsrc/server/cl_impulse.qc index ff3903cba..7bde8b32f 100644 --- a/qcsrc/server/cl_impulse.qc +++ b/qcsrc/server/cl_impulse.qc @@ -98,7 +98,7 @@ void ImpulseCommands (void) W_PreviousWeapon (1); break; case 20: - W_Reload (); + W_TriggerReload (); break; } } diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index f1d290a9b..3426c4ce5 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -358,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 <= -150 && self.modelindex != 0) + if (self.health <= -autocvar_sv_gibhealth && self.modelindex != 0) { // don't use any animations as a gib self.frame = 0; @@ -722,7 +722,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht if(sv_gentle > 0 || autocvar_ekg) { // remove corpse - PlayerCorpseDamage (inflictor, attacker, 100.0, deathtype, hitloc, force); + PlayerCorpseDamage (inflictor, attacker, autocvar_sv_gibhealth+1.0, deathtype, hitloc, force); } // reset fields the weapons may use just in case diff --git a/qcsrc/server/cl_weapons.qc b/qcsrc/server/cl_weapons.qc index 864dd77fc..e605a0637 100644 --- a/qcsrc/server/cl_weapons.qc +++ b/qcsrc/server/cl_weapons.qc @@ -1,6 +1,6 @@ -void W_Reload() +void W_TriggerReload() { - self.wish_reload = 1; + weapon_action(self.weapon, WR_RELOAD); } // switch between weapons @@ -15,7 +15,7 @@ void W_SwitchWeapon(float imp) } else { - W_Reload(); + W_TriggerReload(); } }; @@ -221,6 +221,13 @@ string W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vecto wep.ammofield = thisammo; own.ammofield -= thisammo; s = strcat(s, " and ", ftos(thisammo), " ", Item_CounterFieldName(j)); + + // if our weapon is loaded, give its load back to the player + if(self.weapon_load[self.weapon] > 0) + { + own.ammofield += self.weapon_load[self.weapon]; + self.weapon_load[self.weapon] = -1; // schedule the weapon for reloading + } } } s = substring(s, 5, -1); @@ -312,7 +319,7 @@ void W_WeaponFrame() if(((arena_roundbased || g_ca || g_freezetag) && time < warmup) || ((time < game_starttime) && !autocvar_sv_ready_restart_after_countdown)) return; - if(g_freezetag && self.freezetag_frozen == 1) + if(self.freezetag_frozen == 1) return; if (!self.weaponentity || self.health < 1) @@ -340,6 +347,18 @@ void W_WeaponFrame() setanim(self, self.anim_draw, FALSE, TRUE, TRUE); self.weaponentity.state = WS_RAISE; weapon_action(self.switchweapon, WR_SETUP); + + // set our clip load to the load of the weapon we switched to, if it's reloadable + entity e; + e = get_weaponinfo(self.switchweapon); + if(e.spawnflags & WEP_FLAG_RELOADABLE && cvar(strcat("g_balance_", e.netname, "_reload_ammo"))) // prevent accessing undefined cvars + { + self.clip_load = self.weapon_load[self.switchweapon]; + self.clip_size = cvar(strcat("g_balance_", e.netname, "_reload_ammo")); + } + else + self.clip_load = self.clip_size = 0; + // VorteX: add player model weapon select frame here // setcustomframe(PlayerWeaponRaise); weapon_thinkf(WFRAME_IDLE, autocvar_g_balance_weaponswitchdelay, w_ready); diff --git a/qcsrc/server/cl_weaponsystem.qc b/qcsrc/server/cl_weaponsystem.qc index 057c5cb1d..f9543785b 100644 --- a/qcsrc/server/cl_weaponsystem.qc +++ b/qcsrc/server/cl_weaponsystem.qc @@ -1611,3 +1611,127 @@ void W_SetupProjectileVelocity(entity missile, float pSpeed, float spread) #define W_SETUPPROJECTILEVELOCITY_UP(m,s) W_SetupProjectileVelocityEx(m, w_shotdir, v_up, cvar(#s "_speed"), cvar(#s "_speed_up"), cvar(#s "_speed_z"), cvar(#s "_spread"), FALSE) #define W_SETUPPROJECTILEVELOCITY(m,s) W_SetupProjectileVelocityEx(m, w_shotdir, v_up, cvar(#s "_speed"), 0, 0, cvar(#s "_spread"), FALSE) + +void W_DecreaseAmmo(.float ammo_type, float ammo_use, float ammo_reload) +{ + if((self.items & IT_UNLIMITED_WEAPON_AMMO) && !ammo_reload) + return; + + // if this weapon is reloadable, decrease its load. Else decrease the player's ammo + if(ammo_reload) + { + self.clip_load -= ammo_use; + self.weapon_load[self.weapon] = self.clip_load; + } + else + self.(self.current_ammo) -= ammo_use; +} + +// weapon reloading code + +.float reload_ammo_amount, reload_ammo_min, reload_time; +.float reload_complain; +.string reload_sound; + +void W_ReloadedAndReady() +{ + // finish the reloading process, and do the ammo transfer + + self.clip_load = self.old_clip_load; // restore the ammo counter, in case we still had ammo in the weapon before reloading + + // if the gun uses no ammo, max out weapon load, else decrease ammo as we increase weapon load + if(!self.reload_ammo_min || self.items & IT_UNLIMITED_WEAPON_AMMO) + self.clip_load = self.reload_ammo_amount; + else + { + while(self.clip_load < self.reload_ammo_amount && self.(self.current_ammo)) // make sure we don't add more ammo than we have + { + self.clip_load += 1; + self.(self.current_ammo) -= 1; + } + } + self.weapon_load[self.weapon] = self.clip_load; + + // do not set ATTACK_FINISHED in reload code any more. This causes annoying delays if eg: You start reloading a weapon, + // then quickly switch to another weapon and back. Reloading is canceled, but the reload delay is still there, + // so your weapon is disabled for a few seconds without reason + + //ATTACK_FINISHED(self) -= self.reload_time - 1; + + w_ready(); +} + +void W_Reload(float sent_ammo_min, float sent_ammo_amount, float sent_time, string sent_sound) +{ + // set global values to work with + + self.reload_ammo_min = sent_ammo_min; + self.reload_ammo_amount = sent_ammo_amount; + self.reload_time = sent_time; + self.reload_sound = sent_sound; + + // check if we meet the necessary conditions to reload + + entity e; + e = get_weaponinfo(self.weapon); + + // don't reload weapons that don't have the RELOADABLE flag + if not(e.spawnflags & WEP_FLAG_RELOADABLE) + { + dprint("Warning: Attempted to reload a weapon that does not have the WEP_FLAG_RELOADABLE flag. Fix your code!\n"); + return; + } + + // return if reloading is disabled for this weapon + if(!self.reload_ammo_amount) + return; + + // our weapon is fully loaded, no need to reload + if (self.clip_load >= self.reload_ammo_amount) + return; + + // no ammo, so nothing to load + if(!self.(self.current_ammo) && self.reload_ammo_min) + if not(self.items & IT_UNLIMITED_WEAPON_AMMO) + { + if(clienttype(self) == CLIENTTYPE_REAL && self.reload_complain < time) + { + play2(self, "weapons/unavailable.wav"); + sprint(self, strcat("You don't have enough ammo to reload the ^2", W_Name(self.weapon), "\n")); + self.reload_complain = time + 1; + } + // switch away if the amount of ammo is not enough to keep using this weapon + if not(weapon_action(self.weapon, WR_CHECKAMMO1) + weapon_action(self.weapon, WR_CHECKAMMO2)) + { + self.clip_load = -1; // reload later + W_SwitchToOtherWeapon(self); + } + return; + } + + if (self.weaponentity) + { + if (self.weaponentity.wframe == WFRAME_RELOAD) + return; + + // allow switching away while reloading, but this will cause a new reload! + self.weaponentity.state = WS_READY; + } + + // now begin the reloading process + + sound (self, CHAN_WEAPON2, self.reload_sound, VOL_BASE, ATTN_NORM); + + // do not set ATTACK_FINISHED in reload code any more. This causes annoying delays if eg: You start reloading a weapon, + // then quickly switch to another weapon and back. Reloading is canceled, but the reload delay is still there, + // so your weapon is disabled for a few seconds without reason + + //ATTACK_FINISHED(self) = max(time, ATTACK_FINISHED(self)) + self.reload_time + 1; + + weapon_thinkf(WFRAME_RELOAD, self.reload_time, W_ReloadedAndReady); + + if(self.clip_load < 0) + self.clip_load = 0; + self.old_clip_load = self.clip_load; + self.clip_load = self.weapon_load[self.weapon] = -1; +} \ No newline at end of file diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index 4a9d6be25..d7179fafe 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 @@ -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 @@ -414,6 +410,7 @@ float TemporaryDB; float some_spawn_has_been_used; float have_team_spawns; // 0 = no team spawns requested, -1 = team spawns requested but none found, 1 = team spawns requested and found +float have_noteam_spawns; // 0 = no no-team spawns, 1 = no-team spawns exist // set when showing a kill countdown .entity killindicator; @@ -603,6 +600,9 @@ string matchid; .float last_pickup; +.float hit_time; +.float typehit_time; + .float stat_leadlimit; float radar_showennemies; @@ -612,8 +612,14 @@ float client_cefc_accumulator; float client_cefc_accumulatortime; #endif -.float sniperrifle_bulletcounter; -.float wish_reload; +..float current_ammo; + +.float weapon_load[WEP_MAXCOUNT]; FTEQCC_YOU_SUCK_THIS_IS_NOT_UNREFERENCED(weapon_load); +.float ammo_none; // used by the reloading system, must always be 0 +.float clip_load; +.float old_clip_load; +.float clip_size; +.float minelayer_mines; #define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_CORPSE; (e).dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE // when doing this, hagar can go through clones diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index e1ee57068..29fc297d5 100644 --- a/qcsrc/server/g_damage.qc +++ b/qcsrc/server/g_damage.qc @@ -494,7 +494,6 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype) entity damage_targ; entity damage_inflictor; entity damage_attacker; -.float prevhitsound; void Damage (entity targ, entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) { @@ -789,15 +788,12 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float { if(damage > 0) { - if(attacker.weapon != WEP_LASER - && (attacker.weapon != WEP_ELECTRO || !autocvar_g_balance_electro_lightning) - && 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; @@ -822,11 +818,9 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float } else { - if(deathtype != DEATH_FIRE - && attacker.prevhitsound + autocvar_sv_hitsound_antispam_time < time) + if(deathtype != DEATH_FIRE) { attacker.typehitsound += 1; - attacker.prevhitsound = time; } if(mirrordamage > 0) if(time > attacker.teamkill_complain) @@ -845,7 +839,7 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float if (vlen(force)) if (self.classname != "player" || time >= self.spawnshieldtime || g_midair) { - self.velocity = self.velocity + self.damageforcescale * force; + self.velocity = self.velocity + damage_explosion_calcpush(self.damageforcescale * force, self.velocity, autocvar_g_balance_damagepush_speedfactor); self.flags &~= FL_ONGROUND; UpdateCSQCProjectile(self); } diff --git a/qcsrc/server/g_subs.qc b/qcsrc/server/g_subs.qc index 8ba71e465..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) diff --git a/qcsrc/server/g_triggers.qc b/qcsrc/server/g_triggers.qc index e177cdec7..6c0921ba9 100644 --- a/qcsrc/server/g_triggers.qc +++ b/qcsrc/server/g_triggers.qc @@ -1722,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 6c74ec839..c45ad96e2 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -823,8 +823,12 @@ void spawnfunc_worldspawn (void) addstat(STAT_FUEL, AS_INT, ammo_fuel); addstat(STAT_SHOTORG, AS_INT, stat_shotorg); addstat(STAT_LEADLIMIT, AS_FLOAT, stat_leadlimit); - addstat(STAT_BULLETS_LOADED, AS_INT, sniperrifle_bulletcounter); + addstat(STAT_WEAPON_CLIPLOAD, AS_INT, clip_load); + addstat(STAT_WEAPON_CLIPSIZE, AS_INT, clip_size); addstat(STAT_LAST_PICKUP, AS_FLOAT, last_pickup); + addstat(STAT_HIT_TIME, AS_FLOAT, hit_time); + addstat(STAT_TYPEHIT_TIME, AS_FLOAT, typehit_time); + addstat(STAT_LAYED_MINES, AS_INT, minelayer_mines); addstat(STAT_NEX_CHARGE, AS_FLOAT, nex_charge); addstat(STAT_NEX_CHARGEPOOL, AS_FLOAT, nex_chargepool_ammo); @@ -1433,7 +1437,6 @@ void DumpStats(float final) float to_eventlog; float to_file; float i; - entity e; to_console = autocvar_sv_logscores_console; to_eventlog = autocvar_sv_eventlog; @@ -2840,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); diff --git a/qcsrc/server/gamecommand.qc b/qcsrc/server/gamecommand.qc index b15e6988f..daec8754e 100644 --- a/qcsrc/server/gamecommand.qc +++ b/qcsrc/server/gamecommand.qc @@ -590,6 +590,7 @@ void EffectIndexDump() db_put(d, "TR_NEHAHRASMOKE", "1"); print("effect TR_NEHAHRASMOKE is ", ftos(particleeffectnum("TR_NEHAHRASMOKE")), "\n"); db_put(d, "TR_NEXUIZPLASMA", "1"); print("effect TR_NEXUIZPLASMA is ", ftos(particleeffectnum("TR_NEXUIZPLASMA")), "\n"); db_put(d, "TR_GLOWTRAIL", "1"); print("effect TR_GLOWTRAIL is ", ftos(particleeffectnum("TR_GLOWTRAIL")), "\n"); + db_put(d, "TR_SEEKER", "1"); print("effect TR_SEEKER is ", ftos(particleeffectnum("TR_SEEKER")), "\n"); db_put(d, "SVC_PARTICLE", "1"); print("effect SVC_PARTICLE is ", ftos(particleeffectnum("SVC_PARTICLE")), "\n"); fh = fopen("effectinfo.txt", FILE_READ); @@ -679,7 +680,7 @@ void GameCommand(string command) if(argv(0) == "help" || argc == 0) { print("Usage: sv_cmd COMMAND..., where possible commands are:\n"); - print(" adminmsg clientnumber \"message\"\n"); + print(" adminmsg clientnumber \"message\" [infobartime]\n"); print(" teamstatus\n"); print(" printstats\n"); print(" make_mapinfo\n"); @@ -760,24 +761,40 @@ void GameCommand(string command) } if(argv(0) == "adminmsg") - if(argc == 3) + if(argc >= 3 && argc <= 4) { entno = stof(argv(1)); - if((entno < 1) | (entno > maxclients)) { + if((entno < 0) | (entno > maxclients)) { print("Player ", argv(1), " doesn't exist\n"); return; } - client = edict_num(entno); - - if(client.flags & FL_CLIENT) + n = 0; + for(i = (entno ? entno : 1); i <= (entno ? entno : maxclients); ++i) { - centerprint_atprio(client, CENTERPRIO_ADMIN, strcat("^3", admin_name(), ":\n\n^7", argv(2))); - sprint(client, strcat("\{1}\{13}^3", admin_name(), "^7: ", argv(2), "\n")); - print("Message sent to ", client.netname, "\n"); + client = edict_num(i); + if(client.flags & FL_CLIENT) + { + if(argc == 4) + { + s = argv(2); + s = strreplace("\n", "", s); + s = strreplace("\\", "\\\\", s); + s = strreplace("$", "$$", s); + s = strreplace("\"", "\\\"", s); + stuffcmd(client, sprintf("\ninfobar %f \"%s\"\n", stof(argv(3)), s)); + } + else + { + centerprint_atprio(client, CENTERPRIO_ADMIN, strcat("^3", admin_name(), ":\n\n^7", argv(2))); + sprint(client, strcat("\{1}\{13}^3", admin_name(), "^7: ", argv(2), "\n")); + } + print("Message sent to ", client.netname, "\n"); + ++n; + } } - else + if(!n) print("Client not found\n"); return; diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index 112162e40..84dd07d94 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -236,6 +236,8 @@ void relocate_spawnpoint() if (have_team_spawns != 0) if (self.team) have_team_spawns = 1; + if (!self.team) + have_noteam_spawns = 1; if (autocvar_r_showbboxes) { @@ -603,7 +605,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 +617,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) @@ -921,7 +923,11 @@ void readplayerstartcvars() s = "most"; } - if (s == "off") + if (s == "0" || s == "") + { + // no arena + } + else if (s == "off") { // forcibly turn off weaponarena } @@ -1022,23 +1028,11 @@ void readplayerstartcvars() } else if(start_items & IT_UNLIMITED_WEAPON_AMMO) { - for (j = WEP_FIRST; j <= WEP_LAST; ++j) - { - e = get_weaponinfo(j); - if(start_weapons & e.weapons) - { - if(e.items & IT_ROCKETS) - start_ammo_rockets = 999; - if(e.items & IT_SHELLS) - start_ammo_shells = 999; - if(e.items & IT_CELLS) - start_ammo_cells = 999; - if(e.items & IT_NAILS) - start_ammo_nails = 999; - if(e.items & IT_FUEL) - start_ammo_fuel = 999; - } - } + start_ammo_rockets = 999; + start_ammo_shells = 999; + start_ammo_cells = 999; + start_ammo_nails = 999; + start_ammo_fuel = 999; } else { @@ -1638,8 +1632,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"); @@ -1666,6 +1658,7 @@ void precache() precache_model ("models/sprites/10.spr32"); // common weapon precaches + precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound here precache_sound ("weapons/weapon_switch.wav"); precache_sound ("weapons/weaponpickup.wav"); precache_sound ("weapons/unavailable.wav"); 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 aa581228b..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() diff --git a/qcsrc/server/mutators/gamemode_keepaway.qc b/qcsrc/server/mutators/gamemode_keepaway.qc index a23169c37..60c39d434 100644 --- a/qcsrc/server/mutators/gamemode_keepaway.qc +++ b/qcsrc/server/mutators/gamemode_keepaway.qc @@ -172,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); @@ -200,7 +200,7 @@ void ka_TimeScoring() if(autocvar_g_keepaway_score_timepoints) PlayerScore_Add(self.owner, SP_SCORE, autocvar_g_keepaway_score_timepoints); - PlayerScore_Add(self.owner, SP_KEEPAWAY_TIME, (autocvar_g_keepaway_score_timeinterval / 1)); // interval is divided by 1 so that time always shows "seconds" + 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; } } diff --git a/qcsrc/server/mutators/mutator_nix.qc b/qcsrc/server/mutators/mutator_nix.qc index 1cc5c9c65..a4131af40 100644 --- a/qcsrc/server/mutators/mutator_nix.qc +++ b/qcsrc/server/mutators/mutator_nix.qc @@ -191,7 +191,7 @@ MUTATOR_HOOKFUNCTION(nix_FilterItem) MUTATOR_HOOKFUNCTION(nix_OnEntityPreSpawn) { - if(self.classname == "target_items") // items triggers cannot work in nixnex (as they change weapons/ammo) + if(self.classname == "target_items") // items triggers cannot work in nix (as they change weapons/ammo) return 1; return 0; } 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 58f251c9e..2bb5540d6 100644 --- a/qcsrc/server/playerstats.qc +++ b/qcsrc/server/playerstats.qc @@ -40,7 +40,7 @@ void PlayerStats_AddPlayer(entity e) if(playerstats_db < 0) return; - if(e.crypto_idfp != "") + 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)); @@ -148,7 +148,9 @@ void PlayerStats_Sent_URI_Get_Callback(float id, float status, string data) The following keys are defined: - V: format version (always 1) + V: format version (always 1) - this MUST be the first line! + #: comment (MUST be ignored by any parser) + R: release information on the server T: time at which the game ended G: game type M: map name @@ -190,6 +192,9 @@ void PlayerStats_Shutdown() db_dump(playerstats_db, "foo.db"); bufstr_set(b, i++, "V 1"); +#ifdef WATERMARK + bufstr_set(b, i++, sprintf("R %s", WATERMARK())); +#endif bufstr_set(b, i++, sprintf("T %s.%06d", strftime(FALSE, "%s"), floor(random() * 1000000))); bufstr_set(b, i++, sprintf("G %s", GetGametype())); bufstr_set(b, i++, sprintf("M %s", GetMapname())); diff --git a/qcsrc/server/progs.src b/qcsrc/server/progs.src index c76395fdb..d55c80314 100644 --- a/qcsrc/server/progs.src +++ b/qcsrc/server/progs.src @@ -17,6 +17,7 @@ post-builtins.qh ../common/constants.qh ../common/util.qh ../common/items.qh +../common/explosion_equation.qh autocvars.qh constants.qh @@ -179,6 +180,8 @@ anticheat.qc cheats.qc playerstats.qc +../common/explosion_equation.qc + mutators/base.qc mutators/gamemode_keyhunt.qc mutators/gamemode_freezetag.qc @@ -193,3 +196,5 @@ mutators/mutator_vampire.qc ../warpzonelib/common.qc ../warpzonelib/util_server.qc ../warpzonelib/server.qc + +../common/if-this-file-errors-scroll-up-and-fix-the-warnings.fteqccfail diff --git a/qcsrc/server/scores.qc b/qcsrc/server/scores.qc index 6c7a7dbc3..8d5fa100c 100644 --- a/qcsrc/server/scores.qc +++ b/qcsrc/server/scores.qc @@ -375,7 +375,6 @@ 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 diff --git a/qcsrc/server/scores_rules.qc b/qcsrc/server/scores_rules.qc index 18c780d81..2e75fefb9 100644 --- a/qcsrc/server/scores_rules.qc +++ b/qcsrc/server/scores_rules.qc @@ -190,15 +190,13 @@ 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_TIME 7 +#define SP_KEEPAWAY_BCTIME 6 void ScoreRules_keepaway() { 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_TIME, "time", SFL_SORT_PRIO_SECONDARY); + ScoreInfo_SetLabel_PlayerScore(SP_KEEPAWAY_BCTIME, "bctime", SFL_SORT_PRIO_SECONDARY); ScoreRules_basics_end(); } diff --git a/qcsrc/server/sv_main.qc b/qcsrc/server/sv_main.qc index aebea7523..68a86e9c4 100644 --- a/qcsrc/server/sv_main.qc +++ b/qcsrc/server/sv_main.qc @@ -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..5a591e035 100644 --- a/qcsrc/server/t_items.qc +++ b/qcsrc/server/t_items.qc @@ -96,7 +96,7 @@ void Item_Show (entity e, float mode) } else if((e.flags & FL_WEAPON) && (g_weapon_stay == 3)) { - // make the item translucent green and not touchable + // make the item translucent and not touchable e.model = e.mdl; e.solid = SOLID_TRIGGER; // can STILL be picked up! e.colormod = '0 0 0'; @@ -108,7 +108,7 @@ void Item_Show (entity e, float mode) } else if(g_ghost_items) { - // make the item translucent green and not touchable + // make the item translucent and not touchable e.model = e.mdl; e.solid = SOLID_NOT; e.colormod = stov(autocvar_g_ghost_items_color); @@ -123,7 +123,7 @@ void Item_Show (entity e, float mode) // hide the item completely e.model = string_null; e.solid = SOLID_NOT; - e.colormod = stov(autocvar_g_ghost_items_color); + e.colormod = '0 0 0'; e.glowmod = e.colormod; e.alpha = 0; e.customizeentityforclient = func_null; @@ -395,7 +395,7 @@ float Item_GiveTo(entity item, entity player) } if (item.flags & FL_WEAPON) - if ((it = item.weapons - (item.weapons & player.weapons)) || g_pickup_weapons_anyway) + if ((it = item.weapons - (item.weapons & player.weapons)) || (g_pickup_weapons_anyway && !(g_weapon_stay == 3 && !e.spawnshieldtime))) { pickedup = TRUE; for(i = WEP_FIRST; i <= WEP_LAST; ++i) @@ -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_plats.qc b/qcsrc/server/t_plats.qc index f3afdf580..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); diff --git a/qcsrc/server/t_quake3.qc b/qcsrc/server/t_quake3.qc index 11bf880e6..8cc7e4797 100644 --- a/qcsrc/server/t_quake3.qc +++ b/qcsrc/server/t_quake3.qc @@ -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 0363d35a0..f9321b8db 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -528,7 +528,7 @@ void PrintWelcomeMessage(entity pl) if(g_weapon_stay && !g_cts) modifications = strcat(modifications, ", Weapons stay"); if(g_bloodloss > 0) - modifications = strcat(modifications, ", Bloodloss"); + modifications = strcat(modifications, ", Blood loss"); if(g_jetpack) modifications = strcat(modifications, ", Jet pack"); modifications = substring(modifications, 2, strlen(modifications) - 2); diff --git a/qcsrc/server/w_crylink.qc b/qcsrc/server/w_crylink.qc index aa5029c0a..ef8dd8d16 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_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "crylink", "crylink", _("Crylink")); #else #ifdef SVQC .float gravity; @@ -57,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); @@ -279,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) @@ -326,8 +329,7 @@ void W_Crylink_Attack (void) vector forward, right, up; float maxdmg; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_cells = self.ammo_cells - autocvar_g_balance_crylink_primary_ammo; + W_DecreaseAmmo(ammo_cells, autocvar_g_balance_crylink_primary_ammo, autocvar_g_balance_crylink_reload_ammo); maxdmg = autocvar_g_balance_crylink_primary_damage*autocvar_g_balance_crylink_primary_shots; maxdmg *= 1 + autocvar_g_balance_crylink_primary_bouncedamagefactor * autocvar_g_balance_crylink_primary_bounces; @@ -430,8 +432,7 @@ void W_Crylink_Attack2 (void) local entity proj, prevproj, firstproj; float maxdmg; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_cells = self.ammo_cells - autocvar_g_balance_crylink_secondary_ammo; + W_DecreaseAmmo(ammo_cells, autocvar_g_balance_crylink_secondary_ammo, autocvar_g_balance_crylink_reload_ammo); maxdmg = autocvar_g_balance_crylink_secondary_damage*autocvar_g_balance_crylink_secondary_shots; maxdmg *= 1 + autocvar_g_balance_crylink_secondary_bouncedamagefactor * autocvar_g_balance_crylink_secondary_bounces; @@ -519,6 +520,7 @@ void spawnfunc_weapon_crylink (void) float w_crylink(float req) { + float ammo_amount; if (req == WR_AIM) { if (random() < 0.10) @@ -528,7 +530,9 @@ float w_crylink(float req) } else if (req == WR_THINK) { - if (self.BUTTON_ATCK) + if(autocvar_g_balance_crylink_reload_ammo && self.clip_load < min(autocvar_g_balance_crylink_primary_ammo, autocvar_g_balance_crylink_secondary_ammo)) // forced reload + weapon_action(self.weapon, WR_RELOAD); + else if (self.BUTTON_ATCK) { if (!self.crylink_waitrelease) if (weapon_prepareattack(0, autocvar_g_balance_crylink_primary_refire)) @@ -579,6 +583,7 @@ float w_crylink(float req) } self.crylink_waitrelease = 0; if(!w_crylink(WR_CHECKAMMO1) && !w_crylink(WR_CHECKAMMO2)) + if not(self.items & IT_UNLIMITED_WEAPON_AMMO) { // ran out of ammo! self.cnt = WEP_CRYLINK; @@ -595,22 +600,36 @@ float w_crylink(float req) precache_sound ("weapons/crylink_fire.wav"); precache_sound ("weapons/crylink_fire2.wav"); precache_sound ("weapons/crylink_linkjoin.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else } else if (req == WR_SETUP) + { weapon_setup(WEP_CRYLINK); + self.current_ammo = ammo_cells; + } else if (req == WR_CHECKAMMO1) { // don't "run out of ammo" and switch weapons while waiting for release if(self.crylink_lastgroup && self.crylink_waitrelease) return TRUE; - return self.ammo_cells >= autocvar_g_balance_crylink_primary_ammo; + + ammo_amount = self.ammo_cells >= autocvar_g_balance_crylink_primary_ammo; + ammo_amount += self.weapon_load[WEP_CRYLINK] >= autocvar_g_balance_crylink_primary_ammo; + return ammo_amount; } else if (req == WR_CHECKAMMO2) { // don't "run out of ammo" and switch weapons while waiting for release if(self.crylink_lastgroup && self.crylink_waitrelease) return TRUE; - return self.ammo_cells >= autocvar_g_balance_crylink_secondary_ammo; + + ammo_amount = self.ammo_cells >= autocvar_g_balance_crylink_secondary_ammo; + ammo_amount += self.weapon_load[WEP_CRYLINK] >= autocvar_g_balance_crylink_secondary_ammo; + return ammo_amount; + } + else if (req == WR_RELOAD) + { + W_Reload(min(autocvar_g_balance_crylink_primary_ammo, autocvar_g_balance_crylink_secondary_ammo), autocvar_g_balance_crylink_reload_ammo, autocvar_g_balance_crylink_reload_time, "weapons/reload.wav"); } return TRUE; }; diff --git a/qcsrc/server/w_electro.qc b/qcsrc/server/w_electro.qc index f5491f39a..711c44c8b 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_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "electro", "electro", _("Electro")); #else #ifdef SVQC .float electro_count; @@ -110,6 +110,8 @@ void W_Electro_Attack() { local entity proj; + W_DecreaseAmmo(ammo_cells, autocvar_g_balance_electro_primary_ammo, autocvar_g_balance_electro_reload_ammo); + W_SetupShot_ProjectileSize (self, '0 0 -3', '0 0 -3', FALSE, 2, "weapons/electro_fire.wav", CHAN_WEAPON, autocvar_g_balance_electro_primary_damage); pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); @@ -126,8 +128,6 @@ void W_Electro_Attack() proj.projectiledeathtype = WEP_ELECTRO; setorigin(proj, w_shotorg); - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_cells = self.ammo_cells - autocvar_g_balance_electro_primary_ammo; proj.movetype = MOVETYPE_FLY; W_SETUPPROJECTILEVELOCITY(proj, g_balance_electro_primary); proj.angles = vectoangles(proj.velocity); @@ -147,6 +147,8 @@ void W_Electro_Attack2() { local entity proj; + W_DecreaseAmmo(ammo_cells, autocvar_g_balance_electro_secondary_ammo, autocvar_g_balance_electro_reload_ammo); + W_SetupShot_ProjectileSize (self, '0 0 -4', '0 0 -4', FALSE, 2, "weapons/electro_fire2.wav", CHAN_WEAPON, autocvar_g_balance_electro_secondary_damage); w_shotdir = v_forward; // no TrueAim for grenades please @@ -165,8 +167,6 @@ void W_Electro_Attack2() proj.projectiledeathtype = WEP_ELECTRO | HITTYPE_SECONDARY; setorigin(proj, w_shotorg); - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_cells = self.ammo_cells - autocvar_g_balance_electro_secondary_ammo; //proj.glow_size = 50; //proj.glow_color = 45; proj.movetype = MOVETYPE_BOUNCE; @@ -193,7 +193,7 @@ void W_Electro_Attack2() CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO, FALSE); // no culling, it has sound other = proj; MUTATOR_CALLHOOK(EditProjectile); - } +} .vector hook_start, hook_end; float lgbeam_send(entity to, float sf) @@ -224,39 +224,64 @@ float lgbeam_send(entity to, float sf) } .entity lgbeam; .float prevlgfire; +float lgbeam_checkammo() +{ + if(self.owner.items & IT_UNLIMITED_WEAPON_AMMO) + return TRUE; + else if(autocvar_g_balance_electro_reload_ammo) + return self.owner.clip_load > 0; + else + return self.owner.ammo_cells > 0; +} + void lgbeam_think() { - self.owner.prevlgfire = time; - if (self != self.owner.lgbeam) + entity owner_player; + owner_player = self.owner; + + owner_player.prevlgfire = time; + if (self != owner_player.lgbeam) { remove(self); return; } - if (self.owner.weaponentity.state != WS_INUSE || (self.owner.ammo_cells <= 0 && !(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)) || self.owner.deadflag != DEAD_NO || !self.owner.BUTTON_ATCK || self.owner.freezetag_frozen) + + if (owner_player.weaponentity.state != WS_INUSE || !lgbeam_checkammo() || owner_player.deadflag != DEAD_NO || !owner_player.BUTTON_ATCK || owner_player.freezetag_frozen) { - if(self == self.owner.lgbeam) - self.owner.lgbeam = world; + if(self == owner_player.lgbeam) + owner_player.lgbeam = world; remove(self); return; } self.nextthink = time; - makevectors(self.owner.v_angle); + makevectors(owner_player.v_angle); float dt, f; dt = frametime; - if not(self.owner.items & IT_UNLIMITED_WEAPON_AMMO) + + // if this weapon is reloadable, decrease its load. Else decrease the player's ammo + if not(owner_player.items & IT_UNLIMITED_WEAPON_AMMO) { if(autocvar_g_balance_electro_primary_ammo) { - dt = min(dt, self.owner.ammo_cells / autocvar_g_balance_electro_primary_ammo); - self.owner.ammo_cells = max(0, self.owner.ammo_cells - autocvar_g_balance_electro_primary_ammo * frametime); + if(autocvar_g_balance_electro_reload_ammo) + { + dt = min(dt, owner_player.clip_load / autocvar_g_balance_electro_primary_ammo); + owner_player.clip_load = max(0, owner_player.clip_load - autocvar_g_balance_electro_primary_ammo * frametime); + owner_player.weapon_load[WEP_ELECTRO] = owner_player.clip_load; + } + else + { + dt = min(dt, owner_player.ammo_cells / autocvar_g_balance_electro_primary_ammo); + owner_player.ammo_cells = max(0, owner_player.ammo_cells - autocvar_g_balance_electro_primary_ammo * frametime); + } } } - W_SetupShot_Range(self.owner, TRUE, 0, "", 0, autocvar_g_balance_electro_primary_damage * dt, autocvar_g_balance_electro_primary_range); - WarpZone_traceline_antilag(self.owner, w_shotorg, w_shotend, MOVE_NORMAL, self.owner, ANTILAG_LATENCY(self.owner)); + W_SetupShot_Range(owner_player, TRUE, 0, "", 0, autocvar_g_balance_electro_primary_damage * dt, autocvar_g_balance_electro_primary_range); + WarpZone_traceline_antilag(owner_player, w_shotorg, w_shotend, MOVE_NORMAL, owner_player, ANTILAG_LATENCY(owner_player)); // apply the damage if(trace_ent) @@ -266,11 +291,11 @@ void lgbeam_think() f = ExponentialFalloff(autocvar_g_balance_electro_primary_falloff_mindist, autocvar_g_balance_electro_primary_falloff_maxdist, autocvar_g_balance_electro_primary_falloff_halflifedist, vlen(WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos) - w_shotorg)); - if(accuracy_isgooddamage(self.owner, trace_ent)) - accuracy_add(self.owner, WEP_ELECTRO, 0, autocvar_g_balance_electro_primary_damage * dt * f); - Damage (trace_ent, self.owner, self.owner, autocvar_g_balance_electro_primary_damage * dt * f, WEP_ELECTRO, trace_endpos, force * dt); + if(accuracy_isgooddamage(owner_player, trace_ent)) + accuracy_add(owner_player, WEP_ELECTRO, 0, autocvar_g_balance_electro_primary_damage * dt * f); + Damage (trace_ent, owner_player, owner_player, autocvar_g_balance_electro_primary_damage * dt * f, WEP_ELECTRO, trace_endpos, force * dt); } - W_Plasma_TriggerCombo(trace_endpos, autocvar_g_balance_electro_primary_comboradius, self.owner); + W_Plasma_TriggerCombo(trace_endpos, autocvar_g_balance_electro_primary_comboradius, owner_player); // draw effect if(w_shotorg != self.hook_start) @@ -344,6 +369,7 @@ void w_electro_checkattack() .float BUTTON_ATCK_prev; float w_electro(float req) { + float ammo_amount; if (req == WR_AIM) { self.BUTTON_ATCK=FALSE; @@ -376,6 +402,24 @@ float w_electro(float req) } else if (req == WR_THINK) { + if(autocvar_g_balance_electro_reload_ammo) // forced reload + { + if(autocvar_g_balance_electro_lightning) + { + if(self.clip_load > 0) + ammo_amount = 1; + } + else if(self.clip_load >= autocvar_g_balance_electro_primary_ammo) + ammo_amount = 1; + if(self.clip_load >= autocvar_g_balance_electro_secondary_ammo) + ammo_amount += 1; + + if(!ammo_amount) + { + weapon_action(self.weapon, WR_RELOAD); + return FALSE; + } + } if (self.BUTTON_ATCK) { if(autocvar_g_balance_electro_lightning) @@ -417,16 +461,18 @@ float w_electro(float req) } self.BUTTON_ATCK_prev = 0; } - } - if (self.BUTTON_ATCK2) - if (time >= self.electro_secondarytime) - if (weapon_prepareattack(1, autocvar_g_balance_electro_secondary_refire)) - { - W_Electro_Attack2(); - self.electro_count = autocvar_g_balance_electro_secondary_count; - weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_electro_secondary_animtime, w_electro_checkattack); - self.electro_secondarytime = time + autocvar_g_balance_electro_secondary_refire2 * W_WeaponRateFactor(); + if (self.BUTTON_ATCK2) + { + if (time >= self.electro_secondarytime) + if (weapon_prepareattack(1, autocvar_g_balance_electro_secondary_refire)) + { + W_Electro_Attack2(); + self.electro_count = autocvar_g_balance_electro_secondary_count; + weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_electro_secondary_animtime, w_electro_checkattack); + self.electro_secondarytime = time + autocvar_g_balance_electro_secondary_refire2 * W_WeaponRateFactor(); + } + } } } else if (req == WR_PRECACHE) @@ -439,26 +485,48 @@ float w_electro(float req) precache_sound ("weapons/electro_fire2.wav"); precache_sound ("weapons/electro_impact.wav"); precache_sound ("weapons/electro_impact_combo.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else if(autocvar_g_balance_electro_lightning) { precache_sound ("weapons/lgbeam_fire.wav"); } } else if (req == WR_SETUP) + { weapon_setup(WEP_ELECTRO); + self.current_ammo = ammo_cells; + } else if (req == WR_CHECKAMMO1) { if(autocvar_g_balance_electro_lightning) - return !autocvar_g_balance_electro_primary_ammo || (self.ammo_cells > 0); + { + if(!autocvar_g_balance_electro_primary_ammo) + ammo_amount = 1; + else + ammo_amount = self.ammo_cells > 0; + ammo_amount += self.weapon_load[WEP_ELECTRO] > 0; + } else - return self.ammo_cells >= autocvar_g_balance_electro_primary_ammo; + { + ammo_amount = self.ammo_cells >= autocvar_g_balance_electro_primary_ammo; + ammo_amount += self.weapon_load[WEP_ELECTRO] >= autocvar_g_balance_electro_primary_ammo; + } + return ammo_amount; } else if (req == WR_CHECKAMMO2) - return self.ammo_cells >= autocvar_g_balance_electro_secondary_ammo; + { + ammo_amount = self.ammo_cells >= autocvar_g_balance_electro_secondary_ammo; + ammo_amount += self.weapon_load[WEP_ELECTRO] >= autocvar_g_balance_electro_secondary_ammo; + return ammo_amount; + } else if (req == WR_RESETPLAYER) { self.electro_secondarytime = time; } + else if (req == WR_RELOAD) + { + W_Reload(min(autocvar_g_balance_electro_primary_ammo, autocvar_g_balance_electro_secondary_ammo), autocvar_g_balance_electro_reload_ammo, autocvar_g_balance_electro_reload_time, "weapons/reload.wav"); + } return TRUE; }; #endif diff --git a/qcsrc/server/w_fireball.qc b/qcsrc/server/w_fireball.qc index 73ff1595a..4408ccf88 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_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "fireball", "fireball", _("Fireball")); #else #ifdef SVQC .float bot_primary_fireballmooth; // whatever a mooth is @@ -194,8 +194,7 @@ void W_Fireball_Attack1_Frame1() void W_Fireball_Attack1_Frame0() { - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_fuel = self.ammo_fuel - autocvar_g_balance_fireball_primary_ammo; + W_DecreaseAmmo(ammo_fuel, autocvar_g_balance_fireball_primary_ammo, autocvar_g_balance_fireball_reload_ammo); W_Fireball_AttackEffect(0, '-1.25 -3.75 0'); sound (self, CHAN_WEAPON, "weapons/fireball_prefire2.wav", VOL_BASE, ATTN_NORM); @@ -246,8 +245,7 @@ void W_Fireball_Attack2() vector f_diff; float c; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_fuel = self.ammo_fuel - autocvar_g_balance_fireball_secondary_ammo; + W_DecreaseAmmo(ammo_fuel, autocvar_g_balance_fireball_secondary_ammo, autocvar_g_balance_fireball_reload_ammo); c = mod(self.bulletcounter, 4); switch(c) @@ -304,6 +302,7 @@ void spawnfunc_weapon_fireball (void) float w_fireball(float req) { + float ammo_amount; if (req == WR_AIM) { self.BUTTON_ATCK = FALSE; @@ -327,18 +326,24 @@ float w_fireball(float req) } else if (req == WR_THINK) { - if (self.BUTTON_ATCK) - if (time >= self.fireball_primarytime) - if (weapon_prepareattack(0, autocvar_g_balance_fireball_primary_refire)) + if(autocvar_g_balance_fireball_reload_ammo && self.clip_load < min(autocvar_g_balance_fireball_primary_ammo, autocvar_g_balance_fireball_secondary_ammo)) // forced reload + weapon_action(self.weapon, WR_RELOAD); + else if (self.BUTTON_ATCK) { - W_Fireball_Attack1_Frame0(); - self.fireball_primarytime = time + autocvar_g_balance_fireball_primary_refire2; + if (time >= self.fireball_primarytime) + if (weapon_prepareattack(0, autocvar_g_balance_fireball_primary_refire)) + { + W_Fireball_Attack1_Frame0(); + self.fireball_primarytime = time + autocvar_g_balance_fireball_primary_refire2; + } } - if (self.BUTTON_ATCK2) - if (weapon_prepareattack(1, autocvar_g_balance_fireball_secondary_refire)) + else if (self.BUTTON_ATCK2) { - W_Fireball_Attack2(); - weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_fireball_secondary_animtime, w_ready); + if (weapon_prepareattack(1, autocvar_g_balance_fireball_secondary_refire)) + { + W_Fireball_Attack2(); + weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_fireball_secondary_animtime, w_ready); + } } } else if (req == WR_PRECACHE) @@ -350,17 +355,37 @@ float w_fireball(float req) precache_sound ("weapons/fireball_fire.wav"); precache_sound ("weapons/fireball_fire2.wav"); precache_sound ("weapons/fireball_prefire2.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else } else if (req == WR_SETUP) + { weapon_setup(WEP_FIREBALL); + self.current_ammo = ammo_fuel; + } else if (req == WR_CHECKAMMO1) - return self.ammo_fuel >= autocvar_g_balance_fireball_primary_ammo; + { + ammo_amount = self.ammo_fuel >= autocvar_g_balance_fireball_primary_ammo; + ammo_amount += self.weapon_load[WEP_FIREBALL] >= autocvar_g_balance_fireball_primary_ammo; + return ammo_amount; + } else if (req == WR_CHECKAMMO2) - return self.ammo_fuel >= autocvar_g_balance_fireball_secondary_ammo; + { + ammo_amount = self.ammo_fuel >= autocvar_g_balance_fireball_secondary_ammo; + ammo_amount += self.weapon_load[WEP_FIREBALL] >= autocvar_g_balance_fireball_secondary_ammo; + return ammo_amount; + } else if (req == WR_RESETPLAYER) { self.fireball_primarytime = time; } + else if (req == WR_RELOAD) + { + // fuel can be a non-whole number, which brakes stuff here when between 0 and 1 + if(self.ammo_fuel < 1) + self.ammo_fuel = 0; + + W_Reload(min(autocvar_g_balance_fireball_primary_ammo, autocvar_g_balance_fireball_secondary_ammo), autocvar_g_balance_fireball_reload_ammo, autocvar_g_balance_fireball_reload_time, "weapons/reload.wav"); + } return TRUE; }; #endif diff --git a/qcsrc/server/w_grenadelauncher.qc b/qcsrc/server/w_grenadelauncher.qc index d5f6c5d68..017a41a87 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_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "gl", "grenadelauncher", _("Mortar")) #else #ifdef SVQC .float gl_detonate_later; @@ -161,8 +161,8 @@ void W_Grenade_Attack (void) { local entity gren; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_grenadelauncher_primary_ammo; + W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_grenadelauncher_primary_ammo, autocvar_g_balance_grenadelauncher_reload_ammo); + W_SetupShot_ProjectileSize (self, '-3 -3 -3', '3 3 3', FALSE, 4, "weapons/grenade_fire.wav", CHAN_WEAPON, autocvar_g_balance_grenadelauncher_primary_damage); w_shotdir = v_forward; // no TrueAim for grenades please @@ -208,8 +208,8 @@ void W_Grenade_Attack2 (void) { local entity gren; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_grenadelauncher_secondary_ammo; + W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_grenadelauncher_secondary_ammo, autocvar_g_balance_grenadelauncher_reload_ammo); + W_SetupShot_ProjectileSize (self, '-3 -3 -3', '3 3 3', FALSE, 4, "weapons/grenade_fire.wav", CHAN_WEAPON, autocvar_g_balance_grenadelauncher_secondary_damage); w_shotdir = v_forward; // no TrueAim for grenades please @@ -260,6 +260,7 @@ float w_glauncher(float req) { entity nade; float nadefound; + float ammo_amount; if (req == WR_AIM) { @@ -284,13 +285,17 @@ float w_glauncher(float req) } else if (req == WR_THINK) { - if (self.BUTTON_ATCK) - if (weapon_prepareattack(0, autocvar_g_balance_grenadelauncher_primary_refire)) + if(autocvar_g_balance_grenadelauncher_reload_ammo && self.clip_load < min(autocvar_g_balance_grenadelauncher_primary_ammo, autocvar_g_balance_grenadelauncher_secondary_ammo)) // forced reload + weapon_action(self.weapon, WR_RELOAD); + else if (self.BUTTON_ATCK) { - W_Grenade_Attack(); - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_grenadelauncher_primary_animtime, w_ready); + if (weapon_prepareattack(0, autocvar_g_balance_grenadelauncher_primary_refire)) + { + W_Grenade_Attack(); + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_grenadelauncher_primary_animtime, w_ready); + } } - if (self.BUTTON_ATCK2) + else if (self.BUTTON_ATCK2) { if (cvar("g_balance_grenadelauncher_secondary_remote_detonateprimary")) { @@ -326,13 +331,29 @@ float w_glauncher(float req) precache_sound ("weapons/grenade_bounce6.wav"); precache_sound ("weapons/grenade_stick.wav"); precache_sound ("weapons/grenade_fire.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else } else if (req == WR_SETUP) + { weapon_setup(WEP_GRENADE_LAUNCHER); + self.current_ammo = ammo_rockets; + } else if (req == WR_CHECKAMMO1) - return self.ammo_rockets >= autocvar_g_balance_grenadelauncher_primary_ammo; + { + ammo_amount = self.ammo_rockets >= autocvar_g_balance_grenadelauncher_primary_ammo; + ammo_amount += self.weapon_load[WEP_GRENADE_LAUNCHER] >= autocvar_g_balance_grenadelauncher_primary_ammo; + return ammo_amount; + } else if (req == WR_CHECKAMMO2) - return self.ammo_rockets >= autocvar_g_balance_grenadelauncher_secondary_ammo; + { + ammo_amount = self.ammo_rockets >= autocvar_g_balance_grenadelauncher_secondary_ammo; + ammo_amount += self.weapon_load[WEP_GRENADE_LAUNCHER] >= autocvar_g_balance_grenadelauncher_secondary_ammo; + return ammo_amount; + } + else if (req == WR_RELOAD) + { + W_Reload(min(autocvar_g_balance_grenadelauncher_primary_ammo, autocvar_g_balance_grenadelauncher_secondary_ammo), autocvar_g_balance_grenadelauncher_reload_ammo, autocvar_g_balance_grenadelauncher_reload_time, "weapons/reload.wav"); + } return TRUE; }; #endif diff --git a/qcsrc/server/w_hagar.qc b/qcsrc/server/w_hagar.qc index 5fb25642e..df0d96679 100644 --- a/qcsrc/server/w_hagar.qc +++ b/qcsrc/server/w_hagar.qc @@ -1,8 +1,9 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(HAGAR, w_hagar, IT_ROCKETS, 8, WEP_FLAG_NORMAL | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "hagar", "hagar", _("Hagar")) +REGISTER_WEAPON(HAGAR, w_hagar, IT_ROCKETS, 8, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "hagar", "hagar", _("Hagar")) #else #ifdef SVQC // NO bounce protection, as bounces are limited! + void W_Hagar_Explode (void) { self.event_damage = SUB_Null; @@ -44,8 +45,8 @@ void W_Hagar_Attack (void) { local entity missile; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_hagar_primary_ammo; + W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_hagar_primary_ammo, autocvar_g_balance_hagar_reload_ammo); + W_SetupShot (self, FALSE, 2, "weapons/hagar_fire.wav", CHAN_WEAPON, autocvar_g_balance_hagar_primary_damage); pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); @@ -79,8 +80,8 @@ void W_Hagar_Attack2 (void) { local entity missile; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_hagar_secondary_ammo; + W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_hagar_secondary_ammo, autocvar_g_balance_hagar_reload_ammo); + W_SetupShot (self, FALSE, 2, "weapons/hagar_fire.wav", CHAN_WEAPON, autocvar_g_balance_hagar_secondary_damage); pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); @@ -118,6 +119,7 @@ void spawnfunc_weapon_hagar (void) float w_hagar(float req) { + float ammo_amount; if (req == WR_AIM) if (random()>0.15) self.BUTTON_ATCK = bot_aim(autocvar_g_balance_hagar_primary_speed, 0, autocvar_g_balance_hagar_primary_lifetime, FALSE); @@ -128,17 +130,23 @@ float w_hagar(float req) } else if (req == WR_THINK) { - if (self.BUTTON_ATCK) - if (weapon_prepareattack(0, autocvar_g_balance_hagar_primary_refire)) + if(autocvar_g_balance_hagar_reload_ammo && self.clip_load < min(autocvar_g_balance_hagar_primary_ammo, autocvar_g_balance_hagar_secondary_ammo)) // forced reload + weapon_action(self.weapon, WR_RELOAD); + else if (self.BUTTON_ATCK) { - W_Hagar_Attack(); - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_hagar_primary_refire, w_ready); + if (weapon_prepareattack(0, autocvar_g_balance_hagar_primary_refire)) + { + W_Hagar_Attack(); + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_hagar_primary_refire, w_ready); + } } - if (self.BUTTON_ATCK2 && autocvar_g_balance_hagar_secondary) - if (weapon_prepareattack(1, autocvar_g_balance_hagar_secondary_refire)) + else if (self.BUTTON_ATCK2 && autocvar_g_balance_hagar_secondary) { - W_Hagar_Attack2(); - weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_hagar_secondary_refire, w_ready); + if (weapon_prepareattack(1, autocvar_g_balance_hagar_secondary_refire)) + { + W_Hagar_Attack2(); + weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_hagar_secondary_refire, w_ready); + } } } else if (req == WR_PRECACHE) @@ -147,13 +155,29 @@ float w_hagar(float req) precache_model ("models/weapons/v_hagar.md3"); precache_model ("models/weapons/h_hagar.iqm"); precache_sound ("weapons/hagar_fire.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else } else if (req == WR_SETUP) + { weapon_setup(WEP_HAGAR); + self.current_ammo = ammo_rockets; + } else if (req == WR_CHECKAMMO1) - return self.ammo_rockets >= autocvar_g_balance_hagar_primary_ammo; + { + ammo_amount = self.ammo_rockets >= autocvar_g_balance_hagar_primary_ammo; + ammo_amount += self.weapon_load[WEP_HAGAR] >= autocvar_g_balance_hagar_primary_ammo; + return ammo_amount; + } else if (req == WR_CHECKAMMO2) - return self.ammo_rockets >= autocvar_g_balance_hagar_secondary_ammo; + { + ammo_amount = self.ammo_rockets >= autocvar_g_balance_hagar_secondary_ammo; + ammo_amount += self.weapon_load[WEP_HAGAR] >= autocvar_g_balance_hagar_secondary_ammo; + return ammo_amount; + } + else if (req == WR_RELOAD) + { + W_Reload(min(autocvar_g_balance_hagar_primary_ammo, autocvar_g_balance_hagar_secondary_ammo), autocvar_g_balance_hagar_reload_ammo, autocvar_g_balance_hagar_reload_time, "weapons/reload.wav"); + } return TRUE; }; #endif diff --git a/qcsrc/server/w_hlac.qc b/qcsrc/server/w_hlac.qc index 4bba3b805..0cf25e4f6 100644 --- a/qcsrc/server/w_hlac.qc +++ b/qcsrc/server/w_hlac.qc @@ -1,5 +1,5 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(HLAC, w_hlac, IT_CELLS, 6, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "hlac", "hlac", _("Heavy Laser Assault Cannon")) +REGISTER_WEAPON(HLAC, w_hlac, IT_CELLS, 6, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "hlac", "hlac", _("Heavy Laser Assault Cannon")) #else #ifdef SVQC @@ -22,10 +22,7 @@ void W_HLAC_Attack (void) local entity missile; float spread; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - { - self.ammo_cells = self.ammo_cells - autocvar_g_balance_hlac_primary_ammo; - } + W_DecreaseAmmo(ammo_cells, autocvar_g_balance_hlac_primary_ammo, autocvar_g_balance_hlac_reload_ammo); spread = autocvar_g_balance_hlac_primary_spread_min + (autocvar_g_balance_hlac_primary_spread_add * self.misc_bulletcounter); spread = min(spread,autocvar_g_balance_hlac_primary_spread_max); @@ -116,10 +113,7 @@ void W_HLAC_Attack2 (void) { float i; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - { - self.ammo_cells = self.ammo_cells - autocvar_g_balance_hlac_secondary_ammo; - } + W_DecreaseAmmo(ammo_cells, autocvar_g_balance_hlac_secondary_ammo, autocvar_g_balance_hlac_reload_ammo); for(i=autocvar_g_balance_hlac_secondary_shots;i>0;--i) W_HLAC_Attack2f(); @@ -143,6 +137,7 @@ void HLAC_fire1_02() if (self.BUTTON_ATCK) { if (!weapon_action(self.weapon, WR_CHECKAMMO1)) + if not(self.items & IT_UNLIMITED_WEAPON_AMMO) { W_SwitchWeapon_Force(self, w_getbestweapon(self)); w_ready(); @@ -167,25 +162,31 @@ void spawnfunc_weapon_hlac (void) float w_hlac(float req) { + float ammo_amount; if (req == WR_AIM) self.BUTTON_ATCK = bot_aim(autocvar_g_balance_hlac_primary_speed, 0, autocvar_g_balance_hlac_primary_lifetime, FALSE); else if (req == WR_THINK) { - if (self.BUTTON_ATCK) - if (weapon_prepareattack(0, autocvar_g_balance_hlac_primary_refire)) + if(autocvar_g_balance_hlac_reload_ammo && self.clip_load < min(autocvar_g_balance_hlac_primary_ammo, autocvar_g_balance_hlac_secondary_ammo)) // forced reload + weapon_action(self.weapon, WR_RELOAD); + else if (self.BUTTON_ATCK) { - self.misc_bulletcounter = 0; - W_HLAC_Attack(); - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_hlac_primary_refire, HLAC_fire1_02); + if (weapon_prepareattack(0, autocvar_g_balance_hlac_primary_refire)) + { + self.misc_bulletcounter = 0; + W_HLAC_Attack(); + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_hlac_primary_refire, HLAC_fire1_02); + } } - if (self.BUTTON_ATCK2 && autocvar_g_balance_hlac_secondary) - if (weapon_prepareattack(1, autocvar_g_balance_hlac_secondary_refire)) + else if (self.BUTTON_ATCK2 && autocvar_g_balance_hlac_secondary) { - W_HLAC_Attack2(); - weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_hlac_secondary_animtime, w_ready); + if (weapon_prepareattack(1, autocvar_g_balance_hlac_secondary_refire)) + { + W_HLAC_Attack2(); + weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_hlac_secondary_animtime, w_ready); + } } - } else if (req == WR_PRECACHE) { @@ -193,14 +194,30 @@ float w_hlac(float req) precache_model ("models/weapons/v_hlac.md3"); precache_model ("models/weapons/h_hlac.iqm"); precache_sound ("weapons/lasergun_fire.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else } else if (req == WR_SETUP) + { weapon_setup(WEP_HLAC); + self.current_ammo = ammo_cells; + } else if (req == WR_CHECKAMMO1) - return self.ammo_cells >= autocvar_g_balance_hlac_primary_ammo; + { + ammo_amount = self.ammo_cells >= autocvar_g_balance_hlac_primary_ammo; + ammo_amount += self.weapon_load[WEP_HLAC] >= autocvar_g_balance_hlac_primary_ammo; + return ammo_amount; + } else if (req == WR_CHECKAMMO2) - return self.ammo_cells >= autocvar_g_balance_hlac_secondary_ammo; + { + ammo_amount = self.ammo_cells >= autocvar_g_balance_hlac_secondary_ammo; + ammo_amount += self.weapon_load[WEP_HLAC] >= autocvar_g_balance_hlac_secondary_ammo; + return ammo_amount; + } + else if (req == WR_RELOAD) + { + W_Reload(min(autocvar_g_balance_hlac_primary_ammo, autocvar_g_balance_hlac_secondary_ammo), autocvar_g_balance_hlac_reload_ammo, autocvar_g_balance_hlac_reload_time, "weapons/reload.wav"); + } return TRUE; }; #endif diff --git a/qcsrc/server/w_hook.qc b/qcsrc/server/w_hook.qc index da5e3f942..80c40b10f 100644 --- a/qcsrc/server/w_hook.qc +++ b/qcsrc/server/w_hook.qc @@ -62,8 +62,7 @@ void W_Hook_Attack2() { local entity gren; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_cells = self.ammo_cells - autocvar_g_balance_hook_secondary_ammo; + W_DecreaseAmmo(ammo_cells, autocvar_g_balance_hook_secondary_ammo, FALSE); W_SetupShot (self, FALSE, 4, "weapons/hookbomb_fire.wav", CHAN_WEAPON, autocvar_g_balance_hook_secondary_damage); gren = spawn (); @@ -126,8 +125,7 @@ float w_hook(float req) if (time > self.hook_refire) if (weapon_prepareattack(0, -1)) { - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_fuel = self.ammo_fuel - autocvar_g_balance_hook_primary_fuel; + W_DecreaseAmmo(ammo_fuel, autocvar_g_balance_hook_primary_fuel, FALSE); self.hook_state |= HOOK_FIRING; weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_hook_primary_animtime, w_ready); } @@ -170,7 +168,7 @@ float w_hook(float req) { if ( self.ammo_fuel >= (time - self.hook_time_fueldecrease) * hooked_fuel ) { - self.ammo_fuel -= (time - self.hook_time_fueldecrease) * hooked_fuel; + W_DecreaseAmmo(ammo_fuel, (time - self.hook_time_fueldecrease) * hooked_fuel, FALSE); self.hook_time_fueldecrease = time; // decrease next frame again } @@ -228,6 +226,7 @@ float w_hook(float req) else if (req == WR_SETUP) { weapon_setup(WEP_HOOK); + self.current_ammo = ammo_fuel; self.hook_state &~= HOOK_WAITING_FOR_RELEASE; } else if (req == WR_CHECKAMMO1) diff --git a/qcsrc/server/w_laser.qc b/qcsrc/server/w_laser.qc index 4ce133193..a7e5c4df7 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_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, 0, "laser", "laser", _("Laser")) #else #ifdef SVQC void(float imp) W_SwitchWeapon; @@ -226,16 +226,24 @@ float w_laser(float req) } else if (req == WR_THINK) { - if (self.BUTTON_ATCK) - if (weapon_prepareattack(0, autocvar_g_balance_laser_primary_refire)) + if(autocvar_g_balance_laser_reload_ammo && self.clip_load < 1) // forced reload + weapon_action(self.weapon, WR_RELOAD); + else if (self.BUTTON_ATCK) { - W_Laser_Attack(0); - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_laser_primary_animtime, w_ready); + if (weapon_prepareattack(0, autocvar_g_balance_laser_primary_refire)) + { + W_DecreaseAmmo(ammo_none, 1, TRUE); + + W_Laser_Attack(0); + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_laser_primary_animtime, w_ready); + } } - if (self.BUTTON_ATCK2) + else if (self.BUTTON_ATCK2) { if(autocvar_g_balance_laser_secondary) { + W_DecreaseAmmo(ammo_none, 1, TRUE); + if (weapon_prepareattack(0, 0)) { W_Laser_Attack2(); @@ -256,13 +264,25 @@ float w_laser(float req) precache_model ("models/weapons/h_laser.iqm"); precache_sound ("weapons/lasergun_fire.wav"); precache_sound ("weapons/gauntlet_fire.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else } else if (req == WR_SETUP) + { weapon_setup(WEP_LASER); + self.current_ammo = ammo_none; + } else if (req == WR_CHECKAMMO1) + { return TRUE; + } else if (req == WR_CHECKAMMO2) + { return TRUE; + } + else if (req == WR_RELOAD) + { + W_Reload(0, autocvar_g_balance_laser_reload_ammo, autocvar_g_balance_laser_reload_time, "weapons/reload.wav"); + } return TRUE; }; #endif diff --git a/qcsrc/server/w_minelayer.qc b/qcsrc/server/w_minelayer.qc index 07589cf0d..8a6b421b5 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_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "minelayer", "minelayer", _("Mine Layer")) +REGISTER_WEAPON(MINE_LAYER, w_minelayer, IT_ROCKETS, 4, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "minelayer", "minelayer", _("Mine Layer")) #else #ifdef SVQC void W_Mine_Think (void); -.float minelayer_detonate, minelayer_mines; +.float minelayer_detonate, mine_explodeanyway; .float mine_time; void spawnfunc_weapon_minelayer (void) @@ -66,13 +66,18 @@ void W_Mine_Explode () if (self.owner.weapon == WEP_MINE_LAYER) { - if(self.owner.ammo_rockets < autocvar_g_balance_minelayer_ammo) + entity oldself; + oldself = self; + self = self.owner; + if (!weapon_action(WEP_MINE_LAYER, WR_CHECKAMMO1)) { - self.owner.cnt = WEP_MINE_LAYER; - ATTACK_FINISHED(self.owner) = time; - self.owner.switchweapon = w_getbestweapon(self.owner); + self.cnt = WEP_MINE_LAYER; + ATTACK_FINISHED(self) = time; + self.switchweapon = w_getbestweapon(self); } + self = oldself; } + self.owner.minelayer_mines -= 1; remove (self); } @@ -85,13 +90,18 @@ void W_Mine_DoRemoteExplode () if (self.owner.weapon == WEP_MINE_LAYER) { - if(self.owner.ammo_rockets < autocvar_g_balance_minelayer_ammo) + entity oldself; + oldself = self; + self = self.owner; + if (!weapon_action(WEP_MINE_LAYER, WR_CHECKAMMO1)) { - self.owner.cnt = WEP_MINE_LAYER; - ATTACK_FINISHED(self.owner) = time; - self.owner.switchweapon = w_getbestweapon(self.owner); + self.cnt = WEP_MINE_LAYER; + ATTACK_FINISHED(self) = time; + self.switchweapon = w_getbestweapon(self); } + self = oldself; } + self.owner.minelayer_mines -= 1; remove (self); } @@ -110,7 +120,7 @@ void W_Mine_RemoteExplode () void W_Mine_ProximityExplode () { // make sure no friend is in the mine's radius. If there is any, explosion is delayed until he's at a safe distance - if(autocvar_g_balance_minelayer_protection) + if(autocvar_g_balance_minelayer_protection && self.mine_explodeanyway == 0) { entity head; head = findradius(self.origin, autocvar_g_balance_minelayer_radius); @@ -126,21 +136,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 +188,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 +227,8 @@ void W_Mine_Attack (void) // scan how many mines we placed, and return if we reached our limit if(autocvar_g_balance_minelayer_limit) { - self.minelayer_mines = 0; - for(mine = world; (mine = find(mine, classname, "mine")); ) if(mine.owner == self) - self.minelayer_mines += 1; - - if(self.minelayer_mines >= autocvar_g_balance_minelayer_limit) + + if(W_Mine_Count(self) >= autocvar_g_balance_minelayer_limit) { // the refire delay keeps this message from being spammed sprint(self, strcat("You cannot place more than ^2", ftos(autocvar_g_balance_minelayer_limit), " ^7mines at a time\n") ); @@ -214,8 +237,7 @@ void W_Mine_Attack (void) } } - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_minelayer_ammo; + W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_minelayer_ammo, autocvar_g_balance_minelayer_reload_ammo); W_SetupShot_ProjectileSize (self, '-4 -4 -4', '4 4 4', FALSE, 5, "weapons/mine_fire.wav", CHAN_WEAPON, autocvar_g_balance_minelayer_damage); pointparticles(particleeffectnum("rocketlauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); @@ -247,7 +269,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,14 +284,38 @@ void W_Mine_Attack (void) // common properties other = mine; MUTATOR_CALLHOOK(EditProjectile); + + self.minelayer_mines = W_Mine_Count(self); } void spawnfunc_weapon_minelayer (void); // defined in t_items.qc -float w_minelayer(float req) +float W_PlacedMines(float detonate) { entity mine; float minfound; + + for(mine = world; (mine = find(mine, classname, "mine")); ) if(mine.owner == self) + { + if(detonate) + { + if(!mine.minelayer_detonate) + { + mine.minelayer_detonate = TRUE; + minfound = 1; + } + } + else + minfound = 1; + } + return minfound; +} + +float w_minelayer(float req) +{ + entity mine; + float ammo_amount; + if (req == WR_AIM) { // aim and decide to fire if appropriate @@ -367,7 +413,13 @@ float w_minelayer(float req) } else if (req == WR_THINK) { - if (self.BUTTON_ATCK) + if(autocvar_g_balance_minelayer_reload_ammo && self.clip_load < autocvar_g_balance_minelayer_ammo) // forced reload + { + // not if we're holding the minelayer without enough ammo, but can detonate existing mines + if not (W_PlacedMines(FALSE) && self.ammo_rockets < autocvar_g_balance_minelayer_ammo) + weapon_action(self.weapon, WR_RELOAD); + } + else if (self.BUTTON_ATCK) { if(weapon_prepareattack(0, autocvar_g_balance_minelayer_refire)) { @@ -378,16 +430,7 @@ float w_minelayer(float req) if (self.BUTTON_ATCK2) { - minfound = 0; - for(mine = world; (mine = find(mine, classname, "mine")); ) if(mine.owner == self) - { - if(!mine.minelayer_detonate) - { - mine.minelayer_detonate = TRUE; - minfound = 1; - } - } - if(minfound) + if(W_PlacedMines(TRUE)) sound (self, CHAN_WEAPON2, "weapons/mine_det.wav", VOL_BASE, ATTN_NORM); } } @@ -402,20 +445,34 @@ float w_minelayer(float req) precache_sound ("weapons/mine_fire.wav"); precache_sound ("weapons/mine_stick.wav"); precache_sound ("weapons/mine_trigger.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else } else if (req == WR_SETUP) { weapon_setup(WEP_MINE_LAYER); + self.current_ammo = ammo_rockets; } else if (req == WR_CHECKAMMO1) { // don't switch while placing a mine - if ((ATTACK_FINISHED(self) <= time || self.weapon != WEP_MINE_LAYER) - && self.ammo_rockets < autocvar_g_balance_minelayer_ammo) - return FALSE; + if (ATTACK_FINISHED(self) <= time || self.weapon != WEP_MINE_LAYER) + { + ammo_amount = self.ammo_rockets >= autocvar_g_balance_minelayer_ammo; + ammo_amount += self.weapon_load[WEP_MINE_LAYER] >= autocvar_g_balance_minelayer_ammo; + return ammo_amount; + } } else if (req == WR_CHECKAMMO2) - return FALSE; + { + if (W_PlacedMines(FALSE)) + return TRUE; + else + return FALSE; + } + else if (req == WR_RELOAD) + { + W_Reload(autocvar_g_balance_minelayer_ammo, autocvar_g_balance_minelayer_reload_ammo, autocvar_g_balance_minelayer_reload_time, "weapons/reload.wav"); + } return TRUE; }; #endif diff --git a/qcsrc/server/w_minstanex.qc b/qcsrc/server/w_minstanex.qc index 89f209937..4481178de 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_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_HIGH, "minstanex", "minstanex", _("MinstaNex")) #else #ifdef SVQC .float minstanex_lasthit; @@ -80,13 +80,10 @@ void W_MinstaNex_Attack (void) if (trace_ent.solid == SOLID_BSP && !(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)) Damage_DamageInfo(trace_endpos, 10000, 0, 0, 800 * w_shotdir, WEP_MINSTANEX, self); - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - { - if (g_minstagib) - self.ammo_cells = self.ammo_cells - 1; - else - self.ammo_cells = self.ammo_cells - autocvar_g_balance_minstanex_ammo; - } + if (g_minstagib) + W_DecreaseAmmo(ammo_cells, 1, autocvar_g_balance_minstanex_reload_ammo); + else + W_DecreaseAmmo(ammo_cells, autocvar_g_balance_minstanex_ammo, autocvar_g_balance_minstanex_reload_ammo); } @@ -97,6 +94,7 @@ void minstagib_ammocheck (void) return; if (self.ammo_cells <= 0) + if not(self.items & IT_UNLIMITED_WEAPON_AMMO) { if (self.health == 5) { @@ -173,16 +171,30 @@ void spawnfunc_weapon_minstanex (void); // defined in t_items.qc float w_minstanex(float req) { + float ammo_amount; + float minstanex_ammo; + + // now multiple WR_s use this + if(g_minstagib) + minstanex_ammo = 1; + else + minstanex_ammo = autocvar_g_balance_minstanex_ammo; + if (req == WR_AIM) { - if(self.ammo_cells>0) + if(self.ammo_cells > 0) self.BUTTON_ATCK = bot_aim(1000000, 0, 1, FALSE); else self.BUTTON_ATCK2 = bot_aim(autocvar_g_balance_laser_primary_speed, 0, autocvar_g_balance_laser_primary_lifetime, FALSE); } else if (req == WR_THINK) { - if (self.BUTTON_ATCK) + // if the laser uses load, we also consider its ammo for reloading + if(autocvar_g_balance_minstanex_reload_ammo && autocvar_g_balance_minstanex_laser_ammo && self.clip_load < min(minstanex_ammo, autocvar_g_balance_minstanex_laser_ammo)) // forced reload + weapon_action(self.weapon, WR_RELOAD); + else if(autocvar_g_balance_minstanex_reload_ammo && self.clip_load < minstanex_ammo) // forced reload + weapon_action(self.weapon, WR_RELOAD); + else if (self.BUTTON_ATCK) { if (weapon_prepareattack(0, autocvar_g_balance_minstanex_refire)) { @@ -196,6 +208,10 @@ float w_minstanex(float req) { self.jump_interval = time + autocvar_g_balance_laser_primary_refire * W_WeaponRateFactor(); + // decrease ammo for the laser? + if(autocvar_g_balance_minstanex_laser_ammo) + W_DecreaseAmmo(ammo_cells, autocvar_g_balance_minstanex_laser_ammo, autocvar_g_balance_minstanex_reload_ammo); + // ugly minstagib hack to reuse the fire mode of the laser float w; w = self.weapon; @@ -215,26 +231,43 @@ float w_minstanex(float req) precache_sound ("weapons/nexwhoosh1.wav"); precache_sound ("weapons/nexwhoosh2.wav"); precache_sound ("weapons/nexwhoosh3.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else w_laser(WR_PRECACHE); } else if (req == WR_SETUP) { weapon_setup(WEP_MINSTANEX); + self.current_ammo = ammo_cells; self.minstanex_lasthit = 0; } else if (req == WR_CHECKAMMO1) { - if (g_minstagib) - return self.ammo_cells >= 1; - else - return self.ammo_cells >= autocvar_g_balance_minstanex_ammo; + ammo_amount = self.ammo_cells >= minstanex_ammo; + ammo_amount += self.weapon_load[WEP_MINSTANEX] >= minstanex_ammo; + return ammo_amount; } else if (req == WR_CHECKAMMO2) - return TRUE; + { + if(!autocvar_g_balance_minstanex_laser_ammo) + return TRUE; + ammo_amount = self.ammo_cells >= autocvar_g_balance_minstanex_laser_ammo; + ammo_amount += self.weapon_load[WEP_MINSTANEX] >= autocvar_g_balance_minstanex_laser_ammo; + return ammo_amount; + } else if (req == WR_RESETPLAYER) { self.minstanex_lasthit = 0; } + else if (req == WR_RELOAD) + { + float used_ammo; + if(autocvar_g_balance_minstanex_laser_ammo) + used_ammo = min(minstanex_ammo, autocvar_g_balance_minstanex_laser_ammo); + else + used_ammo = minstanex_ammo; + + W_Reload(used_ammo, autocvar_g_balance_minstanex_reload_ammo, autocvar_g_balance_minstanex_reload_time, "weapons/reload.wav"); + } return TRUE; }; #endif diff --git a/qcsrc/server/w_nex.qc b/qcsrc/server/w_nex.qc index 4bc813029..a0fce6a31 100644 --- a/qcsrc/server/w_nex.qc +++ b/qcsrc/server/w_nex.qc @@ -1,7 +1,8 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(NEX, w_nex, IT_CELLS, 7, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_HIGH, "nex", "nex", _("Nex")) +REGISTER_WEAPON(NEX, w_nex, IT_CELLS, 7, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_HIGH, "nex", "nex", _("Nex")) #else #ifdef SVQC + void SendCSQCNexBeamParticle(float charge) { vector v; v = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos); @@ -56,9 +57,9 @@ 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 + 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_limit) / (1 - 0.5 * autocvar_g_balance_nex_charge_limit), ATTN_NORM); + 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; @@ -74,8 +75,7 @@ void W_Nex_Attack (float issecondary) if (trace_ent.solid == SOLID_BSP && !(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)) Damage_DamageInfo(trace_endpos, mydmg, 0, 0, myforce * w_shotdir, WEP_NEX, self); - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_cells = self.ammo_cells - myammo; + W_DecreaseAmmo(ammo_cells, myammo, autocvar_g_balance_nex_reload_ammo); } void spawnfunc_weapon_nex (void); // defined in t_items.qc @@ -84,6 +84,7 @@ void spawnfunc_weapon_nex (void); // defined in t_items.qc float w_nex(float req) { float dt; + float ammo_amount; if (req == WR_AIM) { self.BUTTON_ATCK = bot_aim(1000000, 0, 1, FALSE); @@ -102,85 +103,104 @@ float w_nex(float req) self.pauseregen_finished = max(self.pauseregen_finished, time + autocvar_g_balance_nex_secondary_chargepool_pause_health_regen); } - if (self.BUTTON_ATCK) + if(autocvar_g_balance_nex_reload_ammo && self.clip_load < min(autocvar_g_balance_nex_primary_ammo, autocvar_g_balance_nex_secondary_ammo)) // forced reload + weapon_action(self.weapon, WR_RELOAD); + else { - if (weapon_prepareattack(0, autocvar_g_balance_nex_primary_refire)) + if (self.BUTTON_ATCK) { - W_Nex_Attack(0); - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_nex_primary_animtime, w_ready); + if (weapon_prepareattack(0, autocvar_g_balance_nex_primary_refire)) + { + W_Nex_Attack(0); + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_nex_primary_animtime, w_ready); + } } - } - if ((autocvar_g_balance_nex_secondary_charge && !autocvar_g_balance_nex_secondary) ? self.BUTTON_ZOOM : self.BUTTON_ATCK2) - { - if(autocvar_g_balance_nex_secondary_charge) + if ((autocvar_g_balance_nex_secondary_charge && !autocvar_g_balance_nex_secondary) ? self.BUTTON_ZOOM : self.BUTTON_ATCK2) { - self.nex_charge_rottime = time + autocvar_g_balance_nex_charge_rot_pause; - dt = frametime / W_TICSPERFRAME; - - if(self.nex_charge < 1) + if(autocvar_g_balance_nex_secondary_charge) { - if(autocvar_g_balance_nex_secondary_chargepool) + self.nex_charge_rottime = time + autocvar_g_balance_nex_charge_rot_pause; + dt = frametime / W_TICSPERFRAME; + + if(self.nex_charge < 1) { - if(autocvar_g_balance_nex_secondary_ammo) + if(autocvar_g_balance_nex_secondary_chargepool) { - // always deplete if secondary is held - self.nex_chargepool_ammo = max(0, self.nex_chargepool_ammo - autocvar_g_balance_nex_secondary_ammo * dt); + if(autocvar_g_balance_nex_secondary_ammo) + { + // always deplete if secondary is held + self.nex_chargepool_ammo = max(0, self.nex_chargepool_ammo - autocvar_g_balance_nex_secondary_ammo * dt); - dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate); - self.nex_chargepool_pauseregen_finished = time + autocvar_g_balance_nex_secondary_chargepool_pause_regen; - dt = min(dt, self.nex_chargepool_ammo); - dt = max(0, dt); + dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate); + self.nex_chargepool_pauseregen_finished = time + autocvar_g_balance_nex_secondary_chargepool_pause_regen; + dt = min(dt, self.nex_chargepool_ammo); + dt = max(0, dt); - self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate; + self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate; + } } - } - else if(autocvar_g_balance_nex_secondary_ammo) - { - if(self.BUTTON_ATCK2) // only eat ammo when the button is pressed + else if(autocvar_g_balance_nex_secondary_ammo) { - dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate); - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) + if(self.BUTTON_ATCK2) // only eat ammo when the button is pressed { - dt = min(dt, (self.ammo_cells - autocvar_g_balance_nex_primary_ammo) / autocvar_g_balance_nex_secondary_ammo); - dt = max(0, dt); - if(dt > 0) + dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate); + if not(self.items & IT_UNLIMITED_WEAPON_AMMO) { - self.ammo_cells = max(autocvar_g_balance_nex_secondary_ammo, self.ammo_cells - autocvar_g_balance_nex_secondary_ammo * dt); + // if this weapon is reloadable, decrease its load. Else decrease the player's ammo + if(autocvar_g_balance_nex_reload_ammo) + { + dt = min(dt, (self.clip_load - autocvar_g_balance_nex_primary_ammo) / autocvar_g_balance_nex_secondary_ammo); + dt = max(0, dt); + if(dt > 0) + { + self.clip_load = max(autocvar_g_balance_nex_secondary_ammo, self.clip_load - autocvar_g_balance_nex_secondary_ammo * dt); + } + self.weapon_load[WEP_NEX] = self.clip_load; + } + else + { + dt = min(dt, (self.ammo_cells - autocvar_g_balance_nex_primary_ammo) / autocvar_g_balance_nex_secondary_ammo); + dt = max(0, dt); + if(dt > 0) + { + self.ammo_cells = max(autocvar_g_balance_nex_secondary_ammo, self.ammo_cells - autocvar_g_balance_nex_secondary_ammo * dt); + } + } } + self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate; } - self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate; } - } - else - { - dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate); - self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate; + else + { + dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate); + self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate; + } } } - } - else if(autocvar_g_balance_nex_secondary) - { - if (weapon_prepareattack(0, autocvar_g_balance_nex_secondary_refire)) + else if(autocvar_g_balance_nex_secondary) { - W_Nex_Attack(1); - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_nex_secondary_animtime, w_ready); + if (weapon_prepareattack(0, autocvar_g_balance_nex_secondary_refire)) + { + W_Nex_Attack(1); + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_nex_secondary_animtime, w_ready); + } } } } 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); + 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_limit) + 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_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); + 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); } } } @@ -195,13 +215,31 @@ float w_nex(float req) precache_sound ("weapons/nexwhoosh1.wav"); precache_sound ("weapons/nexwhoosh2.wav"); precache_sound ("weapons/nexwhoosh3.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else } else if (req == WR_SETUP) + { weapon_setup(WEP_NEX); + self.current_ammo = ammo_cells; + } else if (req == WR_CHECKAMMO1) - return self.ammo_cells >= autocvar_g_balance_nex_primary_ammo; + { + ammo_amount = self.ammo_cells >= autocvar_g_balance_nex_primary_ammo; + ammo_amount += (autocvar_g_balance_nex_reload_ammo && self.weapon_load[WEP_NEX] >= autocvar_g_balance_nex_primary_ammo); + return ammo_amount; + } else if (req == WR_CHECKAMMO2) - return self.ammo_cells >= autocvar_g_balance_nex_primary_ammo; // don't allow charging if we don't have enough ammo + { + // don't allow charging if we don't have enough ammo + ammo_amount = self.ammo_cells >= autocvar_g_balance_nex_secondary_ammo; + ammo_amount += self.weapon_load[WEP_NEX] >= autocvar_g_balance_nex_secondary_ammo; + return ammo_amount; + } + else if (req == WR_RELOAD) + { + W_Reload(min(autocvar_g_balance_nex_primary_ammo, autocvar_g_balance_nex_secondary_ammo), autocvar_g_balance_nex_reload_ammo, autocvar_g_balance_nex_reload_time, "weapons/reload.wav"); + } + return TRUE; }; #endif diff --git a/qcsrc/server/w_porto.qc b/qcsrc/server/w_porto.qc index 4e9a2cd70..d6e92a537 100644 --- a/qcsrc/server/w_porto.qc +++ b/qcsrc/server/w_porto.qc @@ -270,7 +270,10 @@ float w_porto(float req) precache_sound ("porto/unsupported.wav"); } else if (req == WR_SETUP) + { weapon_setup(WEP_PORTO); + self.current_ammo = ammo_none; + } else if (req == WR_RESETPLAYER) { self.porto_current = world; diff --git a/qcsrc/server/w_rocketlauncher.qc b/qcsrc/server/w_rocketlauncher.qc index 21874b790..dfd2c3f19 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_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "rl", "rocketlauncher", _("Rocket Launcher")) #else #ifdef SVQC .float rl_release; @@ -248,8 +248,7 @@ void W_Rocket_Attack (void) local entity missile; local entity flash; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_rocketlauncher_ammo; + W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_rocketlauncher_ammo, autocvar_g_balance_rocketlauncher_reload_ammo); W_SetupShot_ProjectileSize (self, '-3 -3 -3', '3 3 3', FALSE, 5, "weapons/rocket_fire.wav", CHAN_WEAPON, autocvar_g_balance_rocketlauncher_damage); pointparticles(particleeffectnum("rocketlauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); @@ -305,6 +304,8 @@ float w_rlauncher(float req) { entity rock; float rockfound; + float ammo_amount; + if (req == WR_AIM) { // aim and decide to fire if appropriate @@ -402,32 +403,37 @@ float w_rlauncher(float req) } else if (req == WR_THINK) { - if (self.BUTTON_ATCK) + if(autocvar_g_balance_rocketlauncher_reload_ammo && self.clip_load < autocvar_g_balance_rocketlauncher_ammo) // forced reload + weapon_action(self.weapon, WR_RELOAD); + else { - if(self.rl_release || autocvar_g_balance_rocketlauncher_guidestop) - if(weapon_prepareattack(0, autocvar_g_balance_rocketlauncher_refire)) + if (self.BUTTON_ATCK) { - W_Rocket_Attack(); - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_rocketlauncher_animtime, w_ready); - self.rl_release = 0; + if(self.rl_release || autocvar_g_balance_rocketlauncher_guidestop) + if(weapon_prepareattack(0, autocvar_g_balance_rocketlauncher_refire)) + { + W_Rocket_Attack(); + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_rocketlauncher_animtime, w_ready); + self.rl_release = 0; + } } - } - else - self.rl_release = 1; + else + self.rl_release = 1; - if (self.BUTTON_ATCK2) - { - rockfound = 0; - for(rock = world; (rock = find(rock, classname, "rocket")); ) if(rock.owner == self) + if (self.BUTTON_ATCK2) { - if(!rock.rl_detonate_later) + rockfound = 0; + for(rock = world; (rock = find(rock, classname, "rocket")); ) if(rock.owner == self) { - rock.rl_detonate_later = TRUE; - rockfound = 1; + if(!rock.rl_detonate_later) + { + rock.rl_detonate_later = TRUE; + rockfound = 1; + } } + if(rockfound) + sound (self, CHAN_WEAPON2, "weapons/rocket_det.wav", VOL_BASE, ATTN_NORM); } - if(rockfound) - sound (self, CHAN_WEAPON2, "weapons/rocket_det.wav", VOL_BASE, ATTN_NORM); } } else if (req == WR_PRECACHE) @@ -439,18 +445,28 @@ float w_rlauncher(float req) precache_sound ("weapons/rocket_det.wav"); precache_sound ("weapons/rocket_fire.wav"); precache_sound ("weapons/rocket_mode.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else } else if (req == WR_SETUP) { weapon_setup(WEP_ROCKET_LAUNCHER); + self.current_ammo = ammo_rockets; self.rl_release = 1; } else if (req == WR_CHECKAMMO1) { // don't switch while guiding a missile - if ((ATTACK_FINISHED(self) <= time || self.weapon != WEP_ROCKET_LAUNCHER) - && self.ammo_rockets < autocvar_g_balance_rocketlauncher_ammo) - return FALSE; + if (ATTACK_FINISHED(self) <= time || self.weapon != WEP_ROCKET_LAUNCHER) + { + if(autocvar_g_balance_rocketlauncher_reload_ammo) + { + if(self.ammo_rockets < autocvar_g_balance_rocketlauncher_ammo && self.weapon_load[WEP_ROCKET_LAUNCHER] < autocvar_g_balance_rocketlauncher_ammo) + ammo_amount = TRUE; + } + else if(self.ammo_rockets < autocvar_g_balance_rocketlauncher_ammo) + ammo_amount = TRUE; + return !ammo_amount; + } } else if (req == WR_CHECKAMMO2) return FALSE; @@ -458,6 +474,10 @@ float w_rlauncher(float req) { self.rl_release = 0; } + else if (req == WR_RELOAD) + { + W_Reload(autocvar_g_balance_rocketlauncher_ammo, autocvar_g_balance_rocketlauncher_reload_ammo, autocvar_g_balance_rocketlauncher_reload_time, "weapons/reload.wav"); + } return TRUE; }; #endif diff --git a/qcsrc/server/w_seeker.qc b/qcsrc/server/w_seeker.qc index 81d55a226..e4b14adf7 100644 --- a/qcsrc/server/w_seeker.qc +++ b/qcsrc/server/w_seeker.qc @@ -1,10 +1,15 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(SEEKER, w_seeker, IT_ROCKETS, 8, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "seeker", "seeker", _("T.A.G. Seeker")) +REGISTER_WEAPON(SEEKER, w_seeker, IT_ROCKETS, 8, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "seeker", "seeker", _("T.A.G. Seeker")) #else #ifdef SVQC //.float proxytime; = autoswitch //.float tl; = wait +.entity tag_target, wps_tag_tracker; +.float tag_time; +// ============================ +// Begin: Missile functions, these are general functions to be manipulated by other code +// ============================ void Seeker_Missile_Explode () { self.event_damage = SUB_Null; @@ -154,12 +159,11 @@ void Seeker_Missile_Animate() } */ -void Seeker_Fire_Missile(vector f_diff) +void Seeker_Fire_Missile(vector f_diff, entity m_target) { local entity missile; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_seeker_missile_ammo; + W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_seeker_missile_ammo, autocvar_g_balance_seeker_reload_ammo); makevectors(self.v_angle); W_SetupShot_ProjectileSize (self, '-2 -2 -2', '2 2 2', FALSE, 2, "weapons/seeker_fire.wav", CHAN_WEAPON, 0); @@ -179,14 +183,18 @@ void Seeker_Fire_Missile(vector f_diff) missile.event_damage = Seeker_Missile_Damage; missile.nextthink = time;// + 0.2;// + cvar("g_balance_seeker_missile_activate_delay"); missile.cnt = time + autocvar_g_balance_seeker_missile_lifetime; - missile.enemy = self.enemy; + missile.enemy = m_target; missile.solid = SOLID_BBOX; missile.scale = 2; missile.takedamage = DAMAGE_YES; missile.health = autocvar_g_balance_seeker_missile_health; missile.damageforcescale = autocvar_g_balance_seeker_missile_damageforcescale; - missile.projectiledeathtype = WEP_SEEKER; //missile.think = Seeker_Missile_Animate; // csqc projectiles. + + if (missile.enemy != world) + missile.projectiledeathtype = WEP_SEEKER | HITTYPE_SECONDARY; + else + missile.projectiledeathtype = WEP_SEEKER; setorigin (missile, w_shotorg); @@ -202,7 +210,119 @@ void Seeker_Fire_Missile(vector f_diff) other = missile; MUTATOR_CALLHOOK(EditProjectile); } -void Seeker_Vollycontroler_Think() +// ============================ +// Begin: FLAC, close range attack meant for defeating rockets which are coming at you. +// ============================ +void Seeker_Flac_Explode () +{ + self.event_damage = SUB_Null; + + RadiusDamage (self, self.owner, autocvar_g_balance_seeker_flac_damage, autocvar_g_balance_seeker_flac_edgedamage, autocvar_g_balance_seeker_flac_radius, world, autocvar_g_balance_seeker_flac_force, self.projectiledeathtype, other); + + remove (self); +} + +void Seeker_Flac_Touch() +{ + PROJECTILE_TOUCH; + + Seeker_Flac_Explode(); +} + +void Seeker_Fire_Flac() +{ + local entity missile; + vector f_diff; + float c; + + W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_seeker_flac_ammo, autocvar_g_balance_seeker_reload_ammo); + + c = mod(self.bulletcounter, 4); + switch(c) + { + case 0: + f_diff = '-1.25 -3.75 0'; + break; + case 1: + f_diff = '+1.25 -3.75 0'; + break; + case 2: + f_diff = '-1.25 +3.75 0'; + break; + case 3: + default: + f_diff = '+1.25 +3.75 0'; + break; + } + W_SetupShot_ProjectileSize (self, '-2 -2 -2', '2 2 2', FALSE, 2, "weapons/flac_fire.wav", CHAN_WEAPON, autocvar_g_balance_seeker_flac_damage); + w_shotorg += f_diff; + + pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); + + missile = spawn (); + missile.owner = missile.realowner = self; + missile.classname = "missile"; + missile.bot_dodge = TRUE; + missile.bot_dodgerating = autocvar_g_balance_seeker_flac_damage; + missile.touch = Seeker_Flac_Explode; + missile.use = Seeker_Flac_Explode; + missile.think = adaptor_think2use_hittype_splash; + missile.nextthink = time + autocvar_g_balance_seeker_flac_lifetime + autocvar_g_balance_seeker_flac_lifetime_rand; + missile.solid = SOLID_BBOX; + missile.movetype = MOVETYPE_FLY; + missile.projectiledeathtype = WEP_SEEKER; + missile.projectiledeathtype = WEP_SEEKER | HITTYPE_SECONDARY; + missile.flags = FL_PROJECTILE; + + // csqc projectiles + //missile.angles = vectoangles (missile.velocity); + //missile.scale = 0.4; // BUG: the model is too big + + setorigin (missile, w_shotorg); + setsize (missile, '-2 -2 -2', '2 2 2'); + + W_SETUPPROJECTILEVELOCITY_UP(missile, g_balance_seeker_flac); + CSQCProjectile(missile, TRUE, PROJECTILE_FLAC, TRUE); + + other = missile; MUTATOR_CALLHOOK(EditProjectile); +} + +// ============================ +// Begin: Tag and rocket controllers +// ============================ +entity Seeker_Tagged_Info(entity isowner, entity istarget) +{ + entity tag; + for(tag = world; (tag = find(tag, classname, "tag_tracker")); ) + if ((tag.owner == isowner) && (tag.tag_target == istarget)) + return tag; + + return world; +} + +void Seeker_Attack() +{ + entity tracker, closest_target; + + for(tracker = world; (tracker = find(tracker, classname, "tag_tracker")); ) if (tracker.owner == self) + { + if (closest_target) + { + if (vlen(self.origin - tracker.tag_target.origin) < vlen(self.origin - closest_target.origin)) + closest_target = tracker.tag_target; + } + else + closest_target = tracker.tag_target; + } + + traceline(self.origin + self.view_ofs, closest_target.origin, MOVE_NOMONSTERS, self); + if ((!closest_target) || ((trace_fraction < 1) && (trace_ent != closest_target))) + closest_target = world; + + Seeker_Fire_Missile('0 0 0', closest_target); +} + +void Seeker_Vollycontroller_Think() // TODO: Merge this with Seeker_Attack { float c; entity oldself,oldenemy; @@ -215,28 +335,28 @@ void Seeker_Vollycontroler_Think() } self.nextthink = time + autocvar_g_balance_seeker_missile_delay; - + oldself = self; self = self.owner; - + oldenemy = self.enemy; self.enemy = oldself.enemy; - - c = mod(oldself.cnt, 4); + + c = mod(self.cnt, 4); switch(c) { case 0: - Seeker_Fire_Missile('-1.25 -3.75 0'); + Seeker_Fire_Missile('-1.25 -3.75 0', self.enemy); break; case 1: - Seeker_Fire_Missile('+1.25 -3.75 0'); + Seeker_Fire_Missile('+1.25 -3.75 0', self.enemy); break; case 2: - Seeker_Fire_Missile('-1.25 +3.75 0'); + Seeker_Fire_Missile('-1.25 +3.75 0', self.enemy); break; case 3: default: - Seeker_Fire_Missile('+1.25 +3.75 0'); + Seeker_Fire_Missile('+1.25 +3.75 0', self.enemy); break; } @@ -244,6 +364,27 @@ void Seeker_Vollycontroler_Think() self = oldself; } +void Seeker_Tracker_Think() +{ + // commit suicide if: You die OR target dies OR you switch away from the seeker OR commit suicide if lifetime is up + if ((self.owner.deadflag != DEAD_NO) || (self.tag_target.deadflag != DEAD_NO) || (self.owner.switchweapon != WEP_SEEKER) + || (time > self.tag_time + autocvar_g_balance_seeker_tag_tracker_lifetime)) + { + if (self) + { + WaypointSprite_Kill(self.tag_target.wps_tag_tracker); + remove(self); + } + return; + } + + // Update the think method information + self.nextthink = time; +} + +// ============================ +// Begin: Tag projectile +// ============================ void Seeker_Tag_Explode () { //if(other==self.owner) @@ -262,7 +403,6 @@ void Seeker_Tag_Damage (entity inflictor, entity attacker, float damage, float d Seeker_Tag_Explode(); } - void Seeker_Tag_Touch() { vector dir; @@ -278,13 +418,45 @@ void Seeker_Tag_Touch() Damage_DamageInfo(self.origin, 0, 0, 0, self.velocity, WEP_SEEKER | HITTYPE_HEADSHOT, self); if (other.takedamage == DAMAGE_AIM && other.deadflag == DEAD_NO) - { - e = spawn(); - e.cnt = autocvar_g_balance_seeker_missile_count; - e.owner = self.owner; - e.enemy = other; - e.think = Seeker_Vollycontroler_Think; - e.nextthink = time; + { + // check to see if this person is already tagged by me + entity tag = Seeker_Tagged_Info(self.owner, other); + + if (tag != world) + { + if (other.wps_tag_tracker && (autocvar_g_balance_seeker_type == 1)) // don't attach another waypointsprite without killing the old one first + WaypointSprite_Kill(other.wps_tag_tracker); + + tag.tag_time = time; + } + else + { + //sprint(self.owner, strcat("You just tagged ^2", other.netname, "^7 with a tracking device!\n")); + e = spawn(); + e.cnt = autocvar_g_balance_seeker_missile_count; + e.classname = "tag_tracker"; + e.owner = self.owner; + + if (autocvar_g_balance_seeker_type == 1) + { + e.tag_target = other; + e.tag_time = time; + e.think = Seeker_Tracker_Think; + } + else + { + e.enemy = other; + e.think = Seeker_Vollycontroller_Think; + } + + e.nextthink = time; + } + + if (autocvar_g_balance_seeker_type == 1) + { + WaypointSprite_Spawn("tagged-target", autocvar_g_balance_seeker_tag_tracker_lifetime, 0, other, '0 0 64', self.owner, 0, other, wps_tag_tracker, TRUE); + WaypointSprite_UpdateRule(other.wps_tag_tracker, 0, SPRITERULE_DEFAULT); + } } remove(self); @@ -294,8 +466,7 @@ void Seeker_Tag_Touch() void Seeker_Fire_Tag() { local entity missile; - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_seeker_tag_ammo; + W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_seeker_tag_ammo, autocvar_g_balance_seeker_reload_ammo); W_SetupShot_ProjectileSize (self, '-2 -2 -2', '2 2 2', FALSE, 2, "weapons/tag_fire.wav", CHAN_WEAPON, autocvar_g_balance_seeker_missile_damage * autocvar_g_balance_seeker_missile_count); @@ -330,82 +501,9 @@ void Seeker_Fire_Tag() other = missile; MUTATOR_CALLHOOK(EditProjectile); } - -void Seeker_Flac_Explode () -{ - self.event_damage = SUB_Null; - - RadiusDamage (self, self.owner, autocvar_g_balance_seeker_flac_damage, autocvar_g_balance_seeker_flac_edgedamage, autocvar_g_balance_seeker_flac_radius, world, autocvar_g_balance_seeker_flac_force, self.projectiledeathtype, other); - - remove (self); -} - -void Seeker_Flac_Touch() -{ - PROJECTILE_TOUCH; - - Seeker_Flac_Explode(); -} - -void Seeker_Fire_Flac() -{ - local entity missile; - vector f_diff; - float c; - - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_rockets = self.ammo_rockets - autocvar_g_balance_seeker_flac_ammo; - - c = mod(self.bulletcounter, 4); - switch(c) - { - case 0: - f_diff = '-1.25 -3.75 0'; - break; - case 1: - f_diff = '+1.25 -3.75 0'; - break; - case 2: - f_diff = '-1.25 +3.75 0'; - break; - case 3: - default: - f_diff = '+1.25 +3.75 0'; - break; - } - W_SetupShot_ProjectileSize (self, '-2 -2 -2', '2 2 2', FALSE, 2, "weapons/flac_fire.wav", CHAN_WEAPON, autocvar_g_balance_seeker_flac_damage); - w_shotorg += f_diff; - - pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); - - missile = spawn (); - missile.owner = missile.realowner = self; - missile.classname = "missile"; - missile.bot_dodge = TRUE; - missile.bot_dodgerating = autocvar_g_balance_seeker_flac_damage; - missile.touch = Seeker_Flac_Explode; - missile.use = Seeker_Flac_Explode; - missile.think = adaptor_think2use_hittype_splash; - missile.nextthink = time + autocvar_g_balance_seeker_flac_lifetime + autocvar_g_balance_seeker_flac_lifetime_rand; - missile.solid = SOLID_BBOX; - missile.movetype = MOVETYPE_FLY; - missile.projectiledeathtype = WEP_SEEKER; - missile.projectiledeathtype = WEP_SEEKER | HITTYPE_SECONDARY; - missile.flags = FL_PROJECTILE; - - // csqc projectiles - //missile.angles = vectoangles (missile.velocity); - //missile.scale = 0.4; // BUG: the model is too big - - setorigin (missile, w_shotorg); - setsize (missile, '-2 -2 -2', '2 2 2'); - - W_SETUPPROJECTILEVELOCITY_UP(missile, g_balance_seeker_flac); - CSQCProjectile(missile, TRUE, PROJECTILE_FLAC, TRUE); - - other = missile; MUTATOR_CALLHOOK(EditProjectile); -} - +// ============================ +// Begin: Genereal weapon functions +// ============================ void spawnfunc_weapon_seeker (void) { weapon_defaultspawnfunc(WEP_SEEKER); @@ -413,25 +511,62 @@ void spawnfunc_weapon_seeker (void) float w_seeker(float req) { - if (req == WR_AIM) - self.BUTTON_ATCK = bot_aim(autocvar_g_balance_seeker_tag_speed, 0, 20, FALSE); + float ammo_amount; + if (req == WR_AIM) + { + if (autocvar_g_balance_seeker_type == 1) + if (Seeker_Tagged_Info(self, self.enemy) != world) + self.BUTTON_ATCK = bot_aim(autocvar_g_balance_seeker_missile_speed_max, 0, autocvar_g_balance_seeker_missile_lifetime, FALSE); + else + self.BUTTON_ATCK2 = bot_aim(autocvar_g_balance_seeker_tag_speed, 0, autocvar_g_balance_seeker_tag_lifetime, FALSE); + else + self.BUTTON_ATCK = bot_aim(autocvar_g_balance_seeker_tag_speed, 0, autocvar_g_balance_seeker_tag_lifetime, FALSE); + } else if (req == WR_THINK) { - if (self.BUTTON_ATCK) - if (weapon_prepareattack(0, autocvar_g_balance_seeker_tag_refire)) + if(autocvar_g_balance_seeker_reload_ammo && self.clip_load < min(autocvar_g_balance_seeker_missile_ammo, autocvar_g_balance_seeker_tag_ammo)) // forced reload + weapon_action(self.weapon, WR_RELOAD); + + else if (self.BUTTON_ATCK) + { + if (autocvar_g_balance_seeker_type == 1) { - Seeker_Fire_Tag(); - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_seeker_tag_animtime, w_ready); + if (weapon_prepareattack(0, autocvar_g_balance_seeker_missile_refire)) + { + Seeker_Attack(); + weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_seeker_missile_animtime, w_ready); + } } - - if (self.BUTTON_ATCK2) - if (weapon_prepareattack(1, autocvar_g_balance_seeker_flac_refire)) + else { - Seeker_Fire_Flac(); - weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_seeker_flac_animtime, w_ready); + if (weapon_prepareattack(0, autocvar_g_balance_seeker_tag_refire)) + { + Seeker_Fire_Tag(); + weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_seeker_tag_animtime, w_ready); + } } + } + else if (self.BUTTON_ATCK2) + { + if (autocvar_g_balance_seeker_type == 1) + { + if (weapon_prepareattack(0, autocvar_g_balance_seeker_tag_refire)) + { + Seeker_Fire_Tag(); + weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_seeker_tag_animtime, w_ready); + } + } + else + { + if (weapon_prepareattack(0, autocvar_g_balance_seeker_flac_refire)) + { + Seeker_Fire_Flac(); + weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_seeker_flac_animtime, w_ready); + } + } + } } else if (req == WR_PRECACHE) { @@ -441,13 +576,29 @@ float w_seeker(float req) precache_sound ("weapons/tag_fire.wav"); precache_sound ("weapons/flac_fire.wav"); precache_sound ("weapons/seeker_fire.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else } else if (req == WR_SETUP) + { weapon_setup(WEP_SEEKER); + self.current_ammo = ammo_rockets; + } else if (req == WR_CHECKAMMO1) - return self.ammo_rockets >= autocvar_g_balance_seeker_tag_ammo + autocvar_g_balance_seeker_missile_ammo; + { + ammo_amount = self.ammo_rockets >= autocvar_g_balance_seeker_missile_ammo; + ammo_amount += self.weapon_load[WEP_SEEKER] >= autocvar_g_balance_seeker_missile_ammo; + return ammo_amount; + } else if (req == WR_CHECKAMMO2) - return self.ammo_rockets >= autocvar_g_balance_seeker_flac_ammo; + { + ammo_amount = self.ammo_rockets >= autocvar_g_balance_seeker_tag_ammo; + ammo_amount += self.weapon_load[WEP_SEEKER] >= autocvar_g_balance_seeker_tag_ammo; + return ammo_amount; + } + else if (req == WR_RELOAD) + { + W_Reload(min(autocvar_g_balance_seeker_missile_ammo, autocvar_g_balance_seeker_tag_ammo), autocvar_g_balance_seeker_reload_ammo, autocvar_g_balance_seeker_reload_time, "weapons/reload.wav"); + } return TRUE; }; #endif @@ -458,59 +609,40 @@ float w_seeker(float req) { vector org2; org2 = w_org + w_backoff * 6; - if(w_deathtype & HITTYPE_SECONDARY) + if(w_deathtype & HITTYPE_BOUNCE) { - pointparticles(particleeffectnum("flac_explode"), org2, '0 0 0', 1); + pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1); if(!w_issilent) { if (w_random<0.15) - sound(self, CHAN_PROJECTILE, "weapons/flacexp1.wav", 1, ATTN_NORM); + sound(self, CHAN_PROJECTILE, "weapons/tagexp1.wav", 1, ATTN_NORM); else if (w_random<0.7) - sound(self, CHAN_PROJECTILE, "weapons/flacexp2.wav", 1, ATTN_NORM); + sound(self, CHAN_PROJECTILE, "weapons/tagexp2.wav", 1, ATTN_NORM); else - sound(self, CHAN_PROJECTILE, "weapons/flacexp3.wav", 1, ATTN_NORM); + sound(self, CHAN_PROJECTILE, "weapons/tagexp3.wav", 1, ATTN_NORM); } } + else if(w_deathtype & HITTYPE_HEADSHOT) + { + if(!w_issilent) + sound(self, CHAN_PROJECTILE, "weapons/tag_impact.wav", 1, ATTN_NORM); + } else { - if(w_deathtype & HITTYPE_BOUNCE) - { - pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1); - if(!w_issilent) - { - if (w_random<0.15) - sound(self, CHAN_PROJECTILE, "weapons/tagexp1.wav", 1, ATTN_NORM); - else if (w_random<0.7) - sound(self, CHAN_PROJECTILE, "weapons/tagexp2.wav", 1, ATTN_NORM); - else - sound(self, CHAN_PROJECTILE, "weapons/tagexp3.wav", 1, ATTN_NORM); - } - } - else if(w_deathtype & HITTYPE_HEADSHOT) - { - if(!w_issilent) - sound(self, CHAN_PROJECTILE, "weapons/tag_impact.wav", 1, ATTN_NORM); - } - else + pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1); + if(!w_issilent) { - pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1); - if(!w_issilent) - { - if (w_random<0.15) - sound(self, CHAN_PROJECTILE, "weapons/seekerexp1.wav", 1, ATTN_NORM); - else if (w_random<0.7) - sound(self, CHAN_PROJECTILE, "weapons/seekerexp2.wav", 1, ATTN_NORM); - else - sound(self, CHAN_PROJECTILE, "weapons/seekerexp3.wav", 1, ATTN_NORM); - } + if (w_random<0.15) + sound(self, CHAN_PROJECTILE, "weapons/seekerexp1.wav", 1, ATTN_NORM); + else if (w_random<0.7) + sound(self, CHAN_PROJECTILE, "weapons/seekerexp2.wav", 1, ATTN_NORM); + else + sound(self, CHAN_PROJECTILE, "weapons/seekerexp3.wav", 1, ATTN_NORM); } } } else if(req == WR_PRECACHE) { - precache_sound("weapons/flacexp1.wav"); - precache_sound("weapons/flacexp2.wav"); - precache_sound("weapons/flacexp3.wav"); precache_sound("weapons/seekerexp1.wav"); precache_sound("weapons/seekerexp2.wav"); precache_sound("weapons/seekerexp3.wav"); @@ -524,9 +656,9 @@ float w_seeker(float req) else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) - w_deathtypestring = _("%s ran into %s's flac"); - else w_deathtypestring = _("%s was tagged by %s"); + else + w_deathtypestring = _("%s was pummeled by %s"); } return TRUE; } diff --git a/qcsrc/server/w_shotgun.qc b/qcsrc/server/w_shotgun.qc index 6d0d094eb..38ae17a24 100644 --- a/qcsrc/server/w_shotgun.qc +++ b/qcsrc/server/w_shotgun.qc @@ -1,7 +1,8 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(SHOTGUN, w_shotgun, IT_SHELLS, 2, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_LOW, "shotgun", "shotgun", _("Shotgun")) +REGISTER_WEAPON(SHOTGUN, w_shotgun, IT_SHELLS, 2, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_LOW, "shotgun", "shotgun", _("Shotgun")) #else #ifdef SVQC + void W_Shotgun_Attack (void) { float sc; @@ -22,12 +23,12 @@ void W_Shotgun_Attack (void) bulletspeed = autocvar_g_balance_shotgun_primary_speed; bulletconstant = autocvar_g_balance_shotgun_primary_bulletconstant; + W_DecreaseAmmo(ammo_shells, ammoamount, autocvar_g_balance_shotgun_reload_ammo); + W_SetupShot (self, autocvar_g_antilag_bullets && bulletspeed >= autocvar_g_antilag_bullets, 5, "weapons/shotgun_fire.wav", CHAN_WEAPON, d * bullets); for (sc = 0;sc < bullets;sc = sc + 1) fireBallisticBullet(w_shotorg, w_shotdir, spread, bulletspeed, 5, d, 0, f, WEP_SHOTGUN, 0, 1, bulletconstant); endFireBallisticBullet(); - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_shells = self.ammo_shells - ammoamount; pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 1000, autocvar_g_balance_shotgun_primary_ammo); @@ -43,7 +44,6 @@ void W_Shotgun_Attack (void) flash.nextthink = time + 0.06; flash.effects = EF_ADDITIVE | EF_FULLBRIGHT | EF_LOWPRECISION; W_AttachToShotorg(flash, '5 0 0'); - } void shotgun_meleethink (void) @@ -102,6 +102,7 @@ void spawnfunc_weapon_shotgun(); // defined in t_items.qc float w_shotgun(float req) { + float ammo_amount; if (req == WR_AIM) if(vlen(self.origin-self.enemy.origin) <= autocvar_g_balance_shotgun_secondary_melee_range) self.BUTTON_ATCK2 = bot_aim(1000000, 0, 0.001, FALSE); @@ -109,18 +110,28 @@ float w_shotgun(float req) self.BUTTON_ATCK = bot_aim(1000000, 0, 0.001, FALSE); else if (req == WR_THINK) { - if (self.BUTTON_ATCK) + if(autocvar_g_balance_shotgun_reload_ammo && self.clip_load < autocvar_g_balance_shotgun_primary_ammo) // forced reload + { + // don't force reload an empty shotgun if its melee attack is active + if not(autocvar_g_balance_shotgun_secondary && self.ammo_shells < autocvar_g_balance_shotgun_primary_ammo) + weapon_action(self.weapon, WR_RELOAD); + } + else { - if (time >= self.shotgun_primarytime) // handle refire separately so the secondary can be fired straight after a primary + if (self.BUTTON_ATCK) { - if(weapon_prepareattack(0, autocvar_g_balance_shotgun_primary_animtime)) + if (time >= self.shotgun_primarytime) // handle refire separately so the secondary can be fired straight after a primary { - W_Shotgun_Attack(); - self.shotgun_primarytime = time + autocvar_g_balance_shotgun_primary_refire; - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_shotgun_primary_animtime, w_ready); + if(weapon_prepareattack(0, autocvar_g_balance_shotgun_primary_animtime)) + { + W_Shotgun_Attack(); + self.shotgun_primarytime = time + autocvar_g_balance_shotgun_primary_refire; + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_shotgun_primary_animtime, w_ready); + } } } } + if (self.clip_load >= 0) // we are not currently reloading if (self.BUTTON_ATCK2 && autocvar_g_balance_shotgun_secondary) if (weapon_prepareattack(1, autocvar_g_balance_shotgun_secondary_refire)) { @@ -137,15 +148,28 @@ float w_shotgun(float req) precache_sound ("misc/itempickup.wav"); precache_sound ("weapons/shotgun_fire.wav"); precache_sound ("weapons/shotgun_melee.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else } else if (req == WR_SETUP) + { weapon_setup(WEP_SHOTGUN); + self.current_ammo = ammo_shells; + } else if (req == WR_CHECKAMMO1) - return self.ammo_shells >= autocvar_g_balance_shotgun_primary_ammo; + { + ammo_amount = self.ammo_shells >= autocvar_g_balance_shotgun_primary_ammo; + ammo_amount += self.weapon_load[WEP_SHOTGUN] >= autocvar_g_balance_shotgun_primary_ammo; + return ammo_amount; + } else if (req == WR_CHECKAMMO2) { + // melee attack is always available return TRUE; } + else if (req == WR_RELOAD) + { + W_Reload(autocvar_g_balance_shotgun_primary_ammo, autocvar_g_balance_shotgun_reload_ammo, autocvar_g_balance_shotgun_reload_time, "weapons/reload.wav"); + } return TRUE; }; #endif diff --git a/qcsrc/server/w_sniperrifle.qc b/qcsrc/server/w_sniperrifle.qc index a03a9b610..f634993f5 100644 --- a/qcsrc/server/w_sniperrifle.qc +++ b/qcsrc/server/w_sniperrifle.qc @@ -1,5 +1,5 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(SNIPERRIFLE, w_sniperrifle, IT_NAILS, 7, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "campingrifle", "sniperrifle", _("Sniper Rifle")) +REGISTER_WEAPON(SNIPERRIFLE, w_sniperrifle, IT_NAILS, 7, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "campingrifle", "sniperrifle", _("Sniper Rifle")) #else #ifdef SVQC //Sniper rifle Primary mode: manually operated bolt*, Secondary: full automatic** @@ -8,87 +8,16 @@ REGISTER_WEAPON(SNIPERRIFLE, w_sniperrifle, IT_NAILS, 7, WEP_FLAG_NORMAL | WEP_T .float sniperrifle_accumulator; -float W_SniperRifle_CheckMaxBullets(float checkammo) -{ - float maxbulls; - maxbulls = autocvar_g_balance_sniperrifle_magazinecapacity; - if(!maxbulls) - maxbulls = 8; // match HUD - if(checkammo) - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - maxbulls = min(maxbulls, floor(self.ammo_nails / min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo))); - if(self.sniperrifle_bulletcounter > maxbulls || !autocvar_g_balance_sniperrifle_magazinecapacity) - self.sniperrifle_bulletcounter = maxbulls; - return (self.sniperrifle_bulletcounter == maxbulls); -} - -void W_SniperRifle_ReloadedAndReady() -{ - float t; - self.sniperrifle_bulletcounter = autocvar_g_balance_sniperrifle_magazinecapacity; - W_SniperRifle_CheckMaxBullets(TRUE); - t = ATTACK_FINISHED(self) - autocvar_g_balance_sniperrifle_reloadtime - 1; - ATTACK_FINISHED(self) = t; - w_ready(); -} - -float W_SniperRifle_Reload() -{ - float t; - - W_SniperRifle_CheckMaxBullets(TRUE); - - if(self.ammo_nails < min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo)) // when we get here, bulletcounter must be 0 or -1 - { - print("cannot reload... not enough bullets\n"); - self.sniperrifle_bulletcounter = -1; // reload later - W_SwitchToOtherWeapon(self); - return 0; - } - - if (self.sniperrifle_bulletcounter >= autocvar_g_balance_sniperrifle_magazinecapacity) - return 0; - - if (self.weaponentity) - { - if (self.weaponentity.wframe == WFRAME_RELOAD) - return 0; - - // allow to switch away while reloading, but this will cause a new reload! - self.weaponentity.state = WS_READY; - } - - sound (self, CHAN_WEAPON2, "weapons/campingrifle_reload.wav", VOL_BASE, ATTN_NORM); - - t = max(time, ATTACK_FINISHED(self)) + autocvar_g_balance_sniperrifle_reloadtime + 1; - ATTACK_FINISHED(self) = t; - - weapon_thinkf(WFRAME_RELOAD, autocvar_g_balance_sniperrifle_reloadtime, W_SniperRifle_ReloadedAndReady); - - self.sniperrifle_bulletcounter = -1; - - return 1; -} - -void W_SniperRifle_CheckReloadAndReady() -{ - w_ready(); - if(self.sniperrifle_bulletcounter <= 0) - if(W_SniperRifle_Reload()) - return; -} - void W_SniperRifle_FireBullet(float pSpread, float pDamage, float pHeadshotAddedDamage, float pForce, float pSpeed, float pLifetime, float pAmmo, float deathtype, float pBulletConstant) { - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_nails -= pAmmo; + W_DecreaseAmmo(ammo_nails, pAmmo, autocvar_g_balance_sniperrifle_reload_ammo); if(deathtype & HITTYPE_SECONDARY) W_SetupShot (self, autocvar_g_antilag_bullets && pSpeed >= autocvar_g_antilag_bullets, 2, "weapons/campingrifle_fire2.wav", CHAN_WEAPON, autocvar_g_balance_sniperrifle_secondary_damage + autocvar_g_balance_sniperrifle_secondary_headshotaddeddamage); else W_SetupShot (self, autocvar_g_antilag_bullets && pSpeed >= autocvar_g_antilag_bullets, 2, "weapons/campingrifle_fire.wav", CHAN_WEAPON, autocvar_g_balance_sniperrifle_primary_damage + autocvar_g_balance_sniperrifle_primary_headshotaddeddamage); - pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 2000, 1); + pointparticles(particleeffectnum("sniperrifle_muzzleflash"), w_shotorg, w_shotdir * 2000, 1); if(self.BUTTON_ZOOM) // if zoomed, shoot from the eye { @@ -104,9 +33,6 @@ void W_SniperRifle_FireBullet(float pSpread, float pDamage, float pHeadshotAdded if (autocvar_g_casings >= 2) SpawnCasing (((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3, self); - - self.sniperrifle_bulletcounter = self.sniperrifle_bulletcounter - 1; - W_SniperRifle_CheckMaxBullets(TRUE); } void W_SniperRifle_Attack() @@ -137,9 +63,7 @@ void spawnfunc_weapon_campingrifle (void) void W_SniperRifle_BulletHail_Continue() { float r, sw, af; - W_SniperRifle_CheckReloadAndReady(); - if(self.sniperrifle_bulletcounter < 0) - return; // reloading, so we are done + sw = self.switchweapon; // make it not detect weapon changes as reason to abort firing af = ATTACK_FINISHED(self); self.switchweapon = self.weapon; @@ -177,14 +101,15 @@ void W_SniperRifle_BulletHail(float mode, void(void) AttackFunc, float fr, float else { // just one shot - weapon_thinkf(fr, animtime, W_SniperRifle_CheckReloadAndReady); + weapon_thinkf(fr, animtime, w_ready); } } .float bot_secondary_sniperriflemooth; float w_sniperrifle(float req) { - float full; + float ammo_amount; + if (req == WR_AIM) { self.BUTTON_ATCK=FALSE; @@ -210,10 +135,8 @@ float w_sniperrifle(float req) } else if (req == WR_THINK) { - if(self.sniperrifle_bulletcounter < 0) // forced reload (e.g. because interrupted) - { - self.wish_reload = 1; - } + if(autocvar_g_balance_sniperrifle_reload_ammo && self.clip_load < min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo)) // forced reload + weapon_action(self.weapon, WR_RELOAD); else { self.sniperrifle_accumulator = bound(time - autocvar_g_balance_sniperrifle_bursttime, self.sniperrifle_accumulator, time); @@ -230,7 +153,7 @@ float w_sniperrifle(float req) if (autocvar_g_balance_sniperrifle_secondary) { if(autocvar_g_balance_sniperrifle_secondary_reload) - self.wish_reload = 1; + weapon_action(self.weapon, WR_RELOAD); else { if (weapon_prepareattack_check(1, autocvar_g_balance_sniperrifle_secondary_refire)) @@ -244,49 +167,40 @@ float w_sniperrifle(float req) } } } - if(self.wish_reload) - { - if(self.switchweapon == self.weapon) - { - if(self.weaponentity.state == WS_READY) - { - self.wish_reload = 0; - W_SniperRifle_Reload(); - } - } - } } else if (req == WR_PRECACHE) { precache_model ("models/weapons/g_campingrifle.md3"); precache_model ("models/weapons/v_campingrifle.md3"); precache_model ("models/weapons/h_campingrifle.iqm"); - precache_sound ("weapons/campingrifle_reload.wav"); precache_sound ("weapons/campingrifle_fire.wav"); precache_sound ("weapons/campingrifle_fire2.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else } else if (req == WR_SETUP) { weapon_setup(WEP_SNIPERRIFLE); - - full = W_SniperRifle_CheckMaxBullets(TRUE); - if(autocvar_g_balance_sniperrifle_auto_reload_on_switch) - if(!full) - self.sniperrifle_bulletcounter = -1; + self.current_ammo = ammo_nails; } else if (req == WR_CHECKAMMO1) - return self.ammo_nails >= autocvar_g_balance_sniperrifle_primary_ammo; + { + ammo_amount = self.ammo_nails >= autocvar_g_balance_sniperrifle_primary_ammo; + ammo_amount += self.weapon_load[WEP_SNIPERRIFLE] >= autocvar_g_balance_sniperrifle_primary_ammo; + return ammo_amount; + } else if (req == WR_CHECKAMMO2) - return self.ammo_nails >= autocvar_g_balance_sniperrifle_secondary_ammo; - else if (req == WR_RELOAD) { - self.wish_reload = 1; + ammo_amount = self.ammo_nails >= autocvar_g_balance_sniperrifle_secondary_ammo; + ammo_amount += self.weapon_load[WEP_SNIPERRIFLE] >= autocvar_g_balance_sniperrifle_secondary_ammo; + return ammo_amount; } else if (req == WR_RESETPLAYER) { self.sniperrifle_accumulator = time - autocvar_g_balance_sniperrifle_bursttime; - self.sniperrifle_bulletcounter = autocvar_g_balance_sniperrifle_magazinecapacity; - W_SniperRifle_CheckMaxBullets(FALSE); + } + else if (req == WR_RELOAD) + { + W_Reload(min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo), autocvar_g_balance_sniperrifle_reload_ammo, autocvar_g_balance_sniperrifle_reload_time, "weapons/reload.wav"); } return TRUE; }; diff --git a/qcsrc/server/w_tuba.qc b/qcsrc/server/w_tuba.qc index 98767516a..4a7978808 100644 --- a/qcsrc/server/w_tuba.qc +++ b/qcsrc/server/w_tuba.qc @@ -236,7 +236,10 @@ float w_tuba(float req) // precache_sound(TUBA_NOTE(i)); } else if (req == WR_SETUP) + { weapon_setup(WEP_TUBA); + self.current_ammo = ammo_none; + } else if (req == WR_CHECKAMMO1) return TRUE; // TODO use fuel? else if (req == WR_CHECKAMMO2) diff --git a/qcsrc/server/w_uzi.qc b/qcsrc/server/w_uzi.qc index 0e563405a..2f5b9bc78 100644 --- a/qcsrc/server/w_uzi.qc +++ b/qcsrc/server/w_uzi.qc @@ -1,10 +1,10 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(UZI, w_uzi, IT_NAILS, 3, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "uzi", "uzi", _("Machine Gun")) +REGISTER_WEAPON(UZI, w_uzi, IT_NAILS, 3, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "uzi", "uzi", _("Machine Gun")) #else #ifdef SVQC // leilei's fancy muzzleflash stuff -void Uzi_Flash_Go() +void UZI_Flash_Go() { self.frame = self.frame + 2; self.scale = self.scale * 0.5; @@ -30,7 +30,7 @@ void UziFlash() setmodel(self.muzzle_flash, "models/uziflash.md3"); // precision set below self.muzzle_flash.scale = 0.75; - self.muzzle_flash.think = Uzi_Flash_Go; + self.muzzle_flash.think = UZI_Flash_Go; self.muzzle_flash.nextthink = time + 0.02; self.muzzle_flash.frame = 2; self.muzzle_flash.alpha = 0.75; @@ -39,15 +39,8 @@ void UziFlash() self.muzzle_flash.owner = self; } -void W_Uzi_Attack (float deathtype) +void W_UZI_Attack (float deathtype) { - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - { - if (self.misc_bulletcounter == 1) - self.ammo_nails = self.ammo_nails - autocvar_g_balance_uzi_first_ammo; - else - self.ammo_nails = self.ammo_nails - autocvar_g_balance_uzi_sustained_ammo; - } W_SetupShot (self, autocvar_g_antilag_bullets && autocvar_g_balance_uzi_speed >= autocvar_g_antilag_bullets, 0, "weapons/uzi_fire.wav", CHAN_WEAPON, ((self.misc_bulletcounter == 1) ? autocvar_g_balance_uzi_first_damage : autocvar_g_balance_uzi_sustained_damage)); if (!g_norecoil) { @@ -72,6 +65,11 @@ void W_Uzi_Attack (float deathtype) // casing code if (autocvar_g_casings >= 2) SpawnCasing (((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3, self); + + if (self.misc_bulletcounter == 1) + W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_first_ammo, autocvar_g_balance_uzi_reload_ammo); + else + W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_reload_ammo); } // weapon frames @@ -85,13 +83,14 @@ void uzi_fire1_02() if (self.BUTTON_ATCK) { if (!weapon_action(self.weapon, WR_CHECKAMMO2)) + if not(self.items & IT_UNLIMITED_WEAPON_AMMO) { W_SwitchWeapon_Force(self, w_getbestweapon(self)); w_ready(); return; } self.misc_bulletcounter = self.misc_bulletcounter + 1; - W_Uzi_Attack(WEP_UZI); + W_UZI_Attack(WEP_UZI); weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, uzi_fire1_02); } else @@ -102,6 +101,8 @@ void uzi_fire1_02() void uzi_mode1_fire_auto() { float uzi_spread; + + W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_reload_ammo); if (self.BUTTON_ATCK) weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, uzi_mode1_fire_auto); @@ -113,6 +114,7 @@ void uzi_mode1_fire_auto() } if (!weapon_action(self.weapon, WR_CHECKAMMO1)) + if not(self.items & IT_UNLIMITED_WEAPON_AMMO) { W_SwitchWeapon_Force(self, w_getbestweapon(self)); w_ready(); @@ -139,10 +141,6 @@ void uzi_mode1_fire_auto() if (autocvar_g_casings >= 2) // casing code SpawnCasing (((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3, self); - - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_nails = self.ammo_nails - autocvar_g_balance_uzi_sustained_ammo; - } void uzi_mode1_fire_burst() @@ -183,6 +181,7 @@ void spawnfunc_weapon_machinegun(); // defined in t_items.qc float w_uzi(float req) { + float ammo_amount; if (req == WR_AIM) if(vlen(self.origin-self.enemy.origin) < 3000 - bound(0, skill, 10) * 200) self.BUTTON_ATCK = bot_aim(1000000, 0, 0.001, FALSE); @@ -192,7 +191,9 @@ float w_uzi(float req) } else if (req == WR_THINK) { - if(autocvar_g_balance_uzi_mode == 1) + if(autocvar_g_balance_uzi_reload_ammo && self.clip_load < min(max(autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_first_ammo), autocvar_g_balance_uzi_burst_ammo)) // forced reload + weapon_action(self.weapon, WR_RELOAD); + else if(autocvar_g_balance_uzi_mode == 1) { if (self.BUTTON_ATCK) if (weapon_prepareattack(0, 0)) @@ -210,9 +211,8 @@ float w_uzi(float req) w_ready(); return FALSE; } - - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_nails = self.ammo_nails - autocvar_g_balance_uzi_burst_ammo; + + W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_burst_ammo, autocvar_g_balance_uzi_reload_ammo); self.misc_bulletcounter = autocvar_g_balance_uzi_burst * -1; uzi_mode1_fire_burst(); @@ -225,7 +225,7 @@ float w_uzi(float req) if (weapon_prepareattack(0, 0)) { self.misc_bulletcounter = 1; - W_Uzi_Attack(WEP_UZI); // sets attack_finished + W_UZI_Attack(WEP_UZI); // sets attack_finished weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, uzi_fire1_02); } @@ -233,7 +233,7 @@ float w_uzi(float req) if (weapon_prepareattack(1, 0)) { self.misc_bulletcounter = 1; - W_Uzi_Attack(WEP_UZI | HITTYPE_SECONDARY); // sets attack_finished + W_UZI_Attack(WEP_UZI | HITTYPE_SECONDARY); // sets attack_finished weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_uzi_first_refire, w_ready); } } @@ -245,19 +245,49 @@ float w_uzi(float req) precache_model ("models/weapons/v_uzi.md3"); precache_model ("models/weapons/h_uzi.iqm"); precache_sound ("weapons/uzi_fire.wav"); + //precache_sound ("weapons/reload.wav"); // until weapons have individual reload sounds, precache the reload sound somewhere else } else if (req == WR_SETUP) + { weapon_setup(WEP_UZI); + self.current_ammo = ammo_nails; + } else if (req == WR_CHECKAMMO1) + { if(autocvar_g_balance_uzi_mode == 1) - return self.ammo_nails >= autocvar_g_balance_uzi_sustained_ammo; + ammo_amount = self.ammo_nails >= autocvar_g_balance_uzi_sustained_ammo; else - return self.ammo_nails >= autocvar_g_balance_uzi_first_ammo; + ammo_amount = self.ammo_nails >= autocvar_g_balance_uzi_first_ammo; + + if(autocvar_g_balance_uzi_reload_ammo) + { + if(autocvar_g_balance_uzi_mode == 1) + ammo_amount += self.weapon_load[WEP_UZI] >= autocvar_g_balance_uzi_sustained_ammo; + else + ammo_amount += self.weapon_load[WEP_UZI] >= autocvar_g_balance_uzi_first_ammo; + } + return ammo_amount; + } else if (req == WR_CHECKAMMO2) + { if(autocvar_g_balance_uzi_mode == 1) - return self.ammo_nails >= autocvar_g_balance_uzi_burst_ammo; + ammo_amount = self.ammo_nails >= autocvar_g_balance_uzi_burst_ammo; else - return self.ammo_nails >= autocvar_g_balance_uzi_first_ammo; + ammo_amount = self.ammo_nails >= autocvar_g_balance_uzi_first_ammo; + + if(autocvar_g_balance_uzi_reload_ammo) + { + if(autocvar_g_balance_uzi_mode == 1) + ammo_amount += self.weapon_load[WEP_UZI] >= autocvar_g_balance_uzi_burst_ammo; + else + ammo_amount += self.weapon_load[WEP_UZI] >= autocvar_g_balance_uzi_first_ammo; + } + return ammo_amount; + } + else if (req == WR_RELOAD) + { + W_Reload(min(max(autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_first_ammo), autocvar_g_balance_uzi_burst_ammo), autocvar_g_balance_uzi_reload_ammo, autocvar_g_balance_uzi_reload_time, "weapons/reload.wav"); + } return TRUE; }; #endif diff --git a/qcsrc/warpzonelib/server.qc b/qcsrc/warpzonelib/server.qc index f4141c8a3..e0dfc6675 100644 --- a/qcsrc/warpzonelib/server.qc +++ b/qcsrc/warpzonelib/server.qc @@ -605,37 +605,40 @@ void WarpZone_StartFrame() WarpZones_Reconnect(); } - entity oldself, oldother; - oldself = self; - oldother = other; - for(e = world; (e = nextent(e)); ) + if(warpzone_warpzones_exist) { - WarpZone_StoreProjectileData(e); - float f; - f = clienttype(e); - if(f == CLIENTTYPE_REAL) - { - if(e.solid != SOLID_NOT) // not spectating? - continue; - if(e.movetype != MOVETYPE_NOCLIP && e.movetype != MOVETYPE_FLY) // not spectating? (this is to catch observers) - continue; - self = WarpZone_Find(e.origin + e.mins, e.origin + e.maxs); - if(!self) - continue; - other = e; - if(WarpZoneLib_ExactTrigger_Touch()) - continue; - WarpZone_Teleport(e); // NOT triggering targets by this! - } - if(f == CLIENTTYPE_NOTACLIENT) + entity oldself, oldother; + oldself = self; + oldother = other; + for(e = world; (e = nextent(e)); ) { - for(; (e = nextent(e)); ) - WarpZone_StoreProjectileData(e); - break; + WarpZone_StoreProjectileData(e); + float f; + f = clienttype(e); + if(f == CLIENTTYPE_REAL) + { + if(e.solid != SOLID_NOT) // not spectating? + continue; + if(e.movetype != MOVETYPE_NOCLIP && e.movetype != MOVETYPE_FLY) // not spectating? (this is to catch observers) + continue; + self = WarpZone_Find(e.origin + e.mins, e.origin + e.maxs); + if(!self) + continue; + other = e; + if(WarpZoneLib_ExactTrigger_Touch()) + continue; + WarpZone_Teleport(e); // NOT triggering targets by this! + } + if(f == CLIENTTYPE_NOTACLIENT) + { + for(; (e = nextent(e)); ) + WarpZone_StoreProjectileData(e); + break; + } } + self = oldself; + other = oldother; } - self = oldself; - other = oldother; } .float warpzone_reconnecting; 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/scripts/items.shader b/scripts/items.shader new file mode 100644 index 000000000..4d6565719 --- /dev/null +++ b/scripts/items.shader @@ -0,0 +1,41 @@ +models/items/5hp +{ + dpreflectcube cubemaps/default/sky + { + map models/items/5hp.tga + rgbgen lightingDiffuse + } +} +models/items/h25 +{ + dpreflectcube cubemaps/default/sky + { + map models/items/h25.tga + rgbgen lightingDiffuse + } +} +models/items/red +{ + dpreflectcube cubemaps/default/sky + { + map models/items/red.tga + blendfunc filter + rgbgen lightingDiffuse + } +} +models/items/h50 +{ + dpreflectcube cubemaps/default/sky + { + map models/items/h50.tga + rgbgen lightingDiffuse + } +} +models/items/h_mega +{ + dpreflectcube cubemaps/default/sky + { + map models/items/h_mega.tga + rgbgen lightingDiffuse + } +} \ No newline at end of file diff --git a/sound/weapons/campingrifle_reload.ogg b/sound/weapons/campingrifle_reload.ogg deleted file mode 100644 index 2edb3739c..000000000 Binary files a/sound/weapons/campingrifle_reload.ogg and /dev/null differ diff --git a/sound/weapons/reload.ogg b/sound/weapons/reload.ogg new file mode 100644 index 000000000..2edb3739c Binary files /dev/null and b/sound/weapons/reload.ogg differ diff --git a/tooltips.db b/tooltips.db index e8aa0f6cd..ac4ac0403 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 @@ -42,8 +43,8 @@ \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 +\g_nix\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_nix_with_laser\Always carry the laser as an additional weapon in Nix \XonoticMultiplayerDialog/All\Select all maps \XonoticMultiplayerDialog/None\Unselect all maps diff --git a/tooltips.db.de b/tooltips.db.de new file mode 100644 index 000000000..959dc7afd --- /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 Nix 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.es b/tooltips.db.es new file mode 100644 index 000000000..46371502f --- /dev/null +++ b/tooltips.db.es @@ -0,0 +1,222 @@ +0 +\XonoticSingleplayerDialog\ Empieza una campaña de un solo jugador o acción instantánea de batalla contra bots + + +\XonoticMultiplayerDialog\Juega online, contra tus amigos en LAN, ver demos o cambia la configuración del jugador +\XonoticMultiplayerDialog/Servers\Encuentra servidores para jugar +\menu_slist_showempty\Mostrar servidores vacíos +\menu_slist_showfull\Mostrar los servidores que no tienen espacio disponible +\net_slist_pause\Pausa la actualización de la lista de servidores para evitar que salteen +\XonoticMultiplayerDialog/Info\Mostrar mas información sobre el actual servidor resaltado +\XonoticMultiplayerDialog/Bookmark\Marcar el actual servidor resaltado para que sea mas facil encontrarlo en un futuro +\XonoticMultiplayerDialog/Havoc\Cambiar a Havoc modo, el cual tiene algunas modificaciones en el juego +\XonoticMultiplayerDialog/Create\Crear tu propio juego +\XonoticMultiplayerDialog/Demos\Navegar y ver demos +\XonoticMultiplayerDialog/Player Setup\Configuración de jugador + +\XonoticTeamSelectDialog/Unirse al'mejor' equipo (seleccion automática)\Auto seleccionar equipo (recomendado) +\XonoticTeamSelectDialog/red\Unirse al equipo rojo +\XonoticTeamSelectDialog/blue\Unirse al equipo azul +\XonoticTeamSelectDialog/yellow\Unirse al equipo amarillo +\XonoticTeamSelectDialog/pink\Unirse al equipo rosa + +\timelimit_override\Límite de tiempo en minutos que cuando pase, terminara el combate +\fraglimit_override\Cantidad de puntos necesarios antes de que termine el combate +\menu_maxplayers\La máxima cantidad de jugadores o bots que pueden conectarse a tu servidor a la vez +\bot_number\Cantidad de bots en tu servidor +\skill\Especificar que experiencia tendran los bots +\g_maplist_votable\Numero de mapas que seran mostrados en en voto dde mapas al final de un combate +\sv_vote_simple_majority_factor\La mayoria gana +\XonoticMultiplayerDialog/Advanced settings...\Configuración avanzada ddel servidor +\XonoticMultiplayerDialog/Mutators...\Mutators +\g_dodging\Activar esquivado +\g_cloaked\Todos los jugadores son casi invisibles +\g_footsteps\Activar sonidos de pasos +\g_midair\solo es posible dañar a tu enemigo mientras este en el aire +\g_vampire\Daño dado a tu enemigo sera añadido a tu propia vida +\g_bloodloss\Cantidad de vida sera afectada por perdida de sangre +\sv_gravity\Hace que las cosas caigan lentamente al suelo, un valor bajo significa baja gravedad +\g_grappling_hook\Los jugadores aparecen con un gancho para aferrarse +\g_jetpack\Los jugadores aparecen con el jetpack +\g_pinata\Los jugadores dejan todas las armas cuando mueren +\g_weapon_stay\Las armas quedan despues de que son tomadas +\g_weaponarena\Seleccionando un arma, dara a todos los jugadores cual arma se eligió asi como infinita munición, y deshabilita cualquier otra toma de arma. +\menu_weaponarena_with_laser\Tambien habilita el láser en la arena +\g_minstagib\Los jugadores tendran Minstanex, el cual es un railgun con daño infinito. Si el jugador queda sin munición, tendra 10 segundos para buscar mas o morira. El modo de disparo secundario es un laser que no inflige daño y es bueno para hacer bromas. +\g_nix\Xonotic sin items - en vez de recoger items, todos juegan con la misma arma. Despues de algún tiempo, comienza una cuenta regresiva, despues del cual todos juegan con otra arma. +\g_nix_with_laser\Siempre lleva el láser como arma adicional en Nix +\XonoticMultiplayerDialog/All\Seleccionar todos los mapas +\XonoticMultiplayerDialog/None\Deseleccionar todos los mapas + + +\XonoticMultiplayerDialog/Timedemo\Prueba cuan rápido tu computadora puede correr la demo seleccionada + +\fov\Campo de visión en grados de 60 a 130, 90 es el default +\cl_bobcycle\Frecuencia de balanceo de la vista +\cl_zoomfactor\Cuan grande es el factor de zoom cuando la tecla de zoom es presionada +\cl_zoomsensitivity\Cuanto el zoom cambia la sensibilidad, desde 0 (baja sensibilidad) a 1 (sin cambio de sensibilidad) +\cl_zoomspeed\Cuan rápido es la vista ampliada, deshabilitar para un zoom instantáneo +\XonoticMultiplayerDialog/Weapon settings...\Seleccionar tu arma preferida, cambio automático y modelo de arma + +\cl_weaponpriority_useforcycling\Haz uso de la lista de abajo when cambia de arma con la rueda del raton +\cl_autoswitch\Cambia automáticamente al arma recogida si es mejor que la que esta llevando +\r_drawviewmodel\Muestra el modelo de arma +\cl_gunalign\Posición del modelo de arma; requiere conección + +\crosshair_per_weapon\Configura diferentes miras para cada arma, esto ayuda si estas jugando sin un modelo de arma +\crosshair_color_override\Tambien configura el color del punto de mira dependiendo del arma que uses actualmente +\crosshair_size\Ajusta el tamaño del punto de mira +\crosshair_color_alpha\Ajusta la opacidad del punto de mira +\crosshair_color_red\Componente rojo del color del punto de mira +\crosshair_color_green\Componente verde del color del punto de mira +\crosshair_color_blue\Componente azul del color del punto de mira +\sbar_hudselector\Usar el viejo diseño de HUD +\XonoticMultiplayerDialog/Radar, HUD & puntos de referencia...\Ajustar el radar, el HUD y los puntos de referencia +\_cl_name\Nombre con el cual aparecerás en el juego + +\XonoticSettingsDialog\Cambiar la configuración del juego +\XonoticCreditsDialog\Los créditos de Xonotic +\XonoticTeamSelectDialog\- +\XonoticMutatorsDialog\- +\XonoticMapInfoDialog\- +\XonoticUserbindEditDialog\- +\XonoticWinnerDialog\- +\XonoticWeaponsDialog\- +\XonoticRadarDialog\- +\XonoticServerInfoDialog\- +\XonoticCvarsDialog\- + +\XonoticQuitDialog\Salir del juego +\XonoticQuitDialog/Yes\Volver al trabajo... +\XonoticQuitDialog/No\Tengo algunos puntos más por hacer! + +\XonoticSettingsDialog/Input\configuración de entrada +\sensitivity\Multiplicador de velocidad del ratón +\menu_mouse_speed\Multiplicador de velocidad del raton en el menu, esto no afecta al apuntar en el juego +\m_filter\Suaviza el movimiento del raton, pero hace menos sensible al apuntar al objetivo +\m_pitch\Invierte el movimiento del raton en el eje Y +\vid_dgamouse\Hace uso de la entrada DGA del raton +\con_closeontoggleconsole\Permite el fijar un lazo de la consola para tambien cerrarla +\sbar_showbinds\Display actions / Teclas vinculadas en la cadena se mostrará en el juego +\cl_showpressedkeys\Mostrar el movimiento de teclas que el jugador esta presionando + +\XonoticSettingsDialog/Video\configuración de video +\vid_width\Resolución de pantalla +\vid_bitsperpixel\Cuantos bits por pixel (BPP) para renderizar, 32 es lo recomendado +\vid_fullscreen\Habilitar el modo de pantalla completa (habilitado por defecto) +\vid_vsync\Habilitar sincronización vertical para prevenir rasgaduras en la imagen, limitara los fps a la tasa de refresco del monitor (desactivado por defecto) +\r_glsl\Habilitar sombreado de pixel de OpenGL 2.0 (activado por defecto) +\gl_vbo\Haz uso de objetos de búfer de vertices para almacenar geometría estática en la memoria de video para acelerar el renderizado (Vertices y Triangulos por defecto) +\r_depthfirst\Eliminar sobre-dibujado renderizando una version de única profundidad de la escena antes de que comience la renderización normal (desactivado por defecto) +\gl_texturecompression\Comprimir las texturas para tarjetas de video con poca cantidad de memoria disponible (ninguno por defecto) +\gl_finish\Hacer que la CPU wait esperen que la gpu termine cada marco, puede ayudar con algunas extrañas entradas o retraso de video en algunas máquinas (desactivado por defecto) +\v_brightness\Brillo en negros (por defecto: 0) +\v_contrast\Brillo en blancos (por defecto: 1) +\v_gamma\Valor de corrección de gama inverso, un efecto de brillo que no afecta a blancos o negros (por defecto: 1.125) +\v_contrastboost\Por cuanto multiplicar el contraste en areas oscuras (por defecto: 1) +\r_glsl_saturation\Ajuste de saturación (0 = escala de grises, 1 = normal, 2 = sobresaturado), requiere un control de color (por defecto: 1) +\v_glslgamma\Abilita el uso de GLSL para aplicar en la corrección gama, note que esto podría disminuir mucho el rendimiento (default: disabled) +\r_ambient\iluminación del ambiente, si se configura en muy elevado, tiende a hacer luz en los mapas de imagen aburrida y plana (por defecto: 4) +\r_hdr_scenebrightness\Brillo del renderizador global (por defecto: 1) +\vid_samples\activar antialiasing, el cual suaviza los bordes en geometrias en 3D. Note que esto puede disminuir bastante el rendimiento (por defecto: desactivado) +\v_flipped\Invertir la imagen horizontalmente (por defecto: desactivado) + +\XonoticSettingsDialog/Effects\configuración de efectos. +\r_subdivisions_tolerance\Cambiar la suavidad de las curvas en el mapa (por defecto: normal) +\gl_picmip\Cambiar la dureza de las texturas. Bajándolo efectivamente reducira el uso de la memoria de la textura, pero hará que las texturas aparezcan muy borrosas. (por defecto: bueno) +\r_picmipworld\Si se activa, solo reduce la calidad de texturas de los modelos (activado por defecto) +\mod_q3bsp_nolightmaps\Use mapas de alta resolución, hara que se vea lindo pero reducira la memoria de video (activado por defecto) +\cl_particles_quality\Multiplicador de cantidad de partículas. Menos significa menos partículas, lo cual dara mejor rendimiento (por defecto: 0.5) +\r_drawparticles_drawdistance\Las partículas que se alejen de esto no se dibujarán (por defecto: 1000) +\cl_decals\Activar decals (agujeros de balas y sangre) (habilitado por defecto) +\r_drawdecals_drawdistance\Los decals que se alejen de esta distancia no se dibujarán (por defecto: 300) +\cl_decals_time\Tiempo en segundos antes de que los decals desaparezcan (por defecto: 2) +\cl_gentle\Reemplazar sangre y tripas por cosas que no tengan nada de gore (desactivado por defecto) +\cl_nogibs\Reduce la cantidad de tripas o lo remueve completamente (por defecto: muchos) +\v_kicktime\Cuanto tiempo se verá el ultimo daño (por defecto: 0) +\gl_texture_anisotropy\Calidad de filtrado anisotrópico (por defecto: 1x) +\r_glsl_deluxemapping\Usar efectos de iluminado por pixel (activado por defecto) +\r_shadow_gloss\Activar el uso de glossmaps en texturas soportandolo (activado por defecto) +\gl_flashblend\Activar luces dinámicas por renderizado de coronas en vez de iluminación dinámica real (desactivado por defecto) +\r_shadow_realtime_dlight\Activar renderizado de luces dinámicas como explosiones y luces de cohete (activado por defecto) +\r_shadow_realtime_dlight_shadows\Activar renderizado de sombras de luces dinamicas (desactivado por defecto) +\r_shadow_realtime_world\Activar renderizado de la iluminación del mundo en tiempo real en mapas que lo soporten. Note que esto puede tener un gran impacto en el rendimiento. (desactivado por defecto) +\r_shadow_realtime_world_shadows\Activar renderizado de sombras de luces del mundo en tiempo real (desactivado por defecto) +\r_shadow_usenormalmap\Activar el uso de sombreado direccional en texturas (activado por defecto) +\r_showsurfaces\Desactivar texturas completamente para hardware muy lento. Esto aumentara el rendimiento en gran medida, pero se verça muy feo. (desactivado por defecto) +\r_glsl_offsetmapping\Efecto de mapeado del desplazamiento, que hará texturas con mapas de relieve parecerse como resaltado de la superficie plana de 2D (desactivado por defecto) +\r_glsl_offsetmapping_reliefmapping\Alta calidad de mapeado de desplazamiento, el cual también tiene un gran impacto en el rendimiento (desactivado por defecto) +\r_water\Calidad de refleccion y refracción, tiene un gran impacto en el rendimiento en mapas de superficies reflectantes (desactivado por defecto) +\r_water_resolutionmultiplier\Resolución de reflecciones/refracciones (por defecto: bueno) +\r_coronas\Habilitar iluminación en corona alrededor de ciertas luces (activado por defecto) +\r_coronas_occlusionquery\Coronas apagadas acorde a la visibilidad (activado por defecto) +\r_bloom\Activar efecto bloom, que ilumina los píxeles vecinos de píxeles muy brillantes.Tiene un gran impacto en el rendimiento. (desactivado por defecto) +\r_hdr\Versión de gran calidad de bloom, que tiene un gran impacto en el rendimiento. (desactivado por defecto) +\r_motionblur\Nivel de desenfoque de movimiento - 0.5 recomendado +\r_damageblur\Cantidad de desenfoque de movimiento en presencia de daños - 0.4 recomendado + +\XonoticSettingsDialog/Audio\configuración de audio +\bgmvolume\- +\volume\- +\snd_staticvolume\- +\snd_worldchannel0volume\- +\snd_entchannel3volume\- +\snd_playerchannel6volume\- +\snd_playerchannel7volume\- +\snd_entchannel4volume\- +\snd_playerchannel2volume\- +\snd_playerchannel1volume\- +\snd_speed\Frecuencia de salida del sonido +\snd_channels\Número de canales para la salida del sonido +\snd_swapstereo\Invertir canales izquierda o derecha +\snd_spatialization_control\Activar espacialización (mezcla ligeramente el canal derecho e izquierdo para disminuir la separación estereo un poco en los auriculares) +\cl_voice_directional\Activar voces direccionales +\cl_voice_directional_taunt_attenuation\Distancia desde el cual las burlas pueden escucharse +\cl_autotaunt\automáticamente burlarse del enemigo al anotar puntos +\cl_sound_maptime_warning\Sonido del anunciante que te indica el tiempo restante del combate +\cl_hitsound\Reproduce un sonido indicador de anotacion cuando disparas a un enemigo +\menu_sounds\Reproduce sonidos cuando se clickea o se posiciona sobre un item del menú + +\XonoticSettingsDialog/Network\configuración de la red +\cl_movement\Activar predicción de movimiento del lado del cliente +\cl_nolerp\Activar actualización suave en la red +\shownetgraph\Activar un gráfico de tamaño de paquetes y otra información +\_cl_rate\Especificar tu velocidad de conección con este separador +\cl_netfps\Cuantos paquetes de entrada mandar a un servidor por cada segundo +\cl_curl_maxdownloads\Número máximo de descargas concurrentes de HTTP/FTP +\cl_curl_maxspeed\Velocidad de descarga máxima +\cl_port\Forzar al cliente a usar un puerto elegido a menos que se establezca en 0 + +\XonoticSettingsDialog/Misc\configuración misc +\showtime\Mostrar la hora y el día actual, útil en capturas de pantalla +\showdate\Mostrar el día actual, útil en capturas de pantalla +\showfps\Mostrar tus marcos/frames por segundo +\cl_showspeed\Mostrar la velocidad del jugador +\cl_showspeed_unit\Seleccionar la velocidad del velocímetro. qu/s = in/s +\cl_showacceleration\Mostrar la aceleración del jugador +\cl_showacceleration_scale\Cambiar el acelerómetro por este multiplicador de escala + +\XonoticSettingsDialog/configuración avanzada...\configuracion avanzada donde puedes ajustar cada variable del juego +\g_friendlyfire\Porcentaje de daño infligido a tus compañeros de equipo +\g_mirrordamage\Porcentaje de daño de equipo que se reflejará a ti +\g_tdm_teams_override\Sobreescribir la cantidad de equipos por defecto de los modos en equipo + +\cl_teamradar_position\- +\cl_teamradar_size\- +\cl_teamradar_zoommode\- +\cl_teamradar_rotation\- +\cl_teamradar_scale\- +\cl_teamradar_foreground_alpha\- +\cl_teamradar_background_alpha\Valor de opacidad del radar de fondo +\viewsize\Enable/Desavilitar el HUD de fondo +\sbar_alpha_bg\alor de opacidad del HUD de fondo +\sbar_color_bg_r\Componente rojo del HUD de fondo +\sbar_color_bg_g\Componente verde del HUD de fondo +\sbar_color_bg_b\Componente azul del HUD de fondo +\sbar_color_bg_team\Saturacion del color de equipo del HUD de fondo +\cl_hidewaypoints\Mostrar indicadores de ubicación/caminos específicos de diferentes tipos de juego +\g_waypointsprite_scale\Escala del multiplicador de los indicadores de ubicación/caminos +\g_waypointsprite_alpha\Transparencia del control de los indicadores de ubicación/caminos +\cl_shownames\Mostrar el nombre del jugador al que estás apuntando + +\crosshair_hittest\Ninguno: no hacer pruebas de aciertos para el punto de mira; Apuntado: difuminar la punta de mira cuando no se apunta contra la pared; Enemigos: también ampliar el punto de mira cuando aciertas al enemigo diff --git a/tooltips.db.fr b/tooltips.db.fr index cf672c3e4..1ab14650e 100644 --- a/tooltips.db.fr +++ b/tooltips.db.fr @@ -42,8 +42,8 @@ \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 +\g_nix\No Items Xonotic; tous les joueurs ont la même arme en même temps, et on change d'arme régulièrement +\g_nix_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 diff --git a/tooltips.db.ru b/tooltips.db.ru index c5ba916a1..914d3d47e 100644 --- a/tooltips.db.ru +++ b/tooltips.db.ru @@ -42,8 +42,8 @@ \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 +\g_nix\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_nix_with_laser\Always carry the laser as an additional weapon in Nix \XonoticMultiplayerDialog/All\Выбрать все карты \XonoticMultiplayerDialog/None\Снять выделение со всех карт diff --git a/xonotic-credits.txt b/xonotic-credits.txt index 5a47c8bd2..dc5b5c4c6 100644 --- a/xonotic-credits.txt +++ b/xonotic-credits.txt @@ -58,6 +58,9 @@ by Forest "LordHavoc" Hale *German Rudolf "divVerent" Polzer +*Finnish +Henry "Exitium" Sanmark + *French Calinou diff --git a/xonotic-credits.txt.fr b/xonotic-credits.txt.fr index 2beb3da97..07716c329 100644 --- a/xonotic-credits.txt.fr +++ b/xonotic-credits.txt.fr @@ -58,6 +58,9 @@ by Forest "LordHavoc" Hale *Allemand Rudolf "divVerent" Polzer +*Finnish (TODO TRANSLATE THIS) +Henry "Exitium" Sanmark + *Français Calinou