From: terencehill Date: Wed, 30 May 2018 12:44:23 +0000 (+0200) Subject: Merge branch 'master' into terencehill/min_spec_time X-Git-Tag: xonotic-v0.8.5~2067^2 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=bc50c2d7ca3e0a44ed1712400ef8e170e6df8210;hp=63b6be263ca5233c13a047ed20950494b53602ba Merge branch 'master' into terencehill/min_spec_time --- diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4754425bf9..300a2a606a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,7 +19,7 @@ test_compilation_units: test_sv_game: stage: test script: - - git clone --depth=1 --branch=master https://gitlab.com/xonotic/darkplaces.git darkplaces + - git clone --depth=1 --branch=div0-stable https://gitlab.com/xonotic/darkplaces.git darkplaces - cd darkplaces && make sv-debug -j $(nproc) && export ENGINE="$PWD/darkplaces-dedicated -xonotic" - cd .. @@ -29,7 +29,7 @@ test_sv_game: - wget -O data/maps/stormkeep.waypoints https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/stormkeep.waypoints - wget -O data/maps/stormkeep.waypoints.cache https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/stormkeep.waypoints.cache - make - - EXPECT=fb771b180a47f7acf09eb12dddd391f8 + - EXPECT=033546d32426e6409458fb39d0130f56 - HASH=$(${ENGINE} -noconfig -nohome +exec serverbench.cfg | tee /dev/stderr | grep '^:' diff --git a/.tx/merge-base b/.tx/merge-base index 431dcbe974..aa57231053 100644 --- a/.tx/merge-base +++ b/.tx/merge-base @@ -1 +1 @@ -Sat Mar 17 07:23:46 CET 2018 +Wed May 30 07:24:39 CEST 2018 diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a66f9fd2e..f732e5b7af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -125,12 +125,12 @@ copy(progs) copy(menu) function(pack prog) - add_custom_target(${prog}.pk3 + add_custom_target(${prog}.pk3 ALL DEPENDS ${prog}-${GIT_DESC}.pk3 ) add_custom_command(OUTPUT ${prog}-${GIT_DESC}.pk3 DEPENDS ${prog} - COMMAND ${CMAKE_COMMAND} -E echo "http://xonotic.org" > "${prog}-${GIT_DESC}.txt" + COMMAND ${CMAKE_COMMAND} -E echo "https://xonotic.org" > "${prog}-${GIT_DESC}.txt" COMMAND ${CMAKE_COMMAND} -E copy "$/${prog}.dat" "${prog}-${GIT_DESC}.dat" COMMAND ${CMAKE_COMMAND} -E copy "$/${prog}.lno" "${prog}-${GIT_DESC}.lno" COMMAND ${CMAKE_COMMAND} -E tar "cfv" "${prog}-${GIT_DESC}.pk3" --format=zip diff --git a/_hud_common.cfg b/_hud_common.cfg index 622e581d3b..3631df7eb4 100644 --- a/_hud_common.cfg +++ b/_hud_common.cfg @@ -93,7 +93,7 @@ seta hud_panel_engineinfo_framecounter_exponentialmovingaverage_new_weight 0.1 " seta hud_panel_engineinfo_framecounter_exponentialmovingaverage_instantupdate_change_threshold 0.5 "threshold for fps change when to update instantly, to make big fps changes update faster" seta hud_panel_physics_acceleration_movingaverage 1 "use an averaging method for calculating acceleration instead of the real value" -seta hud_panel_physics_update_interval 0.0666 "how often (in seconds) numeric values get updated on screen" +seta hud_panel_physics_update_interval 0.016 "how often (in seconds) numeric values get updated on screen" seta hud_panel_physics_speed_unit "1" "speed unit (1 = qu/s, 2 = m/s, 3 = km/h, 4 = mph, 5 = knots)" seta hud_panel_itemstime_progressbar_maxtime "30" "when left time is at least this amount, the status bar is full" @@ -113,7 +113,7 @@ seta hud_panel_scoreboard_maxheight 0.6 "max height of the scoreboard; a few pla seta hud_panel_scoreboard_others_showscore 1 "show scores of players listed in the last row when the scoreboard reaches the max height" seta hud_panel_scoreboard_spectators_showping 1 "show ping of spectators" seta hud_panel_scoreboard_spectators_aligned 0 "align spectators in columns" -seta hud_panel_scoreboard_minwidth 0.4 "minimum width of the scoreboard" +seta hud_panel_scoreboard_minwidth 0.6 "minimum width of the scoreboard" // hud panel aliases alias quickmenu "cl_cmd hud quickmenu ${* ?}" diff --git a/bal-wep-xonotic.cfg b/bal-wep-xonotic.cfg index 9048f383d7..4a59c64ec0 100644 --- a/bal-wep-xonotic.cfg +++ b/bal-wep-xonotic.cfg @@ -751,10 +751,10 @@ set g_balance_arc_beam_heat 0 set g_balance_arc_burst_heat 5 set g_balance_arc_beam_maxangle 10 set g_balance_arc_beam_nonplayerdamage 80 -set g_balance_arc_beam_range 2000 +set g_balance_arc_beam_range 1500 set g_balance_arc_beam_refire 0.25 set g_balance_arc_beam_returnspeed 8 -set g_balance_arc_beam_tightness 0.95 +set g_balance_arc_beam_tightness 0.6 set g_balance_arc_bolt 1 set g_balance_arc_bolt_ammo 1 set g_balance_arc_bolt_damage 25 diff --git a/balance-xdf.cfg b/balance-xdf.cfg index 245fa7cc4c..6a1622c2c4 100644 --- a/balance-xdf.cfg +++ b/balance-xdf.cfg @@ -49,8 +49,8 @@ set g_balance_nix_ammoincr_fuel 2 // }}} // {{{ pickup items -set g_pickup_ammo_anyway 1 -set g_pickup_weapons_anyway 1 +set g_pickup_ammo_anyway 0 +set g_pickup_weapons_anyway 0 set g_pickup_shells 15 set g_pickup_shells_weapon 15 set g_pickup_shells_max 60 @@ -72,28 +72,28 @@ set g_pickup_fuel_jetpack 100 set g_pickup_fuel_max 100 set g_pickup_armorsmall 5 set g_pickup_armorsmall_max 200 -set g_pickup_armorsmall_anyway 1 +set g_pickup_armorsmall_anyway 0 set g_pickup_armormedium 25 set g_pickup_armormedium_max 200 -set g_pickup_armormedium_anyway 1 +set g_pickup_armormedium_anyway 0 set g_pickup_armorbig 50 set g_pickup_armorbig_max 200 -set g_pickup_armorbig_anyway 1 +set g_pickup_armorbig_anyway 0 set g_pickup_armormega 100 set g_pickup_armormega_max 200 -set g_pickup_armormega_anyway 1 +set g_pickup_armormega_anyway 0 set g_pickup_healthsmall 5 set g_pickup_healthsmall_max 200 -set g_pickup_healthsmall_anyway 1 +set g_pickup_healthsmall_anyway 0 set g_pickup_healthmedium 25 set g_pickup_healthmedium_max 200 -set g_pickup_healthmedium_anyway 1 +set g_pickup_healthmedium_anyway 0 set g_pickup_healthbig 50 set g_pickup_healthbig_max 200 -set g_pickup_healthbig_anyway 1 +set g_pickup_healthbig_anyway 0 set g_pickup_healthmega 100 set g_pickup_healthmega_max 200 -set g_pickup_healthmega_anyway 1 +set g_pickup_healthmega_anyway 0 set g_pickup_respawntime_short 0.1 set g_pickup_respawntime_medium 0.1 set g_pickup_respawntime_long 0.1 diff --git a/binds-xonotic.cfg b/binds-xonotic.cfg index e8f4f1a589..18ee7ea28f 100644 --- a/binds-xonotic.cfg +++ b/binds-xonotic.cfg @@ -4,7 +4,7 @@ bind f5 menu_showteamselect bind f6 team_auto bind f7 menu_showsandboxtools - +bind f8 "quickmenu" bind f9 "cl_cmd hud minigame" // movement diff --git a/cmake/qcc.sh b/cmake/qcc.sh index 78119a5961..a6038dd591 100755 --- a/cmake/qcc.sh +++ b/cmake/qcc.sh @@ -3,7 +3,16 @@ CPP=${CPP:-cpp} QCC=${QCC:-$PWD/../../gmqcc/gmqcc${CMAKE_EXECUTABLE_SUFFIX}} case $1 in compile) - ${CPP} ${@:3} | sed -E 's/^#(line)? ([[:digit:]]+) "(.*)".*/'$'\\\n''#pragma file(\3)'$'\\\n''#pragma line(\2)/g' > $2 + for var in "$@"; do case "$var" in + -I*) + home=${var:2} + break + ;; + esac; done + ${CPP} ${@:3} \ + | sed -E "s|${home}|~|g" \ + | sed -E 's/^#(line)? ([[:digit:]]+) "(.*)".*/'$'\\\n''#pragma file(\3)'$'\\\n''#pragma line(\2)/g' \ + > $2 ;; link) ${QCC} \ diff --git a/common.cs.po b/common.cs.po index 5413fe1414..149ddc5c83 100644 --- a/common.cs.po +++ b/common.cs.po @@ -6,22 +6,23 @@ # Martin Taibr , 2017 # Martin Taibr , 2017 # NONE , 2015 -# Tomáš Volavka , 2015 +# Tomáš Volavka , 2015,2018 # Tomáš Volavka , 2015 msgid "" msgstr "" "Project-Id-Version: Xonotic\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-07-09 00:35+0200\n" -"PO-Revision-Date: 2017-09-19 23:01+0000\n" -"Last-Translator: divVerent \n" +"PO-Revision-Date: 2018-05-13 08:23+0000\n" +"Last-Translator: Tomáš Volavka \n" "Language-Team: Czech (http://www.transifex.com/team-xonotic/xonotic/language/" "cs/)\n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n " +"<= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #: qcsrc/client/hud/hud_config.qc:239 #, c-format @@ -31,7 +32,7 @@ msgstr "^2Úspěšně exportováno do %s! (Pozn.: Uloženo v data/data/)\n" #: qcsrc/client/hud/hud_config.qc:243 #, c-format msgid "^1Couldn't write to %s\n" -msgstr "" +msgstr "^1Nelze zapisovat do %s\n" #: qcsrc/client/hud/panel/chat.qc:82 msgid "^3Player^7: This is the chat area." @@ -59,7 +60,7 @@ msgstr "^1Stiskni ^3%s^1 pro sledování" #: qcsrc/client/hud/panel/infomessages.qc:100 #: qcsrc/menu/xonotic/keybinder.qc:40 msgid "primary fire" -msgstr "" +msgstr "primární střelba" #: qcsrc/client/hud/panel/infomessages.qc:102 #, c-format @@ -69,12 +70,12 @@ msgstr "^1Stiskni ^3%s^1 nebo ^3%s^1 pro dalšího nebo předchozího hráče" #: qcsrc/client/hud/panel/infomessages.qc:102 #: qcsrc/client/hud/panel/infomessages.qc:106 msgid "next weapon" -msgstr "" +msgstr "další zbraň" #: qcsrc/client/hud/panel/infomessages.qc:102 #: qcsrc/client/hud/panel/infomessages.qc:106 msgid "previous weapon" -msgstr "" +msgstr "předchozí zbraň" #: qcsrc/client/hud/panel/infomessages.qc:106 #, c-format @@ -84,17 +85,17 @@ msgstr "^1Použij ^3%s^1 nebo ^3%s^1 pro změnu rychlosti" #: qcsrc/client/hud/panel/infomessages.qc:108 #, c-format msgid "^1Press ^3%s^1 to observe, ^3%s^1 to change camera mode" -msgstr "" +msgstr "^1Stskni ^3%s^1 pro sledování, ^3%s^1 pro změnu kamery" #: qcsrc/client/hud/panel/infomessages.qc:108 #: qcsrc/common/vehicles/cl_vehicles.qc:192 msgid "drop weapon" -msgstr "" +msgstr "odhodit zbraň" #: qcsrc/client/hud/panel/infomessages.qc:108 #: qcsrc/menu/xonotic/keybinder.qc:41 msgid "secondary fire" -msgstr "" +msgstr "sekundární střelba" #: qcsrc/client/hud/panel/infomessages.qc:111 #, c-format @@ -123,7 +124,7 @@ msgstr "^1Stiskni ^3%s^1 pro připojení" #: qcsrc/client/hud/panel/infomessages.qc:128 #: qcsrc/client/hud/panel/infomessages.qc:131 msgid "jump" -msgstr "" +msgstr "skok" #: qcsrc/client/hud/panel/infomessages.qc:139 #, c-format diff --git a/common.es.po b/common.es.po index 5025390f48..2d4350a35f 100644 --- a/common.es.po +++ b/common.es.po @@ -15,7 +15,8 @@ # roader_gentoo , 2014 # Rodrigo Mouton Laudin , 2011 # Simon , 2014-2015 -# starfire24680 , 2017 +# starfire24680 , 2018 +# starfire24680 , 2017-2018 # starfire24680 , 2017 # Vitama Piru Leta , 2017 # Ari_tent , 2014 @@ -26,8 +27,8 @@ msgstr "" "Project-Id-Version: Xonotic\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-07-09 00:35+0200\n" -"PO-Revision-Date: 2017-09-19 19:54+0000\n" -"Last-Translator: divVerent \n" +"PO-Revision-Date: 2018-05-11 21:48+0000\n" +"Last-Translator: starfire24680 \n" "Language-Team: Spanish (http://www.transifex.com/team-xonotic/xonotic/" "language/es/)\n" "Language: es\n" @@ -48,7 +49,7 @@ msgstr "^1No se pudo escribir a %s\n" #: qcsrc/client/hud/panel/chat.qc:82 msgid "^3Player^7: This is the chat area." -msgstr "^3Jugador^7: Este es el area de chat." +msgstr "^3Jugador^7: Este es el area del chat." #: qcsrc/client/hud/panel/engineinfo.qc:69 #, c-format @@ -97,7 +98,7 @@ msgstr "^1Usa ^3%s^1 o ^3%s^1 para cambiar la velocidad" #: qcsrc/client/hud/panel/infomessages.qc:108 #, c-format msgid "^1Press ^3%s^1 to observe, ^3%s^1 to change camera mode" -msgstr "^1Pulsa ^3%s^1 para observar y ^3%s^1 para cambiar el modo de cámara." +msgstr "^1Pulsa ^3%s^1 para observar o ^3%s^1 para cambiar el modo de cámara." #: qcsrc/client/hud/panel/infomessages.qc:108 #: qcsrc/common/vehicles/cl_vehicles.qc:192 @@ -112,7 +113,7 @@ msgstr "disparo secundario" #: qcsrc/client/hud/panel/infomessages.qc:111 #, c-format msgid "^1Press ^3%s^1 for gamemode info" -msgstr "^1Presiona ^3%s^1 para información del modo de juego" +msgstr "^1Presiona ^3%s^1 para mostrar información del modo de juego" #: qcsrc/client/hud/panel/infomessages.qc:111 #: qcsrc/menu/xonotic/keybinder.qc:94 @@ -357,7 +358,7 @@ msgstr "QMCMD^asesinado el portador de bandera (l:%y^7)" #: qcsrc/client/hud/panel/quickmenu.qc:814 msgid "QMCMD^killed flagcarrier, icon" -msgstr "" +msgstr "QMCMD^asesinado el portador de la bandera, icono" #: qcsrc/client/hud/panel/quickmenu.qc:815 #, c-format @@ -370,11 +371,11 @@ msgstr "QMCMD^bandera tirada, icono" #: qcsrc/client/hud/panel/quickmenu.qc:816 msgid "QMCMD^drop weapon, icon" -msgstr "" +msgstr "QMCMD^tirar arma, icono" #: qcsrc/client/hud/panel/quickmenu.qc:816 msgid "QMCMD^dropped weapon %w^7 (l:%l^7)" -msgstr "" +msgstr "QMCMD^arma tirada %w^7 (l:%l^7)" #: qcsrc/client/hud/panel/quickmenu.qc:817 msgid "QMCMD^drop flag/key, icon" @@ -523,7 +524,7 @@ msgstr "Linea de salida" #: qcsrc/client/hud/panel/racetimer.qc:63 #: qcsrc/client/hud/panel/racetimer.qc:67 msgid "Finish line" -msgstr "Línea eta" +msgstr "Línea de meta" #: qcsrc/client/hud/panel/racetimer.qc:65 #, c-format @@ -1118,7 +1119,7 @@ msgstr "No importa" #: qcsrc/client/mapvoting.qc:365 msgid "Decide the gametype" -msgstr "Elegir el modo de juego" +msgstr "Elige el modo de juego" #: qcsrc/client/mapvoting.qc:365 msgid "Vote for a map" @@ -1132,7 +1133,7 @@ msgstr "%d segundos restantes" #: qcsrc/client/mapvoting.qc:497 msgid "" "mv_mapdownload: ^3You're not supposed to use this command on your own!\n" -msgstr "mv_mapdownload: ^3¡No deberias usar este comando en tí!\n" +msgstr "mv_mapdownload: ^3¡No deberias usar este comando por tu cuenta!\n" #: qcsrc/client/mapvoting.qc:507 msgid "^1Error:^7 Couldn't find pak index.\n" @@ -1251,7 +1252,7 @@ msgstr "Combate a muerte por equipos" #: qcsrc/common/mapinfo.qh:220 msgid "Capture the Flag" -msgstr "Consigue la bandera" +msgstr "Captura la bandera" #: qcsrc/common/mapinfo.qh:220 msgid "" @@ -1679,7 +1680,7 @@ msgstr "Color:" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:47 msgid "Draw damage numbers for friendly fire" -msgstr "Dibujar números de daño para fuego amigo" +msgstr "Dibujar números de daño para el fuego amigo" #: qcsrc/common/mutators/mutator/instagib/items.qh:56 msgid "Extra life" @@ -1814,7 +1815,7 @@ msgstr "Base rosa" #: qcsrc/common/mutators/mutator/waypoints/all.inc:29 msgid "Return flag here" -msgstr "Devuele la vandera aquí" +msgstr "Devuelva la bandera aquí" #: qcsrc/common/mutators/mutator/waypoints/all.inc:31 #: qcsrc/common/mutators/mutator/waypoints/all.inc:32 @@ -1912,8 +1913,8 @@ msgid "" "^BG%s^BG captured the ^TC^TT^BG flag in ^F1%s^BG seconds, breaking ^BG" "%s^BG's previous record of ^F2%s^BG seconds" msgstr "" -"^BG%s^BG capturó la bandera ^TC^TT^BG en ^F1%s^BG segundos, rompiendo ^BG" -"%s^BG's el record anterior de ^F2%s^BG segundos" +"^BG%s^BG capturó la bandera ^TC^TT^BG en ^F1%s^BG segundos, batiendo el " +"record anterior de ^BG%s^BG de ^F2%s^BG segundos" #: qcsrc/common/notifications/all.inc:243 #, c-format @@ -1932,7 +1933,7 @@ msgid "" "^BG%s^BG's previous record of ^F1%s^BG seconds" msgstr "" "^BG%s^BG capturó la bandera ^TC^TT^BG en ^F2%s^BG segundos, fallando al " -"romper ^BG%s^BG's el record anterior de ^F1%s^BG segundos" +"batir el record anterior de ^BG%s^BG de ^F1%s^BG segundos" #: qcsrc/common/notifications/all.inc:246 msgid "^BGThe ^TC^TT^BG flag was returned to base by its owner" @@ -2085,12 +2086,12 @@ msgstr "^BG%s%s^K1 fue cocinado por ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:280 #, c-format msgid "^BG%s%s^K1 was pushed in front of a monster by ^BG%s^K1%s%s" -msgstr "^BG%s%s^K1 fue empujado a un monstruo por ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 fue empujado hacia un monstruo por ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:281 #, c-format msgid "^BG%s%s^K1 was blown up by ^BG%s^K1's Nade%s%s" -msgstr "^BG%s%s^K1 fue explotado por ^BG%s^K1 Granda%s%s" +msgstr "^BG%s%s^K1 fue explotado por la granada de ^BG%s^K1 %s%s" #: qcsrc/common/notifications/all.inc:282 #, c-format @@ -2869,7 +2870,7 @@ msgstr "" #: qcsrc/common/notifications/all.inc:443 #, c-format msgid "^BG%s^K1 picked up a Superweapon" -msgstr "^BG%s^K1 ha recogido una superarma" +msgstr "^BG%s^K1 ha recogido una Superarma" #: qcsrc/common/notifications/all.inc:445 msgid "^BGYou cannot change to a larger team" @@ -2908,7 +2909,7 @@ msgstr "" #: qcsrc/common/notifications/all.inc:452 #, c-format msgid "^F3SVQC Build information: ^F4%s" -msgstr "^F3SVQC Información de compilación ^F4%s" +msgstr "^F3SVQC Información de compilación: ^F4%s" #: qcsrc/common/notifications/all.inc:454 #, c-format @@ -3106,7 +3107,7 @@ msgstr "^BG%s%s^K1 se acercó demasiado a la granada del Mortar de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:490 #, c-format msgid "^BG%s%s^K1 ate ^BG%s^K1's Mortar grenade%s%s" -msgstr "^BG%s%s^K1 se comió la granada del mortar de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 se comió la granada del Mortero de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:491 #, c-format @@ -3215,7 +3216,7 @@ msgstr "" #: qcsrc/common/notifications/all.inc:510 #, c-format msgid "^BG%s^K1 hurt their own ears with the @!#%%'n Tuba%s%s" -msgstr "^BG%s^K1 lastimó sus propios oidos con el @!#%%'n Tuba%s%s" +msgstr "^BG%s^K1 lastimó sus propios oidos con la @!#%%'n Tuba%s%s" #: qcsrc/common/notifications/all.inc:511 #, c-format @@ -4120,7 +4121,7 @@ msgstr "" #: qcsrc/common/notifications/all.inc:788 msgid "^F2Intruder detected, disabling shields!" -msgstr "" +msgstr "^F2Intruso detectado, desactivando escudos!" #: qcsrc/common/notifications/all.qh:188 msgid "Notification dump command only works with cl_cmd and sv_cmd.\n" @@ -4533,11 +4534,11 @@ msgstr "Presiona %s" #: qcsrc/common/vehicles/vehicle/bumblebee.qc:950 msgid "No right gunner!" -msgstr "Sin ametralladora derecha!" +msgstr "¡Sin artillero derecho!" #: qcsrc/common/vehicles/vehicle/bumblebee.qc:956 msgid "No left gunner!" -msgstr "Sin ametralladora izquierda!" +msgstr "¡Sin artillero izquierdo!" #: qcsrc/common/vehicles/vehicle/bumblebee.qh:19 msgid "Bumblebee" @@ -5041,7 +5042,7 @@ msgstr "Húngaro" #: qcsrc/menu/xonotic/credits.qc:231 msgid "Irish" -msgstr "" +msgstr "Irlandés" #: qcsrc/menu/xonotic/credits.qc:234 msgid "Italian" @@ -5073,7 +5074,7 @@ msgstr "Ruso" #: qcsrc/menu/xonotic/credits.qc:279 msgid "Scottish Gaelic" -msgstr "" +msgstr "Gaélico escocés" #: qcsrc/menu/xonotic/credits.qc:282 msgid "Serbian" @@ -7390,7 +7391,7 @@ msgstr "Ajustado" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:163 msgid "Decals" -msgstr "Símbolos" +msgstr "Calcomanía" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:164 msgid "Enable decals (bullet holes and blood) (default: enabled)" diff --git a/common.he.po b/common.he.po index abdf38575f..593e684a64 100644 --- a/common.he.po +++ b/common.he.po @@ -16,7 +16,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % " +"1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" #: qcsrc/client/hud/hud_config.qc:239 #, c-format diff --git a/common.kk@Cyrl.po b/common.kk@Cyrl.po index 60d4b36c96..6738cdd3ec 100644 --- a/common.kk@Cyrl.po +++ b/common.kk@Cyrl.po @@ -20,7 +20,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" #: qcsrc/client/hud/hud_config.qc:239 #, c-format diff --git a/common.kw.po b/common.kw.po index 33fbaf5be4..7562f10ba6 100644 --- a/common.kw.po +++ b/common.kw.po @@ -3,22 +3,23 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Nicky Rowe , 2016 +# Nicky Rowe , 2016,2018 +# Nicky Rowe , 2016 +# Nicky Rowe , 2016 msgid "" msgstr "" "Project-Id-Version: Xonotic\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-07-09 00:35+0200\n" -"PO-Revision-Date: 2017-09-22 11:16+0000\n" -"Last-Translator: divVerent \n" +"PO-Revision-Date: 2018-04-28 07:53+0000\n" +"Last-Translator: Nicky Rowe \n" "Language-Team: Cornish (http://www.transifex.com/team-xonotic/xonotic/" "language/kw/)\n" "Language: kw\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n == 3) ? 2 : " -"3;\n" +"Plural-Forms: nplurals=3; plural=(n == 1 ? 0 : n == 2 ? 1 : 2);\n" #: qcsrc/client/hud/hud_config.qc:239 #, c-format @@ -56,7 +57,7 @@ msgstr "^1Gweskewgh ^3%s^1 rag mires" #: qcsrc/client/hud/panel/infomessages.qc:100 #: qcsrc/menu/xonotic/keybinder.qc:40 msgid "primary fire" -msgstr "" +msgstr "tenn kensa" #: qcsrc/client/hud/panel/infomessages.qc:102 #, c-format @@ -66,12 +67,12 @@ msgstr "^1Gweskewgh ^3%s^1 po ^3%s^1 rag an gwarier nessa po kyns" #: qcsrc/client/hud/panel/infomessages.qc:102 #: qcsrc/client/hud/panel/infomessages.qc:106 msgid "next weapon" -msgstr "" +msgstr "arv nessa" #: qcsrc/client/hud/panel/infomessages.qc:102 #: qcsrc/client/hud/panel/infomessages.qc:106 msgid "previous weapon" -msgstr "" +msgstr "arv gens" #: qcsrc/client/hud/panel/infomessages.qc:106 #, c-format @@ -81,17 +82,17 @@ msgstr "^1Usyewgh ^3%s^1 po ^3%s^1 rag chanjya an tooth" #: qcsrc/client/hud/panel/infomessages.qc:108 #, c-format msgid "^1Press ^3%s^1 to observe, ^3%s^1 to change camera mode" -msgstr "" +msgstr "^1Gweskewgh ^3%s^1 aspia, ^3%s^1 dhe janjya modh an kamera" #: qcsrc/client/hud/panel/infomessages.qc:108 #: qcsrc/common/vehicles/cl_vehicles.qc:192 msgid "drop weapon" -msgstr "" +msgstr "droppya an arv" #: qcsrc/client/hud/panel/infomessages.qc:108 #: qcsrc/menu/xonotic/keybinder.qc:41 msgid "secondary fire" -msgstr "" +msgstr "tenn nessa" #: qcsrc/client/hud/panel/infomessages.qc:111 #, c-format @@ -101,7 +102,7 @@ msgstr "^1Gweskewgh ^3%s^1 rag kedhlow an modh gwari" #: qcsrc/client/hud/panel/infomessages.qc:111 #: qcsrc/menu/xonotic/keybinder.qc:94 msgid "server info" -msgstr "" +msgstr "kedhlow an servyer" #: qcsrc/client/hud/panel/infomessages.qc:124 msgid "^1Match has already begun" @@ -120,7 +121,7 @@ msgstr "^1Gweskewgh ^3%s^1 dhe junya" #: qcsrc/client/hud/panel/infomessages.qc:128 #: qcsrc/client/hud/panel/infomessages.qc:131 msgid "jump" -msgstr "" +msgstr "lamma" #: qcsrc/client/hud/panel/infomessages.qc:139 #, c-format @@ -141,7 +142,7 @@ msgstr "%sGweskewgh ^3%s%s rag diwedha an tommheans" #: qcsrc/client/hud/panel/infomessages.qc:175 #: qcsrc/menu/xonotic/keybinder.qc:91 msgid "ready" -msgstr "" +msgstr "parys" #: qcsrc/client/hud/panel/infomessages.qc:162 #, c-format @@ -173,15 +174,15 @@ msgstr " Gweskewgh ^3%s%s rag kompeshe" #: qcsrc/client/hud/panel/infomessages.qc:199 #: qcsrc/menu/xonotic/keybinder.qc:102 msgid "team menu" -msgstr "" +msgstr "rol an para" #: qcsrc/client/hud/panel/infomessages.qc:209 msgid "^1Spectating this player:" -msgstr "" +msgstr "^1Owth aspia an gwarier ma:" #: qcsrc/client/hud/panel/infomessages.qc:209 msgid "^1Spectating you:" -msgstr "" +msgstr "^1Orth dha aspia:" #: qcsrc/client/hud/panel/infomessages.qc:225 msgid "^7Press ^3ESC ^7to show HUD options." @@ -340,7 +341,7 @@ msgstr "QMCMD^doger an baner ledhys (l:%y^7)" #: qcsrc/client/hud/panel/quickmenu.qc:814 msgid "QMCMD^killed flagcarrier, icon" -msgstr "" +msgstr "QMCMD^a ladhas doger an baner, arwodhik" #: qcsrc/client/hud/panel/quickmenu.qc:815 #, c-format @@ -353,11 +354,11 @@ msgstr "QMCMD^baner droppyes, arwodhik" #: qcsrc/client/hud/panel/quickmenu.qc:816 msgid "QMCMD^drop weapon, icon" -msgstr "" +msgstr "QMCMD^droppya an arv, arwodhik" #: qcsrc/client/hud/panel/quickmenu.qc:816 msgid "QMCMD^dropped weapon %w^7 (l:%l^7)" -msgstr "" +msgstr "QMCMD^a dhroppyas an arv %w^7 (l:%l^7)" #: qcsrc/client/hud/panel/quickmenu.qc:817 msgid "QMCMD^drop flag/key, icon" @@ -555,7 +556,7 @@ msgstr "SCO^distruys" #: qcsrc/client/hud/panel/scoreboard.qc:84 msgid "SCO^damage" -msgstr "" +msgstr "SCO^damach" #: qcsrc/client/hud/panel/scoreboard.qc:85 msgid "SCO^dmgtaken" @@ -655,7 +656,7 @@ msgstr "SCO^teudhys" #: qcsrc/client/hud/panel/scoreboard.qc:109 msgid "SCO^rounds won" -msgstr "" +msgstr "SCO^rondys gwaynyes" #: qcsrc/client/hud/panel/scoreboard.qc:110 msgid "SCO^score" @@ -702,7 +703,7 @@ msgstr "Aswonys yw an henwyn skrifva a sew (nyns yw an kas aswonys):\n" #: qcsrc/client/hud/panel/scoreboard.qc:301 msgid "You can use a ^3|^7 to start the right-aligned fields.\n" -msgstr "" +msgstr "Ty a yll usya ^3|^7 rag dalleth an parkow alinys a-dhyghow.\n" #: qcsrc/client/hud/panel/scoreboard.qc:304 msgid "^3name^7 or ^3nick^7 Name of a player\n" @@ -718,7 +719,7 @@ msgstr "^3pl^7 Fardelligow kellys\n" #: qcsrc/client/hud/panel/scoreboard.qc:307 msgid "^3elo^7 Player ELO\n" -msgstr "" +msgstr "^3elo^7 ELO an gwarier\n" #: qcsrc/client/hud/panel/scoreboard.qc:308 msgid "^3kills^7 Number of kills\n" @@ -851,7 +852,7 @@ msgstr "" #: qcsrc/client/hud/panel/scoreboard.qc:335 msgid "^3score^7 Total score\n" -msgstr "" +msgstr "^3score^7 Skor dien\n" #: qcsrc/client/hud/panel/scoreboard.qc:338 msgid "" @@ -928,7 +929,7 @@ msgstr "Kevrinyow diskudhys:" #: qcsrc/client/hud/panel/scoreboard.qc:1354 msgid "Capture time rankings" -msgstr "" +msgstr "Renkyow an termyn sesya" #: qcsrc/client/hud/panel/scoreboard.qc:1354 msgid "Rankings" @@ -942,12 +943,12 @@ msgstr "Bord an skoryow" #: qcsrc/client/hud/panel/scoreboard.qc:1584 #, c-format msgid "Speed award: %d%s ^7(%s^7)" -msgstr "" +msgstr "Powas tooth: %d%s ^7(%s^7)" #: qcsrc/client/hud/panel/scoreboard.qc:1588 #, c-format msgid "All-time fastest: %d%s ^7(%s^7)" -msgstr "" +msgstr "An kreffa oll-dermyn: %d%s ^7(%s^7)" #: qcsrc/client/hud/panel/scoreboard.qc:1604 #, c-format @@ -1039,7 +1040,7 @@ msgstr "^1Restra an HUD" #: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:16 #: qcsrc/menu/xonotic/dialog_uid2name.qc:15 msgid "Yes" -msgstr "" +msgstr "Ya" #: qcsrc/client/hud/panel/vote.qc:127 qcsrc/menu/xonotic/dialog_firstrun.qc:83 #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:21 @@ -1049,7 +1050,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:17 #: qcsrc/menu/xonotic/dialog_uid2name.qc:17 msgid "No" -msgstr "" +msgstr "Na" #: qcsrc/client/hud/panel/weapons.qc:530 msgid "Out of ammo" @@ -1139,7 +1140,7 @@ msgstr "Euryer granaden" #: qcsrc/client/view.qc:1385 msgid "Capture progress" -msgstr "" +msgstr "Spedyans ow sesya" #: qcsrc/client/view.qc:1390 msgid "Revival progress" @@ -1160,7 +1161,7 @@ msgstr "Lader pelyow" #: qcsrc/common/items/item/armor.qh:111 msgid "Big armor" -msgstr "" +msgstr "Arvwisk bras" #: qcsrc/common/items/item/armor.qh:147 msgid "Mega armor" @@ -1168,7 +1169,7 @@ msgstr "Arvwisk mega" #: qcsrc/common/items/item/health.qh:111 msgid "Big health" -msgstr "" +msgstr "Yeghes bras" #: qcsrc/common/items/item/health.qh:147 msgid "Mega health" @@ -1308,6 +1309,8 @@ msgid "" "Kill enemies to freeze them, stand next to frozen teammates to revive them; " "freeze all enemies to win" msgstr "" +"Ladh eskerens rag aga rewi, sav ryb dha bara rag aga dasserghi; rew pub " +"eskar rag gwaynya" #: qcsrc/common/mapinfo.qh:446 msgid "Hold the ball to get points for kills" @@ -1514,135 +1517,135 @@ msgstr "Lemmewgh darn a-ugh darn aral rag y sesya" #: qcsrc/common/minigames/minigame/ttt.qc:666 msgid "Single Player" -msgstr "" +msgstr "Unn gwarier" #: qcsrc/common/monsters/monster/mage.qh:17 #: qcsrc/menu/xonotic/dialog_monstertools.qc:18 msgid "Mage" -msgstr "" +msgstr "Huder" #: qcsrc/common/monsters/monster/mage.qh:29 msgid "Mage spike" -msgstr "" +msgstr "Spik an huder" #: qcsrc/common/monsters/monster/shambler.qh:17 #: qcsrc/menu/xonotic/dialog_monstertools.qc:17 msgid "Shambler" -msgstr "" +msgstr "Shambler" #: qcsrc/common/monsters/monster/spider.qh:17 #: qcsrc/menu/xonotic/dialog_monstertools.qc:16 msgid "Spider" -msgstr "" +msgstr "Kevnisen" #: qcsrc/common/monsters/monster/spider.qh:28 msgid "Spider attack" -msgstr "" +msgstr "Omsettyans kevnisen" #: qcsrc/common/monsters/monster/wyvern.qh:17 #: qcsrc/menu/xonotic/dialog_monstertools.qc:19 msgid "Wyvern" -msgstr "" +msgstr "Dragon" #: qcsrc/common/monsters/monster/wyvern.qh:28 msgid "Wyvern attack" -msgstr "" +msgstr "Omsettyans dragon" #: qcsrc/common/monsters/monster/zombie.qh:17 #: qcsrc/menu/xonotic/dialog_monstertools.qc:15 msgid "Zombie" -msgstr "" +msgstr "Zombi" #: qcsrc/common/mutators/mutator/buffs/all.inc:15 msgid "Ammo" -msgstr "" +msgstr "Daffar ladhva" #: qcsrc/common/mutators/mutator/buffs/all.inc:24 msgid "Resistance" -msgstr "" +msgstr "Defens" #: qcsrc/common/mutators/mutator/buffs/all.inc:33 #: qcsrc/common/mutators/mutator/instagib/items.qh:94 msgid "Speed" -msgstr "" +msgstr "Tooth" #: qcsrc/common/mutators/mutator/buffs/all.inc:43 msgid "Medic" -msgstr "" +msgstr "Medhek" #: qcsrc/common/mutators/mutator/buffs/all.inc:54 msgid "Bash" -msgstr "" +msgstr "Kronkya" #: qcsrc/common/mutators/mutator/buffs/all.inc:62 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:85 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:177 msgid "Vampire" -msgstr "" +msgstr "Vampir" #: qcsrc/common/mutators/mutator/buffs/all.inc:70 msgid "Disability" -msgstr "" +msgstr "Anles" #: qcsrc/common/mutators/mutator/buffs/all.inc:78 msgid "Vengeance" -msgstr "" +msgstr "Venjyans" #: qcsrc/common/mutators/mutator/buffs/all.inc:86 msgid "Jump" -msgstr "" +msgstr "Lamma" #: qcsrc/common/mutators/mutator/buffs/all.inc:95 msgid "Invisible" -msgstr "" +msgstr "Anweladow" #: qcsrc/common/mutators/mutator/buffs/all.inc:104 msgid "Inferno" -msgstr "" +msgstr "Inferno" #: qcsrc/common/mutators/mutator/buffs/all.inc:112 msgid "Swapper" -msgstr "" +msgstr "Keschanj" #: qcsrc/common/mutators/mutator/buffs/all.inc:120 msgid "Magnet" -msgstr "" +msgstr "Tennven" #: qcsrc/common/mutators/mutator/buffs/all.inc:128 msgid "Luck" -msgstr "" +msgstr "Chons" #: qcsrc/common/mutators/mutator/buffs/all.inc:136 msgid "Flight" -msgstr "" +msgstr "Neyj" #: qcsrc/common/mutators/mutator/buffs/buffs.qh:7 msgid "Buff" -msgstr "" +msgstr "Bonus" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:8 msgid "Damage text" -msgstr "" +msgstr "Tekst damach" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:18 msgid "Draw damage numbers" -msgstr "" +msgstr "Delinya niverow damach" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:20 msgid "Font size minimum:" -msgstr "" +msgstr "Myns font an lyha:" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:25 msgid "Font size maximum:" -msgstr "" +msgstr "Myns font an ughella:" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:30 msgid "Accumulate range:" -msgstr "" +msgstr "Kuntel towlhys:" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:35 msgid "Lifetime:" -msgstr "" +msgstr "Termyn bewnans:" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:40 #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:50 @@ -1656,11 +1659,11 @@ msgstr "Liw:" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:47 msgid "Draw damage numbers for friendly fire" -msgstr "" +msgstr "Delinya niverow damach rag tenn kowethek" #: qcsrc/common/mutators/mutator/instagib/items.qh:56 msgid "Extra life" -msgstr "" +msgstr "Bewnans keworransel" #: qcsrc/common/mutators/mutator/instagib/items.qh:75 msgid "Invisibility" @@ -1668,51 +1671,51 @@ msgstr "Anweladowder" #: qcsrc/common/mutators/mutator/nades/nades.inc:18 msgid "Napalm grenade" -msgstr "" +msgstr "Grenad napalm" #: qcsrc/common/mutators/mutator/nades/nades.inc:26 msgid "Ice grenade" -msgstr "" +msgstr "Grenad rew" #: qcsrc/common/mutators/mutator/nades/nades.inc:34 msgid "Translocate grenade" -msgstr "" +msgstr "Grenad treustesedha" #: qcsrc/common/mutators/mutator/nades/nades.inc:42 msgid "Spawn grenade" -msgstr "" +msgstr "Grenad dinythi" #: qcsrc/common/mutators/mutator/nades/nades.inc:50 msgid "Heal grenade" -msgstr "" +msgstr "Grenad sawya" #: qcsrc/common/mutators/mutator/nades/nades.inc:58 msgid "Monster grenade" -msgstr "" +msgstr "Grenad euthvil" #: qcsrc/common/mutators/mutator/nades/nades.inc:66 msgid "Entrap grenade" -msgstr "" +msgstr "Grenad maglenna" #: qcsrc/common/mutators/mutator/nades/nades.qh:32 msgid "Grenade" -msgstr "" +msgstr "Grenad" #: qcsrc/common/mutators/mutator/overkill/hmg.qh:17 msgid "Heavy Machine Gun" -msgstr "" +msgstr "Gonn Jynn Poos" #: qcsrc/common/mutators/mutator/overkill/rpc.qh:17 msgid "Rocket Propelled Chainsaw" -msgstr "" +msgstr "Hesken gadon rocket" #: qcsrc/common/mutators/mutator/waypoints/all.inc:3 msgid "Waypoint" -msgstr "" +msgstr "Fordhva" #: qcsrc/common/mutators/mutator/waypoints/all.inc:4 msgid "Help me!" -msgstr "" +msgstr "Gweres vy!" #: qcsrc/common/mutators/mutator/waypoints/all.inc:5 msgid "Here" @@ -1720,7 +1723,7 @@ msgstr "Omma" #: qcsrc/common/mutators/mutator/waypoints/all.inc:6 msgid "DANGER" -msgstr "" +msgstr "PERYL" #: qcsrc/common/mutators/mutator/waypoints/all.inc:8 msgid "Frozen!" @@ -1728,11 +1731,11 @@ msgstr "Rewys!" #: qcsrc/common/mutators/mutator/waypoints/all.inc:10 msgid "Item" -msgstr "" +msgstr "Tra" #: qcsrc/common/mutators/mutator/waypoints/all.inc:12 msgid "Checkpoint" -msgstr "" +msgstr "Checkva" #: qcsrc/common/mutators/mutator/waypoints/all.inc:13 #: qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc:252 @@ -1747,51 +1750,51 @@ msgstr "Dallethva" #: qcsrc/common/mutators/mutator/waypoints/all.inc:17 msgid "Defend" -msgstr "" +msgstr "Difres" #: qcsrc/common/mutators/mutator/waypoints/all.inc:18 msgid "Destroy" -msgstr "" +msgstr "Distrui" #: qcsrc/common/mutators/mutator/waypoints/all.inc:19 msgid "Push" -msgstr "" +msgstr "Herdhya" #: qcsrc/common/mutators/mutator/waypoints/all.inc:21 msgid "Flag carrier" -msgstr "" +msgstr "Doger an baner" #: qcsrc/common/mutators/mutator/waypoints/all.inc:22 msgid "Enemy carrier" -msgstr "" +msgstr "Doger an anvi" #: qcsrc/common/mutators/mutator/waypoints/all.inc:23 msgid "Dropped flag" -msgstr "" +msgstr "Baner droppyes" #: qcsrc/common/mutators/mutator/waypoints/all.inc:24 msgid "White base" -msgstr "" +msgstr "Selva wynn" #: qcsrc/common/mutators/mutator/waypoints/all.inc:25 msgid "Red base" -msgstr "" +msgstr "Selva rudh" #: qcsrc/common/mutators/mutator/waypoints/all.inc:26 msgid "Blue base" -msgstr "" +msgstr "Selva las" #: qcsrc/common/mutators/mutator/waypoints/all.inc:27 msgid "Yellow base" -msgstr "" +msgstr "Selva velyn" #: qcsrc/common/mutators/mutator/waypoints/all.inc:28 msgid "Pink base" -msgstr "" +msgstr "Selva wynnrudh" #: qcsrc/common/mutators/mutator/waypoints/all.inc:29 msgid "Return flag here" -msgstr "" +msgstr "Daskor an baner arta" #: qcsrc/common/mutators/mutator/waypoints/all.inc:31 #: qcsrc/common/mutators/mutator/waypoints/all.inc:32 @@ -1802,11 +1805,11 @@ msgstr "" #: qcsrc/common/mutators/mutator/waypoints/all.inc:52 #: qcsrc/common/mutators/mutator/waypoints/all.inc:53 msgid "Control point" -msgstr "" +msgstr "Kontrolva" #: qcsrc/common/mutators/mutator/waypoints/all.inc:37 msgid "Dropped key" -msgstr "" +msgstr "Alhwedh droppyes" #: qcsrc/common/mutators/mutator/waypoints/all.inc:38 #: qcsrc/common/mutators/mutator/waypoints/all.inc:40 @@ -1814,11 +1817,11 @@ msgstr "" #: qcsrc/common/mutators/mutator/waypoints/all.inc:42 #: qcsrc/common/mutators/mutator/waypoints/all.inc:43 msgid "Key carrier" -msgstr "" +msgstr "Deger an alhwedh" #: qcsrc/common/mutators/mutator/waypoints/all.inc:39 msgid "Run here" -msgstr "" +msgstr "Poon bys yn omma" #: qcsrc/common/mutators/mutator/waypoints/all.inc:45 #: qcsrc/common/mutators/mutator/waypoints/all.inc:48 @@ -1827,54 +1830,55 @@ msgstr "Pel" #: qcsrc/common/mutators/mutator/waypoints/all.inc:46 msgid "Ball carrier" -msgstr "" +msgstr "Deger an bel" #: qcsrc/common/mutators/mutator/waypoints/all.inc:49 msgid "Goal" -msgstr "" +msgstr "Gol" #: qcsrc/common/mutators/mutator/waypoints/all.inc:54 #: qcsrc/common/mutators/mutator/waypoints/all.inc:55 msgid "Generator" -msgstr "" +msgstr "Dinythor" #: qcsrc/common/mutators/mutator/waypoints/all.inc:57 msgid "Weapon" -msgstr "" +msgstr "Arv" #: qcsrc/common/mutators/mutator/waypoints/all.inc:59 msgid "Monster" -msgstr "" +msgstr "Euthvil" #: qcsrc/common/mutators/mutator/waypoints/all.inc:61 msgid "Vehicle" -msgstr "" +msgstr "Karr" #: qcsrc/common/mutators/mutator/waypoints/all.inc:62 msgid "Intruder!" -msgstr "" +msgstr "Kammdremener!" #: qcsrc/common/mutators/mutator/waypoints/all.inc:64 msgid "Tagged" -msgstr "" +msgstr "Taggys" #: qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc:651 #: qcsrc/common/turrets/cl_turrets.qc:120 msgid "Spam" -msgstr "" +msgstr "Spam" #: qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc:655 #, c-format msgid "%s needing help!" -msgstr "" +msgstr "%s ow kovyn gweres!" #: qcsrc/common/net_notice.qc:87 msgid "^1Server notices:" -msgstr "" +msgstr "^1Notyansow an servyer:" #: qcsrc/common/notifications/all.inc:239 msgid "^F4NOTE: ^BGSpectator chat is not sent to players during the match" msgstr "" +"^F4NOTEN: ^BGNyns yw klap an viroryon danvenys dhe warioryon dres an fytt" #: qcsrc/common/notifications/all.inc:241 #, c-format diff --git a/common.ms.po b/common.ms.po new file mode 100644 index 0000000000..f50708e104 --- /dev/null +++ b/common.ms.po @@ -0,0 +1,9172 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Muhammad Nur Hidayat Yasuyoshi , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Xonotic\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-09 00:35+0200\n" +"PO-Revision-Date: 2018-05-29 05:44+0000\n" +"Last-Translator: Muhammad Nur Hidayat Yasuyoshi \n" +"Language-Team: Malay (http://www.transifex.com/team-xonotic/xonotic/language/" +"ms/)\n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: qcsrc/client/hud/hud_config.qc:239 +#, c-format +msgid "^2Successfully exported to %s! (Note: It's saved in data/data/)\n" +msgstr "^2Berjaya dieksport ke %s! (Nota: Ia disimpan di data/data/)\n" + +#: qcsrc/client/hud/hud_config.qc:243 +#, c-format +msgid "^1Couldn't write to %s\n" +msgstr "^1Tidak boleh menulis ke %s\n" + +#: qcsrc/client/hud/panel/chat.qc:82 +msgid "^3Player^7: This is the chat area." +msgstr "^3Pemain^7: Ini kawasan sembang." + +#: qcsrc/client/hud/panel/engineinfo.qc:69 +#, c-format +msgid "FPS: %.*f" +msgstr "FPS: %.*f" + +#: qcsrc/client/hud/panel/infomessages.qc:87 +msgid "^1Observing" +msgstr "^1Memerhati" + +#: qcsrc/client/hud/panel/infomessages.qc:89 +#, c-format +msgid "^1Spectating: ^7%s" +msgstr "^1Menonton: ^7%s" + +#: qcsrc/client/hud/panel/infomessages.qc:100 +#, c-format +msgid "^1Press ^3%s^1 to spectate" +msgstr "^1Tekan ^3%s^1 untuk menonton" + +#: qcsrc/client/hud/panel/infomessages.qc:100 +#: qcsrc/menu/xonotic/keybinder.qc:40 +msgid "primary fire" +msgstr "senjata api utama" + +#: qcsrc/client/hud/panel/infomessages.qc:102 +#, c-format +msgid "^1Press ^3%s^1 or ^3%s^1 for next or previous player" +msgstr "^1Tekan ^3%s^1 atau ^3%s^1 untuk pemain seterusnya atau sebelumnya" + +#: qcsrc/client/hud/panel/infomessages.qc:102 +#: qcsrc/client/hud/panel/infomessages.qc:106 +msgid "next weapon" +msgstr "senjata seterusnya" + +#: qcsrc/client/hud/panel/infomessages.qc:102 +#: qcsrc/client/hud/panel/infomessages.qc:106 +msgid "previous weapon" +msgstr "senjata sebelumnya" + +#: qcsrc/client/hud/panel/infomessages.qc:106 +#, c-format +msgid "^1Use ^3%s^1 or ^3%s^1 to change the speed" +msgstr "^1Gunakan ^3%s^1 atau ^3%s^1 untuk mengubah kelajuan" + +#: qcsrc/client/hud/panel/infomessages.qc:108 +#, c-format +msgid "^1Press ^3%s^1 to observe, ^3%s^1 to change camera mode" +msgstr "^1Tekan ^3%s^1 untuk memerhati, ^3%s^1 untuk tukar mod kamera" + +#: qcsrc/client/hud/panel/infomessages.qc:108 +#: qcsrc/common/vehicles/cl_vehicles.qc:192 +msgid "drop weapon" +msgstr "jatuhkan senjata" + +#: qcsrc/client/hud/panel/infomessages.qc:108 +#: qcsrc/menu/xonotic/keybinder.qc:41 +msgid "secondary fire" +msgstr "senjata api kedua" + +#: qcsrc/client/hud/panel/infomessages.qc:111 +#, c-format +msgid "^1Press ^3%s^1 for gamemode info" +msgstr "^1Tekan ^3%s^1 untuk maklumat mod permainan" + +#: qcsrc/client/hud/panel/infomessages.qc:111 +#: qcsrc/menu/xonotic/keybinder.qc:94 +msgid "server info" +msgstr "maklumat pelayan" + +#: qcsrc/client/hud/panel/infomessages.qc:124 +msgid "^1Match has already begun" +msgstr "^1Perlawanan telah bermula" + +#: qcsrc/client/hud/panel/infomessages.qc:126 +msgid "^1You have no more lives left" +msgstr "^1Anda dah kehabisan nyawa" + +#: qcsrc/client/hud/panel/infomessages.qc:128 +#: qcsrc/client/hud/panel/infomessages.qc:131 +#, c-format +msgid "^1Press ^3%s^1 to join" +msgstr "^1Tekan ^3%s^1 untuk ikut serta" + +#: qcsrc/client/hud/panel/infomessages.qc:128 +#: qcsrc/client/hud/panel/infomessages.qc:131 +msgid "jump" +msgstr "lompat" + +#: qcsrc/client/hud/panel/infomessages.qc:139 +#, c-format +msgid "^1Game starts in ^3%d^1 seconds" +msgstr "^1Permainan bermula dalam ^3%d^1 saat" + +#: qcsrc/client/hud/panel/infomessages.qc:145 +msgid "^2Currently in ^1warmup^2 stage!" +msgstr "^2Kini ni peringkat ^1panaskan badan^2!" + +#: qcsrc/client/hud/panel/infomessages.qc:160 +#, c-format +msgid "%sPress ^3%s%s to end warmup" +msgstr "%sTekan ^3%s%s untuk tamatkan sesi panaskan badan" + +#: qcsrc/client/hud/panel/infomessages.qc:160 +#: qcsrc/client/hud/panel/infomessages.qc:162 +#: qcsrc/client/hud/panel/infomessages.qc:175 +#: qcsrc/menu/xonotic/keybinder.qc:91 +msgid "ready" +msgstr "bersedia" + +#: qcsrc/client/hud/panel/infomessages.qc:162 +#, c-format +msgid "%sPress ^3%s%s once you are ready" +msgstr "%sTekan ^3%s%s apabila anda dah bersedia" + +#: qcsrc/client/hud/panel/infomessages.qc:167 +msgid "^2Waiting for others to ready up to end warmup..." +msgstr "" +"^2Menunggu yang lain untuk bersedia sebelum menamatkan sesi panaskan badan..." + +#: qcsrc/client/hud/panel/infomessages.qc:169 +msgid "^2Waiting for others to ready up..." +msgstr "^2Menunggu yang lain untuk bersedia..." + +#: qcsrc/client/hud/panel/infomessages.qc:175 +#, c-format +msgid "^2Press ^3%s^2 to end warmup" +msgstr "^2Tekan ^3%s^2 untuk tamatkan sesi panaskan badan" + +#: qcsrc/client/hud/panel/infomessages.qc:196 +msgid "Teamnumbers are unbalanced!" +msgstr "Jumlah ahli pasukan tidak seimbang!" + +#: qcsrc/client/hud/panel/infomessages.qc:199 +#, c-format +msgid " Press ^3%s%s to adjust" +msgstr " Tekan ^3%s%s untuk susun" + +#: qcsrc/client/hud/panel/infomessages.qc:199 +#: qcsrc/menu/xonotic/keybinder.qc:102 +msgid "team menu" +msgstr "menu pasukan" + +#: qcsrc/client/hud/panel/infomessages.qc:209 +msgid "^1Spectating this player:" +msgstr "^1Menonton pemain ini:" + +#: qcsrc/client/hud/panel/infomessages.qc:209 +msgid "^1Spectating you:" +msgstr "^1Menonton anda:" + +#: qcsrc/client/hud/panel/infomessages.qc:225 +msgid "^7Press ^3ESC ^7to show HUD options." +msgstr "^7Tekan ^3ESC ^7untuk menunjukkan pilihan HUD." + +#: qcsrc/client/hud/panel/infomessages.qc:226 +msgid "^3Doubleclick ^7a panel for panel-specific options." +msgstr "^3Klik dua kali ^7a panel untuk pilihan khusus panel." + +#: qcsrc/client/hud/panel/infomessages.qc:227 +msgid "^3CTRL ^7to disable collision testing, ^3SHIFT ^7and" +msgstr "^3CTRL ^7untuk melumpuhkan percubaan perlanggaran, ^3SHIFT ^7dan" + +#: qcsrc/client/hud/panel/infomessages.qc:228 +msgid "^3ALT ^7+ ^3ARROW KEYS ^7for fine adjustments." +msgstr "^3ALT ^7+ ^3KEKUNCI ANAK PANAH ^7untuk pelarasan halus." + +#: qcsrc/client/hud/panel/modicons.qc:566 +msgid "Personal best" +msgstr "Pencapaian terbaik peribadi" + +#: qcsrc/client/hud/panel/modicons.qc:576 +msgid "Server best" +msgstr "Pencapaian terbaik pelayan" + +#: qcsrc/client/hud/panel/notify.qc:115 qcsrc/client/hud/panel/notify.qc:116 +#: qcsrc/client/hud/panel/score.qc:59 +#, c-format +msgid "Player %d" +msgstr "Pemain %d" + +#: qcsrc/client/hud/panel/quickmenu.qc:603 +#: qcsrc/client/hud/panel/quickmenu.qc:605 +#, c-format +msgid "Submenu%d" +msgstr "Submenu%d" + +#: qcsrc/client/hud/panel/quickmenu.qc:610 +#, c-format +msgid "Command%d" +msgstr "Perintah%d" + +#: qcsrc/client/hud/panel/quickmenu.qc:636 +msgid "Continue..." +msgstr "Teruskan..." + +#: qcsrc/client/hud/panel/quickmenu.qc:794 +#: qcsrc/client/hud/panel/quickmenu.qc:798 +msgid "Chat" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:795 +msgid "QMCMD^:-) / nice one" +msgstr "QMCMD^:-) / hebat" + +#: qcsrc/client/hud/panel/quickmenu.qc:795 +msgid "QMCMD^nice one" +msgstr "QMCMD^hebat" + +#: qcsrc/client/hud/panel/quickmenu.qc:796 +msgid "QMCMD^good game" +msgstr "QMCMD^terbaiklah" + +#: qcsrc/client/hud/panel/quickmenu.qc:797 +msgid "QMCMD^hi / good luck" +msgstr "QMCMD^hai / semoga berjaya" + +#: qcsrc/client/hud/panel/quickmenu.qc:797 +msgid "QMCMD^hi / good luck and have fun" +msgstr "QMCMD^hai / semoga berjaya dan bergembiralah" + +#: qcsrc/client/hud/panel/quickmenu.qc:802 +#: qcsrc/client/hud/panel/quickmenu.qc:818 +msgid "QMCMD^Team chat" +msgstr "QMCMD^Sembang pasukan" + +#: qcsrc/client/hud/panel/quickmenu.qc:803 +msgid "QMCMD^quad soon" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:804 +msgid "QMCMD^free item %x^7 (l:%y^7)" +msgstr "QMCMD^item percuma %x^7 (l:%y^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:804 +msgid "QMCMD^free item, icon" +msgstr "QMCMD^item percuma, ikon" + +#: qcsrc/client/hud/panel/quickmenu.qc:805 +msgid "QMCMD^took item (l:%l^7)" +msgstr "QMCMD^mengambil item (l:%l^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:805 +msgid "QMCMD^took item, icon" +msgstr "QMCMD^mengambil item, ikon" + +#: qcsrc/client/hud/panel/quickmenu.qc:806 +msgid "QMCMD^negative" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:807 +msgid "QMCMD^positive" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:808 +msgid "QMCMD^need help (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:808 +msgid "QMCMD^need help, icon" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:809 +msgid "QMCMD^enemy seen (l:%y^7)" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:809 +msgid "QMCMD^enemy seen, icon" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:810 +msgid "QMCMD^flag seen (l:%y^7)" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:810 +msgid "QMCMD^flag seen, icon" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:811 +msgid "QMCMD^defending (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:811 +msgid "QMCMD^defending, icon" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:812 +msgid "QMCMD^roaming (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:812 +msgid "QMCMD^roaming, icon" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:813 +msgid "QMCMD^attacking (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:813 +msgid "QMCMD^attacking, icon" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:814 +msgid "QMCMD^killed flagcarrier (l:%y^7)" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:814 +msgid "QMCMD^killed flagcarrier, icon" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:815 +#, c-format +msgid "QMCMD^dropped flag (l:%d^7)" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:815 +msgid "QMCMD^dropped flag, icon" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:816 +msgid "QMCMD^drop weapon, icon" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:816 +msgid "QMCMD^dropped weapon %w^7 (l:%l^7)" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:817 +msgid "QMCMD^drop flag/key, icon" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:817 +msgid "QMCMD^dropped flag/key %w^7 (l:%l^7)" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:821 +msgid "QMCMD^Send private message to" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:823 +#: qcsrc/client/hud/panel/quickmenu.qc:860 +msgid "QMCMD^Settings" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:824 +#: qcsrc/client/hud/panel/quickmenu.qc:831 +msgid "QMCMD^View/HUD settings" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:825 +msgid "QMCMD^3rd person view" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:826 +msgid "QMCMD^Player models like mine" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:827 +msgid "QMCMD^Names above players" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:828 +msgid "QMCMD^Crosshair per weapon" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:829 +msgid "QMCMD^FPS" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:830 +msgid "QMCMD^Net graph" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:833 +#: qcsrc/client/hud/panel/quickmenu.qc:836 +msgid "QMCMD^Sound settings" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:834 +msgid "QMCMD^Hit sound" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:835 +msgid "QMCMD^Chat sound" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:840 +#: qcsrc/client/hud/panel/quickmenu.qc:844 +msgid "QMCMD^Spectator camera" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:841 +msgid "QMCMD^1st person" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:842 +msgid "QMCMD^3rd person around player" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:843 +msgid "QMCMD^3rd person behind" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:849 +#: qcsrc/client/hud/panel/quickmenu.qc:854 +msgid "QMCMD^Observer camera" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:850 +msgid "QMCMD^Increase speed" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:851 +msgid "QMCMD^Decrease speed" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:852 +msgid "QMCMD^Wall collision off" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:853 +msgid "QMCMD^Wall collision on" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:857 +msgid "QMCMD^Fullscreen" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:859 +msgid "QMCMD^Translate chat messages" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:862 +#: qcsrc/client/hud/panel/quickmenu.qc:872 +msgid "QMCMD^Call a vote" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:863 +msgid "QMCMD^Restart the map" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:864 +msgid "QMCMD^End match" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:867 +msgid "QMCMD^Reduce match time" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:868 +msgid "QMCMD^Extend match time" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:871 +msgid "QMCMD^Shuffle teams" +msgstr "" + +#: qcsrc/client/hud/panel/racetimer.qc:37 +#, c-format +msgid " (-%dL)" +msgstr " (-%dL)" + +#: qcsrc/client/hud/panel/racetimer.qc:42 +#, c-format +msgid " (+%dL)" +msgstr " (+%dL)" + +#: qcsrc/client/hud/panel/racetimer.qc:61 +msgid "Start line" +msgstr "Garisan pemula" + +#: qcsrc/client/hud/panel/racetimer.qc:63 +#: qcsrc/client/hud/panel/racetimer.qc:67 +msgid "Finish line" +msgstr "Garisan penamat" + +#: qcsrc/client/hud/panel/racetimer.qc:65 +#, c-format +msgid "Intermediate %d" +msgstr "" + +#: qcsrc/client/hud/panel/racetimer.qc:132 +msgid "^1Intermediate 1 (+15.42)" +msgstr "" + +#: qcsrc/client/hud/panel/racetimer.qc:135 +#: qcsrc/client/hud/panel/racetimer.qc:177 +#: qcsrc/client/hud/panel/racetimer.qc:227 +#, c-format +msgid "^1PENALTY: %.1f (%s)" +msgstr "" + +#: qcsrc/client/hud/panel/racetimer.qc:229 +#, c-format +msgid "^2PENALTY: %.1f (%s)" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:78 +msgid "SCO^bckills" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:79 +msgid "SCO^bctime" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:80 +msgid "SCO^caps" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:81 +msgid "SCO^captime" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:82 +msgid "SCO^deaths" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:83 +msgid "SCO^destroyed" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:84 +msgid "SCO^damage" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:85 +msgid "SCO^dmgtaken" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:86 +msgid "SCO^drops" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:87 +msgid "SCO^faults" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:88 +msgid "SCO^fckills" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:89 +msgid "SCO^goals" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:90 +msgid "SCO^kckills" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:91 +msgid "SCO^kdratio" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:92 +msgid "SCO^k/d" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:93 +msgid "SCO^kdr" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:94 +msgid "SCO^kills" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:95 +msgid "SCO^laps" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:96 +msgid "SCO^lives" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:97 +msgid "SCO^losses" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:98 +msgid "SCO^name" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:99 +msgid "SCO^sum" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:100 +msgid "SCO^nick" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:101 +msgid "SCO^objectives" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:102 +msgid "SCO^pickups" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:103 +msgid "SCO^ping" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:104 +msgid "SCO^pl" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:105 +msgid "SCO^pushes" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:106 +msgid "SCO^rank" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:107 +msgid "SCO^returns" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:108 +msgid "SCO^revivals" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:109 +msgid "SCO^rounds won" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:110 +msgid "SCO^score" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:111 +msgid "SCO^suicides" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:112 +msgid "SCO^takes" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:113 +msgid "SCO^ticks" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:295 +msgid "" +"You can modify the scoreboard using the ^2scoreboard_columns_set command.\n" +msgstr "" +"Anda boleh mengubah papan markah menggunakan perintah " +"^2scoreboard_columns_set .\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:296 +msgid "^3|---------------------------------------------------------------|\n" +msgstr "^3|---------------------------------------------------------------|\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:297 +msgid "Usage:\n" +msgstr "Kegunaan:\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:298 +msgid "^2scoreboard_columns_set default\n" +msgstr "^2scoreboard_columns_set default\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:299 +msgid "^2scoreboard_columns_set ^7field1 field2 ...\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:300 +msgid "The following field names are recognized (case insensitive):\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:301 +msgid "You can use a ^3|^7 to start the right-aligned fields.\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:304 +msgid "^3name^7 or ^3nick^7 Name of a player\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:305 +msgid "^3ping^7 Ping time\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:306 +msgid "^3pl^7 Packet loss\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:307 +msgid "^3elo^7 Player ELO\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:308 +msgid "^3kills^7 Number of kills\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:309 +msgid "^3deaths^7 Number of deaths\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:310 +msgid "^3suicides^7 Number of suicides\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:311 +msgid "^3frags^7 kills - suicides\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:312 +msgid "^3kd^7 The kill-death ratio\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:313 +msgid "^3dmg^7 The total damage done\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:314 +msgid "^3dmgtaken^7 The total damage taken\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:315 +msgid "^3sum^7 frags - deaths\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:316 +msgid "" +"^3caps^7 How often a flag (CTF) or a key (KeyHunt) was " +"captured\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:317 +msgid "" +"^3pickups^7 How often a flag (CTF) or a key (KeyHunt) or a " +"ball (Keepaway) was picked up\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:318 +msgid "^3captime^7 Time of fastest cap (CTF)\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:319 +msgid "^3fckills^7 Number of flag carrier kills\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:320 +msgid "^3returns^7 Number of flag returns\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:321 +msgid "^3drops^7 Number of flag drops\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:322 +msgid "^3lives^7 Number of lives (LMS)\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:323 +msgid "^3rank^7 Player rank\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:324 +msgid "^3pushes^7 Number of players pushed into void\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:325 +msgid "" +"^3destroyed^7 Number of keys destroyed by pushing them into " +"void\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:326 +msgid "^3kckills^7 Number of keys carrier kills\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:327 +msgid "^3losses^7 Number of times a key was lost\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:328 +msgid "^3laps^7 Number of laps finished (race/cts)\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:329 +msgid "^3time^7 Total time raced (race/cts)\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:330 +msgid "^3fastest^7 Time of fastest lap (race/cts)\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:331 +msgid "^3ticks^7 Number of ticks (DOM)\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:332 +msgid "^3takes^7 Number of domination points taken (DOM)\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:333 +msgid "^3bckills^7 Number of ball carrier kills\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:334 +msgid "" +"^3bctime^7 Total amount of time holding the ball in " +"Keepaway\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:335 +msgid "^3score^7 Total score\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:338 +msgid "" +"Before a field you can put a + or - sign, then a comma separated list\n" +"of game types, then a slash, to make the field show up only in these\n" +"or in all but these game types. You can also specify 'all' as a\n" +"field to show all fields available for the current game mode.\n" +"\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:343 +msgid "" +"The special game type names 'teams' and 'noteams' can be used to\n" +"include/exclude ALL teams/noteams game modes.\n" +"\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:346 +msgid "Example: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:347 +msgid "" +"will display name, ping and pl aligned to the left, and the fields\n" +"right of the vertical bar aligned to the right.\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:349 +msgid "" +"'field3' will only be shown in CTF, and 'field4' will be shown in all\n" +"other gamemodes except DM.\n" +msgstr "" + +#: qcsrc/client/hud/panel/scoreboard.qc:611 +#: qcsrc/client/hud/panel/scoreboard.qc:618 +#: qcsrc/client/hud/panel/scoreboard.qc:670 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:87 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:161 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:203 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:208 +msgid "N/A" +msgstr "Tiada" + +#: qcsrc/client/hud/panel/scoreboard.qc:1156 +#, c-format +msgid "Accuracy stats (average %d%%)" +msgstr "Statistik ketepatan (puratanya %d%%)" + +#: qcsrc/client/hud/panel/scoreboard.qc:1295 +msgid "Map stats:" +msgstr "Statistik peta:" + +#: qcsrc/client/hud/panel/scoreboard.qc:1325 +msgid "Monsters killed:" +msgstr "Raksasa dibunuh:" + +#: qcsrc/client/hud/panel/scoreboard.qc:1332 +msgid "Secrets found:" +msgstr "Rahsia dijumpai:" + +#: qcsrc/client/hud/panel/scoreboard.qc:1354 +msgid "Capture time rankings" +msgstr "Kedudukan masa tangkapan" + +#: qcsrc/client/hud/panel/scoreboard.qc:1354 +msgid "Rankings" +msgstr "Kedudukan" + +#: qcsrc/client/hud/panel/scoreboard.qc:1519 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:43 +msgid "Scoreboard" +msgstr "Papan markah" + +#: qcsrc/client/hud/panel/scoreboard.qc:1584 +#, c-format +msgid "Speed award: %d%s ^7(%s^7)" +msgstr "Anugerah kelajuan: %d%s ^7(%s^7)" + +#: qcsrc/client/hud/panel/scoreboard.qc:1588 +#, c-format +msgid "All-time fastest: %d%s ^7(%s^7)" +msgstr "Terlaju sepanjang masa: %d%s ^7(%s^7)" + +#: qcsrc/client/hud/panel/scoreboard.qc:1604 +#, c-format +msgid "Spectators" +msgstr "Penonton" + +#: qcsrc/client/hud/panel/scoreboard.qc:1619 +#, c-format +msgid "playing ^3%s^7 on ^2%s^7" +msgstr "bermain ^3%s^7 di ^2%s^7" + +#: qcsrc/client/hud/panel/scoreboard.qc:1626 +#: qcsrc/client/hud/panel/scoreboard.qc:1631 +#, c-format +msgid " for up to ^1%1.0f minutes^7" +msgstr " sehingga ^1%1.0f minit^7" + +#: qcsrc/client/hud/panel/scoreboard.qc:1635 +#: qcsrc/client/hud/panel/scoreboard.qc:1654 +msgid " or" +msgstr "atau" + +#: qcsrc/client/hud/panel/scoreboard.qc:1638 +#: qcsrc/client/hud/panel/scoreboard.qc:1645 +#, c-format +msgid " until ^3%s %s^7" +msgstr " sehingga ^3%s %s^7" + +#: qcsrc/client/hud/panel/scoreboard.qc:1639 +#: qcsrc/client/hud/panel/scoreboard.qc:1646 +#: qcsrc/client/hud/panel/scoreboard.qc:1658 +#: qcsrc/client/hud/panel/scoreboard.qc:1665 +msgid "SCO^points" +msgstr "SCO^mata" + +#: qcsrc/client/hud/panel/scoreboard.qc:1640 +#: qcsrc/client/hud/panel/scoreboard.qc:1647 +#: qcsrc/client/hud/panel/scoreboard.qc:1659 +#: qcsrc/client/hud/panel/scoreboard.qc:1666 +msgid "SCO^is beaten" +msgstr "SCO^dikalahkan" + +#: qcsrc/client/hud/panel/scoreboard.qc:1657 +#: qcsrc/client/hud/panel/scoreboard.qc:1664 +#, c-format +msgid " until a lead of ^3%s %s^7" +msgstr " sehingga pimpinan ^3%s %s^7" + +#: qcsrc/client/hud/panel/scoreboard.qc:1688 +#, c-format +msgid "^1Respawning in ^3%s^1..." +msgstr "^1Lahir semula dalam ^3%s^1..." + +#: qcsrc/client/hud/panel/scoreboard.qc:1698 +#, c-format +msgid "You are dead, wait ^3%s^7 before respawning" +msgstr "Anda dah mati, tunggu ^3%s^7 sebelum lahir semula" + +#: qcsrc/client/hud/panel/scoreboard.qc:1707 +#, c-format +msgid "You are dead, press ^2%s^7 to respawn" +msgstr "Anda dah mati, tekan ^2%s^7 untuk lahir semula" + +#: qcsrc/client/hud/panel/vote.qc:24 +msgid "^1You must answer before entering hud configure mode\n" +msgstr "^1Anda mesti jawab sebelum memasuki mod susunan hud\n" + +#: qcsrc/client/hud/panel/vote.qc:29 +msgid "^2Name ^7instead of \"^1Anonymous player^7\" in stats" +msgstr "^2Nama ^7menggantikan \"^1Pemain tidak bernama^7\" dalam statistik" + +#: qcsrc/client/hud/panel/vote.qc:115 +msgid "A vote has been called for:" +msgstr "" + +#: qcsrc/client/hud/panel/vote.qc:117 +msgid "Allow servers to store and display your name?" +msgstr "Benarkan pelayan untuk menyimpan dan memaparkan nama anda?" + +#: qcsrc/client/hud/panel/vote.qc:121 +msgid "^1Configure the HUD" +msgstr "^1Susun HUD" + +#: qcsrc/client/hud/panel/vote.qc:125 qcsrc/menu/xonotic/dialog_firstrun.qc:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:18 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:18 +#: qcsrc/menu/xonotic/dialog_quit.qc:14 +#: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qc:26 +#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:16 +#: qcsrc/menu/xonotic/dialog_uid2name.qc:15 +msgid "Yes" +msgstr "Ya" + +#: qcsrc/client/hud/panel/vote.qc:127 qcsrc/menu/xonotic/dialog_firstrun.qc:83 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:21 +#: qcsrc/menu/xonotic/dialog_quit.qc:16 +#: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qc:29 +#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:17 +#: qcsrc/menu/xonotic/dialog_uid2name.qc:17 +msgid "No" +msgstr "Tidak" + +#: qcsrc/client/hud/panel/weapons.qc:530 +msgid "Out of ammo" +msgstr "Kehabisan peluru" + +#: qcsrc/client/hud/panel/weapons.qc:534 +msgid "Don't have" +msgstr "Tiada" + +#: qcsrc/client/hud/panel/weapons.qc:538 +msgid "Unavailable" +msgstr "Tak wujud" + +#: qcsrc/client/main.qc:1014 +msgid " qu/s" +msgstr "qu/s" + +#: qcsrc/client/main.qc:1016 +msgid " m/s" +msgstr "m/s" + +#: qcsrc/client/main.qc:1018 +msgid " km/h" +msgstr "km/j" + +#: qcsrc/client/main.qc:1020 +msgid " mph" +msgstr "b/j" + +#: qcsrc/client/main.qc:1022 +msgid " knots" +msgstr "knot" + +#: qcsrc/client/main.qc:1264 +#, c-format +msgid "%s (not bound)" +msgstr "" + +#: qcsrc/client/mapvoting.qc:49 +msgid " (1 vote)" +msgstr "(1 undi)" + +#: qcsrc/client/mapvoting.qc:51 +#, c-format +msgid " (%d votes)" +msgstr " (%d undi)" + +#: qcsrc/client/mapvoting.qc:271 +msgid "Don't care" +msgstr "Tak kisah" + +#: qcsrc/client/mapvoting.qc:365 +msgid "Decide the gametype" +msgstr "Tentukan jenis permainan" + +#: qcsrc/client/mapvoting.qc:365 +msgid "Vote for a map" +msgstr "Undi peta" + +#: qcsrc/client/mapvoting.qc:382 +#, c-format +msgid "%d seconds left" +msgstr "Tinggal %d saat" + +#: qcsrc/client/mapvoting.qc:497 +msgid "" +"mv_mapdownload: ^3You're not supposed to use this command on your own!\n" +msgstr "" +"mv_mapdownload: ^3Anda tidak patut guna perintah ini dengan sendirinya!\n" + +#: qcsrc/client/mapvoting.qc:507 +msgid "^1Error:^7 Couldn't find pak index.\n" +msgstr "" + +#: qcsrc/client/mapvoting.qc:516 +msgid "Requesting preview...\n" +msgstr "Meminta pratonton...\n" + +#: qcsrc/client/miscfunctions.qc:109 +msgid "Trying to remove a team which is not in the teamlist!" +msgstr "" + +#: qcsrc/client/view.qc:1380 +msgid "Nade timer" +msgstr "" + +#: qcsrc/client/view.qc:1385 +msgid "Capture progress" +msgstr "" + +#: qcsrc/client/view.qc:1390 +msgid "Revival progress" +msgstr "" + +#: qcsrc/common/command/generic.qc:157 +msgid "error creating curl handle\n" +msgstr "" + +#: qcsrc/common/command/generic.qc:403 +msgid "Notification restart command only works with cl_cmd and sv_cmd.\n" +msgstr "" + +#: qcsrc/common/gamemodes/gamemode/nexball/weapon.qh:7 +msgid "Ball Stealer" +msgstr "" + +#: qcsrc/common/items/item/armor.qh:111 +msgid "Big armor" +msgstr "" + +#: qcsrc/common/items/item/armor.qh:147 +msgid "Mega armor" +msgstr "" + +#: qcsrc/common/items/item/health.qh:111 +msgid "Big health" +msgstr "" + +#: qcsrc/common/items/item/health.qh:147 +msgid "Mega health" +msgstr "" + +#: qcsrc/common/items/item/jetpack.qh:35 +msgid "Jet Pack" +msgstr "" + +#: qcsrc/common/items/item/jetpack.qh:82 +msgid "Fuel regen" +msgstr "" + +#: qcsrc/common/items/item/powerup.qh:44 +msgid "Strength" +msgstr "" + +#: qcsrc/common/items/item/powerup.qh:76 +msgid "Shield" +msgstr "" + +#: qcsrc/common/mapinfo.qc:639 +#, no-c-format +msgid "@!#%'n Tuba Throwing" +msgstr "" + +#: qcsrc/common/mapinfo.qh:99 +msgid "Deathmatch" +msgstr "Kalah Mati" + +#: qcsrc/common/mapinfo.qh:99 +msgid "Score as many frags as you can" +msgstr "Dominasi kawasan sebanyak mana yang anda boleh" + +#: qcsrc/common/mapinfo.qh:111 +msgid "Last Man Standing" +msgstr "Orang Terakhir Berdiri" + +#: qcsrc/common/mapinfo.qh:111 +msgid "Survive and kill until the enemies have no lives left" +msgstr "Kekal hidup dan bunuh semua musuh sehingga mereka kehabisan nyawa" + +#: qcsrc/common/mapinfo.qh:126 +msgid "Race" +msgstr "Lumba" + +#: qcsrc/common/mapinfo.qh:126 +msgid "Race against other players to the finish line" +msgstr "Berlumba dengan pemain lain ke garisan penamat" + +#: qcsrc/common/mapinfo.qh:160 +msgid "Race CTS" +msgstr "Lumba CTS" + +#: qcsrc/common/mapinfo.qh:160 +msgid "Race for fastest time." +msgstr "Lumba untuk masa terpantas." + +#: qcsrc/common/mapinfo.qh:184 +msgid "Help your team score the most frags against the enemy team" +msgstr "" +"Bantu pasukan anda untuk mendominasi kebanyakan kawasan berbanding pasukan " +"lawan" + +#: qcsrc/common/mapinfo.qh:184 +msgid "Team Deathmatch" +msgstr "Kalah Mati Berpasukan" + +#: qcsrc/common/mapinfo.qh:220 +msgid "Capture the Flag" +msgstr "Curi Bendera" + +#: qcsrc/common/mapinfo.qh:220 +msgid "" +"Find and bring the enemy flag to your base to capture it, defend your base " +"from the other team" +msgstr "" +"Cari dan bawa balik bendera musuh ke tapak anda, pertahankan tapak anda " +"daripada pasukan lain" + +#: qcsrc/common/mapinfo.qh:249 +msgid "Clan Arena" +msgstr "Arena Suku" + +#: qcsrc/common/mapinfo.qh:249 +msgid "Kill all enemy teammates to win the round" +msgstr "Bunuh semua ahli pasukan musuh untuk memenangi pusingan tersebut" + +#: qcsrc/common/mapinfo.qh:287 +msgid "Capture and defend all the control points to win" +msgstr "Ambil alih dan pertahankan semua titik kawalan untuk menang" + +#: qcsrc/common/mapinfo.qh:287 +msgid "Domination" +msgstr "Dominasi" + +#: qcsrc/common/mapinfo.qh:319 +msgid "Gather all the keys to win the round" +msgstr "Kumpul semua kunci untuk memenangi pusingan" + +#: qcsrc/common/mapinfo.qh:319 +msgid "Key Hunt" +msgstr "Pencarian Kunci" + +#: qcsrc/common/mapinfo.qh:353 +msgid "Assault" +msgstr "Serangan" + +#: qcsrc/common/mapinfo.qh:353 +msgid "" +"Destroy obstacles to find and destroy the enemy power core before time runs " +"out" +msgstr "" +"Musnahkan halangan untuk mencari dan memusnahkan teras kuasa musuh sebelum " +"masa tamat" + +#: qcsrc/common/mapinfo.qh:371 +msgid "Capture control points to reach and destroy the enemy generator" +msgstr "" +"Ambil alih titik kawalan untuk sampai ke dan musnahkan penjana kuasa musuh" + +#: qcsrc/common/mapinfo.qh:371 +msgid "Onslaught" +msgstr "Serangan Hebat" + +#: qcsrc/common/mapinfo.qh:387 +msgid "Nexball" +msgstr "Bola Nex" + +#: qcsrc/common/mapinfo.qh:387 +msgid "Shoot and kick the ball into the enemies goal, keep your goal clean" +msgstr "Tembak dan tendang bola ke dalam gol musuh, biar kosong gol anda" + +#: qcsrc/common/mapinfo.qh:408 +msgid "Freeze Tag" +msgstr "Aci Beku" + +#: qcsrc/common/mapinfo.qh:408 +msgid "" +"Kill enemies to freeze them, stand next to frozen teammates to revive them; " +"freeze all enemies to win" +msgstr "" +"Bunuh musuh untuk bekukan mereka, berdiri dekat dengan rakan pasukan beku " +"untuk mencairkan mereka; bekukan semua musuh untuk menang" + +#: qcsrc/common/mapinfo.qh:446 +msgid "Hold the ball to get points for kills" +msgstr "Tangkap bola untuk mendapat mata pembunuhan" + +#: qcsrc/common/mapinfo.qh:446 +msgid "Keepaway" +msgstr "Bola Elak" + +#: qcsrc/common/mapinfo.qh:461 +msgid "Invasion" +msgstr "Serangan" + +#: qcsrc/common/mapinfo.qh:461 +msgid "Survive against waves of monsters" +msgstr "Cuba untuk hidup dengan gelombang kelahiran raksasa" + +#: qcsrc/common/minigames/cl_minigames.qc:383 +msgid "It's your turn" +msgstr "Giliran anda" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:331 +#: qcsrc/menu/xonotic/dialog_quit.qh:6 +msgid "Quit" +msgstr "Berhenti Main" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:336 +msgid "Invite" +msgstr "Ajak Rakan" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:378 +msgid "Current Game" +msgstr "Permainan Semasa" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:403 +msgid "Exit Menu" +msgstr "Keluar Menu" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:415 +#: qcsrc/menu/xonotic/dialog_multiplayer.qc:16 +msgid "Create" +msgstr "Cipta" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:418 +msgid "Join" +msgstr "Sertai" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:489 +msgid "Minigames" +msgstr "Permainan Mini" + +#: qcsrc/common/minigames/minigame/bd.qc:1168 +msgid "Better luck next time!" +msgstr "Cuba lagi akan datang!" + +#: qcsrc/common/minigames/minigame/bd.qc:1172 +msgid "Tubular! Press \"Next Level\" to continue!" +msgstr "Macam tiub! Tekan \"Tahap Seterusnya\" untuk teruskan!" + +#: qcsrc/common/minigames/minigame/bd.qc:1174 +msgid "Wicked! Press \"Next Level\" to continue!" +msgstr "Jahatnya! Tekan \"Tahap Seterusnya\" untuk teruskan!" + +#: qcsrc/common/minigames/minigame/bd.qc:1177 +msgid "Press the space bar to change your currently selected tile" +msgstr "" + +#: qcsrc/common/minigames/minigame/bd.qc:1180 +msgid "Push the boulders onto the targets" +msgstr "" + +#: qcsrc/common/minigames/minigame/bd.qc:1404 +msgid "Next Level" +msgstr "Tahap Seterusnya" + +#: qcsrc/common/minigames/minigame/bd.qc:1405 +msgid "Restart" +msgstr "Mulakan Semula" + +#: qcsrc/common/minigames/minigame/bd.qc:1406 +msgid "Editor" +msgstr "Editor" + +#: qcsrc/common/minigames/minigame/bd.qc:1407 +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:37 +msgid "Save" +msgstr "Simpan" + +#: qcsrc/common/minigames/minigame/c4.qc:373 +#: qcsrc/common/minigames/minigame/pp.qc:438 +#: qcsrc/common/minigames/minigame/ttt.qc:319 +msgid "Draw" +msgstr "Lukis" + +#: qcsrc/common/minigames/minigame/c4.qc:378 +#: qcsrc/common/minigames/minigame/nmm.qc:601 +msgid "You lost the game!" +msgstr "Anda kalah!" + +#: qcsrc/common/minigames/minigame/c4.qc:379 +#: qcsrc/common/minigames/minigame/nmm.qc:602 +msgid "You win!" +msgstr "Anda menang!" + +#: qcsrc/common/minigames/minigame/c4.qc:383 +#: qcsrc/common/minigames/minigame/nmm.qc:606 +#: qcsrc/common/minigames/minigame/pp.qc:455 +#: qcsrc/common/minigames/minigame/ttt.qc:336 +msgid "Wait for your opponent to make their move" +msgstr "" + +#: qcsrc/common/minigames/minigame/c4.qc:386 +#: qcsrc/common/minigames/minigame/nmm.qc:608 +#: qcsrc/common/minigames/minigame/pp.qc:458 +#: qcsrc/common/minigames/minigame/ttt.qc:339 +msgid "Click on the game board to place your piece" +msgstr "Klik pada papan permainan untuk meletakkan kepingan anda" + +#: qcsrc/common/minigames/minigame/nmm.qc:610 +msgid "" +"You can select one of your pieces to move it in one of the surrounding places" +msgstr "" + +#: qcsrc/common/minigames/minigame/nmm.qc:612 +msgid "You can select one of your pieces to move it anywhere on the board" +msgstr "" + +#: qcsrc/common/minigames/minigame/nmm.qc:614 +msgid "You can take one of the opponent's pieces" +msgstr "" + +#: qcsrc/common/minigames/minigame/pong.qc:570 +#: qcsrc/common/minigames/minigame/ttt.qc:299 +msgid "AI" +msgstr "" + +#: qcsrc/common/minigames/minigame/pong.qc:587 +msgid "Press ^1Start Match^7 to start the match with the current players" +msgstr "" + +#: qcsrc/common/minigames/minigame/pong.qc:651 +msgid "Start Match" +msgstr "" + +#: qcsrc/common/minigames/minigame/pong.qc:652 +msgid "Add AI player" +msgstr "" + +#: qcsrc/common/minigames/minigame/pong.qc:653 +msgid "Remove AI player" +msgstr "" + +#: qcsrc/common/minigames/minigame/pp.qc:443 +#: qcsrc/common/minigames/minigame/ttt.qc:324 +msgid "" +"You lost the game!\n" +"Select \"^1Next Match^7\" on the menu for a rematch!" +msgstr "" + +#: qcsrc/common/minigames/minigame/pp.qc:444 +#: qcsrc/common/minigames/minigame/ttt.qc:325 +msgid "" +"You win!\n" +"Select \"^1Next Match^7\" on the menu to start a new match!" +msgstr "" + +#: qcsrc/common/minigames/minigame/pp.qc:450 +#: qcsrc/common/minigames/minigame/ttt.qc:331 +msgid "Select \"^1Next Match^7\" on the menu to start a new match!" +msgstr "" + +#: qcsrc/common/minigames/minigame/pp.qc:451 +#: qcsrc/common/minigames/minigame/ttt.qc:332 +msgid "Wait for your opponent to confirm the rematch" +msgstr "" + +#: qcsrc/common/minigames/minigame/pp.qc:582 +#: qcsrc/common/minigames/minigame/ttt.qc:665 +msgid "Next Match" +msgstr "" + +#: qcsrc/common/minigames/minigame/ps.qc:478 +#, c-format +msgid "Pieces left: %s" +msgstr "" + +#: qcsrc/common/minigames/minigame/ps.qc:488 +msgid "No more valid moves" +msgstr "" + +#: qcsrc/common/minigames/minigame/ps.qc:491 +msgid "Well done, you win!" +msgstr "" + +#: qcsrc/common/minigames/minigame/ps.qc:494 +msgid "Jump a piece over another to capture it" +msgstr "" + +#: qcsrc/common/minigames/minigame/ttt.qc:666 +msgid "Single Player" +msgstr "" + +#: qcsrc/common/monsters/monster/mage.qh:17 +#: qcsrc/menu/xonotic/dialog_monstertools.qc:18 +msgid "Mage" +msgstr "" + +#: qcsrc/common/monsters/monster/mage.qh:29 +msgid "Mage spike" +msgstr "" + +#: qcsrc/common/monsters/monster/shambler.qh:17 +#: qcsrc/menu/xonotic/dialog_monstertools.qc:17 +msgid "Shambler" +msgstr "" + +#: qcsrc/common/monsters/monster/spider.qh:17 +#: qcsrc/menu/xonotic/dialog_monstertools.qc:16 +msgid "Spider" +msgstr "" + +#: qcsrc/common/monsters/monster/spider.qh:28 +msgid "Spider attack" +msgstr "" + +#: qcsrc/common/monsters/monster/wyvern.qh:17 +#: qcsrc/menu/xonotic/dialog_monstertools.qc:19 +msgid "Wyvern" +msgstr "" + +#: qcsrc/common/monsters/monster/wyvern.qh:28 +msgid "Wyvern attack" +msgstr "" + +#: qcsrc/common/monsters/monster/zombie.qh:17 +#: qcsrc/menu/xonotic/dialog_monstertools.qc:15 +msgid "Zombie" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:15 +msgid "Ammo" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:24 +msgid "Resistance" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:33 +#: qcsrc/common/mutators/mutator/instagib/items.qh:94 +msgid "Speed" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:43 +msgid "Medic" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:54 +msgid "Bash" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:62 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:85 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:177 +msgid "Vampire" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:70 +msgid "Disability" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:78 +msgid "Vengeance" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:86 +msgid "Jump" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:95 +msgid "Invisible" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:104 +msgid "Inferno" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:112 +msgid "Swapper" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:120 +msgid "Magnet" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:128 +msgid "Luck" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:136 +msgid "Flight" +msgstr "" + +#: qcsrc/common/mutators/mutator/buffs/buffs.qh:7 +msgid "Buff" +msgstr "" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:8 +msgid "Damage text" +msgstr "" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:18 +msgid "Draw damage numbers" +msgstr "" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:20 +msgid "Font size minimum:" +msgstr "" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:25 +msgid "Font size maximum:" +msgstr "" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:30 +msgid "Accumulate range:" +msgstr "" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:35 +msgid "Lifetime:" +msgstr "" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:40 +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:55 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:102 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:60 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:109 +#: qcsrc/menu/xonotic/util.qc:775 +msgid "Color:" +msgstr "" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:47 +msgid "Draw damage numbers for friendly fire" +msgstr "" + +#: qcsrc/common/mutators/mutator/instagib/items.qh:56 +msgid "Extra life" +msgstr "" + +#: qcsrc/common/mutators/mutator/instagib/items.qh:75 +msgid "Invisibility" +msgstr "" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:18 +msgid "Napalm grenade" +msgstr "" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:26 +msgid "Ice grenade" +msgstr "" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:34 +msgid "Translocate grenade" +msgstr "" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:42 +msgid "Spawn grenade" +msgstr "" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:50 +msgid "Heal grenade" +msgstr "" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:58 +msgid "Monster grenade" +msgstr "" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:66 +msgid "Entrap grenade" +msgstr "" + +#: qcsrc/common/mutators/mutator/nades/nades.qh:32 +msgid "Grenade" +msgstr "" + +#: qcsrc/common/mutators/mutator/overkill/hmg.qh:17 +msgid "Heavy Machine Gun" +msgstr "" + +#: qcsrc/common/mutators/mutator/overkill/rpc.qh:17 +msgid "Rocket Propelled Chainsaw" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:3 +msgid "Waypoint" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:4 +msgid "Help me!" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:5 +msgid "Here" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:6 +msgid "DANGER" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:8 +msgid "Frozen!" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:10 +msgid "Item" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:12 +msgid "Checkpoint" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:13 +#: qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc:252 +msgid "Finish" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:14 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:15 +#: qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc:252 +msgid "Start" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:17 +msgid "Defend" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:18 +msgid "Destroy" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:19 +msgid "Push" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:21 +msgid "Flag carrier" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:22 +msgid "Enemy carrier" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:23 +msgid "Dropped flag" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:24 +msgid "White base" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:25 +msgid "Red base" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:26 +msgid "Blue base" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:27 +msgid "Yellow base" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:28 +msgid "Pink base" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:29 +msgid "Return flag here" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:31 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:32 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:33 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:34 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:35 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:51 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:52 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:53 +msgid "Control point" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:37 +msgid "Dropped key" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:38 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:40 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:41 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:42 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:43 +msgid "Key carrier" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:39 +msgid "Run here" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:45 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:48 +msgid "Ball" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:46 +msgid "Ball carrier" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:49 +msgid "Goal" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:54 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:55 +msgid "Generator" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:57 +msgid "Weapon" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:59 +msgid "Monster" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:61 +msgid "Vehicle" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:62 +msgid "Intruder!" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:64 +msgid "Tagged" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc:651 +#: qcsrc/common/turrets/cl_turrets.qc:120 +msgid "Spam" +msgstr "" + +#: qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc:655 +#, c-format +msgid "%s needing help!" +msgstr "" + +#: qcsrc/common/net_notice.qc:87 +msgid "^1Server notices:" +msgstr "" + +#: qcsrc/common/notifications/all.inc:239 +msgid "^F4NOTE: ^BGSpectator chat is not sent to players during the match" +msgstr "" + +#: qcsrc/common/notifications/all.inc:241 +#, c-format +msgid "^BG%s^BG captured the ^TC^TT^BG flag" +msgstr "" + +#: qcsrc/common/notifications/all.inc:242 +#, c-format +msgid "" +"^BG%s^BG captured the ^TC^TT^BG flag in ^F1%s^BG seconds, breaking ^BG" +"%s^BG's previous record of ^F2%s^BG seconds" +msgstr "" + +#: qcsrc/common/notifications/all.inc:243 +#, c-format +msgid "^BG%s^BG captured the flag" +msgstr "" + +#: qcsrc/common/notifications/all.inc:244 +#, c-format +msgid "^BG%s^BG captured the ^TC^TT^BG flag in ^F1%s^BG seconds" +msgstr "" + +#: qcsrc/common/notifications/all.inc:245 +#, c-format +msgid "" +"^BG%s^BG captured the ^TC^TT^BG flag in ^F2%s^BG seconds, failing to break " +"^BG%s^BG's previous record of ^F1%s^BG seconds" +msgstr "" + +#: qcsrc/common/notifications/all.inc:246 +msgid "^BGThe ^TC^TT^BG flag was returned to base by its owner" +msgstr "" + +#: qcsrc/common/notifications/all.inc:247 +msgid "^BGThe flag was returned by its owner" +msgstr "" + +#: qcsrc/common/notifications/all.inc:248 +msgid "^BGThe ^TC^TT^BG flag was destroyed and returned to base" +msgstr "" + +#: qcsrc/common/notifications/all.inc:249 +msgid "^BGThe flag was destroyed and returned to base" +msgstr "" + +#: qcsrc/common/notifications/all.inc:250 +msgid "^BGThe ^TC^TT^BG flag was dropped in the base and returned itself" +msgstr "" + +#: qcsrc/common/notifications/all.inc:251 +msgid "^BGThe flag was dropped in the base and returned itself" +msgstr "" + +#: qcsrc/common/notifications/all.inc:252 +msgid "" +"^BGThe ^TC^TT^BG flag fell somewhere it couldn't be reached and returned to " +"base" +msgstr "" + +#: qcsrc/common/notifications/all.inc:253 +msgid "^BGThe flag fell somewhere it couldn't be reached and returned to base" +msgstr "" + +#: qcsrc/common/notifications/all.inc:254 +#, c-format +msgid "" +"^BGThe ^TC^TT^BG flag became impatient after ^F1%.2f^BG seconds and returned " +"itself" +msgstr "" + +#: qcsrc/common/notifications/all.inc:255 +#, c-format +msgid "" +"^BGThe flag became impatient after ^F1%.2f^BG seconds and returned itself" +msgstr "" + +#: qcsrc/common/notifications/all.inc:256 +msgid "^BGThe ^TC^TT^BG flag has returned to the base" +msgstr "" + +#: qcsrc/common/notifications/all.inc:257 +msgid "^BGThe flag has returned to the base" +msgstr "" + +#: qcsrc/common/notifications/all.inc:258 +#, c-format +msgid "^BG%s^BG lost the ^TC^TT^BG flag" +msgstr "" + +#: qcsrc/common/notifications/all.inc:259 +#, c-format +msgid "^BG%s^BG lost the flag" +msgstr "" + +#: qcsrc/common/notifications/all.inc:260 +#, c-format +msgid "^BG%s^BG got the ^TC^TT^BG flag" +msgstr "" + +#: qcsrc/common/notifications/all.inc:261 +#, c-format +msgid "^BG%s^BG got the flag" +msgstr "" + +#: qcsrc/common/notifications/all.inc:262 +#: qcsrc/common/notifications/all.inc:263 +#, c-format +msgid "^BG%s^BG returned the ^TC^TT^BG flag" +msgstr "" + +#: qcsrc/common/notifications/all.inc:265 +#: qcsrc/common/notifications/all.inc:553 +#, c-format +msgid "^F2Throwing coin... Result: %s^F2!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:267 +msgid "^BGYou don't have any fuel for the ^F1Jetpack" +msgstr "" + +#: qcsrc/common/notifications/all.inc:269 +msgid "^F2You lack a UID, superspec options will not be saved/restored" +msgstr "" + +#: qcsrc/common/notifications/all.inc:271 +msgid "^F1Round already started, you will join the game in the next round" +msgstr "" + +#: qcsrc/common/notifications/all.inc:272 +msgid "^F2You will spectate in the next round" +msgstr "" + +#: qcsrc/common/notifications/all.inc:274 +#, c-format +msgid "^BG%s%s^K1 was killed by ^BG%s^K1's ^BG%s^K1 buff ^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:274 +#, c-format +msgid "^BG%s%s^K1 was scored against by ^BG%s^K1's ^BG%s^K1 buff ^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:275 +#, c-format +msgid "^BG%s%s^K1 was unfairly eliminated by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:276 +#, c-format +msgid "^BG%s%s^K1 was drowned by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:277 +#, c-format +msgid "^BG%s%s^K1 was grounded by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:278 +#, c-format +msgid "^BG%s%s^K1 felt a little hot from ^BG%s^K1's fire^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:278 +#, c-format +msgid "^BG%s%s^K1 was burnt up into a crisp by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:279 +#, c-format +msgid "^BG%s%s^K1 was cooked by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:280 +#, c-format +msgid "^BG%s%s^K1 was pushed in front of a monster by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:281 +#, c-format +msgid "^BG%s%s^K1 was blown up by ^BG%s^K1's Nade%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:282 +#, c-format +msgid "^BG%s%s^K1 got too close to a napalm explosion%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:282 +#, c-format +msgid "^BG%s%s^K1 was burned to death by ^BG%s^K1's Napalm Nade%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:283 +#, c-format +msgid "^BG%s%s^K1 was blown up by ^BG%s^K1's Ice Nade%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:284 +#, c-format +msgid "^BG%s%s^K1 was frozen to death by ^BG%s^K1's Ice Nade%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:285 +#, c-format +msgid "^BG%s%s^K1 has not been healed by ^BG%s^K1's Healing Nade%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:286 +#, c-format +msgid "^BG%s%s^K1 was shot into space by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:287 +#, c-format +msgid "^BG%s%s^K1 was slimed by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:288 +#, c-format +msgid "^BG%s%s^K1 was preserved by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:289 +#, c-format +msgid "^BG%s%s^K1 tried to occupy ^BG%s^K1's teleport destination space%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:289 +#, c-format +msgid "^BG%s%s^K1 was telefragged by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:290 +#, c-format +msgid "^BG%s%s^K1 died in an accident with ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:291 +#, c-format +msgid "" +"^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Bumblebee exploded%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:292 +#, c-format +msgid "^BG%s%s^K1 saw the pretty lights of ^BG%s^K1's Bumblebee gun%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:293 +#, c-format +msgid "^BG%s%s^K1 was crushed by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:294 +#, c-format +msgid "^BG%s%s^K1 was cluster bombed by ^BG%s^K1's Raptor%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:295 +#, c-format +msgid "^BG%s%s^K1 couldn't resist ^BG%s^K1's purple blobs%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:296 +#, c-format +msgid "^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Raptor exploded%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:297 +#, c-format +msgid "" +"^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Spiderbot exploded%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:298 +#, c-format +msgid "^BG%s%s^K1 got shredded by ^BG%s^K1's Spiderbot%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:299 +#, c-format +msgid "^BG%s%s^K1 was blasted to bits by ^BG%s^K1's Spiderbot%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:300 +#, c-format +msgid "^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Racer exploded%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:301 +#, c-format +msgid "^BG%s%s^K1 was bolted down by ^BG%s^K1's Racer%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:302 +#, c-format +msgid "^BG%s%s^K1 couldn't find shelter from ^BG%s^K1's Racer%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:303 +#, c-format +msgid "^BG%s%s^K1 was thrown into a world of hurt by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:305 +#, c-format +msgid "^BG%s^K1 was moved into the %s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:306 +#, c-format +msgid "^BG%s^K1 became enemies with the Lord of Teamplay%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:307 +#, c-format +msgid "^BG%s^K1 thought they found a nice camping ground%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:308 +#, c-format +msgid "^BG%s^K1 unfairly eliminated themself%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:310 +#, c-format +msgid "^BG%s^K1 couldn't catch their breath%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:310 +#, c-format +msgid "^BG%s^K1 was in the water for too long%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:311 +#, c-format +msgid "^BG%s^K1 hit the ground with a bit too much force%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:311 +#, c-format +msgid "^BG%s^K1 hit the ground with a crunch%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:312 +#, c-format +msgid "^BG%s^K1 became a bit too crispy%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:312 +#, c-format +msgid "^BG%s^K1 felt a little hot%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:313 +#, c-format +msgid "^BG%s^K1 died%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:314 +#, c-format +msgid "^BG%s^K1 found a hot place%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:314 +#, c-format +msgid "^BG%s^K1 turned into hot slag%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:315 +#, c-format +msgid "^BG%s^K1 was exploded by a Mage%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:316 +#, c-format +msgid "^BG%s^K1's innards became outwards by a Shambler%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:317 +#, c-format +msgid "^BG%s^K1 was smashed by a Shambler%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:318 +#, c-format +msgid "^BG%s^K1 was zapped to death by a Shambler%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:319 +#, c-format +msgid "^BG%s^K1 was bitten by a Spider%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:320 +#, c-format +msgid "^BG%s^K1 was fireballed by a Wyvern%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:321 +#, c-format +msgid "^BG%s^K1 joins the Zombies%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:322 +#, c-format +msgid "^BG%s^K1 was given kung fu lessons by a Zombie%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:323 +#: qcsrc/common/notifications/all.inc:325 +#, c-format +msgid "^BG%s^K1 mastered the art of self-nading%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:324 +#, c-format +msgid "" +"^BG%s^K1 decided to take a look at the results of their napalm explosion%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:324 +#, c-format +msgid "^BG%s^K1 was burned to death by their own Napalm Nade%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:326 +#, c-format +msgid "^BG%s^K1 felt a little chilly%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:326 +#, c-format +msgid "^BG%s^K1 was frozen to death by their own Ice Nade%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:327 +#, c-format +msgid "^BG%s^K1's Healing Nade didn't quite heal them%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:328 +#, c-format +msgid "^BG%s^K1 died%s%s. What's the point of living without ammo?" +msgstr "" + +#: qcsrc/common/notifications/all.inc:328 +#, c-format +msgid "^BG%s^K1 ran out of ammo%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:329 +#, c-format +msgid "^BG%s^K1 rotted away%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:330 +#, c-format +msgid "^BG%s^K1 became a shooting star%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:331 +#, c-format +msgid "^BG%s^K1 was slimed%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:332 +#, c-format +msgid "^BG%s^K1 couldn't take it anymore%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:333 +#, c-format +msgid "^BG%s^K1 is now preserved for centuries to come%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:334 +#, c-format +msgid "^BG%s^K1 switched to the %s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:335 +#, c-format +msgid "^BG%s^K1 died in an accident%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:336 +#, c-format +msgid "^BG%s^K1 ran into a turret%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:337 +#, c-format +msgid "^BG%s^K1 was blasted away by an eWheel turret%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:338 +#, c-format +msgid "^BG%s^K1 got caught up in the FLAC turret fire%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:339 +#, c-format +msgid "^BG%s^K1 was blasted away by a Hellion turret%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:340 +#, c-format +msgid "^BG%s^K1 could not hide from the Hunter turret%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:341 +#, c-format +msgid "^BG%s^K1 was riddled full of holes by a Machinegun turret%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:342 +#, c-format +msgid "^BG%s^K1 got turned into smoldering gibs by an MLRS turret%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:343 +#, c-format +msgid "^BG%s^K1 was phased out by a turret%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:344 +#, c-format +msgid "^BG%s^K1 got served some superheated plasma from a turret%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:345 +#, c-format +msgid "^BG%s^K1 was electrocuted by a Tesla turret%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:346 +#, c-format +msgid "^BG%s^K1 got served a lead enrichment by a Walker turret%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:347 +#, c-format +msgid "^BG%s^K1 was impaled by a Walker turret%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:348 +#, c-format +msgid "^BG%s^K1 was blasted away by a Walker turret%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:349 +#, c-format +msgid "^BG%s^K1 got caught in the blast of a Bumblebee explosion%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:350 +#, c-format +msgid "^BG%s^K1 was crushed by a vehicle%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:351 +#, c-format +msgid "^BG%s^K1 was caught in a Raptor cluster bomb%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:352 +#, c-format +msgid "^BG%s^K1 got caught in the blast of a Raptor explosion%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:353 +#, c-format +msgid "^BG%s^K1 got caught in the blast of a Spiderbot explosion%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:354 +#, c-format +msgid "^BG%s^K1 was blasted to bits by a Spiderbot rocket%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:355 +#, c-format +msgid "^BG%s^K1 got caught in the blast of a Racer explosion%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:356 +#, c-format +msgid "^BG%s^K1 couldn't find shelter from a Racer rocket%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:359 +#, c-format +msgid "^BG%s^K1 was betrayed by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:361 +#, c-format +msgid "^BG%s^BG%s^BG (%s %s every %s seconds)" +msgstr "" + +#: qcsrc/common/notifications/all.inc:363 +#, c-format +msgid "^BG%s^K1 was frozen by ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:364 +#, c-format +msgid "^BG%s^K3 was revived by ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:365 +#, c-format +msgid "^BG%s^K3 was revived by falling" +msgstr "" + +#: qcsrc/common/notifications/all.inc:366 +#, c-format +msgid "^BG%s^K3 was revived by their Nade explosion" +msgstr "" + +#: qcsrc/common/notifications/all.inc:367 +#, c-format +msgid "^BG%s^K3 was automatically revived after %s second(s)" +msgstr "" + +#: qcsrc/common/notifications/all.inc:368 +#, c-format +msgid "^BG%s^K1 froze themself" +msgstr "" + +#: qcsrc/common/notifications/all.inc:370 +#: qcsrc/common/notifications/all.inc:684 +msgid "^TC^TT^BG team wins the round" +msgstr "" + +#: qcsrc/common/notifications/all.inc:371 +#: qcsrc/common/notifications/all.inc:685 +#, c-format +msgid "^BG%s^BG wins the round" +msgstr "" + +#: qcsrc/common/notifications/all.inc:372 +#: qcsrc/common/notifications/all.inc:548 +msgid "^BGRound tied" +msgstr "" + +#: qcsrc/common/notifications/all.inc:373 +#: qcsrc/common/notifications/all.inc:549 +msgid "^BGRound over, there's no winner" +msgstr "" + +#: qcsrc/common/notifications/all.inc:375 +#, c-format +msgid "^BGGodmode saved you %s units of damage, cheater!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:377 +#, c-format +msgid "^BG%s^BG got the %s^BG buff!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:378 +#, c-format +msgid "^BG%s^BG lost the %s^BG buff!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:379 +#: qcsrc/common/notifications/all.inc:692 +#, c-format +msgid "^BGYou dropped the %s^BG buff!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:380 +#: qcsrc/common/notifications/all.inc:693 +#, c-format +msgid "^BGYou got the %s^BG buff!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:382 +#: qcsrc/common/notifications/all.inc:696 +#, c-format +msgid "^BGYou do not have the ^F1%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:383 +#: qcsrc/common/notifications/all.inc:697 +#, c-format +msgid "^BGYou dropped the ^F1%s^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:384 +#: qcsrc/common/notifications/all.inc:698 +#, c-format +msgid "^BGYou got the ^F1%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:385 +#: qcsrc/common/notifications/all.inc:699 +#, c-format +msgid "^BGYou don't have enough ammo for the ^F1%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:386 +#: qcsrc/common/notifications/all.inc:700 +#, c-format +msgid "^F1%s %s^BG is unable to fire, but its ^F1%s^BG can" +msgstr "" + +#: qcsrc/common/notifications/all.inc:387 +#: qcsrc/common/notifications/all.inc:701 +#, c-format +msgid "^F1%s^BG is ^F4not available^BG on this map" +msgstr "" + +#: qcsrc/common/notifications/all.inc:389 +#, c-format +msgid "^BG%s^BG is connecting..." +msgstr "" + +#: qcsrc/common/notifications/all.inc:390 +#, c-format +msgid "^BG%s^F3 connected" +msgstr "" + +#: qcsrc/common/notifications/all.inc:391 +#, c-format +msgid "^BG%s^F3 connected and joined the ^TC^TT team" +msgstr "" + +#: qcsrc/common/notifications/all.inc:392 +#, c-format +msgid "^BG%s^F3 is now playing" +msgstr "" + +#: qcsrc/common/notifications/all.inc:393 +#, c-format +msgid "^BG%s^F3 is now playing on the ^TC^TT team" +msgstr "" + +#: qcsrc/common/notifications/all.inc:395 +#: qcsrc/common/notifications/all.inc:706 +#, c-format +msgid "^BG%s^BG has dropped the ball!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:396 +#: qcsrc/common/notifications/all.inc:707 +#, c-format +msgid "^BG%s^BG has picked up the ball!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:398 +#, c-format +msgid "^BG%s^BG captured the keys for the ^TC^TT team" +msgstr "" + +#: qcsrc/common/notifications/all.inc:399 +#, c-format +msgid "^BG%s^BG dropped the ^TC^TT Key" +msgstr "" + +#: qcsrc/common/notifications/all.inc:400 +#, c-format +msgid "^BG%s^BG lost the ^TC^TT Key" +msgstr "" + +#: qcsrc/common/notifications/all.inc:401 +#, c-format +msgid "^BG%s^BG pushed %s^BG causing the ^TC^TT Key ^BGdestruction" +msgstr "" + +#: qcsrc/common/notifications/all.inc:402 +#, c-format +msgid "^BG%s^BG destroyed the ^TC^TT Key" +msgstr "" + +#: qcsrc/common/notifications/all.inc:403 +#, c-format +msgid "^BG%s^BG picked up the ^TC^TT Key" +msgstr "" + +#: qcsrc/common/notifications/all.inc:405 +#, c-format +msgid "^BG%s^F3 forfeited" +msgstr "" + +#: qcsrc/common/notifications/all.inc:406 +#, c-format +msgid "^BG%s^F3 has no more lives left" +msgstr "" + +#: qcsrc/common/notifications/all.inc:408 +msgid "^BGMonsters are currently disabled" +msgstr "" + +#: qcsrc/common/notifications/all.inc:410 +msgid "^BGThe ^TC^TT^BG team held the ball for too long" +msgstr "" + +#: qcsrc/common/notifications/all.inc:412 +#, c-format +msgid "^BG%s^BG captured %s^BG control point" +msgstr "" + +#: qcsrc/common/notifications/all.inc:413 +#, c-format +msgid "^TC^TT^BG team %s^BG control point has been destroyed by %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:414 +msgid "^TC^TT^BG generator has been destroyed" +msgstr "" + +#: qcsrc/common/notifications/all.inc:415 +msgid "^TC^TT^BG generator spontaneously combusted due to overtime!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:417 +#, c-format +msgid "^BG%s^K1 picked up Invisibility" +msgstr "" + +#: qcsrc/common/notifications/all.inc:418 +#, c-format +msgid "^BG%s^K1 picked up Shield" +msgstr "" + +#: qcsrc/common/notifications/all.inc:419 +#, c-format +msgid "^BG%s^K1 picked up Speed" +msgstr "" + +#: qcsrc/common/notifications/all.inc:420 +#, c-format +msgid "^BG%s^K1 picked up Strength" +msgstr "" + +#: qcsrc/common/notifications/all.inc:422 +#, c-format +msgid "^BG%s^F3 disconnected" +msgstr "" + +#: qcsrc/common/notifications/all.inc:423 +#, c-format +msgid "^BG%s^F3 was kicked for idling" +msgstr "" + +#: qcsrc/common/notifications/all.inc:424 +msgid "" +"^F2You were kicked from the server because you are a spectator and " +"spectators aren't allowed at the moment." +msgstr "" + +#: qcsrc/common/notifications/all.inc:425 +#, c-format +msgid "^BG%s^F3 is now spectating" +msgstr "" + +#: qcsrc/common/notifications/all.inc:427 +#, c-format +msgid "^BG%s^BG has abandoned the race" +msgstr "" + +#: qcsrc/common/notifications/all.inc:428 +#, c-format +msgid "^BG%s^BG couldn't break their %s%s^BG place record of %s%s %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:429 +#, c-format +msgid "^BG%s^BG couldn't break the %s%s^BG place record of %s%s %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:430 +#, c-format +msgid "^BG%s^BG has finished the race" +msgstr "" + +#: qcsrc/common/notifications/all.inc:431 +#, c-format +msgid "^BG%s^BG broke %s^BG's %s%s^BG place record with %s%s %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:432 +#, c-format +msgid "^BG%s^BG improved their %s%s^BG place record with %s%s %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:433 +#, c-format +msgid "" +"^BG%s^BG scored a new record with ^F2%s^BG, but unfortunately lacks a UID " +"and will be lost." +msgstr "" + +#: qcsrc/common/notifications/all.inc:434 +#, c-format +msgid "" +"^BG%s^BG scored a new record with ^F2%s^BG, but is anonymous and will be " +"lost." +msgstr "" + +#: qcsrc/common/notifications/all.inc:435 +#, c-format +msgid "^BG%s^BG set the %s%s^BG place record with %s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:437 +#, c-format +msgid "" +"^F4You have been invited by ^BG%s^F4 to join their game of ^F2%s^F4 " +"(^F1%s^F4)" +msgstr "" + +#: qcsrc/common/notifications/all.inc:439 +msgid "^TC^TT ^BGteam scores!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:441 +#, c-format +msgid "" +"^F2You have to become a player within the next %s, otherwise you will be " +"kicked, because spectating isn't allowed at this time!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:443 +#, c-format +msgid "^BG%s^K1 picked up a Superweapon" +msgstr "" + +#: qcsrc/common/notifications/all.inc:445 +msgid "^BGYou cannot change to a larger team" +msgstr "" + +#: qcsrc/common/notifications/all.inc:446 +msgid "^BGYou are not allowed to change teams" +msgstr "" + +#: qcsrc/common/notifications/all.inc:448 +#, c-format +msgid "" +"^F4NOTE: ^BGThe server is running ^F1Xonotic %s (beta)^BG, you have " +"^F2Xonotic %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:449 +#, c-format +msgid "" +"^F4NOTE: ^BGThe server is running ^F1Xonotic %s^BG, you have ^F2Xonotic %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:450 +#, c-format +msgid "" +"^F4NOTE: ^F1Xonotic %s^BG is out, and you still have ^F2Xonotic %s^BG - get " +"the update from ^F3http://www.xonotic.org/^BG!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:452 +#, c-format +msgid "^F3SVQC Build information: ^F4%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:454 +#, c-format +msgid "" +"^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Accordeon%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:455 +#, c-format +msgid "^BG%s^K1 hurt their own ears with the @!#%%'n Accordeon%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:456 +#, c-format +msgid "^BG%s%s^K1 was electrocuted by ^BG%s^K1's Arc%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:457 +#, c-format +msgid "^BG%s%s^K1 was blasted by ^BG%s^K1's Arc bolts%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:458 +#, c-format +msgid "^BG%s%s^K1 was shot to death by ^BG%s^K1's Blaster%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:459 +#, c-format +msgid "^BG%s^K1 shot themself to hell with their Blaster%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:460 +#, c-format +msgid "^BG%s%s^K1 felt the strong pull of ^BG%s^K1's Crylink%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:461 +#, c-format +msgid "^BG%s^K1 felt the strong pull of their Crylink%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:462 +#, c-format +msgid "^BG%s%s^K1 ate ^BG%s^K1's rocket%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:463 +#, c-format +msgid "^BG%s%s^K1 got too close to ^BG%s^K1's rocket%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:464 +#, c-format +msgid "^BG%s^K1 blew themself up with their Devastator%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:465 +#, c-format +msgid "^BG%s%s^K1 was blasted by ^BG%s^K1's Electro bolt%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:466 +#, c-format +msgid "^BG%s%s^K1 felt the electrifying air of ^BG%s^K1's Electro combo%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:467 +#, c-format +msgid "^BG%s%s^K1 got too close to ^BG%s^K1's Electro orb%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:468 +#, c-format +msgid "^BG%s^K1 played with Electro bolts%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:469 +#, c-format +msgid "^BG%s^K1 could not remember where they put their Electro orb%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:470 +#, c-format +msgid "^BG%s%s^K1 got too close to ^BG%s^K1's fireball%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:471 +#, c-format +msgid "^BG%s%s^K1 got burnt by ^BG%s^K1's firemine%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:472 +#, c-format +msgid "^BG%s^K1 should have used a smaller gun%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:473 +#, c-format +msgid "^BG%s^K1 forgot about their firemine%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:474 +#, c-format +msgid "^BG%s%s^K1 was pummeled by a burst of ^BG%s^K1's Hagar rockets%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:475 +#, c-format +msgid "^BG%s%s^K1 was pummeled by ^BG%s^K1's Hagar rockets%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:476 +#, c-format +msgid "^BG%s^K1 played with tiny Hagar rockets%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:477 +#, c-format +msgid "^BG%s%s^K1 was cut down with ^BG%s^K1's HLAC%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:478 +#, c-format +msgid "^BG%s^K1 got a little jumpy with their HLAC%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:479 +#, c-format +msgid "^BG%s%s^K1 was sniped by ^BG%s^K1's Heavy Machine Gun%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:480 +#, c-format +msgid "^BG%s%s^K1 was torn to bits by ^BG%s^K1's Heavy Machine Gun%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:481 +#, c-format +msgid "^BG%s%s^K1 was caught in ^BG%s^K1's Hook gravity bomb%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:482 +#, c-format +msgid "" +"^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Klein Bottle%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:483 +#, c-format +msgid "^BG%s^K1 hurt their own ears with the @!#%%'n Klein Bottle%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:484 +#, c-format +msgid "^BG%s%s^K1 was sniped by ^BG%s^K1's Machine Gun%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:485 +#, c-format +msgid "^BG%s%s^K1 was riddled full of holes by ^BG%s^K1's Machine Gun%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:486 +#: qcsrc/common/notifications/all.inc:790 +#, c-format +msgid "^BGYou cannot place more than ^F2%s^BG mines at a time" +msgstr "" + +#: qcsrc/common/notifications/all.inc:487 +#, c-format +msgid "^BG%s%s^K1 got too close to ^BG%s^K1's mine%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:488 +#, c-format +msgid "^BG%s^K1 forgot about their mine%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:489 +#, c-format +msgid "^BG%s%s^K1 got too close to ^BG%s^K1's Mortar grenade%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:490 +#, c-format +msgid "^BG%s%s^K1 ate ^BG%s^K1's Mortar grenade%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:491 +#, c-format +msgid "^BG%s^K1 didn't see their own Mortar grenade%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:492 +#, c-format +msgid "^BG%s^K1 blew themself up with their own Mortar%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:493 +#, c-format +msgid "^BG%s%s^K1 was sniped with a Rifle by ^BG%s^K1%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:494 +#, c-format +msgid "^BG%s%s^K1 died in ^BG%s^K1's Rifle bullet hail%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:495 +#, c-format +msgid "^BG%s%s^K1 failed to hide from ^BG%s^K1's Rifle bullet hail%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:496 +#, c-format +msgid "^BG%s%s^K1 failed to hide from ^BG%s^K1's Rifle%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:497 +#, c-format +msgid "^BG%s%s^K1 was sawn in half by ^BG%s^K1's Rocket Propelled Chainsaw%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:498 +#, c-format +msgid "^BG%s%s^K1 almost dodged ^BG%s^K1's Rocket Propelled Chainsaw%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:499 +#, c-format +msgid "^BG%s^K1 was sawn in half by their own Rocket Propelled Chainsaw%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:500 +#, c-format +msgid "^BG%s^K1 blew themself up with their Rocket Propelled Chainsaw%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:501 +#, c-format +msgid "^BG%s%s^K1 was pummeled by ^BG%s^K1's Seeker rockets%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:502 +#, c-format +msgid "^BG%s%s^K1 was tagged by ^BG%s^K1's Seeker%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:503 +#, c-format +msgid "^BG%s^K1 played with tiny Seeker rockets%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:504 +#, c-format +msgid "^BG%s%s^K1 was gunned down by ^BG%s^K1's Shockwave%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:505 +#, c-format +msgid "^BG%s%s^K1 slapped ^BG%s^K1 around a bit with a large Shockwave%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:506 +#, c-format +msgid "^BG%s%s^K1 was gunned down by ^BG%s^K1's Shotgun%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:507 +#, c-format +msgid "^BG%s%s^K1 slapped ^BG%s^K1 around a bit with a large Shotgun%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:508 +#, c-format +msgid "^BG%s^K1 is now thinking with portals%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:509 +#, c-format +msgid "^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Tuba%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:510 +#, c-format +msgid "^BG%s^K1 hurt their own ears with the @!#%%'n Tuba%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:511 +#, c-format +msgid "^BG%s%s^K1 has been sublimated by ^BG%s^K1's Vaporizer%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:512 +#, c-format +msgid "^BG%s%s^K1 has been vaporized by ^BG%s^K1's Vortex%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:537 +msgid "^F4You are now alone!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:539 +msgid "^BGYou are attacking!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:540 +msgid "^BGYou are defending!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:541 +#, c-format +msgid "^BGObjective destroyed in ^F4%s^BG!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:543 +msgid "^F4Begin!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:544 +msgid "^F4Game starts in ^COUNT" +msgstr "" + +#: qcsrc/common/notifications/all.inc:545 +msgid "^F4Round starts in ^COUNT" +msgstr "" + +#: qcsrc/common/notifications/all.inc:546 +msgid "^F4Round cannot start" +msgstr "" + +#: qcsrc/common/notifications/all.inc:551 +msgid "^F2Don't camp!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:555 +msgid "" +"^BGYou are now free.\n" +"^BGFeel free to ^F2try to capture^BG the flag again\n" +"^BGif you think you will succeed." +msgstr "" + +#: qcsrc/common/notifications/all.inc:556 +msgid "^BGThis flag is currently inactive" +msgstr "" + +#: qcsrc/common/notifications/all.inc:557 +msgid "" +"^BGYou are now ^F1shielded^BG from the flag(s)\n" +"^BGfor ^F2too many unsuccessful attempts^BG to capture.\n" +"^BGMake some defensive scores before trying again." +msgstr "" + +#: qcsrc/common/notifications/all.inc:558 +msgid "^BGYou captured the ^TC^TT^BG flag!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:559 +msgid "^BGYou captured the flag!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:560 +#, c-format +msgid "^BGToo many flag throws! Throwing disabled for %s." +msgstr "" + +#: qcsrc/common/notifications/all.inc:561 +#, c-format +msgid "^BG%s^BG passed the ^TC^TT^BG flag to %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:562 +#, c-format +msgid "^BG%s^BG passed the flag to %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:563 +#, c-format +msgid "^BGYou received the ^TC^TT^BG flag from %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:564 +#, c-format +msgid "^BGYou received the flag from %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:565 +#, c-format +msgid "^BGPress ^F2%s^BG to receive the flag from %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.inc:566 +#, c-format +msgid "^BGRequesting %s^BG to pass you the flag" +msgstr "" + +#: qcsrc/common/notifications/all.inc:567 +#, c-format +msgid "^BGYou passed the ^TC^TT^BG flag to %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:568 +#, c-format +msgid "^BGYou passed the flag to %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:569 +msgid "^BGYou got the ^TC^TT^BG flag!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:570 +msgid "^BGYou got the flag!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:571 +#, c-format +msgid "^BGYou got your %steam^BG's flag, return it!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:572 +#, c-format +msgid "^BGYou got the %senemy^BG's flag, return it!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:573 +#, c-format +msgid "^BGThe %senemy^BG got your flag! Retrieve it!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:574 +#, c-format +msgid "^BGThe %senemy (^BG%s%s)^BG got your flag! Retrieve it!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:575 +#, c-format +msgid "^BGThe %senemy^BG got the flag! Retrieve it!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:576 +#, c-format +msgid "^BGThe %senemy (^BG%s%s)^BG got the flag! Retrieve it!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:577 +#, c-format +msgid "^BGThe %senemy^BG got their flag! Retrieve it!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:578 +#, c-format +msgid "^BGThe %senemy (^BG%s%s)^BG got their flag! Retrieve it!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:579 +#, c-format +msgid "^BGYour %steam mate^BG got the ^TC^TT^BG flag! Protect them!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:580 +#, c-format +msgid "^BGYour %steam mate (^BG%s%s)^BG got the ^TC^TT^BG flag! Protect them!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:581 +#, c-format +msgid "^BGYour %steam mate^BG got the flag! Protect them!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:582 +#, c-format +msgid "^BGYour %steam mate (^BG%s%s)^BG got the flag! Protect them!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:583 +msgid "^BGEnemies can now see you on radar!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:584 +msgid "^BGYou returned the ^TC^TT^BG flag!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:585 +msgid "^BGStalemate! Enemies can now see you on radar!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:586 +msgid "^BGStalemate! Flag carriers can now be seen by enemies on radar!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:590 +#, c-format +msgid "^K3%sYou fragged ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:591 +#: qcsrc/common/notifications/all.inc:600 +#: qcsrc/common/notifications/all.inc:609 +#, c-format +msgid "^K3%sYou scored against ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:592 +#, c-format +msgid "^K1%sYou were fragged by ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:593 +#: qcsrc/common/notifications/all.inc:602 +#: qcsrc/common/notifications/all.inc:611 +#, c-format +msgid "^K1%sYou were scored against by ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:599 +#, c-format +msgid "^K3%sYou burned ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:601 +#, c-format +msgid "^K1%sYou were burned by ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:608 +#, c-format +msgid "^K3%sYou froze ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:610 +#, c-format +msgid "^K1%sYou were frozen by ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:617 +#, c-format +msgid "^K1%sYou typefragged ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:618 +#, c-format +msgid "^K1%sYou scored against ^BG%s^K1 while they were typing" +msgstr "" + +#: qcsrc/common/notifications/all.inc:619 +#, c-format +msgid "^K1%sYou were typefragged by ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:620 +#, c-format +msgid "^K1%sYou were scored against by ^BG%s^K1 while typing" +msgstr "" + +#: qcsrc/common/notifications/all.inc:626 +#, c-format +msgid "^BGPress ^F2%s^BG again to toss the nade!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:627 +msgid "^F2You got a ^K1BONUS GRENADE^F2!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:629 +#, c-format +msgid "" +"^BGYou have been moved into a different team\n" +"You are now on: %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:630 +msgid "^K1Don't go against your team mates!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:630 +msgid "^K1Don't shoot your team mates!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:631 +msgid "^K1Die camper!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:631 +msgid "^K1Reconsider your tactics, camper!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:632 +msgid "^K1You unfairly eliminated yourself!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:633 +#, c-format +msgid "^K1You were %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:634 +msgid "^K1You couldn't catch your breath!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:635 +msgid "^K1You hit the ground with a crunch!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:636 +msgid "^K1You felt a little too hot!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:636 +msgid "^K1You got a little bit too crispy!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:637 +msgid "^K1You killed your own dumb self!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:637 +msgid "^K1You need to be more careful!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:638 +msgid "^K1You couldn't stand the heat!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:639 +msgid "^K1You need to watch out for monsters!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:639 +msgid "^K1You were killed by a monster!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:640 +msgid "^K1Tastes like chicken!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:640 +msgid "^K1You forgot to put the pin back in!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:641 +msgid "^K1Hanging around a napalm explosion is bad!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:642 +msgid "^K1You felt a little chilly!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:642 +msgid "^K1You got a little bit too cold!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:643 +msgid "^K1Your Healing Nade is a bit defective" +msgstr "" + +#: qcsrc/common/notifications/all.inc:644 +msgid "^K1You are respawning for running out of ammo..." +msgstr "" + +#: qcsrc/common/notifications/all.inc:644 +msgid "^K1You were killed for running out of ammo..." +msgstr "" + +#: qcsrc/common/notifications/all.inc:645 +msgid "^K1You grew too old without taking your medicine" +msgstr "" + +#: qcsrc/common/notifications/all.inc:645 +msgid "^K1You need to preserve your health" +msgstr "" + +#: qcsrc/common/notifications/all.inc:646 +msgid "^K1You became a shooting star!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:647 +msgid "^K1You melted away in slime!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:648 +msgid "^K1You committed suicide!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:648 +msgid "^K1You ended it all!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:649 +msgid "^K1You got stuck in a swamp!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:650 +#, c-format +msgid "^BGYou are now on: %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:651 +msgid "^K1You died in an accident!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:652 +msgid "^K1You had an unfortunate run in with a turret!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:652 +msgid "^K1You were fragged by a turret!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:653 +msgid "^K1You had an unfortunate run in with an eWheel turret!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:653 +msgid "^K1You were fragged by an eWheel turret!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:654 +msgid "^K1You had an unfortunate run in with a Walker turret!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:654 +msgid "^K1You were fragged by a Walker turret!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:655 +msgid "^K1You got caught in the blast of a Bumblebee explosion!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:656 +msgid "^K1You were crushed by a vehicle!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:657 +msgid "^K1You were caught in a Raptor cluster bomb!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:658 +msgid "^K1You got caught in the blast of a Raptor explosion!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:659 +msgid "^K1You got caught in the blast of a Spiderbot explosion!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:660 +msgid "^K1You were blasted to bits by a Spiderbot rocket!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:661 +msgid "^K1You got caught in the blast of a Racer explosion!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:662 +msgid "^K1You couldn't find shelter from a Racer rocket!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:663 +msgid "^K1Watch your step!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:665 +#, c-format +msgid "^K1Moron! You fragged ^BG%s^K1, a team mate!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:665 +#, c-format +msgid "^K1Moron! You went against ^BG%s^K1, a team mate!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:666 +#, c-format +msgid "^K1You were fragged by ^BG%s^K1, a team mate" +msgstr "" + +#: qcsrc/common/notifications/all.inc:666 +#, c-format +msgid "^K1You were scored against by ^BG%s^K1, a team mate" +msgstr "" + +#: qcsrc/common/notifications/all.inc:668 +msgid "" +"^K1Stop idling!\n" +"^BGDisconnecting in ^COUNT..." +msgstr "" + +#: qcsrc/common/notifications/all.inc:670 +#, c-format +msgid "^BGYou need %s^BG!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:671 +#, c-format +msgid "^BGYou also need %s^BG!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:672 +msgid "^BGDoor unlocked!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:674 +msgid "^F2You picked up some extra lives" +msgstr "" + +#: qcsrc/common/notifications/all.inc:676 +#, c-format +msgid "^K3You revived ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:677 +msgid "^K3You revived yourself" +msgstr "" + +#: qcsrc/common/notifications/all.inc:678 +#, c-format +msgid "^K3You were revived by ^BG%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:679 +#, c-format +msgid "^K3You were automatically revived after %s second(s)" +msgstr "" + +#: qcsrc/common/notifications/all.inc:681 +msgid "^BGThe generator is under attack!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:683 +msgid "^TC^TT^BG team loses the round" +msgstr "" + +#: qcsrc/common/notifications/all.inc:687 +msgid "^K1You froze yourself" +msgstr "" + +#: qcsrc/common/notifications/all.inc:688 +msgid "^K1Round already started, you spawn as frozen" +msgstr "" + +#: qcsrc/common/notifications/all.inc:690 +#, c-format +msgid "^K1A %s has arrived!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:694 +msgid "^BGYou got the ^F1Fuel regenerator" +msgstr "" + +#: qcsrc/common/notifications/all.inc:695 +msgid "^BGYou got the ^F1Jet pack" +msgstr "" + +#: qcsrc/common/notifications/all.inc:703 +msgid "" +"^K1No spawnpoints available!\n" +"Hope your team can fix it..." +msgstr "" + +#: qcsrc/common/notifications/all.inc:704 +msgid "" +"^K1You may not join the game at this time.\n" +"The player limit reached maximum capacity." +msgstr "" + +#: qcsrc/common/notifications/all.inc:708 +msgid "^BGYou picked up the ball" +msgstr "" + +#: qcsrc/common/notifications/all.inc:709 +msgid "^BGKilling people while you don't have the ball gives no points!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:711 +msgid "" +"^BGAll keys are in your team's hands!\n" +"Help the key carriers to meet!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:712 +msgid "" +"^BGAll keys are in ^TC^TT team^BG's hands!\n" +"Interfere ^F4NOW^BG!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:713 +msgid "" +"^BGAll keys are in your team's hands!\n" +"Meet the other key carriers ^F4NOW^BG!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:714 +msgid "^F4Round will start in ^COUNT" +msgstr "" + +#: qcsrc/common/notifications/all.inc:715 +msgid "^BGScanning frequency range..." +msgstr "" + +#: qcsrc/common/notifications/all.inc:716 +msgid "^BGYou are starting with the ^TC^TT Key" +msgstr "" + +#: qcsrc/common/notifications/all.inc:718 +msgid "^BGYou have no lives left, you must wait until the next match" +msgstr "" + +#: qcsrc/common/notifications/all.inc:720 +#, c-format +msgid "" +"^BGWaiting for players to join...\n" +"Need active players for: %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:721 +#, c-format +msgid "^BGWaiting for %s player(s) to join..." +msgstr "" + +#: qcsrc/common/notifications/all.inc:723 +msgid "^BGYour weapon has been downgraded until you find some ammo!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:724 +msgid "^F4^COUNT^BG left to find some ammo!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:725 +msgid "^BGGet some ammo or you'll be dead in ^F4^COUNT^BG!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:725 +msgid "^BGGet some ammo! ^F4^COUNT^BG left!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:726 +#, c-format +msgid "^F2Extra lives remaining: ^K1%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:730 +#, c-format +msgid "" +"^F2^COUNT^BG until weapon change...\n" +"Next weapon: ^F1%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:731 +#, c-format +msgid "^F2Active weapon: ^F1%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:733 +#, c-format +msgid "^BGYou captured %s^BG control point" +msgstr "" + +#: qcsrc/common/notifications/all.inc:734 +#, c-format +msgid "^TC^TT^BG team captured %s^BG control point" +msgstr "" + +#: qcsrc/common/notifications/all.inc:735 +msgid "^BGThis control point currently cannot be captured" +msgstr "" + +#: qcsrc/common/notifications/all.inc:736 +msgid "" +"^BGThe enemy generator cannot be destroyed yet\n" +"^F2Capture some control points to unshield it" +msgstr "" + +#: qcsrc/common/notifications/all.inc:737 +msgid "^BGThe ^TCenemy^BG generator is no longer shielded!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:738 +msgid "" +"^K1Your generator is NOT shielded!\n" +"^BGRe-capture control points to shield it!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:739 +#, c-format +msgid "^BGPress ^F2%s^BG to teleport" +msgstr "" + +#: qcsrc/common/notifications/all.inc:740 +#, c-format +msgid "^BGTeleporting disabled for %s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:742 +msgid "" +"^F2Now playing ^F4OVERTIME^F2!\n" +"Keep fragging until we have a winner!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:742 +msgid "" +"^F2Now playing ^F4OVERTIME^F2!\n" +"Keep scoring until we have a winner!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:743 +msgid "" +"^F2Now playing ^F4OVERTIME^F2!\n" +"\n" +"Generators are now decaying.\n" +"The more control points your team holds,\n" +"the faster the enemy generator decays" +msgstr "" + +#: qcsrc/common/notifications/all.inc:744 +#, c-format +msgid "" +"^F2Now playing ^F4OVERTIME^F2!\n" +"^BGAdded ^F4%s^BG to the game!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:746 +msgid "^K1In^BG-portal created" +msgstr "" + +#: qcsrc/common/notifications/all.inc:747 +msgid "^F3Out^BG-portal created" +msgstr "" + +#: qcsrc/common/notifications/all.inc:748 +msgid "^F1Portal creation failed" +msgstr "" + +#: qcsrc/common/notifications/all.inc:750 +msgid "^F2Strength infuses your weapons with devastating power" +msgstr "" + +#: qcsrc/common/notifications/all.inc:751 +msgid "^F2Strength has worn off" +msgstr "" + +#: qcsrc/common/notifications/all.inc:753 +msgid "^F2Shield surrounds you" +msgstr "" + +#: qcsrc/common/notifications/all.inc:754 +msgid "^F2Shield has worn off" +msgstr "" + +#: qcsrc/common/notifications/all.inc:756 +msgid "^F2You are on speed" +msgstr "" + +#: qcsrc/common/notifications/all.inc:757 +msgid "^F2Speed has worn off" +msgstr "" + +#: qcsrc/common/notifications/all.inc:759 +msgid "^F2You are invisible" +msgstr "" + +#: qcsrc/common/notifications/all.inc:760 +msgid "^F2Invisibility has worn off" +msgstr "" + +#: qcsrc/common/notifications/all.inc:762 +msgid "^F2The race is over, finish your lap!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:764 +msgid "^BGSecondary fire inflicts no damage!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:766 +msgid "^BGSequence completed!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:767 +msgid "^BGThere are more to go..." +msgstr "" + +#: qcsrc/common/notifications/all.inc:768 +#, c-format +msgid "^BGOnly %s^BG more to go..." +msgstr "" + +#: qcsrc/common/notifications/all.inc:770 +msgid "^F2Superweapons have broken down" +msgstr "" + +#: qcsrc/common/notifications/all.inc:771 +msgid "^F2Superweapons have been lost" +msgstr "" + +#: qcsrc/common/notifications/all.inc:772 +msgid "^F2You now have a superweapon" +msgstr "" + +#: qcsrc/common/notifications/all.inc:774 +msgid "^K1Changing to ^TC^TT^K1 in ^COUNT" +msgstr "" + +#: qcsrc/common/notifications/all.inc:775 +msgid "^K1Changing team in ^COUNT" +msgstr "" + +#: qcsrc/common/notifications/all.inc:776 +msgid "^K1Spectating in ^COUNT" +msgstr "" + +#: qcsrc/common/notifications/all.inc:777 +msgid "^K1Suicide in ^COUNT" +msgstr "" + +#: qcsrc/common/notifications/all.inc:779 +msgid "^F4Timeout begins in ^COUNT" +msgstr "" + +#: qcsrc/common/notifications/all.inc:780 +msgid "^F4Timeout ends in ^COUNT" +msgstr "" + +#: qcsrc/common/notifications/all.inc:782 +msgid "^K1Cannot join given minigame session!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:784 +#, c-format +msgid "^BGPress ^F2%s^BG to enter/exit the vehicle" +msgstr "" + +#: qcsrc/common/notifications/all.inc:785 +#, c-format +msgid "^BGPress ^F2%s^BG to enter the vehicle gunner" +msgstr "" + +#: qcsrc/common/notifications/all.inc:786 +#, c-format +msgid "^BGPress ^F2%s^BG to steal this vehicle" +msgstr "" + +#: qcsrc/common/notifications/all.inc:787 +msgid "" +"^F2The enemy is stealing one of your vehicles!\n" +"^F4Stop them!" +msgstr "" + +#: qcsrc/common/notifications/all.inc:788 +msgid "^F2Intruder detected, disabling shields!" +msgstr "" + +#: qcsrc/common/notifications/all.qh:188 +msgid "Notification dump command only works with cl_cmd and sv_cmd.\n" +msgstr "" + +#: qcsrc/common/notifications/all.qh:399 qcsrc/common/notifications/all.qh:400 +#, c-format +msgid " (near %s)" +msgstr "" + +#: qcsrc/common/notifications/all.qh:407 qcsrc/common/notifications/all.qh:408 +msgid "primary" +msgstr "" + +#: qcsrc/common/notifications/all.qh:407 qcsrc/common/notifications/all.qh:408 +msgid "secondary" +msgstr "" + +#: qcsrc/common/notifications/all.qh:410 +msgid "point" +msgstr "" + +#: qcsrc/common/notifications/all.qh:410 +msgid "points" +msgstr "" + +#: qcsrc/common/notifications/all.qh:419 +msgid "drop flag" +msgstr "" + +#: qcsrc/common/notifications/all.qh:420 +msgid "throw nade" +msgstr "" + +#: qcsrc/common/notifications/all.qh:431 +#, c-format +msgid " with %s" +msgstr "" + +#: qcsrc/common/notifications/all.qh:444 +#, c-format +msgid "%s^K1 made a TRIPLE FRAG! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:444 +#, c-format +msgid "%s^K1 made a TRIPLE SCORE! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:444 +msgid "TRIPLE FRAG! " +msgstr "" + +#: qcsrc/common/notifications/all.qh:445 +#, c-format +msgid "%s^K1 made FIVE SCORES IN A ROW! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:445 +#, c-format +msgid "%s^K1 unlocked RAGE! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:445 +msgid "RAGE! " +msgstr "" + +#: qcsrc/common/notifications/all.qh:446 +#, c-format +msgid "%s^K1 made TEN SCORES IN A ROW! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:446 +#, c-format +msgid "%s^K1 started a MASSACRE! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:446 +msgid "MASSACRE! " +msgstr "" + +#: qcsrc/common/notifications/all.qh:447 +#, c-format +msgid "%s^K1 executed MAYHEM! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:447 +#, c-format +msgid "%s^K1 made FIFTEEN SCORES IN A ROW! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:447 +msgid "MAYHEM! " +msgstr "" + +#: qcsrc/common/notifications/all.qh:448 +#, c-format +msgid "%s^K1 is a BERSERKER! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:448 +#, c-format +msgid "%s^K1 made TWENTY SCORES IN A ROW! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:448 +msgid "BERSERKER! " +msgstr "" + +#: qcsrc/common/notifications/all.qh:449 +#, c-format +msgid "%s^K1 inflicts CARNAGE! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:449 +#, c-format +msgid "%s^K1 made TWENTY FIVE SCORES IN A ROW! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:449 +msgid "CARNAGE! " +msgstr "" + +#: qcsrc/common/notifications/all.qh:450 +#, c-format +msgid "%s^K1 made THIRTY SCORES IN A ROW! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:450 +#, c-format +msgid "%s^K1 unleashes ARMAGEDDON! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:450 +msgid "ARMAGEDDON! " +msgstr "" + +#: qcsrc/common/notifications/all.qh:457 +#, c-format +msgid "%s(^F1Bot^BG)" +msgstr "" + +#: qcsrc/common/notifications/all.qh:459 +#, c-format +msgid "%s(Ping ^F1%d^BG)" +msgstr "" + +#: qcsrc/common/notifications/all.qh:466 +#, c-format +msgid "" +"\n" +"(Health ^1%d^BG / Armor ^2%d^BG)%s" +msgstr "" + +#: qcsrc/common/notifications/all.qh:468 +#, c-format +msgid "" +"\n" +"(^F4Dead^BG)%s" +msgstr "" + +#: qcsrc/common/notifications/all.qh:489 qcsrc/common/notifications/all.qh:502 +#, c-format +msgid "%d score spree! " +msgstr "" + +#: qcsrc/common/notifications/all.qh:501 +#, c-format +msgid "%d frag spree! " +msgstr "" + +#: qcsrc/common/notifications/all.qh:514 +msgid "First blood! " +msgstr "" + +#: qcsrc/common/notifications/all.qh:514 +msgid "First score! " +msgstr "" + +#: qcsrc/common/notifications/all.qh:518 +msgid "First casualty! " +msgstr "" + +#: qcsrc/common/notifications/all.qh:518 +msgid "First victim! " +msgstr "" + +#: qcsrc/common/notifications/all.qh:559 +#, c-format +msgid "%s^K1 has %d frags in a row! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:560 +#, c-format +msgid "%s^K1 made %d scores in a row! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:578 +#, c-format +msgid "%s^K1 drew first blood! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:579 +#, c-format +msgid "%s^K1 got the first score! %s^BG" +msgstr "" + +#: qcsrc/common/notifications/all.qh:595 +#, c-format +msgid ", ending their %d frag spree" +msgstr "" + +#: qcsrc/common/notifications/all.qh:596 +#, c-format +msgid ", ending their %d score spree" +msgstr "" + +#: qcsrc/common/notifications/all.qh:610 +#, c-format +msgid ", losing their %d frag spree" +msgstr "" + +#: qcsrc/common/notifications/all.qh:611 +#, c-format +msgid ", losing their %d score spree" +msgstr "" + +#: qcsrc/common/teams.qh:29 +msgid "TEAM^Red" +msgstr "" + +#: qcsrc/common/teams.qh:30 +msgid "TEAM^Blue" +msgstr "" + +#: qcsrc/common/teams.qh:31 +msgid "TEAM^Yellow" +msgstr "" + +#: qcsrc/common/teams.qh:32 +msgid "TEAM^Pink" +msgstr "" + +#: qcsrc/common/teams.qh:33 +msgid "Team" +msgstr "" + +#: qcsrc/common/teams.qh:34 +msgid "Neutral" +msgstr "" + +#: qcsrc/common/teams.qh:37 +msgid "KEY^Red" +msgstr "" + +#: qcsrc/common/teams.qh:38 +msgid "KEY^Blue" +msgstr "" + +#: qcsrc/common/teams.qh:39 +msgid "KEY^Yellow" +msgstr "" + +#: qcsrc/common/teams.qh:40 +msgid "KEY^Pink" +msgstr "" + +#: qcsrc/common/teams.qh:41 +msgid "FLAG^Red" +msgstr "" + +#: qcsrc/common/teams.qh:42 +msgid "FLAG^Blue" +msgstr "" + +#: qcsrc/common/teams.qh:43 +msgid "FLAG^Yellow" +msgstr "" + +#: qcsrc/common/teams.qh:44 +msgid "FLAG^Pink" +msgstr "" + +#: qcsrc/common/teams.qh:45 +msgid "GENERATOR^Red" +msgstr "" + +#: qcsrc/common/teams.qh:46 +msgid "GENERATOR^Blue" +msgstr "" + +#: qcsrc/common/teams.qh:47 +msgid "GENERATOR^Yellow" +msgstr "" + +#: qcsrc/common/teams.qh:48 +msgid "GENERATOR^Pink" +msgstr "" + +#: qcsrc/common/turrets/all.qh:51 +msgid "Turrets dump command only works with sv_cmd.\n" +msgstr "" + +#: qcsrc/common/turrets/cl_turrets.qc:129 +#, c-format +msgid "%s under attack!" +msgstr "" + +#: qcsrc/common/turrets/turret.qh:11 +msgid "Turret" +msgstr "" + +#: qcsrc/common/turrets/turret/ewheel.qh:15 +msgid "eWheel Turret" +msgstr "" + +#: qcsrc/common/turrets/turret/ewheel_weapon.qh:7 +msgid "eWheel" +msgstr "" + +#: qcsrc/common/turrets/turret/flac.qh:13 +msgid "FLAC Cannon" +msgstr "" + +#: qcsrc/common/turrets/turret/flac_weapon.qh:7 +msgid "FLAC" +msgstr "" + +#: qcsrc/common/turrets/turret/fusionreactor.qh:11 +msgid "Fusion Reactor" +msgstr "" + +#: qcsrc/common/turrets/turret/hellion.qh:13 +msgid "Hellion Missile Turret" +msgstr "" + +#: qcsrc/common/turrets/turret/hellion_weapon.qh:7 +msgid "Hellion" +msgstr "" + +#: qcsrc/common/turrets/turret/hk.qh:15 +msgid "Hunter-Killer Turret" +msgstr "" + +#: qcsrc/common/turrets/turret/hk_weapon.qh:7 +msgid "Hunter-Killer" +msgstr "" + +#: qcsrc/common/turrets/turret/machinegun.qh:13 +msgid "Machinegun Turret" +msgstr "" + +#: qcsrc/common/turrets/turret/machinegun_weapon.qh:7 +msgid "Machinegun" +msgstr "" + +#: qcsrc/common/turrets/turret/mlrs.qh:13 +msgid "MLRS Turret" +msgstr "" + +#: qcsrc/common/turrets/turret/mlrs_weapon.qh:7 +msgid "MLRS" +msgstr "" + +#: qcsrc/common/turrets/turret/phaser.qh:13 +msgid "Phaser Cannon" +msgstr "" + +#: qcsrc/common/turrets/turret/phaser_weapon.qh:7 +msgid "Phaser" +msgstr "" + +#: qcsrc/common/turrets/turret/plasma.qh:13 +msgid "Plasma Cannon" +msgstr "" + +#: qcsrc/common/turrets/turret/plasma_dual.qh:7 +msgid "Dual plasma" +msgstr "" + +#: qcsrc/common/turrets/turret/plasma_dual.qh:19 +msgid "Dual Plasma Cannon" +msgstr "" + +#: qcsrc/common/turrets/turret/plasma_weapon.qh:7 +msgid "Plasma" +msgstr "" + +#: qcsrc/common/turrets/turret/tesla.qh:13 +#: qcsrc/common/turrets/turret/tesla_weapon.qh:7 +msgid "Tesla Coil" +msgstr "" + +#: qcsrc/common/turrets/turret/walker.qh:15 +msgid "Walker Turret" +msgstr "" + +#: qcsrc/common/turrets/turret/walker_weapon.qh:7 +msgid "Walker" +msgstr "" + +#: qcsrc/common/vehicles/cl_vehicles.qc:192 +#, c-format +msgid "Press %s" +msgstr "" + +#: qcsrc/common/vehicles/vehicle/bumblebee.qc:950 +msgid "No right gunner!" +msgstr "" + +#: qcsrc/common/vehicles/vehicle/bumblebee.qc:956 +msgid "No left gunner!" +msgstr "" + +#: qcsrc/common/vehicles/vehicle/bumblebee.qh:19 +msgid "Bumblebee" +msgstr "" + +#: qcsrc/common/vehicles/vehicle/racer.qh:19 +msgid "Racer" +msgstr "" + +#: qcsrc/common/vehicles/vehicle/racer_weapon.qh:9 +msgid "Racer cannon" +msgstr "" + +#: qcsrc/common/vehicles/vehicle/raptor.qh:19 +msgid "Raptor" +msgstr "" + +#: qcsrc/common/vehicles/vehicle/raptor_weapons.qh:9 +msgid "Raptor cannon" +msgstr "" + +#: qcsrc/common/vehicles/vehicle/raptor_weapons.qh:17 +msgid "Raptor bomb" +msgstr "" + +#: qcsrc/common/vehicles/vehicle/raptor_weapons.qh:25 +msgid "Raptor flare" +msgstr "" + +#: qcsrc/common/vehicles/vehicle/spiderbot.qh:19 +msgid "Spiderbot" +msgstr "" + +#: qcsrc/common/weapons/all.qh:78 +msgid "Weapons dump command only works with sv_cmd.\n" +msgstr "" + +#: qcsrc/common/weapons/weapon/arc.qc:17 +msgid "Arc" +msgstr "" + +#: qcsrc/common/weapons/weapon/blaster.qc:17 +msgid "Blaster" +msgstr "" + +#: qcsrc/common/weapons/weapon/crylink.qc:17 +msgid "Crylink" +msgstr "" + +#: qcsrc/common/weapons/weapon/devastator.qc:17 +msgid "Devastator" +msgstr "" + +#: qcsrc/common/weapons/weapon/electro.qc:17 +msgid "Electro" +msgstr "" + +#: qcsrc/common/weapons/weapon/fireball.qc:17 +msgid "Fireball" +msgstr "" + +#: qcsrc/common/weapons/weapon/hagar.qc:17 +msgid "Hagar" +msgstr "" + +#: qcsrc/common/weapons/weapon/hlac.qc:17 +msgid "Heavy Laser Assault Cannon" +msgstr "" + +#: qcsrc/common/weapons/weapon/hook.qc:17 +msgid "Grappling Hook" +msgstr "" + +#: qcsrc/common/weapons/weapon/machinegun.qc:17 +msgid "MachineGun" +msgstr "" + +#: qcsrc/common/weapons/weapon/minelayer.qc:17 +msgid "Mine Layer" +msgstr "" + +#: qcsrc/common/weapons/weapon/mortar.qc:17 +msgid "Mortar" +msgstr "" + +#: qcsrc/common/weapons/weapon/porto.qc:17 +msgid "Port-O-Launch" +msgstr "" + +#: qcsrc/common/weapons/weapon/rifle.qc:18 +msgid "Rifle" +msgstr "" + +#: qcsrc/common/weapons/weapon/seeker.qc:17 +msgid "T.A.G. Seeker" +msgstr "" + +#: qcsrc/common/weapons/weapon/shockwave.qc:17 +msgid "Shockwave" +msgstr "" + +#: qcsrc/common/weapons/weapon/shotgun.qc:17 +msgid "Shotgun" +msgstr "" + +#: qcsrc/common/weapons/weapon/tuba.qc:17 +#, no-c-format +msgid "@!#%'n Tuba" +msgstr "" + +#: qcsrc/common/weapons/weapon/vaporizer.qc:18 +msgid "Vaporizer" +msgstr "" + +#: qcsrc/common/weapons/weapon/vortex.qc:18 +msgid "Vortex" +msgstr "" + +#: qcsrc/lib/counting.qh:9 +#, c-format +msgid "CI_DEC^%s years" +msgstr "" + +#: qcsrc/lib/counting.qh:12 +#, c-format +msgid "CI_ZER^%d years" +msgstr "" + +#: qcsrc/lib/counting.qh:13 +#, c-format +msgid "CI_FIR^%d year" +msgstr "" + +#: qcsrc/lib/counting.qh:14 +#, c-format +msgid "CI_SEC^%d years" +msgstr "" + +#: qcsrc/lib/counting.qh:15 +#, c-format +msgid "CI_THI^%d years" +msgstr "" + +#: qcsrc/lib/counting.qh:16 +#, c-format +msgid "CI_MUL^%d years" +msgstr "" + +#: qcsrc/lib/counting.qh:18 +#, c-format +msgid "CI_DEC^%s weeks" +msgstr "" + +#: qcsrc/lib/counting.qh:21 +#, c-format +msgid "CI_ZER^%d weeks" +msgstr "" + +#: qcsrc/lib/counting.qh:22 +#, c-format +msgid "CI_FIR^%d week" +msgstr "" + +#: qcsrc/lib/counting.qh:23 +#, c-format +msgid "CI_SEC^%d weeks" +msgstr "" + +#: qcsrc/lib/counting.qh:24 +#, c-format +msgid "CI_THI^%d weeks" +msgstr "" + +#: qcsrc/lib/counting.qh:25 +#, c-format +msgid "CI_MUL^%d weeks" +msgstr "" + +#: qcsrc/lib/counting.qh:27 +#, c-format +msgid "CI_DEC^%s days" +msgstr "" + +#: qcsrc/lib/counting.qh:30 +#, c-format +msgid "CI_ZER^%d days" +msgstr "" + +#: qcsrc/lib/counting.qh:31 +#, c-format +msgid "CI_FIR^%d day" +msgstr "" + +#: qcsrc/lib/counting.qh:32 +#, c-format +msgid "CI_SEC^%d days" +msgstr "" + +#: qcsrc/lib/counting.qh:33 +#, c-format +msgid "CI_THI^%d days" +msgstr "" + +#: qcsrc/lib/counting.qh:34 +#, c-format +msgid "CI_MUL^%d days" +msgstr "" + +#: qcsrc/lib/counting.qh:36 +#, c-format +msgid "CI_DEC^%s hours" +msgstr "" + +#: qcsrc/lib/counting.qh:39 +#, c-format +msgid "CI_ZER^%d hours" +msgstr "" + +#: qcsrc/lib/counting.qh:40 +#, c-format +msgid "CI_FIR^%d hour" +msgstr "" + +#: qcsrc/lib/counting.qh:41 +#, c-format +msgid "CI_SEC^%d hours" +msgstr "" + +#: qcsrc/lib/counting.qh:42 +#, c-format +msgid "CI_THI^%d hours" +msgstr "" + +#: qcsrc/lib/counting.qh:43 +#, c-format +msgid "CI_MUL^%d hours" +msgstr "" + +#: qcsrc/lib/counting.qh:46 +#, c-format +msgid "CI_DEC^%s minutes" +msgstr "" + +#: qcsrc/lib/counting.qh:49 +#, c-format +msgid "CI_ZER^%d minutes" +msgstr "" + +#: qcsrc/lib/counting.qh:50 +#, c-format +msgid "CI_FIR^%d minute" +msgstr "" + +#: qcsrc/lib/counting.qh:51 +#, c-format +msgid "CI_SEC^%d minutes" +msgstr "" + +#: qcsrc/lib/counting.qh:52 +#, c-format +msgid "CI_THI^%d minutes" +msgstr "" + +#: qcsrc/lib/counting.qh:53 +#, c-format +msgid "CI_MUL^%d minutes" +msgstr "" + +#: qcsrc/lib/counting.qh:55 +#, c-format +msgid "CI_DEC^%s seconds" +msgstr "" + +#: qcsrc/lib/counting.qh:58 +#, c-format +msgid "CI_ZER^%d seconds" +msgstr "" + +#: qcsrc/lib/counting.qh:59 +#, c-format +msgid "CI_FIR^%d second" +msgstr "" + +#: qcsrc/lib/counting.qh:60 +#, c-format +msgid "CI_SEC^%d seconds" +msgstr "" + +#: qcsrc/lib/counting.qh:61 +#, c-format +msgid "CI_THI^%d seconds" +msgstr "" + +#: qcsrc/lib/counting.qh:62 +#, c-format +msgid "CI_MUL^%d seconds" +msgstr "" + +#: qcsrc/lib/counting.qh:79 +#, c-format +msgid "%dst" +msgstr "" + +#: qcsrc/lib/counting.qh:80 +#, c-format +msgid "%dnd" +msgstr "" + +#: qcsrc/lib/counting.qh:81 +#, c-format +msgid "%drd" +msgstr "" + +#: qcsrc/lib/counting.qh:82 qcsrc/lib/counting.qh:85 +#, c-format +msgid "%dth" +msgstr "" + +#: qcsrc/lib/oo.qh:298 +msgid "No description" +msgstr "" + +#: qcsrc/lib/spawnfunc.qh:65 +#, c-format +msgid "" +"Entity field %s.%s (%s) is not whitelisted. If you believe this is an error, " +"please file an issue." +msgstr "" + +#: qcsrc/lib/string.qh:48 +#, c-format +msgid "%d days, %02d:%02d:%02d" +msgstr "" + +#: qcsrc/lib/string.qh:49 +#, c-format +msgid "%02d:%02d:%02d" +msgstr "" + +#: qcsrc/menu/command/menu_cmd.qc:48 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "" + +#: qcsrc/menu/command/menu_cmd.qc:49 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr "" + +#: qcsrc/menu/command/menu_cmd.qc:50 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr "" + +#: qcsrc/menu/command/menu_cmd.qc:79 +msgid "Available options:\n" +msgstr "" + +#: qcsrc/menu/command/menu_cmd.qc:128 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" + +#: qcsrc/menu/item/listbox.qc:415 +#, c-format +msgid "Item %d" +msgstr "" + +#: qcsrc/menu/item/textslider.qc:11 qcsrc/menu/item/textslider.qc:12 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:37 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:68 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:115 +msgid "Custom" +msgstr "" + +#: qcsrc/menu/xonotic/campaign.qc:241 +#, c-format +msgid "Level %d: %s" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:4 +msgid "Core Team" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:16 +msgid "Extended Team" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:48 +msgid "Website" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:53 +msgid "Stats" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:57 +msgid "Art" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:65 +msgid "Animation" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:69 +msgid "Level Design" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:92 +msgid "Music / Sound FX" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:108 +msgid "Game Code" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:116 +msgid "Marketing / PR" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:122 +msgid "Legal" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:127 +msgid "Game Engine" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:131 +msgid "Engine Additions" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:136 +msgid "Compiler" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:142 +msgid "Other Active Contributors" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:149 +msgid "Translators" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:151 +msgid "Asturian" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:156 +msgid "Belarusian" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:159 +msgid "Bulgarian" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:166 +msgid "Chinese (China)" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:172 +msgid "Chinese (Taiwan)" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:177 +msgid "Cornish" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:180 +msgid "Czech" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:185 +msgid "Dutch" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:192 +msgid "English (Australia)" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:197 +msgid "Finnish" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:202 +msgid "French" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:210 +msgid "German" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:221 +msgid "Greek" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:227 +msgid "Hungarian" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:231 +msgid "Irish" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:234 +msgid "Italian" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:240 +msgid "Kazakh" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:243 +msgid "Korean" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:247 +msgid "Polish" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:255 +msgid "Portuguese" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:261 +msgid "Romanian" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:268 +msgid "Russian" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:279 +msgid "Scottish Gaelic" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:282 +msgid "Serbian" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:288 +msgid "Spanish" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:299 +msgid "Swedish" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:303 +msgid "Ukrainian" +msgstr "" + +#: qcsrc/menu/xonotic/credits.qc:310 +msgid "Past Contributors" +msgstr "" + +#: qcsrc/menu/xonotic/cvarlist.qc:73 +msgid "forced to be saved to config.cfg" +msgstr "" + +#: qcsrc/menu/xonotic/cvarlist.qc:79 qcsrc/menu/xonotic/cvarlist.qc:89 +msgid "will not be saved" +msgstr "" + +#: qcsrc/menu/xonotic/cvarlist.qc:84 +msgid "will be saved to config.cfg" +msgstr "" + +#: qcsrc/menu/xonotic/cvarlist.qc:93 +msgid "private" +msgstr "" + +#: qcsrc/menu/xonotic/cvarlist.qc:95 +msgid "engine setting" +msgstr "" + +#: qcsrc/menu/xonotic/cvarlist.qc:97 +msgid "read only" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_credits.qc:13 +#: qcsrc/menu/xonotic/dialog_monstertools.qc:38 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:287 +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:85 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:75 +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.qc:14 +msgid "OK" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_credits.qh:7 +msgid "Credits" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_credits.qh:8 +msgid "The Xonotic credits" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:39 +msgid "" +"Welcome to Xonotic, please select your language preference and enter your " +"player name to get started. You can change these options later through the " +"menu system." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:45 +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:28 +msgid "Name:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:53 +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:60 +msgid "Name under which you will appear in the game" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:69 +msgid "Text language:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:78 +msgid "Allow player statistics to use your nickname at stats.xonotic.org?" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:84 +msgid "Undecided" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:88 +msgid "Save settings" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_firstrun.qh:6 +msgid "Welcome" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:16 +msgid "Ammunition display:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:19 +msgid "Show only current ammo type" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:44 +msgid "Noncurrent alpha:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:26 +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:48 +msgid "Noncurrent scale:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:24 +msgid "Align icon:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:31 +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:35 +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:25 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:33 +#: qcsrc/menu/xonotic/dialog_hudpanel_quickmenu.qc:18 +msgid "Left" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:25 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:36 +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:26 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_quickmenu.qc:20 +msgid "Right" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qh:6 +msgid "Ammo Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:17 +msgid "Message duration:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:21 +msgid "Fade time:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:25 +msgid "Flip messages order" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:27 +#: qcsrc/menu/xonotic/dialog_hudpanel_quickmenu.qc:15 +msgid "Text alignment:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:31 +#: qcsrc/menu/xonotic/dialog_hudpanel_quickmenu.qc:19 +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:71 +msgid "Center" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:35 +msgid "Font scale:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qh:6 +msgid "Centerprint Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:15 +msgid "Chat entries:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:18 +msgid "Chat size:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:22 +msgid "Chat lifetime:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:26 +msgid "Chat beep sound" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.qh:6 +msgid "Chat Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.qc:14 +msgid "Engine info:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.qc:17 +msgid "Use an averaging algorithm for fps" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.qh:6 +msgid "Engine Info Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:15 +msgid "Combine health and armor" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:17 +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:15 +msgid "Enable status bar" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:19 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:17 +msgid "Status bar alignment:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:27 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:25 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:35 +msgid "Inward" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:29 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:38 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:27 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:36 +msgid "Outward" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:30 +msgid "Icon alignment:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:40 +msgid "Flip health and armor positions" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qh:6 +msgid "Health/Armor Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.qc:14 +msgid "Info messages:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.qc:17 +msgid "Flip align" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.qh:6 +msgid "Info Messages Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:16 +msgid "PNL^Disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:17 +msgid "PNL^Enabled spectating" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:18 +msgid "PNL^Enabled even playing in warmup" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:29 +msgid "Reduced" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:32 +msgid "Text/icon ratio:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:35 +msgid "Hide spawned items" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:37 +msgid "Hide big armor and health" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:39 +msgid "Dynamic size" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qh:6 +msgid "Items Time Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.qh:6 +msgid "Mod Icons Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:15 +msgid "Notifications:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:18 +msgid "Also print notifications to the console" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:21 +msgid "Flip notify order" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:24 +msgid "Entry lifetime:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:28 +msgid "Entry fadetime:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qh:6 +msgid "Notification Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:15 +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:14 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:15 +msgid "Panel disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:16 +msgid "Panel enabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:17 +msgid "Panel enabled even observing" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:18 +msgid "Panel enabled only in Race/CTS" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:24 +msgid "Status bar" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:26 +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:68 +msgid "Left align" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:27 +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:74 +msgid "Right align" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:28 +msgid "Inward align" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:29 +msgid "Outward align" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:33 +msgid "Flip speed/acceleration positions" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:37 +msgid "Speed:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:38 +msgid "Include vertical speed" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:49 +msgid "Speed unit:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:51 +msgid "qu/s" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:52 +msgid "m/s" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:53 +msgid "km/h" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:54 +msgid "mph" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:55 +msgid "knots" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:57 +msgid "Show" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:60 +msgid "Top speed" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:66 +msgid "Acceleration:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:67 +msgid "Include vertical acceleration" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qh:6 +msgid "Physics Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qh:6 +msgid "Powerups Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:15 +msgid "Panel enabled when spectating" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:16 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:17 +msgid "Panel always enabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:23 +msgid "Forced aspect:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qh:6 +msgid "Pressed Keys Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_quickmenu.qh:6 +msgid "Quick Menu Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.qh:6 +msgid "Race Timer Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:16 +msgid "Panel enabled in teamgames" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:23 +msgid "Radar:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:26 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:68 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:107 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:54 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:87 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:103 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:45 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:67 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:118 +#: qcsrc/menu/xonotic/util.qc:792 +msgid "Alpha:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:30 +msgid "Rotation:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:32 +msgid "Forward" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:33 +msgid "West" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:34 +msgid "South" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:35 +msgid "East" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:36 +msgid "North" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:40 +msgid "Scale:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:44 +msgid "Zoom mode:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:46 +msgid "Zoomed in" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:47 +msgid "Zoomed out" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:48 +msgid "Always zoomed" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:49 +msgid "Never zoomed" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qh:6 +msgid "Radar Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.qc:15 +msgid "Score:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.qc:18 +msgid "Rankings:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.qc:19 +msgid "Off" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.qc:20 +msgid "And me" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.qc:21 +msgid "Pure" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.qh:6 +msgid "Score Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:14 +msgid "Timer:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:17 +msgid "Show elapsed time" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.qh:6 +msgid "Timer Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.qc:15 +msgid "Alpha after voting:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.qh:6 +msgid "Vote Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:20 +msgid "Fade out after:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:22 +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:167 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:139 +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:55 +msgid "Never" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:24 +#, c-format +msgid "%ds" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:28 +msgid "Fade effect:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:31 +msgid "EF^None" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:32 +msgid "Alpha" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:33 +msgid "Slide" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:34 +msgid "EF^Both" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:38 +msgid "Weapon icons:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:41 +msgid "Show only owned weapons" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:52 +msgid "Show weapon ID as:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:53 +msgid "SHOWAS^None" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:54 +msgid "Number" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:55 +msgid "Bind" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:58 +msgid "Weapon ID scale:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:64 +msgid "Show Accuracy" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:65 +msgid "Show Ammo" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:68 +msgid "Ammo bar alpha:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:74 +msgid "Ammo bar color:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qh:6 +msgid "Weapons Panel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:19 +msgid "HUD skins" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:22 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:196 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:31 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:42 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:25 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc:35 +msgid "Filter:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:30 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:53 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:49 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc:44 +msgid "Refresh" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:33 +#: qcsrc/menu/xonotic/dialog_settings_user.qc:30 +msgid "Set skin" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:37 +msgid "Save current skin" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:46 +msgid "Panel background defaults:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:48 +#: qcsrc/menu/xonotic/util.qc:767 +msgid "Background:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:62 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:77 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:116 +#: qcsrc/menu/xonotic/util.qc:770 qcsrc/menu/xonotic/util.qc:786 +#: qcsrc/menu/xonotic/util.qc:803 +msgid "Disable" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:60 +#: qcsrc/menu/xonotic/util.qc:783 +msgid "Border size:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:75 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:114 +msgid "Team color:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:83 +#: qcsrc/menu/xonotic/util.qc:809 +msgid "Test team color in configure mode" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:86 +#: qcsrc/menu/xonotic/util.qc:812 +msgid "Padding:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:93 +msgid "HUD Dock:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:95 +msgid "DOCK^Disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:96 +msgid "DOCK^Small" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:97 +msgid "DOCK^Medium" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:98 +msgid "DOCK^Large" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:121 +msgid "Grid settings:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:124 +msgid "Snap panels to grid" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:127 +msgid "Grid size:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:129 +msgid "X:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:136 +msgid "Y:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:145 +msgid "Exit setup" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qh:6 +msgid "Panel HUD Setup" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:13 +msgid "Monster:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:22 +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:20 +msgid "Spawn" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:23 +#: qcsrc/menu/xonotic/serverlist.qc:268 +msgid "Remove" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:25 +msgid "Move target:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:26 +msgid "Follow" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:27 +msgid "Wander" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:28 +msgid "Spawnpoint" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:29 +msgid "No moving" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:31 +msgid "Colors:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:33 +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:39 +msgid "Set skin:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_monstertools.qh:6 +msgid "Monster Tools" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qc:14 +msgid "Servers" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qc:15 +msgid "Find servers to play on" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qc:17 +msgid "Host your own game" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qc:18 +msgid "Media" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qc:19 +msgid "Profile" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qh:6 +msgid "Multiplayer" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qh:7 +msgid "" +"Play online, against your friends in LAN, view demos or change player " +"settings" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:46 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:134 +#: qcsrc/menu/xonotic/skinlist.qc:88 qcsrc/menu/xonotic/util.qc:769 +#: qcsrc/menu/xonotic/util.qc:785 qcsrc/menu/xonotic/util.qc:794 +#: qcsrc/menu/xonotic/util.qc:802 qcsrc/menu/xonotic/util.qc:814 +msgid "Default" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:48 +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:64 +msgid "Unlimited" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:65 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:66 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:128 +msgid "Frag limit:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:65 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:66 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:78 +msgid "The amount of frags needed before the match will end" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:67 +msgid "Capture limit:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:67 +msgid "The amount of captures needed before the match will end" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:69 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:73 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:74 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:75 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:76 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:77 +msgid "Point limit:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:69 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:77 +msgid "The amount of points needed before the match will end" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:70 +msgid "Lives:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:71 +msgid "Laps:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:72 +msgid "Goals:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:72 +msgid "The amount of goals needed before the match will end" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:97 +msgid "Gametype" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:102 +msgid "Time limit:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:104 +msgid "Timelimit in minutes that when hit, will end the match" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:105 +#, c-format +msgid "%d minutes" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:106 +msgid "TIMLIM^Default" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:107 +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:159 +msgid "1 minute" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:124 +msgid "TIMLIM^Infinite" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:132 +msgid "Teams:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:135 +msgid "2 teams" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:136 +msgid "3 teams" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:137 +msgid "4 teams" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:140 +msgid "Player slots:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:142 +msgid "" +"The maximum amount of players or bots that can be connected to your server " +"at once" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:144 +msgid "Number of bots:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:146 +msgid "Amount of bots on your server" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:148 +msgid "Bot skill:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:151 +msgid "Specify how experienced the bots will be" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:152 +msgid "Botlike" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:153 +msgid "Beginner" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:154 +msgid "You will win" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:155 +msgid "You can win" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:156 +msgid "You might win" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:157 +msgid "Advanced" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:158 +msgid "Expert" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:159 +msgid "Pro" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:160 +msgid "Assassin" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:161 +msgid "Unhuman" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:162 +msgid "Godlike" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:178 +msgid "Mutators..." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:179 +msgid "Mutators and weapon arenas" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:188 +msgid "Maplist" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:198 +msgid "" +"Click here or Ctrl-F to provide a keyword to narrow down the map list. Ctrl-" +"Delete to clear; Enter when done." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:207 +msgid "Add shown" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:208 +msgid "Add the maps shown in the list to your selection" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:211 +msgid "Remove shown" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:212 +msgid "Remove the maps shown in the list from your selection" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:217 +msgid "Add all" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:218 +msgid "Add every available map to your selection" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:221 +msgid "Remove all" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:222 +msgid "Remove all the maps from your selection" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:229 +msgid "Start Multiplayer!" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:58 +msgid "Title:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:64 +msgid "Author:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:70 +msgid "Game types:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:93 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:296 +msgid "Close" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:96 +msgid "MAP^Play" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qh:7 +msgid "Map Information" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:28 +msgid "All Weapons Arena" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:30 +msgid "Most Weapons Arena" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:49 +#, c-format +msgid "%s Arena" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:61 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:159 +msgid "Dodging" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:63 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:267 +msgid "InstaGib" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:65 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:216 +msgid "New Toys" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:67 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:272 +msgid "NIX" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:69 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:220 +msgid "Rocket Flying" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:71 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:212 +msgid "Invincible Projectiles" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:75 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:282 +msgid "No start weapons" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:77 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:195 +msgid "Low gravity" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:79 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:166 +msgid "Cloaked" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:81 +msgid "Hook" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:83 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:173 +msgid "Midair" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:87 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:224 +msgid "Piñata" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:89 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:229 +msgid "Weapons stay" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:91 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:184 +msgid "Blood loss" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:93 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:208 +msgid "Jet pack" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:95 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:170 +msgid "Buffs" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:97 +msgid "Overkill" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:99 +msgid "No powerups" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:101 +msgid "Powerups" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:103 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:163 +msgid "Touch explode" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:105 +msgid "MUT^None" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:156 +msgid "Gameplay mutators:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:160 +msgid "Enable dodging" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:167 +msgid "All players are almost invisible" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:174 +msgid "Only possible to inflict damage on your enemy while he's airborne" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:178 +msgid "Damage done to your enemy gets added to your own health" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:183 +msgid "" +"Amount of health below which your player gets stunned because of blood loss" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:192 +msgid "Make things fall to the ground slower, lower value means lower gravity" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:201 +msgid "Weapon & item mutators:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:204 +msgid "Grappling hook" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:205 +msgid "Players spawn with the grappling hook" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:209 +msgid "Players spawn with the jetpack" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:225 +msgid "Players will drop all weapons they possessed when they are killed" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:230 +msgid "Weapons stay after they are picked up" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:235 +msgid "Regular (no arena)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:237 +msgid "Weapon arenas:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:238 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:256 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:261 +msgid "" +"Selecting a weapon arena will give all players that weapon at spawn as well " +"as unlimited ammo, and disable all other weapon pickups." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:255 +msgid "Most weapons" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:260 +msgid "All weapons" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:264 +msgid "Special arenas:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:268 +msgid "" +"Players will be given only one weapon, which can instantly kill the opponent " +"with a single shot. 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 " +"does not inflict any damage but is good for doing trickjumps." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:273 +msgid "" +"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." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:277 +msgid "with blaster" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:278 +msgid "Always carry the blaster as an additional weapon in Nix" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qh:9 +msgid "Mutators" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:38 +msgid "SRVS^Categories" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:41 +msgid "SRVS^Empty" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:42 +msgid "Show empty servers" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:46 +msgid "SRVS^Full" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:47 +msgid "Show full servers that have no slots available" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:51 +msgid "Pause" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:52 +msgid "" +"Pause updating the server list to prevent servers from \"jumping around\"" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:53 +msgid "Reload the server list" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:67 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:223 +msgid "Address:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:78 +msgid "Info..." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:79 +msgid "Show more information about the currently highlighted server" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:84 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:303 +msgid "Join!" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:154 +#: qcsrc/menu/xonotic/serverlist.qc:1061 +msgid "MOD^Default" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:161 +#, c-format +msgid "%d modified" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:161 +msgid "Official" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:169 +msgid "N/A (auth library missing, can't connect)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:171 +msgid "N/A (auth library missing)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:177 +msgid "Not supported (can't connect)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:179 +msgid "Not supported (won't encrypt)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:183 +msgid "Supported (will encrypt)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:185 +msgid "Supported (won't encrypt)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:189 +msgid "Requested (will encrypt)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:191 +msgid "Requested (won't encrypt)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:195 +msgid "Required (can't connect)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:197 +msgid "Required (will encrypt)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:217 +msgid "Hostname:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:231 +msgid "Gametype:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:236 +msgid "Map:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:241 +msgid "Mod:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:246 +msgid "Version:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:251 +msgid "Settings:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:258 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:290 +msgid "Players:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:263 +msgid "Bots:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:268 +msgid "Free slots:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:274 +msgid "Encryption:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:279 +msgid "ID:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:284 +msgid "Key:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qh:7 +msgid "Server Information" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media.qc:25 +msgid "Demos" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media.qc:26 +msgid "Screenshots" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media.qc:27 +msgid "Music Player" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:48 +msgid "Auto record demos" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:57 +msgid "Timedemo" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:58 +msgid "Benchmark how fast your computer can run the highlighted demo" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:62 +msgid "DEMO^Play" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:13 +msgid "Playing a demo will disconnect you from the current match." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:15 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:15 +msgid "Do you really wish to disconnect now?" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qh:6 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qh:6 +msgid "Disconnect" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:13 +msgid "Timing a demo will disconnect you from the current match." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:37 +msgid "MUSICPL^Add" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:40 +msgid "MUSICPL^Add all" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:44 +msgid "Set as menu track" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:48 +msgid "Reset default menu track" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:54 +msgid "Playlist:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:55 +msgid "Random order" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:60 +msgid "MUSICPL^Stop" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:63 +msgid "MUSICPL^Play" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:66 +msgid "MUSICPL^Pause" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:69 +msgid "MUSICPL^Prev" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:72 +msgid "MUSICPL^Next" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:76 +msgid "MUSICPL^Remove" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:79 +msgid "MUSICPL^Remove all" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc:43 +msgid "Auto screenshot scoreboard" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc:63 +msgid "Open in the viewer" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:139 +msgid "Reset" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:144 +msgid "Previous" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:147 +msgid "Next" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:152 +msgid "Slide show" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:34 +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:21 +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:37 +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:25 +#: qcsrc/menu/xonotic/dialog_settings_user.qc:20 +#: qcsrc/menu/xonotic/dialog_settings_video.qc:21 +msgid "Apply immediately" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:48 +msgid "Name" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:77 +msgid "Model" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:96 +msgid "Glowing color" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:106 +msgid "Detail color" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:121 +msgid "Statistics" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:125 +msgid "Allow player statistics to track your client" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:129 +msgid "Allow player statistics to use your nickname" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:145 +msgid "Country" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:159 +msgid "Gender:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:161 +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:174 +msgid "Undisclosed" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:162 +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:172 +msgid "Female" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:163 +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:173 +msgid "Male" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:166 +msgid "Gender" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_quit.qc:11 +msgid "Are you sure you want to quit?" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_quit.qc:15 +msgid "Back to work..." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_quit.qc:17 +msgid "I got some more fragging to do!" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_quit.qh:7 +msgid "Quit the game" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:15 +msgid "Model:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:21 +msgid "Remove *" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:23 +msgid "Copy *" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:24 +msgid "Paste" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:26 +msgid "Bone:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:31 +msgid "Set * as child" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:32 +msgid "Attach to *" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:34 +msgid "Detach from *" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:37 +msgid "Visual object properties for *:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:41 +msgid "Set alpha:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:44 +msgid "Set color main:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:46 +msgid "Set color glow:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:50 +msgid "Set frame:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:54 +msgid "Physical object properties for *:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:56 +msgid "Set material:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:62 +msgid "Set solidity:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:63 +msgid "Non-solid" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:64 +msgid "Solid" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:65 +msgid "Set physics:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:66 +msgid "Static" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:67 +msgid "Movable" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:68 +msgid "Physical" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:70 +msgid "Set scale:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:72 +msgid "Set force:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:76 +msgid "Claim *" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:78 +msgid "* object info" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:79 +msgid "* mesh info" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:80 +msgid "* attachment info" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:81 +msgid "Show help" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:82 +msgid "* is the object you are facing" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qh:6 +msgid "Sandbox Tools" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings.qc:18 +msgid "Video" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings.qc:19 +msgid "Effects" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings.qc:20 +msgid "Audio" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings.qc:22 +msgid "Game" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings.qc:23 +msgid "Input" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings.qc:24 +msgid "User" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings.qc:25 +#: qcsrc/menu/xonotic/keybinder.qc:105 +msgid "Misc" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings.qh:6 +msgid "Settings" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings.qh:7 +msgid "Change the game settings" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:29 +msgid "Master:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:35 +msgid "Music:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:43 +msgid "VOL^Ambient:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:50 +msgid "Info:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:57 +msgid "Items:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:64 +msgid "Pain:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:71 +msgid "Player:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:78 +msgid "Shots:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:85 +msgid "Voice:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:93 +msgid "Weapons:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:99 +msgid "New style sound attenuation" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:102 +msgid "Mute sounds when not active" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:105 +msgid "Frequency:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:107 +msgid "Sound output frequency" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:108 +msgid "8 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:109 +msgid "11.025 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:110 +msgid "16 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:111 +msgid "22.05 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:112 +msgid "24 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:113 +msgid "32 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:114 +msgid "44.1 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:115 +msgid "48 kHz" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:119 +msgid "Channels:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:121 +msgid "Number of channels for the sound output" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:122 +msgid "Mono" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:123 +msgid "Stereo" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:124 +msgid "2.1" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:125 +msgid "4" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:126 +msgid "5" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:127 +msgid "5.1" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:128 +msgid "6.1" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:129 +msgid "7.1" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:134 +msgid "Swap stereo output channels" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:135 +msgid "Swap left/right channels" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:138 +msgid "Headphone friendly mode" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:139 +msgid "" +"Enable spatialization (blend the right and left channel slightly to decrease " +"stereo separation a bit for headphones)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:143 +msgid "Hit indication sound" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:144 +msgid "Play a hit indicator sound when your shot hits an enemy" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:147 +msgid "Chat message sound" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:149 +msgid "Menu sounds" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:150 +msgid "Play sounds when clicking menu items" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:151 +msgid "Focus sounds" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:152 +msgid "Play sounds when hovering over menu items too" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:156 +msgid "Time announcer:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:158 +msgid "WRN^Disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:160 +msgid "5 minutes" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:161 +msgid "WRN^Both" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:164 +msgid "Automatic taunts:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:166 +msgid "Automatically taunt enemies after fragging them" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:168 +msgid "Sometimes" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:169 +msgid "Often" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:170 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:141 +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:57 +msgid "Always" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:176 +msgid "Debug info about sounds" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:41 +msgid "Quality preset:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:45 +msgid "PRE^OMG!" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:48 +msgid "PRE^Low" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:50 +msgid "PRE^Medium" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:52 +msgid "PRE^Normal" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:54 +msgid "PRE^High" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:56 +msgid "PRE^Ultra" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:60 +msgid "PRE^Ultimate" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:65 +msgid "Geometry detail:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:67 +msgid "Change the smoothness of the curves on the map (default: normal)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:68 +msgid "DET^Lowest" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:69 +msgid "DET^Low" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:70 +msgid "DET^Normal" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:71 +msgid "DET^Good" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:72 +msgid "DET^Best" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:73 +msgid "DET^Insane" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:77 +msgid "Player detail:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:79 +msgid "PDET^Low" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:80 +msgid "PDET^Medium" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:81 +msgid "PDET^Normal" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:82 +msgid "PDET^Good" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:83 +msgid "PDET^Best" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:87 +msgid "Texture resolution:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:91 +msgid "RES^Leet" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:92 +msgid "RES^Lowest" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:93 +msgid "RES^Very low" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:94 +msgid "RES^Low" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:95 +msgid "RES^Normal" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:96 +msgid "RES^Good" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:97 +msgid "RES^Best" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:110 +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:115 +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:120 +msgid "Avoid lossy texture compression" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:131 +msgid "Show surfaces" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:132 +msgid "" +"Disable textures completely for very slow hardware. This gives a huge " +"performance boost, but looks very ugly. (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:135 +msgid "Use lightmaps" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:136 +msgid "" +"Use high resolution lightmaps, which will look pretty but use up some extra " +"video memory (default: enabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:138 +msgid "Deluxe mapping" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:139 +msgid "Use per-pixel lighting effects (default: enabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:141 +msgid "Gloss" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:142 +msgid "" +"Enable the use of glossmaps on textures supporting it (default: enabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:145 +msgid "Offset mapping" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:146 +msgid "" +"Offset mapping effect that will make textures with bumpmaps appear like they " +"\"pop out\" of the flat 2D surface (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:148 +msgid "Relief mapping" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:149 +msgid "" +"Higher quality offset mapping, which also has a huge impact on performance " +"(default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:152 +msgid "Reflections:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:153 +msgid "" +"Reflection and refraction quality, has a huge impact on performance on maps " +"with reflecting surfaces (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:156 +msgid "Resolution of reflections/refractions (default: good)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:157 +msgid "Blurred" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:158 +msgid "REFL^Good" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:159 +msgid "Sharp" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:163 +msgid "Decals" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:164 +msgid "Enable decals (bullet holes and blood) (default: enabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:165 +msgid "Decals on models" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:169 +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:253 +msgid "Distance:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:172 +msgid "Decals further away than this will not be drawn (default: 300)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:176 +msgid "Time:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:179 +msgid "Time in seconds before decals fade away (default: 2)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:183 +msgid "Damage effects:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:185 +msgid "DMGFX^Disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:186 +msgid "Skeletal" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:187 +msgid "DMGFX^All" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:191 +msgid "No dynamic lighting" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:192 +msgid "Enable corona flares around certain lights (default: enabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:194 +msgid "Fake corona lighting" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:195 +msgid "" +"Enable faster but uglier dynamic lights by rendering bright coronas instead " +"of real dynamic lights (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:198 +msgid "Realtime dynamic lighting" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:199 +msgid "" +"Enable rendering of dynamic lights such as explosions and rocket lights " +"(default: enabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:201 +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:207 +msgid "Shadows" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:202 +msgid "Enable rendering of shadows from dynamic lights (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:205 +msgid "Realtime world lighting" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:206 +msgid "" +"Enable rendering of full realtime world lighting on maps that support it. " +"Note that this might have a big impact on performance. (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:208 +msgid "" +"Enable rendering of shadows from realtime world lights (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:212 +msgid "Use normal maps" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:213 +msgid "Enable use of directional shading on textures (default: enabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:215 +msgid "Soft shadows" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:219 +msgid "Fade corona according to visibility" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:220 +msgid "Fade coronas according to visibility (default: enabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:224 +msgid "Bloom" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:225 +msgid "" +"Enable bloom effect, which brightens the neighboring pixels of very bright " +"pixels. Has a big impact on performance. (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:226 +msgid "Extra postprocessing effects" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:227 +msgid "" +"Enables special postprocessing effects for when damaged or under water or " +"using a powerup (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:232 +msgid "Motion blur strength - 0.4 recommended" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:233 +msgid "Motion blur:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:239 +msgid "Particles" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:240 +msgid "Spawnpoint effects" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:241 +msgid "Particles effects at all spawn points and whenever a player spawns" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:246 +msgid "Quality:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:249 +msgid "" +"Multiplier for amount of particles. Less means less particles, which in turn " +"gives for better performance (default: 1.0)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:256 +msgid "Particles further away than this will not be drawn (default: 1000)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:31 +msgid "No crosshair" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:33 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:62 +msgid "Per weapon" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:34 +msgid "" +"Set a different crosshair for each weapon, good if you play without weapon " +"models" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:48 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:81 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:97 +msgid "Size:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:64 +msgid "By health" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:76 +msgid "Use rings to indicate weapon status" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:93 +msgid "Enable center crosshair dot" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:111 +msgid "Use normal crosshair color" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:122 +msgid "Smooth effects of crosshairs" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:125 +msgid "Hit testing:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:128 +msgid "" +"None: do not do hit tests for the crosshair; TrueAim: blur the crosshair " +"when there's an obstacle between your gun and the target; Enemies: also " +"enlarge the crosshair when you would hit an enemy" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:129 +msgid "HTTST^Disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:130 +msgid "HTTST^TrueAim" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:131 +msgid "HTTST^Enemies" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:136 +msgid "Blur crosshair if the shot is obstructed" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:140 +msgid "Enlarge crosshair if targeting an enemy" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:143 +msgid "Animate crosshair when hitting an enemy" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:146 +msgid "Animate crosshair when picking up an item" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qh:7 +msgid "Crosshair" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:48 +msgid "Fading speed:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:51 +msgid "Enable rows / columns highlighting" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:55 +msgid "Show decimals in respawn countdown" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:57 +msgid "Show accuracy underneath scoreboard" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:61 +msgid "Waypoints" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:63 +msgid "Display waypoint markers for objectives on the map" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:64 +msgid "Show various gametype specific waypoints" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:70 +msgid "Control transparency of the waypoints" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:74 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:124 +msgid "Fontsize:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:80 +msgid "Edge offset:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:89 +msgid "Fade when near the crosshair" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:94 +msgid "Damage" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:96 +msgid "Overlay:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:99 +msgid "Factor:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:104 +msgid "Fade rate:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:112 +msgid "Player Names" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:114 +msgid "Show names above players" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:130 +msgid "Max distance:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:136 +msgid "Decolorize:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:140 +#: qcsrc/menu/xonotic/keybinder.qc:99 +msgid "Teamplay" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:148 +msgid "Only when near crosshair" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:152 +msgid "Display health and armor" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:157 +msgid "Damage overlay:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:160 +msgid "Dynamic HUD" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:161 +msgid "HUD moves around following player's movement" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:163 +msgid "Shake the HUD when hurt" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:167 +#: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qh:6 +msgid "Enter HUD editor" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qh:7 +msgid "HUD" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qc:21 +msgid "In order for the HUD editor to show, you must first be in game." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qc:23 +msgid "Do you wish to start a local game to set up the HUD?" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:24 +msgid "Frag Information" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:26 +msgid "Display information about killing sprees" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:29 +msgid "Only display sprees if they are achievements" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:34 +msgid "Show spree information in centerprints" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:38 +msgid "Show spree information in death messages" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:43 +msgid "Sprees in info messages:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:46 +msgid "SPREES^Disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:47 +msgid "Target" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:48 +msgid "Attacker" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:49 +msgid "SPREES^Both" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:55 +msgid "Print on a seperate line" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:58 +msgid "Add extra frag information to centerprint when available" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:62 +msgid "Add frag location to death messages when available" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:65 +msgid "Gamemode Settings" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:67 +msgid "Display capture times in Capture The Flag" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:71 +msgid "Display name of flag stealer in Capture The Flag" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:76 +#: qcsrc/menu/xonotic/dialog_settings_input.qc:91 +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:133 +msgid "Other" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:78 +msgid "Display console messages in the top left corner" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:80 +msgid "Display all info messages in the chatbox" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:82 +msgid "Display player statuses in the chatbox" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:86 +msgid "Powerup notifications" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:89 +msgid "Weapon centerprint notifications" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:92 +msgid "Weapon info message notifications" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:96 +msgid "Announcers" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:98 +msgid "Respawn countdown sounds" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:101 +msgid "Killstreak sounds" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:104 +msgid "Achievement sounds" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qh:7 +msgid "Messages" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:30 +msgid "Items" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:32 +msgid "Use simple 2D images instead of item models" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:34 +msgid "Unavailable alpha:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:37 +msgid "Unavailable color:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:39 +msgid "GHOITEMS^Black" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:40 +msgid "GHOITEMS^Dark" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:41 +msgid "GHOITEMS^Tinted" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:42 +msgid "GHOITEMS^Normal" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:43 +msgid "GHOITEMS^Blue" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:49 +#: qcsrc/menu/xonotic/serverlist.qc:767 +msgid "Players" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:51 +msgid "Force player models to mine" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:53 +msgid "Force player colors to mine" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:56 +msgid "In non teamplay modes only" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:60 +msgid "Body fading:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:63 +msgid "Gibs:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:65 +msgid "GIBS^None" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:66 +msgid "GIBS^Few" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:67 +msgid "GIBS^Many" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:68 +msgid "GIBS^Lots" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qh:7 +msgid "Models" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qh:8 +msgid "Customize how players and items are displayed in game" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:26 +msgid "1st person perspective" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:30 +msgid "Slide to third person upon death" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:34 +msgid "Smooth the view when landing from a jump" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:38 +msgid "Smooth the view while crouching" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:42 +msgid "View waving while idle" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:46 +msgid "View bobbing while walking around" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:51 +msgid "3rd person perspective" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:55 +msgid "Back distance" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:61 +msgid "Up distance" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:67 +msgid "Allow passing through walls while spectating" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:70 +msgid "Field of view:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:72 +msgid "Field of vision in degrees (default: 100)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:76 +msgid "ZOOM^Zoom factor:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:78 +msgid "How big the zoom factor is when the zoom button is pressed" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:81 +msgid "ZOOM^Zoom speed:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:83 +msgid "How fast the view will be zoomed, disable to zoom instantly" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:92 +msgid "ZOOM^Instant" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:96 +msgid "ZOOM^Zoom sensitivity:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:98 +msgid "" +"How zoom changes sensitivity, from 0 (lower sensitivity) to 1 (no " +"sensitivity change)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:101 +msgid "Velocity zoom" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:102 +msgid "Forward movement only" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:106 +msgid "VZOOM^Factor" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:113 +msgid "Display reticle 2D overlay while zooming" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:116 +msgid "Release zoom when you die or respawn" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:120 +msgid "Release zoom when you switch weapons" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qh:7 +#: qcsrc/menu/xonotic/keybinder.qc:76 +msgid "View" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:34 +msgid "Weapon Priority List (* = mutator weapon)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:40 +msgid "Up" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:44 +msgid "Down" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:50 +msgid "Use priority list for weapon cycling" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:51 +msgid "" +"Make use of the list above when cycling through weapons with the mouse wheel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:53 +msgid "Cycle through only usable weapon selections" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:57 +msgid "Auto switch weapons on pickup" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:58 +msgid "" +"Automatically switch to newly picked up weapons if they are better than what " +"you are carrying" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:61 +msgid "Release attack buttons when you switch weapons" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:64 +msgid "Draw 1st person weapon model" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:65 +msgid "Draw the weapon model" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:69 +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:72 +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:75 +msgid "Position of the weapon model; requires reconnect" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:80 +msgid "Gun model swaying" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:85 +msgid "Gun model bobbing" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qh:7 +#: qcsrc/menu/xonotic/keybinder.qc:43 +msgid "Weapons" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:33 +msgid "Key Bindings" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:37 +msgid "Change key..." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:41 +msgid "Edit..." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:47 +msgid "Clear" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:52 +msgid "Reset all" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:57 +msgid "Mouse" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:59 +msgid "Sensitivity:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:61 +msgid "Mouse speed multiplier" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:63 +msgid "Smooth aiming" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:64 +msgid "Smoothes the mouse movement, but makes aiming slightly less responsive" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:66 +msgid "Invert aiming" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:67 +msgid "Invert mouse movement on the Y-axis" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:69 +msgid "Use system mouse positioning" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:74 +msgid "Enable built in mouse acceleration" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:78 +#: qcsrc/menu/xonotic/dialog_settings_input.qc:82 +#: qcsrc/menu/xonotic/dialog_settings_input.qc:85 +msgid "Disable system mouse acceleration" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:79 +msgid "Make use of DGA mouse input" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:93 +msgid "Pressing \"enter console\" key also closes it" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:94 +msgid "Allow the console toggling bind to also close the console" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:96 +msgid "Automatically repeat jumping if holding jump" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:99 +msgid "Jetpack on jump:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:101 +msgid "JPJUMP^Disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:102 +msgid "Air only" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:103 +msgid "JPJUMP^All" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:109 +#: qcsrc/menu/xonotic/dialog_settings_input.qc:114 +#: qcsrc/menu/xonotic/dialog_settings_input.qc:119 +msgid "Use joystick input" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:31 +msgid "Command when pressed:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:34 +msgid "Command when released:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:40 +msgid "Cancel" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qh:7 +msgid "User defined key bind" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:11 +#, c-format +msgid "%d fps" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:12 +#, c-format +msgid "%d KB/s" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:13 +#, c-format +msgid "%d MB/s" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:27 +msgid "Network" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:29 +msgid "Client UDP port:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:31 +msgid "Force client to use chosen port unless it is set to 0" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:34 +msgid "Bandwidth:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:36 +msgid "Specify your network speed" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:37 +msgid "56k" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:38 +msgid "ISDN" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:39 +msgid "Slow ADSL" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:40 +msgid "Fast ADSL" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:41 +msgid "Broadband" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:44 +msgid "Input packets/s:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:46 +msgid "How many input packets to send to the server each second" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:48 +msgid "Server queries/s:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:52 +msgid "Downloads:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:54 +msgid "Maximum number of concurrent HTTP/FTP downloads" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:56 +msgid "Download speed:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:69 +msgid "Local latency:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:73 +msgid "Show netgraph" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:74 +msgid "Show a graph of packet sizes and other information" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:76 +msgid "Client-side movement prediction" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:78 +msgid "Movement error compensation" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:82 +msgid "Use encryption (AES) when available" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:85 +msgid "Framerate" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:87 +msgid "Maximum:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:99 +msgid "MAXFPS^Unlimited" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:102 +msgid "Target:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:104 +msgid "TRGT^Disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:116 +msgid "Idle limit:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:122 +msgid "IDLFPS^Unlimited" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:126 +msgid "Save processing time for other apps" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:129 +msgid "Show frames per second" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:130 +msgid "Show your rendered frames per second" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:135 +msgid "Menu tooltips:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:137 +msgid "" +"Menu tooltips: disabled, standard or advanced (also shows cvar or console " +"command bound to the menu item)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:138 +msgid "TLTIP^Disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:139 +msgid "TLTIP^Standard" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:140 +msgid "TLTIP^Advanced" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:143 +msgid "Show current date and time" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:144 +msgid "Show current date and time of day, useful on screenshots" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:147 +msgid "Enable developer mode" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:151 +msgid "Advanced settings..." +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:152 +msgid "Advanced settings where you can tweak every single variable of the game" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:157 +#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qh:6 +msgid "Factory reset" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:31 +msgid "Cvar filter:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:38 +msgid "Modified cvars only" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:45 +msgid "Setting:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:49 +msgid "Type:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:53 +msgid "Value:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:70 +msgid "Description:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qh:7 +msgid "Advanced settings" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:11 +msgid "Are you sure you want to reset all settings?" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:13 +msgid "This will create a backup config in your data directory" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_user.qc:25 +msgid "Menu Skins" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_user.qc:64 +msgid "Text Language" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_user.qc:69 +msgid "Set language" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_user.qc:74 +msgid "Disable gore effects and harsh language" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_user.qc:75 +msgid "" +"Replace blood and gibs with content that does not have any gore effects " +"(default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:10 +msgid "While connected language changes will be applied only to the menu," +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:12 +msgid "full language changes will take effect starting from the next game" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:16 +msgid "Disconnect now" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:17 +msgid "Switch language" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qh:6 +msgid "Warning" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:33 +msgid "Resolution:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:37 +msgid "Font/UI size:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:39 +msgid "SZ^Unreadable" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:40 +msgid "SZ^Tiny" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:41 +msgid "SZ^Little" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:42 +msgid "SZ^Small" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:43 +msgid "SZ^Medium" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:44 +msgid "SZ^Large" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:45 +msgid "SZ^Huge" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:46 +msgid "SZ^Gigantic" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:47 +msgid "SZ^Colossal" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:51 +msgid "Color depth:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:53 +msgid "How many bits per pixel (BPP) to render at, 32 is recommended" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:54 +msgid "16bit" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:55 +msgid "32bit" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:59 +msgid "Full screen" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:61 +msgid "Vertical Synchronization" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:62 +msgid "" +"Enable vertical synchronization to prevent tearing, will cap your fps to the " +"screen refresh rate (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:67 +msgid "Flip view horizontally" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:68 +msgid "Poor man's left handed mode (default: off)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:71 +msgid "Anisotropy:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:73 +msgid "Anisotropic filtering quality (default: 1x)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:74 +msgid "ANISO^Disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:75 +#: qcsrc/menu/xonotic/dialog_settings_video.qc:86 +msgid "2x" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:76 +#: qcsrc/menu/xonotic/dialog_settings_video.qc:87 +msgid "4x" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:77 +msgid "8x" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:78 +msgid "16x" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:81 +msgid "Antialiasing:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:84 +msgid "" +"Enable antialiasing, which smooths the edges of 3D geometry. Note that it " +"might decrease performance by quite a lot (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:85 +msgid "AA^Disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:92 +msgid "High-quality frame buffer" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:97 +msgid "Depth first:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:99 +msgid "" +"Eliminate overdraw by rendering a depth-only version of the scene before the " +"normal rendering starts (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:100 +msgid "DF^Disabled" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:101 +msgid "DF^World" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:102 +msgid "DF^All" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:105 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:108 +msgid "VBO^Off" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:109 +msgid "Vertices, some Tris (compatible)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:110 +#: qcsrc/menu/xonotic/dialog_settings_video.qc:114 +#: qcsrc/menu/xonotic/dialog_settings_video.qc:116 +msgid "" +"Make use of Vertex Buffer Objects to store static geometry in video memory " +"for faster rendering (default: Vertex and Triangles)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:113 +msgid "Vertices" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:115 +msgid "Vertices and Triangles" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:119 +msgid "Brightness:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:121 +msgid "Brightness of black (default: 0)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:123 +msgid "Contrast:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:125 +msgid "Brightness of white (default: 1)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:127 +msgid "Gamma:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:130 +msgid "" +"Inverse gamma correction value, a brightness effect that does not affect " +"white or black (default: 1.125)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:133 +msgid "Contrast boost:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:136 +msgid "By how much to multiply the contrast in dark areas (default: 1)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:139 +msgid "Saturation:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:142 +msgid "" +"Saturation adjustment (0 = grayscale, 1 = normal, 2 = oversaturated), " +"requires GLSL color control (default: 1)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:146 +msgid "LIT^Ambient:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:148 +msgid "" +"Ambient lighting, if set too high it tends to make light on maps look dull " +"and flat (default: 4)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:150 +msgid "Intensity:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:152 +msgid "Global rendering brightness (default: 1)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:155 +msgid "Wait for GPU to finish each frame" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:156 +msgid "" +"Make the CPU wait for the GPU to finish each frame, can help with some " +"strange input or video lag on some machines (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:158 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:162 +msgid "Use GLSL to handle color control" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:163 +msgid "" +"Enable use of GLSL to apply gamma correction, note that it might decrease " +"performance by a lot (default: disabled)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:168 +msgid "Psycho coloring (easter egg)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:171 +msgid "Trippy vertices (easter egg)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:110 +msgid "Instant action! (random map with bots)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:117 +msgid "???" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:130 +msgid "Campaign Difficulty:" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:131 +msgid "CSKL^Easy" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:132 +msgid "CSKL^Medium" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:133 +msgid "CSKL^Hard" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:135 +msgid "Start Singleplayer!" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qh:6 +msgid "Singleplayer" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qh:7 +msgid "Play the singleplayer campaign or instant action matches against bots" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.qh:7 +msgid "Winner" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:32 +msgid "join 'best' team (auto-select)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:33 +msgid "Autoselect team (recommended)" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:37 +msgid "red" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:38 +msgid "blue" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:39 +msgid "yellow" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:40 +msgid "pink" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:43 +msgid "spectate" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_teamselect.qh:7 +msgid "Team Selection" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_uid2name.qc:10 +msgid "Allow player statistics to use your nickname?" +msgstr "" + +#: qcsrc/menu/xonotic/dialog_uid2name.qc:12 +msgid "Answering \"No\" you will appear as \"Anonymous player\"" +msgstr "" + +#: qcsrc/menu/xonotic/gametypelist.qc:86 +msgid "teamplay" +msgstr "" + +#: qcsrc/menu/xonotic/gametypelist.qc:88 +msgid "free for all" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:29 +msgid "Moving" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:30 +msgid "forward" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:31 +msgid "backpedal" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:32 +msgid "strafe left" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:33 +msgid "strafe right" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:34 +msgid "jump / swim" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:35 +msgid "crouch / sink" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:36 +msgid "off-hand hook" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:37 +msgid "jet pack" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:39 +msgid "Attacking" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:44 +msgid "WEAPON^previous" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:45 +msgid "WEAPON^next" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:46 +msgid "WEAPON^previously used" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:47 +msgid "WEAPON^best" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:48 +msgid "reload" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:49 +msgid "drop weapon / throw nade" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:77 +msgid "hold zoom" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:78 +msgid "toggle zoom" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:79 +msgid "show scores" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:80 +msgid "screen shot" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:81 +msgid "maximize radar" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:82 +msgid "3rd person view" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:83 +msgid "enter spectator mode" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:85 +msgid "Communicate" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:86 +msgid "public chat" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:87 qcsrc/menu/xonotic/keybinder.qc:100 +msgid "team chat" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:88 +msgid "show chat history" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:89 +msgid "vote YES" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:90 +msgid "vote NO" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:93 +msgid "Client" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:95 +msgid "enter console" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:96 +msgid "disconnect" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:97 +msgid "quit" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:101 +msgid "auto-join team" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:103 +msgid "drop key / drop flag" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:106 +msgid "quick menu" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:107 +msgid "sandbox menu" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:108 +msgid "drag object" +msgstr "" + +#: qcsrc/menu/xonotic/keybinder.qc:110 +msgid "User defined" +msgstr "" + +#: qcsrc/menu/xonotic/mainwindow.qc:64 qcsrc/menu/xonotic/mainwindow.qc:67 +msgid "Do not press this button again!" +msgstr "" + +#: qcsrc/menu/xonotic/maplist.qc:291 +msgid "" +"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" +msgstr "" + +#: qcsrc/menu/xonotic/maplist.qc:299 +#, c-format +msgid "%s's Xonotic Server" +msgstr "" + +#: qcsrc/menu/xonotic/maplist.qc:304 +msgid "" +"Huh? Can't play this (invalid game type). Refiltering so this won't happen " +"again.\n" +msgstr "" + +#: qcsrc/menu/xonotic/playerlist.qc:100 qcsrc/menu/xonotic/playerlist.qc:110 +msgid "spectator" +msgstr "" + +#: qcsrc/menu/xonotic/playermodel.qc:170 +msgid "" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:273 +msgid "Favorite" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:274 +msgid "" +"Bookmark the currently highlighted server so that it's faster to find in the " +"future" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:763 +msgid "Ping" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:764 +msgid "Hostname" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:765 +msgid "Map" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:766 +msgid "Type" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:1060 +#, c-format +msgid "AES level %d" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:1060 +msgid "ENC^none" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:1060 +msgid "encryption:" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:1061 +#, c-format +msgid "mod: %s" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:1063 +#, c-format +msgid "modified settings" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:1063 +#, c-format +msgid "official settings" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:1065 +msgid "stats disabled" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qc:1065 +msgid "stats enabled" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qh:151 +msgid "SLCAT^Favorites" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qh:152 +msgid "SLCAT^Recommended" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qh:153 +msgid "SLCAT^Normal Servers" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qh:154 +msgid "SLCAT^Servers" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qh:155 +msgid "SLCAT^Competitive Mode" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qh:156 +msgid "SLCAT^Modified Servers" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qh:157 +msgid "SLCAT^Overkill" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qh:158 +msgid "SLCAT^InstaGib" +msgstr "" + +#: qcsrc/menu/xonotic/serverlist.qh:159 +msgid "SLCAT^Defrag Mode" +msgstr "" + +#: qcsrc/menu/xonotic/skinlist.qc:70 +msgid "" +msgstr "" + +#: qcsrc/menu/xonotic/skinlist.qc:71 +msgid "<AUTHOR>" +msgstr "" + +#: qcsrc/menu/xonotic/slider_decibels.qc:72 +msgid "VOL^MAX" +msgstr "" + +#: qcsrc/menu/xonotic/slider_decibels.qc:74 +msgid "VOL^OFF" +msgstr "" + +#: qcsrc/menu/xonotic/slider_decibels.qc:82 +#, c-format +msgid "%s dB" +msgstr "" + +#: qcsrc/menu/xonotic/slider_particles.qc:13 +msgid "" +"Multiplier for amount of particles. Less means less particles, which in turn " +"gives for better performance (default: 1)" +msgstr "" + +#: qcsrc/menu/xonotic/slider_particles.qc:14 +msgid "PART^OMG" +msgstr "" + +#: qcsrc/menu/xonotic/slider_particles.qc:15 +msgid "PART^Low" +msgstr "" + +#: qcsrc/menu/xonotic/slider_particles.qc:16 +msgid "PART^Medium" +msgstr "" + +#: qcsrc/menu/xonotic/slider_particles.qc:17 +#: qcsrc/menu/xonotic/slider_sbfadetime.qc:14 +msgid "PART^Normal" +msgstr "" + +#: qcsrc/menu/xonotic/slider_particles.qc:18 +msgid "PART^High" +msgstr "" + +#: qcsrc/menu/xonotic/slider_particles.qc:19 +msgid "PART^Ultra" +msgstr "" + +#: qcsrc/menu/xonotic/slider_particles.qc:20 +msgid "PART^Ultimate" +msgstr "" + +#: qcsrc/menu/xonotic/slider_picmip.qc:13 +msgid "" +"Change the sharpness of the textures. Lowering it will effectively reduce " +"texture memory usage, but make the textures appear very blurry. (default: " +"good)" +msgstr "" + +#: qcsrc/menu/xonotic/slider_resolution.qc:115 +msgid "Screen resolution" +msgstr "" + +#: qcsrc/menu/xonotic/slider_sbfadetime.qc:13 +msgid "PART^Slow" +msgstr "" + +#: qcsrc/menu/xonotic/slider_sbfadetime.qc:15 +msgid "PART^Fast" +msgstr "" + +#: qcsrc/menu/xonotic/slider_sbfadetime.qc:16 +msgid "PART^Instant" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:29 +msgid "January" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:30 +msgid "February" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:31 +msgid "March" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:32 +msgid "April" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:33 +msgid "May" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:34 +msgid "June" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:35 +msgid "July" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:36 +msgid "August" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:37 +msgid "September" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:38 +msgid "October" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:39 +msgid "November" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:40 +msgid "December" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:96 +msgid "Joined:" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:103 +msgid "Last_Seen:" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:110 +msgid "Time_Played:" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:117 +msgid "Favorite_Map:" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:201 qcsrc/menu/xonotic/statslist.qc:245 +#, c-format +msgid "%s_Matches:" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:208 +#, c-format +msgid "%s_ELO:" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:215 +#, c-format +msgid "%s_Rank:" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:222 +#, c-format +msgid "%s_Percentile:" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:231 +#, c-format +msgid "%s_Favorite_Map:" +msgstr "" + +#: qcsrc/menu/xonotic/statslist.qc:246 +#, c-format +msgid "%d (unranked)" +msgstr "" + +#: qcsrc/menu/xonotic/util.qc:417 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" + +#: qcsrc/menu/xonotic/util.qc:528 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "" + +#: qcsrc/menu/xonotic/util.qc:557 +#, c-format +msgid "^1%s TEST BUILD" +msgstr "" + +#: qcsrc/menu/xonotic/util.qc:577 +#, c-format +msgid "Update to %s now!" +msgstr "" + +#: qcsrc/menu/xonotic/util.qc:662 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" + +#: qcsrc/menu/xonotic/util.qc:780 +msgid "Use default" +msgstr "" + +#: qcsrc/menu/xonotic/util.qc:800 +msgid "Team Color:" +msgstr "" + +#: qcsrc/menu/xonotic/util.qh:44 +msgid "Enable panel" +msgstr "" + +#~ msgid "QMCMD^Chat" +#~ msgstr "QMCMD^Sembang" diff --git a/common.pl.po b/common.pl.po index f8c5ab3bb4..0b40453da5 100644 --- a/common.pl.po +++ b/common.pl.po @@ -13,15 +13,15 @@ # Kriss Chr <kriss7475@gmail.com>, 2017 # Piotr Kozica <koza91@gmail.com>, 2016 # Rafał Szymański <okavasly@gmail.com>, 2017 -# Robert Wolniak <robert.wolniak@gmail.com>, 2015 +# Robert Wolniak <robert.wolniak@gmail.com>, 2015,2018 # Sertomas, 2014 msgid "" msgstr "" "Project-Id-Version: Xonotic\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-07-09 00:35+0200\n" -"PO-Revision-Date: 2017-09-20 00:10+0000\n" -"Last-Translator: Rafał Szymański <okavasly@gmail.com>\n" +"PO-Revision-Date: 2018-04-19 09:01+0000\n" +"Last-Translator: Robert Wolniak <robert.wolniak@gmail.com>\n" "Language-Team: Polish (http://www.transifex.com/team-xonotic/xonotic/" "language/pl/)\n" "Language: pl\n" @@ -1158,7 +1158,7 @@ msgstr "" #: qcsrc/common/gamemodes/gamemode/nexball/weapon.qh:7 msgid "Ball Stealer" -msgstr "" +msgstr "Złodziej Kuli" #: qcsrc/common/items/item/armor.qh:111 msgid "Big armor" @@ -1310,6 +1310,8 @@ msgid "" "Kill enemies to freeze them, stand next to frozen teammates to revive them; " "freeze all enemies to win" msgstr "" +"Zabijaj przeciwników by ich zamrozić i stój obok członków swojej drużyny by " +"ich wskrzesić; aby wygrać, zamroź wszystkich wrogów" #: qcsrc/common/mapinfo.qh:446 msgid "Hold the ball to get points for kills" @@ -1468,6 +1470,8 @@ msgid "" "You lost the game!\n" "Select \"^1Next Match^7\" on the menu for a rematch!" msgstr "" +"Przegrana meczu!\n" +"Wybierz w menu opcję \"^1Następny Mecz^7\" po rewanż!" #: qcsrc/common/minigames/minigame/pp.qc:444 #: qcsrc/common/minigames/minigame/ttt.qc:325 @@ -1475,16 +1479,18 @@ msgid "" "You win!\n" "Select \"^1Next Match^7\" on the menu to start a new match!" msgstr "" +"Wygrana!\n" +"Wybierz w menu opcję \"^1Następny Mecz^7\" by rozpocząć nową grę!" #: qcsrc/common/minigames/minigame/pp.qc:450 #: qcsrc/common/minigames/minigame/ttt.qc:331 msgid "Select \"^1Next Match^7\" on the menu to start a new match!" -msgstr "" +msgstr "Wybierz w menu opcję \"^1Następny Mecz^7\" by rozpocząć nową grę!" #: qcsrc/common/minigames/minigame/pp.qc:451 #: qcsrc/common/minigames/minigame/ttt.qc:332 msgid "Wait for your opponent to confirm the rematch" -msgstr "" +msgstr "Poczekaj aż twój przeciwnik potwierdzi rewanż." #: qcsrc/common/minigames/minigame/pp.qc:582 #: qcsrc/common/minigames/minigame/ttt.qc:665 diff --git a/common.pt.po b/common.pt.po index ec526d5e35..b2b27a40dd 100644 --- a/common.pt.po +++ b/common.pt.po @@ -4,17 +4,18 @@ # # Translators: # Ivan Paulos Tomé <greylica@gmail.com>, 2016 -# Jean Trindade Pereira <jean_trindade2@hotmail.com>, 2015-2017 +# Jean Trindade Pereira <jean_trindade2@hotmail.com>, 2015-2018 # Mirio <opivy@hotmail.de>, 2017 # NotThatPrivate Yes <henriqueferreira2009@gmail.com>, 2015 # Ricardo Manuel da Cruz Coelho da Silva <ricardo.mccs@gmail.com>, 2015 +# Rui <xymarior@yandex.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Xonotic\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-07-09 00:35+0200\n" -"PO-Revision-Date: 2017-12-21 15:23+0000\n" -"Last-Translator: Jean Trindade Pereira <jean_trindade2@hotmail.com>\n" +"PO-Revision-Date: 2018-05-02 10:54+0000\n" +"Last-Translator: Rui <xymarior@yandex.com>\n" "Language-Team: Portuguese (http://www.transifex.com/team-xonotic/xonotic/" "language/pt/)\n" "Language: pt\n" @@ -26,16 +27,16 @@ msgstr "" #: qcsrc/client/hud/hud_config.qc:239 #, c-format msgid "^2Successfully exported to %s! (Note: It's saved in data/data/)\n" -msgstr "^2Exportado com sucesso para %s! (Nota: Foi salvo em data/data/)\n" +msgstr "^2Exportado com sucesso para %s! (Nota: foi gravado em data/data/)\n" #: qcsrc/client/hud/hud_config.qc:243 #, c-format msgid "^1Couldn't write to %s\n" -msgstr "^1Não foi possível escrever para %s\n" +msgstr "^1Não foi possível gravar para %s\n" #: qcsrc/client/hud/panel/chat.qc:82 msgid "^3Player^7: This is the chat area." -msgstr "^3Jogador^7: Isto é a área do bate-papo." +msgstr "^3Jogador^7: isto é a área doe conversação." #: qcsrc/client/hud/panel/engineinfo.qc:69 #, c-format @@ -54,7 +55,7 @@ msgstr "^1Assistindo: ^7%s" #: qcsrc/client/hud/panel/infomessages.qc:100 #, c-format msgid "^1Press ^3%s^1 to spectate" -msgstr "^1Aperte ^3%s^1 para assistir" +msgstr "^1Pressionar ^3%s^1 para assistir" #: qcsrc/client/hud/panel/infomessages.qc:100 #: qcsrc/menu/xonotic/keybinder.qc:40 @@ -64,7 +65,7 @@ msgstr "disparo primário" #: qcsrc/client/hud/panel/infomessages.qc:102 #, c-format msgid "^1Press ^3%s^1 or ^3%s^1 for next or previous player" -msgstr "^1Aperte ^3%s^1 ou ^3%s^1 para o jogador seguinte ou anterior" +msgstr "^1Pressionar ^3%s^1 ou ^3%s^1 para o jogador seguinte ou anterior" #: qcsrc/client/hud/panel/infomessages.qc:102 #: qcsrc/client/hud/panel/infomessages.qc:106 @@ -79,12 +80,13 @@ msgstr "arma anterior" #: qcsrc/client/hud/panel/infomessages.qc:106 #, c-format msgid "^1Use ^3%s^1 or ^3%s^1 to change the speed" -msgstr "^1Use ^3%s^1 ou ^3%s^1 para alterar a velocidade" +msgstr "^1Usar ^3%s^1 ou ^3%s^1 para alterar a velocidade" #: qcsrc/client/hud/panel/infomessages.qc:108 #, c-format msgid "^1Press ^3%s^1 to observe, ^3%s^1 to change camera mode" -msgstr "^1Aperte ^3%s^1 para observar e ^3%s^1 para alterar o modo da câmera" +msgstr "" +"^1Pressionar ^3%s^1 para observar e ^3%s^1 para alterar o modo da câmara" #: qcsrc/client/hud/panel/infomessages.qc:108 #: qcsrc/common/vehicles/cl_vehicles.qc:192 @@ -99,7 +101,7 @@ msgstr "disparo secundário" #: qcsrc/client/hud/panel/infomessages.qc:111 #, c-format msgid "^1Press ^3%s^1 for gamemode info" -msgstr "^1Aperte ^3%s^1 para ver as informações do modo de jogo" +msgstr "^1Pressionar ^3%s^1 para ver as informações do modo de jogo" #: qcsrc/client/hud/panel/infomessages.qc:111 #: qcsrc/menu/xonotic/keybinder.qc:94 @@ -112,13 +114,13 @@ msgstr "^1A partida já começou" #: qcsrc/client/hud/panel/infomessages.qc:126 msgid "^1You have no more lives left" -msgstr "^1Você não tem mais vidas sobrando" +msgstr "^1Não tens mais vidas" #: qcsrc/client/hud/panel/infomessages.qc:128 #: qcsrc/client/hud/panel/infomessages.qc:131 #, c-format msgid "^1Press ^3%s^1 to join" -msgstr "^1Aperte ^3%s^1 para entrar no jogo" +msgstr "^1Pressionar ^3%s^1 para entrar no jogo" #: qcsrc/client/hud/panel/infomessages.qc:128 #: qcsrc/client/hud/panel/infomessages.qc:131 @@ -128,16 +130,16 @@ msgstr "saltar" #: qcsrc/client/hud/panel/infomessages.qc:139 #, c-format msgid "^1Game starts in ^3%d^1 seconds" -msgstr "^1A partida iniciará em ^3%d^1 segundo(s)" +msgstr "^1O jogo vai começar em ^3%d^1 segundo(s)" #: qcsrc/client/hud/panel/infomessages.qc:145 msgid "^2Currently in ^1warmup^2 stage!" -msgstr "^2Atualmente em fase de ^1aquecimento^2!" +msgstr "^2Neste momento em fase de ^1aquecimento^2!" #: qcsrc/client/hud/panel/infomessages.qc:160 #, c-format msgid "%sPress ^3%s%s to end warmup" -msgstr "%sAperte ^3%s%s para terminar o aquecimento" +msgstr "%sPressionar ^3%s%s para terminar o aquecimento" #: qcsrc/client/hud/panel/infomessages.qc:160 #: qcsrc/client/hud/panel/infomessages.qc:162 @@ -149,58 +151,57 @@ msgstr "pronto" #: qcsrc/client/hud/panel/infomessages.qc:162 #, c-format msgid "%sPress ^3%s%s once you are ready" -msgstr "%sAperte ^3%s%s assim que estiver pronto" +msgstr "%sPressionar ^3%s%s assim que estiveres pronto" #: qcsrc/client/hud/panel/infomessages.qc:167 msgid "^2Waiting for others to ready up to end warmup..." msgstr "" -"^2Esperando que os outros jogadores estejam prontos para acabar o " +"^2Á espera que os outros jogadores estejam prontos para acabar o " "aquecimento..." #: qcsrc/client/hud/panel/infomessages.qc:169 msgid "^2Waiting for others to ready up..." -msgstr "^2Esperando que os outros jogadores estejam prontos..." +msgstr "^2À espera que os outros jogadores estejam prontos..." #: qcsrc/client/hud/panel/infomessages.qc:175 #, c-format msgid "^2Press ^3%s^2 to end warmup" -msgstr "^2Aperte ^3%s^2 para terminar o aquecimento" +msgstr "^2Pressionar ^3%s^2 para terminar o aquecimento" #: qcsrc/client/hud/panel/infomessages.qc:196 msgid "Teamnumbers are unbalanced!" -msgstr "As equipes estão desequilibradas!" +msgstr "As equipas estão desequilibradas!" #: qcsrc/client/hud/panel/infomessages.qc:199 #, c-format msgid " Press ^3%s%s to adjust" -msgstr " Aperte ^3%s%s para ajustar" +msgstr " Pressiona ^3%s%s para ajustar" #: qcsrc/client/hud/panel/infomessages.qc:199 #: qcsrc/menu/xonotic/keybinder.qc:102 msgid "team menu" -msgstr "menu de equipe" +msgstr "menu de equipa" #: qcsrc/client/hud/panel/infomessages.qc:209 msgid "^1Spectating this player:" -msgstr "^1Também estão assistindo a este jogador:" +msgstr "^1A assistir este jogador:" #: qcsrc/client/hud/panel/infomessages.qc:209 msgid "^1Spectating you:" -msgstr "^1Assistindo você:" +msgstr "^1A assistir a ti:" #: qcsrc/client/hud/panel/infomessages.qc:225 msgid "^7Press ^3ESC ^7to show HUD options." -msgstr "^7Aperte ^3ESC ^7para exibir as opções de HUD." +msgstr "^7Pressionar ^3ESC ^7para mostrar as opções de interface." #: qcsrc/client/hud/panel/infomessages.qc:226 msgid "^3Doubleclick ^7a panel for panel-specific options." msgstr "" -"^3Clique duas vezes ^7em um painel para abrir sua janela de opções " -"específicas." +"^3Clica duas vezes ^7num painel para abrir a janela de opções específicas." #: qcsrc/client/hud/panel/infomessages.qc:227 msgid "^3CTRL ^7to disable collision testing, ^3SHIFT ^7and" -msgstr "^3CTRL ^7para desligar teste de colisão, ^3SHIFT ^7e" +msgstr "^3CTRL ^7para desativar o teste de colisão, ^3SHIFT ^7e" #: qcsrc/client/hud/panel/infomessages.qc:228 msgid "^3ALT ^7+ ^3ARROW KEYS ^7for fine adjustments." @@ -224,7 +225,7 @@ msgstr "Jogador %d" #: qcsrc/client/hud/panel/quickmenu.qc:605 #, c-format msgid "Submenu%d" -msgstr "Submenu%d" +msgstr "Sub-menu%d" #: qcsrc/client/hud/panel/quickmenu.qc:610 #, c-format @@ -258,12 +259,12 @@ msgstr "Olá / Boa sorte" #: qcsrc/client/hud/panel/quickmenu.qc:797 msgid "QMCMD^hi / good luck and have fun" -msgstr "Olá / Boa sorte e divirta-se" +msgstr "Olá / Boa sorte e diverte-te" #: qcsrc/client/hud/panel/quickmenu.qc:802 #: qcsrc/client/hud/panel/quickmenu.qc:818 msgid "QMCMD^Team chat" -msgstr "Bate-papo de equipe" +msgstr "Conversação da equipa" #: qcsrc/client/hud/panel/quickmenu.qc:803 msgid "QMCMD^quad soon" @@ -271,19 +272,19 @@ msgstr "Quad em breve" #: qcsrc/client/hud/panel/quickmenu.qc:804 msgid "QMCMD^free item %x^7 (l:%y^7)" -msgstr "Item livre %x^7 (l:%y^7)" +msgstr "Item grátis %x^7 (l:%y^7)" #: qcsrc/client/hud/panel/quickmenu.qc:804 msgid "QMCMD^free item, icon" -msgstr "Item livre, ícone" +msgstr "Item grátis, ícone" #: qcsrc/client/hud/panel/quickmenu.qc:805 msgid "QMCMD^took item (l:%l^7)" -msgstr "Item pego (l:%l^7)" +msgstr "Pegou no item (l:%l^7)" #: qcsrc/client/hud/panel/quickmenu.qc:805 msgid "QMCMD^took item, icon" -msgstr "Item pego, ícone" +msgstr "Pegou no item, ícone" #: qcsrc/client/hud/panel/quickmenu.qc:806 msgid "QMCMD^negative" @@ -319,27 +320,27 @@ msgstr "Bandeira avistada, ícone" #: qcsrc/client/hud/panel/quickmenu.qc:811 msgid "QMCMD^defending (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" -msgstr "Defendendo (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" +msgstr "A defender (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" #: qcsrc/client/hud/panel/quickmenu.qc:811 msgid "QMCMD^defending, icon" -msgstr "Defendendo, ícone" +msgstr "A defender, ícone" #: qcsrc/client/hud/panel/quickmenu.qc:812 msgid "QMCMD^roaming (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" -msgstr "Patrulhando (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" +msgstr "A patrulhar (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" #: qcsrc/client/hud/panel/quickmenu.qc:812 msgid "QMCMD^roaming, icon" -msgstr "Patrulhando, ícone" +msgstr "A patrulhar, ícone" #: qcsrc/client/hud/panel/quickmenu.qc:813 msgid "QMCMD^attacking (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" -msgstr "Atacando (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" +msgstr "A atacar (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" #: qcsrc/client/hud/panel/quickmenu.qc:813 msgid "QMCMD^attacking, icon" -msgstr "Atacando, ícone" +msgstr "A atacar, ícone" #: qcsrc/client/hud/panel/quickmenu.qc:814 msgid "QMCMD^killed flagcarrier (l:%y^7)" @@ -364,7 +365,7 @@ msgstr "Largar arma, ícone" #: qcsrc/client/hud/panel/quickmenu.qc:816 msgid "QMCMD^dropped weapon %w^7 (l:%l^7)" -msgstr "Arma solta %w^7 (l:%l^7)" +msgstr "Arma largada %w^7 (l:%l^7)" #: qcsrc/client/hud/panel/quickmenu.qc:817 msgid "QMCMD^drop flag/key, icon" @@ -386,11 +387,11 @@ msgstr "Configurações" #: qcsrc/client/hud/panel/quickmenu.qc:824 #: qcsrc/client/hud/panel/quickmenu.qc:831 msgid "QMCMD^View/HUD settings" -msgstr "Configurações de Exibição/HUD" +msgstr "Configurações de Visualização/Interface" #: qcsrc/client/hud/panel/quickmenu.qc:825 msgid "QMCMD^3rd person view" -msgstr "Visão em 3ª pessoa" +msgstr "Visão na 3ª pessoa" #: qcsrc/client/hud/panel/quickmenu.qc:826 msgid "QMCMD^Player models like mine" @@ -398,7 +399,7 @@ msgstr "Modelos de jogadores como o meu" #: qcsrc/client/hud/panel/quickmenu.qc:827 msgid "QMCMD^Names above players" -msgstr "Nomes sobre jogadores" +msgstr "Nomes por cima dos jogadores" #: qcsrc/client/hud/panel/quickmenu.qc:828 msgid "QMCMD^Crosshair per weapon" @@ -419,16 +420,16 @@ msgstr "Configurações de som" #: qcsrc/client/hud/panel/quickmenu.qc:834 msgid "QMCMD^Hit sound" -msgstr "Som de acerto" +msgstr "Som de acertar" #: qcsrc/client/hud/panel/quickmenu.qc:835 msgid "QMCMD^Chat sound" -msgstr "Som do bate-papo" +msgstr "Som da conversação" #: qcsrc/client/hud/panel/quickmenu.qc:840 #: qcsrc/client/hud/panel/quickmenu.qc:844 msgid "QMCMD^Spectator camera" -msgstr "Câmera de espectador" +msgstr "Câmara de espetador" #: qcsrc/client/hud/panel/quickmenu.qc:841 msgid "QMCMD^1st person" @@ -436,16 +437,16 @@ msgstr "1ª pessoa" #: qcsrc/client/hud/panel/quickmenu.qc:842 msgid "QMCMD^3rd person around player" -msgstr "3ª pessoa em volta do jogador" +msgstr "3ª pessoa à volta do jogador" #: qcsrc/client/hud/panel/quickmenu.qc:843 msgid "QMCMD^3rd person behind" -msgstr "3ª pessoa traseira" +msgstr "3ª pessoa por trás" #: qcsrc/client/hud/panel/quickmenu.qc:849 #: qcsrc/client/hud/panel/quickmenu.qc:854 msgid "QMCMD^Observer camera" -msgstr "Câmera de observador" +msgstr "Câmara de observador" #: qcsrc/client/hud/panel/quickmenu.qc:850 msgid "QMCMD^Increase speed" @@ -465,11 +466,11 @@ msgstr "Colisão com paredes ligada" #: qcsrc/client/hud/panel/quickmenu.qc:857 msgid "QMCMD^Fullscreen" -msgstr "Tela cheia" +msgstr "Ecrã inteiro" #: qcsrc/client/hud/panel/quickmenu.qc:859 msgid "QMCMD^Translate chat messages" -msgstr "Traduzir mensagens do bate-papo" +msgstr "Traduzir mensagens da conversação" #: qcsrc/client/hud/panel/quickmenu.qc:862 #: qcsrc/client/hud/panel/quickmenu.qc:872 @@ -490,11 +491,11 @@ msgstr "Reduzir tempo de partida" #: qcsrc/client/hud/panel/quickmenu.qc:868 msgid "QMCMD^Extend match time" -msgstr "Estender tempo de partida" +msgstr "Aumentar tempo de partida" #: qcsrc/client/hud/panel/quickmenu.qc:871 msgid "QMCMD^Shuffle teams" -msgstr "Misturar as equipes" +msgstr "Misturar as equipas" #: qcsrc/client/hud/panel/racetimer.qc:37 #, c-format @@ -582,7 +583,7 @@ msgstr "pbndvítimas" #: qcsrc/client/hud/panel/scoreboard.qc:89 msgid "SCO^goals" -msgstr "gols" +msgstr "golos" #: qcsrc/client/hud/panel/scoreboard.qc:90 msgid "SCO^kckills" @@ -684,7 +685,8 @@ msgstr "ticks" msgid "" "You can modify the scoreboard using the ^2scoreboard_columns_set command.\n" msgstr "" -"Você pode modificar o placar usando o comando ^2scoreboard_columns_set.\n" +"Podes alterar o placar de pontuações utilizando o comando " +"^2scoreboard_columns_set.\n" #: qcsrc/client/hud/panel/scoreboard.qc:296 msgid "^3|---------------------------------------------------------------|\n" @@ -692,7 +694,7 @@ msgstr "^3|---------------------------------------------------------------|\n" #: qcsrc/client/hud/panel/scoreboard.qc:297 msgid "Usage:\n" -msgstr "Uso:\n" +msgstr "Utilização:\n" #: qcsrc/client/hud/panel/scoreboard.qc:298 msgid "^2scoreboard_columns_set default\n" @@ -705,12 +707,12 @@ msgstr "^2scoreboard_columns_set ^7campo1 campo2...\n" #: qcsrc/client/hud/panel/scoreboard.qc:300 msgid "The following field names are recognized (case insensitive):\n" msgstr "" -"Os seguintes nomes de campos são reconhecidos (maiúsculas/minúsculas não são " -"distintas):\n" +"Os seguintes nomes de campos são reconhecidos (insensível a maiúsculas e " +"minúsculas):\n" #: qcsrc/client/hud/panel/scoreboard.qc:301 msgid "You can use a ^3|^7 to start the right-aligned fields.\n" -msgstr "Você pode usar um ^3|^7 para iniciar os campos alinhados à direita.\n" +msgstr "Podes usar um ^3|^7 para iniciar os campos alinhados à direita.\n" #: qcsrc/client/hud/panel/scoreboard.qc:304 msgid "^3name^7 or ^3nick^7 Name of a player\n" @@ -765,16 +767,16 @@ msgid "" "^3caps^7 How often a flag (CTF) or a key (KeyHunt) was " "captured\n" msgstr "" -"^3capturas^7 Quão frequente uma bandeira (CTF) ou uma chave (KeyHunt) foi " -"capturada\n" +"^3capturas^7 Quão frequente uma bandeira (CTF) ou uma chave (Caça a Chaves) " +"foi capturada\n" #: qcsrc/client/hud/panel/scoreboard.qc:317 msgid "" "^3pickups^7 How often a flag (CTF) or a key (KeyHunt) or a " "ball (Keepaway) was picked up\n" msgstr "" -"^3coletas^7. Quão frequente uma bandeira (CTF), uma chave (KeyHunt) ou uma " -"bola (Keepaway) foi coletada\n" +"^3coletas^7. Quão frequente uma bandeira (CTF), uma chave (Caça a Chaves) ou " +"uma bola (Keepaway) foi recolhida\n" #: qcsrc/client/hud/panel/scoreboard.qc:318 msgid "^3captime^7 Time of fastest cap (CTF)\n" @@ -787,11 +789,11 @@ msgstr "" #: qcsrc/client/hud/panel/scoreboard.qc:320 msgid "^3returns^7 Number of flag returns\n" -msgstr "^3retornos^7 Número de bandeiras retomadas\n" +msgstr "^3retornos^7 Número de bandeiras retornadas\n" #: qcsrc/client/hud/panel/scoreboard.qc:321 msgid "^3drops^7 Number of flag drops\n" -msgstr "^3quedas^7 Número de bandeiras que foram soltas\n" +msgstr "^3quedas^7 Número de bandeiras que foram largadas\n" #: qcsrc/client/hud/panel/scoreboard.qc:322 msgid "^3lives^7 Number of lives (LMS)\n" @@ -862,12 +864,12 @@ msgid "" "field to show all fields available for the current game mode.\n" "\n" msgstr "" -"Antes dos campos de digitação, você pode inserir um sinal de + ou -, e usar " -"uma lista de modos de jogo separada por vírgulas.\n" -"Insira barras para fazer com que os campos sejam mostrados somente nesses " +"Antes dos campos de digitação, podes inserir um sinal de + ou -, e usar uma " +"lista de modos de jogo separada por vírgulas.\n" +"Insere barras para fazer com que os campos sejam mostrados apenas nesses " "modos de jogo ou em todos os modos exceto os especificados.\n" -"Você também pode especificar a palavra 'all' como um campo para mostrar " -"todos os campos disponíveis para o modo de jogo atual.\n" +"Também podes especificar a palavra 'all' como um campo para mostrar todos os " +"campos disponíveis para o modo de jogo atual.\n" "\n" #: qcsrc/client/hud/panel/scoreboard.qc:343 @@ -876,8 +878,8 @@ msgid "" "include/exclude ALL teams/noteams game modes.\n" "\n" msgstr "" -"Os nomes especiais de modos de jogo 'teams' e 'noteams' podem ser usados\n" -"para incluir/excluir TODOS os modos de jogo de equipe/sem equipe\n" +"Podem ser usados os nomes especiais de modos de jogo 'teams' e 'noteams'\n" +"para incluir/excluir TODOS os modos de jogo de equipa/sem equipa\n" #: qcsrc/client/hud/panel/scoreboard.qc:346 msgid "Example: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4\n" @@ -889,7 +891,7 @@ msgid "" "will display name, ping and pl aligned to the left, and the fields\n" "right of the vertical bar aligned to the right.\n" msgstr "" -"irá exibir nome, ping e pp alinhados à esquerda e os campos\n" +"irá mostrar o nome, ping e pp alinhados à esquerda e os campos\n" "à direita da barra vertical alinhados à direita.\n" #: qcsrc/client/hud/panel/scoreboard.qc:349 @@ -897,7 +899,7 @@ msgid "" "'field3' will only be shown in CTF, and 'field4' will be shown in all\n" "other gamemodes except DM.\n" msgstr "" -"'field3' só será exibido em CTF e 'field4' será exibido em todos\n" +"'field3' só será mostrado em CTF e 'field4' será mostrado em todos\n" "os outros modos de jogo, exceto DM.\n" #: qcsrc/client/hud/panel/scoreboard.qc:611 @@ -914,7 +916,7 @@ msgstr "N/A" #: qcsrc/client/hud/panel/scoreboard.qc:1156 #, c-format msgid "Accuracy stats (average %d%%)" -msgstr "Estatísticas de precisão (média %d%%)" +msgstr "Estatísticas de pontaria (média %d%%)" #: qcsrc/client/hud/panel/scoreboard.qc:1295 msgid "Map stats:" @@ -930,7 +932,7 @@ msgstr "Segredos encontrados:" #: qcsrc/client/hud/panel/scoreboard.qc:1354 msgid "Capture time rankings" -msgstr "Classificações de tempo de capturas" +msgstr "Classificações de tempo de captura" #: qcsrc/client/hud/panel/scoreboard.qc:1354 msgid "Rankings" @@ -939,12 +941,12 @@ msgstr "Classificações" #: qcsrc/client/hud/panel/scoreboard.qc:1519 #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:43 msgid "Scoreboard" -msgstr "Placar" +msgstr "Placar de pontuações" #: qcsrc/client/hud/panel/scoreboard.qc:1584 #, c-format msgid "Speed award: %d%s ^7(%s^7)" -msgstr "Prêmio de velocidade: %d%s ^7(%s^7)" +msgstr "Prémio de velocidade: %d%s ^7(%s^7)" #: qcsrc/client/hud/panel/scoreboard.qc:1588 #, c-format @@ -954,18 +956,18 @@ msgstr "O mais rápido de todos: %d%s ^7(%s^7)" #: qcsrc/client/hud/panel/scoreboard.qc:1604 #, c-format msgid "Spectators" -msgstr "Espectadores" +msgstr "Espetadores" #: qcsrc/client/hud/panel/scoreboard.qc:1619 #, c-format msgid "playing ^3%s^7 on ^2%s^7" -msgstr "jogando ^3%s^7 em ^2%s^7" +msgstr "a jogar ^3%s^7 em ^2%s^7" #: qcsrc/client/hud/panel/scoreboard.qc:1626 #: qcsrc/client/hud/panel/scoreboard.qc:1631 #, c-format msgid " for up to ^1%1.0f minutes^7" -msgstr " por até ^1%1.0f minutos^7" +msgstr " até ^1%1.0f minutos^7" #: qcsrc/client/hud/panel/scoreboard.qc:1635 #: qcsrc/client/hud/panel/scoreboard.qc:1654 @@ -1006,33 +1008,33 @@ msgstr "^1Ressurgindo em ^3%s^1..." #: qcsrc/client/hud/panel/scoreboard.qc:1698 #, c-format msgid "You are dead, wait ^3%s^7 before respawning" -msgstr "Você morreu. Espere ^3%s^7 antes de ressurgir" +msgstr "Morreste. Espera ^3%s^7 antes de ressurgir" #: qcsrc/client/hud/panel/scoreboard.qc:1707 #, c-format msgid "You are dead, press ^2%s^7 to respawn" -msgstr "Você morreu. Aperte ^2%s^7 para ressurgir" +msgstr "Morreste. Pressiona ^2%s^7 para ressurgir" #: qcsrc/client/hud/panel/vote.qc:24 msgid "^1You must answer before entering hud configure mode\n" msgstr "" -"^1Você tem que responder antes de entrar no modo de configuração do HUD\n" +"^1Tens que responder antes de entrar no modo de configuração da interface\n" #: qcsrc/client/hud/panel/vote.qc:29 msgid "^2Name ^7instead of \"^1Anonymous player^7\" in stats" -msgstr "^2Nome ^7em vez de \"^1Jogador anônimo^7\" nas estatísticas" +msgstr "^2Nome ^7em vez de \"^1Jogador anónimo^7\" nas estatísticas" #: qcsrc/client/hud/panel/vote.qc:115 msgid "A vote has been called for:" -msgstr "Uma votação foi iniciada para:" +msgstr "Foi iniciada uma votação para:" #: qcsrc/client/hud/panel/vote.qc:117 msgid "Allow servers to store and display your name?" -msgstr "Permitir que servidores armazenem e mostrem o seu nome?" +msgstr "Permitir que os servidores armazenem e mostrem o teu nome?" #: qcsrc/client/hud/panel/vote.qc:121 msgid "^1Configure the HUD" -msgstr "^1Configurar o HUD" +msgstr "^1Configurar a Interface" #: qcsrc/client/hud/panel/vote.qc:125 qcsrc/menu/xonotic/dialog_firstrun.qc:82 #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:18 @@ -1056,7 +1058,7 @@ msgstr "Não" #: qcsrc/client/hud/panel/weapons.qc:530 msgid "Out of ammo" -msgstr "Sem munição" +msgstr "Sem munições" #: qcsrc/client/hud/panel/weapons.qc:534 msgid "Don't have" @@ -1110,7 +1112,7 @@ msgstr "Decidir o modo de jogo" #: qcsrc/client/mapvoting.qc:365 msgid "Vote for a map" -msgstr "Vote em um mapa" +msgstr "Vota num mapa" #: qcsrc/client/mapvoting.qc:382 #, c-format @@ -1120,20 +1122,19 @@ msgstr "Faltam %d segundos" #: qcsrc/client/mapvoting.qc:497 msgid "" "mv_mapdownload: ^3You're not supposed to use this command on your own!\n" -msgstr "mv_mapdownload: ^3Você não pode usar esse comando para si próprio!\n" +msgstr "mv_mapdownload: ^3Não podes usar esse comando para ti próprio!\n" #: qcsrc/client/mapvoting.qc:507 msgid "^1Error:^7 Couldn't find pak index.\n" -msgstr "^1Erro:^7 Não foi possível encontrar o índice do pak.\n" +msgstr "^1Erro:^7 não foi possível encontrar o índice do pak.\n" #: qcsrc/client/mapvoting.qc:516 msgid "Requesting preview...\n" -msgstr "Solicitando previsão...\n" +msgstr "A pedir a pré-visualização...\n" #: qcsrc/client/miscfunctions.qc:109 msgid "Trying to remove a team which is not in the teamlist!" -msgstr "" -"Você está tentando remover uma equipe que não está na lista de equipes!" +msgstr "Estás a tentar remover uma equipa que não está na lista de equipas!" #: qcsrc/client/view.qc:1380 msgid "Nade timer" @@ -1154,7 +1155,7 @@ msgstr "erro ao criar curl handle\n" #: qcsrc/common/command/generic.qc:403 msgid "Notification restart command only works with cl_cmd and sv_cmd.\n" msgstr "" -"Comando de reinício de notificação funciona apenas com cl_cmd e sv_cmd.\n" +"O comando de reinício de notificação funciona apenas com cl_cmd e sv_cmd.\n" #: qcsrc/common/gamemodes/gamemode/nexball/weapon.qh:7 msgid "Ball Stealer" @@ -1195,7 +1196,7 @@ msgstr "Escudo" #: qcsrc/common/mapinfo.qc:639 #, no-c-format msgid "@!#%'n Tuba Throwing" -msgstr "@!#%'n Tuba Throwing" +msgstr "@!#%'n Atirar da Tuba" #: qcsrc/common/mapinfo.qh:99 msgid "Deathmatch" @@ -1203,15 +1204,15 @@ msgstr "Mata-mata" #: qcsrc/common/mapinfo.qh:99 msgid "Score as many frags as you can" -msgstr "Consiga o máximo de execuções que puder" +msgstr "Consegue o máximo de execuções que puderes" #: qcsrc/common/mapinfo.qh:111 msgid "Last Man Standing" -msgstr "Last Man Standing" +msgstr "Último Homem de Pé" #: qcsrc/common/mapinfo.qh:111 msgid "Survive and kill until the enemies have no lives left" -msgstr "Sobreviva e mate até que os inimigos não tenham vidas sobrando" +msgstr "Sobrevive e mata até que os inimigos não tenham mais vidas" #: qcsrc/common/mapinfo.qh:126 msgid "Race" @@ -1219,7 +1220,7 @@ msgstr "Corrida" #: qcsrc/common/mapinfo.qh:126 msgid "Race against other players to the finish line" -msgstr "Corra contra outros jogadores até a linha de chegada" +msgstr "Corra contra os outros jogadores até à linha de chegada" #: qcsrc/common/mapinfo.qh:160 msgid "Race CTS" @@ -1227,111 +1228,113 @@ msgstr "Corrida CTS" #: qcsrc/common/mapinfo.qh:160 msgid "Race for fastest time." -msgstr "Corra pelo melhor tempo." +msgstr "Corre pelo melhor tempo." #: qcsrc/common/mapinfo.qh:184 msgid "Help your team score the most frags against the enemy team" -msgstr "Ajude sua equipe a conseguir mais execuções do que a equipe inimiga" +msgstr "" +"Ajuda a tua equipa a conseguir mais execuções do que a equipa do inimigo" #: qcsrc/common/mapinfo.qh:184 msgid "Team Deathmatch" -msgstr "Mata-mata por Equipe" +msgstr "Mata-mata por Equipa" #: qcsrc/common/mapinfo.qh:220 msgid "Capture the Flag" -msgstr "Capture a Bandeira" +msgstr "Captura a Bandeira" #: qcsrc/common/mapinfo.qh:220 msgid "" "Find and bring the enemy flag to your base to capture it, defend your base " "from the other team" msgstr "" -"Encontre e retorne a bandeira inimiga à sua base para capturá-la e defenda " -"sua base da equipe oponente" +"Encontra e retorna a bandeira inimiga à tua base para capturá-la e defende a " +"tua base da equipa oponente" #: qcsrc/common/mapinfo.qh:249 msgid "Clan Arena" -msgstr "Clan Arena" +msgstr "Clã Arena" #: qcsrc/common/mapinfo.qh:249 msgid "Kill all enemy teammates to win the round" -msgstr "Mate todos os inimigos para vencer a rodada" +msgstr "Mata todos os inimigos para vencer a rodada" #: qcsrc/common/mapinfo.qh:287 msgid "Capture and defend all the control points to win" -msgstr "Capture e defenda todos os pontos de controle para vencer" +msgstr "Captura e defende todos os pontos de controlo para vencer" #: qcsrc/common/mapinfo.qh:287 msgid "Domination" -msgstr "Domination" +msgstr "Dominação" #: qcsrc/common/mapinfo.qh:319 msgid "Gather all the keys to win the round" -msgstr "Colete todas as chaves para vencer a rodada" +msgstr "Recolhe todas as chaves para vencer a rodada" #: qcsrc/common/mapinfo.qh:319 msgid "Key Hunt" -msgstr "Key Hunt" +msgstr "Caça as Chaves" #: qcsrc/common/mapinfo.qh:353 msgid "Assault" -msgstr "Assault" +msgstr "Assalto" #: qcsrc/common/mapinfo.qh:353 msgid "" "Destroy obstacles to find and destroy the enemy power core before time runs " "out" msgstr "" -"Destrua obstáculos para encontrar e destruir o núcleo de poder inimigo antes " +"Destrói obstáculos para encontrar e destruir o núcleo de poder inimigo antes " "que o tempo acabe" #: qcsrc/common/mapinfo.qh:371 msgid "Capture control points to reach and destroy the enemy generator" -msgstr "Capture pontos de controle para alcançar e destruir o gerador inimigo" +msgstr "" +"Captura os pontos de controlo para alcançar e destruir o gerador inimigo" #: qcsrc/common/mapinfo.qh:371 msgid "Onslaught" -msgstr "Onslaught" +msgstr "Massacre" #: qcsrc/common/mapinfo.qh:387 msgid "Nexball" -msgstr "Nexball" +msgstr "Bola Nex" #: qcsrc/common/mapinfo.qh:387 msgid "Shoot and kick the ball into the enemies goal, keep your goal clean" -msgstr "Atire e chute a bola no gol inimigo e mantenha seu gol limpo" +msgstr "Atira e chuta a bola na baliza do inimigo e mantém a tua baliza limpa" #: qcsrc/common/mapinfo.qh:408 msgid "Freeze Tag" -msgstr "Freeze Tag" +msgstr "Congela" #: qcsrc/common/mapinfo.qh:408 msgid "" "Kill enemies to freeze them, stand next to frozen teammates to revive them; " "freeze all enemies to win" msgstr "" -"Mate inimigos para congelá-los. Fique perto de colegas para descongelá-los; " -"congele todos os inimigos para vencer" +"Mata os inimigos para congelá-los. Fica perto de colegas para descongelá-" +"los; congela todos os inimigos para venceres" #: qcsrc/common/mapinfo.qh:446 msgid "Hold the ball to get points for kills" -msgstr "Segure a bola para ganhar pontos por cada jogador aniquilado" +msgstr "Segura a bola para ganhar pontos por cada jogador aniquilado" #: qcsrc/common/mapinfo.qh:446 msgid "Keepaway" -msgstr "Keepaway" +msgstr "" #: qcsrc/common/mapinfo.qh:461 msgid "Invasion" -msgstr "Invasion" +msgstr "Invasão" #: qcsrc/common/mapinfo.qh:461 msgid "Survive against waves of monsters" -msgstr "Sobreviva contra ondas de monstros" +msgstr "Sobrevive contra ondas de monstros" #: qcsrc/common/minigames/cl_minigames.qc:383 msgid "It's your turn" -msgstr "É a sua vez" +msgstr "É a tua vez" #: qcsrc/common/minigames/cl_minigames_hud.qc:331 #: qcsrc/menu/xonotic/dialog_quit.qh:6 @@ -1361,29 +1364,29 @@ msgstr "Entrar" #: qcsrc/common/minigames/cl_minigames_hud.qc:489 msgid "Minigames" -msgstr "Minijogos" +msgstr "Mini-jogos" #: qcsrc/common/minigames/minigame/bd.qc:1168 msgid "Better luck next time!" -msgstr "Mais sorte da próxima vez!" +msgstr "Talvez tenhas mais sorte da próxima vez!" #: qcsrc/common/minigames/minigame/bd.qc:1172 msgid "Tubular! Press \"Next Level\" to continue!" -msgstr "Tubular! Clique em \"Próximo Mapa\" para continuar!" +msgstr "Tubular! Clica em \"Próximo Mapa\" para continuar!" #: qcsrc/common/minigames/minigame/bd.qc:1174 msgid "Wicked! Press \"Next Level\" to continue!" -msgstr "Enfeitiçado! Clique em \"Próximo Mapa\" para continuar!" +msgstr "Enfeitiçado! Clica em \"Próximo Mapa\" para continuar!" #: qcsrc/common/minigames/minigame/bd.qc:1177 msgid "Press the space bar to change your currently selected tile" msgstr "" -"Aperte a barra de espaço para alterar a sua imagem de equipe atualmente " -"selecionada" +"Carrega na tecla de barra de espaços para alterar a tua imagem da equipa " +"atualmente selecionada" #: qcsrc/common/minigames/minigame/bd.qc:1180 msgid "Push the boulders onto the targets" -msgstr "Empurre os pedregulhos em direção aos alvos" +msgstr "Empurra os pedregulhos em direção aos alvos" #: qcsrc/common/minigames/minigame/bd.qc:1404 msgid "Next Level" @@ -1400,7 +1403,7 @@ msgstr "Editor" #: qcsrc/common/minigames/minigame/bd.qc:1407 #: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:37 msgid "Save" -msgstr "Salvar" +msgstr "Gravar" #: qcsrc/common/minigames/minigame/c4.qc:373 #: qcsrc/common/minigames/minigame/pp.qc:438 @@ -1411,43 +1414,42 @@ msgstr "Empate" #: qcsrc/common/minigames/minigame/c4.qc:378 #: qcsrc/common/minigames/minigame/nmm.qc:601 msgid "You lost the game!" -msgstr "Você perdeu o jogo!" +msgstr "Perdeste o jogo!" #: qcsrc/common/minigames/minigame/c4.qc:379 #: qcsrc/common/minigames/minigame/nmm.qc:602 msgid "You win!" -msgstr "Você venceu!" +msgstr "Venceste!" #: qcsrc/common/minigames/minigame/c4.qc:383 #: qcsrc/common/minigames/minigame/nmm.qc:606 #: qcsrc/common/minigames/minigame/pp.qc:455 #: qcsrc/common/minigames/minigame/ttt.qc:336 msgid "Wait for your opponent to make their move" -msgstr "Espere o seu oponente terminar a vez dele" +msgstr "Espera que o teu oponente termine a vez dele" #: qcsrc/common/minigames/minigame/c4.qc:386 #: qcsrc/common/minigames/minigame/nmm.qc:608 #: qcsrc/common/minigames/minigame/pp.qc:458 #: qcsrc/common/minigames/minigame/ttt.qc:339 msgid "Click on the game board to place your piece" -msgstr "Clique no tabuleiro de jogo para posicionar sua peça" +msgstr "Clica no tabuleiro de jogo para posicionar a tua peça" #: qcsrc/common/minigames/minigame/nmm.qc:610 msgid "" "You can select one of your pieces to move it in one of the surrounding places" msgstr "" -"Você pode selecionar uma de suas peças para movê-la para um dos lugares ao " -"redor" +"Podes selecionar uma das tuas peças para movê-la para um dos lugares em redor" #: qcsrc/common/minigames/minigame/nmm.qc:612 msgid "You can select one of your pieces to move it anywhere on the board" msgstr "" -"Você pode selecionar uma de suas peças para movê-la para qualquer lugar no " +"Podes selecionar uma das tuas peças para movê-la para qualquer lugar no " "tabuleiro" #: qcsrc/common/minigames/minigame/nmm.qc:614 msgid "You can take one of the opponent's pieces" -msgstr "Você pode tomar uma das peças do seu oponente" +msgstr "Podes pegar numa das peças do teu oponente" #: qcsrc/common/minigames/minigame/pong.qc:570 #: qcsrc/common/minigames/minigame/ttt.qc:299 @@ -1457,7 +1459,7 @@ msgstr "IA" #: qcsrc/common/minigames/minigame/pong.qc:587 msgid "Press ^1Start Match^7 to start the match with the current players" msgstr "" -"Aperte ^1Iniciar Partida^7 para iniciar a partida com os jogadores atuais" +"Pressiona ^1Iniciar Partida^7 para iniciar a partida com os jogadores atuais" #: qcsrc/common/minigames/minigame/pong.qc:651 msgid "Start Match" @@ -1465,11 +1467,11 @@ msgstr "Iniciar Partida" #: qcsrc/common/minigames/minigame/pong.qc:652 msgid "Add AI player" -msgstr "Adicionar bot" +msgstr "Adicionar robô" #: qcsrc/common/minigames/minigame/pong.qc:653 msgid "Remove AI player" -msgstr "Remover bot" +msgstr "Remover robô" #: qcsrc/common/minigames/minigame/pp.qc:443 #: qcsrc/common/minigames/minigame/ttt.qc:324 @@ -1477,8 +1479,8 @@ msgid "" "You lost the game!\n" "Select \"^1Next Match^7\" on the menu for a rematch!" msgstr "" -"Você perdeu o jogo!\n" -"Selecione \"^1Próxima Partida^7\" no menu para uma revanche!" +"Perdeste o jogo!\n" +"Seleciona \"^1Próxima Partida^7\" no menu para te vingares!" #: qcsrc/common/minigames/minigame/pp.qc:444 #: qcsrc/common/minigames/minigame/ttt.qc:325 @@ -1486,19 +1488,19 @@ msgid "" "You win!\n" "Select \"^1Next Match^7\" on the menu to start a new match!" msgstr "" -"Você venceu!\n" -"Selecione \"^1Próxima Partida^7\" no menu para iniciar uma nova partida!" +"Venceste!\n" +"Seleciona \"^1Próxima Partida^7\" no menu para iniciar uma nova partida!" #: qcsrc/common/minigames/minigame/pp.qc:450 #: qcsrc/common/minigames/minigame/ttt.qc:331 msgid "Select \"^1Next Match^7\" on the menu to start a new match!" msgstr "" -"Selecione \"^1Próxima Partida^7\" no menu para iniciar uma nova partida!" +"Seleciona \"^1Próxima Partida^7\" no menu para iniciar uma nova partida!" #: qcsrc/common/minigames/minigame/pp.qc:451 #: qcsrc/common/minigames/minigame/ttt.qc:332 msgid "Wait for your opponent to confirm the rematch" -msgstr "Espere o seu oponente confirmar a revanche" +msgstr "Espera que o teu oponente confirme a vingança" #: qcsrc/common/minigames/minigame/pp.qc:582 #: qcsrc/common/minigames/minigame/ttt.qc:665 @@ -1516,11 +1518,11 @@ msgstr "Não há mais movimentos válidos" #: qcsrc/common/minigames/minigame/ps.qc:491 msgid "Well done, you win!" -msgstr "Bom trabalho, você venceu!" +msgstr "Bom trabalho, venceste!" #: qcsrc/common/minigames/minigame/ps.qc:494 msgid "Jump a piece over another to capture it" -msgstr "Faça uma peça saltar sobre outra para capturá-la" +msgstr "Faz com que uma peça salte sobre outra para capturá-la" #: qcsrc/common/minigames/minigame/ttt.qc:666 msgid "Single Player" @@ -1538,7 +1540,7 @@ msgstr "Prego de mago" #: qcsrc/common/monsters/monster/shambler.qh:17 #: qcsrc/menu/xonotic/dialog_monstertools.qc:17 msgid "Shambler" -msgstr "Shambler" +msgstr "" #: qcsrc/common/monsters/monster/spider.qh:17 #: qcsrc/menu/xonotic/dialog_monstertools.qc:16 @@ -1552,11 +1554,11 @@ msgstr "Ataque da Aranha" #: qcsrc/common/monsters/monster/wyvern.qh:17 #: qcsrc/menu/xonotic/dialog_monstertools.qc:19 msgid "Wyvern" -msgstr "Wyvern" +msgstr "" #: qcsrc/common/monsters/monster/wyvern.qh:28 msgid "Wyvern attack" -msgstr "Ataque do Wyvern" +msgstr "" #: qcsrc/common/monsters/monster/zombie.qh:17 #: qcsrc/menu/xonotic/dialog_monstertools.qc:15 @@ -1565,7 +1567,7 @@ msgstr "Zumbi" #: qcsrc/common/mutators/mutator/buffs/all.inc:15 msgid "Ammo" -msgstr "Munição" +msgstr "Munições" #: qcsrc/common/mutators/mutator/buffs/all.inc:24 msgid "Resistance" @@ -1616,7 +1618,7 @@ msgstr "Trocador" #: qcsrc/common/mutators/mutator/buffs/all.inc:120 msgid "Magnet" -msgstr "Ímã" +msgstr "Íman" #: qcsrc/common/mutators/mutator/buffs/all.inc:128 msgid "Luck" @@ -1628,7 +1630,7 @@ msgstr "Voo" #: qcsrc/common/mutators/mutator/buffs/buffs.qh:7 msgid "Buff" -msgstr "Bônus" +msgstr "Bónus" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:8 msgid "Damage text" @@ -1636,19 +1638,19 @@ msgstr "Texto de dano" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:18 msgid "Draw damage numbers" -msgstr "Exibir números de dano" +msgstr "Mostrar números de dano" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:20 msgid "Font size minimum:" -msgstr "Tamanho da fonte mínimo:" +msgstr "Tamanho mínimo da fonte:" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:25 msgid "Font size maximum:" -msgstr "Tamanho da fonte máximo:" +msgstr "Tamanho máximo da fonte:" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:30 msgid "Accumulate range:" -msgstr "Alcance de acúmulo:" +msgstr "Alcance de acumulação:" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:35 msgid "Lifetime:" @@ -1666,7 +1668,7 @@ msgstr "Cor:" #: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:47 msgid "Draw damage numbers for friendly fire" -msgstr "Exibir números de dano para fogo amigo" +msgstr "Mostrar números de dano para fogo amigo" #: qcsrc/common/mutators/mutator/instagib/items.qh:56 msgid "Extra life" @@ -1710,11 +1712,11 @@ msgstr "Granada" #: qcsrc/common/mutators/mutator/overkill/hmg.qh:17 msgid "Heavy Machine Gun" -msgstr "Heavy Machine Gun" +msgstr "Metralhadora Pesada" #: qcsrc/common/mutators/mutator/overkill/rpc.qh:17 msgid "Rocket Propelled Chainsaw" -msgstr "Rocket Propelled Chainsaw" +msgstr "" #: qcsrc/common/mutators/mutator/waypoints/all.inc:3 msgid "Waypoint" @@ -1742,7 +1744,7 @@ msgstr "Item" #: qcsrc/common/mutators/mutator/waypoints/all.inc:12 msgid "Checkpoint" -msgstr "Ponto de checagem" +msgstr "Ponto de verificação" #: qcsrc/common/mutators/mutator/waypoints/all.inc:13 #: qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc:252 @@ -1769,7 +1771,7 @@ msgstr "Empurrar" #: qcsrc/common/mutators/mutator/waypoints/all.inc:21 msgid "Flag carrier" -msgstr "Portador de bandeiras" +msgstr "Portador de bandeira" #: qcsrc/common/mutators/mutator/waypoints/all.inc:22 msgid "Enemy carrier" @@ -1801,7 +1803,7 @@ msgstr "Base rosa" #: qcsrc/common/mutators/mutator/waypoints/all.inc:29 msgid "Return flag here" -msgstr "Traga a bandeira para cá" +msgstr "Traz a bandeira para cá" #: qcsrc/common/mutators/mutator/waypoints/all.inc:31 #: qcsrc/common/mutators/mutator/waypoints/all.inc:32 @@ -1812,7 +1814,7 @@ msgstr "Traga a bandeira para cá" #: qcsrc/common/mutators/mutator/waypoints/all.inc:52 #: qcsrc/common/mutators/mutator/waypoints/all.inc:53 msgid "Control point" -msgstr "Ponto de controle" +msgstr "Ponto de controlo" #: qcsrc/common/mutators/mutator/waypoints/all.inc:37 msgid "Dropped key" @@ -1824,11 +1826,11 @@ msgstr "Chave largada" #: qcsrc/common/mutators/mutator/waypoints/all.inc:42 #: qcsrc/common/mutators/mutator/waypoints/all.inc:43 msgid "Key carrier" -msgstr "Portador de chaves" +msgstr "Portador de chave" #: qcsrc/common/mutators/mutator/waypoints/all.inc:39 msgid "Run here" -msgstr "Corra aqui" +msgstr "Corre para aqui" #: qcsrc/common/mutators/mutator/waypoints/all.inc:45 #: qcsrc/common/mutators/mutator/waypoints/all.inc:48 @@ -1837,11 +1839,11 @@ msgstr "Bola" #: qcsrc/common/mutators/mutator/waypoints/all.inc:46 msgid "Ball carrier" -msgstr "Portador de bolas" +msgstr "Portador de bola" #: qcsrc/common/mutators/mutator/waypoints/all.inc:49 msgid "Goal" -msgstr "Gol" +msgstr "Golo" #: qcsrc/common/mutators/mutator/waypoints/all.inc:54 #: qcsrc/common/mutators/mutator/waypoints/all.inc:55 @@ -1876,7 +1878,7 @@ msgstr "Spam" #: qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc:655 #, c-format msgid "%s needing help!" -msgstr "%s precisando de ajuda!" +msgstr "%s a precisar de ajuda!" #: qcsrc/common/net_notice.qc:87 msgid "^1Server notices:" @@ -1885,7 +1887,7 @@ msgstr "^1Avisos do servidor:" #: qcsrc/common/notifications/all.inc:239 msgid "^F4NOTE: ^BGSpectator chat is not sent to players during the match" msgstr "" -"^F4NOTA: ^BGMensagens no bate-papo de espectador não serão enviadas aos " +"^F4NOTA: ^BGas mensagens na conversação de espetador não serão enviadas aos " "jogadores durante a partida" #: qcsrc/common/notifications/all.inc:241 @@ -1919,7 +1921,7 @@ msgid "" "^BG%s^BG's previous record of ^F1%s^BG seconds" msgstr "" "^BG%s^BG capturou a bandeira ^TC^TT^BG em ^F2%s^BG segundos, não quebrando o " -"record anterior de ^BG%s^BG de ^F1%s^BG segundos" +"recorde anterior de ^BG%s^BG de ^F1%s^BG segundos" #: qcsrc/common/notifications/all.inc:246 msgid "^BGThe ^TC^TT^BG flag was returned to base by its owner" @@ -1949,12 +1951,11 @@ msgstr "^BGA bandeira caiu na base e retornou sozinha" msgid "" "^BGThe ^TC^TT^BG flag fell somewhere it couldn't be reached and returned to " "base" -msgstr "" -"^BGA bandeira ^TC^TT^BG caiu em algum lugar inacessível e retornou à base" +msgstr "^BGA bandeira ^TC^TT^BG caiu num lugar inacessível e retornou à base" #: qcsrc/common/notifications/all.inc:253 msgid "^BGThe flag fell somewhere it couldn't be reached and returned to base" -msgstr "^BGA bandeira caiu em algum lugar inacessível e retornou à base" +msgstr "^BGA bandeira caiu num lugar inacessível e retornou à base" #: qcsrc/common/notifications/all.inc:254 #, c-format @@ -1999,7 +2000,7 @@ msgstr "^BG%s^BG pegou a bandeira ^TC^TT^BG" #: qcsrc/common/notifications/all.inc:261 #, c-format msgid "^BG%s^BG got the flag" -msgstr "^BG%s^BG pegou a bandeira" +msgstr "^BG%s^BG pegou na bandeira" #: qcsrc/common/notifications/all.inc:262 #: qcsrc/common/notifications/all.inc:263 @@ -2011,35 +2012,35 @@ msgstr "^BG%s^BG retornou a bandeira ^TC^TT^BG" #: qcsrc/common/notifications/all.inc:553 #, c-format msgid "^F2Throwing coin... Result: %s^F2!" -msgstr "^F2Atirando moeda... Resultado: %s^F2!" +msgstr "^F2A atirar a moeda... Resultado: %s^F2!" #: qcsrc/common/notifications/all.inc:267 msgid "^BGYou don't have any fuel for the ^F1Jetpack" -msgstr "^BGVocê está sem combustível para a ^F1Mochila a Jato" +msgstr "^BGEstás sem combustível para a ^F1Mochila a Jato" #: qcsrc/common/notifications/all.inc:269 msgid "^F2You lack a UID, superspec options will not be saved/restored" msgstr "" -"^F2Você não tem um UID, opções de sperspec não serão salvas/restauradas" +"^F2Não tens um UID, as opções de sperspec não serão gravadas/restauradas" #: qcsrc/common/notifications/all.inc:271 msgid "^F1Round already started, you will join the game in the next round" -msgstr "^F1A rodada já começou, você entrará no jogo na próxima rodada" +msgstr "^F1A rodada já começou, vais entrar no jogo na próxima rodada" #: qcsrc/common/notifications/all.inc:272 msgid "^F2You will spectate in the next round" -msgstr "^F2Você ficará de espectador na próxima rodada" +msgstr "^F2Vais ficar no modo espetador na próxima rodada" #: qcsrc/common/notifications/all.inc:274 #, c-format msgid "^BG%s%s^K1 was killed by ^BG%s^K1's ^BG%s^K1 buff ^K1%s%s" -msgstr "^BG%s%s^K1 foi morto pelo bônus de ^BG%s^K1 de ^BG%s^K1 ^K1%s%s" +msgstr "^BG%s%s^K1 foi morto pelo bónus de ^BG%s^K1 de ^BG%s^K1 ^K1%s%s" #: qcsrc/common/notifications/all.inc:274 #, c-format msgid "^BG%s%s^K1 was scored against by ^BG%s^K1's ^BG%s^K1 buff ^K1%s%s" msgstr "" -"^BG%s%s^K1 foi pontuado contra pelo bônus de ^BG%s^K1 de ^BG%s^K1 ^K1%s%s" +"^BG%s%s^K1 foi pontuado contra pelo bónus de ^BG%s^K1 de ^BG%s^K1 ^K1%s%s" #: qcsrc/common/notifications/all.inc:275 #, c-format @@ -2060,7 +2061,7 @@ msgstr "^BG%s%s^K1 foi castigado por ^BG%s^K1%s%s" #, c-format msgid "^BG%s%s^K1 felt a little hot from ^BG%s^K1's fire^K1%s%s" msgstr "" -"^BG%s%s^K1 se sentiu um pouco quente por causa do fogo de ^BG%s^K1^K1%s%s" +"^BG%s%s^K1 sentiu-se um pouco quente por causa do fogo de ^BG%s^K1^K1%s%s" #: qcsrc/common/notifications/all.inc:278 #, c-format @@ -2075,7 +2076,7 @@ msgstr "^BG%s%s^K1 foi cozinhado por ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:280 #, c-format msgid "^BG%s%s^K1 was pushed in front of a monster by ^BG%s^K1%s%s" -msgstr "^BG%s%s^K1 foi empurrado em frente de um monstro por ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi empurrado na frente de um monstro por ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:281 #, c-format @@ -2085,28 +2086,29 @@ msgstr "^BG%s%s^K1 foi explodido pela Granada de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:282 #, c-format msgid "^BG%s%s^K1 got too close to a napalm explosion%s%s" -msgstr "^BG%s%s^K1 se aproximou demais de uma explosão de napalm%s%s" +msgstr "^BG%s%s^K1 aproximou-se demais de uma explosão de napalm%s%s" #: qcsrc/common/notifications/all.inc:282 #, c-format msgid "^BG%s%s^K1 was burned to death by ^BG%s^K1's Napalm Nade%s%s" msgstr "" -"^BG%s%s^K1 foi queimado até a morte pela Granada de Napalm de ^BG%s^K1%s%s" +"^BG%s%s^K1 foi queimado até à morte pela Granada de Napalm de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:283 #, c-format msgid "^BG%s%s^K1 was blown up by ^BG%s^K1's Ice Nade%s%s" -msgstr "^BG%s%s^K1 foi explodido pega Granada de Gelo de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi explodido pela Granada de Gelo de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:284 #, c-format msgid "^BG%s%s^K1 was frozen to death by ^BG%s^K1's Ice Nade%s%s" -msgstr "^BG%s%s^K1 foi explodido pega Granada de Gelo de ^BG%s^K1%s%s" +msgstr "" +"^BG%s%s^K1 foi congelado até à morte pela Granada de Gelo de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:285 #, c-format msgid "^BG%s%s^K1 has not been healed by ^BG%s^K1's Healing Nade%s%s" -msgstr "^BG%s%s^K1 não foi curado pela Granade de Cura de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 não foi curado pela Granada de Cura de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:286 #, c-format @@ -2131,23 +2133,23 @@ msgstr "^BG%s%s^K1 tentou ocupar o espaço do teletransporte de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:289 #, c-format msgid "^BG%s%s^K1 was telefragged by ^BG%s^K1%s%s" -msgstr "^BG%s%s^K1 levou um telefrag de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi teletransmorto por ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:290 #, c-format msgid "^BG%s%s^K1 died in an accident with ^BG%s^K1%s%s" -msgstr "^BG%s%s^K1 morreu em um acidente com ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 morreu num acidente com ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:291 #, c-format msgid "" "^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Bumblebee exploded%s%s" -msgstr "^BG%s%s^K1 foi pego pela explosão de Bumblebee de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi apanhado pela explosão de Bumblebee de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:292 #, c-format msgid "^BG%s%s^K1 saw the pretty lights of ^BG%s^K1's Bumblebee gun%s%s" -msgstr "^BG%s%s^K1 viu as lindas luzes da arma do Bumblebee de ^BG%s^K1%s%s" +msgstr "" #: qcsrc/common/notifications/all.inc:293 #, c-format @@ -2167,28 +2169,29 @@ msgstr "^BG%s%s^K1 não resistiu às bolhas roxas de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:296 #, c-format msgid "^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Raptor exploded%s%s" -msgstr "^BG%s%s^K1 foi pego pela explosão do Raptor de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi apanhado pela explosão do Raptor de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:297 #, c-format msgid "" "^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Spiderbot exploded%s%s" -msgstr "^BG%s%s^K1 foi pego pela explosão do Spiderbot de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi apanhado pela explosão do Robô Aranha de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:298 #, c-format msgid "^BG%s%s^K1 got shredded by ^BG%s^K1's Spiderbot%s%s" -msgstr "^BG%s%s^K1 foi picado pelo Spiderbot de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi picado pelo Robô Aranha de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:299 #, c-format msgid "^BG%s%s^K1 was blasted to bits by ^BG%s^K1's Spiderbot%s%s" -msgstr "^BG%s%s^K1 foi explodido em pedacinhos pelo Spiderbot de ^BG%s^K1%s%s" +msgstr "" +"^BG%s%s^K1 foi explodido em pedacinhos pelo Robô Aranha de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:300 #, c-format msgid "^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Racer exploded%s%s" -msgstr "^BG%s%s^K1 foi pego pela explosão do Racer de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi apanhado pela explosão do Racer de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:301 #, c-format @@ -2203,7 +2206,7 @@ msgstr "^BG%s%s^K1 não conseguiu escapar do Racer de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:303 #, c-format msgid "^BG%s%s^K1 was thrown into a world of hurt by ^BG%s^K1%s%s" -msgstr "^BG%s%s^K1 foi jogado em mundo de dor por ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi atirado para um mundo de dor por ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:305 #, c-format @@ -2213,18 +2216,17 @@ msgstr "^BG%s^K1 foi movido para o %s%s" #: qcsrc/common/notifications/all.inc:306 #, c-format msgid "^BG%s^K1 became enemies with the Lord of Teamplay%s%s" -msgstr "^BG%s^K1 tornou-se inimigo do Senhor do Trabalho em Equipe%s%s" +msgstr "^BG%s^K1 tornou-se inimigo do Senhor do Trabalho em Equipa%s%s" #: qcsrc/common/notifications/all.inc:307 #, c-format msgid "^BG%s^K1 thought they found a nice camping ground%s%s" -msgstr "" -"^BG%s^K1 acharam que tinham encontrado um ótimo lugar para camperar%s%s" +msgstr "^BG%s^K1 pensou que tinham encontrado um ótimo lugar para acampar%s%s" #: qcsrc/common/notifications/all.inc:308 #, c-format msgid "^BG%s^K1 unfairly eliminated themself%s%s" -msgstr "^BG%s^K1 se eliminou injustamente%s%s" +msgstr "^BG%s^K1 eliminou-se injustamente%s%s" #: qcsrc/common/notifications/all.inc:310 #, c-format @@ -2254,7 +2256,7 @@ msgstr "^BG%s^K1 ficou um pouco crocante%s%s" #: qcsrc/common/notifications/all.inc:312 #, c-format msgid "^BG%s^K1 felt a little hot%s%s" -msgstr "^BG%s^K1 se sentiu um pouco quente%s%s" +msgstr "^BG%s^K1 sentiu-se um pouco quente%s%s" #: qcsrc/common/notifications/all.inc:313 #, c-format @@ -2264,7 +2266,7 @@ msgstr "^BG%s^K1 morreu%s%s" #: qcsrc/common/notifications/all.inc:314 #, c-format msgid "^BG%s^K1 found a hot place%s%s" -msgstr "^BG%s^K1 achou um lugar quente%s%s" +msgstr "^BG%s^K1 encontrou um lugar quente%s%s" #: qcsrc/common/notifications/all.inc:314 #, c-format @@ -2280,18 +2282,18 @@ msgstr "^BG%s^K1 foi explodido por um Mago%s%s" #, c-format msgid "^BG%s^K1's innards became outwards by a Shambler%s%s" msgstr "" -"Os órgãos internos de ^BG%s^K1 se tornaram externos por causa de um Shambler " +"Os órgãos internos de ^BG%s^K1 tornaram-se externos por causa de um Shambler " "%s%s" #: qcsrc/common/notifications/all.inc:317 #, c-format msgid "^BG%s^K1 was smashed by a Shambler%s%s" -msgstr "^BG%s^K1 foi esmagado por um Shambler%s%s" +msgstr "" #: qcsrc/common/notifications/all.inc:318 #, c-format msgid "^BG%s^K1 was zapped to death by a Shambler%s%s" -msgstr "^BG%s^K1 foi eletrocutado até a morte por um Shambler%s%s" +msgstr "" #: qcsrc/common/notifications/all.inc:319 #, c-format @@ -2301,12 +2303,12 @@ msgstr "^BG%s^K1 foi picado por uma Aranha%s%s" #: qcsrc/common/notifications/all.inc:320 #, c-format msgid "^BG%s^K1 was fireballed by a Wyvern%s%s" -msgstr "^BG%s^K1 foi morto pela fireball de um Wyvern%s%s" +msgstr "" #: qcsrc/common/notifications/all.inc:321 #, c-format msgid "^BG%s^K1 joins the Zombies%s%s" -msgstr "^BG%s^K1 se juntou aos Zumbis%s%s" +msgstr "^BG%s^K1 juntou-se aos Zumbis%s%s" #: qcsrc/common/notifications/all.inc:322 #, c-format @@ -2324,13 +2326,12 @@ msgstr "^BG%s^K1 dominou a arte do suicídio com granadas%s%s" msgid "" "^BG%s^K1 decided to take a look at the results of their napalm explosion%s%s" msgstr "" -"^BG%s^K1 decidiu dar uma olhada nos resultados de sua explosão de napalm%s%s" +"^BG%s^K1 decidiu dar uma olhada nos resultados da sua explosão de napalm%s%s" #: qcsrc/common/notifications/all.inc:324 #, c-format msgid "^BG%s^K1 was burned to death by their own Napalm Nade%s%s" -msgstr "" -"^BG%s^K1 foi queimado até a morte por sua própria Granada de Napalm%s%s" +msgstr "^BG%s^K1 foi queimado até a morte pela própria Granada de Napalm%s%s" #: qcsrc/common/notifications/all.inc:326 #, c-format @@ -2340,22 +2341,23 @@ msgstr "^BG%s^K1 sentiu-se um pouco friolento%s%s" #: qcsrc/common/notifications/all.inc:326 #, c-format msgid "^BG%s^K1 was frozen to death by their own Ice Nade%s%s" -msgstr "^BG%s^K1 foi congelado até a morte por sua própria Granada de Gelo%s%s" +msgstr "" +"^BG%s^K1 foi congelado até a morte pela sua própria Granada de Gelo%s%s" #: qcsrc/common/notifications/all.inc:327 #, c-format msgid "^BG%s^K1's Healing Nade didn't quite heal them%s%s" -msgstr "A Granada de Cura de ^BG%s^K1 não lhe curou corretamente%s%s" +msgstr "A Granada de Cura de ^BG%s^K1 não lhe fez lá muito bem%s%s" #: qcsrc/common/notifications/all.inc:328 #, c-format msgid "^BG%s^K1 died%s%s. What's the point of living without ammo?" -msgstr "^BG%s^K1 morreu%s%s. Qual o sentido de viver sem munição?" +msgstr "^BG%s^K1 morreu%s%s. Para quê viver se não tens munições?" #: qcsrc/common/notifications/all.inc:328 #, c-format msgid "^BG%s^K1 ran out of ammo%s%s" -msgstr "^BG%s^K1 ficou sem munição%s%s" +msgstr "^BG%s^K1 ficou sem munições%s%s" #: qcsrc/common/notifications/all.inc:329 #, c-format @@ -2365,7 +2367,7 @@ msgstr "^BG%s^K1 derreteu%s%s" #: qcsrc/common/notifications/all.inc:330 #, c-format msgid "^BG%s^K1 became a shooting star%s%s" -msgstr "^BG%s^K1 se tornou uma estrela cadente%s%s" +msgstr "^BG%s^K1 tornou-se uma estrela cadente%s%s" #: qcsrc/common/notifications/all.inc:331 #, c-format @@ -2390,44 +2392,43 @@ msgstr "^BG%s^K1 trocou para o %s%s" #: qcsrc/common/notifications/all.inc:335 #, c-format msgid "^BG%s^K1 died in an accident%s%s" -msgstr "^BG%s^K1 morreu em um acidente%s%s" +msgstr "^BG%s^K1 morreu num acidente%s%s" #: qcsrc/common/notifications/all.inc:336 #, c-format msgid "^BG%s^K1 ran into a turret%s%s" -msgstr "^BG%s^K1 deu de cara com uma sentinela%s%s" +msgstr "^BG%s^K1 deu de caras com uma sentinela%s%s" #: qcsrc/common/notifications/all.inc:337 #, c-format msgid "^BG%s^K1 was blasted away by an eWheel turret%s%s" -msgstr "^BG%s^K1 foi explodido por uma sentinela eWheel%s%s" +msgstr "" #: qcsrc/common/notifications/all.inc:338 #, c-format msgid "^BG%s^K1 got caught up in the FLAC turret fire%s%s" -msgstr "^BG%s^K1 se meteu no meio do tiroteio de uma sentinela FLAC%s%s" +msgstr "" #: qcsrc/common/notifications/all.inc:339 #, c-format msgid "^BG%s^K1 was blasted away by a Hellion turret%s%s" -msgstr "^BG%s^K1 foi explodido por uma sentinela Hellion%s%s" +msgstr "" #: qcsrc/common/notifications/all.inc:340 #, c-format msgid "^BG%s^K1 could not hide from the Hunter turret%s%s" -msgstr "^BG%s^K1 não conseguiu se esconder da sentinela Hunter%s%s" +msgstr "" #: qcsrc/common/notifications/all.inc:341 #, c-format msgid "^BG%s^K1 was riddled full of holes by a Machinegun turret%s%s" msgstr "" -"^BG%s^K1 ficou cheio de buracos por causa de uma sentinela de Metralhadora%s" -"%s" +"^BG%s^K1 ficou cheio de buracos por causa de uma sentinela Metralhadora%s%s" #: qcsrc/common/notifications/all.inc:342 #, c-format msgid "^BG%s^K1 got turned into smoldering gibs by an MLRS turret%s%s" -msgstr "^BG%s^K1 foi picado em pedacinhos latentes por uma sentinela MLRS%s%s" +msgstr "^BG%s^K1 foi triturado em pedacinhos por uma sentinela MLRS%s%s" #: qcsrc/common/notifications/all.inc:343 #, c-format @@ -2437,7 +2438,7 @@ msgstr "^BG%s^K1 foi eliminado por uma sentinela%s%s" #: qcsrc/common/notifications/all.inc:344 #, c-format msgid "^BG%s^K1 got served some superheated plasma from a turret%s%s" -msgstr "^BG%s^K1 levou um plasma superaquecido de uma sentinela%s%s" +msgstr "^BG%s^K1 levou com um plasma super aquecido de uma sentinela%s%s" #: qcsrc/common/notifications/all.inc:345 #, c-format @@ -2447,22 +2448,22 @@ msgstr "^BG%s^K1 foi eletrocutado por uma sentinela Tesla%s%s" #: qcsrc/common/notifications/all.inc:346 #, c-format msgid "^BG%s^K1 got served a lead enrichment by a Walker turret%s%s" -msgstr "^BG%s^K1 foi entupido de chumbo por uma sentinela Walker%s%s" +msgstr "^BG%s^K1 foi carregado de chumbo por uma sentinela Andante%s%s" #: qcsrc/common/notifications/all.inc:347 #, c-format msgid "^BG%s^K1 was impaled by a Walker turret%s%s" -msgstr "^BG%s^K1 foi empalado por uma sentinela Walker%s%s" +msgstr "^BG%s^K1 foi empalado por uma sentinela Andante%s%s" #: qcsrc/common/notifications/all.inc:348 #, c-format msgid "^BG%s^K1 was blasted away by a Walker turret%s%s" -msgstr "^BG%s^K1 foi explodido por uma sentinela Walker%s%s" +msgstr "^BG%s^K1 foi explodido por uma sentinela Andante%s%s" #: qcsrc/common/notifications/all.inc:349 #, c-format msgid "^BG%s^K1 got caught in the blast of a Bumblebee explosion%s%s" -msgstr "^BG%s^K1 foi pego pelo raio de uma explosão de Bumblebee%s%s" +msgstr "" #: qcsrc/common/notifications/all.inc:350 #, c-format @@ -2472,32 +2473,32 @@ msgstr "^BG%s^K1 foi esmagado por um veículo%s%s" #: qcsrc/common/notifications/all.inc:351 #, c-format msgid "^BG%s^K1 was caught in a Raptor cluster bomb%s%s" -msgstr "^BG%s^K1 foi pego por uma bomba de Raptor%s%s" +msgstr "" #: qcsrc/common/notifications/all.inc:352 #, c-format msgid "^BG%s^K1 got caught in the blast of a Raptor explosion%s%s" -msgstr "^BG%s^K1 foi pego pela explosão de um Raptor%s%s" +msgstr "" #: qcsrc/common/notifications/all.inc:353 #, c-format msgid "^BG%s^K1 got caught in the blast of a Spiderbot explosion%s%s" -msgstr "^BG%s^K1 foi pego pela explosão de um Spiderbot%s%s" +msgstr "^BG%s^K1 foi apanhado pela explosão de um Robô Aranha%s%s" #: qcsrc/common/notifications/all.inc:354 #, c-format msgid "^BG%s^K1 was blasted to bits by a Spiderbot rocket%s%s" -msgstr "^BG%s^K1 foi explodido em pedacinhos por um foguete de Spiderbot%s%s" +msgstr "^BG%s^K1 foi explodido em pedacinhos por um míssil de Robô Aranha%s%s" #: qcsrc/common/notifications/all.inc:355 #, c-format msgid "^BG%s^K1 got caught in the blast of a Racer explosion%s%s" -msgstr "^BG%s^K1 foi pego pela explosão de um Racer%s%s" +msgstr "^BG%s^K1 foi apanhado pela explosão de um Racer%s%s" #: qcsrc/common/notifications/all.inc:356 #, c-format msgid "^BG%s^K1 couldn't find shelter from a Racer rocket%s%s" -msgstr "^BG%s^K1 não conseguiu escapar do foguete de um Racer%s%s" +msgstr "^BG%s^K1 não conseguiu escapar ao míssil de um Racer%s%s" #: qcsrc/common/notifications/all.inc:359 #, c-format @@ -2537,12 +2538,12 @@ msgstr "^BG%s^K3 foi automaticamente ressuscitado depois de %s segundo(s)" #: qcsrc/common/notifications/all.inc:368 #, c-format msgid "^BG%s^K1 froze themself" -msgstr "^BG%s^K1 se congelou" +msgstr "^BG%s^K1 congelou-se" #: qcsrc/common/notifications/all.inc:370 #: qcsrc/common/notifications/all.inc:684 msgid "^TC^TT^BG team wins the round" -msgstr "A equipe ^TC^TT^BG venceu a rodada" +msgstr "A equipa ^TC^TT^BG venceu a rodada" #: qcsrc/common/notifications/all.inc:371 #: qcsrc/common/notifications/all.inc:685 @@ -2558,58 +2559,58 @@ msgstr "^BGRodada empatada" #: qcsrc/common/notifications/all.inc:373 #: qcsrc/common/notifications/all.inc:549 msgid "^BGRound over, there's no winner" -msgstr "^BGA rodada acabou sem vencedor" +msgstr "^BGA rodada acabou sem vencedores" #: qcsrc/common/notifications/all.inc:375 #, c-format msgid "^BGGodmode saved you %s units of damage, cheater!" -msgstr "^BGModo Deus te protegeu de %s de dano, seu trapaçeiro!" +msgstr "^BGModo Deus protegeu-te de %s unidades de dano, batoteiro!" #: qcsrc/common/notifications/all.inc:377 #, c-format msgid "^BG%s^BG got the %s^BG buff!" -msgstr "^BG%s^BG pegou o bônus de %s^BG!" +msgstr "^BG%s^BG apanhou o bónus de %s^BG!" #: qcsrc/common/notifications/all.inc:378 #, c-format msgid "^BG%s^BG lost the %s^BG buff!" -msgstr "^BG%s^BG perdeu o bônus de %s^BG!" +msgstr "^BG%s^BG perdeu o bónus de %s^BG!" #: qcsrc/common/notifications/all.inc:379 #: qcsrc/common/notifications/all.inc:692 #, c-format msgid "^BGYou dropped the %s^BG buff!" -msgstr "^BGVocê largou o bônus de %s^BG!" +msgstr "^BGLargaste o bónus de %s^BG!" #: qcsrc/common/notifications/all.inc:380 #: qcsrc/common/notifications/all.inc:693 #, c-format msgid "^BGYou got the %s^BG buff!" -msgstr "^BGVocê pegou o bônus de %s^BG!" +msgstr "^BGApanhaste o bónus de %s^BG!" #: qcsrc/common/notifications/all.inc:382 #: qcsrc/common/notifications/all.inc:696 #, c-format msgid "^BGYou do not have the ^F1%s" -msgstr "^BGVocê não tem a ^F1%s" +msgstr "^BGNão tens a ^F1%s" #: qcsrc/common/notifications/all.inc:383 #: qcsrc/common/notifications/all.inc:697 #, c-format msgid "^BGYou dropped the ^F1%s^BG%s" -msgstr "^BGVocê largou a ^F1%s^BG%s" +msgstr "^BGLargaste a ^F1%s^BG%s" #: qcsrc/common/notifications/all.inc:384 #: qcsrc/common/notifications/all.inc:698 #, c-format msgid "^BGYou got the ^F1%s" -msgstr "^BGVocê pegou a ^F1%s" +msgstr "^BGApanhaste a ^F1%s" #: qcsrc/common/notifications/all.inc:385 #: qcsrc/common/notifications/all.inc:699 #, c-format msgid "^BGYou don't have enough ammo for the ^F1%s" -msgstr "^BGVocê não tem munição suficiente para a ^F1%s" +msgstr "^BGNão tens munições suficientes para a ^F1%s" #: qcsrc/common/notifications/all.inc:386 #: qcsrc/common/notifications/all.inc:700 @@ -2626,7 +2627,7 @@ msgstr "^F1%s^BG^F4 não está disponível^BG neste mapa" #: qcsrc/common/notifications/all.inc:389 #, c-format msgid "^BG%s^BG is connecting..." -msgstr "^BG%s^BG está conectando..." +msgstr "^BG%s^BG está a conectar-se..." #: qcsrc/common/notifications/all.inc:390 #, c-format @@ -2636,17 +2637,17 @@ msgstr "^BG%s^F3 conectou-se" #: qcsrc/common/notifications/all.inc:391 #, c-format msgid "^BG%s^F3 connected and joined the ^TC^TT team" -msgstr "^BG%s^F3 conectou-se e se uniu à equipe ^TC^TT" +msgstr "^BG%s^F3 conectou-se e se juntou-se à equipa ^TC^TT" #: qcsrc/common/notifications/all.inc:392 #, c-format msgid "^BG%s^F3 is now playing" -msgstr "^BG%s^F3 está jogando agora" +msgstr "^BG%s^F3 está agora a jogar" #: qcsrc/common/notifications/all.inc:393 #, c-format msgid "^BG%s^F3 is now playing on the ^TC^TT team" -msgstr "^BG%s^F3 está jogando agora na equipe ^TC^TT" +msgstr "^BG%s^F3 está a jogar agora na equipa ^TC^TT" #: qcsrc/common/notifications/all.inc:395 #: qcsrc/common/notifications/all.inc:706 @@ -2658,12 +2659,12 @@ msgstr "^BG%s^BG largou a bola!" #: qcsrc/common/notifications/all.inc:707 #, c-format msgid "^BG%s^BG has picked up the ball!" -msgstr "^BG%s^BG pegou a bola!" +msgstr "^BG%s^BG apanhou a bola!" #: qcsrc/common/notifications/all.inc:398 #, c-format msgid "^BG%s^BG captured the keys for the ^TC^TT team" -msgstr "^BG%s^BG capturou as chaves para a equipe ^TC^TT" +msgstr "^BG%s^BG capturou as chaves para a equipa ^TC^TT" #: qcsrc/common/notifications/all.inc:399 #, c-format @@ -2688,7 +2689,7 @@ msgstr "^BG%s^BG destruiu a Chave ^TC^TT" #: qcsrc/common/notifications/all.inc:403 #, c-format msgid "^BG%s^BG picked up the ^TC^TT Key" -msgstr "^BG%s^BG pegou a Chave ^TC^TT" +msgstr "^BG%s^BG apanhou a Chave ^TC^TT" #: qcsrc/common/notifications/all.inc:405 #, c-format @@ -2702,21 +2703,21 @@ msgstr "^BG%s^F3 não tem mais vidas" #: qcsrc/common/notifications/all.inc:408 msgid "^BGMonsters are currently disabled" -msgstr "^BGMonstros estão atualmente desativados" +msgstr "^BGOs monstros estão desativados neste momento" #: qcsrc/common/notifications/all.inc:410 msgid "^BGThe ^TC^TT^BG team held the ball for too long" -msgstr "^BGA ^BGequipe ^TC^TT segurou a bola por muito tempo" +msgstr "^BGA ^BGequipa ^TC^TT segurou a bola por muito tempo" #: qcsrc/common/notifications/all.inc:412 #, c-format msgid "^BG%s^BG captured %s^BG control point" -msgstr "^BG%s^BG capturou o ponto de controle %s^BG" +msgstr "^BG%s^BG capturou o ponto de controlo %s^BG" #: qcsrc/common/notifications/all.inc:413 #, c-format msgid "^TC^TT^BG team %s^BG control point has been destroyed by %s" -msgstr "O ponto de controle %s^BG da equipe ^TC^TT^BG foi destruído por %s" +msgstr "O ponto de controlo %s^BG da equipa ^TC^TT^BG foi destruído por %s" #: qcsrc/common/notifications/all.inc:414 msgid "^TC^TT^BG generator has been destroyed" @@ -2725,28 +2726,28 @@ msgstr "O gerador ^TC^TT^BG foi destruído" #: qcsrc/common/notifications/all.inc:415 msgid "^TC^TT^BG generator spontaneously combusted due to overtime!" msgstr "" -"O gerador da equipe ^TC^TT^BG entrou em combustão espontaneamente devido aos " +"O gerador da equipa ^TC^TT^BG entrou em combustão espontaneamente devido aos " "acréscimos!" #: qcsrc/common/notifications/all.inc:417 #, c-format msgid "^BG%s^K1 picked up Invisibility" -msgstr "^BG%s^K1 pegou Invisibilidade" +msgstr "^BG%s^K1 apanhou a Invisibilidade" #: qcsrc/common/notifications/all.inc:418 #, c-format msgid "^BG%s^K1 picked up Shield" -msgstr "^BG%s^K1 pegou Escudo" +msgstr "^BG%s^K1 apanhou o Escudo" #: qcsrc/common/notifications/all.inc:419 #, c-format msgid "^BG%s^K1 picked up Speed" -msgstr "^BG%s^K1 pegou Velocidade" +msgstr "^BG%s^K1 apanhou a Velocidade" #: qcsrc/common/notifications/all.inc:420 #, c-format msgid "^BG%s^K1 picked up Strength" -msgstr "^BG%s^K1 pegou Força" +msgstr "^BG%s^K1 apanhou a Força" #: qcsrc/common/notifications/all.inc:422 #, c-format @@ -2763,13 +2764,13 @@ msgid "" "^F2You were kicked from the server because you are a spectator and " "spectators aren't allowed at the moment." msgstr "" -"^F2Você foi expulso do servidor porque você é um espectador e espectadores " -"não são permitidos no momento." +"^F2Foste expulso do servidor porque és um espetador e os espetadores não são " +"permitidos neste momento." #: qcsrc/common/notifications/all.inc:425 #, c-format msgid "^BG%s^F3 is now spectating" -msgstr "^BG%s^F3 está assistindo agora" +msgstr "^BG%s^F3 está agora a assistir" #: qcsrc/common/notifications/all.inc:427 #, c-format @@ -2779,12 +2780,12 @@ msgstr "^BG%s^BG abandonou a corrida" #: qcsrc/common/notifications/all.inc:428 #, c-format msgid "^BG%s^BG couldn't break their %s%s^BG place record of %s%s %s" -msgstr "^BG%s^BG não puderam quebrar o recorde de lugar %s%s^BG de %s%s %s" +msgstr "^BG%s^BG não puderam bater o recorde de lugar %s%s^BG de %s%s %s" #: qcsrc/common/notifications/all.inc:429 #, c-format msgid "^BG%s^BG couldn't break the %s%s^BG place record of %s%s %s" -msgstr "^BG%s^BG não pode quebrar o recorde de lugar %s%s^BG de %s%s %s" +msgstr "^BG%s^BG não pode bater o recorde de lugar %s%s^BG de %s%s %s" #: qcsrc/common/notifications/all.inc:430 #, c-format @@ -2795,13 +2796,13 @@ msgstr "^BG%s^BG acabou a corrida" #, c-format msgid "^BG%s^BG broke %s^BG's %s%s^BG place record with %s%s %s" msgstr "" -"^BG%s^BG quebrou o recorde %s%s^BG de %s^BG e substituiu seu recorde com %s" -"%s %s" +"^BG%s^BG bateu o recorde %s%s^BG de %s^BG e substituiu seu recorde com %s%s " +"%s" #: qcsrc/common/notifications/all.inc:432 #, c-format msgid "^BG%s^BG improved their %s%s^BG place record with %s%s %s" -msgstr "^BG%s^BG melhoraram seus %s%s^BG com %s%s %s" +msgstr "^BG%s^BG melhoraram os seus %s%s^BG com %s%s %s" #: qcsrc/common/notifications/all.inc:433 #, c-format @@ -2810,7 +2811,7 @@ msgid "" "and will be lost." msgstr "" "^BG%s^BG atingiu um novo recorde com ^F2%s^BG, mas infelizmente, faltou uma " -"identidade de usuário e sua pontuação será perdida." +"identidade de utilizador e a sua pontuação vai para o badagaio." #: qcsrc/common/notifications/all.inc:434 #, c-format @@ -2818,8 +2819,8 @@ msgid "" "^BG%s^BG scored a new record with ^F2%s^BG, but is anonymous and will be " "lost." msgstr "" -"^BG%s^BG quebrou um novo recorde com ^F2%s^BG, mas é anônimo e, por isso, " -"será perdido." +"^BG%s^BG bateu um novo recorde com ^F2%s^BG, mas é anónimo e, por isso, o " +"recorde também ficará anónimo no esquecimento." #: qcsrc/common/notifications/all.inc:435 #, c-format @@ -2832,12 +2833,12 @@ msgid "" "^F4You have been invited by ^BG%s^F4 to join their game of ^F2%s^F4 " "(^F1%s^F4)" msgstr "" -"^F4Você foi convidado por ^BG%s^F4 para se juntar a eles na partida de " +"^F4Foste convidado por ^BG%s^F4 para te juntares a eles na partida de " "^F2%s^F4 (^F1%s^F4)" #: qcsrc/common/notifications/all.inc:439 msgid "^TC^TT ^BGteam scores!" -msgstr "A equipe ^TC^TT ^BG pontuou!" +msgstr "A equipa ^TC^TT ^BG pontuou!" #: qcsrc/common/notifications/all.inc:441 #, c-format @@ -2845,21 +2846,21 @@ msgid "" "^F2You have to become a player within the next %s, otherwise you will be " "kicked, because spectating isn't allowed at this time!" msgstr "" -"^F2Você precisa se tornar um jogador dentro de %s, caso contrário, você será " -"expulso, pois espectadores não são permitidos no momento!" +"^F2Tens de te tornar um jogador dentro de %s, caso contrário, serás expulso, " +"pois os espetadores não são permitidos neste momento!" #: qcsrc/common/notifications/all.inc:443 #, c-format msgid "^BG%s^K1 picked up a Superweapon" -msgstr "^BG%s^K1 pegou uma Superarma" +msgstr "^BG%s^K1 apanhou uma Super arma" #: qcsrc/common/notifications/all.inc:445 msgid "^BGYou cannot change to a larger team" -msgstr "^BGVocê não pode trocar para uma equipe maior" +msgstr "^BGNão podes mudar para uma equipa maior" #: qcsrc/common/notifications/all.inc:446 msgid "^BGYou are not allowed to change teams" -msgstr "^BGVocê não pode trocar de equipe" +msgstr "^BGNão tens permissão para trocar de equipa" #: qcsrc/common/notifications/all.inc:448 #, c-format @@ -2867,7 +2868,7 @@ msgid "" "^F4NOTE: ^BGThe server is running ^F1Xonotic %s (beta)^BG, you have " "^F2Xonotic %s" msgstr "" -"^F4NOTA: ^BGO servidor está rodando ^F1Xonotic %s (beta)^BG, você tem o " +"^F4NOTA: ^BGO servidor está a executar o ^F1Xonotic %s (beta)^BG, tu tens o " "^F2Xonotic %s" #: qcsrc/common/notifications/all.inc:449 @@ -2875,8 +2876,8 @@ msgstr "" msgid "" "^F4NOTE: ^BGThe server is running ^F1Xonotic %s^BG, you have ^F2Xonotic %s" msgstr "" -"^F4NOTA: ^BGO servidor está rodando ^F1Xonotic %s^BG, você tem o ^F2Xonotic " -"%s" +"^F4NOTA: ^BGO servidor está a executar o ^F1Xonotic %s^BG, tu tens o " +"^F2Xonotic %s" #: qcsrc/common/notifications/all.inc:450 #, c-format @@ -2884,8 +2885,8 @@ msgid "" "^F4NOTE: ^F1Xonotic %s^BG is out, and you still have ^F2Xonotic %s^BG - get " "the update from ^F3http://www.xonotic.org/^BG!" msgstr "" -"^F4NOTA: ^F1Xonotic %s^BG foi lançado e você ainda está com o ^F2Xonotic " -"%s^BG - baixe a atualização pelo site ^F3http://www.xonotic.org/^BG!" +"^F4NOTA: ^F1Xonotic %s^BG foi lançado e ainda estás com o ^F2Xonotic %s^BG - " +"descarrega a atualização no site ^F3http://www.xonotic.org/^BG!" #: qcsrc/common/notifications/all.inc:452 #, c-format @@ -2898,12 +2899,12 @@ msgid "" "^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Accordeon%s%s" msgstr "" "^BG%s%s^K1 morreu por causa da grande habilidade de ^BG%s^K1 com a @!#%%'n " -"Accordeon%s%s" +"Acordeão%s%s" #: qcsrc/common/notifications/all.inc:455 #, c-format msgid "^BG%s^K1 hurt their own ears with the @!#%%'n Accordeon%s%s" -msgstr "^BG%s^K1 feriu seus próprios ouvidos com a @!#%%'n Accordeon%s%s" +msgstr "^BG%s^K1 feriu seus próprios ouvidos com a @!#%%'n Acordeão%s%s" #: qcsrc/common/notifications/all.inc:456 #, c-format @@ -2923,7 +2924,7 @@ msgstr "^BG%s%s^K1 foi morto pelo Blaster de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:459 #, c-format msgid "^BG%s^K1 shot themself to hell with their Blaster%s%s" -msgstr "^BG%s^K1 atirou muito em si mesmo com seu Blaster%s%s" +msgstr "^BG%s^K1 disparou para si próprio até ao inferno com o Blaster%s%s" #: qcsrc/common/notifications/all.inc:460 #, c-format @@ -2938,7 +2939,7 @@ msgstr "^BG%s^K1 sentiu o forte impulso de sua Crylink%s%s" #: qcsrc/common/notifications/all.inc:462 #, c-format msgid "^BG%s%s^K1 ate ^BG%s^K1's rocket%s%s" -msgstr "^BG%s%s^K1 comeu o foguete de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 comeu o míssil de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:463 #, c-format @@ -2948,42 +2949,39 @@ msgstr "" #: qcsrc/common/notifications/all.inc:464 #, c-format msgid "^BG%s^K1 blew themself up with their Devastator%s%s" -msgstr "^BG%s^K1 se explodiu com sua Devastator%s%s" +msgstr "^BG%s^K1 explodiu-se com a sua Devastadora%s%s" #: qcsrc/common/notifications/all.inc:465 #, c-format msgid "^BG%s%s^K1 was blasted by ^BG%s^K1's Electro bolt%s%s" -msgstr "" -"^BG%s%s^K1 foi pulverizado por ^BG%s^K1', usando a arma de artefato " -"eletromagnético %s%s" +msgstr "^BG%s%s^K1 foi pulverizado pelo Parafuso Elétrico de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:466 #, c-format msgid "^BG%s%s^K1 felt the electrifying air of ^BG%s^K1's Electro combo%s%s" -msgstr "" -"^BG%s%s^K1 sentiu o ar eletrocutado do combo de Electro de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 sentiu o ar eletrocutado do combo Elétrico de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:467 #, c-format msgid "^BG%s%s^K1 got too close to ^BG%s^K1's Electro orb%s%s" -msgstr "^BG%s%s^K1 ficou muito perto da esfera de Electro de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 ficou muito perto da esfera Elétrica de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:468 #, c-format msgid "^BG%s^K1 played with Electro bolts%s%s" -msgstr "^BG%s^K1 brincou com raios de Electro%s%s" +msgstr "^BG%s^K1 brincou com os Parafusos Elétricos%s%s" #: qcsrc/common/notifications/all.inc:469 #, c-format msgid "^BG%s^K1 could not remember where they put their Electro orb%s%s" msgstr "" -"^BG%s^K1 não conseguiu se lembrar onde tinha colocado a sua esfera de Electro" -"%s%s" +"^BG%s^K1 não conseguiu lembrar-se onde tinha colocado a sua esfera Elétrica%s" +"%s" #: qcsrc/common/notifications/all.inc:470 #, c-format msgid "^BG%s%s^K1 got too close to ^BG%s^K1's fireball%s%s" -msgstr "^BG%s%s^K1 chegou muito perto da fireball de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 chegou muito perto da Bola de Fogo de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:471 #, c-format @@ -2993,28 +2991,28 @@ msgstr "^BG%s%s^K1 foi queimado pela mina de fogo de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:472 #, c-format msgid "^BG%s^K1 should have used a smaller gun%s%s" -msgstr "^BG%s^K1 deveria ter usado uma arma menor%s%s" +msgstr "^BG%s^K1 devia ter usado uma arma mais pequena%s%s" #: qcsrc/common/notifications/all.inc:473 #, c-format msgid "^BG%s^K1 forgot about their firemine%s%s" -msgstr "^BG%s^K1 se esqueceu da sua mina de fogo%s%s" +msgstr "^BG%s^K1 esqueceu-se da sua mina de fogo%s%s" #: qcsrc/common/notifications/all.inc:474 #, c-format msgid "^BG%s%s^K1 was pummeled by a burst of ^BG%s^K1's Hagar rockets%s%s" msgstr "" -"^BG%s%s^K1 foi atingido por uma rajada de foguetes do Hagar de ^BG%s^K1%s%s" +"^BG%s%s^K1 foi atingido por uma rajada de mísseis do Hagar de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:475 #, c-format msgid "^BG%s%s^K1 was pummeled by ^BG%s^K1's Hagar rockets%s%s" -msgstr "^BG%s%s^K1 foi atingido pelos foguetes do Hagar de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi atingido pelos mísseis do Hagar de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:476 #, c-format msgid "^BG%s^K1 played with tiny Hagar rockets%s%s" -msgstr "^BG%s^K1 brincou com minúsculos foguetes de Hagar%s%s" +msgstr "^BG%s^K1 brincou com minúsculos mísseis de Hagar%s%s" #: qcsrc/common/notifications/all.inc:477 #, c-format @@ -3039,7 +3037,8 @@ msgstr "^BG%s%s^K1 foi despedaçado pela Metralhadora Pesada de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:481 #, c-format msgid "^BG%s%s^K1 was caught in ^BG%s^K1's Hook gravity bomb%s%s" -msgstr "^BG%s%s^K1 foi pego pela bomba de gravidade do Gancho de ^BG%s^K1%s%s" +msgstr "" +"^BG%s%s^K1 foi apanhado pela bomba de gravidade do Gancho de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:482 #, c-format @@ -3047,18 +3046,18 @@ msgid "" "^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Klein Bottle%s%s" msgstr "" "^BG%s%s^K1 morreu por causa da grande habilidade de ^BG%s^K1 com a @!#%%'n " -"Klein Bottle%s%s" +"Garrafa Klein%s%s" #: qcsrc/common/notifications/all.inc:483 #, c-format msgid "^BG%s^K1 hurt their own ears with the @!#%%'n Klein Bottle%s%s" msgstr "" -"^BG%s^K1 machucaram seus próprios ouvidos com a @!#%%'n Klein Bottle%s%s" +"^BG%s^K1 machucaram seus próprios ouvidos com a @!#%%'n Garrafa Klein%s%s" #: qcsrc/common/notifications/all.inc:484 #, c-format msgid "^BG%s%s^K1 was sniped by ^BG%s^K1's Machine Gun%s%s" -msgstr "^BG%s%s^K1 foi atingido pela Machine Gun de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi atingido pela Metralhadora de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:485 #, c-format @@ -3070,7 +3069,7 @@ msgstr "" #: qcsrc/common/notifications/all.inc:790 #, c-format msgid "^BGYou cannot place more than ^F2%s^BG mines at a time" -msgstr "^BGVocê não pode pôr mais do que ^F2%s^BG minas por vez" +msgstr "^BGNão podes colocar mais do que ^F2%s^BG minas de uma vez" #: qcsrc/common/notifications/all.inc:487 #, c-format @@ -3080,22 +3079,22 @@ msgstr "^BG%s%s^K1 ficou muito perto da mina de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:488 #, c-format msgid "^BG%s^K1 forgot about their mine%s%s" -msgstr "^BG%s^K1 se esqueceu de sua mina%s%s" +msgstr "^BG%s^K1 esqueceu-se de sua mina%s%s" #: qcsrc/common/notifications/all.inc:489 #, c-format msgid "^BG%s%s^K1 got too close to ^BG%s^K1's Mortar grenade%s%s" -msgstr "^BG%s%s^K1 ficou muito perto da granada de Mortar de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 ficou muito perto da granada de Morteiro de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:490 #, c-format msgid "^BG%s%s^K1 ate ^BG%s^K1's Mortar grenade%s%s" -msgstr "^BG%s%s^K1 comeu a granada de Mortar de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 comeu a granada de Morteiro de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:491 #, c-format msgid "^BG%s^K1 didn't see their own Mortar grenade%s%s" -msgstr "^BG%s^K1 não viu a sua própria granada de Mortar%s%s" +msgstr "^BG%s^K1 não viu a sua própria granada de Morteiro%s%s" #: qcsrc/common/notifications/all.inc:492 #, c-format @@ -3105,22 +3104,23 @@ msgstr "^BG%s^K1 se explodiu com o seu próprio Mortar%s%s" #: qcsrc/common/notifications/all.inc:493 #, c-format msgid "^BG%s%s^K1 was sniped with a Rifle by ^BG%s^K1%s%s" -msgstr "^BG%s%s^K1 foi atingido pelo Rifle de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi atingido pela Espingarda de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:494 #, c-format msgid "^BG%s%s^K1 died in ^BG%s^K1's Rifle bullet hail%s%s" -msgstr "^BG%s%s^K1 morreu pela bala do Rifle de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 morreu com a bala da Espingarda de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:495 #, c-format msgid "^BG%s%s^K1 failed to hide from ^BG%s^K1's Rifle bullet hail%s%s" -msgstr "^BG%s%s^K1 falhou em se esconder da bala do Rifle de ^BG%s^K1%s%s" +msgstr "" +"^BG%s%s^K1 não conseguiu esconder-se da bala da Espingarda de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:496 #, c-format msgid "^BG%s%s^K1 failed to hide from ^BG%s^K1's Rifle%s%s" -msgstr "^BG%s%s^K1 falhou em se esconder do Rifle de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 não conseguiu esconder-se da Espingarda ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:497 #, c-format @@ -3130,17 +3130,17 @@ msgstr "^BG%s%s^K1 foi serrado ao meio pelo RPC de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:498 #, c-format msgid "^BG%s%s^K1 almost dodged ^BG%s^K1's Rocket Propelled Chainsaw%s%s" -msgstr "^BG%s%s^K1 quase desviou do RPC de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 quase que conseguia desviar-se do RPC de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:499 #, c-format msgid "^BG%s^K1 was sawn in half by their own Rocket Propelled Chainsaw%s%s" -msgstr "^BG%s^K1 foi serrado ao meio pelo seu próprio RPC%s%s" +msgstr "^BG%s^K1 foi serrado ao meio pelo seu RPC%s%s" #: qcsrc/common/notifications/all.inc:500 #, c-format msgid "^BG%s^K1 blew themself up with their Rocket Propelled Chainsaw%s%s" -msgstr "^BG%s^K1 se explodiu com seu próprio RPC%s%s" +msgstr "^BG%s^K1 explodiu-se com o seu RPC%s%s" #: qcsrc/common/notifications/all.inc:501 #, c-format @@ -3155,32 +3155,33 @@ msgstr "^BG%s%s^K1 foi marcado pelo Seeker de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:503 #, c-format msgid "^BG%s^K1 played with tiny Seeker rockets%s%s" -msgstr "^BG%s^K1 brincou com minúsculos foguetes de Seeker%s%s" +msgstr "^BG%s^K1 brincou com minúsculos mísseis do Seeker%s%s" #: qcsrc/common/notifications/all.inc:504 #, c-format msgid "^BG%s%s^K1 was gunned down by ^BG%s^K1's Shockwave%s%s" -msgstr "^BG%s%s^K1 foi morto pela Shockwave de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi morto pela Onda de Choque de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:505 #, c-format msgid "^BG%s%s^K1 slapped ^BG%s^K1 around a bit with a large Shockwave%s%s" -msgstr "^BG%s%s^K1 deu uns tapas em ^BG%s^K1 com uma grande Shockwave%s%s" +msgstr "" +"^BG%s%s^K1 deu uns estalos em ^BG%s^K1 com uma grande Onda de Choque%s%s" #: qcsrc/common/notifications/all.inc:506 #, c-format msgid "^BG%s%s^K1 was gunned down by ^BG%s^K1's Shotgun%s%s" -msgstr "^BG%s%s^K1 foi baleado pela Shotgun de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi baleado pela Caçadeira de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:507 #, c-format msgid "^BG%s%s^K1 slapped ^BG%s^K1 around a bit with a large Shotgun%s%s" -msgstr "^BG%s%s^K1 deu uns tapas em ^BG%s^K1 com uma grande Shotgun%s%s" +msgstr "^BG%s%s^K1 deu uns estalos em ^BG%s^K1 com uma grande Caçadeira%s%s" #: qcsrc/common/notifications/all.inc:508 #, c-format msgid "^BG%s^K1 is now thinking with portals%s%s" -msgstr "^BG%s^K1 agora está pensando com portais%s%s" +msgstr "^BG%s^K1 agora está a pensar em portais%s%s" #: qcsrc/common/notifications/all.inc:509 #, c-format @@ -3192,29 +3193,29 @@ msgstr "" #: qcsrc/common/notifications/all.inc:510 #, c-format msgid "^BG%s^K1 hurt their own ears with the @!#%%'n Tuba%s%s" -msgstr "^BG%s^K1 feriu seus próprios ouvidos com a @!#%%'n Tuba%s%s" +msgstr "^BG%s^K1 feriu os próprios ouvidos com a @!#%%'n Tuba%s%s" #: qcsrc/common/notifications/all.inc:511 #, c-format msgid "^BG%s%s^K1 has been sublimated by ^BG%s^K1's Vaporizer%s%s" -msgstr "^BG%s%s^K1 foi sublimado pela Vaporizer de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi sublimado pelo Vaporizador de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:512 #, c-format msgid "^BG%s%s^K1 has been vaporized by ^BG%s^K1's Vortex%s%s" -msgstr "^BG%s%s^K1 foi vaporizado pela Vortex de ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi vaporizado pelo Vórtex de ^BG%s^K1%s%s" #: qcsrc/common/notifications/all.inc:537 msgid "^F4You are now alone!" -msgstr "^F4Você está sozinho agora!" +msgstr "^F4Agora estás sozinho!" #: qcsrc/common/notifications/all.inc:539 msgid "^BGYou are attacking!" -msgstr "^BGVocê está atacando!" +msgstr "^BGEstás a atacar!" #: qcsrc/common/notifications/all.inc:540 msgid "^BGYou are defending!" -msgstr "^BGVocê está defendendo!" +msgstr "^BGEstás a defender!" #: qcsrc/common/notifications/all.inc:541 #, c-format @@ -3227,19 +3228,19 @@ msgstr "^F4Começou!" #: qcsrc/common/notifications/all.inc:544 msgid "^F4Game starts in ^COUNT" -msgstr "^F4A partida iniciará em ^COUNT" +msgstr "^F4A partida vai começar em ^COUNT" #: qcsrc/common/notifications/all.inc:545 msgid "^F4Round starts in ^COUNT" -msgstr "^F4A rodada iniciará em ^COUNT" +msgstr "^F4A rodada vai começar em ^COUNT" #: qcsrc/common/notifications/all.inc:546 msgid "^F4Round cannot start" -msgstr "^F4A rodada não pode iniciar" +msgstr "^F4A rodada não pode começar" #: qcsrc/common/notifications/all.inc:551 msgid "^F2Don't camp!" -msgstr "^F2Não campere!" +msgstr "^F2Não acampes!" #: qcsrc/common/notifications/all.inc:555 msgid "" @@ -3247,13 +3248,13 @@ msgid "" "^BGFeel free to ^F2try to capture^BG the flag again\n" "^BGif you think you will succeed." msgstr "" -"^BGVocê está livre agora.\n" -"^BGSinta-se à vontade para ^F2tentar capturar^BG a bandeira de novo\n" -"^BGse você acha que irá conseguir." +"^BGAgora estás livre.\n" +"^BGEstá à vontade para ^F2tentar capturar^BG a bandeira de novo\n" +"^BGse achas que vais conseguir." #: qcsrc/common/notifications/all.inc:556 msgid "^BGThis flag is currently inactive" -msgstr "^BGEsta bandeira está atualmente inativa" +msgstr "^BGEsta bandeira está neste momento inativa" #: qcsrc/common/notifications/all.inc:557 msgid "" @@ -3261,23 +3262,22 @@ msgid "" "^BGfor ^F2too many unsuccessful attempts^BG to capture.\n" "^BGMake some defensive scores before trying again." msgstr "" -"^BGVocê agora está ^F1impedido^BG de carregar a(s) bandeira(s)\n" +"^BGAgora estás ^F1impedido^BG de carregar a(s) bandeira(s)\n" "^BGapós ^F2várias tentativas de captura sem êxito^BG.\n" -"^BGFaça alguns pontos defensivos antes de tentar novamente." +"^BGConsegue alguns pontos defensivos antes de tentares novamente." #: qcsrc/common/notifications/all.inc:558 msgid "^BGYou captured the ^TC^TT^BG flag!" -msgstr "^BGVocê capturou a bandeira ^TC^TT^BG!" +msgstr "^BGCapturaste a bandeira ^TC^TT^BG!" #: qcsrc/common/notifications/all.inc:559 msgid "^BGYou captured the flag!" -msgstr "^BGVocê capturou a bandeira!" +msgstr "^BGCapturaste a bandeira!" #: qcsrc/common/notifications/all.inc:560 #, c-format msgid "^BGToo many flag throws! Throwing disabled for %s." -msgstr "" -"^BGNão largue a bandeira várias vezes! Agora você não pode largar por %s." +msgstr "^BGNão largues a bandeira várias vezes! Agora não podes largar por %s." #: qcsrc/common/notifications/all.inc:561 #, c-format @@ -3292,193 +3292,195 @@ msgstr "^BG%s^BG passou a bandeira para %s" #: qcsrc/common/notifications/all.inc:563 #, c-format msgid "^BGYou received the ^TC^TT^BG flag from %s" -msgstr "^BGVocê recebeu a bandeira ^TC^TT^BG de %s" +msgstr "^BGRecebeste a bandeira ^TC^TT^BG de %s" #: qcsrc/common/notifications/all.inc:564 #, c-format msgid "^BGYou received the flag from %s" -msgstr "^BGVocê recebeu a bandeira de %s" +msgstr "^BGRecebeste a bandeira de %s" #: qcsrc/common/notifications/all.inc:565 #, c-format msgid "^BGPress ^F2%s^BG to receive the flag from %s^BG" -msgstr "^BGAperte ^F2%s^BG para receber a bandeira de %s^BG" +msgstr "^BGPressiona ^F2%s^BG para receber a bandeira de %s^BG" #: qcsrc/common/notifications/all.inc:566 #, c-format msgid "^BGRequesting %s^BG to pass you the flag" -msgstr "^BGPedindo à %s^BG para que te passe a bandeira" +msgstr "^BGA pedir a %s^BG para que te passe a bandeira" #: qcsrc/common/notifications/all.inc:567 #, c-format msgid "^BGYou passed the ^TC^TT^BG flag to %s" -msgstr "^BGVocê passou a bandeira ^TC^TT^BG para %s" +msgstr "^BGPassaste a bandeira ^TC^TT^BG para %s" #: qcsrc/common/notifications/all.inc:568 #, c-format msgid "^BGYou passed the flag to %s" -msgstr "^BGVocê passou a bandeira para %s" +msgstr "^BGPassaste a bandeira para %s" #: qcsrc/common/notifications/all.inc:569 msgid "^BGYou got the ^TC^TT^BG flag!" -msgstr "^BGVocê pegou a bandeira ^TC^TT^BG!" +msgstr "^BGApanhaste a bandeira ^TC^TT^BG!" #: qcsrc/common/notifications/all.inc:570 msgid "^BGYou got the flag!" -msgstr "^BGVocê pegou a bandeira!" +msgstr "^BGApanhaste a bandeira!" #: qcsrc/common/notifications/all.inc:571 #, c-format msgid "^BGYou got your %steam^BG's flag, return it!" -msgstr "^BGVocê pegou a bandeira da sua %sequipe^BG, retorne-a!" +msgstr "^BGApanhaste a bandeira da tua %sequipa^BG, retorna-a!" #: qcsrc/common/notifications/all.inc:572 #, c-format msgid "^BGYou got the %senemy^BG's flag, return it!" -msgstr "^BGVocê pegou a bandeira da %sequipe inimiga^BG, retorne-a!" +msgstr "^BGApanhaste a bandeira da %sequipa inimiga^BG, retorna-a!" #: qcsrc/common/notifications/all.inc:573 #, c-format msgid "^BGThe %senemy^BG got your flag! Retrieve it!" -msgstr "^BGO %sinimigo^BG pegou a sua bandeira! Recupere-a!" +msgstr "^BGO %sinimigo^BG apanhou a tua bandeira! Recupera-a!" #: qcsrc/common/notifications/all.inc:574 #, c-format msgid "^BGThe %senemy (^BG%s%s)^BG got your flag! Retrieve it!" -msgstr "^BGO %sinimigo (^BG%s%s)^BG pegou a sua bandeira! Recupere-a!" +msgstr "^BGO %sinimigo (^BG%s%s)^BG apanhou a tua bandeira! Recupera-a!" #: qcsrc/common/notifications/all.inc:575 #, c-format msgid "^BGThe %senemy^BG got the flag! Retrieve it!" -msgstr "^BGO %sinimigo^BG pegou a bandeira! Recupere-a!" +msgstr "^BGO %sinimigo^BG apanhou a bandeira! Recupera-a!" #: qcsrc/common/notifications/all.inc:576 #, c-format msgid "^BGThe %senemy (^BG%s%s)^BG got the flag! Retrieve it!" -msgstr "^BGO %sinimigo (^BG%s%s)^BG pegou a bandeira! Recupere-a!" +msgstr "^BGO %sinimigo (^BG%s%s)^BG apanhou a bandeira! Recupera-a!" #: qcsrc/common/notifications/all.inc:577 #, c-format msgid "^BGThe %senemy^BG got their flag! Retrieve it!" -msgstr "^BGO %sinimigo^BG pegou a bandeira deles! Recupere-a!" +msgstr "^BGO %sinimigo^BG apanhou a bandeira deles! Recupera-a!" #: qcsrc/common/notifications/all.inc:578 #, c-format msgid "^BGThe %senemy (^BG%s%s)^BG got their flag! Retrieve it!" -msgstr "^BGO %sinimigo (^BG%s%s)^BG pegou a bandeira deles! Recupere-a!" +msgstr "^BGO %sinimigo (^BG%s%s)^BG apanhou a bandeira deles! Recupera-a!" #: qcsrc/common/notifications/all.inc:579 #, c-format msgid "^BGYour %steam mate^BG got the ^TC^TT^BG flag! Protect them!" -msgstr "^BGO seu %scolega de equipe^BG pegou a bandeira ^TC^TT^BG! Proteja-o!" +msgstr "" +"^BGO teu %scolega de equipa^BG apanhou a bandeira ^TC^TT^BG! Protege-o!" #: qcsrc/common/notifications/all.inc:580 #, c-format msgid "^BGYour %steam mate (^BG%s%s)^BG got the ^TC^TT^BG flag! Protect them!" msgstr "" -"^BGO seu %scolega de equipe (^BG%s%s)^BG pegou a bandeira ^TC^TT^BG! Proteja-" -"o!" +"^BGO teu %scolega de equipa (^BG%s%s)^BG apanhou a bandeira ^TC^TT^BG! " +"Protege-o!" #: qcsrc/common/notifications/all.inc:581 #, c-format msgid "^BGYour %steam mate^BG got the flag! Protect them!" -msgstr "^BGO seu %scolega de equipe^BG pegou a bandeira! Proteja-o!" +msgstr "^BGO teu %scolega de equipa^BG apanhou a bandeira! Protege-o!" #: qcsrc/common/notifications/all.inc:582 #, c-format msgid "^BGYour %steam mate (^BG%s%s)^BG got the flag! Protect them!" -msgstr "^BGO seu %scolega de equipe (^BG%s%s)^BG pegou a bandeira! Proteja-o!" +msgstr "" +"^BGO teu %scolega de equipa (^BG%s%s)^BG apanhou a bandeira! Protege-o!" #: qcsrc/common/notifications/all.inc:583 msgid "^BGEnemies can now see you on radar!" -msgstr "^BGAgora os inimigos podem te ver no radar!" +msgstr "^BGAgora os inimigos podem ver-te no radar!" #: qcsrc/common/notifications/all.inc:584 msgid "^BGYou returned the ^TC^TT^BG flag!" -msgstr "^BGVocê retornou a bandeira ^TC^TT^BG!" +msgstr "^BGRetornaste a bandeira ^TC^TT^BG!" #: qcsrc/common/notifications/all.inc:585 msgid "^BGStalemate! Enemies can now see you on radar!" -msgstr "^BGCuidado! Agora os inimigos podem te ver no radar!" +msgstr "^BGCuidado! Agora os inimigos podem ver-te no radar!" #: qcsrc/common/notifications/all.inc:586 msgid "^BGStalemate! Flag carriers can now be seen by enemies on radar!" msgstr "" -"^BGCuidado! Agora portadores da bandeira podem ser vistos pelos inimigos no " -"radar!" +"^BGCuidado! Agora os portadores da bandeira podem ser vistos pelos inimigos " +"no radar!" #: qcsrc/common/notifications/all.inc:590 #, c-format msgid "^K3%sYou fragged ^BG%s" -msgstr "^K3%sVocê executou ^BG%s" +msgstr "^K3%sExecutaste ^BG%s" #: qcsrc/common/notifications/all.inc:591 #: qcsrc/common/notifications/all.inc:600 #: qcsrc/common/notifications/all.inc:609 #, c-format msgid "^K3%sYou scored against ^BG%s" -msgstr "^K3%sVocê pontuou contra ^BG%s" +msgstr "^K3%sPontuaste contra ^BG%s" #: qcsrc/common/notifications/all.inc:592 #, c-format msgid "^K1%sYou were fragged by ^BG%s" -msgstr "^K1%sVocê foi executado por ^BG%s" +msgstr "^K1%sFoste executado por ^BG%s" #: qcsrc/common/notifications/all.inc:593 #: qcsrc/common/notifications/all.inc:602 #: qcsrc/common/notifications/all.inc:611 #, c-format msgid "^K1%sYou were scored against by ^BG%s" -msgstr "^K1%sVocê foi pontuado contra por ^BG%s" +msgstr "^K1%sFoste pontuado contra por ^BG%s" #: qcsrc/common/notifications/all.inc:599 #, c-format msgid "^K3%sYou burned ^BG%s" -msgstr "^K3%sVocê queimou ^BG%s" +msgstr "^K3%sQueimaste ^BG%s" #: qcsrc/common/notifications/all.inc:601 #, c-format msgid "^K1%sYou were burned by ^BG%s" -msgstr "^K1%sVocê foi queimado por ^BG%s" +msgstr "^K1%sFoste queimado por ^BG%s" #: qcsrc/common/notifications/all.inc:608 #, c-format msgid "^K3%sYou froze ^BG%s" -msgstr "^K3%sVocê congelou ^BG%s" +msgstr "^K3%sCongelaste ^BG%s" #: qcsrc/common/notifications/all.inc:610 #, c-format msgid "^K1%sYou were frozen by ^BG%s" -msgstr "^K1%sVocê foi congelado por ^BG%s" +msgstr "^K1%sFoste congelado por ^BG%s" #: qcsrc/common/notifications/all.inc:617 #, c-format msgid "^K1%sYou typefragged ^BG%s" -msgstr "^K1%sVocê executou ^BG%s enquanto digitava" +msgstr "^K1%sExecutaste ^BG%s enquanto escrevias" #: qcsrc/common/notifications/all.inc:618 #, c-format msgid "^K1%sYou scored against ^BG%s^K1 while they were typing" -msgstr "^K1%sVocê pontuou contra ^BG%s^K1 enquanto estavam digitando" +msgstr "^K1%sPontuaste contra ^BG%s^K1 enquanto estavam a escrever" #: qcsrc/common/notifications/all.inc:619 #, c-format msgid "^K1%sYou were typefragged by ^BG%s" -msgstr "^K1%sVocê foi executado enquanto digitava por ^BG%s" +msgstr "^K1%sFoste executado enquanto escrevias por ^BG%s" #: qcsrc/common/notifications/all.inc:620 #, c-format msgid "^K1%sYou were scored against by ^BG%s^K1 while typing" -msgstr "^K1%sVocê foi pontuado contra enquanto digitava por ^BG%s^K1" +msgstr "^K1%sFoste pontuado contra enquanto escrevias por ^BG%s^K1" #: qcsrc/common/notifications/all.inc:626 #, c-format msgid "^BGPress ^F2%s^BG again to toss the nade!" -msgstr "^BGAperte ^F2%s^BG de novo para lançar a granada!" +msgstr "^BGPressiona ^F2%s^BG de novo para lançar a granada!" #: qcsrc/common/notifications/all.inc:627 msgid "^F2You got a ^K1BONUS GRENADE^F2!" -msgstr "^F2Você pegou uma ^K1GRANADA BÔNUS^F2!" +msgstr "^F2Apanhaste uma ^K1GRANADA BÓNUS^F2!" #: qcsrc/common/notifications/all.inc:629 #, c-format @@ -3486,236 +3488,236 @@ msgid "" "^BGYou have been moved into a different team\n" "You are now on: %s" msgstr "" -"^BGVocê foi movido para uma equipe diferente\n" -"Agora você está na equipe: %s" +"^BGFoste movido para uma equipa diferente\n" +"Agora estás na equipa: %s" #: qcsrc/common/notifications/all.inc:630 msgid "^K1Don't go against your team mates!" -msgstr "^K1Não vá contra seus colegas de equipe!" +msgstr "^K1Não vás contra os teus colegas de equipa!" #: qcsrc/common/notifications/all.inc:630 msgid "^K1Don't shoot your team mates!" -msgstr "^K1Não atire nos seus colegas de equipe!" +msgstr "^K1Não atires nos teus colegas de equipa!" #: qcsrc/common/notifications/all.inc:631 msgid "^K1Die camper!" -msgstr "^K1Morra, camper!" +msgstr "^K1Morre campista!" #: qcsrc/common/notifications/all.inc:631 msgid "^K1Reconsider your tactics, camper!" -msgstr "^K1Reconsidere suas táticas, camper!" +msgstr "^K1Reconsidera as tuas táticas, campista!" #: qcsrc/common/notifications/all.inc:632 msgid "^K1You unfairly eliminated yourself!" -msgstr "^K1Você se matou injustamente!" +msgstr "^K1Eliminaste-te injustamente!" #: qcsrc/common/notifications/all.inc:633 #, c-format msgid "^K1You were %s" -msgstr "^K1Você foi %s" +msgstr "^K1Foste %s" #: qcsrc/common/notifications/all.inc:634 msgid "^K1You couldn't catch your breath!" -msgstr "^K1Você não recuperou seu fôlego!" +msgstr "^K1Não recuperaste o fôlego!" #: qcsrc/common/notifications/all.inc:635 msgid "^K1You hit the ground with a crunch!" -msgstr "^K1Você caiu no chão rigorosamente!" +msgstr "^K1Caíste no chão rigorosamente!" #: qcsrc/common/notifications/all.inc:636 msgid "^K1You felt a little too hot!" -msgstr "^K1Você se sentiu um pouco quente!" +msgstr "^K1Sentiste-te um pouco quente!" #: qcsrc/common/notifications/all.inc:636 msgid "^K1You got a little bit too crispy!" -msgstr "^K1Você ficou um pouco crocante demais!" +msgstr "^K1Fiscaste um bocadinho estaladiço!" #: qcsrc/common/notifications/all.inc:637 msgid "^K1You killed your own dumb self!" -msgstr "^K1Você se matou, seu burro!" +msgstr "^K1Mataste-te seu burro!" #: qcsrc/common/notifications/all.inc:637 msgid "^K1You need to be more careful!" -msgstr "^K1Você precisa ter mais cuidado!" +msgstr "^K1tens de ter mais cuidado!" #: qcsrc/common/notifications/all.inc:638 msgid "^K1You couldn't stand the heat!" -msgstr "^K1Você não suportou o calor!" +msgstr "^K1Não suportaste o calor!" #: qcsrc/common/notifications/all.inc:639 msgid "^K1You need to watch out for monsters!" -msgstr "^K1Você tem que se cuidar dos monstros!" +msgstr "^K1Tens de ter um olho nos monstros!" #: qcsrc/common/notifications/all.inc:639 msgid "^K1You were killed by a monster!" -msgstr "^K1Você foi morto por um monstro!" +msgstr "^K1Foste morto por um monstro!" #: qcsrc/common/notifications/all.inc:640 msgid "^K1Tastes like chicken!" -msgstr "^K1Tem gosto de frango!" +msgstr "^K1Sabe a frango!" #: qcsrc/common/notifications/all.inc:640 msgid "^K1You forgot to put the pin back in!" -msgstr "^K1Você se esqueceu de pôr o pino de volta!" +msgstr "^K1Esqueceste-te de tornar a pôr o pino!" #: qcsrc/common/notifications/all.inc:641 msgid "^K1Hanging around a napalm explosion is bad!" -msgstr "^K1Brincar no meio de uma explosão de napalm é errado!" +msgstr "^K1Brincar no meio de uma explosão de napalm é perigoso!" #: qcsrc/common/notifications/all.inc:642 msgid "^K1You felt a little chilly!" -msgstr "^K1Você sentiu um pouco de frio!" +msgstr "^K1Sentiste um pouco de frio!" #: qcsrc/common/notifications/all.inc:642 msgid "^K1You got a little bit too cold!" -msgstr "^K1Você ficou um pouco gelado demais!" +msgstr "^K1Ficaste um pouco gelado!" #: qcsrc/common/notifications/all.inc:643 msgid "^K1Your Healing Nade is a bit defective" -msgstr "^K1Sua Granada de Cura está um pouco defeituosa" +msgstr "^K1A tua Granada de Cura está um pouco defeituosa" #: qcsrc/common/notifications/all.inc:644 msgid "^K1You are respawning for running out of ammo..." -msgstr "^K1Você está ressurgindo por ficar sem munição..." +msgstr "^K1Estás a ressurgir por ficares sem munições..." #: qcsrc/common/notifications/all.inc:644 msgid "^K1You were killed for running out of ammo..." -msgstr "^K1Você foi morto por ficar sem munição..." +msgstr "^K1Foste morto por ficar sem munições..." #: qcsrc/common/notifications/all.inc:645 msgid "^K1You grew too old without taking your medicine" -msgstr "^K1Você ficou muito velho sem tomar o seu medicamento" +msgstr "^K1Ficaste demasiado velho sem tomares o teu medicamento" #: qcsrc/common/notifications/all.inc:645 msgid "^K1You need to preserve your health" -msgstr "^K1Você precisa conservar sua saúde" +msgstr "^K1Tens de conservar a tua saúde" #: qcsrc/common/notifications/all.inc:646 msgid "^K1You became a shooting star!" -msgstr "^K1Você virou uma estrela cadente!" +msgstr "^K1Tornaste-te numa estrela cadente!" #: qcsrc/common/notifications/all.inc:647 msgid "^K1You melted away in slime!" -msgstr "^K1Você derreteu na lama!" +msgstr "^K1Derreteste-te na lama!" #: qcsrc/common/notifications/all.inc:648 msgid "^K1You committed suicide!" -msgstr "^K1Você cometeu suicídio!" +msgstr "^K1Cometeste suicídio!" #: qcsrc/common/notifications/all.inc:648 msgid "^K1You ended it all!" -msgstr "^K1Você acabou com tudo!" +msgstr "^K1Acabaste com tudo!" #: qcsrc/common/notifications/all.inc:649 msgid "^K1You got stuck in a swamp!" -msgstr "^K1Você ficou preso em um pântano!" +msgstr "^K1Ficaste preso num pântano!" #: qcsrc/common/notifications/all.inc:650 #, c-format msgid "^BGYou are now on: %s" -msgstr "^BGVocê está agora em: %s" +msgstr "^BGEstás agora em: %s" #: qcsrc/common/notifications/all.inc:651 msgid "^K1You died in an accident!" -msgstr "^K1Você morreu em um acidente!" +msgstr "^K1Morreste num acidente!" #: qcsrc/common/notifications/all.inc:652 msgid "^K1You had an unfortunate run in with a turret!" -msgstr "^K1Você teve um encontro lamentável com uma sentinela!" +msgstr "^K1Tiveste um encontro lamentável com uma sentinela!" #: qcsrc/common/notifications/all.inc:652 msgid "^K1You were fragged by a turret!" -msgstr "^K1Você foi executado por uma sentinela!" +msgstr "^K1Foste executado por uma sentinela!" #: qcsrc/common/notifications/all.inc:653 msgid "^K1You had an unfortunate run in with an eWheel turret!" -msgstr "^K1Você teve um encontro lamentável com uma sentinela eWheel!" +msgstr "^K1Tiveste um encontro lamentável com uma sentinela eWheel!" #: qcsrc/common/notifications/all.inc:653 msgid "^K1You were fragged by an eWheel turret!" -msgstr "^K1Você foi executado por uma sentinela eWheel!" +msgstr "^K1Foste executado por uma sentinela eWheel!" #: qcsrc/common/notifications/all.inc:654 msgid "^K1You had an unfortunate run in with a Walker turret!" -msgstr "^K1Você teve um encontro lamentável com uma sentinela Walker!" +msgstr "^K1Tiveste um encontro lamentável com uma sentinela Walker!" #: qcsrc/common/notifications/all.inc:654 msgid "^K1You were fragged by a Walker turret!" -msgstr "^K1Você foi executado por uma sentinela Walker!" +msgstr "^K1FOste executado por uma sentinela Walker!" #: qcsrc/common/notifications/all.inc:655 msgid "^K1You got caught in the blast of a Bumblebee explosion!" -msgstr "^K1Você foi pego pelo raio de uma explosão de Bumblebee!" +msgstr "^K1Foste apanhado pelo raio de uma explosão de Bumblebee!" #: qcsrc/common/notifications/all.inc:656 msgid "^K1You were crushed by a vehicle!" -msgstr "^K1Você foi esmagado por um veículo!" +msgstr "^K1Foste esmagado por um veículo!" #: qcsrc/common/notifications/all.inc:657 msgid "^K1You were caught in a Raptor cluster bomb!" -msgstr "^K1Você foi pego por uma bomba Raptor!" +msgstr "^K1Foste apanhado por uma bomba Raptor!" #: qcsrc/common/notifications/all.inc:658 msgid "^K1You got caught in the blast of a Raptor explosion!" -msgstr "^K1Você foi pego no raio de uma explosão de Raptor!" +msgstr "^K1Foste apanhado no raio de uma explosão de Raptor!" #: qcsrc/common/notifications/all.inc:659 msgid "^K1You got caught in the blast of a Spiderbot explosion!" -msgstr "^K1Você foi pego no raio de uma explosão de Spiderbot!" +msgstr "^K1Foste apanhado no raio de uma explosão de Robô Aranha!" #: qcsrc/common/notifications/all.inc:660 msgid "^K1You were blasted to bits by a Spiderbot rocket!" -msgstr "^K1Você foi despedaçado por um foguete de Spiderbot!" +msgstr "^K1Foste despedaçado por um míssil de Robô Aranha!" #: qcsrc/common/notifications/all.inc:661 msgid "^K1You got caught in the blast of a Racer explosion!" -msgstr "^K1Você foi pego no raio de uma explosão de Racer!" +msgstr "^K1Foste apanhado no raio de uma explosão de Racer!" #: qcsrc/common/notifications/all.inc:662 msgid "^K1You couldn't find shelter from a Racer rocket!" -msgstr "^K1Você não conseguiu escapar do foguete de um Racer!" +msgstr "^K1Não conseguiste escapar do míssil de um Racer!" #: qcsrc/common/notifications/all.inc:663 msgid "^K1Watch your step!" -msgstr "^K1Cuidado onde pisa!" +msgstr "^K1Cuidado com o que pisas!" #: qcsrc/common/notifications/all.inc:665 #, c-format msgid "^K1Moron! You fragged ^BG%s^K1, a team mate!" -msgstr "^K1Idiota! Você executou ^BG%s^K1, um colega de equipe!" +msgstr "^K1Idiota! Executaste ^BG%s^K1, um colega de equipa!" #: qcsrc/common/notifications/all.inc:665 #, c-format msgid "^K1Moron! You went against ^BG%s^K1, a team mate!" -msgstr "^K1Idiota! Você foi contra ^BG%s^K1, um colega de equipe!" +msgstr "^K1Idiota! Foste contra ^BG%s^K1, um colega de equipa!" #: qcsrc/common/notifications/all.inc:666 #, c-format msgid "^K1You were fragged by ^BG%s^K1, a team mate" -msgstr "^K1Você foi executado por ^BG%s^K1, um colega de equipe" +msgstr "^K1Foste executado por ^BG%s^K1, um colega de equipa" #: qcsrc/common/notifications/all.inc:666 #, c-format msgid "^K1You were scored against by ^BG%s^K1, a team mate" -msgstr "^K1Você foi pontuado contra por ^BG%s^K1, um colega de equipe" +msgstr "^K1Foste pontuado contra por ^BG%s^K1, um colega de equipa" #: qcsrc/common/notifications/all.inc:668 msgid "" "^K1Stop idling!\n" "^BGDisconnecting in ^COUNT..." msgstr "" -"^K1Pare de ficar AFK!\n" -"^BGDesconectando em ^COUNT..." +"^K1Para de ficar parado!\n" +"^BGA desconectar em ^COUNT..." #: qcsrc/common/notifications/all.inc:670 #, c-format msgid "^BGYou need %s^BG!" -msgstr "^BGVocê precisa %s^BG!" +msgstr "^BGPrecisas de %s^BG!" #: qcsrc/common/notifications/all.inc:671 #, c-format msgid "^BGYou also need %s^BG!" -msgstr "^BGVocê também precisa %s^BG!" +msgstr "^BGTambém precisas de %s^BG!" #: qcsrc/common/notifications/all.inc:672 msgid "^BGDoor unlocked!" @@ -3723,42 +3725,42 @@ msgstr "^BGPorta destrancada!" #: qcsrc/common/notifications/all.inc:674 msgid "^F2You picked up some extra lives" -msgstr "^F2Você pegou algumas vidas extras" +msgstr "^F2Apanhaste algumas vidas extra" #: qcsrc/common/notifications/all.inc:676 #, c-format msgid "^K3You revived ^BG%s" -msgstr "^K3Você ressuscitou ^BG%s" +msgstr "^K3Ressuscitaste ^BG%s" #: qcsrc/common/notifications/all.inc:677 msgid "^K3You revived yourself" -msgstr "^K3Você se ressuscitou" +msgstr "^K3Ressuscitaste-te" #: qcsrc/common/notifications/all.inc:678 #, c-format msgid "^K3You were revived by ^BG%s" -msgstr "^K3Você foi ressuscitado por ^BG%s" +msgstr "^K3Foste ressuscitado por ^BG%s" #: qcsrc/common/notifications/all.inc:679 #, c-format msgid "^K3You were automatically revived after %s second(s)" -msgstr "^K3Você foi automaticamente ressuscitado após %s segundo(s)" +msgstr "^K3Foste automaticamente ressuscitado após %s segundo(s)" #: qcsrc/common/notifications/all.inc:681 msgid "^BGThe generator is under attack!" -msgstr "^BGO gerador está sobre ataque!" +msgstr "^BGO gerador está a ser atacado!" #: qcsrc/common/notifications/all.inc:683 msgid "^TC^TT^BG team loses the round" -msgstr "A equipe ^TC^TT^BG perdeu a rodada" +msgstr "A equipa ^TC^TT^BG perdeu a rodada" #: qcsrc/common/notifications/all.inc:687 msgid "^K1You froze yourself" -msgstr "^K1Você se congelou" +msgstr "^K1Congelaste-te" #: qcsrc/common/notifications/all.inc:688 msgid "^K1Round already started, you spawn as frozen" -msgstr "^K1A rodada já começou, você surgiu congelado" +msgstr "^K1A rodada já começou, surgiste congelado" #: qcsrc/common/notifications/all.inc:690 #, c-format @@ -3767,11 +3769,11 @@ msgstr "^K1Um %s chegou!" #: qcsrc/common/notifications/all.inc:694 msgid "^BGYou got the ^F1Fuel regenerator" -msgstr "^BGVocê pegou o ^F1Regenerador de combustível" +msgstr "^BGApanhaste o ^F1Regenerador de combustível" #: qcsrc/common/notifications/all.inc:695 msgid "^BGYou got the ^F1Jet pack" -msgstr "^BGVocê pegou a ^F1Mochila a Jato" +msgstr "^BGApanhaste a ^F1Mochila a Jato" #: qcsrc/common/notifications/all.inc:703 msgid "" @@ -3779,64 +3781,63 @@ msgid "" "Hope your team can fix it..." msgstr "" "^K1Não há pontos de surgimento disponíveis!\n" -"Tomara que sua equipe consiga consertar isso..." +"Oxalá que a tua equipa consiga corrigir isso..." #: qcsrc/common/notifications/all.inc:704 msgid "" "^K1You may not join the game at this time.\n" "The player limit reached maximum capacity." msgstr "" -"^K1Você não pode entrar no jogo neste momento.\n" -"A capacidade máxima de jogadores foi alcançada." +"^K1Não podes entrar no jogo neste momento.\n" +"A capacidade máxima de jogadores foi atingida." #: qcsrc/common/notifications/all.inc:708 msgid "^BGYou picked up the ball" -msgstr "^BGVocê pegou a bola" +msgstr "^BGApanhaste a bola" #: qcsrc/common/notifications/all.inc:709 msgid "^BGKilling people while you don't have the ball gives no points!" -msgstr "^BGMatar os outros enquanto você não tiver a bola não lhe dará pontos!" +msgstr "^BGMatar os outros enquanto não tiveres a bola não ganharás pontos!" #: qcsrc/common/notifications/all.inc:711 msgid "" "^BGAll keys are in your team's hands!\n" "Help the key carriers to meet!" msgstr "" -"^BGTodas as chaves estão com a sua equipe!\n" -"Ajude os portadores das chaves a se encontrarem!" +"^BGTodas as chaves estão com a tua equipa!\n" +"Ajuda os portadores das chaves a encontrarem-se!" #: qcsrc/common/notifications/all.inc:712 msgid "" "^BGAll keys are in ^TC^TT team^BG's hands!\n" "Interfere ^F4NOW^BG!" msgstr "" -"^BGTodas as chaves estão com a equipe ^TC^TT^BG!\n" -"Interfira ^F4AGORA^BG!" +"^BGTodas as chaves estão com a equipa ^TC^TT^BG!\n" +"Interfere ^F4AGORA^BG!" #: qcsrc/common/notifications/all.inc:713 msgid "" "^BGAll keys are in your team's hands!\n" "Meet the other key carriers ^F4NOW^BG!" msgstr "" -"^BGTodas as chaves estão com a sua equipe!\n" -"Encontre-se com os outros portadores das chaves ^F4AGORA^BG!" +"^BGTodas as chaves estão com a tua equipa!\n" +"Encontra-te com os outros portadores das chaves ^F4AGORA^BG!" #: qcsrc/common/notifications/all.inc:714 msgid "^F4Round will start in ^COUNT" -msgstr "^F4A rodada iniciará em ^COUNT" +msgstr "^F4A rodada vai começar dentro de ^COUNT" #: qcsrc/common/notifications/all.inc:715 msgid "^BGScanning frequency range..." -msgstr "^BGEscaneando alcance de frequência..." +msgstr "^BGA varrer o alcance de frequência..." #: qcsrc/common/notifications/all.inc:716 msgid "^BGYou are starting with the ^TC^TT Key" -msgstr "^BGVocê está começando com a Chave ^TC^TT" +msgstr "^BGEstás a começar com a Chave ^TC^TT" #: qcsrc/common/notifications/all.inc:718 msgid "^BGYou have no lives left, you must wait until the next match" -msgstr "" -"^BGVocê não tem vidas sobrando, você terá que aguardar até a próxima partida" +msgstr "^BGNão tens mais vidas, terás que esperar até à próxima partida" #: qcsrc/common/notifications/all.inc:720 #, c-format @@ -3844,29 +3845,29 @@ msgid "" "^BGWaiting for players to join...\n" "Need active players for: %s" msgstr "" -"^BGEsperando jogadores entrarem...\n" +"^BGà espera que os outros jogadores entrem...\n" "Precisa-se de jogadores ativos para: %s" #: qcsrc/common/notifications/all.inc:721 #, c-format msgid "^BGWaiting for %s player(s) to join..." -msgstr "^BGEsperando %s jogador(es) entrar(em)..." +msgstr "^BGÀ espera de %s jogador(es) para entrar(em)..." #: qcsrc/common/notifications/all.inc:723 msgid "^BGYour weapon has been downgraded until you find some ammo!" -msgstr "^BGA sua arma foi rebaixada até que você encontre alguma munição!" +msgstr "^BGA tua arma foi rebaixada até que encontres munições!" #: qcsrc/common/notifications/all.inc:724 msgid "^F4^COUNT^BG left to find some ammo!" -msgstr "^F4^COUNT^BG restante(s) para encontrar alguma munição!" +msgstr "^F4^COUNT^BG restante(s) para encontrares algumas munições!" #: qcsrc/common/notifications/all.inc:725 msgid "^BGGet some ammo or you'll be dead in ^F4^COUNT^BG!" -msgstr "^BGEncontre alguma munição ou você morrerá em ^F4^COUNT^BG!" +msgstr "^BGEncontra algumas munições ou morrerás em ^F4^COUNT^BG!" #: qcsrc/common/notifications/all.inc:725 msgid "^BGGet some ammo! ^F4^COUNT^BG left!" -msgstr "^BGEncontre alguma munição! Falta ^F4^COUNT^BG!" +msgstr "^BGEncontra algumas munições! Falta ^F4^COUNT^BG!" #: qcsrc/common/notifications/all.inc:726 #, c-format @@ -3879,7 +3880,7 @@ msgid "" "^F2^COUNT^BG until weapon change...\n" "Next weapon: ^F1%s" msgstr "" -"^F2^CONTAGEM^BG até a mudança de arma...\n" +"^F2^CONTAGEM^BG até à mudança de arma...\n" "Próxima arma: ^F1%s" #: qcsrc/common/notifications/all.inc:731 @@ -3890,16 +3891,16 @@ msgstr "^F2Arma ativa: ^F1%s" #: qcsrc/common/notifications/all.inc:733 #, c-format msgid "^BGYou captured %s^BG control point" -msgstr "^BGVocê capturou o ponto de controle %s^BG" +msgstr "^BGCapturaste o ponto de controlo %s^BG" #: qcsrc/common/notifications/all.inc:734 #, c-format msgid "^TC^TT^BG team captured %s^BG control point" -msgstr "A equipe ^TC^TT^BG capturou o ponto de controle %s^BG" +msgstr "A equipa ^TC^TT^BG capturou o ponto de controlo %s^BG" #: qcsrc/common/notifications/all.inc:735 msgid "^BGThis control point currently cannot be captured" -msgstr "^BGEste ponto de controle atualmente não pode ser capturado" +msgstr "^BGEste ponto de controlo não pode ser capturado neste momento" #: qcsrc/common/notifications/all.inc:736 msgid "" @@ -3907,7 +3908,7 @@ msgid "" "^F2Capture some control points to unshield it" msgstr "" "^BGO gerador inimigo ainda não pode ser destruído\n" -"^F2Capture alguns pontos de controle para desprotegê-lo" +"^F2Captura alguns pontos de controlo para desprotegê-lo" #: qcsrc/common/notifications/all.inc:737 msgid "^BGThe ^TCenemy^BG generator is no longer shielded!" @@ -3918,34 +3919,34 @@ msgid "" "^K1Your generator is NOT shielded!\n" "^BGRe-capture control points to shield it!" msgstr "" -"^K1O seu gerador NÃO está blindado!\n" -"^BGRecapture pontos de controle para blindá-lo!" +"^K1O teu gerador NÃO está blindado!\n" +"^BGRecaptura pontos de controlo para blindá-lo!" #: qcsrc/common/notifications/all.inc:739 #, c-format msgid "^BGPress ^F2%s^BG to teleport" -msgstr "^BGAperte ^F2%s^BG para se teletransportar" +msgstr "^BGPressiona ^F2%s^BG para te teletransportares" #: qcsrc/common/notifications/all.inc:740 #, c-format msgid "^BGTeleporting disabled for %s" -msgstr "^BGTeletransporte desabilitado para %s" +msgstr "^BGTeletransporte desativado para %s" #: qcsrc/common/notifications/all.inc:742 msgid "" "^F2Now playing ^F4OVERTIME^F2!\n" "Keep fragging until we have a winner!" msgstr "" -"^F2Jogando agora nos ^F4ACRÉSCIMOS^F2!\n" -"Continue executando até que tenhamos um vencedor!" +"^F2A jogar agora nos ^F4ACRÉSCIMOS^F2!\n" +"Continua a executar até que tenhamos um vencedor!" #: qcsrc/common/notifications/all.inc:742 msgid "" "^F2Now playing ^F4OVERTIME^F2!\n" "Keep scoring until we have a winner!" msgstr "" -"^F2Jogando agora nos ^F4ACRÉSCIMOS^F2!\n" -"Continue pontuando até que tenhamos um vencedor!" +"^A jogar agora nos ^F4ACRÉSCIMOS^F2!\n" +"Continua a pontuar até que tenhamos um vencedor!" #: qcsrc/common/notifications/all.inc:743 msgid "" @@ -3955,10 +3956,10 @@ msgid "" "The more control points your team holds,\n" "the faster the enemy generator decays" msgstr "" -"^F2Jogando agora nos ^F4ACRÉSCIMOS^F2!\n" +"^F2A jogar agora nos ^F4ACRÉSCIMOS^F2!\n" "\n" -"Os geradores estão enfraquecendo agora.\n" -"Quanto mais pontos de controle a sua equipe tiver,\n" +"Os geradores estão agora a enfraquecer.\n" +"Quanto mais pontos de controlo a sua equipa tiver,\n" "mais rápido o gerador inimigo enfraquecerá" #: qcsrc/common/notifications/all.inc:744 @@ -3967,68 +3968,68 @@ msgid "" "^F2Now playing ^F4OVERTIME^F2!\n" "^BGAdded ^F4%s^BG to the game!" msgstr "" -"^F2Jogando agora nos ^F4ACRÉSCIMOS^F2!\n" -"^BGAdicionado ^F4%s^BG à partida!" +"^F2A jogar agora nos ^F4ACRÉSCIMOS^F2!\n" +"^BGFoi adicionado ^F4%s^BG ao jogo!" #: qcsrc/common/notifications/all.inc:746 msgid "^K1In^BG-portal created" -msgstr "^K1^BGPortal de entrada criado" +msgstr "^K1^BGCriado portal de entrada" #: qcsrc/common/notifications/all.inc:747 msgid "^F3Out^BG-portal created" -msgstr "^F3^BGPortal de saída criado" +msgstr "^F3^BGCriado portal de saída" #: qcsrc/common/notifications/all.inc:748 msgid "^F1Portal creation failed" -msgstr "^F1Falha ao criar portal" +msgstr "^F1Falha ao criar o portal" #: qcsrc/common/notifications/all.inc:750 msgid "^F2Strength infuses your weapons with devastating power" -msgstr "^F2A Força deixou suas armas com um poder devastador" +msgstr "^F2A Força deixou as tuas armas com um poder devastador" #: qcsrc/common/notifications/all.inc:751 msgid "^F2Strength has worn off" -msgstr "^F2A Força se esgotou" +msgstr "^F2A Força esgotou-se" #: qcsrc/common/notifications/all.inc:753 msgid "^F2Shield surrounds you" -msgstr "^F2O Escudo te cerca" +msgstr "^F2O Escudo envolve-te" #: qcsrc/common/notifications/all.inc:754 msgid "^F2Shield has worn off" -msgstr "^F2O Escudo se esgotou" +msgstr "^F2O Escudo esgotou-se" #: qcsrc/common/notifications/all.inc:756 msgid "^F2You are on speed" -msgstr "^F2Você tem a velocidade" +msgstr "^F2Tens a velocidade" #: qcsrc/common/notifications/all.inc:757 msgid "^F2Speed has worn off" -msgstr "^F2A Velocidade se esgotou" +msgstr "^F2A Velocidade esgotou-se" #: qcsrc/common/notifications/all.inc:759 msgid "^F2You are invisible" -msgstr "^F2Você está invisível" +msgstr "^F2Estás invisível" #: qcsrc/common/notifications/all.inc:760 msgid "^F2Invisibility has worn off" -msgstr "^F2A Invisibilidade se esgotou" +msgstr "^F2A Invisibilidade esgotou-se" #: qcsrc/common/notifications/all.inc:762 msgid "^F2The race is over, finish your lap!" -msgstr "^F2A corrida acabou, termine sua volta!" +msgstr "^F2A corrida acabou, termina a tua volta!" #: qcsrc/common/notifications/all.inc:764 msgid "^BGSecondary fire inflicts no damage!" -msgstr "^BGModo de disparo secundário não causa dano!" +msgstr "^BGO modo de disparo secundário não causa dano!" #: qcsrc/common/notifications/all.inc:766 msgid "^BGSequence completed!" -msgstr "^BGSequência completada!" +msgstr "^BGSequência completa!" #: qcsrc/common/notifications/all.inc:767 msgid "^BGThere are more to go..." -msgstr "^BGAinda tem mais..." +msgstr "^BGAinda há mais..." #: qcsrc/common/notifications/all.inc:768 #, c-format @@ -4037,7 +4038,7 @@ msgstr "^BGSó falta(m) %s^BG..." #: qcsrc/common/notifications/all.inc:770 msgid "^F2Superweapons have broken down" -msgstr "^F2As Superarmas quebraram" +msgstr "^F2As Superarmas estão partidas" #: qcsrc/common/notifications/all.inc:771 msgid "^F2Superweapons have been lost" @@ -4045,67 +4046,67 @@ msgstr "^F2As Superarmas foram perdidas" #: qcsrc/common/notifications/all.inc:772 msgid "^F2You now have a superweapon" -msgstr "^F2Agora você tem uma Superarma" +msgstr "^F2Agora tens uma Superarma" #: qcsrc/common/notifications/all.inc:774 msgid "^K1Changing to ^TC^TT^K1 in ^COUNT" -msgstr "^K1Trocando para ^TC^TT^K1 em ^COUNT" +msgstr "^K1A trocar para ^TC^TT^K1 em ^COUNT" #: qcsrc/common/notifications/all.inc:775 msgid "^K1Changing team in ^COUNT" -msgstr "^K1Trocando de equipe em ^COUNT" +msgstr "^K1A trocar de equipa em ^COUNT" #: qcsrc/common/notifications/all.inc:776 msgid "^K1Spectating in ^COUNT" -msgstr "^K1Trocando para espectador em ^COUNT" +msgstr "^K1A trocar para espetador em ^COUNT" #: qcsrc/common/notifications/all.inc:777 msgid "^K1Suicide in ^COUNT" -msgstr "^K1Cometendo suicídio em ^COUNT" +msgstr "^K1A cometer suicídio em ^COUNT" #: qcsrc/common/notifications/all.inc:779 msgid "^F4Timeout begins in ^COUNT" -msgstr "^F4Pausa iniciará em ^COUNT" +msgstr "^F4A pausa começa em ^COUNT" #: qcsrc/common/notifications/all.inc:780 msgid "^F4Timeout ends in ^COUNT" -msgstr "^F4Pausa acabará em ^COUNT" +msgstr "^F4A pausa termina em ^COUNT" #: qcsrc/common/notifications/all.inc:782 msgid "^K1Cannot join given minigame session!" -msgstr "^K1Não foi possível entrar na sessão de mini jogo fornecida!" +msgstr "^K1Não foi possível entrar na sessão de mini-jogo!" #: qcsrc/common/notifications/all.inc:784 #, c-format msgid "^BGPress ^F2%s^BG to enter/exit the vehicle" -msgstr "^BGAperte ^F2%s^BG para entrar/sair do veículo" +msgstr "^BGPressiona ^F2%s^BG para entrar/sair do veículo" #: qcsrc/common/notifications/all.inc:785 #, c-format msgid "^BGPress ^F2%s^BG to enter the vehicle gunner" -msgstr "^BGAperte ^F2%s^BG para usar a arma do veículo" +msgstr "^BGPressiona ^F2%s^BG para usar a arma do veículo" #: qcsrc/common/notifications/all.inc:786 #, c-format msgid "^BGPress ^F2%s^BG to steal this vehicle" -msgstr "^BGAperte ^F2%s^BG para roubar este veículo" +msgstr "^BGPressiona ^F2%s^BG para roubar este veículo" #: qcsrc/common/notifications/all.inc:787 msgid "" "^F2The enemy is stealing one of your vehicles!\n" "^F4Stop them!" msgstr "" -"^F2O inimigo está roubando um de seus veículos!\n" -"^F4Impeça-os!" +"^F2O inimigo está a roubar um dos teus veículos!\n" +"^F4Impede-os!" #: qcsrc/common/notifications/all.inc:788 msgid "^F2Intruder detected, disabling shields!" -msgstr "^F2Intruso detectado, desativando escudos!" +msgstr "^F2Intruso detetado, a desativar escudos!" #: qcsrc/common/notifications/all.qh:188 msgid "Notification dump command only works with cl_cmd and sv_cmd.\n" msgstr "" -"Comando de despejo de notificação funciona apenas com cl_cmd e sv_cmd.\n" +"O comando de notificação despejo funciona apenas com cl_cmd e sv_cmd.\n" #: qcsrc/common/notifications/all.qh:399 qcsrc/common/notifications/all.qh:400 #, c-format @@ -4134,7 +4135,7 @@ msgstr "largar bandeira" #: qcsrc/common/notifications/all.qh:420 msgid "throw nade" -msgstr "arremessar granada" +msgstr "atirar granada" #: qcsrc/common/notifications/all.qh:431 #, c-format @@ -4186,7 +4187,7 @@ msgstr "MASSACRE! " #: qcsrc/common/notifications/all.qh:447 #, c-format msgid "%s^K1 executed MAYHEM! %s^BG" -msgstr "%s^K1 executou uma MUTILAÇÃO! %s^BG" +msgstr "%s^K1 fez uma MUTILAÇÃO! %s^BG" #: qcsrc/common/notifications/all.qh:447 #, c-format @@ -4214,7 +4215,7 @@ msgstr "FURIOSO!" #: qcsrc/common/notifications/all.qh:449 #, c-format msgid "%s^K1 inflicts CARNAGE! %s^BG" -msgstr "%s^K1 está infligindo CARNIFICINA! %s^BG" +msgstr "%s^K1 está a infligir uma CARNIFICINA! %s^BG" #: qcsrc/common/notifications/all.qh:449 #, c-format @@ -4233,11 +4234,11 @@ msgstr "%s^K1 fez TRINTA PONTUAÇÕES SEGUIDAS! %s^BG" #: qcsrc/common/notifications/all.qh:450 #, c-format msgid "%s^K1 unleashes ARMAGEDDON! %s^BG" -msgstr "%s^K1 desencadeou o ARMAGEDOM! %s^BG" +msgstr "%s^K1 desencadeou o Fim do Mundo! %s^BG" #: qcsrc/common/notifications/all.qh:450 msgid "ARMAGEDDON! " -msgstr "ARMAGEDDON! " +msgstr "Fim do Mundo! " #: qcsrc/common/notifications/all.qh:457 #, c-format @@ -4256,7 +4257,7 @@ msgid "" "(Health ^1%d^BG / Armor ^2%d^BG)%s" msgstr "" "\n" -"(Saúde ^1%d^BG / Armadura ^2%d^BG)%s" +"(Vida ^1%d^BG / Armadura ^2%d^BG)%s" #: qcsrc/common/notifications/all.qh:468 #, c-format @@ -4316,22 +4317,22 @@ msgstr "%s^K1 foi o primeiro a pontuar! %s^BG" #: qcsrc/common/notifications/all.qh:595 #, c-format msgid ", ending their %d frag spree" -msgstr ", finalizando sua cadeia de %d execuções" +msgstr ", a finalizar a sua cadeia de %d execuções" #: qcsrc/common/notifications/all.qh:596 #, c-format msgid ", ending their %d score spree" -msgstr ", finalizando sua cadeia de %d pontuações" +msgstr ", a finalizar a sua cadeia de %d pontuações" #: qcsrc/common/notifications/all.qh:610 #, c-format msgid ", losing their %d frag spree" -msgstr ", perdendo sua cadeia de %d execuções" +msgstr ", a perder a sua cadeia de %d execuções" #: qcsrc/common/notifications/all.qh:611 #, c-format msgid ", losing their %d score spree" -msgstr ", perdendo sua cadeia de %d pontuações" +msgstr ", a perder a sua cadeia de %d pontuações" #: qcsrc/common/teams.qh:29 msgid "TEAM^Red" @@ -4351,7 +4352,7 @@ msgstr "Rosa" #: qcsrc/common/teams.qh:33 msgid "Team" -msgstr "Equipe" +msgstr "Equipa" #: qcsrc/common/teams.qh:34 msgid "Neutral" @@ -4412,7 +4413,7 @@ msgstr "O comando de despejo de sentinelas funciona apenas com sv_cmd.\n" #: qcsrc/common/turrets/cl_turrets.qc:129 #, c-format msgid "%s under attack!" -msgstr "%s sobre ataque!" +msgstr "%s sob ataque!" #: qcsrc/common/turrets/turret.qh:11 msgid "Turret" @@ -4452,7 +4453,7 @@ msgstr "Sentinela Hunter-Killer" #: qcsrc/common/turrets/turret/hk_weapon.qh:7 msgid "Hunter-Killer" -msgstr "Hunter-Killer" +msgstr "" #: qcsrc/common/turrets/turret/machinegun.qh:13 msgid "Machinegun Turret" @@ -4476,7 +4477,7 @@ msgstr "Canhão Phaser" #: qcsrc/common/turrets/turret/phaser_weapon.qh:7 msgid "Phaser" -msgstr "Phaser" +msgstr "" #: qcsrc/common/turrets/turret/plasma.qh:13 msgid "Plasma Cannon" @@ -4510,23 +4511,23 @@ msgstr "Walker" #: qcsrc/common/vehicles/cl_vehicles.qc:192 #, c-format msgid "Press %s" -msgstr "Aperte %s" +msgstr "Pressiona %s" #: qcsrc/common/vehicles/vehicle/bumblebee.qc:950 msgid "No right gunner!" -msgstr "Sem artilheiro na direita!" +msgstr "Sem artilheiro à direita!" #: qcsrc/common/vehicles/vehicle/bumblebee.qc:956 msgid "No left gunner!" -msgstr "Sem artilheiro na esquerda!" +msgstr "Sem artilheiro à esquerda!" #: qcsrc/common/vehicles/vehicle/bumblebee.qh:19 msgid "Bumblebee" -msgstr "Bumblebee" +msgstr "" #: qcsrc/common/vehicles/vehicle/racer.qh:19 msgid "Racer" -msgstr "Racer" +msgstr "" #: qcsrc/common/vehicles/vehicle/racer_weapon.qh:9 msgid "Racer cannon" @@ -4550,7 +4551,7 @@ msgstr "Chama de Raptor" #: qcsrc/common/vehicles/vehicle/spiderbot.qh:19 msgid "Spiderbot" -msgstr "Spiderbot" +msgstr "Robô Aranha" #: qcsrc/common/weapons/all.qh:78 msgid "Weapons dump command only works with sv_cmd.\n" @@ -4578,7 +4579,7 @@ msgstr "Electro" #: qcsrc/common/weapons/weapon/fireball.qc:17 msgid "Fireball" -msgstr "Fireball" +msgstr "Bola de Fogo" #: qcsrc/common/weapons/weapon/hagar.qc:17 msgid "Hagar" @@ -4586,23 +4587,23 @@ msgstr "Hagar" #: qcsrc/common/weapons/weapon/hlac.qc:17 msgid "Heavy Laser Assault Cannon" -msgstr "Heavy Laser Assault Cannon" +msgstr "Canhão de Assalto a Laser Pesado" #: qcsrc/common/weapons/weapon/hook.qc:17 msgid "Grappling Hook" -msgstr "Gancho (grappling hook)" +msgstr "Gancho" #: qcsrc/common/weapons/weapon/machinegun.qc:17 msgid "MachineGun" -msgstr "MachineGun" +msgstr "Metralhadora" #: qcsrc/common/weapons/weapon/minelayer.qc:17 msgid "Mine Layer" -msgstr "Mine Layer" +msgstr "Porta Minas" #: qcsrc/common/weapons/weapon/mortar.qc:17 msgid "Mortar" -msgstr "Mortar" +msgstr "Morteiro" #: qcsrc/common/weapons/weapon/porto.qc:17 msgid "Port-O-Launch" @@ -4610,7 +4611,7 @@ msgstr "Port-O-Launch" #: qcsrc/common/weapons/weapon/rifle.qc:18 msgid "Rifle" -msgstr "Rifle" +msgstr "Espingarda" #: qcsrc/common/weapons/weapon/seeker.qc:17 msgid "T.A.G. Seeker" @@ -4618,11 +4619,11 @@ msgstr "T.A.G. Seeker" #: qcsrc/common/weapons/weapon/shockwave.qc:17 msgid "Shockwave" -msgstr "Shockwave" +msgstr "Onda de Choque" #: qcsrc/common/weapons/weapon/shotgun.qc:17 msgid "Shotgun" -msgstr "Shotgun" +msgstr "Caçadeira" #: qcsrc/common/weapons/weapon/tuba.qc:17 #, no-c-format @@ -4631,11 +4632,11 @@ msgstr "@!#%'n Tuba" #: qcsrc/common/weapons/weapon/vaporizer.qc:18 msgid "Vaporizer" -msgstr "Vaporizer" +msgstr "Vaporizador" #: qcsrc/common/weapons/weapon/vortex.qc:18 msgid "Vortex" -msgstr "Vortex" +msgstr "Vórtex" #: qcsrc/lib/counting.qh:9 #, c-format @@ -4847,8 +4848,8 @@ msgid "" "Entity field %s.%s (%s) is not whitelisted. If you believe this is an error, " "please file an issue." msgstr "" -"Campo de entidade %s.%s (%s) não está na lista branca. Se você acredita que " -"isso é um erro, por favor, reporte-o." +"O campo de entidade %s.%s (%s) não está na lista branca. Se achas que é um " +"erro, por favor, reporta-o." #: qcsrc/lib/string.qh:48 #, c-format @@ -4862,7 +4863,7 @@ msgstr "%02d:%02d:%02d" #: qcsrc/menu/command/menu_cmd.qc:48 msgid "Usage: menu_cmd command..., where possible commands are:\n" -msgstr "Uso: comando menu_cmd..., onde os possíveis comandos são:\n" +msgstr "Uso: comando menu_cmd..., onde os comandos possíveis são:\n" #: qcsrc/menu/command/menu_cmd.qc:49 msgid " sync - reloads all cvars on the current menu page\n" @@ -4870,7 +4871,7 @@ msgstr " sync - recarrega todas as cvars no menu atual\n" #: qcsrc/menu/command/menu_cmd.qc:50 msgid " directmenu ITEM - select a menu item as main item\n" -msgstr " directmenu ITEM - seleciona um item do menu como principal\n" +msgstr " directmenu ITEM - seleciona um item do menu como item principal\n" #: qcsrc/menu/command/menu_cmd.qc:79 msgid "Available options:\n" @@ -4879,7 +4880,7 @@ msgstr "Opções disponíveis:\n" #: qcsrc/menu/command/menu_cmd.qc:128 msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" msgstr "" -"Comando inválido. Para uma lista de comandos suportados, digite menu_cmd " +"Comando inválido. Para uma lista de comandos suportados, digita menu_cmd " "help.\n" #: qcsrc/menu/item/listbox.qc:415 @@ -4901,11 +4902,11 @@ msgstr "Nível %d: %s" #: qcsrc/menu/xonotic/credits.qc:4 msgid "Core Team" -msgstr "Equipe Principal" +msgstr "Equipa Principal" #: qcsrc/menu/xonotic/credits.qc:16 msgid "Extended Team" -msgstr "Equipe Estendida" +msgstr "Equipa Estendida" #: qcsrc/menu/xonotic/credits.qc:48 msgid "Website" @@ -4925,7 +4926,7 @@ msgstr "Animação" #: qcsrc/menu/xonotic/credits.qc:69 msgid "Level Design" -msgstr "Design de Mapas" +msgstr "Design de Níveis" #: qcsrc/menu/xonotic/credits.qc:92 msgid "Music / Sound FX" @@ -4933,7 +4934,7 @@ msgstr "Música / Efeitos de Som" #: qcsrc/menu/xonotic/credits.qc:108 msgid "Game Code" -msgstr "Codificação de Jogo" +msgstr "Codificação do Jogo" #: qcsrc/menu/xonotic/credits.qc:116 msgid "Marketing / PR" @@ -4945,7 +4946,7 @@ msgstr "Assuntos Legais" #: qcsrc/menu/xonotic/credits.qc:127 msgid "Game Engine" -msgstr "Motor de Jogo" +msgstr "Motor do Jogo" #: qcsrc/menu/xonotic/credits.qc:131 msgid "Engine Additions" @@ -4969,7 +4970,7 @@ msgstr "Asturiano" #: qcsrc/menu/xonotic/credits.qc:156 msgid "Belarusian" -msgstr "Bielorusso" +msgstr "Bielorrusso" #: qcsrc/menu/xonotic/credits.qc:159 msgid "Bulgarian" @@ -4989,7 +4990,7 @@ msgstr "Córnico" #: qcsrc/menu/xonotic/credits.qc:180 msgid "Czech" -msgstr "Tcheco" +msgstr "Checo" #: qcsrc/menu/xonotic/credits.qc:185 msgid "Dutch" @@ -5037,7 +5038,7 @@ msgstr "Coreano" #: qcsrc/menu/xonotic/credits.qc:247 msgid "Polish" -msgstr "Polônes " +msgstr "Polaco" #: qcsrc/menu/xonotic/credits.qc:255 msgid "Portuguese" @@ -5073,19 +5074,19 @@ msgstr "Ucraniano" #: qcsrc/menu/xonotic/credits.qc:310 msgid "Past Contributors" -msgstr "Colaboradores Passados" +msgstr "Colaboradores Anteriores" #: qcsrc/menu/xonotic/cvarlist.qc:73 msgid "forced to be saved to config.cfg" -msgstr "forçado a ser salvo em config.cfg" +msgstr "forçado a ser gravado em config.cfg" #: qcsrc/menu/xonotic/cvarlist.qc:79 qcsrc/menu/xonotic/cvarlist.qc:89 msgid "will not be saved" -msgstr "não será salvo" +msgstr "não será gravado" #: qcsrc/menu/xonotic/cvarlist.qc:84 msgid "will be saved to config.cfg" -msgstr "será salvo em config.cfg" +msgstr "será gravado em config.cfg" #: qcsrc/menu/xonotic/cvarlist.qc:93 msgid "private" @@ -5097,7 +5098,7 @@ msgstr "configuração do motor" #: qcsrc/menu/xonotic/cvarlist.qc:97 msgid "read only" -msgstr "somente leitura" +msgstr "apenas leitura" #: qcsrc/menu/xonotic/dialog_credits.qc:13 #: qcsrc/menu/xonotic/dialog_monstertools.qc:38 @@ -5122,9 +5123,8 @@ msgid "" "player name to get started. You can change these options later through the " "menu system." msgstr "" -"Bem-vindo ao Xonotic! Escolha o seu idioma de preferência e insira o seu " -"apelido para começar. Você pode alterar essas configurações mais tarde pelo " -"menu." +"Bem-vindo(a) ao Xonotic! Escolhe o teu idioma e introduz o teu apelido para " +"começar. Podes alterar estas configurações mais tarde através do menu." #: qcsrc/menu/xonotic/dialog_firstrun.qc:45 #: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:28 @@ -5134,7 +5134,7 @@ msgstr "Nome:" #: qcsrc/menu/xonotic/dialog_firstrun.qc:53 #: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:60 msgid "Name under which you will appear in the game" -msgstr "Seu nome que aparecerá no jogo" +msgstr "O teu nome que vai aparecer no jogo" #: qcsrc/menu/xonotic/dialog_firstrun.qc:69 msgid "Text language:" @@ -5143,7 +5143,7 @@ msgstr "Idioma do texto:" #: qcsrc/menu/xonotic/dialog_firstrun.qc:78 msgid "Allow player statistics to use your nickname at stats.xonotic.org?" msgstr "" -"Permitir que as estatísticas de jogador usem o seu apelido em stats.xonotic." +"Permitir que as estatísticas de jogador usem o teu apelido em stats.xonotic." "org?" #: qcsrc/menu/xonotic/dialog_firstrun.qc:84 @@ -5152,29 +5152,29 @@ msgstr "Não decidido" #: qcsrc/menu/xonotic/dialog_firstrun.qc:88 msgid "Save settings" -msgstr "Salvar configurações" +msgstr "Gravar configurações" #: qcsrc/menu/xonotic/dialog_firstrun.qh:6 msgid "Welcome" -msgstr "Bem-vindo" +msgstr "Bem-vindo(a)" #: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:16 msgid "Ammunition display:" -msgstr "Exibir munições:" +msgstr "Mostrar munições:" #: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:19 msgid "Show only current ammo type" -msgstr "Exibir apenas o tipo de munição atual" +msgstr "Mostrar apenas o tipo de munição atual" #: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:22 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:44 msgid "Noncurrent alpha:" -msgstr "Alfa não circulante:" +msgstr "Alfa não atual:" #: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:26 #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:48 msgid "Noncurrent scale:" -msgstr "Escala não circulante:" +msgstr "Escala não atual:" #: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:30 #: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:24 @@ -5209,7 +5209,7 @@ msgstr "Painel de Munições" #: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:17 msgid "Message duration:" -msgstr "Duração de mensagem:" +msgstr "Duração da mensagem:" #: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:21 msgid "Fade time:" @@ -5217,7 +5217,7 @@ msgstr "Tempo de desaparecimento:" #: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:25 msgid "Flip messages order" -msgstr "Trocar ordem de notificações" +msgstr "Trocar ordem de mensagens" #: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:27 #: qcsrc/menu/xonotic/dialog_hudpanel_quickmenu.qc:15 @@ -5240,23 +5240,23 @@ msgstr "Painel Central" #: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:15 msgid "Chat entries:" -msgstr "Entradas do bate-papo:" +msgstr "Entradas da conversação:" #: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:18 msgid "Chat size:" -msgstr "Tamanho do bate-papo:" +msgstr "Tamanho da conversação:" #: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:22 msgid "Chat lifetime:" -msgstr "Tempo de vida do bate-papo:" +msgstr "Tempo de vida da conversação:" #: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:26 msgid "Chat beep sound" -msgstr "Som de aviso do bate-papo" +msgstr "Som de aviso da conversação" #: qcsrc/menu/xonotic/dialog_hudpanel_chat.qh:6 msgid "Chat Panel" -msgstr "Painel do Bate-papo" +msgstr "Painel da Conversação" #: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.qc:14 msgid "Engine info:" @@ -5272,18 +5272,18 @@ msgstr "Painel de Informações do Motor" #: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:15 msgid "Combine health and armor" -msgstr "Combinar saúde e armadura" +msgstr "Combinar vida e armadura" #: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:17 #: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:28 #: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:15 msgid "Enable status bar" -msgstr "Habilitar barra de status" +msgstr "Ativar barra de estado" #: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:19 #: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:17 msgid "Status bar alignment:" -msgstr "Alinhamento da barra de status:" +msgstr "Alinhamento da barra de estado:" #: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:27 #: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:37 @@ -5302,15 +5302,15 @@ msgstr "Para fora" #: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:32 #: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:30 msgid "Icon alignment:" -msgstr "Alinhamento de ícones:" +msgstr "Alinhamento dos ícones:" #: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:40 msgid "Flip health and armor positions" -msgstr "Trocar as posições da saúde e armadura" +msgstr "Trocar as posições da vida e da armadura" #: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qh:6 msgid "Health/Armor Panel" -msgstr "Painel de Saúde/Armadura" +msgstr "Painel de Vida/Armadura" #: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.qc:14 msgid "Info messages:" @@ -5326,15 +5326,15 @@ msgstr "Painel de Mensagens de Informação" #: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:16 msgid "PNL^Disabled" -msgstr "Desabilitado" +msgstr "Desativado" #: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:17 msgid "PNL^Enabled spectating" -msgstr "Espectadores habilitados" +msgstr "Ativado os Espetadores" #: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:18 msgid "PNL^Enabled even playing in warmup" -msgstr "Habilitado mesmo jogando em aquecimento" +msgstr "Ativado mesmo a jogar em aquecimento" #: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:29 msgid "Reduced" @@ -5350,7 +5350,7 @@ msgstr "Ocultar itens disponíveis" #: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:37 msgid "Hide big armor and health" -msgstr "Ocultar armadura grande e saúde grande" +msgstr "Ocultar armadura grande e vida grande" #: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:39 msgid "Dynamic size" @@ -5370,7 +5370,7 @@ msgstr "Notificações:" #: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:18 msgid "Also print notifications to the console" -msgstr "Mostrar notificações no console também" +msgstr "Mostrar notificações também na consola" #: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:21 msgid "Flip notify order" @@ -5392,23 +5392,23 @@ msgstr "Painel de Notificações" #: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:14 #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:15 msgid "Panel disabled" -msgstr "Painel desabilitado" +msgstr "Painel desativado" #: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:16 msgid "Panel enabled" -msgstr "Painel habilitado" +msgstr "Painel ativado" #: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:17 msgid "Panel enabled even observing" -msgstr "Painel habilitado enquanto estiver observando" +msgstr "Painel ativado mesmo ao observar" #: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:18 msgid "Panel enabled only in Race/CTS" -msgstr "Painel habilitado apenas em Corrida/CTS" +msgstr "Painel ativado apenas em Corrida/CTS" #: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:24 msgid "Status bar" -msgstr "Barra de status" +msgstr "Barra de estado" #: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:26 #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:68 @@ -5466,7 +5466,7 @@ msgstr "nós" #: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:57 msgid "Show" -msgstr "Exibir" +msgstr "Mostrar" #: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:60 msgid "Top speed" @@ -5490,12 +5490,12 @@ msgstr "Painel de Potencializadores" #: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:15 msgid "Panel enabled when spectating" -msgstr "Painel habilitado enquanto estiver de espectador" +msgstr "Painel ativado quando espetador" #: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:16 #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:17 msgid "Panel always enabled" -msgstr "Painel sempre habilitado" +msgstr "Painel ativado sempre" #: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:23 msgid "Forced aspect:" @@ -5511,11 +5511,11 @@ msgstr "Painel de Menu Instantâneo" #: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.qh:6 msgid "Race Timer Panel" -msgstr "Painel do Cronômetro de Corrida" +msgstr "Painel do Cronómetro da Corrida" #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:16 msgid "Panel enabled in teamgames" -msgstr "Painel habilitado em jogos de equipe" +msgstr "Painel ativado em jogos de equipa" #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:23 msgid "Radar:" @@ -5540,7 +5540,7 @@ msgstr "Rotação:" #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:32 msgid "Forward" -msgstr "Para frente" +msgstr "Para a frente" #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:33 msgid "West" @@ -5612,15 +5612,15 @@ msgstr "Painel da Pontuação" #: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:14 msgid "Timer:" -msgstr "Cronômetro:" +msgstr "Cronómetro:" #: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:17 msgid "Show elapsed time" -msgstr "Exibir tempo decorrido" +msgstr "Mostrar tempo decorrido" #: qcsrc/menu/xonotic/dialog_hudpanel_timer.qh:6 msgid "Timer Panel" -msgstr "Painel do Cronômetro" +msgstr "Painel do Cronómetro" #: qcsrc/menu/xonotic/dialog_hudpanel_vote.qc:15 msgid "Alpha after voting:" @@ -5672,11 +5672,11 @@ msgstr "Ícones das armas:" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:41 msgid "Show only owned weapons" -msgstr "Exibir apenas armas obtidas" +msgstr "Mostrar apenas armas obtidas" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:52 msgid "Show weapon ID as:" -msgstr "Exibir o ID da arma como:" +msgstr "Mostrar o ID da arma como:" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:53 msgid "SHOWAS^None" @@ -5696,15 +5696,15 @@ msgstr "Escala do ID da arma:" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:64 msgid "Show Accuracy" -msgstr "Exibir precisão" +msgstr "Mostrar Precisão" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:65 msgid "Show Ammo" -msgstr "Exibir munições" +msgstr "Mostrar Munições" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:68 msgid "Ammo bar alpha:" -msgstr "Cor da barra de munições:" +msgstr "Transparência da barra de munições:" #: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:74 msgid "Ammo bar color:" @@ -5716,7 +5716,7 @@ msgstr "Painel das Armas" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:19 msgid "HUD skins" -msgstr "Visuais de HUD" +msgstr "Visuais de Interface" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:22 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:196 @@ -5741,7 +5741,7 @@ msgstr "Definir visual" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:37 msgid "Save current skin" -msgstr "Salvar visual atual" +msgstr "Gravar visual atual" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:46 msgid "Panel background defaults:" @@ -5759,22 +5759,22 @@ msgstr "Fundo:" #: qcsrc/menu/xonotic/util.qc:770 qcsrc/menu/xonotic/util.qc:786 #: qcsrc/menu/xonotic/util.qc:803 msgid "Disable" -msgstr "Desabilitar" +msgstr "Desativar" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:60 #: qcsrc/menu/xonotic/util.qc:783 msgid "Border size:" -msgstr "Tamanho das bordas:" +msgstr "Tamanho da borda:" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:75 #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:114 msgid "Team color:" -msgstr "Cor de equipe:" +msgstr "Cor da equipa:" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:83 #: qcsrc/menu/xonotic/util.qc:809 msgid "Test team color in configure mode" -msgstr "Testar cor de equipe no modo de configuração" +msgstr "Testar cor da equipa no modo de configuração" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:86 #: qcsrc/menu/xonotic/util.qc:812 @@ -5783,11 +5783,11 @@ msgstr "Preenchimento:" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:93 msgid "HUD Dock:" -msgstr "Camada do HUD:" +msgstr "Camada da Interface:" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:95 msgid "DOCK^Disabled" -msgstr "Desabilitada" +msgstr "Desativada" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:96 msgid "DOCK^Small" @@ -5803,15 +5803,15 @@ msgstr "Grande" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:121 msgid "Grid settings:" -msgstr "Configurações da rede:" +msgstr "Configurações da grelha:" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:124 msgid "Snap panels to grid" -msgstr "Fixar painéis à grade" +msgstr "Fixar painéis à grelha" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:127 msgid "Grid size:" -msgstr "Tamanho da rede:" +msgstr "Tamanho da grelha:" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:129 msgid "X:" @@ -5827,7 +5827,7 @@ msgstr "Sair da configuração" #: qcsrc/menu/xonotic/dialog_hudsetup_exit.qh:6 msgid "Panel HUD Setup" -msgstr "Painel de Configuração do HUD" +msgstr "Painel de Configuração da Interface" #: qcsrc/menu/xonotic/dialog_monstertools.qc:13 msgid "Monster:" @@ -5882,11 +5882,11 @@ msgstr "Servidores" #: qcsrc/menu/xonotic/dialog_multiplayer.qc:15 msgid "Find servers to play on" -msgstr "Encontre servidores para jogar" +msgstr "Encontrar servidores para jogar" #: qcsrc/menu/xonotic/dialog_multiplayer.qc:17 msgid "Host your own game" -msgstr "Hospede a sua própria partida" +msgstr "Alojar o meu jogo" #: qcsrc/menu/xonotic/dialog_multiplayer.qc:18 msgid "Media" @@ -5898,15 +5898,15 @@ msgstr "Perfil" #: qcsrc/menu/xonotic/dialog_multiplayer.qh:6 msgid "Multiplayer" -msgstr "Multijogador" +msgstr "Multi-jogador" #: qcsrc/menu/xonotic/dialog_multiplayer.qh:7 msgid "" "Play online, against your friends in LAN, view demos or change player " "settings" msgstr "" -"Jogue online, jogue contra seus amigos em rede local, assista a demos ou " -"altere as configurações de jogador." +"Joga online, joga contra os teus amigos em rede local, assiste a " +"demonstrações ou altera as configurações de jogador." #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:46 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:134 @@ -5968,11 +5968,11 @@ msgstr "Voltas:" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:72 msgid "Goals:" -msgstr "Gols:" +msgstr "Golos:" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:72 msgid "The amount of goals needed before the match will end" -msgstr "A quantidade de gols necessária para acabar a partida" +msgstr "A quantidade de golos necessária para acabar a partida" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:97 msgid "Gametype" @@ -6007,19 +6007,19 @@ msgstr "Infinito" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:132 msgid "Teams:" -msgstr "Equipes:" +msgstr "Equipas:" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:135 msgid "2 teams" -msgstr "2 equipes" +msgstr "2 equipas" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:136 msgid "3 teams" -msgstr "3 equipes" +msgstr "3 equipas" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:137 msgid "4 teams" -msgstr "4 equipes" +msgstr "4 equipas" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:140 msgid "Player slots:" @@ -6030,24 +6030,24 @@ msgid "" "The maximum amount of players or bots that can be connected to your server " "at once" msgstr "" -"O número máximo de jogadores ou bots que podem estar conectados ao seu " +"O número máximo de jogadores ou robôs que podem estar conectados ao teu " "servidor simultaneamente." #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:144 msgid "Number of bots:" -msgstr "Número de bots:" +msgstr "Número de robôs:" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:146 msgid "Amount of bots on your server" -msgstr "Quantidade de bots no seu servidor" +msgstr "Quantidade de robôs no teu servidor" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:148 msgid "Bot skill:" -msgstr "Habilidade dos bots:" +msgstr "Habilidade dos robôs:" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:151 msgid "Specify how experienced the bots will be" -msgstr "Especifique a experiência dos bots" +msgstr "Especifica a perícia dos robôs" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:152 msgid "Botlike" @@ -6059,15 +6059,15 @@ msgstr "Iniciante" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:154 msgid "You will win" -msgstr "Você vai ganhar" +msgstr "Vais ganhar" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:155 msgid "You can win" -msgstr "Você pode ganhar" +msgstr "Podes ganhar" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:156 msgid "You might win" -msgstr "Você talvez ganhe" +msgstr "Talvez ganhes" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:157 msgid "Advanced" @@ -6110,24 +6110,25 @@ msgid "" "Click here or Ctrl-F to provide a keyword to narrow down the map list. Ctrl-" "Delete to clear; Enter when done." msgstr "" -"Clique aqui ou aperte Ctrl+F para digitar uma palavra chave e buscar o mapa " -"desejado. Você pode apertar Ctrl+Delete para apagar e Enter para confirmar." +"Clica aqui ou pressiona Ctrl+F para digitar uma palavra-chave e diminuir a " +"lista de mapas apresentados. Usar Ctrl+Delete para limpar e Enter para " +"confirmar." #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:207 msgid "Add shown" -msgstr "Adicionar exibidos" +msgstr "Adicionar mostrados" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:208 msgid "Add the maps shown in the list to your selection" -msgstr "Adiciona os mapas exibidos na lista para a sua seleção" +msgstr "Adiciona os mapas mostrados na lista para a tua seleção" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:211 msgid "Remove shown" -msgstr "Remover exibidos" +msgstr "Remover mostrados" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:212 msgid "Remove the maps shown in the list from your selection" -msgstr "Remove os mapas exibidos na lista da sua seleção" +msgstr "Remove os mapas mostrados na lista da tua seleção" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:217 msgid "Add all" @@ -6135,7 +6136,7 @@ msgstr "Adicionar todos" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:218 msgid "Add every available map to your selection" -msgstr "Adiciona todos os mapas disponíveis para a sua seleção" +msgstr "Adiciona todos os mapas disponíveis para a tua seleção" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:221 msgid "Remove all" @@ -6143,11 +6144,11 @@ msgstr "Remover todos" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:222 msgid "Remove all the maps from your selection" -msgstr "Remove todos os mapas da sua seleção" +msgstr "Remove todos os mapas da tua seleção" #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:229 msgid "Start Multiplayer!" -msgstr "Iniciar Multijogador!" +msgstr "Iniciar Multi-jogador!" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:58 msgid "Title:" @@ -6180,7 +6181,7 @@ msgstr "Arena com Todas as Armas" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:30 msgid "Most Weapons Arena" -msgstr "Arena com Maior Parte das Armas" +msgstr "Arena com a Maior Parte das Armas" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:49 #, c-format @@ -6210,7 +6211,7 @@ msgstr "NIX" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:69 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:220 msgid "Rocket Flying" -msgstr "Voar com Foguetes" +msgstr "Voar com Mísseis" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:71 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:212 @@ -6249,7 +6250,7 @@ msgstr "Piñata" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:89 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:229 msgid "Weapons stay" -msgstr "Armas permanescentes " +msgstr "Armas permanescentes" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:91 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:184 @@ -6264,7 +6265,7 @@ msgstr "Mochila a Jato" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:95 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:170 msgid "Buffs" -msgstr "Bônus (buffs)" +msgstr "Bónus" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:97 msgid "Overkill" @@ -6293,7 +6294,7 @@ msgstr "Modificadores de jogabilidade:" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:160 msgid "Enable dodging" -msgstr "Habilitar esquiva" +msgstr "Ativar esquivar" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:167 msgid "All players are almost invisible" @@ -6302,17 +6303,17 @@ msgstr "Todos jogadores ficarão quase invisíveis" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:174 msgid "Only possible to inflict damage on your enemy while he's airborne" msgstr "" -"Só é possível causar dano aos seus inimigos enquanto eles estiverem no ar" +"Só é possível causar dano aos teus inimigos enquanto eles estiverem no ar" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:178 msgid "Damage done to your enemy gets added to your own health" -msgstr "O dano causado aos seus inimigos será adicionado à sua saúde" +msgstr "O dano causado aos teus inimigos será adicionado à sua vida" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:183 msgid "" "Amount of health below which your player gets stunned because of blood loss" msgstr "" -"Quantidade de saúde abaixo a qual o seu jogador permanecerá atordoado devido " +"Quantidade de vida abaixo da qual o teu jogador permanecerá atordoado devido " "à perda de sangue" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:192 @@ -6327,24 +6328,24 @@ msgstr "Modificadores de armas e itens:" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:204 msgid "Grappling hook" -msgstr "Gancho (grappling hook)" +msgstr "Gancho de escalada" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:205 msgid "Players spawn with the grappling hook" -msgstr "Jogadores surgem com o gancho" +msgstr "Os jogadores surgem com o gancho" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:209 msgid "Players spawn with the jetpack" -msgstr "Jogadores surgem com a mochila a jato" +msgstr "Os jogadores surgem com a mochila a jato" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:225 msgid "Players will drop all weapons they possessed when they are killed" msgstr "" -"Ao morrerem, jogadores irão deixar cair no chão todas as armas que tinham" +"Ao morrerem, os jogadores irão deixar cair no chão todas as armas que tinham" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:230 msgid "Weapons stay after they are picked up" -msgstr "Armas permanecem no chão após serem coletadas" +msgstr "As armas permanecem no chão após serem pegadas" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:235 msgid "Regular (no arena)" @@ -6362,8 +6363,8 @@ msgid "" "as unlimited ammo, and disable all other weapon pickups." msgstr "" "Selecionar uma arena de armas concederá a todos os jogadores a arma " -"selecionada ao surgirem bem como munição ilimitada. Todas as outras armas " -"ficarão indisponíveis no mapa." +"selecionada ao surgirem, bem como as munições ilimitadas. Todas as outras " +"armas ficarão indisponíveis no mapa." #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:255 msgid "Most weapons" @@ -6385,8 +6386,8 @@ msgid "" "does not inflict any damage but is good for doing trickjumps." msgstr "" "Os jogadores terão uma arma, a qual pode instantaneamente matar o oponente " -"com um único disparo. Se o jogador ficar sem munição, ele terá 10 segundos " -"para encontrar alguma e se não conseguir fazer isso, irá morrer. O modo de " +"com um único disparo. Se o jogador ficar sem munições, ele terá 10 segundos " +"para encontrar munições e se não conseguir fazer isso, irá morrer. O modo de " "disparo secundário não causa nenhum dano, mas é útil para executar truques " "de movimento." @@ -6396,9 +6397,9 @@ msgid "" "weapon. After some time, a countdown will start, after which everyone will " "switch to another weapon." msgstr "" -"Sem itens Xonotic - em vez de pegar itens espalhados pelo mapa, todo mundo " -"joga com a mesma arma. Depois de um certo tempo, uma contagem regressiva irá " -"iniciar, e depois disso todos irão trocar para uma outra arma." +"Sem itens Xonotic - em vez de apanhar itens espalhados pelo mapa, todos " +"jogam com a mesma arma. Depois de um certo tempo, irá começar uma contagem, " +"e depois disso todos irão trocar para uma outra arma." #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:277 msgid "with blaster" @@ -6406,7 +6407,7 @@ msgstr "com blaster" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:278 msgid "Always carry the blaster as an additional weapon in Nix" -msgstr "Sempre carregue a blaster como uma arma adicional em Nix" +msgstr "Carregar sempre a blaster como uma arma adicional em Nix" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qh:9 msgid "Mutators" @@ -6422,7 +6423,7 @@ msgstr "Vazio" #: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:42 msgid "Show empty servers" -msgstr "Exibir servidores vazios" +msgstr "Mostrar servidores vazios" #: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:46 msgid "SRVS^Full" @@ -6430,7 +6431,7 @@ msgstr "Cheio" #: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:47 msgid "Show full servers that have no slots available" -msgstr "Exibir servidores cheios que não contêm vagas disponíveis" +msgstr "Mostrar servidores cheios que não têm vagas disponíveis" #: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:51 msgid "Pause" @@ -6441,7 +6442,7 @@ msgid "" "Pause updating the server list to prevent servers from \"jumping around\"" msgstr "" "Pausa a atualização da lista de servidores para evitar que os servidores " -"fiquem saindo do lugar" +"estejam sempre a \"saltar\" do lugar" #: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:53 msgid "Reload the server list" @@ -6458,7 +6459,7 @@ msgstr "Informações..." #: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:79 msgid "Show more information about the currently highlighted server" -msgstr "Exibir mais informações sobre o servidor atualmente destacado" +msgstr "Mostrar mais informações sobre o servidor atualmente destacado" #: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:84 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:303 @@ -6482,7 +6483,7 @@ msgstr "Oficial" #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:169 msgid "N/A (auth library missing, can't connect)" msgstr "" -"N/A (biblioteca de autenticação não encontrada, não foi possível se conectar)" +"N/A (biblioteca de autenticação não encontrada, não é possível conectar)" #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:171 msgid "N/A (auth library missing)" @@ -6490,7 +6491,7 @@ msgstr "N/A (biblioteca de autenticação não encontrada)" #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:177 msgid "Not supported (can't connect)" -msgstr "Não suportado (não foi possível se conectar)" +msgstr "Não suportado (não é possível conectar)" #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:179 msgid "Not supported (won't encrypt)" @@ -6514,7 +6515,7 @@ msgstr "Solicitado (não encriptará)" #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:195 msgid "Required (can't connect)" -msgstr "Necessário (não foi possível se conectar)" +msgstr "Necessário (não é possível conectar)" #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:197 msgid "Required (will encrypt)" @@ -6551,7 +6552,7 @@ msgstr "Jogadores:" #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:263 msgid "Bots:" -msgstr "Bots:" +msgstr "Robôs:" #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:268 msgid "Free slots:" @@ -6579,7 +6580,7 @@ msgstr "Demos" #: qcsrc/menu/xonotic/dialog_multiplayer_media.qc:26 msgid "Screenshots" -msgstr "Screenshots" +msgstr "Capturas de ecrã" #: qcsrc/menu/xonotic/dialog_multiplayer_media.qc:27 msgid "Music Player" @@ -6591,13 +6592,13 @@ msgstr "Gravar demos automaticamente" #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:57 msgid "Timedemo" -msgstr "Executar benchmark" +msgstr "Executar teste de desempenho" #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:58 msgid "Benchmark how fast your computer can run the highlighted demo" msgstr "" -"Executa um teste de desempenho para saber quão rápido seu computador pode " -"rodar a demo destacada" +"Executa um teste de desempenho para saber quão rápido o teu computador pode " +"executar a demo destacada" #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:62 msgid "DEMO^Play" @@ -6605,12 +6606,12 @@ msgstr "Reproduzir" #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:13 msgid "Playing a demo will disconnect you from the current match." -msgstr "Reproduzir uma demo irá desconectar você da partida atual." +msgstr "Reproduzir uma demo irá desconectar-te da partida atual." #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:15 #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:15 msgid "Do you really wish to disconnect now?" -msgstr "Você realmente deseja desconectar agora?" +msgstr "Queres mesmo desconectar-te agora?" #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qh:6 #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qh:6 @@ -6619,7 +6620,8 @@ msgstr "Desconectar" #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:13 msgid "Timing a demo will disconnect you from the current match." -msgstr "Executar benchmark em uma demo irá desconectá-lo da partida atual." +msgstr "" +"Executar teste de desempenho numa demo irá desconectar-te da partida atual." #: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:37 msgid "MUSICPL^Add" @@ -6651,11 +6653,11 @@ msgstr "Parar" #: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:63 msgid "MUSICPL^Play" -msgstr "Tocar" +msgstr "Reproduzir" #: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:66 msgid "MUSICPL^Pause" -msgstr "Pausar" +msgstr "Pausa" #: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:69 msgid "MUSICPL^Prev" @@ -6675,7 +6677,7 @@ msgstr "Remover todas" #: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc:43 msgid "Auto screenshot scoreboard" -msgstr "Tirar screenshot automaticamente do placar" +msgstr "Tirar captura de ecrã automaticamente do placar de pontuação" #: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc:63 msgid "Open in the viewer" @@ -6683,7 +6685,7 @@ msgstr "Abrir no visualizador" #: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:139 msgid "Reset" -msgstr "Redefinir" +msgstr "Repor" #: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:144 msgid "Previous" @@ -6728,19 +6730,19 @@ msgstr "Estatísticas" #: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:125 msgid "Allow player statistics to track your client" -msgstr "Permitir que as estatísticas de jogadores rastreiem o seu cliente" +msgstr "Permitir que as estatísticas de jogadores rastreiem o teu cliente" #: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:129 msgid "Allow player statistics to use your nickname" -msgstr "Permitir que as estatísticas de jogadores usem o seu apelido" +msgstr "Permitir que as estatísticas de jogadores usem o teu apelido" #: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:145 msgid "Country" -msgstr "Idioma" +msgstr "País" #: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:159 msgid "Gender:" -msgstr "Gênero:" +msgstr "Género:" #: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:161 #: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:174 @@ -6759,11 +6761,11 @@ msgstr "Masculino" #: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:166 msgid "Gender" -msgstr "Gênero" +msgstr "Género" #: qcsrc/menu/xonotic/dialog_quit.qc:11 msgid "Are you sure you want to quit?" -msgstr "Tem certeza de que deseja sair?" +msgstr "Tens certeza de que queres sair?" #: qcsrc/menu/xonotic/dialog_quit.qc:15 msgid "Back to work..." @@ -6803,7 +6805,7 @@ msgstr "Definir * como criança" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:32 msgid "Attach to *" -msgstr "Anexar à *" +msgstr "Anexar a *" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:34 msgid "Detach from *" @@ -6811,7 +6813,7 @@ msgstr "Separar de *" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:37 msgid "Visual object properties for *:" -msgstr "Propriedades de objeto visual para *:" +msgstr "Propriedades do objeto visual para *:" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:41 msgid "Set alpha:" @@ -6831,7 +6833,7 @@ msgstr "Definir frame:" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:54 msgid "Physical object properties for *:" -msgstr "Propriedades de objeto físico para *:" +msgstr "Propriedades do objeto físico para *:" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:56 msgid "Set material:" @@ -6859,7 +6861,7 @@ msgstr "Estática" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:67 msgid "Movable" -msgstr "Movível" +msgstr "Deslocável" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:68 msgid "Physical" @@ -6879,23 +6881,23 @@ msgstr "Resgatar *" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:78 msgid "* object info" -msgstr "Informações de objeto *" +msgstr "Informações do objeto *" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:79 msgid "* mesh info" -msgstr "Informações de malha *" +msgstr "Informações da malha *" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:80 msgid "* attachment info" -msgstr "Informações de extras *" +msgstr "Informações dos extras *" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:81 msgid "Show help" -msgstr "Exibir ajuda" +msgstr "Mostrar ajuda" #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:82 msgid "* is the object you are facing" -msgstr "* é o objeto para o qual você está virado" +msgstr "* é o objeto para o qual estás virado" #: qcsrc/menu/xonotic/dialog_sandboxtools.qh:6 msgid "Sandbox Tools" @@ -6923,7 +6925,7 @@ msgstr "Entrada" #: qcsrc/menu/xonotic/dialog_settings.qc:24 msgid "User" -msgstr "Usuário" +msgstr "Utilizador" #: qcsrc/menu/xonotic/dialog_settings.qc:25 #: qcsrc/menu/xonotic/keybinder.qc:105 @@ -6936,7 +6938,7 @@ msgstr "Configurações" #: qcsrc/menu/xonotic/dialog_settings.qh:7 msgid "Change the game settings" -msgstr "Altere as configurações do jogo" +msgstr "Altera as configurações do jogo" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:29 msgid "Master:" @@ -6984,7 +6986,7 @@ msgstr "Novo estilo de atenuação de som" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:102 msgid "Mute sounds when not active" -msgstr "Desabilita o som enquanto estiver em segundo plano" +msgstr "Desativa o som enquanto estiver em segundo plano" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:105 msgid "Frequency:" @@ -7076,27 +7078,27 @@ msgstr "Troca de lugar os canais esquerdo e direito" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:138 msgid "Headphone friendly mode" -msgstr "Modo de fones de ouvido" +msgstr "Modo de auscultadores" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:139 msgid "" "Enable spatialization (blend the right and left channel slightly to decrease " "stereo separation a bit for headphones)" msgstr "" -"Habilita espacialização (combina levemente os canais esquerdo e direito para " -"diminuir um pouco a separação de estéreo para fones de ouvido)" +"Ativa a espacialização (combina levemente os canais esquerdo e direito para " +"diminuir um pouco a separação dos canais de estéreo para auscultadores)" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:143 msgid "Hit indication sound" -msgstr "Som indicador de disparo acertado" +msgstr "Som indicador de tiro certeiro" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:144 msgid "Play a hit indicator sound when your shot hits an enemy" -msgstr "Reproduzuz um som indicando que você acertou um inimigo" +msgstr "Reproduz um som indicando que acertaste num inimigo" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:147 msgid "Chat message sound" -msgstr "Som de mensagem do bate-papo" +msgstr "Som de mensagem da conversação" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:149 msgid "Menu sounds" @@ -7104,7 +7106,7 @@ msgstr "Sons do menu" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:150 msgid "Play sounds when clicking menu items" -msgstr "Reproduz sons quando você clica nas opções do menu" +msgstr "Reproduz sons quando clicas nas opções do menu" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:151 msgid "Focus sounds" @@ -7112,7 +7114,7 @@ msgstr "Sons de foco" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:152 msgid "Play sounds when hovering over menu items too" -msgstr "Reproduz sons quando você passa o mouse sobre as opções do menu também" +msgstr "Reproduz sons quando passas com o rato sobre as opções do menu também" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:156 msgid "Time announcer:" @@ -7120,7 +7122,7 @@ msgstr "Aviso de tempo:" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:158 msgid "WRN^Disabled" -msgstr "Desabilitado" +msgstr "Desativado" #: qcsrc/menu/xonotic/dialog_settings_audio.qc:160 msgid "5 minutes" @@ -7284,36 +7286,36 @@ msgstr "Evitar compressão de texturas com perdas" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:131 msgid "Show surfaces" -msgstr "Exibir superfícies" +msgstr "Mostrar superfícies" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:132 msgid "" "Disable textures completely for very slow hardware. This gives a huge " "performance boost, but looks very ugly. (default: disabled)" msgstr "" -"Desabilita completamente as texturas para PCs de baixo desempenho. Isso " -"garante uma alto ganho de desempenho, mas deixa o jogo muito feio. (padrão: " -"desabilitado)" +"Desativa completamente as texturas para computadores de baixo desempenho. " +"Isto melhora o desempenho, mas deixa o aspeto do jogo um bocado feio. " +"(padrão: desabilitado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:135 msgid "Use lightmaps" -msgstr "Usar lightmaps" +msgstr "Usar mapas de luzes" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:136 msgid "" "Use high resolution lightmaps, which will look pretty but use up some extra " "video memory (default: enabled)" msgstr "" -"Usa lightmaps de alta resolução, os quais ficarão elegantes, mas irão usar " -"um pouco mais de memória (padrão: habilitado)" +"Usa mapas de luzes de alta resolução, os quais ficarão elegantes, mas irão " +"usar um pouco mais de memória (padrão: ativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:138 msgid "Deluxe mapping" -msgstr "Mapeamento deluxe" +msgstr "Mapeamento de luxo" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:139 msgid "Use per-pixel lighting effects (default: enabled)" -msgstr "Usa efeitos de iluminação por pixel (padrão: habilitado)" +msgstr "Usa efeitos de iluminação por pixel (padrão: ativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:141 msgid "Gloss" @@ -7323,21 +7325,21 @@ msgstr "Lustro" msgid "" "Enable the use of glossmaps on textures supporting it (default: enabled)" msgstr "" -"Habilita o uso de glossmaps em texturas que suportam esse recurso (padrão: " -"habilitado)" +"Ativa a utilização de mapas de lustro em texturas que suportam esse recurso " +"(padrão: ativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:145 msgid "Offset mapping" -msgstr "Mapeamento por paralaxe" +msgstr "Mapeamento por deslocação" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:146 msgid "" "Offset mapping effect that will make textures with bumpmaps appear like they " "\"pop out\" of the flat 2D surface (default: disabled)" msgstr "" -"Efeito de mapeamento por paralaxe que fará as texturas com bumpmaps " -"parecerem que estão \"saindo\" da superfície plana em 2D (padrão: " -"desabilitado)" +"Efeito de mapeamento por paralaxe que fará com que as texturas com mapa de " +"relevo (bumpmaps) pareçam que estão a \"sair\" da superfície plana em 2D " +"(padrão: desativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:148 msgid "Relief mapping" @@ -7348,8 +7350,8 @@ msgid "" "Higher quality offset mapping, which also has a huge impact on performance " "(default: disabled)" msgstr "" -"Mapeamento por paralaxe de maior qualidade, o qual também causa um grande " -"impacto no desempenho (padrão: desabilitado)" +"Mapeamento por relevo de maior qualidade, o qual também causa um grande " +"impacto no desempenho (padrão: desativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:152 msgid "Reflections:" @@ -7361,7 +7363,7 @@ msgid "" "with reflecting surfaces (default: disabled)" msgstr "" "Qualidade de reflexos e refrações. Causa um grande impacto no desempenho em " -"mapas que contenham superfícies com reflexos (padrão: desabilitado)" +"mapas que contenham superfícies com reflexos (padrão: desativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:156 msgid "Resolution of reflections/refractions (default: good)" @@ -7385,7 +7387,7 @@ msgstr "Decalques" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:164 msgid "Enable decals (bullet holes and blood) (default: enabled)" -msgstr "Habilita decalques (buracos de bala e sangue) (padrão: habilitado)" +msgstr "Ativa os decalques (buracos de bala e sangue) (padrão: ativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:165 msgid "Decals on models" @@ -7398,7 +7400,8 @@ msgstr "Distância:" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:172 msgid "Decals further away than this will not be drawn (default: 300)" -msgstr "Decalques mais distantes que isso não serão desenhados (padrão: 300)" +msgstr "" +"Os decalques mais distantes que este valor não serão mostrados (padrão: 300)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:176 msgid "Time:" @@ -7406,7 +7409,7 @@ msgstr "Tempo:" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:179 msgid "Time in seconds before decals fade away (default: 2)" -msgstr "Tempo em segundos antes de decalques desaparecerem (padrão: 2)" +msgstr "Tempo em segundos antes dos decalques desaparecerem (padrão: 2)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:183 msgid "Damage effects:" @@ -7414,7 +7417,7 @@ msgstr "Efeitos de dano:" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:185 msgid "DMGFX^Disabled" -msgstr "Desabilitado" +msgstr "Desativado" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:186 msgid "Skeletal" @@ -7426,23 +7429,23 @@ msgstr "Todos" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:191 msgid "No dynamic lighting" -msgstr "Desabilitar iluminação dinâmica" +msgstr "Desativar iluminação dinâmica" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:192 msgid "Enable corona flares around certain lights (default: enabled)" -msgstr "Habilita luzes de corona ao redor de certas luzes (padrão: habilitado)" +msgstr "Ativa luzes de coroa ao redor de certas luzes (padrão: ativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:194 msgid "Fake corona lighting" -msgstr "Iluminação de coronas falsa" +msgstr "Iluminação de coroas falsa" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:195 msgid "" "Enable faster but uglier dynamic lights by rendering bright coronas instead " "of real dynamic lights (default: disabled)" msgstr "" -"Habilita luzes dinâmicas mais rápidas porém mais feias renderizando coronas " -"brilhantes em vez de luzes dinâmicas reais (padrão: desabilitado)" +"Ativa luzes dinâmicas mais rápidas mas também mais feias renderizando as " +"coroas brilhantes em vez de luzes dinâmicas reais (padrão: desativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:198 msgid "Realtime dynamic lighting" @@ -7453,8 +7456,8 @@ msgid "" "Enable rendering of dynamic lights such as explosions and rocket lights " "(default: enabled)" msgstr "" -"Habilita a renderização de luzes dinâmicas como explosões e luzes de " -"foguetes (padrão: habilitada)" +"Ativa a renderização de luzes dinâmicas como explosões e luzes de foguetes " +"(padrão: ativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:201 #: qcsrc/menu/xonotic/dialog_settings_effects.qc:207 @@ -7464,8 +7467,8 @@ msgstr "Sombras" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:202 msgid "Enable rendering of shadows from dynamic lights (default: disabled)" msgstr "" -"Habilita a renderização de sombras a partir de luzes dinâmicas (padrão: " -"desabilitado)" +"Ativa a renderização de sombras a partir de luzes dinâmicas (padrão: " +"desativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:205 msgid "Realtime world lighting" @@ -7476,16 +7479,16 @@ msgid "" "Enable rendering of full realtime world lighting on maps that support it. " "Note that this might have a big impact on performance. (default: disabled)" msgstr "" -"Habilita a renderização de iluminação de mundo em tempo real em mapas que a " -"suportam. Note que isso pode causar um grande impacto no desempenho (padrão: " -"desabilitado)" +"Ativa a renderização de iluminação de mundo em tempo real em mapas que a " +"suportam. Nota que isto pode causar um grande impacto no desempenho (padrão: " +"desativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:208 msgid "" "Enable rendering of shadows from realtime world lights (default: disabled)" msgstr "" -"Habilita a renderização de sombras de luzes de mundo em tempo real (padrão: " -"desabilitado)" +"Ativa a renderização de sombras de luzes de mundo em tempo real (padrão: " +"desativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:212 msgid "Use normal maps" @@ -7493,7 +7496,7 @@ msgstr "Usar normal maps" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:213 msgid "Enable use of directional shading on textures (default: enabled)" -msgstr "Habilita o uso de shaders direcionais em texturas (padrão: habilitado)" +msgstr "Ativa o uso de shaders direcionais em texturas (padrão: ativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:215 msgid "Soft shadows" @@ -7501,23 +7504,24 @@ msgstr "Sombras suaves" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:219 msgid "Fade corona according to visibility" -msgstr "Enfraquecer corona de acordo com a visibilidade" +msgstr "Enfraquecer coroa de acordo com a visibilidade" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:220 msgid "Fade coronas according to visibility (default: enabled)" -msgstr "Enfraquece coronas de acordo com a visibilidade (padrão: habilitado)" +msgstr "Enfraquece coroas de acordo com a visibilidade (padrão: ativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:224 msgid "Bloom" -msgstr "Bloom" +msgstr "Incandescência" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:225 msgid "" "Enable bloom effect, which brightens the neighboring pixels of very bright " "pixels. Has a big impact on performance. (default: disabled)" msgstr "" -"Habilita o efeito bloom, o qual ilumina os pixels próximos de pixels muito " -"brilhantes. Causa um grande impacto no desempenho (padrão: desabilitado)" +"Ativa o efeito de incandescência, o qual ilumina os pixeis próximos de " +"pixeis muito brilhantes. Causa um grande impacto no desempenho (padrão: " +"desativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:226 msgid "Extra postprocessing effects" @@ -7528,16 +7532,16 @@ msgid "" "Enables special postprocessing effects for when damaged or under water or " "using a powerup (default: disabled)" msgstr "" -"Habilita efeitos especiais de pós-processamento para quando receber dano, " -"estar debaixo d'água ou ao usar potencializadores (padrão: desabilitado)" +"Ativa efeitos especiais de pós-processamento ao receber dano, estar debaixo " +"d'água ou ao usar potencializadores (padrão: desativado)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:232 msgid "Motion blur strength - 0.4 recommended" -msgstr "Intensidade do desfoque de movimento - 0.4 recomendado" +msgstr "Intensidade da desfocagem de movimento - 0.4 recomendado" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:233 msgid "Motion blur:" -msgstr "Desfoque de movimento:" +msgstr "Desfocagem de movimento:" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:239 msgid "Particles" @@ -7563,11 +7567,11 @@ msgid "" "gives for better performance (default: 1.0)" msgstr "" "Multiplicador para a quantidade de partículas. Menos significa menos " -"partículas, o que resulta em um melhor desempenho (padrão: 1.0)" +"partículas, o que resulta num melhor desempenho (padrão: 1.0)" #: qcsrc/menu/xonotic/dialog_settings_effects.qc:256 msgid "Particles further away than this will not be drawn (default: 1000)" -msgstr "Partículas mais distantes que isso não serão desenhadas (padrão: 1000)" +msgstr "Partículas mais distantes que isto não irão aparecer (padrão: 1000)" #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:31 msgid "No crosshair" @@ -7583,8 +7587,8 @@ msgid "" "Set a different crosshair for each weapon, good if you play without weapon " "models" msgstr "" -"Define uma mira diferente para cada uma das armas, uma boa opção caso você " -"jogue sem os modelos das armas na tela" +"Define uma mira diferente para cada uma das armas, uma boa opção caso jogues " +"sem aparecerem as armas no ecrã" #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:48 #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:81 @@ -7594,15 +7598,15 @@ msgstr "Tamanho:" #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:64 msgid "By health" -msgstr "Por saúde" +msgstr "Por vida" #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:76 msgid "Use rings to indicate weapon status" -msgstr "Usar anéis para indicar status da arma" +msgstr "Usar anéis para indicar estado da arma" #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:93 msgid "Enable center crosshair dot" -msgstr "Habilitar ponto no centro da mira" +msgstr "Ativar ponto no centro da mira" #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:111 msgid "Use normal crosshair color" @@ -7623,12 +7627,12 @@ msgid "" "enlarge the crosshair when you would hit an enemy" msgstr "" "Nenhum: não realiza testes de acerto para a mira; Mira Real: desfoca a mira " -"quando há uma obstáculo entre a sua arma e o alvo; Inimigos: a mira também é " -"ampliada quando você acertaria um inimigo" +"quando há um obstáculo entre a tua arma e o alvo; Inimigos: a mira também é " +"ampliada quando acertarias num inimigo" #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:129 msgid "HTTST^Disabled" -msgstr "Desabilitado" +msgstr "Desativado" #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:130 msgid "HTTST^TrueAim" @@ -7640,19 +7644,19 @@ msgstr "Inimigos" #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:136 msgid "Blur crosshair if the shot is obstructed" -msgstr "Borrar mira se o disparo for obstruído" +msgstr "Desfocar mira se o disparo for obstruído" #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:140 msgid "Enlarge crosshair if targeting an enemy" -msgstr "Ampliar mira ao focar em um inimigo" +msgstr "Ampliar mira ao focar num inimigo" #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:143 msgid "Animate crosshair when hitting an enemy" -msgstr "Animar mira ao acertar um inimigo" +msgstr "Animar mira ao acertar num inimigo" #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:146 msgid "Animate crosshair when picking up an item" -msgstr "Animar mira ao pegar um item" +msgstr "Animar mira ao apanhar um item" #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qh:7 msgid "Crosshair" @@ -7664,15 +7668,15 @@ msgstr "Vel. de desaparecimento:" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:51 msgid "Enable rows / columns highlighting" -msgstr "Habilitar destacamento de fileiras/colunas" +msgstr "Ativar destaque de linhas/colunas" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:55 msgid "Show decimals in respawn countdown" -msgstr "Exibir decimais na contagem de ressurgimento" +msgstr "Mostrar decimais na contagem de ressurgimento" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:57 msgid "Show accuracy underneath scoreboard" -msgstr "Exibir precisão embaixo do placar" +msgstr "Mostrar pontaria por baixo do placar de pontuação" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:61 msgid "Waypoints" @@ -7697,11 +7701,11 @@ msgstr "Tamanho da fonte:" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:80 msgid "Edge offset:" -msgstr "Extremidade:" +msgstr "Deslocamento da extremidade:" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:89 msgid "Fade when near the crosshair" -msgstr "Enfraquecer ao se aproximar da mira" +msgstr "Suavizar quando perto da mira" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:94 msgid "Damage" @@ -7725,7 +7729,7 @@ msgstr "Nomes de Jogadores" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:114 msgid "Show names above players" -msgstr "Exibir nomes sobre jogadores" +msgstr "Mostrar nomes por cima dos jogadores" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:130 msgid "Max distance:" @@ -7733,20 +7737,20 @@ msgstr "Distância máxima:" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:136 msgid "Decolorize:" -msgstr "Descolorização:" +msgstr "Descoloração:" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:140 #: qcsrc/menu/xonotic/keybinder.qc:99 msgid "Teamplay" -msgstr "Equipe" +msgstr "Equipa" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:148 msgid "Only when near crosshair" -msgstr "Apenas quando próximo à mira" +msgstr "Apenas quando próximo da mira" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:152 msgid "Display health and armor" -msgstr "Exibir saúde e armadura" +msgstr "Mostrar vida e armadura" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:157 msgid "Damage overlay:" @@ -7754,32 +7758,33 @@ msgstr "Sobreposição do dano:" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:160 msgid "Dynamic HUD" -msgstr "HUD dinâmico" +msgstr "Interface dinâmica" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:161 msgid "HUD moves around following player's movement" -msgstr "O HUD se move de acordo com o movimento do jogador" +msgstr "A interface move-se de acordo com o movimento do jogador" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:163 msgid "Shake the HUD when hurt" -msgstr "Vibrar o HUD ao ser atingido" +msgstr "Vibrar a interface ao ser atingido" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:167 #: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qh:6 msgid "Enter HUD editor" -msgstr "Entrar no editor do HUD" +msgstr "Entrar no editor da interface" #: qcsrc/menu/xonotic/dialog_settings_game_hud.qh:7 msgid "HUD" -msgstr "HUD" +msgstr "Interface" #: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qc:21 msgid "In order for the HUD editor to show, you must first be in game." -msgstr "Para o editor do HUD aparecer, é necessário estar jogando em um mapa." +msgstr "" +"Para o editor da interface aparecer, é necessário estar a jogar num mapa." #: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qc:23 msgid "Do you wish to start a local game to set up the HUD?" -msgstr "Quer iniciar um jogo local para personalizar o HUD?" +msgstr "Queres iniciar um jogo local para personalizar a interface?" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:24 msgid "Frag Information" @@ -7787,19 +7792,19 @@ msgstr "Informações de Execuções" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:26 msgid "Display information about killing sprees" -msgstr "Exibir informação sobre sequências de mortes" +msgstr "Mostrar informação sobre sequências de mortes" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:29 msgid "Only display sprees if they are achievements" -msgstr "Apenas exibir sequências se forem conquistas" +msgstr "Mostrar apenas sequências se forem conquistas" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:34 msgid "Show spree information in centerprints" -msgstr "Exibir informação de sequências em impressões centrais" +msgstr "Mostrar informação de sequências em impressões centrais" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:38 msgid "Show spree information in death messages" -msgstr "Exibir informação de sequências em mensagens de morte" +msgstr "Mostrar informação de sequências em mensagens de morte" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:43 msgid "Sprees in info messages:" @@ -7807,7 +7812,7 @@ msgstr "Sequências em mensagens de informação:" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:46 msgid "SPREES^Disabled" -msgstr "Desabilitadas" +msgstr "Desativadas" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:47 msgid "Target" @@ -7842,11 +7847,11 @@ msgstr "Configurações do Modo de Jogo" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:67 msgid "Display capture times in Capture The Flag" -msgstr "Exibir tempos de captura em Capture a Bandeira" +msgstr "Mostrar tempos de captura em Capturar a Bandeira" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:71 msgid "Display name of flag stealer in Capture The Flag" -msgstr "Exibir nome do ladrão da bandeira em Capture a Bandeira" +msgstr "Mostrar nome do ladrão da bandeira em Capturar a Bandeira" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:76 #: qcsrc/menu/xonotic/dialog_settings_input.qc:91 @@ -7856,15 +7861,15 @@ msgstr "Outros" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:78 msgid "Display console messages in the top left corner" -msgstr "Exibir mensagens de console no canto superior esquerdo" +msgstr "Mostrar mensagens da consola no canto superior esquerdo" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:80 msgid "Display all info messages in the chatbox" -msgstr "Exibir todas as mensagens de informação no bate-papo" +msgstr "Mostrar todas as mensagens de informação na conversação" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:82 msgid "Display player statuses in the chatbox" -msgstr "Exibir status de jogadores no bate-papo" +msgstr "Mostrar estado dos jogadores na conversação" #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:86 msgid "Powerup notifications" @@ -7945,11 +7950,11 @@ msgstr "Forçar modelos dos jogadores para ficarem iguais ao meu" #: qcsrc/menu/xonotic/dialog_settings_game_model.qc:53 msgid "Force player colors to mine" -msgstr "Forçar cores de jogadores para ficarem iguais às minhas" +msgstr "Forçar cores dos jogadores para ficarem iguais às minhas" #: qcsrc/menu/xonotic/dialog_settings_game_model.qc:56 msgid "In non teamplay modes only" -msgstr "Apenas em modos de jogo que não sejam de equipes" +msgstr "Apenas em modos de jogo que não sejam de equipas" #: qcsrc/menu/xonotic/dialog_settings_game_model.qc:60 msgid "Body fading:" @@ -7961,7 +7966,7 @@ msgstr "Tripas:" #: qcsrc/menu/xonotic/dialog_settings_game_model.qc:65 msgid "GIBS^None" -msgstr "Desabilitadas" +msgstr "Desativadas" #: qcsrc/menu/xonotic/dialog_settings_game_model.qc:66 msgid "GIBS^Few" @@ -7981,19 +7986,19 @@ msgstr "Modelos" #: qcsrc/menu/xonotic/dialog_settings_game_model.qh:8 msgid "Customize how players and items are displayed in game" -msgstr "Personalize como jogadores e itens são exibidos dentro do jogo" +msgstr "Personalizar como os jogadores e itens são mostrados dentro do jogo" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:26 msgid "1st person perspective" -msgstr "Perspectiva em 1ª pessoa" +msgstr "Perspetiva na 1ª pessoa" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:30 msgid "Slide to third person upon death" -msgstr "Mudar para terceira pessoa depois de morrer" +msgstr "Mudar para a terceira pessoa depois de morrer" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:34 msgid "Smooth the view when landing from a jump" -msgstr "Suavizar a visão quando aterrissar de um salto" +msgstr "Suavizar a visão quando aterrar de um salto" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:38 msgid "Smooth the view while crouching" @@ -8009,7 +8014,7 @@ msgstr "Oscilação de visão ao andar" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:51 msgid "3rd person perspective" -msgstr "Perspectiva em 3ª pessoa" +msgstr "Perspetiva na 3ª pessoa" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:55 msgid "Back distance" @@ -8021,7 +8026,7 @@ msgstr "Distância para cima" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:67 msgid "Allow passing through walls while spectating" -msgstr "Atravessar paredes quando estiver de espectador" +msgstr "Atravessar paredes quando for espetador" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:70 msgid "Field of view:" @@ -8046,7 +8051,7 @@ msgstr "Velocidade do zoom:" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:83 msgid "How fast the view will be zoomed, disable to zoom instantly" -msgstr "Quão rápido será o zoom da visão, desabilite para zoom instantâneo" +msgstr "Quão rápido será o zoom da visão, desativa para zoom instantâneo" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:92 msgid "ZOOM^Instant" @@ -8061,8 +8066,8 @@ msgid "" "How zoom changes sensitivity, from 0 (lower sensitivity) to 1 (no " "sensitivity change)" msgstr "" -"Como o zoom altera a sensibilidade, a partir do valor 0 (sensibilidade mais " -"baixa) para 1 (sem alterações na sensibilidade)" +"Como o zoom altera a sensibilidade. A partir do valor 0 (sensibilidade mais " +"baixa) até 1 (sem alterações na sensibilidade)" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:101 msgid "Velocity zoom" @@ -8070,7 +8075,7 @@ msgstr "Zoom baseado na velocidade" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:102 msgid "Forward movement only" -msgstr "Apenas ao movimentar-se para frente" +msgstr "Apenas no movimento para a frente" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:106 msgid "VZOOM^Factor" @@ -8078,15 +8083,15 @@ msgstr "Fator" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:113 msgid "Display reticle 2D overlay while zooming" -msgstr "Exibe uma sobreposição reticular em 2D durante o zoom" +msgstr "Mostra uma sobreposição reticular em 2D durante o zoom" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:116 msgid "Release zoom when you die or respawn" -msgstr "Soltar o zoom quando você morre ou ressurge" +msgstr "Largar o zoom quando morro ou ressurgo" #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:120 msgid "Release zoom when you switch weapons" -msgstr "Soltar o zoom quando você troca de arma" +msgstr "Largar o zoom quando troco de arma" #: qcsrc/menu/xonotic/dialog_settings_game_view.qh:7 #: qcsrc/menu/xonotic/keybinder.qc:76 @@ -8112,50 +8117,49 @@ msgstr "Usar lista de prioridades como ordem de alternação de armas" #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:51 msgid "" "Make use of the list above when cycling through weapons with the mouse wheel" -msgstr "" -"Faz uso da lista acima durante a alternação de armas com a roda do mouse" +msgstr "Usar a lista acima durante a alternação de armas com a roda do rato" #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:53 msgid "Cycle through only usable weapon selections" -msgstr "Alterne somente entre armas utilizáveis" +msgstr "Alternar apenas entre armas utilizáveis" #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:57 msgid "Auto switch weapons on pickup" -msgstr "Trocar para a arma coletada automaticamente" +msgstr "Trocar para a arma apanhada automaticamente" #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:58 msgid "" "Automatically switch to newly picked up weapons if they are better than what " "you are carrying" msgstr "" -"Alterna automaticamente para a arma coletada caso ela seja melhor do que a " -"que você está carregando" +"Muda automaticamente para a arma apanhada caso ela seja melhor do que a que " +"estiveres a carregar" #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:61 msgid "Release attack buttons when you switch weapons" -msgstr "Soltar os botões de ataque durante a troca de arma" +msgstr "Libertar os botões de ataque quando troco de arma" #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:64 msgid "Draw 1st person weapon model" -msgstr "Renderizar modelo de arma em 1ª pessoa" +msgstr "Renderizar modelo de arma na 1ª pessoa" #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:65 msgid "Draw the weapon model" -msgstr "Exibe os modelos das armas em sua tela" +msgstr "Mostra os modelos das armas no ecrã" #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:69 #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:72 #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:75 msgid "Position of the weapon model; requires reconnect" -msgstr "Posicionamento do modelo de arma; é preciso reconectar-se" +msgstr "Posicionamento do modelo da arma; necessita de reconexão" #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:80 msgid "Gun model swaying" -msgstr "Mover modelo de arma ao mover o mouse" +msgstr "Mover modelo de arma ao mover o rato" #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:85 msgid "Gun model bobbing" -msgstr "Oscilar modelo de arma" +msgstr "Oscilar modelo da arma" #: qcsrc/menu/xonotic/dialog_settings_game_weapons.qh:7 #: qcsrc/menu/xonotic/keybinder.qc:43 @@ -8180,11 +8184,11 @@ msgstr "Limpar" #: qcsrc/menu/xonotic/dialog_settings_input.qc:52 msgid "Reset all" -msgstr "Redefinir tudo" +msgstr "Repor tudo" #: qcsrc/menu/xonotic/dialog_settings_input.qc:57 msgid "Mouse" -msgstr "Mouse" +msgstr "Rato" #: qcsrc/menu/xonotic/dialog_settings_input.qc:59 msgid "Sensitivity:" @@ -8192,50 +8196,50 @@ msgstr "Sensibilidade:" #: qcsrc/menu/xonotic/dialog_settings_input.qc:61 msgid "Mouse speed multiplier" -msgstr "Multiplicador da velocidade do mouse" +msgstr "Multiplicador da velocidade do rato" #: qcsrc/menu/xonotic/dialog_settings_input.qc:63 msgid "Smooth aiming" -msgstr "Suavizar mouse" +msgstr "Suavizar rato" #: qcsrc/menu/xonotic/dialog_settings_input.qc:64 msgid "Smoothes the mouse movement, but makes aiming slightly less responsive" msgstr "" -"Suaviza os movimentos do mouse, mas torna a mira levemente menos responsiva" +"Suaviza os movimentos do rato, mas torna a mira um pouco menos responsiva" #: qcsrc/menu/xonotic/dialog_settings_input.qc:66 msgid "Invert aiming" -msgstr "Inverter mouse" +msgstr "Inverter rato" #: qcsrc/menu/xonotic/dialog_settings_input.qc:67 msgid "Invert mouse movement on the Y-axis" -msgstr "Inverter eixo Y do movimento do mouse" +msgstr "Inverter eixo Y do movimento do rato" #: qcsrc/menu/xonotic/dialog_settings_input.qc:69 msgid "Use system mouse positioning" -msgstr "Usar posicionamento de mouse do sistema" +msgstr "Usar posicionamento do rato do sistema" #: qcsrc/menu/xonotic/dialog_settings_input.qc:74 msgid "Enable built in mouse acceleration" -msgstr "Habilitar aceleração de mouse imbutida" +msgstr "Ativar aceleração de rato embebida" #: qcsrc/menu/xonotic/dialog_settings_input.qc:78 #: qcsrc/menu/xonotic/dialog_settings_input.qc:82 #: qcsrc/menu/xonotic/dialog_settings_input.qc:85 msgid "Disable system mouse acceleration" -msgstr "Desabilitar aceleração de mouse do SO" +msgstr "Desativar aceleração do rato do sistema" #: qcsrc/menu/xonotic/dialog_settings_input.qc:79 msgid "Make use of DGA mouse input" -msgstr "Fazer uso da entrada DGA de mouse" +msgstr "Fazer uso da entrada DGA do rato" #: qcsrc/menu/xonotic/dialog_settings_input.qc:93 msgid "Pressing \"enter console\" key also closes it" -msgstr " Pressionar \"abrir console\" também o fecha" +msgstr " Pressionar a tecla \"abrir consola\" também a fecha" #: qcsrc/menu/xonotic/dialog_settings_input.qc:94 msgid "Allow the console toggling bind to also close the console" -msgstr "Permite que o atalho para abrir o console também feche-o" +msgstr "Permite que o atalho para abrir a consola também a feixe" #: qcsrc/menu/xonotic/dialog_settings_input.qc:96 msgid "Automatically repeat jumping if holding jump" @@ -8247,11 +8251,11 @@ msgstr "Mochila a jato ao saltar:" #: qcsrc/menu/xonotic/dialog_settings_input.qc:101 msgid "JPJUMP^Disabled" -msgstr "Desabilitado" +msgstr "Desativado" #: qcsrc/menu/xonotic/dialog_settings_input.qc:102 msgid "Air only" -msgstr "Somente no ar" +msgstr "Apenas no ar" #: qcsrc/menu/xonotic/dialog_settings_input.qc:103 msgid "JPJUMP^All" @@ -8277,7 +8281,7 @@ msgstr "Cancelar" #: qcsrc/menu/xonotic/dialog_settings_input_userbind.qh:7 msgid "User defined key bind" -msgstr "Botão de atalho definido pelo usuário" +msgstr "Botão de atalho definido pelo utilizador" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:11 #, c-format @@ -8306,7 +8310,7 @@ msgstr "Porta UDP do cliente:" msgid "Force client to use chosen port unless it is set to 0" msgstr "" "Força os clientes a utilizarem as portas escolhidas a menos que esteja " -"definido como 0 " +"definido como 0" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:34 msgid "Bandwidth:" @@ -8314,7 +8318,7 @@ msgstr "Largura de banda:" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:36 msgid "Specify your network speed" -msgstr "Especifique a velocidade da sua rede" +msgstr "Especifica a velocidade da tua rede" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:37 msgid "56k" @@ -8350,15 +8354,15 @@ msgstr "Consultas ao servidor/s:" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:52 msgid "Downloads:" -msgstr "Downloads:" +msgstr "Descarregamentos:" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:54 msgid "Maximum number of concurrent HTTP/FTP downloads" -msgstr "Número máximo de downloads simultâneos via HTTP/FTP" +msgstr "Número máximo de descarregamentos simultâneos via HTTP/FTP" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:56 msgid "Download speed:" -msgstr "Velocidade de download:" +msgstr "Velocidade de descarregamento:" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:69 msgid "Local latency:" @@ -8366,11 +8370,11 @@ msgstr "Latência local:" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:73 msgid "Show netgraph" -msgstr "Exibir gráfico de rede" +msgstr "Mostrar gráfico de rede" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:74 msgid "Show a graph of packet sizes and other information" -msgstr "Exibe um gráfico de tamanhos de pacotes e outras informações" +msgstr "Mostra um gráfico de tamanhos de pacotes e outras informações" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:76 msgid "Client-side movement prediction" @@ -8402,11 +8406,11 @@ msgstr "Alvo:" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:104 msgid "TRGT^Disabled" -msgstr "Desabilitado" +msgstr "Desativado" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:116 msgid "Idle limit:" -msgstr "Em segundo plano:" +msgstr "Limite em segundo plano:" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:122 msgid "IDLFPS^Unlimited" @@ -8414,15 +8418,15 @@ msgstr "Ilimitado" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:126 msgid "Save processing time for other apps" -msgstr "Salvar tempo de processamento para outras aplicações" +msgstr "Gravar tempo de processamento para outras aplicações" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:129 msgid "Show frames per second" -msgstr "Exibir taxa de quadros por segundo" +msgstr "Mostrar taxa de quadros por segundo" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:130 msgid "Show your rendered frames per second" -msgstr "Exibe a sua taxa de quadros por segundo" +msgstr "Mostra a tua taxa de quadros por segundo" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:135 msgid "Menu tooltips:" @@ -8433,12 +8437,12 @@ msgid "" "Menu tooltips: disabled, standard or advanced (also shows cvar or console " "command bound to the menu item)" msgstr "" -"Dicas de menu: desabilitado, padrão ou avançado (também mostra a cvar ou " -"comando de console ligado ao item de menu)" +"Dicas de menu: desativado, padrão ou avançado (também mostra a cvar ou " +"comando da consola ligado ao item do menu)" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:138 msgid "TLTIP^Disabled" -msgstr "Desabilitado" +msgstr "Desativado" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:139 msgid "TLTIP^Standard" @@ -8450,15 +8454,15 @@ msgstr "Avançado" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:143 msgid "Show current date and time" -msgstr "Exibir data e hora atual" +msgstr "Mostrar data e hora atual" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:144 msgid "Show current date and time of day, useful on screenshots" -msgstr "Exibe a data e hora atual do dia, útil para screenshots" +msgstr "Mostra a data e hora atual do dia, útil para capturas de ecrã" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:147 msgid "Enable developer mode" -msgstr "Habilitar modo de desenvolvedor" +msgstr "Ativar modo de programador" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:151 msgid "Advanced settings..." @@ -8466,13 +8470,12 @@ msgstr "Configurações avançadas..." #: qcsrc/menu/xonotic/dialog_settings_misc.qc:152 msgid "Advanced settings where you can tweak every single variable of the game" -msgstr "" -"Definições avançadas onde você poderá ajustar cada uma das variáveis do jogo" +msgstr "Definições avançadas onde podes ajustar cada uma das variáveis do jogo" #: qcsrc/menu/xonotic/dialog_settings_misc.qc:157 #: qcsrc/menu/xonotic/dialog_settings_misc_reset.qh:6 msgid "Factory reset" -msgstr "Configurações padrões" +msgstr "Configurações de fábrica" #: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:31 msgid "Cvar filter:" @@ -8480,7 +8483,7 @@ msgstr "Filtro de cvar:" #: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:38 msgid "Modified cvars only" -msgstr "Somente cvars modificadas" +msgstr "Apenas cvars alteradas" #: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:45 msgid "Setting:" @@ -8505,13 +8508,14 @@ msgstr "Configurações avançadas" #: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:11 msgid "Are you sure you want to reset all settings?" msgstr "" -"Tem certeza de que deseja redefinir todas as configurações para o padrão?" +"Tens certeza de que queres redefinir todas as configurações para as " +"originais?" #: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:13 msgid "This will create a backup config in your data directory" msgstr "" -"Isso irá criar uma cópia da sua configuração na seguinte pasta: C:\\Users" -"\\[usuário]\\Saved Games\\xonotic\\data" +"Isto irá criar uma cópia da tua configuração na seguinte pasta: C:\\Users" +"\\[utilizador]\\Saved Games\\xonotic\\data" #: qcsrc/menu/xonotic/dialog_settings_user.qc:25 msgid "Menu Skins" @@ -8527,7 +8531,7 @@ msgstr "Definir idioma" #: qcsrc/menu/xonotic/dialog_settings_user.qc:74 msgid "Disable gore effects and harsh language" -msgstr "Desabilitar sangue e linguagem inapropriada" +msgstr "Desativar sangue e linguagem inapropriada" #: qcsrc/menu/xonotic/dialog_settings_user.qc:75 msgid "" @@ -8535,18 +8539,19 @@ msgid "" "(default: disabled)" msgstr "" "Substitui o sangue com conteúdo que não contém nenhum efeito violento " -"(padrão: desabilitado)" +"(padrão: desativado)" #: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:10 msgid "While connected language changes will be applied only to the menu," msgstr "" -"Enquanto estiver conectado, alterações no idioma serão aplicadas somente no " -"menu." +"Enquanto estiver conectado, as alterações no idioma serão aplicadas apenas " +"no menu." #: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:12 msgid "full language changes will take effect starting from the next game" msgstr "" -"Alterações completas de idioma surtirão efeito a partir da próxima partida" +"As alterações completas de idioma surtirão efeito apenas a partir da próxima " +"partida" #: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:16 msgid "Disconnect now" @@ -8622,7 +8627,7 @@ msgstr "32bit" #: qcsrc/menu/xonotic/dialog_settings_video.qc:59 msgid "Full screen" -msgstr "Tela cheia" +msgstr "Ecrã inteiro" #: qcsrc/menu/xonotic/dialog_settings_video.qc:61 msgid "Vertical Synchronization" @@ -8633,13 +8638,13 @@ msgid "" "Enable vertical synchronization to prevent tearing, will cap your fps to the " "screen refresh rate (default: disabled)" msgstr "" -"Habilita a sincronização vertical para evitar cortes na tela. Isso irá " -"limitar a quantidade de quadros por segundo em relação à taxa de atualização " -"do monitor (padrão: desabilitado)" +"Ativa a sincronização vertical para evitar cortes no ecrã. Isto irá limitar " +"a quantidade de frames por segundo em relação à taxa de atualização do " +"monitor (padrão: desativado)" #: qcsrc/menu/xonotic/dialog_settings_video.qc:67 msgid "Flip view horizontally" -msgstr "Girar a visão horizontalmente" +msgstr "Inverter a visão na horizontal" #: qcsrc/menu/xonotic/dialog_settings_video.qc:68 msgid "Poor man's left handed mode (default: off)" @@ -8655,7 +8660,7 @@ msgstr "Qualidade do filtro anisotrópico (padrão: 1x)" #: qcsrc/menu/xonotic/dialog_settings_video.qc:74 msgid "ANISO^Disabled" -msgstr "Desabilitado" +msgstr "Desativado" #: qcsrc/menu/xonotic/dialog_settings_video.qc:75 #: qcsrc/menu/xonotic/dialog_settings_video.qc:86 @@ -8684,12 +8689,12 @@ msgid "" "Enable antialiasing, which smooths the edges of 3D geometry. Note that it " "might decrease performance by quite a lot (default: disabled)" msgstr "" -"Habilita o anti-serrilhado, o qual suaviza as bordas da geometria em 3D. " -"Note que isso pode diminuir bastante o desempenho (padrão: desabilitado)" +"Ativa o anti-serrilhado, o qual suaviza as bordas da geometria em 3D. Nota " +"que isto pode diminuir bastante o desempenho (padrão: desativado)" #: qcsrc/menu/xonotic/dialog_settings_video.qc:85 msgid "AA^Disabled" -msgstr "Desabilitado" +msgstr "Desativado" #: qcsrc/menu/xonotic/dialog_settings_video.qc:92 msgid "High-quality frame buffer" @@ -8704,12 +8709,12 @@ msgid "" "Eliminate overdraw by rendering a depth-only version of the scene before the " "normal rendering starts (default: disabled)" msgstr "" -"Elimina o sobredesenho renderizando uma versão de profundidade única da cena " -"antes que a renderização normal comece (padrão: desabilitado)" +"Elimina o sobre desenho renderizando uma versão de profundidade única da " +"cena antes que a renderização normal comece (padrão: desativado)" #: qcsrc/menu/xonotic/dialog_settings_video.qc:100 msgid "DF^Disabled" -msgstr "Desabilitado" +msgstr "Desativado" #: qcsrc/menu/xonotic/dialog_settings_video.qc:101 msgid "DF^World" @@ -8797,19 +8802,19 @@ msgid "" "requires GLSL color control (default: 1)" msgstr "" "Ajuste da saturação (0 = tons de cinza, 1 = normal, 2 = muito saturado), " -"requer controle de cor GLSL (padrão: 1)" +"requer controlo da cor GLSL (padrão: 1)" #: qcsrc/menu/xonotic/dialog_settings_video.qc:146 msgid "LIT^Ambient:" -msgstr "Iluminação ambiental:" +msgstr "Iluminação do ambiente:" #: qcsrc/menu/xonotic/dialog_settings_video.qc:148 msgid "" "Ambient lighting, if set too high it tends to make light on maps look dull " "and flat (default: 4)" msgstr "" -"Iluminação ambiental, caso o valor seja muito alto, poderá fazer com que as " -"luzes dos mapas fiquem achatadas e sem graça (padrão: 4)" +"Iluminação do ambiente, caso o valor seja muito alto, poderá fazer com que " +"as luzes dos mapas fiquem achatadas e sem piada (padrão: 4)" #: qcsrc/menu/xonotic/dialog_settings_video.qc:150 msgid "Intensity:" @@ -8821,16 +8826,16 @@ msgstr "Brilho geral da renderização (padrão: 1)" #: qcsrc/menu/xonotic/dialog_settings_video.qc:155 msgid "Wait for GPU to finish each frame" -msgstr "Esperar que a placa de vídeo termine cada quadro" +msgstr "Esperar que a placa gráfica termine cada frame" #: qcsrc/menu/xonotic/dialog_settings_video.qc:156 msgid "" "Make the CPU wait for the GPU to finish each frame, can help with some " "strange input or video lag on some machines (default: disabled)" msgstr "" -"Faz com que o processador espere pela placa de vídeo terminar cada quadro. " -"Pode ajudar no caso de alguns atrasos nos dispositivos de entrada ou lag de " -"vídeo em algumas máquinas (padrão: desabilitado)" +"Faz com que o processador espere pela placa de gráfica termine de renderizar " +"cada frame. Pode ajudar em alguns casos de atrasos nos dispositivos de " +"entrada ou atrasos de vídeo em algumas máquinas (padrão: desativado)" #: qcsrc/menu/xonotic/dialog_settings_video.qc:158 msgid "Use OpenGL 2.0 shaders (GLSL)" @@ -8838,27 +8843,27 @@ msgstr "Usar shaders de OpenGL 2.0 (GLSL)" #: qcsrc/menu/xonotic/dialog_settings_video.qc:162 msgid "Use GLSL to handle color control" -msgstr "Usar GLSL para o controle de cores" +msgstr "Usar GLSL para o controlo das cores" #: qcsrc/menu/xonotic/dialog_settings_video.qc:163 msgid "" "Enable use of GLSL to apply gamma correction, note that it might decrease " "performance by a lot (default: disabled)" msgstr "" -"Habilita o uso de GLSL para aplicar correção de gama. Note que isso pode " -"diminuir bastante o desempenho (padrão: desabilitado)" +"Ativa o uso de GLSL para aplicar a correção de gama. Nota que isto pode " +"diminuir bastante o desempenho (padrão: desativado)" #: qcsrc/menu/xonotic/dialog_settings_video.qc:168 msgid "Psycho coloring (easter egg)" -msgstr "Cores 'Psycho' (easter egg)" +msgstr "Cores psicadélicas (easter egg)" #: qcsrc/menu/xonotic/dialog_settings_video.qc:171 msgid "Trippy vertices (easter egg)" -msgstr "Vértices 'Trip' (easter egg)" +msgstr "Vértices viagem (easter egg)" #: qcsrc/menu/xonotic/dialog_singleplayer.qc:110 msgid "Instant action! (random map with bots)" -msgstr "Ação Instantânea! (mapa aleatório com bots)" +msgstr "Ação instantânea! (mapa aleatório com robôs)" #: qcsrc/menu/xonotic/dialog_singleplayer.qc:117 msgid "???" @@ -8891,8 +8896,8 @@ msgstr "Um Jogador" #: qcsrc/menu/xonotic/dialog_singleplayer.qh:7 msgid "Play the singleplayer campaign or instant action matches against bots" msgstr "" -"Jogue a campanha de um jogador ou inicie uma partida de ação instantânea " -"contra bots" +"Joga a campanha de um jogador ou inicia uma partida de ação instantânea " +"contra robôs" #: qcsrc/menu/xonotic/dialog_singleplayer_winner.qh:7 msgid "Winner" @@ -8900,11 +8905,11 @@ msgstr "Vencedor" #: qcsrc/menu/xonotic/dialog_teamselect.qc:32 msgid "join 'best' team (auto-select)" -msgstr "juntar-se à 'melhor' equipe (seleção automática)" +msgstr "juntar-me à 'melhor' equipa (seleção automática)" #: qcsrc/menu/xonotic/dialog_teamselect.qc:33 msgid "Autoselect team (recommended)" -msgstr "Selecionar equipe automaticamente (recomendado)" +msgstr "Selecionar equipa automaticamente (recomendado)" #: qcsrc/menu/xonotic/dialog_teamselect.qc:37 msgid "red" @@ -8928,21 +8933,21 @@ msgstr "assistir" #: qcsrc/menu/xonotic/dialog_teamselect.qh:7 msgid "Team Selection" -msgstr "Seleção de Equipe" +msgstr "Seleção de Equipa" #: qcsrc/menu/xonotic/dialog_uid2name.qc:10 msgid "Allow player statistics to use your nickname?" -msgstr "Permitir que as estatísticas de jogadores usem o seu apelido?" +msgstr "Permitir que as estatísticas de jogadores usem o teu apelido?" #: qcsrc/menu/xonotic/dialog_uid2name.qc:12 msgid "Answering \"No\" you will appear as \"Anonymous player\"" msgstr "" -"Selecionando \"Não\" você aparecerá como \"Anonymous player\" (em português, " -"\"Jogador anônimo\")" +"Selecionando \"Não\" aparecerás como \"Anonymous player\" (em português, " +"\"Jogador anónimo\")" #: qcsrc/menu/xonotic/gametypelist.qc:86 msgid "teamplay" -msgstr "jogo em equipe" +msgstr "jogo em equipa" #: qcsrc/menu/xonotic/gametypelist.qc:88 msgid "free for all" @@ -8954,19 +8959,19 @@ msgstr "Movimento" #: qcsrc/menu/xonotic/keybinder.qc:30 msgid "forward" -msgstr "Mover-se para frente" +msgstr "mover para frente" #: qcsrc/menu/xonotic/keybinder.qc:31 msgid "backpedal" -msgstr "Mover-se para trás" +msgstr "mover para trás" #: qcsrc/menu/xonotic/keybinder.qc:32 msgid "strafe left" -msgstr "Mover-se para a esquerda" +msgstr "mover para a esquerda" #: qcsrc/menu/xonotic/keybinder.qc:33 msgid "strafe right" -msgstr "Mover-se para a direita" +msgstr "mover para a direita" #: qcsrc/menu/xonotic/keybinder.qc:34 msgid "jump / swim" @@ -9010,7 +9015,7 @@ msgstr "recarregar" #: qcsrc/menu/xonotic/keybinder.qc:49 msgid "drop weapon / throw nade" -msgstr "largar arma / arremessar granada" +msgstr "largar arma / atirar granada" #: qcsrc/menu/xonotic/keybinder.qc:77 msgid "hold zoom" @@ -9022,11 +9027,11 @@ msgstr "ativar/desativar zoom" #: qcsrc/menu/xonotic/keybinder.qc:79 msgid "show scores" -msgstr "exibir pontuações" +msgstr "mostrar pontuações" #: qcsrc/menu/xonotic/keybinder.qc:80 msgid "screen shot" -msgstr "tirar screenshot" +msgstr "tirar captura de ecrã" #: qcsrc/menu/xonotic/keybinder.qc:81 msgid "maximize radar" @@ -9034,11 +9039,11 @@ msgstr "maximizar radar" #: qcsrc/menu/xonotic/keybinder.qc:82 msgid "3rd person view" -msgstr "visão em 3ª pessoa" +msgstr "visão na 3ª pessoa" #: qcsrc/menu/xonotic/keybinder.qc:83 msgid "enter spectator mode" -msgstr "entrar no modo de expectador" +msgstr "entrar no modo de espectador" #: qcsrc/menu/xonotic/keybinder.qc:85 msgid "Communicate" @@ -9046,15 +9051,15 @@ msgstr "Comunicação" #: qcsrc/menu/xonotic/keybinder.qc:86 msgid "public chat" -msgstr "Bate-papo público" +msgstr "Conversação pública" #: qcsrc/menu/xonotic/keybinder.qc:87 qcsrc/menu/xonotic/keybinder.qc:100 msgid "team chat" -msgstr "Bate-papo de equipe" +msgstr "Conversação da equipa" #: qcsrc/menu/xonotic/keybinder.qc:88 msgid "show chat history" -msgstr "exibir histórico do bate-papo" +msgstr "mostrar histórico da conversação" #: qcsrc/menu/xonotic/keybinder.qc:89 msgid "vote YES" @@ -9070,7 +9075,7 @@ msgstr "Cliente" #: qcsrc/menu/xonotic/keybinder.qc:95 msgid "enter console" -msgstr "abrir o console" +msgstr "abrir a consola" #: qcsrc/menu/xonotic/keybinder.qc:96 msgid "disconnect" @@ -9082,7 +9087,7 @@ msgstr "sair" #: qcsrc/menu/xonotic/keybinder.qc:101 msgid "auto-join team" -msgstr "juntar-se à uma equipe automáticamente" +msgstr "juntar-me a uma equipa automaticamente" #: qcsrc/menu/xonotic/keybinder.qc:103 msgid "drop key / drop flag" @@ -9102,17 +9107,17 @@ msgstr "arrastar objeto" #: qcsrc/menu/xonotic/keybinder.qc:110 msgid "User defined" -msgstr "Definido pelo usuário" +msgstr "Definido pelo utilizador" #: qcsrc/menu/xonotic/mainwindow.qc:64 qcsrc/menu/xonotic/mainwindow.qc:67 msgid "Do not press this button again!" -msgstr "Não aperte este botão novamente!" +msgstr "Não pressiones este botão outra vez!" #: qcsrc/menu/xonotic/maplist.qc:291 msgid "" "Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" msgstr "" -"Huh? Não posso jogar isto (m é NULO). Refiltrando para que isso não ocorra " +"Huh? Não posso jogar isto (m é NULO). Refiltrando para que isto não ocorra " "novamente.\n" #: qcsrc/menu/xonotic/maplist.qc:299 @@ -9125,12 +9130,12 @@ msgid "" "Huh? Can't play this (invalid game type). Refiltering so this won't happen " "again.\n" msgstr "" -"Huh? Não posso jogar isto (modo de jogo inválido). Refiltrando para que isso " +"Huh? Não posso jogar isto (modo de jogo inválido). Refiltrando para que isto " "não ocorra novamente.\n" #: qcsrc/menu/xonotic/playerlist.qc:100 qcsrc/menu/xonotic/playerlist.qc:110 msgid "spectator" -msgstr "espectador" +msgstr "espetador" #: qcsrc/menu/xonotic/playermodel.qc:170 msgid "<no model found>" @@ -9138,7 +9143,7 @@ msgstr "<nenhum modelo encontrado>" #: qcsrc/menu/xonotic/serverlist.qc:273 msgid "Favorite" -msgstr "Favoritar" +msgstr "Adicionar aos favoritos" #: qcsrc/menu/xonotic/serverlist.qc:274 msgid "" @@ -9185,7 +9190,7 @@ msgstr "modificação: %s" #: qcsrc/menu/xonotic/serverlist.qc:1063 #, c-format msgid "modified settings" -msgstr "configurações modificadas" +msgstr "configurações alteradas" #: qcsrc/menu/xonotic/serverlist.qc:1063 #, c-format @@ -9194,11 +9199,11 @@ msgstr "configurações oficiais" #: qcsrc/menu/xonotic/serverlist.qc:1065 msgid "stats disabled" -msgstr "estatísticas desabilitadas" +msgstr "estatísticas desativadas" #: qcsrc/menu/xonotic/serverlist.qc:1065 msgid "stats enabled" -msgstr "estatísticas habilitadas" +msgstr "estatísticas ativadas" #: qcsrc/menu/xonotic/serverlist.qh:151 msgid "SLCAT^Favorites" @@ -9222,7 +9227,7 @@ msgstr "Modo Competitivo" #: qcsrc/menu/xonotic/serverlist.qh:156 msgid "SLCAT^Modified Servers" -msgstr "Servidores Modificados" +msgstr "Servidores Alterados" #: qcsrc/menu/xonotic/serverlist.qh:157 msgid "SLCAT^Overkill" @@ -9263,7 +9268,7 @@ msgid "" "gives for better performance (default: 1)" msgstr "" "Multiplicador para a quantidade de partículas. Menos significa menos " -"partículas, o que resulta em um melhor desempenho (padrão: 1)" +"partículas, o que resulta num melhor desempenho (padrão: 1)" #: qcsrc/menu/xonotic/slider_particles.qc:14 msgid "PART^OMG" @@ -9306,7 +9311,7 @@ msgstr "" #: qcsrc/menu/xonotic/slider_resolution.qc:115 msgid "Screen resolution" -msgstr "Resolução da tela" +msgstr "Resolução do ecrã" #: qcsrc/menu/xonotic/slider_sbfadetime.qc:13 msgid "PART^Slow" @@ -9420,12 +9425,12 @@ msgid "" "Update can be downloaded at:\n" "%s\n" msgstr "" -"A atualização pode ser baixada em:\n" +"A atualização pode ser descarregada em:\n" "%s\n" #: qcsrc/menu/xonotic/util.qc:528 msgid "Autogenerating mapinfo for newly added maps..." -msgstr "Gerando mapinfo automaticamente para os novos mapas adicionados..." +msgstr "A gerar mapinfo automaticamente para os novos mapas adicionados..." #: qcsrc/menu/xonotic/util.qc:557 #, c-format @@ -9435,15 +9440,15 @@ msgstr "^1%s VERSÃO DE TESTE" #: qcsrc/menu/xonotic/util.qc:577 #, c-format msgid "Update to %s now!" -msgstr "Atualize para %s agora!" +msgstr "Atualizar para %s agora!" #: qcsrc/menu/xonotic/util.qc:662 msgid "" "^1ERROR: Texture compression is required but not supported.\n" "^1Expect visual problems.\n" msgstr "" -"^1ERRO: A compressão de texturas é necessária, mas não é suportada.\n" -"^1Espere problemas visuais.\n" +"^1ERRO: a compressão de texturas é necessária, mas não é suportada.\n" +"^1Conta com prováveis problemas visuais.\n" "\n" #: qcsrc/menu/xonotic/util.qc:780 @@ -9452,14 +9457,14 @@ msgstr "Usar padrão" #: qcsrc/menu/xonotic/util.qc:800 msgid "Team Color:" -msgstr "Cor de Equipe:" +msgstr "Cor da Equipa:" #: qcsrc/menu/xonotic/util.qh:44 msgid "Enable panel" -msgstr "Habilitar painel" +msgstr "Ativar painel" #~ msgid "QMCMD^Chat" -#~ msgstr "Bate-papo" +#~ msgstr "Conversação" #~ msgid "^BG%s%s^K1 got too close ^BG%s^K1's rocket%s%s" -#~ msgstr "^BG%s%s^K1 chegou muito perto do foguete de ^BG%s^K1%s%s" +#~ msgstr "^BG%s%s^K1 chegou muito perto do míssil de ^BG%s^K1%s%s" diff --git a/common.pt_BR.po b/common.pt_BR.po new file mode 100644 index 0000000000..c3b8efc999 --- /dev/null +++ b/common.pt_BR.po @@ -0,0 +1,9465 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Ivan Paulos Tomé <greylica@gmail.com>, 2016 +# Jean Trindade Pereira <jean_trindade2@hotmail.com>, 2018 +# Mirio <opivy@hotmail.de>, 2017 +# NotThatPrivate Yes <henriqueferreira2009@gmail.com>, 2015 +# Ricardo Manuel da Cruz Coelho da Silva <ricardo.mccs@gmail.com>, 2015 +# Rui <xymarior@yandex.com>, 2018 +msgid "" +msgstr "" +"Project-Id-Version: Xonotic\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-09 00:35+0200\n" +"PO-Revision-Date: 2018-05-22 14:42+0000\n" +"Last-Translator: Jean Trindade Pereira <jean_trindade2@hotmail.com>\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/team-xonotic/" +"xonotic/language/pt_BR/)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: qcsrc/client/hud/hud_config.qc:239 +#, c-format +msgid "^2Successfully exported to %s! (Note: It's saved in data/data/)\n" +msgstr "^2Exportado com sucesso para %s! (Nota: Foi salvo em data/data/)\n" + +#: qcsrc/client/hud/hud_config.qc:243 +#, c-format +msgid "^1Couldn't write to %s\n" +msgstr "^1Não foi possível escrever para %s\n" + +#: qcsrc/client/hud/panel/chat.qc:82 +msgid "^3Player^7: This is the chat area." +msgstr "^3Jogador^7: Isto é a área do bate-papo." + +#: qcsrc/client/hud/panel/engineinfo.qc:69 +#, c-format +msgid "FPS: %.*f" +msgstr "FPS: %.*f" + +#: qcsrc/client/hud/panel/infomessages.qc:87 +msgid "^1Observing" +msgstr "^1Observando" + +#: qcsrc/client/hud/panel/infomessages.qc:89 +#, c-format +msgid "^1Spectating: ^7%s" +msgstr "^1Assistindo: ^7%s" + +#: qcsrc/client/hud/panel/infomessages.qc:100 +#, c-format +msgid "^1Press ^3%s^1 to spectate" +msgstr "^1Aperte ^3%s^1 para assistir" + +#: qcsrc/client/hud/panel/infomessages.qc:100 +#: qcsrc/menu/xonotic/keybinder.qc:40 +msgid "primary fire" +msgstr "disparo primário" + +#: qcsrc/client/hud/panel/infomessages.qc:102 +#, c-format +msgid "^1Press ^3%s^1 or ^3%s^1 for next or previous player" +msgstr "^1Aperte ^3%s^1 ou ^3%s^1 para o jogador seguinte ou anterior" + +#: qcsrc/client/hud/panel/infomessages.qc:102 +#: qcsrc/client/hud/panel/infomessages.qc:106 +msgid "next weapon" +msgstr "arma seguinte" + +#: qcsrc/client/hud/panel/infomessages.qc:102 +#: qcsrc/client/hud/panel/infomessages.qc:106 +msgid "previous weapon" +msgstr "arma anterior" + +#: qcsrc/client/hud/panel/infomessages.qc:106 +#, c-format +msgid "^1Use ^3%s^1 or ^3%s^1 to change the speed" +msgstr "^1Use ^3%s^1 ou ^3%s^1 para alterar a velocidade" + +#: qcsrc/client/hud/panel/infomessages.qc:108 +#, c-format +msgid "^1Press ^3%s^1 to observe, ^3%s^1 to change camera mode" +msgstr "^1Aperte ^3%s^1 para observar e ^3%s^1 para alterar o modo da câmera" + +#: qcsrc/client/hud/panel/infomessages.qc:108 +#: qcsrc/common/vehicles/cl_vehicles.qc:192 +msgid "drop weapon" +msgstr "largar arma" + +#: qcsrc/client/hud/panel/infomessages.qc:108 +#: qcsrc/menu/xonotic/keybinder.qc:41 +msgid "secondary fire" +msgstr "disparo secundário" + +#: qcsrc/client/hud/panel/infomessages.qc:111 +#, c-format +msgid "^1Press ^3%s^1 for gamemode info" +msgstr "^1Aperte ^3%s^1 para ver as informações do modo de jogo" + +#: qcsrc/client/hud/panel/infomessages.qc:111 +#: qcsrc/menu/xonotic/keybinder.qc:94 +msgid "server info" +msgstr "informações do servidor" + +#: qcsrc/client/hud/panel/infomessages.qc:124 +msgid "^1Match has already begun" +msgstr "^1A partida já começou" + +#: qcsrc/client/hud/panel/infomessages.qc:126 +msgid "^1You have no more lives left" +msgstr "^1Você não tem mais vidas sobrando" + +#: qcsrc/client/hud/panel/infomessages.qc:128 +#: qcsrc/client/hud/panel/infomessages.qc:131 +#, c-format +msgid "^1Press ^3%s^1 to join" +msgstr "^1Aperte ^3%s^1 para entrar no jogo" + +#: qcsrc/client/hud/panel/infomessages.qc:128 +#: qcsrc/client/hud/panel/infomessages.qc:131 +msgid "jump" +msgstr "saltar" + +#: qcsrc/client/hud/panel/infomessages.qc:139 +#, c-format +msgid "^1Game starts in ^3%d^1 seconds" +msgstr "^1A partida iniciará em ^3%d^1 segundo(s)" + +#: qcsrc/client/hud/panel/infomessages.qc:145 +msgid "^2Currently in ^1warmup^2 stage!" +msgstr "^2Atualmente em fase de ^1aquecimento^2!" + +#: qcsrc/client/hud/panel/infomessages.qc:160 +#, c-format +msgid "%sPress ^3%s%s to end warmup" +msgstr "%sAperte ^3%s%s para terminar o aquecimento" + +#: qcsrc/client/hud/panel/infomessages.qc:160 +#: qcsrc/client/hud/panel/infomessages.qc:162 +#: qcsrc/client/hud/panel/infomessages.qc:175 +#: qcsrc/menu/xonotic/keybinder.qc:91 +msgid "ready" +msgstr "pronto" + +#: qcsrc/client/hud/panel/infomessages.qc:162 +#, c-format +msgid "%sPress ^3%s%s once you are ready" +msgstr "%sAperte ^3%s%s assim que estiver pronto" + +#: qcsrc/client/hud/panel/infomessages.qc:167 +msgid "^2Waiting for others to ready up to end warmup..." +msgstr "" +"^2Esperando que os outros jogadores estejam prontos para acabar o " +"aquecimento..." + +#: qcsrc/client/hud/panel/infomessages.qc:169 +msgid "^2Waiting for others to ready up..." +msgstr "^2Esperando que os outros jogadores estejam prontos..." + +#: qcsrc/client/hud/panel/infomessages.qc:175 +#, c-format +msgid "^2Press ^3%s^2 to end warmup" +msgstr "^2Aperte ^3%s^2 para terminar o aquecimento" + +#: qcsrc/client/hud/panel/infomessages.qc:196 +msgid "Teamnumbers are unbalanced!" +msgstr "As equipes estão desequilibradas!" + +#: qcsrc/client/hud/panel/infomessages.qc:199 +#, c-format +msgid " Press ^3%s%s to adjust" +msgstr " Aperte ^3%s%s para ajustar" + +#: qcsrc/client/hud/panel/infomessages.qc:199 +#: qcsrc/menu/xonotic/keybinder.qc:102 +msgid "team menu" +msgstr "menu de equipe" + +#: qcsrc/client/hud/panel/infomessages.qc:209 +msgid "^1Spectating this player:" +msgstr "^1Também estão assistindo a este jogador:" + +#: qcsrc/client/hud/panel/infomessages.qc:209 +msgid "^1Spectating you:" +msgstr "^1Assistindo você:" + +#: qcsrc/client/hud/panel/infomessages.qc:225 +msgid "^7Press ^3ESC ^7to show HUD options." +msgstr "^7Aperte ^3ESC ^7para exibir as opções de HUD." + +#: qcsrc/client/hud/panel/infomessages.qc:226 +msgid "^3Doubleclick ^7a panel for panel-specific options." +msgstr "" +"^3Clique duas vezes ^7em um painel para abrir sua janela de opções " +"específicas." + +#: qcsrc/client/hud/panel/infomessages.qc:227 +msgid "^3CTRL ^7to disable collision testing, ^3SHIFT ^7and" +msgstr "^3CTRL ^7para desligar teste de colisão, ^3SHIFT ^7e" + +#: qcsrc/client/hud/panel/infomessages.qc:228 +msgid "^3ALT ^7+ ^3ARROW KEYS ^7for fine adjustments." +msgstr "^3ALT ^7+ ^3TECLAS DIRECIONAIS ^7para pequenos ajustes." + +#: qcsrc/client/hud/panel/modicons.qc:566 +msgid "Personal best" +msgstr "Recorde pessoal" + +#: qcsrc/client/hud/panel/modicons.qc:576 +msgid "Server best" +msgstr "Recorde do servidor" + +#: qcsrc/client/hud/panel/notify.qc:115 qcsrc/client/hud/panel/notify.qc:116 +#: qcsrc/client/hud/panel/score.qc:59 +#, c-format +msgid "Player %d" +msgstr "Jogador %d" + +#: qcsrc/client/hud/panel/quickmenu.qc:603 +#: qcsrc/client/hud/panel/quickmenu.qc:605 +#, c-format +msgid "Submenu%d" +msgstr "Submenu%d" + +#: qcsrc/client/hud/panel/quickmenu.qc:610 +#, c-format +msgid "Command%d" +msgstr "Comando%d" + +#: qcsrc/client/hud/panel/quickmenu.qc:636 +msgid "Continue..." +msgstr "Continuar..." + +#: qcsrc/client/hud/panel/quickmenu.qc:794 +#: qcsrc/client/hud/panel/quickmenu.qc:798 +msgid "Chat" +msgstr "" + +#: qcsrc/client/hud/panel/quickmenu.qc:795 +msgid "QMCMD^:-) / nice one" +msgstr ":-) / Boa jogada" + +#: qcsrc/client/hud/panel/quickmenu.qc:795 +msgid "QMCMD^nice one" +msgstr "Boa jogada" + +#: qcsrc/client/hud/panel/quickmenu.qc:796 +msgid "QMCMD^good game" +msgstr "Bom jogo" + +#: qcsrc/client/hud/panel/quickmenu.qc:797 +msgid "QMCMD^hi / good luck" +msgstr "Olá / Boa sorte" + +#: qcsrc/client/hud/panel/quickmenu.qc:797 +msgid "QMCMD^hi / good luck and have fun" +msgstr "Olá / Boa sorte e divirta-se" + +#: qcsrc/client/hud/panel/quickmenu.qc:802 +#: qcsrc/client/hud/panel/quickmenu.qc:818 +msgid "QMCMD^Team chat" +msgstr "Bate-papo de equipe" + +#: qcsrc/client/hud/panel/quickmenu.qc:803 +msgid "QMCMD^quad soon" +msgstr "Quad em breve" + +#: qcsrc/client/hud/panel/quickmenu.qc:804 +msgid "QMCMD^free item %x^7 (l:%y^7)" +msgstr "Item livre %x^7 (l:%y^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:804 +msgid "QMCMD^free item, icon" +msgstr "Item livre, ícone" + +#: qcsrc/client/hud/panel/quickmenu.qc:805 +msgid "QMCMD^took item (l:%l^7)" +msgstr "Item pego (l:%l^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:805 +msgid "QMCMD^took item, icon" +msgstr "Item pego, ícone" + +#: qcsrc/client/hud/panel/quickmenu.qc:806 +msgid "QMCMD^negative" +msgstr "Negativo" + +#: qcsrc/client/hud/panel/quickmenu.qc:807 +msgid "QMCMD^positive" +msgstr "Positivo" + +#: qcsrc/client/hud/panel/quickmenu.qc:808 +msgid "QMCMD^need help (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" +msgstr "Preciso de ajuda (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:808 +msgid "QMCMD^need help, icon" +msgstr "Preciso de ajuda, ícone" + +#: qcsrc/client/hud/panel/quickmenu.qc:809 +msgid "QMCMD^enemy seen (l:%y^7)" +msgstr "Inimigo avistado (l:%y^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:809 +msgid "QMCMD^enemy seen, icon" +msgstr "Inimigo avistado, ícone" + +#: qcsrc/client/hud/panel/quickmenu.qc:810 +msgid "QMCMD^flag seen (l:%y^7)" +msgstr "Bandeira avistada (l:%y^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:810 +msgid "QMCMD^flag seen, icon" +msgstr "Bandeira avistada, ícone" + +#: qcsrc/client/hud/panel/quickmenu.qc:811 +msgid "QMCMD^defending (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" +msgstr "Defendendo (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:811 +msgid "QMCMD^defending, icon" +msgstr "Defendendo, ícone" + +#: qcsrc/client/hud/panel/quickmenu.qc:812 +msgid "QMCMD^roaming (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" +msgstr "Patrulhando (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:812 +msgid "QMCMD^roaming, icon" +msgstr "Patrulhando, ícone" + +#: qcsrc/client/hud/panel/quickmenu.qc:813 +msgid "QMCMD^attacking (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" +msgstr "Atacando (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:813 +msgid "QMCMD^attacking, icon" +msgstr "Atacando, ícone" + +#: qcsrc/client/hud/panel/quickmenu.qc:814 +msgid "QMCMD^killed flagcarrier (l:%y^7)" +msgstr "Portador da bandeira aniquilado (l:%y^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:814 +msgid "QMCMD^killed flagcarrier, icon" +msgstr "Portador da bandeira aniquilado, ícone" + +#: qcsrc/client/hud/panel/quickmenu.qc:815 +#, c-format +msgid "QMCMD^dropped flag (l:%d^7)" +msgstr "Bandeira largada (l:%d^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:815 +msgid "QMCMD^dropped flag, icon" +msgstr "Bandeira largada, ícone" + +#: qcsrc/client/hud/panel/quickmenu.qc:816 +msgid "QMCMD^drop weapon, icon" +msgstr "Largar arma, ícone" + +#: qcsrc/client/hud/panel/quickmenu.qc:816 +msgid "QMCMD^dropped weapon %w^7 (l:%l^7)" +msgstr "Arma solta %w^7 (l:%l^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:817 +msgid "QMCMD^drop flag/key, icon" +msgstr "Largar bandeira/chave, ícone" + +#: qcsrc/client/hud/panel/quickmenu.qc:817 +msgid "QMCMD^dropped flag/key %w^7 (l:%l^7)" +msgstr "Bandeira/Chave largada %w^7 (l:%l^7)" + +#: qcsrc/client/hud/panel/quickmenu.qc:821 +msgid "QMCMD^Send private message to" +msgstr "Mandar mensagem privada para" + +#: qcsrc/client/hud/panel/quickmenu.qc:823 +#: qcsrc/client/hud/panel/quickmenu.qc:860 +msgid "QMCMD^Settings" +msgstr "Configurações" + +#: qcsrc/client/hud/panel/quickmenu.qc:824 +#: qcsrc/client/hud/panel/quickmenu.qc:831 +msgid "QMCMD^View/HUD settings" +msgstr "Configurações de Exibição/HUD" + +#: qcsrc/client/hud/panel/quickmenu.qc:825 +msgid "QMCMD^3rd person view" +msgstr "Visão em 3ª pessoa" + +#: qcsrc/client/hud/panel/quickmenu.qc:826 +msgid "QMCMD^Player models like mine" +msgstr "Modelos de jogadores como o meu" + +#: qcsrc/client/hud/panel/quickmenu.qc:827 +msgid "QMCMD^Names above players" +msgstr "Nomes sobre jogadores" + +#: qcsrc/client/hud/panel/quickmenu.qc:828 +msgid "QMCMD^Crosshair per weapon" +msgstr "Retículo por arma" + +#: qcsrc/client/hud/panel/quickmenu.qc:829 +msgid "QMCMD^FPS" +msgstr "FPS" + +#: qcsrc/client/hud/panel/quickmenu.qc:830 +msgid "QMCMD^Net graph" +msgstr "Gráfico da rede" + +#: qcsrc/client/hud/panel/quickmenu.qc:833 +#: qcsrc/client/hud/panel/quickmenu.qc:836 +msgid "QMCMD^Sound settings" +msgstr "Configurações de som" + +#: qcsrc/client/hud/panel/quickmenu.qc:834 +msgid "QMCMD^Hit sound" +msgstr "Som de acerto" + +#: qcsrc/client/hud/panel/quickmenu.qc:835 +msgid "QMCMD^Chat sound" +msgstr "Som do bate-papo" + +#: qcsrc/client/hud/panel/quickmenu.qc:840 +#: qcsrc/client/hud/panel/quickmenu.qc:844 +msgid "QMCMD^Spectator camera" +msgstr "Câmera de espectador" + +#: qcsrc/client/hud/panel/quickmenu.qc:841 +msgid "QMCMD^1st person" +msgstr "1ª pessoa" + +#: qcsrc/client/hud/panel/quickmenu.qc:842 +msgid "QMCMD^3rd person around player" +msgstr "3ª pessoa em volta do jogador" + +#: qcsrc/client/hud/panel/quickmenu.qc:843 +msgid "QMCMD^3rd person behind" +msgstr "3ª pessoa traseira" + +#: qcsrc/client/hud/panel/quickmenu.qc:849 +#: qcsrc/client/hud/panel/quickmenu.qc:854 +msgid "QMCMD^Observer camera" +msgstr "Câmera de observador" + +#: qcsrc/client/hud/panel/quickmenu.qc:850 +msgid "QMCMD^Increase speed" +msgstr "Aumentar velocidade" + +#: qcsrc/client/hud/panel/quickmenu.qc:851 +msgid "QMCMD^Decrease speed" +msgstr "Diminuir velocidade" + +#: qcsrc/client/hud/panel/quickmenu.qc:852 +msgid "QMCMD^Wall collision off" +msgstr "Colisão com paredes desligada" + +#: qcsrc/client/hud/panel/quickmenu.qc:853 +msgid "QMCMD^Wall collision on" +msgstr "Colisão com paredes ligada" + +#: qcsrc/client/hud/panel/quickmenu.qc:857 +msgid "QMCMD^Fullscreen" +msgstr "Tela cheia" + +#: qcsrc/client/hud/panel/quickmenu.qc:859 +msgid "QMCMD^Translate chat messages" +msgstr "Traduzir mensagens do bate-papo" + +#: qcsrc/client/hud/panel/quickmenu.qc:862 +#: qcsrc/client/hud/panel/quickmenu.qc:872 +msgid "QMCMD^Call a vote" +msgstr "Iniciar uma votação" + +#: qcsrc/client/hud/panel/quickmenu.qc:863 +msgid "QMCMD^Restart the map" +msgstr "Reiniciar o mapa" + +#: qcsrc/client/hud/panel/quickmenu.qc:864 +msgid "QMCMD^End match" +msgstr "Terminar a partida" + +#: qcsrc/client/hud/panel/quickmenu.qc:867 +msgid "QMCMD^Reduce match time" +msgstr "Reduzir tempo de partida" + +#: qcsrc/client/hud/panel/quickmenu.qc:868 +msgid "QMCMD^Extend match time" +msgstr "Estender tempo de partida" + +#: qcsrc/client/hud/panel/quickmenu.qc:871 +msgid "QMCMD^Shuffle teams" +msgstr "Misturar as equipes" + +#: qcsrc/client/hud/panel/racetimer.qc:37 +#, c-format +msgid " (-%dL)" +msgstr " (-%dL)" + +#: qcsrc/client/hud/panel/racetimer.qc:42 +#, c-format +msgid " (+%dL)" +msgstr " (+%dL)" + +#: qcsrc/client/hud/panel/racetimer.qc:61 +msgid "Start line" +msgstr "Linha de partida" + +#: qcsrc/client/hud/panel/racetimer.qc:63 +#: qcsrc/client/hud/panel/racetimer.qc:67 +msgid "Finish line" +msgstr "Linha de chegada" + +#: qcsrc/client/hud/panel/racetimer.qc:65 +#, c-format +msgid "Intermediate %d" +msgstr "Intermediário %d" + +#: qcsrc/client/hud/panel/racetimer.qc:132 +msgid "^1Intermediate 1 (+15.42)" +msgstr "^1Intermediário 1 (+15.42)" + +#: qcsrc/client/hud/panel/racetimer.qc:135 +#: qcsrc/client/hud/panel/racetimer.qc:177 +#: qcsrc/client/hud/panel/racetimer.qc:227 +#, c-format +msgid "^1PENALTY: %.1f (%s)" +msgstr "^1PENALIDADE: %.1f (%s)" + +#: qcsrc/client/hud/panel/racetimer.qc:229 +#, c-format +msgid "^2PENALTY: %.1f (%s)" +msgstr "^2PENALIDADE: %.1f (%s)" + +#: qcsrc/client/hud/panel/scoreboard.qc:78 +msgid "SCO^bckills" +msgstr "pblvítimas" + +#: qcsrc/client/hud/panel/scoreboard.qc:79 +msgid "SCO^bctime" +msgstr "pbltempo" + +#: qcsrc/client/hud/panel/scoreboard.qc:80 +msgid "SCO^caps" +msgstr "capturas" + +#: qcsrc/client/hud/panel/scoreboard.qc:81 +msgid "SCO^captime" +msgstr "tempo de captura" + +#: qcsrc/client/hud/panel/scoreboard.qc:82 +msgid "SCO^deaths" +msgstr "mortes" + +#: qcsrc/client/hud/panel/scoreboard.qc:83 +msgid "SCO^destroyed" +msgstr "destruído" + +#: qcsrc/client/hud/panel/scoreboard.qc:84 +msgid "SCO^damage" +msgstr "dano" + +#: qcsrc/client/hud/panel/scoreboard.qc:85 +msgid "SCO^dmgtaken" +msgstr "dano recebido" + +#: qcsrc/client/hud/panel/scoreboard.qc:86 +msgid "SCO^drops" +msgstr "quedas" + +#: qcsrc/client/hud/panel/scoreboard.qc:87 +msgid "SCO^faults" +msgstr "faltas" + +#: qcsrc/client/hud/panel/scoreboard.qc:88 +msgid "SCO^fckills" +msgstr "pbndvítimas" + +#: qcsrc/client/hud/panel/scoreboard.qc:89 +msgid "SCO^goals" +msgstr "gols" + +#: qcsrc/client/hud/panel/scoreboard.qc:90 +msgid "SCO^kckills" +msgstr "pcvítimas" + +#: qcsrc/client/hud/panel/scoreboard.qc:91 +msgid "SCO^kdratio" +msgstr "taxa de v/m" + +#: qcsrc/client/hud/panel/scoreboard.qc:92 +msgid "SCO^k/d" +msgstr "v/m" + +#: qcsrc/client/hud/panel/scoreboard.qc:93 +msgid "SCO^kdr" +msgstr "fmr" + +#: qcsrc/client/hud/panel/scoreboard.qc:94 +msgid "SCO^kills" +msgstr "vítimas" + +#: qcsrc/client/hud/panel/scoreboard.qc:95 +msgid "SCO^laps" +msgstr "voltas" + +#: qcsrc/client/hud/panel/scoreboard.qc:96 +msgid "SCO^lives" +msgstr "vidas" + +#: qcsrc/client/hud/panel/scoreboard.qc:97 +msgid "SCO^losses" +msgstr "derrotas" + +#: qcsrc/client/hud/panel/scoreboard.qc:98 +msgid "SCO^name" +msgstr "nome" + +#: qcsrc/client/hud/panel/scoreboard.qc:99 +msgid "SCO^sum" +msgstr "soma" + +#: qcsrc/client/hud/panel/scoreboard.qc:100 +msgid "SCO^nick" +msgstr "apelido" + +#: qcsrc/client/hud/panel/scoreboard.qc:101 +msgid "SCO^objectives" +msgstr "objetivos" + +#: qcsrc/client/hud/panel/scoreboard.qc:102 +msgid "SCO^pickups" +msgstr "coletas" + +#: qcsrc/client/hud/panel/scoreboard.qc:103 +msgid "SCO^ping" +msgstr "ping" + +#: qcsrc/client/hud/panel/scoreboard.qc:104 +msgid "SCO^pl" +msgstr "pp" + +#: qcsrc/client/hud/panel/scoreboard.qc:105 +msgid "SCO^pushes" +msgstr "empurrões" + +#: qcsrc/client/hud/panel/scoreboard.qc:106 +msgid "SCO^rank" +msgstr "classificação" + +#: qcsrc/client/hud/panel/scoreboard.qc:107 +msgid "SCO^returns" +msgstr "retornos" + +#: qcsrc/client/hud/panel/scoreboard.qc:108 +msgid "SCO^revivals" +msgstr "ressurreições" + +#: qcsrc/client/hud/panel/scoreboard.qc:109 +msgid "SCO^rounds won" +msgstr "rodadas vencidas" + +#: qcsrc/client/hud/panel/scoreboard.qc:110 +msgid "SCO^score" +msgstr "pontuação" + +#: qcsrc/client/hud/panel/scoreboard.qc:111 +msgid "SCO^suicides" +msgstr "suicídios" + +#: qcsrc/client/hud/panel/scoreboard.qc:112 +msgid "SCO^takes" +msgstr "tomadas" + +#: qcsrc/client/hud/panel/scoreboard.qc:113 +msgid "SCO^ticks" +msgstr "ticks" + +#: qcsrc/client/hud/panel/scoreboard.qc:295 +msgid "" +"You can modify the scoreboard using the ^2scoreboard_columns_set command.\n" +msgstr "" +"Você pode modificar o placar usando o comando ^2scoreboard_columns_set.\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:296 +msgid "^3|---------------------------------------------------------------|\n" +msgstr "^3|---------------------------------------------------------------|\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:297 +msgid "Usage:\n" +msgstr "Uso:\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:298 +msgid "^2scoreboard_columns_set default\n" +msgstr "^2scoreboard_columns_set padrão\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:299 +msgid "^2scoreboard_columns_set ^7field1 field2 ...\n" +msgstr "^2scoreboard_columns_set ^7campo1 campo2...\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:300 +msgid "The following field names are recognized (case insensitive):\n" +msgstr "" +"Os seguintes nomes de campos são reconhecidos (maiúsculas/minúsculas não são " +"distintas):\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:301 +msgid "You can use a ^3|^7 to start the right-aligned fields.\n" +msgstr "Você pode usar um ^3|^7 para iniciar os campos alinhados à direita.\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:304 +msgid "^3name^7 or ^3nick^7 Name of a player\n" +msgstr "^3nome^7 ou ^3apelido^7 Nome de um jogador\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:305 +msgid "^3ping^7 Ping time\n" +msgstr "^3ping^7 Tempo de ping\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:306 +msgid "^3pl^7 Packet loss\n" +msgstr "^3pp^7 Perda de pacotes\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:307 +msgid "^3elo^7 Player ELO\n" +msgstr "^3elo^7 ELO do jogador\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:308 +msgid "^3kills^7 Number of kills\n" +msgstr "^3vítimas^7 Número de aniquilações\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:309 +msgid "^3deaths^7 Number of deaths\n" +msgstr "^3mortes^7 Número de mortes\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:310 +msgid "^3suicides^7 Number of suicides\n" +msgstr "^3suicídios^7 Número de suicídios\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:311 +msgid "^3frags^7 kills - suicides\n" +msgstr "^3execuções^7 vítimas - suicídios\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:312 +msgid "^3kd^7 The kill-death ratio\n" +msgstr "^3vm^7 A taxa de vítimas/mortes\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:313 +msgid "^3dmg^7 The total damage done\n" +msgstr "^3dano^7 O dano total causado\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:314 +msgid "^3dmgtaken^7 The total damage taken\n" +msgstr "^3dano recebido^7 O dano total recebido\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:315 +msgid "^3sum^7 frags - deaths\n" +msgstr "^3soma^7 execuções - mortes\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:316 +msgid "" +"^3caps^7 How often a flag (CTF) or a key (KeyHunt) was " +"captured\n" +msgstr "" +"^3capturas^7 Quão frequente uma bandeira (CTF) ou uma chave (Caça a Chaves) " +"foi capturada\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:317 +msgid "" +"^3pickups^7 How often a flag (CTF) or a key (KeyHunt) or a " +"ball (Keepaway) was picked up\n" +msgstr "" +"^3coletas^7. Quão frequente uma bandeira (CTF), uma chave (Caça a Chaves) ou " +"uma bola (Keepaway) foi coletada\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:318 +msgid "^3captime^7 Time of fastest cap (CTF)\n" +msgstr "^3tempodecaptura^7 Tempo da captura mais rápida (CTF)\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:319 +msgid "^3fckills^7 Number of flag carrier kills\n" +msgstr "" +"^3pbndvítimas^7 Número de portadores de bandeiras mortos pelo jogador\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:320 +msgid "^3returns^7 Number of flag returns\n" +msgstr "^3retornos^7 Número de bandeiras retomadas\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:321 +msgid "^3drops^7 Number of flag drops\n" +msgstr "^3quedas^7 Número de bandeiras que foram soltas\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:322 +msgid "^3lives^7 Number of lives (LMS)\n" +msgstr "^3vidas^7 Número de vidas (LMS)\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:323 +msgid "^3rank^7 Player rank\n" +msgstr "^3posição^7 Classificação do jogador\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:324 +msgid "^3pushes^7 Number of players pushed into void\n" +msgstr "^3empurrões^7 Número de jogadores empurrados para fora do mapa\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:325 +msgid "" +"^3destroyed^7 Number of keys destroyed by pushing them into " +"void\n" +msgstr "" +"^3destruídas^7 Número de chaves destruídas ao empurrá-las para fora do mapa\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:326 +msgid "^3kckills^7 Number of keys carrier kills\n" +msgstr "^3pcvítimas^7 Número de portadores de chaves mortos pelo jogador\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:327 +msgid "^3losses^7 Number of times a key was lost\n" +msgstr "^3perdas^7 Número de vezes em que uma chave foi perdida\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:328 +msgid "^3laps^7 Number of laps finished (race/cts)\n" +msgstr "^3voltas^7 Número de voltas concluídas (corrida/cts)\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:329 +msgid "^3time^7 Total time raced (race/cts)\n" +msgstr "^3tempo^7 Tempo total de corrida (corrida/cts)\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:330 +msgid "^3fastest^7 Time of fastest lap (race/cts)\n" +msgstr "^3mais rápida^7 Tempo da volta mais rápida (corrida/cts)\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:331 +msgid "^3ticks^7 Number of ticks (DOM)\n" +msgstr "^3ticks^7 Número de ticks (DOM)\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:332 +msgid "^3takes^7 Number of domination points taken (DOM)\n" +msgstr "^3tomados^7 Número de pontos de dominação tomados (DOM)\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:333 +msgid "^3bckills^7 Number of ball carrier kills\n" +msgstr "^3pblvítimas^7 Número de portadores de bolas mortos pelo jogador\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:334 +msgid "" +"^3bctime^7 Total amount of time holding the ball in " +"Keepaway\n" +msgstr "^3pbltempo^7 Tempo total segurando a bola em Keepaway\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:335 +msgid "^3score^7 Total score\n" +msgstr "^3pontuação^7 Pontuação total\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:338 +msgid "" +"Before a field you can put a + or - sign, then a comma separated list\n" +"of game types, then a slash, to make the field show up only in these\n" +"or in all but these game types. You can also specify 'all' as a\n" +"field to show all fields available for the current game mode.\n" +"\n" +msgstr "" +"Antes dos campos de digitação, você pode inserir um sinal de + ou -, e usar " +"uma lista de modos de jogo separada por vírgulas.\n" +"Insira barras para fazer com que os campos sejam mostrados somente nesses " +"modos de jogo ou em todos os modos exceto os especificados.\n" +"Você também pode especificar a palavra 'all' como um campo para mostrar " +"todos os campos disponíveis para o modo de jogo atual.\n" +"\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:343 +msgid "" +"The special game type names 'teams' and 'noteams' can be used to\n" +"include/exclude ALL teams/noteams game modes.\n" +"\n" +msgstr "" +"Os nomes especiais de modos de jogo 'teams' e 'noteams' podem ser usados\n" +"para incluir/excluir TODOS os modos de jogo de equipe/sem equipe\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:346 +msgid "Example: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4\n" +msgstr "" +"Exemplo: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:347 +msgid "" +"will display name, ping and pl aligned to the left, and the fields\n" +"right of the vertical bar aligned to the right.\n" +msgstr "" +"irá exibir nome, ping e pp alinhados à esquerda e os campos\n" +"à direita da barra vertical alinhados à direita.\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:349 +msgid "" +"'field3' will only be shown in CTF, and 'field4' will be shown in all\n" +"other gamemodes except DM.\n" +msgstr "" +"'field3' só será exibido em CTF e 'field4' será exibido em todos\n" +"os outros modos de jogo, exceto DM.\n" + +#: qcsrc/client/hud/panel/scoreboard.qc:611 +#: qcsrc/client/hud/panel/scoreboard.qc:618 +#: qcsrc/client/hud/panel/scoreboard.qc:670 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:86 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:87 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:161 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:203 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:208 +msgid "N/A" +msgstr "N/A" + +#: qcsrc/client/hud/panel/scoreboard.qc:1156 +#, c-format +msgid "Accuracy stats (average %d%%)" +msgstr "Estatísticas de precisão (média %d%%)" + +#: qcsrc/client/hud/panel/scoreboard.qc:1295 +msgid "Map stats:" +msgstr "Estatísticas do mapa:" + +#: qcsrc/client/hud/panel/scoreboard.qc:1325 +msgid "Monsters killed:" +msgstr "Monstros mortos:" + +#: qcsrc/client/hud/panel/scoreboard.qc:1332 +msgid "Secrets found:" +msgstr "Segredos encontrados:" + +#: qcsrc/client/hud/panel/scoreboard.qc:1354 +msgid "Capture time rankings" +msgstr "Classificações de tempo de capturas" + +#: qcsrc/client/hud/panel/scoreboard.qc:1354 +msgid "Rankings" +msgstr "Classificações" + +#: qcsrc/client/hud/panel/scoreboard.qc:1519 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:43 +msgid "Scoreboard" +msgstr "Placar" + +#: qcsrc/client/hud/panel/scoreboard.qc:1584 +#, c-format +msgid "Speed award: %d%s ^7(%s^7)" +msgstr "Prêmio de velocidade: %d%s ^7(%s^7)" + +#: qcsrc/client/hud/panel/scoreboard.qc:1588 +#, c-format +msgid "All-time fastest: %d%s ^7(%s^7)" +msgstr "O mais rápido de todos: %d%s ^7(%s^7)" + +#: qcsrc/client/hud/panel/scoreboard.qc:1604 +#, c-format +msgid "Spectators" +msgstr "Espectadores" + +#: qcsrc/client/hud/panel/scoreboard.qc:1619 +#, c-format +msgid "playing ^3%s^7 on ^2%s^7" +msgstr "jogando ^3%s^7 em ^2%s^7" + +#: qcsrc/client/hud/panel/scoreboard.qc:1626 +#: qcsrc/client/hud/panel/scoreboard.qc:1631 +#, c-format +msgid " for up to ^1%1.0f minutes^7" +msgstr " por até ^1%1.0f minutos^7" + +#: qcsrc/client/hud/panel/scoreboard.qc:1635 +#: qcsrc/client/hud/panel/scoreboard.qc:1654 +msgid " or" +msgstr " ou" + +#: qcsrc/client/hud/panel/scoreboard.qc:1638 +#: qcsrc/client/hud/panel/scoreboard.qc:1645 +#, c-format +msgid " until ^3%s %s^7" +msgstr " até ^3%s %s^7" + +#: qcsrc/client/hud/panel/scoreboard.qc:1639 +#: qcsrc/client/hud/panel/scoreboard.qc:1646 +#: qcsrc/client/hud/panel/scoreboard.qc:1658 +#: qcsrc/client/hud/panel/scoreboard.qc:1665 +msgid "SCO^points" +msgstr "pontos" + +#: qcsrc/client/hud/panel/scoreboard.qc:1640 +#: qcsrc/client/hud/panel/scoreboard.qc:1647 +#: qcsrc/client/hud/panel/scoreboard.qc:1659 +#: qcsrc/client/hud/panel/scoreboard.qc:1666 +msgid "SCO^is beaten" +msgstr "foi espancado" + +#: qcsrc/client/hud/panel/scoreboard.qc:1657 +#: qcsrc/client/hud/panel/scoreboard.qc:1664 +#, c-format +msgid " until a lead of ^3%s %s^7" +msgstr " até uma vantagem de ^3%s %s^7" + +#: qcsrc/client/hud/panel/scoreboard.qc:1688 +#, c-format +msgid "^1Respawning in ^3%s^1..." +msgstr "^1Ressurgindo em ^3%s^1..." + +#: qcsrc/client/hud/panel/scoreboard.qc:1698 +#, c-format +msgid "You are dead, wait ^3%s^7 before respawning" +msgstr "Você morreu. Espere ^3%s^7 antes de ressurgir" + +#: qcsrc/client/hud/panel/scoreboard.qc:1707 +#, c-format +msgid "You are dead, press ^2%s^7 to respawn" +msgstr "Você morreu. Aperte ^2%s^7 para ressurgir" + +#: qcsrc/client/hud/panel/vote.qc:24 +msgid "^1You must answer before entering hud configure mode\n" +msgstr "" +"^1Você tem que responder antes de entrar no modo de configuração do HUD\n" + +#: qcsrc/client/hud/panel/vote.qc:29 +msgid "^2Name ^7instead of \"^1Anonymous player^7\" in stats" +msgstr "^2Nome ^7em vez de \"^1Jogador anônimo^7\" nas estatísticas" + +#: qcsrc/client/hud/panel/vote.qc:115 +msgid "A vote has been called for:" +msgstr "Uma votação foi iniciada para:" + +#: qcsrc/client/hud/panel/vote.qc:117 +msgid "Allow servers to store and display your name?" +msgstr "Permitir que servidores armazenem e mostrem o seu nome?" + +#: qcsrc/client/hud/panel/vote.qc:121 +msgid "^1Configure the HUD" +msgstr "^1Configurar o HUD" + +#: qcsrc/client/hud/panel/vote.qc:125 qcsrc/menu/xonotic/dialog_firstrun.qc:82 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:18 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:18 +#: qcsrc/menu/xonotic/dialog_quit.qc:14 +#: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qc:26 +#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:16 +#: qcsrc/menu/xonotic/dialog_uid2name.qc:15 +msgid "Yes" +msgstr "Sim" + +#: qcsrc/client/hud/panel/vote.qc:127 qcsrc/menu/xonotic/dialog_firstrun.qc:83 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:21 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:21 +#: qcsrc/menu/xonotic/dialog_quit.qc:16 +#: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qc:29 +#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:17 +#: qcsrc/menu/xonotic/dialog_uid2name.qc:17 +msgid "No" +msgstr "Não" + +#: qcsrc/client/hud/panel/weapons.qc:530 +msgid "Out of ammo" +msgstr "Sem munição" + +#: qcsrc/client/hud/panel/weapons.qc:534 +msgid "Don't have" +msgstr "Não tem" + +#: qcsrc/client/hud/panel/weapons.qc:538 +msgid "Unavailable" +msgstr "Indisponível" + +#: qcsrc/client/main.qc:1014 +msgid " qu/s" +msgstr "qu/s" + +#: qcsrc/client/main.qc:1016 +msgid " m/s" +msgstr "m/s" + +#: qcsrc/client/main.qc:1018 +msgid " km/h" +msgstr "km/h" + +#: qcsrc/client/main.qc:1020 +msgid " mph" +msgstr "mph" + +#: qcsrc/client/main.qc:1022 +msgid " knots" +msgstr "nós" + +#: qcsrc/client/main.qc:1264 +#, c-format +msgid "%s (not bound)" +msgstr "%s (não tem atalho definido)" + +#: qcsrc/client/mapvoting.qc:49 +msgid " (1 vote)" +msgstr "(1 voto)" + +#: qcsrc/client/mapvoting.qc:51 +#, c-format +msgid " (%d votes)" +msgstr "(%d votos)" + +#: qcsrc/client/mapvoting.qc:271 +msgid "Don't care" +msgstr "Não importa" + +#: qcsrc/client/mapvoting.qc:365 +msgid "Decide the gametype" +msgstr "Decidir o modo de jogo" + +#: qcsrc/client/mapvoting.qc:365 +msgid "Vote for a map" +msgstr "Vote em um mapa" + +#: qcsrc/client/mapvoting.qc:382 +#, c-format +msgid "%d seconds left" +msgstr "Faltam %d segundos" + +#: qcsrc/client/mapvoting.qc:497 +msgid "" +"mv_mapdownload: ^3You're not supposed to use this command on your own!\n" +msgstr "mv_mapdownload: ^3Você não pode usar esse comando para si próprio!\n" + +#: qcsrc/client/mapvoting.qc:507 +msgid "^1Error:^7 Couldn't find pak index.\n" +msgstr "^1Erro:^7 Não foi possível encontrar o índice do pak.\n" + +#: qcsrc/client/mapvoting.qc:516 +msgid "Requesting preview...\n" +msgstr "Solicitando previsão...\n" + +#: qcsrc/client/miscfunctions.qc:109 +msgid "Trying to remove a team which is not in the teamlist!" +msgstr "" +"Você está tentando remover uma equipe que não está na lista de equipes!" + +#: qcsrc/client/view.qc:1380 +msgid "Nade timer" +msgstr "Temporizador de granada" + +#: qcsrc/client/view.qc:1385 +msgid "Capture progress" +msgstr "Progresso de captura" + +#: qcsrc/client/view.qc:1390 +msgid "Revival progress" +msgstr "Progresso de renascimento" + +#: qcsrc/common/command/generic.qc:157 +msgid "error creating curl handle\n" +msgstr "erro ao criar curl handle\n" + +#: qcsrc/common/command/generic.qc:403 +msgid "Notification restart command only works with cl_cmd and sv_cmd.\n" +msgstr "" +"Comando de reinício de notificação funciona apenas com cl_cmd e sv_cmd.\n" + +#: qcsrc/common/gamemodes/gamemode/nexball/weapon.qh:7 +msgid "Ball Stealer" +msgstr "Ladrão de Bolas" + +#: qcsrc/common/items/item/armor.qh:111 +msgid "Big armor" +msgstr "Armadura grande" + +#: qcsrc/common/items/item/armor.qh:147 +msgid "Mega armor" +msgstr "Mega armadura" + +#: qcsrc/common/items/item/health.qh:111 +msgid "Big health" +msgstr "Saúde grande" + +#: qcsrc/common/items/item/health.qh:147 +msgid "Mega health" +msgstr "Mega saúde" + +#: qcsrc/common/items/item/jetpack.qh:35 +msgid "Jet Pack" +msgstr "Mochila a Jato" + +#: qcsrc/common/items/item/jetpack.qh:82 +msgid "Fuel regen" +msgstr "Regeneração de combustível" + +#: qcsrc/common/items/item/powerup.qh:44 +msgid "Strength" +msgstr "Força" + +#: qcsrc/common/items/item/powerup.qh:76 +msgid "Shield" +msgstr "Escudo" + +#: qcsrc/common/mapinfo.qc:639 +#, no-c-format +msgid "@!#%'n Tuba Throwing" +msgstr "@!#%'n Tuba Throwing" + +#: qcsrc/common/mapinfo.qh:99 +msgid "Deathmatch" +msgstr "Mata-mata" + +#: qcsrc/common/mapinfo.qh:99 +msgid "Score as many frags as you can" +msgstr "Consiga o máximo de execuções que puder" + +#: qcsrc/common/mapinfo.qh:111 +msgid "Last Man Standing" +msgstr "Último Homem de Pé" + +#: qcsrc/common/mapinfo.qh:111 +msgid "Survive and kill until the enemies have no lives left" +msgstr "Sobreviva e mate até que os inimigos não tenham vidas sobrando" + +#: qcsrc/common/mapinfo.qh:126 +msgid "Race" +msgstr "Corrida" + +#: qcsrc/common/mapinfo.qh:126 +msgid "Race against other players to the finish line" +msgstr "Corra contra outros jogadores até a linha de chegada" + +#: qcsrc/common/mapinfo.qh:160 +msgid "Race CTS" +msgstr "Corrida CTS" + +#: qcsrc/common/mapinfo.qh:160 +msgid "Race for fastest time." +msgstr "Corra pelo melhor tempo." + +#: qcsrc/common/mapinfo.qh:184 +msgid "Help your team score the most frags against the enemy team" +msgstr "Ajude sua equipe a conseguir mais execuções do que a equipe inimiga" + +#: qcsrc/common/mapinfo.qh:184 +msgid "Team Deathmatch" +msgstr "Mata-mata por Equipe" + +#: qcsrc/common/mapinfo.qh:220 +msgid "Capture the Flag" +msgstr "Capture a Bandeira" + +#: qcsrc/common/mapinfo.qh:220 +msgid "" +"Find and bring the enemy flag to your base to capture it, defend your base " +"from the other team" +msgstr "" +"Encontre e retorne a bandeira inimiga à sua base para capturá-la e defenda " +"sua base da equipe oponente" + +#: qcsrc/common/mapinfo.qh:249 +msgid "Clan Arena" +msgstr "Clã Arena" + +#: qcsrc/common/mapinfo.qh:249 +msgid "Kill all enemy teammates to win the round" +msgstr "Mate todos os inimigos para vencer a rodada" + +#: qcsrc/common/mapinfo.qh:287 +msgid "Capture and defend all the control points to win" +msgstr "Capture e defenda todos os pontos de controle para vencer" + +#: qcsrc/common/mapinfo.qh:287 +msgid "Domination" +msgstr "Dominação" + +#: qcsrc/common/mapinfo.qh:319 +msgid "Gather all the keys to win the round" +msgstr "Colete todas as chaves para vencer a rodada" + +#: qcsrc/common/mapinfo.qh:319 +msgid "Key Hunt" +msgstr "Caça a Chaves" + +#: qcsrc/common/mapinfo.qh:353 +msgid "Assault" +msgstr "Assalto" + +#: qcsrc/common/mapinfo.qh:353 +msgid "" +"Destroy obstacles to find and destroy the enemy power core before time runs " +"out" +msgstr "" +"Destrua obstáculos para encontrar e destruir o núcleo de poder inimigo antes " +"que o tempo acabe" + +#: qcsrc/common/mapinfo.qh:371 +msgid "Capture control points to reach and destroy the enemy generator" +msgstr "Capture pontos de controle para alcançar e destruir o gerador inimigo" + +#: qcsrc/common/mapinfo.qh:371 +msgid "Onslaught" +msgstr "Massacre" + +#: qcsrc/common/mapinfo.qh:387 +msgid "Nexball" +msgstr "Bola Nex" + +#: qcsrc/common/mapinfo.qh:387 +msgid "Shoot and kick the ball into the enemies goal, keep your goal clean" +msgstr "Atire e chute a bola no gol inimigo e mantenha seu gol limpo" + +#: qcsrc/common/mapinfo.qh:408 +msgid "Freeze Tag" +msgstr "Congela" + +#: qcsrc/common/mapinfo.qh:408 +msgid "" +"Kill enemies to freeze them, stand next to frozen teammates to revive them; " +"freeze all enemies to win" +msgstr "" +"Mate inimigos para congelá-los. Fique perto de colegas para descongelá-los; " +"congele todos os inimigos para vencer" + +#: qcsrc/common/mapinfo.qh:446 +msgid "Hold the ball to get points for kills" +msgstr "Segure a bola para ganhar pontos por cada jogador aniquilado" + +#: qcsrc/common/mapinfo.qh:446 +msgid "Keepaway" +msgstr "Keepaway" + +#: qcsrc/common/mapinfo.qh:461 +msgid "Invasion" +msgstr "Invasão" + +#: qcsrc/common/mapinfo.qh:461 +msgid "Survive against waves of monsters" +msgstr "Sobreviva contra ondas de monstros" + +#: qcsrc/common/minigames/cl_minigames.qc:383 +msgid "It's your turn" +msgstr "É a sua vez" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:331 +#: qcsrc/menu/xonotic/dialog_quit.qh:6 +msgid "Quit" +msgstr "Sair" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:336 +msgid "Invite" +msgstr "Convidar" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:378 +msgid "Current Game" +msgstr "Jogo Atual" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:403 +msgid "Exit Menu" +msgstr "Sair do Menu" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:415 +#: qcsrc/menu/xonotic/dialog_multiplayer.qc:16 +msgid "Create" +msgstr "Criar" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:418 +msgid "Join" +msgstr "Entrar" + +#: qcsrc/common/minigames/cl_minigames_hud.qc:489 +msgid "Minigames" +msgstr "Minijogos" + +#: qcsrc/common/minigames/minigame/bd.qc:1168 +msgid "Better luck next time!" +msgstr "Mais sorte da próxima vez!" + +#: qcsrc/common/minigames/minigame/bd.qc:1172 +msgid "Tubular! Press \"Next Level\" to continue!" +msgstr "Tubular! Clique em \"Próximo Mapa\" para continuar!" + +#: qcsrc/common/minigames/minigame/bd.qc:1174 +msgid "Wicked! Press \"Next Level\" to continue!" +msgstr "Enfeitiçado! Clique em \"Próximo Mapa\" para continuar!" + +#: qcsrc/common/minigames/minigame/bd.qc:1177 +msgid "Press the space bar to change your currently selected tile" +msgstr "" +"Aperte a barra de espaço para alterar a sua imagem de equipe atualmente " +"selecionada" + +#: qcsrc/common/minigames/minigame/bd.qc:1180 +msgid "Push the boulders onto the targets" +msgstr "Empurre os pedregulhos em direção aos alvos" + +#: qcsrc/common/minigames/minigame/bd.qc:1404 +msgid "Next Level" +msgstr "Próximo Mapa" + +#: qcsrc/common/minigames/minigame/bd.qc:1405 +msgid "Restart" +msgstr "Reiniciar" + +#: qcsrc/common/minigames/minigame/bd.qc:1406 +msgid "Editor" +msgstr "Editor" + +#: qcsrc/common/minigames/minigame/bd.qc:1407 +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:37 +msgid "Save" +msgstr "Salvar" + +#: qcsrc/common/minigames/minigame/c4.qc:373 +#: qcsrc/common/minigames/minigame/pp.qc:438 +#: qcsrc/common/minigames/minigame/ttt.qc:319 +msgid "Draw" +msgstr "Empate" + +#: qcsrc/common/minigames/minigame/c4.qc:378 +#: qcsrc/common/minigames/minigame/nmm.qc:601 +msgid "You lost the game!" +msgstr "Você perdeu o jogo!" + +#: qcsrc/common/minigames/minigame/c4.qc:379 +#: qcsrc/common/minigames/minigame/nmm.qc:602 +msgid "You win!" +msgstr "Você venceu!" + +#: qcsrc/common/minigames/minigame/c4.qc:383 +#: qcsrc/common/minigames/minigame/nmm.qc:606 +#: qcsrc/common/minigames/minigame/pp.qc:455 +#: qcsrc/common/minigames/minigame/ttt.qc:336 +msgid "Wait for your opponent to make their move" +msgstr "Espere o seu oponente terminar a vez dele" + +#: qcsrc/common/minigames/minigame/c4.qc:386 +#: qcsrc/common/minigames/minigame/nmm.qc:608 +#: qcsrc/common/minigames/minigame/pp.qc:458 +#: qcsrc/common/minigames/minigame/ttt.qc:339 +msgid "Click on the game board to place your piece" +msgstr "Clique no tabuleiro de jogo para posicionar sua peça" + +#: qcsrc/common/minigames/minigame/nmm.qc:610 +msgid "" +"You can select one of your pieces to move it in one of the surrounding places" +msgstr "" +"Você pode selecionar uma de suas peças para movê-la para um dos lugares ao " +"redor" + +#: qcsrc/common/minigames/minigame/nmm.qc:612 +msgid "You can select one of your pieces to move it anywhere on the board" +msgstr "" +"Você pode selecionar uma de suas peças para movê-la para qualquer lugar no " +"tabuleiro" + +#: qcsrc/common/minigames/minigame/nmm.qc:614 +msgid "You can take one of the opponent's pieces" +msgstr "Você pode tomar uma das peças do seu oponente" + +#: qcsrc/common/minigames/minigame/pong.qc:570 +#: qcsrc/common/minigames/minigame/ttt.qc:299 +msgid "AI" +msgstr "IA" + +#: qcsrc/common/minigames/minigame/pong.qc:587 +msgid "Press ^1Start Match^7 to start the match with the current players" +msgstr "" +"Aperte ^1Iniciar Partida^7 para iniciar a partida com os jogadores atuais" + +#: qcsrc/common/minigames/minigame/pong.qc:651 +msgid "Start Match" +msgstr "Iniciar Partida" + +#: qcsrc/common/minigames/minigame/pong.qc:652 +msgid "Add AI player" +msgstr "Adicionar bot" + +#: qcsrc/common/minigames/minigame/pong.qc:653 +msgid "Remove AI player" +msgstr "Remover bot" + +#: qcsrc/common/minigames/minigame/pp.qc:443 +#: qcsrc/common/minigames/minigame/ttt.qc:324 +msgid "" +"You lost the game!\n" +"Select \"^1Next Match^7\" on the menu for a rematch!" +msgstr "" +"Você perdeu o jogo!\n" +"Selecione \"^1Próxima Partida^7\" no menu para uma revanche!" + +#: qcsrc/common/minigames/minigame/pp.qc:444 +#: qcsrc/common/minigames/minigame/ttt.qc:325 +msgid "" +"You win!\n" +"Select \"^1Next Match^7\" on the menu to start a new match!" +msgstr "" +"Você venceu!\n" +"Selecione \"^1Próxima Partida^7\" no menu para iniciar uma nova partida!" + +#: qcsrc/common/minigames/minigame/pp.qc:450 +#: qcsrc/common/minigames/minigame/ttt.qc:331 +msgid "Select \"^1Next Match^7\" on the menu to start a new match!" +msgstr "" +"Selecione \"^1Próxima Partida^7\" no menu para iniciar uma nova partida!" + +#: qcsrc/common/minigames/minigame/pp.qc:451 +#: qcsrc/common/minigames/minigame/ttt.qc:332 +msgid "Wait for your opponent to confirm the rematch" +msgstr "Espere o seu oponente confirmar a revanche" + +#: qcsrc/common/minigames/minigame/pp.qc:582 +#: qcsrc/common/minigames/minigame/ttt.qc:665 +msgid "Next Match" +msgstr "Próxima Partida" + +#: qcsrc/common/minigames/minigame/ps.qc:478 +#, c-format +msgid "Pieces left: %s" +msgstr "Pedaços restantes: %s" + +#: qcsrc/common/minigames/minigame/ps.qc:488 +msgid "No more valid moves" +msgstr "Não há mais movimentos válidos" + +#: qcsrc/common/minigames/minigame/ps.qc:491 +msgid "Well done, you win!" +msgstr "Bom trabalho, você venceu!" + +#: qcsrc/common/minigames/minigame/ps.qc:494 +msgid "Jump a piece over another to capture it" +msgstr "Faça uma peça saltar sobre outra para capturá-la" + +#: qcsrc/common/minigames/minigame/ttt.qc:666 +msgid "Single Player" +msgstr "Um Jogador" + +#: qcsrc/common/monsters/monster/mage.qh:17 +#: qcsrc/menu/xonotic/dialog_monstertools.qc:18 +msgid "Mage" +msgstr "Mago" + +#: qcsrc/common/monsters/monster/mage.qh:29 +msgid "Mage spike" +msgstr "Prego de mago" + +#: qcsrc/common/monsters/monster/shambler.qh:17 +#: qcsrc/menu/xonotic/dialog_monstertools.qc:17 +msgid "Shambler" +msgstr "Shambler" + +#: qcsrc/common/monsters/monster/spider.qh:17 +#: qcsrc/menu/xonotic/dialog_monstertools.qc:16 +msgid "Spider" +msgstr "Aranha" + +#: qcsrc/common/monsters/monster/spider.qh:28 +msgid "Spider attack" +msgstr "Ataque da Aranha" + +#: qcsrc/common/monsters/monster/wyvern.qh:17 +#: qcsrc/menu/xonotic/dialog_monstertools.qc:19 +msgid "Wyvern" +msgstr "Wyvern" + +#: qcsrc/common/monsters/monster/wyvern.qh:28 +msgid "Wyvern attack" +msgstr "Ataque do Wyvern" + +#: qcsrc/common/monsters/monster/zombie.qh:17 +#: qcsrc/menu/xonotic/dialog_monstertools.qc:15 +msgid "Zombie" +msgstr "Zumbi" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:15 +msgid "Ammo" +msgstr "Munição" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:24 +msgid "Resistance" +msgstr "Resistência" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:33 +#: qcsrc/common/mutators/mutator/instagib/items.qh:94 +msgid "Speed" +msgstr "Velocidade" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:43 +msgid "Medic" +msgstr "Médico" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:54 +msgid "Bash" +msgstr "Pancada" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:62 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:85 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:177 +msgid "Vampire" +msgstr "Vampiro" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:70 +msgid "Disability" +msgstr "Incapacidade" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:78 +msgid "Vengeance" +msgstr "Vingança" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:86 +msgid "Jump" +msgstr "Saltar" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:95 +msgid "Invisible" +msgstr "Invisível" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:104 +msgid "Inferno" +msgstr "Inferno" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:112 +msgid "Swapper" +msgstr "Trocador" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:120 +msgid "Magnet" +msgstr "Ímã" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:128 +msgid "Luck" +msgstr "Sorte" + +#: qcsrc/common/mutators/mutator/buffs/all.inc:136 +msgid "Flight" +msgstr "Voo" + +#: qcsrc/common/mutators/mutator/buffs/buffs.qh:7 +msgid "Buff" +msgstr "Bônus" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:8 +msgid "Damage text" +msgstr "Texto de dano" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:18 +msgid "Draw damage numbers" +msgstr "Exibir números de dano" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:20 +msgid "Font size minimum:" +msgstr "Tamanho da fonte mínimo:" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:25 +msgid "Font size maximum:" +msgstr "Tamanho da fonte máximo:" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:30 +msgid "Accumulate range:" +msgstr "Alcance de acúmulo:" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:35 +msgid "Lifetime:" +msgstr "Tempo de vida:" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:40 +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:55 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:102 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:60 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:109 +#: qcsrc/menu/xonotic/util.qc:775 +msgid "Color:" +msgstr "Cor:" + +#: qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc:47 +msgid "Draw damage numbers for friendly fire" +msgstr "Exibir números de dano para fogo amigo" + +#: qcsrc/common/mutators/mutator/instagib/items.qh:56 +msgid "Extra life" +msgstr "Vida extra" + +#: qcsrc/common/mutators/mutator/instagib/items.qh:75 +msgid "Invisibility" +msgstr "Invisibilidade" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:18 +msgid "Napalm grenade" +msgstr "Granada de napalm" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:26 +msgid "Ice grenade" +msgstr "Granada de gelo" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:34 +msgid "Translocate grenade" +msgstr "Granada de deslocamento" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:42 +msgid "Spawn grenade" +msgstr "Granada de fragmentação" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:50 +msgid "Heal grenade" +msgstr "Granada de cura" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:58 +msgid "Monster grenade" +msgstr "Granada monstro" + +#: qcsrc/common/mutators/mutator/nades/nades.inc:66 +msgid "Entrap grenade" +msgstr "Granada de armadilha" + +#: qcsrc/common/mutators/mutator/nades/nades.qh:32 +msgid "Grenade" +msgstr "Granada" + +#: qcsrc/common/mutators/mutator/overkill/hmg.qh:17 +msgid "Heavy Machine Gun" +msgstr "Metralhadora Pesada" + +#: qcsrc/common/mutators/mutator/overkill/rpc.qh:17 +msgid "Rocket Propelled Chainsaw" +msgstr "Rocket Propelled Chainsaw" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:3 +msgid "Waypoint" +msgstr "Ponto de passagem" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:4 +msgid "Help me!" +msgstr "Preciso de ajuda!" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:5 +msgid "Here" +msgstr "Aqui" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:6 +msgid "DANGER" +msgstr "PERIGO" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:8 +msgid "Frozen!" +msgstr "Congelado!" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:10 +msgid "Item" +msgstr "Item" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:12 +msgid "Checkpoint" +msgstr "Ponto de checagem" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:13 +#: qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc:252 +msgid "Finish" +msgstr "Final" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:14 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:15 +#: qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc:252 +msgid "Start" +msgstr "Início" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:17 +msgid "Defend" +msgstr "Defender" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:18 +msgid "Destroy" +msgstr "Destruir" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:19 +msgid "Push" +msgstr "Empurrar" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:21 +msgid "Flag carrier" +msgstr "Portador de bandeiras" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:22 +msgid "Enemy carrier" +msgstr "Portador inimigo" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:23 +msgid "Dropped flag" +msgstr "Bandeira largada" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:24 +msgid "White base" +msgstr "Base branca" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:25 +msgid "Red base" +msgstr "Base vermelha" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:26 +msgid "Blue base" +msgstr "Base azul" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:27 +msgid "Yellow base" +msgstr "Base amarela" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:28 +msgid "Pink base" +msgstr "Base rosa" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:29 +msgid "Return flag here" +msgstr "Traga a bandeira para cá" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:31 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:32 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:33 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:34 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:35 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:51 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:52 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:53 +msgid "Control point" +msgstr "Ponto de controle" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:37 +msgid "Dropped key" +msgstr "Chave largada" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:38 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:40 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:41 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:42 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:43 +msgid "Key carrier" +msgstr "Portador de chaves" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:39 +msgid "Run here" +msgstr "Corra aqui" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:45 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:48 +msgid "Ball" +msgstr "Bola" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:46 +msgid "Ball carrier" +msgstr "Portador da bola" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:49 +msgid "Goal" +msgstr "Gol" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:54 +#: qcsrc/common/mutators/mutator/waypoints/all.inc:55 +msgid "Generator" +msgstr "Gerador" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:57 +msgid "Weapon" +msgstr "Arma" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:59 +msgid "Monster" +msgstr "Monstro" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:61 +msgid "Vehicle" +msgstr "Veículo" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:62 +msgid "Intruder!" +msgstr "Intruso!" + +#: qcsrc/common/mutators/mutator/waypoints/all.inc:64 +msgid "Tagged" +msgstr "Marcado" + +#: qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc:651 +#: qcsrc/common/turrets/cl_turrets.qc:120 +msgid "Spam" +msgstr "Spam" + +#: qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc:655 +#, c-format +msgid "%s needing help!" +msgstr "%s precisando de ajuda!" + +#: qcsrc/common/net_notice.qc:87 +msgid "^1Server notices:" +msgstr "^1Avisos do servidor:" + +#: qcsrc/common/notifications/all.inc:239 +msgid "^F4NOTE: ^BGSpectator chat is not sent to players during the match" +msgstr "" +"^F4NOTA: ^BGMensagens no bate-papo de espectador não serão enviadas aos " +"jogadores durante a partida" + +#: qcsrc/common/notifications/all.inc:241 +#, c-format +msgid "^BG%s^BG captured the ^TC^TT^BG flag" +msgstr "^BG%s^BG capturou a bandeira ^TC^TT^BG" + +#: qcsrc/common/notifications/all.inc:242 +#, c-format +msgid "" +"^BG%s^BG captured the ^TC^TT^BG flag in ^F1%s^BG seconds, breaking ^BG" +"%s^BG's previous record of ^F2%s^BG seconds" +msgstr "" +"^BG%s^BG capturou a bandeira ^TC^TT^BG em ^F1%s^BG segundos, quebrando o " +"recorde anterior de ^BG%s^BG de ^F2%s^BG segundos" + +#: qcsrc/common/notifications/all.inc:243 +#, c-format +msgid "^BG%s^BG captured the flag" +msgstr "^BG%s^BG capturou a bandeira" + +#: qcsrc/common/notifications/all.inc:244 +#, c-format +msgid "^BG%s^BG captured the ^TC^TT^BG flag in ^F1%s^BG seconds" +msgstr "^BG%s^BG capturou a bandeira ^TC^TT^BG em ^F1%s^BG segundos" + +#: qcsrc/common/notifications/all.inc:245 +#, c-format +msgid "" +"^BG%s^BG captured the ^TC^TT^BG flag in ^F2%s^BG seconds, failing to break " +"^BG%s^BG's previous record of ^F1%s^BG seconds" +msgstr "" +"^BG%s^BG capturou a bandeira ^TC^TT^BG em ^F2%s^BG segundos, não quebrando o " +"record anterior de ^BG%s^BG de ^F1%s^BG segundos" + +#: qcsrc/common/notifications/all.inc:246 +msgid "^BGThe ^TC^TT^BG flag was returned to base by its owner" +msgstr "^BGA bandeira ^TC^TT^BG foi retornada à base pelo seu dono" + +#: qcsrc/common/notifications/all.inc:247 +msgid "^BGThe flag was returned by its owner" +msgstr "^BGA bandeira ^TC^TT^BG foi retornada pelo seu dono" + +#: qcsrc/common/notifications/all.inc:248 +msgid "^BGThe ^TC^TT^BG flag was destroyed and returned to base" +msgstr "^BGA bandeira ^TC^TT^BG foi destruída e retornada à base" + +#: qcsrc/common/notifications/all.inc:249 +msgid "^BGThe flag was destroyed and returned to base" +msgstr "^BGA bandeira foi destruída e retornada à base" + +#: qcsrc/common/notifications/all.inc:250 +msgid "^BGThe ^TC^TT^BG flag was dropped in the base and returned itself" +msgstr "^BGA bandeira ^TC^TT^BG caiu na base e retornou sozinha" + +#: qcsrc/common/notifications/all.inc:251 +msgid "^BGThe flag was dropped in the base and returned itself" +msgstr "^BGA bandeira caiu na base e retornou sozinha" + +#: qcsrc/common/notifications/all.inc:252 +msgid "" +"^BGThe ^TC^TT^BG flag fell somewhere it couldn't be reached and returned to " +"base" +msgstr "" +"^BGA bandeira ^TC^TT^BG caiu em algum lugar inacessível e retornou à base" + +#: qcsrc/common/notifications/all.inc:253 +msgid "^BGThe flag fell somewhere it couldn't be reached and returned to base" +msgstr "^BGA bandeira caiu em algum lugar inacessível e retornou à base" + +#: qcsrc/common/notifications/all.inc:254 +#, c-format +msgid "" +"^BGThe ^TC^TT^BG flag became impatient after ^F1%.2f^BG seconds and returned " +"itself" +msgstr "" +"^BGA bandeira ^TC^TT^BG ficou impaciente depois de ^F1%.2f^BG segundos e " +"retornou sozinha" + +#: qcsrc/common/notifications/all.inc:255 +#, c-format +msgid "" +"^BGThe flag became impatient after ^F1%.2f^BG seconds and returned itself" +msgstr "" +"^BGA bandeira ficou impaciente depois de ^F1%.2f^BG segundos e retornou " +"sozinha" + +#: qcsrc/common/notifications/all.inc:256 +msgid "^BGThe ^TC^TT^BG flag has returned to the base" +msgstr "^BGA bandeira ^TC^TT^BG retornou à base" + +#: qcsrc/common/notifications/all.inc:257 +msgid "^BGThe flag has returned to the base" +msgstr "^BGA bandeira retornou à base" + +#: qcsrc/common/notifications/all.inc:258 +#, c-format +msgid "^BG%s^BG lost the ^TC^TT^BG flag" +msgstr "^BG%s^BG perdeu a bandeira ^TC^TT^BG" + +#: qcsrc/common/notifications/all.inc:259 +#, c-format +msgid "^BG%s^BG lost the flag" +msgstr "^BG%s^BG perdeu a bandeira" + +#: qcsrc/common/notifications/all.inc:260 +#, c-format +msgid "^BG%s^BG got the ^TC^TT^BG flag" +msgstr "^BG%s^BG pegou a bandeira ^TC^TT^BG" + +#: qcsrc/common/notifications/all.inc:261 +#, c-format +msgid "^BG%s^BG got the flag" +msgstr "^BG%s^BG pegou a bandeira" + +#: qcsrc/common/notifications/all.inc:262 +#: qcsrc/common/notifications/all.inc:263 +#, c-format +msgid "^BG%s^BG returned the ^TC^TT^BG flag" +msgstr "^BG%s^BG retornou a bandeira ^TC^TT^BG" + +#: qcsrc/common/notifications/all.inc:265 +#: qcsrc/common/notifications/all.inc:553 +#, c-format +msgid "^F2Throwing coin... Result: %s^F2!" +msgstr "^F2Atirando moeda... Resultado: %s^F2!" + +#: qcsrc/common/notifications/all.inc:267 +msgid "^BGYou don't have any fuel for the ^F1Jetpack" +msgstr "^BGVocê está sem combustível para a ^F1Mochila a Jato" + +#: qcsrc/common/notifications/all.inc:269 +msgid "^F2You lack a UID, superspec options will not be saved/restored" +msgstr "" +"^F2Você não tem um UID, opções de sperspec não serão salvas/restauradas" + +#: qcsrc/common/notifications/all.inc:271 +msgid "^F1Round already started, you will join the game in the next round" +msgstr "^F1A rodada já começou, você entrará no jogo na próxima rodada" + +#: qcsrc/common/notifications/all.inc:272 +msgid "^F2You will spectate in the next round" +msgstr "^F2Você ficará de espectador na próxima rodada" + +#: qcsrc/common/notifications/all.inc:274 +#, c-format +msgid "^BG%s%s^K1 was killed by ^BG%s^K1's ^BG%s^K1 buff ^K1%s%s" +msgstr "^BG%s%s^K1 foi morto pelo bônus de ^BG%s^K1 de ^BG%s^K1 ^K1%s%s" + +#: qcsrc/common/notifications/all.inc:274 +#, c-format +msgid "^BG%s%s^K1 was scored against by ^BG%s^K1's ^BG%s^K1 buff ^K1%s%s" +msgstr "" +"^BG%s%s^K1 foi pontuado contra pelo bônus de ^BG%s^K1 de ^BG%s^K1 ^K1%s%s" + +#: qcsrc/common/notifications/all.inc:275 +#, c-format +msgid "^BG%s%s^K1 was unfairly eliminated by ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi morto injustamente por ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:276 +#, c-format +msgid "^BG%s%s^K1 was drowned by ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi afogado por ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:277 +#, c-format +msgid "^BG%s%s^K1 was grounded by ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi castigado por ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:278 +#, c-format +msgid "^BG%s%s^K1 felt a little hot from ^BG%s^K1's fire^K1%s%s" +msgstr "" +"^BG%s%s^K1 se sentiu um pouco quente por causa do fogo de ^BG%s^K1^K1%s%s" + +#: qcsrc/common/notifications/all.inc:278 +#, c-format +msgid "^BG%s%s^K1 was burnt up into a crisp by ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi cruelmente queimado por ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:279 +#, c-format +msgid "^BG%s%s^K1 was cooked by ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi cozinhado por ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:280 +#, c-format +msgid "^BG%s%s^K1 was pushed in front of a monster by ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi empurrado em frente de um monstro por ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:281 +#, c-format +msgid "^BG%s%s^K1 was blown up by ^BG%s^K1's Nade%s%s" +msgstr "^BG%s%s^K1 foi explodido pela Granada de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:282 +#, c-format +msgid "^BG%s%s^K1 got too close to a napalm explosion%s%s" +msgstr "^BG%s%s^K1 se aproximou demais de uma explosão de napalm%s%s" + +#: qcsrc/common/notifications/all.inc:282 +#, c-format +msgid "^BG%s%s^K1 was burned to death by ^BG%s^K1's Napalm Nade%s%s" +msgstr "" +"^BG%s%s^K1 foi queimado até a morte pela Granada de Napalm de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:283 +#, c-format +msgid "^BG%s%s^K1 was blown up by ^BG%s^K1's Ice Nade%s%s" +msgstr "^BG%s%s^K1 foi explodido pela Granada de Gelo de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:284 +#, c-format +msgid "^BG%s%s^K1 was frozen to death by ^BG%s^K1's Ice Nade%s%s" +msgstr "" +"^BG%s%s^K1 foi congelado até a morte pela Granada de Gelo de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:285 +#, c-format +msgid "^BG%s%s^K1 has not been healed by ^BG%s^K1's Healing Nade%s%s" +msgstr "^BG%s%s^K1 não foi curado pela Granada de Cura de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:286 +#, c-format +msgid "^BG%s%s^K1 was shot into space by ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi lançado para o espaço por ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:287 +#, c-format +msgid "^BG%s%s^K1 was slimed by ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi dissolvido por ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:288 +#, c-format +msgid "^BG%s%s^K1 was preserved by ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi preservado por ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:289 +#, c-format +msgid "^BG%s%s^K1 tried to occupy ^BG%s^K1's teleport destination space%s%s" +msgstr "^BG%s%s^K1 tentou ocupar o espaço do teletransporte de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:289 +#, c-format +msgid "^BG%s%s^K1 was telefragged by ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 levou um telefrag de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:290 +#, c-format +msgid "^BG%s%s^K1 died in an accident with ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 morreu em um acidente com ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:291 +#, c-format +msgid "" +"^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Bumblebee exploded%s%s" +msgstr "^BG%s%s^K1 foi pego pela explosão de Bumblebee de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:292 +#, c-format +msgid "^BG%s%s^K1 saw the pretty lights of ^BG%s^K1's Bumblebee gun%s%s" +msgstr "^BG%s%s^K1 viu as lindas luzes da arma do Bumblebee de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:293 +#, c-format +msgid "^BG%s%s^K1 was crushed by ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi esmagado por ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:294 +#, c-format +msgid "^BG%s%s^K1 was cluster bombed by ^BG%s^K1's Raptor%s%s" +msgstr "^BG%s%s^K1 foi bombardeado pelo Raptor de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:295 +#, c-format +msgid "^BG%s%s^K1 couldn't resist ^BG%s^K1's purple blobs%s%s" +msgstr "^BG%s%s^K1 não resistiu às bolhas roxas de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:296 +#, c-format +msgid "^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Raptor exploded%s%s" +msgstr "^BG%s%s^K1 foi pego pela explosão do Raptor de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:297 +#, c-format +msgid "" +"^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Spiderbot exploded%s%s" +msgstr "^BG%s%s^K1 foi pego pela explosão do Spiderbot de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:298 +#, c-format +msgid "^BG%s%s^K1 got shredded by ^BG%s^K1's Spiderbot%s%s" +msgstr "^BG%s%s^K1 foi picado pelo Spiderbot de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:299 +#, c-format +msgid "^BG%s%s^K1 was blasted to bits by ^BG%s^K1's Spiderbot%s%s" +msgstr "^BG%s%s^K1 foi explodido em pedacinhos pelo Spiderbot de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:300 +#, c-format +msgid "^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Racer exploded%s%s" +msgstr "^BG%s%s^K1 foi pego pela explosão do Racer de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:301 +#, c-format +msgid "^BG%s%s^K1 was bolted down by ^BG%s^K1's Racer%s%s" +msgstr "^BG%s%s^K1 foi aparafusado pelo Racer de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:302 +#, c-format +msgid "^BG%s%s^K1 couldn't find shelter from ^BG%s^K1's Racer%s%s" +msgstr "^BG%s%s^K1 não conseguiu escapar do Racer de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:303 +#, c-format +msgid "^BG%s%s^K1 was thrown into a world of hurt by ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi jogado em mundo de dor por ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:305 +#, c-format +msgid "^BG%s^K1 was moved into the %s%s" +msgstr "^BG%s^K1 foi movido para o %s%s" + +#: qcsrc/common/notifications/all.inc:306 +#, c-format +msgid "^BG%s^K1 became enemies with the Lord of Teamplay%s%s" +msgstr "^BG%s^K1 tornou-se inimigo do Senhor do Trabalho em Equipe%s%s" + +#: qcsrc/common/notifications/all.inc:307 +#, c-format +msgid "^BG%s^K1 thought they found a nice camping ground%s%s" +msgstr "" +"^BG%s^K1 acharam que tinham encontrado um ótimo lugar para camperar%s%s" + +#: qcsrc/common/notifications/all.inc:308 +#, c-format +msgid "^BG%s^K1 unfairly eliminated themself%s%s" +msgstr "^BG%s^K1 se eliminou injustamente%s%s" + +#: qcsrc/common/notifications/all.inc:310 +#, c-format +msgid "^BG%s^K1 couldn't catch their breath%s%s" +msgstr "^BG%s^K1 ficou sem fôlego%s%s" + +#: qcsrc/common/notifications/all.inc:310 +#, c-format +msgid "^BG%s^K1 was in the water for too long%s%s" +msgstr "^BG%s^K1 ficou na água por muito tempo%s%s" + +#: qcsrc/common/notifications/all.inc:311 +#, c-format +msgid "^BG%s^K1 hit the ground with a bit too much force%s%s" +msgstr "^BG%s^K1 caiu no chão com muita força%s%s" + +#: qcsrc/common/notifications/all.inc:311 +#, c-format +msgid "^BG%s^K1 hit the ground with a crunch%s%s" +msgstr "^BG%s^K1 caiu no chão rigorosamente%s%s" + +#: qcsrc/common/notifications/all.inc:312 +#, c-format +msgid "^BG%s^K1 became a bit too crispy%s%s" +msgstr "^BG%s^K1 ficou um pouco crocante%s%s" + +#: qcsrc/common/notifications/all.inc:312 +#, c-format +msgid "^BG%s^K1 felt a little hot%s%s" +msgstr "^BG%s^K1 se sentiu um pouco quente%s%s" + +#: qcsrc/common/notifications/all.inc:313 +#, c-format +msgid "^BG%s^K1 died%s%s" +msgstr "^BG%s^K1 morreu%s%s" + +#: qcsrc/common/notifications/all.inc:314 +#, c-format +msgid "^BG%s^K1 found a hot place%s%s" +msgstr "^BG%s^K1 achou um lugar quente%s%s" + +#: qcsrc/common/notifications/all.inc:314 +#, c-format +msgid "^BG%s^K1 turned into hot slag%s%s" +msgstr "^BG%s^K1 tornou-se uma escória quente%s%s" + +#: qcsrc/common/notifications/all.inc:315 +#, c-format +msgid "^BG%s^K1 was exploded by a Mage%s%s" +msgstr "^BG%s^K1 foi explodido por um Mago%s%s" + +#: qcsrc/common/notifications/all.inc:316 +#, c-format +msgid "^BG%s^K1's innards became outwards by a Shambler%s%s" +msgstr "" +"Os órgãos internos de ^BG%s^K1 se tornaram externos por causa de um Shambler " +"%s%s" + +#: qcsrc/common/notifications/all.inc:317 +#, c-format +msgid "^BG%s^K1 was smashed by a Shambler%s%s" +msgstr "^BG%s^K1 foi esmagado por um Shambler%s%s" + +#: qcsrc/common/notifications/all.inc:318 +#, c-format +msgid "^BG%s^K1 was zapped to death by a Shambler%s%s" +msgstr "^BG%s^K1 foi eletrocutado até a morte por um Shambler%s%s" + +#: qcsrc/common/notifications/all.inc:319 +#, c-format +msgid "^BG%s^K1 was bitten by a Spider%s%s" +msgstr "^BG%s^K1 foi picado por uma Aranha%s%s" + +#: qcsrc/common/notifications/all.inc:320 +#, c-format +msgid "^BG%s^K1 was fireballed by a Wyvern%s%s" +msgstr "^BG%s^K1 foi morto pela fireball de um Wyvern%s%s" + +#: qcsrc/common/notifications/all.inc:321 +#, c-format +msgid "^BG%s^K1 joins the Zombies%s%s" +msgstr "^BG%s^K1 se juntou aos Zumbis%s%s" + +#: qcsrc/common/notifications/all.inc:322 +#, c-format +msgid "^BG%s^K1 was given kung fu lessons by a Zombie%s%s" +msgstr "^BG%s^K1 recebeu lições de kung fu de um Zumbi%s%s" + +#: qcsrc/common/notifications/all.inc:323 +#: qcsrc/common/notifications/all.inc:325 +#, c-format +msgid "^BG%s^K1 mastered the art of self-nading%s%s" +msgstr "^BG%s^K1 dominou a arte do suicídio com granadas%s%s" + +#: qcsrc/common/notifications/all.inc:324 +#, c-format +msgid "" +"^BG%s^K1 decided to take a look at the results of their napalm explosion%s%s" +msgstr "" +"^BG%s^K1 decidiu dar uma olhada nos resultados de sua explosão de napalm%s%s" + +#: qcsrc/common/notifications/all.inc:324 +#, c-format +msgid "^BG%s^K1 was burned to death by their own Napalm Nade%s%s" +msgstr "" +"^BG%s^K1 foi queimado até a morte por sua própria Granada de Napalm%s%s" + +#: qcsrc/common/notifications/all.inc:326 +#, c-format +msgid "^BG%s^K1 felt a little chilly%s%s" +msgstr "^BG%s^K1 sentiu-se um pouco friolento%s%s" + +#: qcsrc/common/notifications/all.inc:326 +#, c-format +msgid "^BG%s^K1 was frozen to death by their own Ice Nade%s%s" +msgstr "^BG%s^K1 foi congelado até a morte por sua própria Granada de Gelo%s%s" + +#: qcsrc/common/notifications/all.inc:327 +#, c-format +msgid "^BG%s^K1's Healing Nade didn't quite heal them%s%s" +msgstr "A Granada de Cura de ^BG%s^K1 não lhe curou corretamente%s%s" + +#: qcsrc/common/notifications/all.inc:328 +#, c-format +msgid "^BG%s^K1 died%s%s. What's the point of living without ammo?" +msgstr "^BG%s^K1 morreu%s%s. Qual o sentido de viver sem munição?" + +#: qcsrc/common/notifications/all.inc:328 +#, c-format +msgid "^BG%s^K1 ran out of ammo%s%s" +msgstr "^BG%s^K1 ficou sem munição%s%s" + +#: qcsrc/common/notifications/all.inc:329 +#, c-format +msgid "^BG%s^K1 rotted away%s%s" +msgstr "^BG%s^K1 derreteu%s%s" + +#: qcsrc/common/notifications/all.inc:330 +#, c-format +msgid "^BG%s^K1 became a shooting star%s%s" +msgstr "^BG%s^K1 se tornou uma estrela cadente%s%s" + +#: qcsrc/common/notifications/all.inc:331 +#, c-format +msgid "^BG%s^K1 was slimed%s%s" +msgstr "^BG%s^K1 foi dissolvido%s%s" + +#: qcsrc/common/notifications/all.inc:332 +#, c-format +msgid "^BG%s^K1 couldn't take it anymore%s%s" +msgstr "^BG%s^K1 não aguentava mais%s%s" + +#: qcsrc/common/notifications/all.inc:333 +#, c-format +msgid "^BG%s^K1 is now preserved for centuries to come%s%s" +msgstr "^BG%s^K1 agora está preservado para os séculos que virão%s%s" + +#: qcsrc/common/notifications/all.inc:334 +#, c-format +msgid "^BG%s^K1 switched to the %s%s" +msgstr "^BG%s^K1 trocou para o %s%s" + +#: qcsrc/common/notifications/all.inc:335 +#, c-format +msgid "^BG%s^K1 died in an accident%s%s" +msgstr "^BG%s^K1 morreu em um acidente%s%s" + +#: qcsrc/common/notifications/all.inc:336 +#, c-format +msgid "^BG%s^K1 ran into a turret%s%s" +msgstr "^BG%s^K1 deu de cara com uma sentinela%s%s" + +#: qcsrc/common/notifications/all.inc:337 +#, c-format +msgid "^BG%s^K1 was blasted away by an eWheel turret%s%s" +msgstr "^BG%s^K1 foi explodido por uma sentinela eWheel%s%s" + +#: qcsrc/common/notifications/all.inc:338 +#, c-format +msgid "^BG%s^K1 got caught up in the FLAC turret fire%s%s" +msgstr "^BG%s^K1 se meteu no meio do tiroteio de uma sentinela FLAC%s%s" + +#: qcsrc/common/notifications/all.inc:339 +#, c-format +msgid "^BG%s^K1 was blasted away by a Hellion turret%s%s" +msgstr "^BG%s^K1 foi explodido por uma sentinela Hellion%s%s" + +#: qcsrc/common/notifications/all.inc:340 +#, c-format +msgid "^BG%s^K1 could not hide from the Hunter turret%s%s" +msgstr "^BG%s^K1 não conseguiu se esconder da sentinela Hunter%s%s" + +#: qcsrc/common/notifications/all.inc:341 +#, c-format +msgid "^BG%s^K1 was riddled full of holes by a Machinegun turret%s%s" +msgstr "" +"^BG%s^K1 ficou cheio de buracos por causa de uma sentinela de Metralhadora%s" +"%s" + +#: qcsrc/common/notifications/all.inc:342 +#, c-format +msgid "^BG%s^K1 got turned into smoldering gibs by an MLRS turret%s%s" +msgstr "^BG%s^K1 foi picado em pedacinhos latentes por uma sentinela MLRS%s%s" + +#: qcsrc/common/notifications/all.inc:343 +#, c-format +msgid "^BG%s^K1 was phased out by a turret%s%s" +msgstr "^BG%s^K1 foi eliminado por uma sentinela%s%s" + +#: qcsrc/common/notifications/all.inc:344 +#, c-format +msgid "^BG%s^K1 got served some superheated plasma from a turret%s%s" +msgstr "^BG%s^K1 levou um plasma superaquecido de uma sentinela%s%s" + +#: qcsrc/common/notifications/all.inc:345 +#, c-format +msgid "^BG%s^K1 was electrocuted by a Tesla turret%s%s" +msgstr "^BG%s^K1 foi eletrocutado por uma sentinela Tesla%s%s" + +#: qcsrc/common/notifications/all.inc:346 +#, c-format +msgid "^BG%s^K1 got served a lead enrichment by a Walker turret%s%s" +msgstr "^BG%s^K1 foi entupido de chumbo por uma sentinela Walker%s%s" + +#: qcsrc/common/notifications/all.inc:347 +#, c-format +msgid "^BG%s^K1 was impaled by a Walker turret%s%s" +msgstr "^BG%s^K1 foi empalado por uma sentinela Walker%s%s" + +#: qcsrc/common/notifications/all.inc:348 +#, c-format +msgid "^BG%s^K1 was blasted away by a Walker turret%s%s" +msgstr "^BG%s^K1 foi explodido por uma sentinela Walker%s%s" + +#: qcsrc/common/notifications/all.inc:349 +#, c-format +msgid "^BG%s^K1 got caught in the blast of a Bumblebee explosion%s%s" +msgstr "^BG%s^K1 foi pego pelo raio de uma explosão de Bumblebee%s%s" + +#: qcsrc/common/notifications/all.inc:350 +#, c-format +msgid "^BG%s^K1 was crushed by a vehicle%s%s" +msgstr "^BG%s^K1 foi esmagado por um veículo%s%s" + +#: qcsrc/common/notifications/all.inc:351 +#, c-format +msgid "^BG%s^K1 was caught in a Raptor cluster bomb%s%s" +msgstr "^BG%s^K1 foi pego por uma bomba de Raptor%s%s" + +#: qcsrc/common/notifications/all.inc:352 +#, c-format +msgid "^BG%s^K1 got caught in the blast of a Raptor explosion%s%s" +msgstr "^BG%s^K1 foi pego pela explosão de um Raptor%s%s" + +#: qcsrc/common/notifications/all.inc:353 +#, c-format +msgid "^BG%s^K1 got caught in the blast of a Spiderbot explosion%s%s" +msgstr "^BG%s^K1 foi pego pela explosão de um Spiderbot%s%s" + +#: qcsrc/common/notifications/all.inc:354 +#, c-format +msgid "^BG%s^K1 was blasted to bits by a Spiderbot rocket%s%s" +msgstr "^BG%s^K1 foi explodido em pedacinhos por um foguete de Spiderbot%s%s" + +#: qcsrc/common/notifications/all.inc:355 +#, c-format +msgid "^BG%s^K1 got caught in the blast of a Racer explosion%s%s" +msgstr "^BG%s^K1 foi pego pela explosão de um Racer%s%s" + +#: qcsrc/common/notifications/all.inc:356 +#, c-format +msgid "^BG%s^K1 couldn't find shelter from a Racer rocket%s%s" +msgstr "^BG%s^K1 não conseguiu escapar do foguete de um Racer%s%s" + +#: qcsrc/common/notifications/all.inc:359 +#, c-format +msgid "^BG%s^K1 was betrayed by ^BG%s^K1%s%s" +msgstr "^BG%s^K1 foi traído por ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:361 +#, c-format +msgid "^BG%s^BG%s^BG (%s %s every %s seconds)" +msgstr "^BG%s^BG%s^BG (%s %s a cada %s segundos)" + +#: qcsrc/common/notifications/all.inc:363 +#, c-format +msgid "^BG%s^K1 was frozen by ^BG%s" +msgstr "^BG%s^K1 foi congelado por ^BG%s" + +#: qcsrc/common/notifications/all.inc:364 +#, c-format +msgid "^BG%s^K3 was revived by ^BG%s" +msgstr "^BG%s^K3 foi ressuscitado por ^BG%s" + +#: qcsrc/common/notifications/all.inc:365 +#, c-format +msgid "^BG%s^K3 was revived by falling" +msgstr "^BG%s^K3 foi ressuscitado por cair" + +#: qcsrc/common/notifications/all.inc:366 +#, c-format +msgid "^BG%s^K3 was revived by their Nade explosion" +msgstr "^BG%s^K3 foi ressuscitado pela explosão da Granada deles" + +#: qcsrc/common/notifications/all.inc:367 +#, c-format +msgid "^BG%s^K3 was automatically revived after %s second(s)" +msgstr "^BG%s^K3 foi automaticamente ressuscitado depois de %s segundo(s)" + +#: qcsrc/common/notifications/all.inc:368 +#, c-format +msgid "^BG%s^K1 froze themself" +msgstr "^BG%s^K1 se congelou" + +#: qcsrc/common/notifications/all.inc:370 +#: qcsrc/common/notifications/all.inc:684 +msgid "^TC^TT^BG team wins the round" +msgstr "A equipe ^TC^TT^BG venceu a rodada" + +#: qcsrc/common/notifications/all.inc:371 +#: qcsrc/common/notifications/all.inc:685 +#, c-format +msgid "^BG%s^BG wins the round" +msgstr "^BG%s^BG venceu a rodada" + +#: qcsrc/common/notifications/all.inc:372 +#: qcsrc/common/notifications/all.inc:548 +msgid "^BGRound tied" +msgstr "^BGRodada empatada" + +#: qcsrc/common/notifications/all.inc:373 +#: qcsrc/common/notifications/all.inc:549 +msgid "^BGRound over, there's no winner" +msgstr "^BGA rodada acabou sem vencedor" + +#: qcsrc/common/notifications/all.inc:375 +#, c-format +msgid "^BGGodmode saved you %s units of damage, cheater!" +msgstr "^BGModo Deus te protegeu de %s de dano, seu trapaçeiro!" + +#: qcsrc/common/notifications/all.inc:377 +#, c-format +msgid "^BG%s^BG got the %s^BG buff!" +msgstr "^BG%s^BG pegou o bônus de %s^BG!" + +#: qcsrc/common/notifications/all.inc:378 +#, c-format +msgid "^BG%s^BG lost the %s^BG buff!" +msgstr "^BG%s^BG perdeu o bônus de %s^BG!" + +#: qcsrc/common/notifications/all.inc:379 +#: qcsrc/common/notifications/all.inc:692 +#, c-format +msgid "^BGYou dropped the %s^BG buff!" +msgstr "^BGVocê largou o bônus de %s^BG!" + +#: qcsrc/common/notifications/all.inc:380 +#: qcsrc/common/notifications/all.inc:693 +#, c-format +msgid "^BGYou got the %s^BG buff!" +msgstr "^BGVocê pegou o bônus de %s^BG!" + +#: qcsrc/common/notifications/all.inc:382 +#: qcsrc/common/notifications/all.inc:696 +#, c-format +msgid "^BGYou do not have the ^F1%s" +msgstr "^BGVocê não tem a ^F1%s" + +#: qcsrc/common/notifications/all.inc:383 +#: qcsrc/common/notifications/all.inc:697 +#, c-format +msgid "^BGYou dropped the ^F1%s^BG%s" +msgstr "^BGVocê largou a ^F1%s^BG%s" + +#: qcsrc/common/notifications/all.inc:384 +#: qcsrc/common/notifications/all.inc:698 +#, c-format +msgid "^BGYou got the ^F1%s" +msgstr "^BGVocê pegou a ^F1%s" + +#: qcsrc/common/notifications/all.inc:385 +#: qcsrc/common/notifications/all.inc:699 +#, c-format +msgid "^BGYou don't have enough ammo for the ^F1%s" +msgstr "^BGVocê não tem munição suficiente para a ^F1%s" + +#: qcsrc/common/notifications/all.inc:386 +#: qcsrc/common/notifications/all.inc:700 +#, c-format +msgid "^F1%s %s^BG is unable to fire, but its ^F1%s^BG can" +msgstr "(%s) O ^F1modo %s^BG não pode atirar, mas o ^F1%s^BG pode" + +#: qcsrc/common/notifications/all.inc:387 +#: qcsrc/common/notifications/all.inc:701 +#, c-format +msgid "^F1%s^BG is ^F4not available^BG on this map" +msgstr "^F1%s^BG^F4 não está disponível^BG neste mapa" + +#: qcsrc/common/notifications/all.inc:389 +#, c-format +msgid "^BG%s^BG is connecting..." +msgstr "^BG%s^BG está conectando..." + +#: qcsrc/common/notifications/all.inc:390 +#, c-format +msgid "^BG%s^F3 connected" +msgstr "^BG%s^F3 conectou-se" + +#: qcsrc/common/notifications/all.inc:391 +#, c-format +msgid "^BG%s^F3 connected and joined the ^TC^TT team" +msgstr "^BG%s^F3 conectou-se e se uniu à equipe ^TC^TT" + +#: qcsrc/common/notifications/all.inc:392 +#, c-format +msgid "^BG%s^F3 is now playing" +msgstr "^BG%s^F3 está jogando agora" + +#: qcsrc/common/notifications/all.inc:393 +#, c-format +msgid "^BG%s^F3 is now playing on the ^TC^TT team" +msgstr "^BG%s^F3 está jogando agora na equipe ^TC^TT" + +#: qcsrc/common/notifications/all.inc:395 +#: qcsrc/common/notifications/all.inc:706 +#, c-format +msgid "^BG%s^BG has dropped the ball!" +msgstr "^BG%s^BG largou a bola!" + +#: qcsrc/common/notifications/all.inc:396 +#: qcsrc/common/notifications/all.inc:707 +#, c-format +msgid "^BG%s^BG has picked up the ball!" +msgstr "^BG%s^BG pegou a bola!" + +#: qcsrc/common/notifications/all.inc:398 +#, c-format +msgid "^BG%s^BG captured the keys for the ^TC^TT team" +msgstr "^BG%s^BG capturou as chaves para a equipe ^TC^TT" + +#: qcsrc/common/notifications/all.inc:399 +#, c-format +msgid "^BG%s^BG dropped the ^TC^TT Key" +msgstr "^BG%s^BG largou a Chave ^TC^TT" + +#: qcsrc/common/notifications/all.inc:400 +#, c-format +msgid "^BG%s^BG lost the ^TC^TT Key" +msgstr "^BG%s^BG perdeu a Chave ^TC^TT" + +#: qcsrc/common/notifications/all.inc:401 +#, c-format +msgid "^BG%s^BG pushed %s^BG causing the ^TC^TT Key ^BGdestruction" +msgstr "^BG%s^BG empurrou %s^BG causando a ^BGdestruição da Chave ^TC^TT" + +#: qcsrc/common/notifications/all.inc:402 +#, c-format +msgid "^BG%s^BG destroyed the ^TC^TT Key" +msgstr "^BG%s^BG destruiu a Chave ^TC^TT" + +#: qcsrc/common/notifications/all.inc:403 +#, c-format +msgid "^BG%s^BG picked up the ^TC^TT Key" +msgstr "^BG%s^BG pegou a Chave ^TC^TT" + +#: qcsrc/common/notifications/all.inc:405 +#, c-format +msgid "^BG%s^F3 forfeited" +msgstr "^BG%s^F3 desistiu" + +#: qcsrc/common/notifications/all.inc:406 +#, c-format +msgid "^BG%s^F3 has no more lives left" +msgstr "^BG%s^F3 não tem mais vidas" + +#: qcsrc/common/notifications/all.inc:408 +msgid "^BGMonsters are currently disabled" +msgstr "^BGMonstros estão atualmente desativados" + +#: qcsrc/common/notifications/all.inc:410 +msgid "^BGThe ^TC^TT^BG team held the ball for too long" +msgstr "^BGA ^BGequipe ^TC^TT segurou a bola por muito tempo" + +#: qcsrc/common/notifications/all.inc:412 +#, c-format +msgid "^BG%s^BG captured %s^BG control point" +msgstr "^BG%s^BG capturou o ponto de controle %s^BG" + +#: qcsrc/common/notifications/all.inc:413 +#, c-format +msgid "^TC^TT^BG team %s^BG control point has been destroyed by %s" +msgstr "O ponto de controle %s^BG da equipe ^TC^TT^BG foi destruído por %s" + +#: qcsrc/common/notifications/all.inc:414 +msgid "^TC^TT^BG generator has been destroyed" +msgstr "O gerador ^TC^TT^BG foi destruído" + +#: qcsrc/common/notifications/all.inc:415 +msgid "^TC^TT^BG generator spontaneously combusted due to overtime!" +msgstr "" +"O gerador da equipe ^TC^TT^BG entrou em combustão espontaneamente devido aos " +"acréscimos!" + +#: qcsrc/common/notifications/all.inc:417 +#, c-format +msgid "^BG%s^K1 picked up Invisibility" +msgstr "^BG%s^K1 pegou Invisibilidade" + +#: qcsrc/common/notifications/all.inc:418 +#, c-format +msgid "^BG%s^K1 picked up Shield" +msgstr "^BG%s^K1 pegou Escudo" + +#: qcsrc/common/notifications/all.inc:419 +#, c-format +msgid "^BG%s^K1 picked up Speed" +msgstr "^BG%s^K1 pegou Velocidade" + +#: qcsrc/common/notifications/all.inc:420 +#, c-format +msgid "^BG%s^K1 picked up Strength" +msgstr "^BG%s^K1 pegou Força" + +#: qcsrc/common/notifications/all.inc:422 +#, c-format +msgid "^BG%s^F3 disconnected" +msgstr "^BG%s^F3 desconectou-se" + +#: qcsrc/common/notifications/all.inc:423 +#, c-format +msgid "^BG%s^F3 was kicked for idling" +msgstr "^BG%s^F3 foi expulso por inatividade" + +#: qcsrc/common/notifications/all.inc:424 +msgid "" +"^F2You were kicked from the server because you are a spectator and " +"spectators aren't allowed at the moment." +msgstr "" +"^F2Você foi expulso do servidor porque você é um espectador e espectadores " +"não são permitidos no momento." + +#: qcsrc/common/notifications/all.inc:425 +#, c-format +msgid "^BG%s^F3 is now spectating" +msgstr "^BG%s^F3 está assistindo agora" + +#: qcsrc/common/notifications/all.inc:427 +#, c-format +msgid "^BG%s^BG has abandoned the race" +msgstr "^BG%s^BG abandonou a corrida" + +#: qcsrc/common/notifications/all.inc:428 +#, c-format +msgid "^BG%s^BG couldn't break their %s%s^BG place record of %s%s %s" +msgstr "^BG%s^BG não puderam quebrar o recorde de lugar %s%s^BG de %s%s %s" + +#: qcsrc/common/notifications/all.inc:429 +#, c-format +msgid "^BG%s^BG couldn't break the %s%s^BG place record of %s%s %s" +msgstr "^BG%s^BG não pode quebrar o recorde de lugar %s%s^BG de %s%s %s" + +#: qcsrc/common/notifications/all.inc:430 +#, c-format +msgid "^BG%s^BG has finished the race" +msgstr "^BG%s^BG acabou a corrida" + +#: qcsrc/common/notifications/all.inc:431 +#, c-format +msgid "^BG%s^BG broke %s^BG's %s%s^BG place record with %s%s %s" +msgstr "" +"^BG%s^BG quebrou o recorde %s%s^BG de %s^BG e substituiu seu recorde com %s" +"%s %s" + +#: qcsrc/common/notifications/all.inc:432 +#, c-format +msgid "^BG%s^BG improved their %s%s^BG place record with %s%s %s" +msgstr "^BG%s^BG melhoraram seus %s%s^BG com %s%s %s" + +#: qcsrc/common/notifications/all.inc:433 +#, c-format +msgid "" +"^BG%s^BG scored a new record with ^F2%s^BG, but unfortunately lacks a UID " +"and will be lost." +msgstr "" +"^BG%s^BG atingiu um novo recorde com ^F2%s^BG, mas infelizmente, faltou uma " +"identidade de usuário e sua pontuação será perdida." + +#: qcsrc/common/notifications/all.inc:434 +#, c-format +msgid "" +"^BG%s^BG scored a new record with ^F2%s^BG, but is anonymous and will be " +"lost." +msgstr "" +"^BG%s^BG quebrou um novo recorde com ^F2%s^BG, mas é anônimo e, por isso, " +"será perdido." + +#: qcsrc/common/notifications/all.inc:435 +#, c-format +msgid "^BG%s^BG set the %s%s^BG place record with %s%s" +msgstr "^BG%s^BG definiu o recorde do local %s%s^BG com a pontuação %s%s" + +#: qcsrc/common/notifications/all.inc:437 +#, c-format +msgid "" +"^F4You have been invited by ^BG%s^F4 to join their game of ^F2%s^F4 " +"(^F1%s^F4)" +msgstr "" +"^F4Você foi convidado por ^BG%s^F4 para se juntar a eles na partida de " +"^F2%s^F4 (^F1%s^F4)" + +#: qcsrc/common/notifications/all.inc:439 +msgid "^TC^TT ^BGteam scores!" +msgstr "A equipe ^TC^TT ^BG pontuou!" + +#: qcsrc/common/notifications/all.inc:441 +#, c-format +msgid "" +"^F2You have to become a player within the next %s, otherwise you will be " +"kicked, because spectating isn't allowed at this time!" +msgstr "" +"^F2Você precisa se tornar um jogador dentro de %s, caso contrário, você será " +"expulso, pois espectadores não são permitidos no momento!" + +#: qcsrc/common/notifications/all.inc:443 +#, c-format +msgid "^BG%s^K1 picked up a Superweapon" +msgstr "^BG%s^K1 pegou uma Superarma" + +#: qcsrc/common/notifications/all.inc:445 +msgid "^BGYou cannot change to a larger team" +msgstr "^BGVocê não pode trocar para uma equipe maior" + +#: qcsrc/common/notifications/all.inc:446 +msgid "^BGYou are not allowed to change teams" +msgstr "^BGVocê não pode trocar de equipe" + +#: qcsrc/common/notifications/all.inc:448 +#, c-format +msgid "" +"^F4NOTE: ^BGThe server is running ^F1Xonotic %s (beta)^BG, you have " +"^F2Xonotic %s" +msgstr "" +"^F4NOTA: ^BGO servidor está rodando ^F1Xonotic %s (beta)^BG, você tem o " +"^F2Xonotic %s" + +#: qcsrc/common/notifications/all.inc:449 +#, c-format +msgid "" +"^F4NOTE: ^BGThe server is running ^F1Xonotic %s^BG, you have ^F2Xonotic %s" +msgstr "" +"^F4NOTA: ^BGO servidor está rodando ^F1Xonotic %s^BG, você tem o ^F2Xonotic " +"%s" + +#: qcsrc/common/notifications/all.inc:450 +#, c-format +msgid "" +"^F4NOTE: ^F1Xonotic %s^BG is out, and you still have ^F2Xonotic %s^BG - get " +"the update from ^F3http://www.xonotic.org/^BG!" +msgstr "" +"^F4NOTA: ^F1Xonotic %s^BG foi lançado e você ainda está com o ^F2Xonotic " +"%s^BG - baixe a atualização pelo site ^F3http://www.xonotic.org/^BG!" + +#: qcsrc/common/notifications/all.inc:452 +#, c-format +msgid "^F3SVQC Build information: ^F4%s" +msgstr "^F3SVQC Informação da versão: ^F4%s" + +#: qcsrc/common/notifications/all.inc:454 +#, c-format +msgid "" +"^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Accordeon%s%s" +msgstr "" +"^BG%s%s^K1 morreu por causa da grande habilidade de ^BG%s^K1 com a @!#%%'n " +"Accordeon%s%s" + +#: qcsrc/common/notifications/all.inc:455 +#, c-format +msgid "^BG%s^K1 hurt their own ears with the @!#%%'n Accordeon%s%s" +msgstr "^BG%s^K1 feriu seus próprios ouvidos com a @!#%%'n Accordeon%s%s" + +#: qcsrc/common/notifications/all.inc:456 +#, c-format +msgid "^BG%s%s^K1 was electrocuted by ^BG%s^K1's Arc%s%s" +msgstr "^BG%s%s^K1 foi eletrocutado pelo Arc de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:457 +#, c-format +msgid "^BG%s%s^K1 was blasted by ^BG%s^K1's Arc bolts%s%s" +msgstr "^BG%s%s^K1 foi explodido pelos raios do Arc de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:458 +#, c-format +msgid "^BG%s%s^K1 was shot to death by ^BG%s^K1's Blaster%s%s" +msgstr "^BG%s%s^K1 foi morto pelo Blaster de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:459 +#, c-format +msgid "^BG%s^K1 shot themself to hell with their Blaster%s%s" +msgstr "^BG%s^K1 atirou muito em si mesmo com seu Blaster%s%s" + +#: qcsrc/common/notifications/all.inc:460 +#, c-format +msgid "^BG%s%s^K1 felt the strong pull of ^BG%s^K1's Crylink%s%s" +msgstr "^BG%s%s^K1 sentiu o forte impulso da Crylink de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:461 +#, c-format +msgid "^BG%s^K1 felt the strong pull of their Crylink%s%s" +msgstr "^BG%s^K1 sentiu o forte impulso de sua Crylink%s%s" + +#: qcsrc/common/notifications/all.inc:462 +#, c-format +msgid "^BG%s%s^K1 ate ^BG%s^K1's rocket%s%s" +msgstr "^BG%s%s^K1 comeu o foguete de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:463 +#, c-format +msgid "^BG%s%s^K1 got too close to ^BG%s^K1's rocket%s%s" +msgstr "" + +#: qcsrc/common/notifications/all.inc:464 +#, c-format +msgid "^BG%s^K1 blew themself up with their Devastator%s%s" +msgstr "^BG%s^K1 se explodiu com sua Devastator%s%s" + +#: qcsrc/common/notifications/all.inc:465 +#, c-format +msgid "^BG%s%s^K1 was blasted by ^BG%s^K1's Electro bolt%s%s" +msgstr "^BG%s%s^K1 foi pulverizado por raios de Electro de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:466 +#, c-format +msgid "^BG%s%s^K1 felt the electrifying air of ^BG%s^K1's Electro combo%s%s" +msgstr "" +"^BG%s%s^K1 sentiu o ar eletrocutado do combo de Electro de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:467 +#, c-format +msgid "^BG%s%s^K1 got too close to ^BG%s^K1's Electro orb%s%s" +msgstr "^BG%s%s^K1 ficou muito perto da esfera de Electro de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:468 +#, c-format +msgid "^BG%s^K1 played with Electro bolts%s%s" +msgstr "^BG%s^K1 brincou com raios de Electro%s%s" + +#: qcsrc/common/notifications/all.inc:469 +#, c-format +msgid "^BG%s^K1 could not remember where they put their Electro orb%s%s" +msgstr "" +"^BG%s^K1 não conseguiu se lembrar onde tinha colocado a sua esfera de Electro" +"%s%s" + +#: qcsrc/common/notifications/all.inc:470 +#, c-format +msgid "^BG%s%s^K1 got too close to ^BG%s^K1's fireball%s%s" +msgstr "^BG%s%s^K1 chegou muito perto da fireball de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:471 +#, c-format +msgid "^BG%s%s^K1 got burnt by ^BG%s^K1's firemine%s%s" +msgstr "^BG%s%s^K1 foi queimado pela mina de fogo de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:472 +#, c-format +msgid "^BG%s^K1 should have used a smaller gun%s%s" +msgstr "^BG%s^K1 deveria ter usado uma arma menor%s%s" + +#: qcsrc/common/notifications/all.inc:473 +#, c-format +msgid "^BG%s^K1 forgot about their firemine%s%s" +msgstr "^BG%s^K1 se esqueceu da sua mina de fogo%s%s" + +#: qcsrc/common/notifications/all.inc:474 +#, c-format +msgid "^BG%s%s^K1 was pummeled by a burst of ^BG%s^K1's Hagar rockets%s%s" +msgstr "" +"^BG%s%s^K1 foi atingido por uma rajada de foguetes do Hagar de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:475 +#, c-format +msgid "^BG%s%s^K1 was pummeled by ^BG%s^K1's Hagar rockets%s%s" +msgstr "^BG%s%s^K1 foi atingido pelos foguetes do Hagar de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:476 +#, c-format +msgid "^BG%s^K1 played with tiny Hagar rockets%s%s" +msgstr "^BG%s^K1 brincou com minúsculos foguetes de Hagar%s%s" + +#: qcsrc/common/notifications/all.inc:477 +#, c-format +msgid "^BG%s%s^K1 was cut down with ^BG%s^K1's HLAC%s%s" +msgstr "^BG%s%s^K1 foi rasgado pelo HLAC de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:478 +#, c-format +msgid "^BG%s^K1 got a little jumpy with their HLAC%s%s" +msgstr "^BG%s^K1 ficou um pouco agitado com o seu HLAC%s%s" + +#: qcsrc/common/notifications/all.inc:479 +#, c-format +msgid "^BG%s%s^K1 was sniped by ^BG%s^K1's Heavy Machine Gun%s%s" +msgstr "^BG%s%s^K1 foi atingido pela Metralhadora Pesada de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:480 +#, c-format +msgid "^BG%s%s^K1 was torn to bits by ^BG%s^K1's Heavy Machine Gun%s%s" +msgstr "^BG%s%s^K1 foi despedaçado pela Metralhadora Pesada de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:481 +#, c-format +msgid "^BG%s%s^K1 was caught in ^BG%s^K1's Hook gravity bomb%s%s" +msgstr "^BG%s%s^K1 foi pego pela bomba de gravidade do Gancho de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:482 +#, c-format +msgid "" +"^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Klein Bottle%s%s" +msgstr "" +"^BG%s%s^K1 morreu por causa da grande habilidade de ^BG%s^K1 com a @!#%%'n " +"Klein Bottle%s%s" + +#: qcsrc/common/notifications/all.inc:483 +#, c-format +msgid "^BG%s^K1 hurt their own ears with the @!#%%'n Klein Bottle%s%s" +msgstr "" +"^BG%s^K1 machucaram seus próprios ouvidos com a @!#%%'n Klein Bottle%s%s" + +#: qcsrc/common/notifications/all.inc:484 +#, c-format +msgid "^BG%s%s^K1 was sniped by ^BG%s^K1's Machine Gun%s%s" +msgstr "^BG%s%s^K1 foi atingido pela Metralhadora de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:485 +#, c-format +msgid "^BG%s%s^K1 was riddled full of holes by ^BG%s^K1's Machine Gun%s%s" +msgstr "" +"^BG%s%s^K1 ficou cheio de buracos por causa da Metralhadora de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:486 +#: qcsrc/common/notifications/all.inc:790 +#, c-format +msgid "^BGYou cannot place more than ^F2%s^BG mines at a time" +msgstr "^BGVocê não pode pôr mais do que ^F2%s^BG minas por vez" + +#: qcsrc/common/notifications/all.inc:487 +#, c-format +msgid "^BG%s%s^K1 got too close to ^BG%s^K1's mine%s%s" +msgstr "^BG%s%s^K1 ficou muito perto da mina de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:488 +#, c-format +msgid "^BG%s^K1 forgot about their mine%s%s" +msgstr "^BG%s^K1 se esqueceu de sua mina%s%s" + +#: qcsrc/common/notifications/all.inc:489 +#, c-format +msgid "^BG%s%s^K1 got too close to ^BG%s^K1's Mortar grenade%s%s" +msgstr "^BG%s%s^K1 ficou muito perto da granada de Mortar de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:490 +#, c-format +msgid "^BG%s%s^K1 ate ^BG%s^K1's Mortar grenade%s%s" +msgstr "^BG%s%s^K1 comeu a granada de Mortar de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:491 +#, c-format +msgid "^BG%s^K1 didn't see their own Mortar grenade%s%s" +msgstr "^BG%s^K1 não viu a sua própria granada de Mortar%s%s" + +#: qcsrc/common/notifications/all.inc:492 +#, c-format +msgid "^BG%s^K1 blew themself up with their own Mortar%s%s" +msgstr "^BG%s^K1 se explodiu com o seu próprio Mortar%s%s" + +#: qcsrc/common/notifications/all.inc:493 +#, c-format +msgid "^BG%s%s^K1 was sniped with a Rifle by ^BG%s^K1%s%s" +msgstr "^BG%s%s^K1 foi atingido pelo Rifle de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:494 +#, c-format +msgid "^BG%s%s^K1 died in ^BG%s^K1's Rifle bullet hail%s%s" +msgstr "^BG%s%s^K1 morreu pela bala do Rifle de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:495 +#, c-format +msgid "^BG%s%s^K1 failed to hide from ^BG%s^K1's Rifle bullet hail%s%s" +msgstr "^BG%s%s^K1 falhou em se esconder da bala do Rifle de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:496 +#, c-format +msgid "^BG%s%s^K1 failed to hide from ^BG%s^K1's Rifle%s%s" +msgstr "^BG%s%s^K1 falhou em se esconder do Rifle de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:497 +#, c-format +msgid "^BG%s%s^K1 was sawn in half by ^BG%s^K1's Rocket Propelled Chainsaw%s%s" +msgstr "^BG%s%s^K1 foi serrado ao meio pelo RPC de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:498 +#, c-format +msgid "^BG%s%s^K1 almost dodged ^BG%s^K1's Rocket Propelled Chainsaw%s%s" +msgstr "^BG%s%s^K1 quase desviou do RPC de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:499 +#, c-format +msgid "^BG%s^K1 was sawn in half by their own Rocket Propelled Chainsaw%s%s" +msgstr "^BG%s^K1 foi serrado ao meio pelo seu próprio RPC%s%s" + +#: qcsrc/common/notifications/all.inc:500 +#, c-format +msgid "^BG%s^K1 blew themself up with their Rocket Propelled Chainsaw%s%s" +msgstr "^BG%s^K1 se explodiu com seu próprio RPC%s%s" + +#: qcsrc/common/notifications/all.inc:501 +#, c-format +msgid "^BG%s%s^K1 was pummeled by ^BG%s^K1's Seeker rockets%s%s" +msgstr "^BG%s%s^K1 foi surrado pelos foguetes do Seeker de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:502 +#, c-format +msgid "^BG%s%s^K1 was tagged by ^BG%s^K1's Seeker%s%s" +msgstr "^BG%s%s^K1 foi marcado pelo Seeker de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:503 +#, c-format +msgid "^BG%s^K1 played with tiny Seeker rockets%s%s" +msgstr "^BG%s^K1 brincou com minúsculos foguetes de Seeker%s%s" + +#: qcsrc/common/notifications/all.inc:504 +#, c-format +msgid "^BG%s%s^K1 was gunned down by ^BG%s^K1's Shockwave%s%s" +msgstr "^BG%s%s^K1 foi morto pela Shockwave de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:505 +#, c-format +msgid "^BG%s%s^K1 slapped ^BG%s^K1 around a bit with a large Shockwave%s%s" +msgstr "^BG%s%s^K1 deu uns tapas em ^BG%s^K1 com uma grande Shockwave%s%s" + +#: qcsrc/common/notifications/all.inc:506 +#, c-format +msgid "^BG%s%s^K1 was gunned down by ^BG%s^K1's Shotgun%s%s" +msgstr "^BG%s%s^K1 foi baleado pela Shotgun de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:507 +#, c-format +msgid "^BG%s%s^K1 slapped ^BG%s^K1 around a bit with a large Shotgun%s%s" +msgstr "^BG%s%s^K1 deu uns tapas em ^BG%s^K1 com uma grande Shotgun%s%s" + +#: qcsrc/common/notifications/all.inc:508 +#, c-format +msgid "^BG%s^K1 is now thinking with portals%s%s" +msgstr "^BG%s^K1 agora está pensando com portais%s%s" + +#: qcsrc/common/notifications/all.inc:509 +#, c-format +msgid "^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Tuba%s%s" +msgstr "" +"^BG%s%s^K1 morreu por causa da grande habilidade de ^BG%s^K1 com a @!#%%'n " +"Tuba%s%s" + +#: qcsrc/common/notifications/all.inc:510 +#, c-format +msgid "^BG%s^K1 hurt their own ears with the @!#%%'n Tuba%s%s" +msgstr "^BG%s^K1 feriu seus próprios ouvidos com a @!#%%'n Tuba%s%s" + +#: qcsrc/common/notifications/all.inc:511 +#, c-format +msgid "^BG%s%s^K1 has been sublimated by ^BG%s^K1's Vaporizer%s%s" +msgstr "^BG%s%s^K1 foi sublimado pela Vaporizer de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:512 +#, c-format +msgid "^BG%s%s^K1 has been vaporized by ^BG%s^K1's Vortex%s%s" +msgstr "^BG%s%s^K1 foi vaporizado pela Vortex de ^BG%s^K1%s%s" + +#: qcsrc/common/notifications/all.inc:537 +msgid "^F4You are now alone!" +msgstr "^F4Você está sozinho agora!" + +#: qcsrc/common/notifications/all.inc:539 +msgid "^BGYou are attacking!" +msgstr "^BGVocê está atacando!" + +#: qcsrc/common/notifications/all.inc:540 +msgid "^BGYou are defending!" +msgstr "^BGVocê está defendendo!" + +#: qcsrc/common/notifications/all.inc:541 +#, c-format +msgid "^BGObjective destroyed in ^F4%s^BG!" +msgstr "^BGObjetivo destruído em ^F4%s^BG!" + +#: qcsrc/common/notifications/all.inc:543 +msgid "^F4Begin!" +msgstr "^F4Começou!" + +#: qcsrc/common/notifications/all.inc:544 +msgid "^F4Game starts in ^COUNT" +msgstr "^F4A partida iniciará em ^COUNT" + +#: qcsrc/common/notifications/all.inc:545 +msgid "^F4Round starts in ^COUNT" +msgstr "^F4A rodada iniciará em ^COUNT" + +#: qcsrc/common/notifications/all.inc:546 +msgid "^F4Round cannot start" +msgstr "^F4A rodada não pode iniciar" + +#: qcsrc/common/notifications/all.inc:551 +msgid "^F2Don't camp!" +msgstr "^F2Não campere!" + +#: qcsrc/common/notifications/all.inc:555 +msgid "" +"^BGYou are now free.\n" +"^BGFeel free to ^F2try to capture^BG the flag again\n" +"^BGif you think you will succeed." +msgstr "" +"^BGVocê está livre agora.\n" +"^BGSinta-se à vontade para ^F2tentar capturar^BG a bandeira de novo\n" +"^BGse você acha que irá conseguir." + +#: qcsrc/common/notifications/all.inc:556 +msgid "^BGThis flag is currently inactive" +msgstr "^BGEsta bandeira está atualmente inativa" + +#: qcsrc/common/notifications/all.inc:557 +msgid "" +"^BGYou are now ^F1shielded^BG from the flag(s)\n" +"^BGfor ^F2too many unsuccessful attempts^BG to capture.\n" +"^BGMake some defensive scores before trying again." +msgstr "" +"^BGVocê agora está ^F1impedido^BG de carregar a(s) bandeira(s)\n" +"^BGapós ^F2várias tentativas de captura sem êxito^BG.\n" +"^BGFaça alguns pontos defensivos antes de tentar novamente." + +#: qcsrc/common/notifications/all.inc:558 +msgid "^BGYou captured the ^TC^TT^BG flag!" +msgstr "^BGVocê capturou a bandeira ^TC^TT^BG!" + +#: qcsrc/common/notifications/all.inc:559 +msgid "^BGYou captured the flag!" +msgstr "^BGVocê capturou a bandeira!" + +#: qcsrc/common/notifications/all.inc:560 +#, c-format +msgid "^BGToo many flag throws! Throwing disabled for %s." +msgstr "" +"^BGNão largue a bandeira várias vezes! Agora você não pode largar por %s." + +#: qcsrc/common/notifications/all.inc:561 +#, c-format +msgid "^BG%s^BG passed the ^TC^TT^BG flag to %s" +msgstr "^BG%s^BG passou a bandeira ^TC^TT^BG para %s" + +#: qcsrc/common/notifications/all.inc:562 +#, c-format +msgid "^BG%s^BG passed the flag to %s" +msgstr "^BG%s^BG passou a bandeira para %s" + +#: qcsrc/common/notifications/all.inc:563 +#, c-format +msgid "^BGYou received the ^TC^TT^BG flag from %s" +msgstr "^BGVocê recebeu a bandeira ^TC^TT^BG de %s" + +#: qcsrc/common/notifications/all.inc:564 +#, c-format +msgid "^BGYou received the flag from %s" +msgstr "^BGVocê recebeu a bandeira de %s" + +#: qcsrc/common/notifications/all.inc:565 +#, c-format +msgid "^BGPress ^F2%s^BG to receive the flag from %s^BG" +msgstr "^BGAperte ^F2%s^BG para receber a bandeira de %s^BG" + +#: qcsrc/common/notifications/all.inc:566 +#, c-format +msgid "^BGRequesting %s^BG to pass you the flag" +msgstr "^BGPedindo à %s^BG para que te passe a bandeira" + +#: qcsrc/common/notifications/all.inc:567 +#, c-format +msgid "^BGYou passed the ^TC^TT^BG flag to %s" +msgstr "^BGVocê passou a bandeira ^TC^TT^BG para %s" + +#: qcsrc/common/notifications/all.inc:568 +#, c-format +msgid "^BGYou passed the flag to %s" +msgstr "^BGVocê passou a bandeira para %s" + +#: qcsrc/common/notifications/all.inc:569 +msgid "^BGYou got the ^TC^TT^BG flag!" +msgstr "^BGVocê pegou a bandeira ^TC^TT^BG!" + +#: qcsrc/common/notifications/all.inc:570 +msgid "^BGYou got the flag!" +msgstr "^BGVocê pegou a bandeira!" + +#: qcsrc/common/notifications/all.inc:571 +#, c-format +msgid "^BGYou got your %steam^BG's flag, return it!" +msgstr "^BGVocê pegou a bandeira da sua %sequipe^BG, retorne-a!" + +#: qcsrc/common/notifications/all.inc:572 +#, c-format +msgid "^BGYou got the %senemy^BG's flag, return it!" +msgstr "^BGVocê pegou a bandeira da %sequipe inimiga^BG, retorne-a!" + +#: qcsrc/common/notifications/all.inc:573 +#, c-format +msgid "^BGThe %senemy^BG got your flag! Retrieve it!" +msgstr "^BGO %sinimigo^BG pegou a sua bandeira! Recupere-a!" + +#: qcsrc/common/notifications/all.inc:574 +#, c-format +msgid "^BGThe %senemy (^BG%s%s)^BG got your flag! Retrieve it!" +msgstr "^BGO %sinimigo (^BG%s%s)^BG pegou a sua bandeira! Recupere-a!" + +#: qcsrc/common/notifications/all.inc:575 +#, c-format +msgid "^BGThe %senemy^BG got the flag! Retrieve it!" +msgstr "^BGO %sinimigo^BG pegou a bandeira! Recupere-a!" + +#: qcsrc/common/notifications/all.inc:576 +#, c-format +msgid "^BGThe %senemy (^BG%s%s)^BG got the flag! Retrieve it!" +msgstr "^BGO %sinimigo (^BG%s%s)^BG pegou a bandeira! Recupere-a!" + +#: qcsrc/common/notifications/all.inc:577 +#, c-format +msgid "^BGThe %senemy^BG got their flag! Retrieve it!" +msgstr "^BGO %sinimigo^BG pegou a bandeira deles! Recupere-a!" + +#: qcsrc/common/notifications/all.inc:578 +#, c-format +msgid "^BGThe %senemy (^BG%s%s)^BG got their flag! Retrieve it!" +msgstr "^BGO %sinimigo (^BG%s%s)^BG pegou a bandeira deles! Recupere-a!" + +#: qcsrc/common/notifications/all.inc:579 +#, c-format +msgid "^BGYour %steam mate^BG got the ^TC^TT^BG flag! Protect them!" +msgstr "^BGO seu %scolega de equipe^BG pegou a bandeira ^TC^TT^BG! Proteja-o!" + +#: qcsrc/common/notifications/all.inc:580 +#, c-format +msgid "^BGYour %steam mate (^BG%s%s)^BG got the ^TC^TT^BG flag! Protect them!" +msgstr "" +"^BGO seu %scolega de equipe (^BG%s%s)^BG pegou a bandeira ^TC^TT^BG! Proteja-" +"o!" + +#: qcsrc/common/notifications/all.inc:581 +#, c-format +msgid "^BGYour %steam mate^BG got the flag! Protect them!" +msgstr "^BGO seu %scolega de equipe^BG pegou a bandeira! Proteja-o!" + +#: qcsrc/common/notifications/all.inc:582 +#, c-format +msgid "^BGYour %steam mate (^BG%s%s)^BG got the flag! Protect them!" +msgstr "^BGO seu %scolega de equipe (^BG%s%s)^BG pegou a bandeira! Proteja-o!" + +#: qcsrc/common/notifications/all.inc:583 +msgid "^BGEnemies can now see you on radar!" +msgstr "^BGAgora os inimigos podem te ver no radar!" + +#: qcsrc/common/notifications/all.inc:584 +msgid "^BGYou returned the ^TC^TT^BG flag!" +msgstr "^BGVocê retornou a bandeira ^TC^TT^BG!" + +#: qcsrc/common/notifications/all.inc:585 +msgid "^BGStalemate! Enemies can now see you on radar!" +msgstr "^BGCuidado! Agora os inimigos podem te ver no radar!" + +#: qcsrc/common/notifications/all.inc:586 +msgid "^BGStalemate! Flag carriers can now be seen by enemies on radar!" +msgstr "" +"^BGCuidado! Agora portadores da bandeira podem ser vistos pelos inimigos no " +"radar!" + +#: qcsrc/common/notifications/all.inc:590 +#, c-format +msgid "^K3%sYou fragged ^BG%s" +msgstr "^K3%sVocê executou ^BG%s" + +#: qcsrc/common/notifications/all.inc:591 +#: qcsrc/common/notifications/all.inc:600 +#: qcsrc/common/notifications/all.inc:609 +#, c-format +msgid "^K3%sYou scored against ^BG%s" +msgstr "^K3%sVocê pontuou contra ^BG%s" + +#: qcsrc/common/notifications/all.inc:592 +#, c-format +msgid "^K1%sYou were fragged by ^BG%s" +msgstr "^K1%sVocê foi executado por ^BG%s" + +#: qcsrc/common/notifications/all.inc:593 +#: qcsrc/common/notifications/all.inc:602 +#: qcsrc/common/notifications/all.inc:611 +#, c-format +msgid "^K1%sYou were scored against by ^BG%s" +msgstr "^K1%sVocê foi pontuado contra por ^BG%s" + +#: qcsrc/common/notifications/all.inc:599 +#, c-format +msgid "^K3%sYou burned ^BG%s" +msgstr "^K3%sVocê queimou ^BG%s" + +#: qcsrc/common/notifications/all.inc:601 +#, c-format +msgid "^K1%sYou were burned by ^BG%s" +msgstr "^K1%sVocê foi queimado por ^BG%s" + +#: qcsrc/common/notifications/all.inc:608 +#, c-format +msgid "^K3%sYou froze ^BG%s" +msgstr "^K3%sVocê congelou ^BG%s" + +#: qcsrc/common/notifications/all.inc:610 +#, c-format +msgid "^K1%sYou were frozen by ^BG%s" +msgstr "^K1%sVocê foi congelado por ^BG%s" + +#: qcsrc/common/notifications/all.inc:617 +#, c-format +msgid "^K1%sYou typefragged ^BG%s" +msgstr "^K1%sVocê executou ^BG%s enquanto digitava" + +#: qcsrc/common/notifications/all.inc:618 +#, c-format +msgid "^K1%sYou scored against ^BG%s^K1 while they were typing" +msgstr "^K1%sVocê pontuou contra ^BG%s^K1 enquanto estavam digitando" + +#: qcsrc/common/notifications/all.inc:619 +#, c-format +msgid "^K1%sYou were typefragged by ^BG%s" +msgstr "^K1%sVocê foi executado enquanto digitava por ^BG%s" + +#: qcsrc/common/notifications/all.inc:620 +#, c-format +msgid "^K1%sYou were scored against by ^BG%s^K1 while typing" +msgstr "^K1%sVocê foi pontuado contra enquanto digitava por ^BG%s^K1" + +#: qcsrc/common/notifications/all.inc:626 +#, c-format +msgid "^BGPress ^F2%s^BG again to toss the nade!" +msgstr "^BGAperte ^F2%s^BG de novo para lançar a granada!" + +#: qcsrc/common/notifications/all.inc:627 +msgid "^F2You got a ^K1BONUS GRENADE^F2!" +msgstr "^F2Você pegou uma ^K1GRANADA BÔNUS^F2!" + +#: qcsrc/common/notifications/all.inc:629 +#, c-format +msgid "" +"^BGYou have been moved into a different team\n" +"You are now on: %s" +msgstr "" +"^BGVocê foi movido para uma equipe diferente\n" +"Agora você está na equipe: %s" + +#: qcsrc/common/notifications/all.inc:630 +msgid "^K1Don't go against your team mates!" +msgstr "^K1Não vá contra seus colegas de equipe!" + +#: qcsrc/common/notifications/all.inc:630 +msgid "^K1Don't shoot your team mates!" +msgstr "^K1Não atire nos seus colegas de equipe!" + +#: qcsrc/common/notifications/all.inc:631 +msgid "^K1Die camper!" +msgstr "^K1Morra, camper!" + +#: qcsrc/common/notifications/all.inc:631 +msgid "^K1Reconsider your tactics, camper!" +msgstr "^K1Reconsidere suas táticas, camper!" + +#: qcsrc/common/notifications/all.inc:632 +msgid "^K1You unfairly eliminated yourself!" +msgstr "^K1Você se matou injustamente!" + +#: qcsrc/common/notifications/all.inc:633 +#, c-format +msgid "^K1You were %s" +msgstr "^K1Você foi %s" + +#: qcsrc/common/notifications/all.inc:634 +msgid "^K1You couldn't catch your breath!" +msgstr "^K1Você não recuperou seu fôlego!" + +#: qcsrc/common/notifications/all.inc:635 +msgid "^K1You hit the ground with a crunch!" +msgstr "^K1Você caiu no chão rigorosamente!" + +#: qcsrc/common/notifications/all.inc:636 +msgid "^K1You felt a little too hot!" +msgstr "^K1Você se sentiu um pouco quente!" + +#: qcsrc/common/notifications/all.inc:636 +msgid "^K1You got a little bit too crispy!" +msgstr "^K1Você ficou um pouco crocante demais!" + +#: qcsrc/common/notifications/all.inc:637 +msgid "^K1You killed your own dumb self!" +msgstr "^K1Você se matou, seu burro!" + +#: qcsrc/common/notifications/all.inc:637 +msgid "^K1You need to be more careful!" +msgstr "^K1Você precisa ter mais cuidado!" + +#: qcsrc/common/notifications/all.inc:638 +msgid "^K1You couldn't stand the heat!" +msgstr "^K1Você não suportou o calor!" + +#: qcsrc/common/notifications/all.inc:639 +msgid "^K1You need to watch out for monsters!" +msgstr "^K1Você tem que se cuidar dos monstros!" + +#: qcsrc/common/notifications/all.inc:639 +msgid "^K1You were killed by a monster!" +msgstr "^K1Você foi morto por um monstro!" + +#: qcsrc/common/notifications/all.inc:640 +msgid "^K1Tastes like chicken!" +msgstr "^K1Tem gosto de frango!" + +#: qcsrc/common/notifications/all.inc:640 +msgid "^K1You forgot to put the pin back in!" +msgstr "^K1Você se esqueceu de pôr o pino de volta!" + +#: qcsrc/common/notifications/all.inc:641 +msgid "^K1Hanging around a napalm explosion is bad!" +msgstr "^K1Brincar no meio de uma explosão de napalm é errado!" + +#: qcsrc/common/notifications/all.inc:642 +msgid "^K1You felt a little chilly!" +msgstr "^K1Você sentiu um pouco de frio!" + +#: qcsrc/common/notifications/all.inc:642 +msgid "^K1You got a little bit too cold!" +msgstr "^K1Você ficou um pouco gelado demais!" + +#: qcsrc/common/notifications/all.inc:643 +msgid "^K1Your Healing Nade is a bit defective" +msgstr "^K1Sua Granada de Cura está um pouco defeituosa" + +#: qcsrc/common/notifications/all.inc:644 +msgid "^K1You are respawning for running out of ammo..." +msgstr "^K1Você está ressurgindo por ficar sem munição..." + +#: qcsrc/common/notifications/all.inc:644 +msgid "^K1You were killed for running out of ammo..." +msgstr "^K1Você foi morto por ficar sem munição..." + +#: qcsrc/common/notifications/all.inc:645 +msgid "^K1You grew too old without taking your medicine" +msgstr "^K1Você ficou muito velho sem tomar o seu medicamento" + +#: qcsrc/common/notifications/all.inc:645 +msgid "^K1You need to preserve your health" +msgstr "^K1Você precisa conservar sua saúde" + +#: qcsrc/common/notifications/all.inc:646 +msgid "^K1You became a shooting star!" +msgstr "^K1Você virou uma estrela cadente!" + +#: qcsrc/common/notifications/all.inc:647 +msgid "^K1You melted away in slime!" +msgstr "^K1Você derreteu na lama!" + +#: qcsrc/common/notifications/all.inc:648 +msgid "^K1You committed suicide!" +msgstr "^K1Você cometeu suicídio!" + +#: qcsrc/common/notifications/all.inc:648 +msgid "^K1You ended it all!" +msgstr "^K1Você acabou com tudo!" + +#: qcsrc/common/notifications/all.inc:649 +msgid "^K1You got stuck in a swamp!" +msgstr "^K1Você ficou preso em um pântano!" + +#: qcsrc/common/notifications/all.inc:650 +#, c-format +msgid "^BGYou are now on: %s" +msgstr "^BGVocê está agora em: %s" + +#: qcsrc/common/notifications/all.inc:651 +msgid "^K1You died in an accident!" +msgstr "^K1Você morreu em um acidente!" + +#: qcsrc/common/notifications/all.inc:652 +msgid "^K1You had an unfortunate run in with a turret!" +msgstr "^K1Você teve um encontro lamentável com uma sentinela!" + +#: qcsrc/common/notifications/all.inc:652 +msgid "^K1You were fragged by a turret!" +msgstr "^K1Você foi executado por uma sentinela!" + +#: qcsrc/common/notifications/all.inc:653 +msgid "^K1You had an unfortunate run in with an eWheel turret!" +msgstr "^K1Você teve um encontro lamentável com uma sentinela eWheel!" + +#: qcsrc/common/notifications/all.inc:653 +msgid "^K1You were fragged by an eWheel turret!" +msgstr "^K1Você foi executado por uma sentinela eWheel!" + +#: qcsrc/common/notifications/all.inc:654 +msgid "^K1You had an unfortunate run in with a Walker turret!" +msgstr "^K1Você teve um encontro lamentável com uma sentinela Walker!" + +#: qcsrc/common/notifications/all.inc:654 +msgid "^K1You were fragged by a Walker turret!" +msgstr "^K1Você foi executado por uma sentinela Walker!" + +#: qcsrc/common/notifications/all.inc:655 +msgid "^K1You got caught in the blast of a Bumblebee explosion!" +msgstr "^K1Você foi pego pelo raio de uma explosão de Bumblebee!" + +#: qcsrc/common/notifications/all.inc:656 +msgid "^K1You were crushed by a vehicle!" +msgstr "^K1Você foi esmagado por um veículo!" + +#: qcsrc/common/notifications/all.inc:657 +msgid "^K1You were caught in a Raptor cluster bomb!" +msgstr "^K1Você foi pego por uma bomba Raptor!" + +#: qcsrc/common/notifications/all.inc:658 +msgid "^K1You got caught in the blast of a Raptor explosion!" +msgstr "^K1Você foi pego no raio de uma explosão de Raptor!" + +#: qcsrc/common/notifications/all.inc:659 +msgid "^K1You got caught in the blast of a Spiderbot explosion!" +msgstr "^K1Você foi pego no raio de uma explosão de Spiderbot!" + +#: qcsrc/common/notifications/all.inc:660 +msgid "^K1You were blasted to bits by a Spiderbot rocket!" +msgstr "^K1Você foi despedaçado por um foguete de Spiderbot!" + +#: qcsrc/common/notifications/all.inc:661 +msgid "^K1You got caught in the blast of a Racer explosion!" +msgstr "^K1Você foi pego no raio de uma explosão de Racer!" + +#: qcsrc/common/notifications/all.inc:662 +msgid "^K1You couldn't find shelter from a Racer rocket!" +msgstr "^K1Você não conseguiu escapar do foguete de um Racer!" + +#: qcsrc/common/notifications/all.inc:663 +msgid "^K1Watch your step!" +msgstr "^K1Cuidado onde pisa!" + +#: qcsrc/common/notifications/all.inc:665 +#, c-format +msgid "^K1Moron! You fragged ^BG%s^K1, a team mate!" +msgstr "^K1Idiota! Você executou ^BG%s^K1, um colega de equipe!" + +#: qcsrc/common/notifications/all.inc:665 +#, c-format +msgid "^K1Moron! You went against ^BG%s^K1, a team mate!" +msgstr "^K1Idiota! Você foi contra ^BG%s^K1, um colega de equipe!" + +#: qcsrc/common/notifications/all.inc:666 +#, c-format +msgid "^K1You were fragged by ^BG%s^K1, a team mate" +msgstr "^K1Você foi executado por ^BG%s^K1, um colega de equipe" + +#: qcsrc/common/notifications/all.inc:666 +#, c-format +msgid "^K1You were scored against by ^BG%s^K1, a team mate" +msgstr "^K1Você foi pontuado contra por ^BG%s^K1, um colega de equipe" + +#: qcsrc/common/notifications/all.inc:668 +msgid "" +"^K1Stop idling!\n" +"^BGDisconnecting in ^COUNT..." +msgstr "" +"^K1Pare de ficar AFK!\n" +"^BGDesconectando em ^COUNT..." + +#: qcsrc/common/notifications/all.inc:670 +#, c-format +msgid "^BGYou need %s^BG!" +msgstr "^BGVocê precisa %s^BG!" + +#: qcsrc/common/notifications/all.inc:671 +#, c-format +msgid "^BGYou also need %s^BG!" +msgstr "^BGVocê também precisa %s^BG!" + +#: qcsrc/common/notifications/all.inc:672 +msgid "^BGDoor unlocked!" +msgstr "^BGPorta destrancada!" + +#: qcsrc/common/notifications/all.inc:674 +msgid "^F2You picked up some extra lives" +msgstr "^F2Você pegou algumas vidas extras" + +#: qcsrc/common/notifications/all.inc:676 +#, c-format +msgid "^K3You revived ^BG%s" +msgstr "^K3Você ressuscitou ^BG%s" + +#: qcsrc/common/notifications/all.inc:677 +msgid "^K3You revived yourself" +msgstr "^K3Você se ressuscitou" + +#: qcsrc/common/notifications/all.inc:678 +#, c-format +msgid "^K3You were revived by ^BG%s" +msgstr "^K3Você foi ressuscitado por ^BG%s" + +#: qcsrc/common/notifications/all.inc:679 +#, c-format +msgid "^K3You were automatically revived after %s second(s)" +msgstr "^K3Você foi automaticamente ressuscitado após %s segundo(s)" + +#: qcsrc/common/notifications/all.inc:681 +msgid "^BGThe generator is under attack!" +msgstr "^BGO gerador está sobre ataque!" + +#: qcsrc/common/notifications/all.inc:683 +msgid "^TC^TT^BG team loses the round" +msgstr "A equipe ^TC^TT^BG perdeu a rodada" + +#: qcsrc/common/notifications/all.inc:687 +msgid "^K1You froze yourself" +msgstr "^K1Você se congelou" + +#: qcsrc/common/notifications/all.inc:688 +msgid "^K1Round already started, you spawn as frozen" +msgstr "^K1A rodada já começou, você surgiu congelado" + +#: qcsrc/common/notifications/all.inc:690 +#, c-format +msgid "^K1A %s has arrived!" +msgstr "^K1Um %s chegou!" + +#: qcsrc/common/notifications/all.inc:694 +msgid "^BGYou got the ^F1Fuel regenerator" +msgstr "^BGVocê pegou o ^F1Regenerador de combustível" + +#: qcsrc/common/notifications/all.inc:695 +msgid "^BGYou got the ^F1Jet pack" +msgstr "^BGVocê pegou a ^F1Mochila a Jato" + +#: qcsrc/common/notifications/all.inc:703 +msgid "" +"^K1No spawnpoints available!\n" +"Hope your team can fix it..." +msgstr "" +"^K1Não há pontos de surgimento disponíveis!\n" +"Tomara que sua equipe consiga consertar isso..." + +#: qcsrc/common/notifications/all.inc:704 +msgid "" +"^K1You may not join the game at this time.\n" +"The player limit reached maximum capacity." +msgstr "" +"^K1Você não pode entrar no jogo neste momento.\n" +"A capacidade máxima de jogadores foi alcançada." + +#: qcsrc/common/notifications/all.inc:708 +msgid "^BGYou picked up the ball" +msgstr "^BGVocê pegou a bola" + +#: qcsrc/common/notifications/all.inc:709 +msgid "^BGKilling people while you don't have the ball gives no points!" +msgstr "^BGMatar os outros enquanto você não tiver a bola não lhe dará pontos!" + +#: qcsrc/common/notifications/all.inc:711 +msgid "" +"^BGAll keys are in your team's hands!\n" +"Help the key carriers to meet!" +msgstr "" +"^BGTodas as chaves estão com a sua equipe!\n" +"Ajude os portadores das chaves a se encontrarem!" + +#: qcsrc/common/notifications/all.inc:712 +msgid "" +"^BGAll keys are in ^TC^TT team^BG's hands!\n" +"Interfere ^F4NOW^BG!" +msgstr "" +"^BGTodas as chaves estão com a equipe ^TC^TT^BG!\n" +"Interfira ^F4AGORA^BG!" + +#: qcsrc/common/notifications/all.inc:713 +msgid "" +"^BGAll keys are in your team's hands!\n" +"Meet the other key carriers ^F4NOW^BG!" +msgstr "" +"^BGTodas as chaves estão com a sua equipe!\n" +"Encontre-se com os outros portadores das chaves ^F4AGORA^BG!" + +#: qcsrc/common/notifications/all.inc:714 +msgid "^F4Round will start in ^COUNT" +msgstr "^F4A rodada iniciará em ^COUNT" + +#: qcsrc/common/notifications/all.inc:715 +msgid "^BGScanning frequency range..." +msgstr "^BGEscaneando alcance de frequência..." + +#: qcsrc/common/notifications/all.inc:716 +msgid "^BGYou are starting with the ^TC^TT Key" +msgstr "^BGVocê está começando com a Chave ^TC^TT" + +#: qcsrc/common/notifications/all.inc:718 +msgid "^BGYou have no lives left, you must wait until the next match" +msgstr "" +"^BGVocê não tem vidas sobrando, você terá que aguardar até a próxima partida" + +#: qcsrc/common/notifications/all.inc:720 +#, c-format +msgid "" +"^BGWaiting for players to join...\n" +"Need active players for: %s" +msgstr "" +"^BGEsperando jogadores entrarem...\n" +"Precisa-se de jogadores ativos para: %s" + +#: qcsrc/common/notifications/all.inc:721 +#, c-format +msgid "^BGWaiting for %s player(s) to join..." +msgstr "^BGEsperando %s jogador(es) entrar(em)..." + +#: qcsrc/common/notifications/all.inc:723 +msgid "^BGYour weapon has been downgraded until you find some ammo!" +msgstr "^BGA sua arma foi rebaixada até que você encontre alguma munição!" + +#: qcsrc/common/notifications/all.inc:724 +msgid "^F4^COUNT^BG left to find some ammo!" +msgstr "^F4^COUNT^BG restante(s) para encontrar alguma munição!" + +#: qcsrc/common/notifications/all.inc:725 +msgid "^BGGet some ammo or you'll be dead in ^F4^COUNT^BG!" +msgstr "^BGEncontre alguma munição ou você morrerá em ^F4^COUNT^BG!" + +#: qcsrc/common/notifications/all.inc:725 +msgid "^BGGet some ammo! ^F4^COUNT^BG left!" +msgstr "^BGEncontre alguma munição! Falta ^F4^COUNT^BG!" + +#: qcsrc/common/notifications/all.inc:726 +#, c-format +msgid "^F2Extra lives remaining: ^K1%s" +msgstr "^F2Vidas extras restantes: ^K1%s" + +#: qcsrc/common/notifications/all.inc:730 +#, c-format +msgid "" +"^F2^COUNT^BG until weapon change...\n" +"Next weapon: ^F1%s" +msgstr "" +"^F2^CONTAGEM^BG até a mudança de arma...\n" +"Próxima arma: ^F1%s" + +#: qcsrc/common/notifications/all.inc:731 +#, c-format +msgid "^F2Active weapon: ^F1%s" +msgstr "^F2Arma ativa: ^F1%s" + +#: qcsrc/common/notifications/all.inc:733 +#, c-format +msgid "^BGYou captured %s^BG control point" +msgstr "^BGVocê capturou o ponto de controle %s^BG" + +#: qcsrc/common/notifications/all.inc:734 +#, c-format +msgid "^TC^TT^BG team captured %s^BG control point" +msgstr "A equipe ^TC^TT^BG capturou o ponto de controle %s^BG" + +#: qcsrc/common/notifications/all.inc:735 +msgid "^BGThis control point currently cannot be captured" +msgstr "^BGEste ponto de controle atualmente não pode ser capturado" + +#: qcsrc/common/notifications/all.inc:736 +msgid "" +"^BGThe enemy generator cannot be destroyed yet\n" +"^F2Capture some control points to unshield it" +msgstr "" +"^BGO gerador inimigo ainda não pode ser destruído\n" +"^F2Capture alguns pontos de controle para desprotegê-lo" + +#: qcsrc/common/notifications/all.inc:737 +msgid "^BGThe ^TCenemy^BG generator is no longer shielded!" +msgstr "^BGO gerador ^TCinimigo^BG não está mais protegido!" + +#: qcsrc/common/notifications/all.inc:738 +msgid "" +"^K1Your generator is NOT shielded!\n" +"^BGRe-capture control points to shield it!" +msgstr "" +"^K1O seu gerador NÃO está blindado!\n" +"^BGRecapture pontos de controle para blindá-lo!" + +#: qcsrc/common/notifications/all.inc:739 +#, c-format +msgid "^BGPress ^F2%s^BG to teleport" +msgstr "^BGAperte ^F2%s^BG para se teletransportar" + +#: qcsrc/common/notifications/all.inc:740 +#, c-format +msgid "^BGTeleporting disabled for %s" +msgstr "^BGTeletransporte desabilitado para %s" + +#: qcsrc/common/notifications/all.inc:742 +msgid "" +"^F2Now playing ^F4OVERTIME^F2!\n" +"Keep fragging until we have a winner!" +msgstr "" +"^F2Jogando agora nos ^F4ACRÉSCIMOS^F2!\n" +"Continue executando até que tenhamos um vencedor!" + +#: qcsrc/common/notifications/all.inc:742 +msgid "" +"^F2Now playing ^F4OVERTIME^F2!\n" +"Keep scoring until we have a winner!" +msgstr "" +"^F2Jogando agora nos ^F4ACRÉSCIMOS^F2!\n" +"Continue pontuando até que tenhamos um vencedor!" + +#: qcsrc/common/notifications/all.inc:743 +msgid "" +"^F2Now playing ^F4OVERTIME^F2!\n" +"\n" +"Generators are now decaying.\n" +"The more control points your team holds,\n" +"the faster the enemy generator decays" +msgstr "" +"^F2Jogando agora nos ^F4ACRÉSCIMOS^F2!\n" +"\n" +"Os geradores estão enfraquecendo agora.\n" +"Quanto mais pontos de controle a sua equipe tiver,\n" +"mais rápido o gerador inimigo enfraquecerá" + +#: qcsrc/common/notifications/all.inc:744 +#, c-format +msgid "" +"^F2Now playing ^F4OVERTIME^F2!\n" +"^BGAdded ^F4%s^BG to the game!" +msgstr "" +"^F2Jogando agora nos ^F4ACRÉSCIMOS^F2!\n" +"^BGAdicionado ^F4%s^BG à partida!" + +#: qcsrc/common/notifications/all.inc:746 +msgid "^K1In^BG-portal created" +msgstr "^K1^BGPortal de entrada criado" + +#: qcsrc/common/notifications/all.inc:747 +msgid "^F3Out^BG-portal created" +msgstr "^F3^BGPortal de saída criado" + +#: qcsrc/common/notifications/all.inc:748 +msgid "^F1Portal creation failed" +msgstr "^F1Falha ao criar portal" + +#: qcsrc/common/notifications/all.inc:750 +msgid "^F2Strength infuses your weapons with devastating power" +msgstr "^F2A Força deixou suas armas com um poder devastador" + +#: qcsrc/common/notifications/all.inc:751 +msgid "^F2Strength has worn off" +msgstr "^F2A Força se esgotou" + +#: qcsrc/common/notifications/all.inc:753 +msgid "^F2Shield surrounds you" +msgstr "^F2O Escudo te cerca" + +#: qcsrc/common/notifications/all.inc:754 +msgid "^F2Shield has worn off" +msgstr "^F2O Escudo se esgotou" + +#: qcsrc/common/notifications/all.inc:756 +msgid "^F2You are on speed" +msgstr "^F2Você tem a velocidade" + +#: qcsrc/common/notifications/all.inc:757 +msgid "^F2Speed has worn off" +msgstr "^F2A Velocidade se esgotou" + +#: qcsrc/common/notifications/all.inc:759 +msgid "^F2You are invisible" +msgstr "^F2Você está invisível" + +#: qcsrc/common/notifications/all.inc:760 +msgid "^F2Invisibility has worn off" +msgstr "^F2A Invisibilidade se esgotou" + +#: qcsrc/common/notifications/all.inc:762 +msgid "^F2The race is over, finish your lap!" +msgstr "^F2A corrida acabou, termine sua volta!" + +#: qcsrc/common/notifications/all.inc:764 +msgid "^BGSecondary fire inflicts no damage!" +msgstr "^BGModo de disparo secundário não causa dano!" + +#: qcsrc/common/notifications/all.inc:766 +msgid "^BGSequence completed!" +msgstr "^BGSequência completada!" + +#: qcsrc/common/notifications/all.inc:767 +msgid "^BGThere are more to go..." +msgstr "^BGAinda tem mais..." + +#: qcsrc/common/notifications/all.inc:768 +#, c-format +msgid "^BGOnly %s^BG more to go..." +msgstr "^BGSó falta(m) %s^BG..." + +#: qcsrc/common/notifications/all.inc:770 +msgid "^F2Superweapons have broken down" +msgstr "^F2As Superarmas quebraram" + +#: qcsrc/common/notifications/all.inc:771 +msgid "^F2Superweapons have been lost" +msgstr "^F2As Superarmas foram perdidas" + +#: qcsrc/common/notifications/all.inc:772 +msgid "^F2You now have a superweapon" +msgstr "^F2Agora você tem uma Superarma" + +#: qcsrc/common/notifications/all.inc:774 +msgid "^K1Changing to ^TC^TT^K1 in ^COUNT" +msgstr "^K1Trocando para ^TC^TT^K1 em ^COUNT" + +#: qcsrc/common/notifications/all.inc:775 +msgid "^K1Changing team in ^COUNT" +msgstr "^K1Trocando de equipe em ^COUNT" + +#: qcsrc/common/notifications/all.inc:776 +msgid "^K1Spectating in ^COUNT" +msgstr "^K1Trocando para espectador em ^COUNT" + +#: qcsrc/common/notifications/all.inc:777 +msgid "^K1Suicide in ^COUNT" +msgstr "^K1Cometendo suicídio em ^COUNT" + +#: qcsrc/common/notifications/all.inc:779 +msgid "^F4Timeout begins in ^COUNT" +msgstr "^F4Pausa iniciará em ^COUNT" + +#: qcsrc/common/notifications/all.inc:780 +msgid "^F4Timeout ends in ^COUNT" +msgstr "^F4Pausa acabará em ^COUNT" + +#: qcsrc/common/notifications/all.inc:782 +msgid "^K1Cannot join given minigame session!" +msgstr "^K1Não foi possível entrar na sessão de mini jogo fornecida!" + +#: qcsrc/common/notifications/all.inc:784 +#, c-format +msgid "^BGPress ^F2%s^BG to enter/exit the vehicle" +msgstr "^BGAperte ^F2%s^BG para entrar/sair do veículo" + +#: qcsrc/common/notifications/all.inc:785 +#, c-format +msgid "^BGPress ^F2%s^BG to enter the vehicle gunner" +msgstr "^BGAperte ^F2%s^BG para usar a arma do veículo" + +#: qcsrc/common/notifications/all.inc:786 +#, c-format +msgid "^BGPress ^F2%s^BG to steal this vehicle" +msgstr "^BGAperte ^F2%s^BG para roubar este veículo" + +#: qcsrc/common/notifications/all.inc:787 +msgid "" +"^F2The enemy is stealing one of your vehicles!\n" +"^F4Stop them!" +msgstr "" +"^F2O inimigo está roubando um de seus veículos!\n" +"^F4Impeça-os!" + +#: qcsrc/common/notifications/all.inc:788 +msgid "^F2Intruder detected, disabling shields!" +msgstr "^F2Intruso detectado, desativando escudos!" + +#: qcsrc/common/notifications/all.qh:188 +msgid "Notification dump command only works with cl_cmd and sv_cmd.\n" +msgstr "" +"Comando de despejo de notificação funciona apenas com cl_cmd e sv_cmd.\n" + +#: qcsrc/common/notifications/all.qh:399 qcsrc/common/notifications/all.qh:400 +#, c-format +msgid " (near %s)" +msgstr " (próximo de %s)" + +#: qcsrc/common/notifications/all.qh:407 qcsrc/common/notifications/all.qh:408 +msgid "primary" +msgstr "primário" + +#: qcsrc/common/notifications/all.qh:407 qcsrc/common/notifications/all.qh:408 +msgid "secondary" +msgstr "secundário" + +#: qcsrc/common/notifications/all.qh:410 +msgid "point" +msgstr "ponto" + +#: qcsrc/common/notifications/all.qh:410 +msgid "points" +msgstr "pontos" + +#: qcsrc/common/notifications/all.qh:419 +msgid "drop flag" +msgstr "largar bandeira" + +#: qcsrc/common/notifications/all.qh:420 +msgid "throw nade" +msgstr "arremessar granada" + +#: qcsrc/common/notifications/all.qh:431 +#, c-format +msgid " with %s" +msgstr " com %s" + +#: qcsrc/common/notifications/all.qh:444 +#, c-format +msgid "%s^K1 made a TRIPLE FRAG! %s^BG" +msgstr "%s^K1 fez uma EXECUÇÃO TRIPLA! %s^BG" + +#: qcsrc/common/notifications/all.qh:444 +#, c-format +msgid "%s^K1 made a TRIPLE SCORE! %s^BG" +msgstr "%s^K1 fez uma PONTUAÇÃO TRIPLA! %s^BG" + +#: qcsrc/common/notifications/all.qh:444 +msgid "TRIPLE FRAG! " +msgstr "EXECUÇÃO TRIPLA! " + +#: qcsrc/common/notifications/all.qh:445 +#, c-format +msgid "%s^K1 made FIVE SCORES IN A ROW! %s^BG" +msgstr "%s^K1 fez CINCO PONTUAÇÕES SEGUIDAS! %s^BG" + +#: qcsrc/common/notifications/all.qh:445 +#, c-format +msgid "%s^K1 unlocked RAGE! %s^BG" +msgstr "%s^K1 desbloqueou a FÚRIA! %s^BG" + +#: qcsrc/common/notifications/all.qh:445 +msgid "RAGE! " +msgstr "FÚRIA! " + +#: qcsrc/common/notifications/all.qh:446 +#, c-format +msgid "%s^K1 made TEN SCORES IN A ROW! %s^BG" +msgstr "%s^K1 fez DEZ PONTUAÇÕES SEGUIDAS! %s^BG" + +#: qcsrc/common/notifications/all.qh:446 +#, c-format +msgid "%s^K1 started a MASSACRE! %s^BG" +msgstr "%s^K1 começou um MASSACRE! %s^BG" + +#: qcsrc/common/notifications/all.qh:446 +msgid "MASSACRE! " +msgstr "MASSACRE! " + +#: qcsrc/common/notifications/all.qh:447 +#, c-format +msgid "%s^K1 executed MAYHEM! %s^BG" +msgstr "%s^K1 executou uma MUTILAÇÃO! %s^BG" + +#: qcsrc/common/notifications/all.qh:447 +#, c-format +msgid "%s^K1 made FIFTEEN SCORES IN A ROW! %s^BG" +msgstr "%s^K1 fez QUINZE PONTUAÇÕES SEGUIDAS! %s^BG" + +#: qcsrc/common/notifications/all.qh:447 +msgid "MAYHEM! " +msgstr "MUTILAÇÃO! " + +#: qcsrc/common/notifications/all.qh:448 +#, c-format +msgid "%s^K1 is a BERSERKER! %s^BG" +msgstr "%s^K1 está FURIOSO! %s^BG" + +#: qcsrc/common/notifications/all.qh:448 +#, c-format +msgid "%s^K1 made TWENTY SCORES IN A ROW! %s^BG" +msgstr "%s^K1 fez VINTE PONTUAÇÕES SEGUIDAS! %s^BG" + +#: qcsrc/common/notifications/all.qh:448 +msgid "BERSERKER! " +msgstr "FURIOSO!" + +#: qcsrc/common/notifications/all.qh:449 +#, c-format +msgid "%s^K1 inflicts CARNAGE! %s^BG" +msgstr "%s^K1 está infligindo CARNIFICINA! %s^BG" + +#: qcsrc/common/notifications/all.qh:449 +#, c-format +msgid "%s^K1 made TWENTY FIVE SCORES IN A ROW! %s^BG" +msgstr "%s^K1 fez VINTE E CINCO PONTUAÇÕES SEGUIDAS! %s^BG" + +#: qcsrc/common/notifications/all.qh:449 +msgid "CARNAGE! " +msgstr "CARNIFICINA!" + +#: qcsrc/common/notifications/all.qh:450 +#, c-format +msgid "%s^K1 made THIRTY SCORES IN A ROW! %s^BG" +msgstr "%s^K1 fez TRINTA PONTUAÇÕES SEGUIDAS! %s^BG" + +#: qcsrc/common/notifications/all.qh:450 +#, c-format +msgid "%s^K1 unleashes ARMAGEDDON! %s^BG" +msgstr "%s^K1 desencadeou o ARMAGEDOM! %s^BG" + +#: qcsrc/common/notifications/all.qh:450 +msgid "ARMAGEDDON! " +msgstr "ARMAGEDDON! " + +#: qcsrc/common/notifications/all.qh:457 +#, c-format +msgid "%s(^F1Bot^BG)" +msgstr "%s(^F1Bot^BG)" + +#: qcsrc/common/notifications/all.qh:459 +#, c-format +msgid "%s(Ping ^F1%d^BG)" +msgstr "%s(Ping ^F1%d^BG)" + +#: qcsrc/common/notifications/all.qh:466 +#, c-format +msgid "" +"\n" +"(Health ^1%d^BG / Armor ^2%d^BG)%s" +msgstr "" +"\n" +"(Saúde ^1%d^BG / Armadura ^2%d^BG)%s" + +#: qcsrc/common/notifications/all.qh:468 +#, c-format +msgid "" +"\n" +"(^F4Dead^BG)%s" +msgstr "" +"\n" +"(^F4Morto^BG)%s" + +#: qcsrc/common/notifications/all.qh:489 qcsrc/common/notifications/all.qh:502 +#, c-format +msgid "%d score spree! " +msgstr "%d pontuações seguidas!" + +#: qcsrc/common/notifications/all.qh:501 +#, c-format +msgid "%d frag spree! " +msgstr "%d execuções seguidas!" + +#: qcsrc/common/notifications/all.qh:514 +msgid "First blood! " +msgstr "Primeira morte! " + +#: qcsrc/common/notifications/all.qh:514 +msgid "First score! " +msgstr "Primeiro ponto!" + +#: qcsrc/common/notifications/all.qh:518 +msgid "First casualty! " +msgstr "Primeira baixa!" + +#: qcsrc/common/notifications/all.qh:518 +msgid "First victim! " +msgstr "Primeira vítima!" + +#: qcsrc/common/notifications/all.qh:559 +#, c-format +msgid "%s^K1 has %d frags in a row! %s^BG" +msgstr "%s^K1 tem %d execuções seguidas! %s^BG" + +#: qcsrc/common/notifications/all.qh:560 +#, c-format +msgid "%s^K1 made %d scores in a row! %s^BG" +msgstr "%s^K1 fez %d pontos seguidos! %s^BG" + +#: qcsrc/common/notifications/all.qh:578 +#, c-format +msgid "%s^K1 drew first blood! %s^BG" +msgstr "%s^K1 foi o primeiro a matar alguém! %s^BG" + +#: qcsrc/common/notifications/all.qh:579 +#, c-format +msgid "%s^K1 got the first score! %s^BG" +msgstr "%s^K1 foi o primeiro a pontuar! %s^BG" + +#: qcsrc/common/notifications/all.qh:595 +#, c-format +msgid ", ending their %d frag spree" +msgstr ", finalizando sua cadeia de %d execuções" + +#: qcsrc/common/notifications/all.qh:596 +#, c-format +msgid ", ending their %d score spree" +msgstr ", finalizando sua cadeia de %d pontuações" + +#: qcsrc/common/notifications/all.qh:610 +#, c-format +msgid ", losing their %d frag spree" +msgstr ", perdendo sua cadeia de %d execuções" + +#: qcsrc/common/notifications/all.qh:611 +#, c-format +msgid ", losing their %d score spree" +msgstr ", perdendo sua cadeia de %d pontuações" + +#: qcsrc/common/teams.qh:29 +msgid "TEAM^Red" +msgstr "Vermelha" + +#: qcsrc/common/teams.qh:30 +msgid "TEAM^Blue" +msgstr "Azul" + +#: qcsrc/common/teams.qh:31 +msgid "TEAM^Yellow" +msgstr "Amarela" + +#: qcsrc/common/teams.qh:32 +msgid "TEAM^Pink" +msgstr "Rosa" + +#: qcsrc/common/teams.qh:33 +msgid "Team" +msgstr "Equipe" + +#: qcsrc/common/teams.qh:34 +msgid "Neutral" +msgstr "Neutro" + +#: qcsrc/common/teams.qh:37 +msgid "KEY^Red" +msgstr "Vermelha" + +#: qcsrc/common/teams.qh:38 +msgid "KEY^Blue" +msgstr "Azul" + +#: qcsrc/common/teams.qh:39 +msgid "KEY^Yellow" +msgstr "Amarela" + +#: qcsrc/common/teams.qh:40 +msgid "KEY^Pink" +msgstr "Rosa" + +#: qcsrc/common/teams.qh:41 +msgid "FLAG^Red" +msgstr "Vermelha" + +#: qcsrc/common/teams.qh:42 +msgid "FLAG^Blue" +msgstr "Azul" + +#: qcsrc/common/teams.qh:43 +msgid "FLAG^Yellow" +msgstr "Amarela" + +#: qcsrc/common/teams.qh:44 +msgid "FLAG^Pink" +msgstr "Rosa" + +#: qcsrc/common/teams.qh:45 +msgid "GENERATOR^Red" +msgstr "Vermelho" + +#: qcsrc/common/teams.qh:46 +msgid "GENERATOR^Blue" +msgstr "Azul" + +#: qcsrc/common/teams.qh:47 +msgid "GENERATOR^Yellow" +msgstr "Amarelo" + +#: qcsrc/common/teams.qh:48 +msgid "GENERATOR^Pink" +msgstr "Rosa" + +#: qcsrc/common/turrets/all.qh:51 +msgid "Turrets dump command only works with sv_cmd.\n" +msgstr "O comando de despejo de sentinelas funciona apenas com sv_cmd.\n" + +#: qcsrc/common/turrets/cl_turrets.qc:129 +#, c-format +msgid "%s under attack!" +msgstr "%s está sob ataque!" + +#: qcsrc/common/turrets/turret.qh:11 +msgid "Turret" +msgstr "Sentinela" + +#: qcsrc/common/turrets/turret/ewheel.qh:15 +msgid "eWheel Turret" +msgstr "Sentinela eWheel" + +#: qcsrc/common/turrets/turret/ewheel_weapon.qh:7 +msgid "eWheel" +msgstr "eWheel" + +#: qcsrc/common/turrets/turret/flac.qh:13 +msgid "FLAC Cannon" +msgstr "Canhão FLAC" + +#: qcsrc/common/turrets/turret/flac_weapon.qh:7 +msgid "FLAC" +msgstr "FLAC" + +#: qcsrc/common/turrets/turret/fusionreactor.qh:11 +msgid "Fusion Reactor" +msgstr "Reator de Fusão" + +#: qcsrc/common/turrets/turret/hellion.qh:13 +msgid "Hellion Missile Turret" +msgstr "Sentinela de Míssil Hellion" + +#: qcsrc/common/turrets/turret/hellion_weapon.qh:7 +msgid "Hellion" +msgstr "Hellion" + +#: qcsrc/common/turrets/turret/hk.qh:15 +msgid "Hunter-Killer Turret" +msgstr "Sentinela Hunter-Killer" + +#: qcsrc/common/turrets/turret/hk_weapon.qh:7 +msgid "Hunter-Killer" +msgstr "Hunter-Killer" + +#: qcsrc/common/turrets/turret/machinegun.qh:13 +msgid "Machinegun Turret" +msgstr "Sentinela de Metralhadora" + +#: qcsrc/common/turrets/turret/machinegun_weapon.qh:7 +msgid "Machinegun" +msgstr "Metralhadora" + +#: qcsrc/common/turrets/turret/mlrs.qh:13 +msgid "MLRS Turret" +msgstr "Sentinela MLRS" + +#: qcsrc/common/turrets/turret/mlrs_weapon.qh:7 +msgid "MLRS" +msgstr "MLRS" + +#: qcsrc/common/turrets/turret/phaser.qh:13 +msgid "Phaser Cannon" +msgstr "Canhão Phaser" + +#: qcsrc/common/turrets/turret/phaser_weapon.qh:7 +msgid "Phaser" +msgstr "Phaser" + +#: qcsrc/common/turrets/turret/plasma.qh:13 +msgid "Plasma Cannon" +msgstr "Canhão de Plasma" + +#: qcsrc/common/turrets/turret/plasma_dual.qh:7 +msgid "Dual plasma" +msgstr "Plasma duplo" + +#: qcsrc/common/turrets/turret/plasma_dual.qh:19 +msgid "Dual Plasma Cannon" +msgstr "Canhão de Plasma Duplo" + +#: qcsrc/common/turrets/turret/plasma_weapon.qh:7 +msgid "Plasma" +msgstr "Plasma" + +#: qcsrc/common/turrets/turret/tesla.qh:13 +#: qcsrc/common/turrets/turret/tesla_weapon.qh:7 +msgid "Tesla Coil" +msgstr "Bobina de Tesla" + +#: qcsrc/common/turrets/turret/walker.qh:15 +msgid "Walker Turret" +msgstr "Sentinela Walker" + +#: qcsrc/common/turrets/turret/walker_weapon.qh:7 +msgid "Walker" +msgstr "Walker" + +#: qcsrc/common/vehicles/cl_vehicles.qc:192 +#, c-format +msgid "Press %s" +msgstr "Aperte %s" + +#: qcsrc/common/vehicles/vehicle/bumblebee.qc:950 +msgid "No right gunner!" +msgstr "Sem artilheiro na direita!" + +#: qcsrc/common/vehicles/vehicle/bumblebee.qc:956 +msgid "No left gunner!" +msgstr "Sem artilheiro na esquerda!" + +#: qcsrc/common/vehicles/vehicle/bumblebee.qh:19 +msgid "Bumblebee" +msgstr "Bumblebee" + +#: qcsrc/common/vehicles/vehicle/racer.qh:19 +msgid "Racer" +msgstr "Racer" + +#: qcsrc/common/vehicles/vehicle/racer_weapon.qh:9 +msgid "Racer cannon" +msgstr "Canhão Racer" + +#: qcsrc/common/vehicles/vehicle/raptor.qh:19 +msgid "Raptor" +msgstr "Raptor" + +#: qcsrc/common/vehicles/vehicle/raptor_weapons.qh:9 +msgid "Raptor cannon" +msgstr "Canhão de Raptor" + +#: qcsrc/common/vehicles/vehicle/raptor_weapons.qh:17 +msgid "Raptor bomb" +msgstr "Bomba de Raptor" + +#: qcsrc/common/vehicles/vehicle/raptor_weapons.qh:25 +msgid "Raptor flare" +msgstr "Chama de Raptor" + +#: qcsrc/common/vehicles/vehicle/spiderbot.qh:19 +msgid "Spiderbot" +msgstr "Spiderbot" + +#: qcsrc/common/weapons/all.qh:78 +msgid "Weapons dump command only works with sv_cmd.\n" +msgstr "O comando de despejo de armas funciona apenas com sv_cmd.\n" + +#: qcsrc/common/weapons/weapon/arc.qc:17 +msgid "Arc" +msgstr "Arc" + +#: qcsrc/common/weapons/weapon/blaster.qc:17 +msgid "Blaster" +msgstr "Blaster" + +#: qcsrc/common/weapons/weapon/crylink.qc:17 +msgid "Crylink" +msgstr "Crylink" + +#: qcsrc/common/weapons/weapon/devastator.qc:17 +msgid "Devastator" +msgstr "Devastator" + +#: qcsrc/common/weapons/weapon/electro.qc:17 +msgid "Electro" +msgstr "Electro" + +#: qcsrc/common/weapons/weapon/fireball.qc:17 +msgid "Fireball" +msgstr "Fireball" + +#: qcsrc/common/weapons/weapon/hagar.qc:17 +msgid "Hagar" +msgstr "Hagar" + +#: qcsrc/common/weapons/weapon/hlac.qc:17 +msgid "Heavy Laser Assault Cannon" +msgstr "Heavy Laser Assault Cannon" + +#: qcsrc/common/weapons/weapon/hook.qc:17 +msgid "Grappling Hook" +msgstr "Gancho (grappling hook)" + +#: qcsrc/common/weapons/weapon/machinegun.qc:17 +msgid "MachineGun" +msgstr "Metralhadora" + +#: qcsrc/common/weapons/weapon/minelayer.qc:17 +msgid "Mine Layer" +msgstr "Mine Layer" + +#: qcsrc/common/weapons/weapon/mortar.qc:17 +msgid "Mortar" +msgstr "Mortar" + +#: qcsrc/common/weapons/weapon/porto.qc:17 +msgid "Port-O-Launch" +msgstr "Port-O-Launch" + +#: qcsrc/common/weapons/weapon/rifle.qc:18 +msgid "Rifle" +msgstr "Rifle" + +#: qcsrc/common/weapons/weapon/seeker.qc:17 +msgid "T.A.G. Seeker" +msgstr "T.A.G. Seeker" + +#: qcsrc/common/weapons/weapon/shockwave.qc:17 +msgid "Shockwave" +msgstr "Shockwave" + +#: qcsrc/common/weapons/weapon/shotgun.qc:17 +msgid "Shotgun" +msgstr "Shotgun" + +#: qcsrc/common/weapons/weapon/tuba.qc:17 +#, no-c-format +msgid "@!#%'n Tuba" +msgstr "@!#%'n Tuba" + +#: qcsrc/common/weapons/weapon/vaporizer.qc:18 +msgid "Vaporizer" +msgstr "Vaporizer" + +#: qcsrc/common/weapons/weapon/vortex.qc:18 +msgid "Vortex" +msgstr "Vortex" + +#: qcsrc/lib/counting.qh:9 +#, c-format +msgid "CI_DEC^%s years" +msgstr "%s anos" + +#: qcsrc/lib/counting.qh:12 +#, c-format +msgid "CI_ZER^%d years" +msgstr "%d anos" + +#: qcsrc/lib/counting.qh:13 +#, c-format +msgid "CI_FIR^%d year" +msgstr "^%d ano" + +#: qcsrc/lib/counting.qh:14 +#, c-format +msgid "CI_SEC^%d years" +msgstr "%d anos" + +#: qcsrc/lib/counting.qh:15 +#, c-format +msgid "CI_THI^%d years" +msgstr "%d anos" + +#: qcsrc/lib/counting.qh:16 +#, c-format +msgid "CI_MUL^%d years" +msgstr "^%d anos" + +#: qcsrc/lib/counting.qh:18 +#, c-format +msgid "CI_DEC^%s weeks" +msgstr "^%s semanas" + +#: qcsrc/lib/counting.qh:21 +#, c-format +msgid "CI_ZER^%d weeks" +msgstr "^%d semanas" + +#: qcsrc/lib/counting.qh:22 +#, c-format +msgid "CI_FIR^%d week" +msgstr "^%d semana" + +#: qcsrc/lib/counting.qh:23 +#, c-format +msgid "CI_SEC^%d weeks" +msgstr "^%d semanas" + +#: qcsrc/lib/counting.qh:24 +#, c-format +msgid "CI_THI^%d weeks" +msgstr "^%d semanas" + +#: qcsrc/lib/counting.qh:25 +#, c-format +msgid "CI_MUL^%d weeks" +msgstr "^%d semanas" + +#: qcsrc/lib/counting.qh:27 +#, c-format +msgid "CI_DEC^%s days" +msgstr "^%s dias" + +#: qcsrc/lib/counting.qh:30 +#, c-format +msgid "CI_ZER^%d days" +msgstr "^%d dias" + +#: qcsrc/lib/counting.qh:31 +#, c-format +msgid "CI_FIR^%d day" +msgstr "^%d dia" + +#: qcsrc/lib/counting.qh:32 +#, c-format +msgid "CI_SEC^%d days" +msgstr "^%d dias" + +#: qcsrc/lib/counting.qh:33 +#, c-format +msgid "CI_THI^%d days" +msgstr "^%d dias" + +#: qcsrc/lib/counting.qh:34 +#, c-format +msgid "CI_MUL^%d days" +msgstr "^%d dias" + +#: qcsrc/lib/counting.qh:36 +#, c-format +msgid "CI_DEC^%s hours" +msgstr "^%s horas" + +#: qcsrc/lib/counting.qh:39 +#, c-format +msgid "CI_ZER^%d hours" +msgstr "^%d horas" + +#: qcsrc/lib/counting.qh:40 +#, c-format +msgid "CI_FIR^%d hour" +msgstr "^%d hora" + +#: qcsrc/lib/counting.qh:41 +#, c-format +msgid "CI_SEC^%d hours" +msgstr "^%d horas" + +#: qcsrc/lib/counting.qh:42 +#, c-format +msgid "CI_THI^%d hours" +msgstr "^%d horas" + +#: qcsrc/lib/counting.qh:43 +#, c-format +msgid "CI_MUL^%d hours" +msgstr "^%d horas" + +#: qcsrc/lib/counting.qh:46 +#, c-format +msgid "CI_DEC^%s minutes" +msgstr "^%s minutos" + +#: qcsrc/lib/counting.qh:49 +#, c-format +msgid "CI_ZER^%d minutes" +msgstr "^%d minutos" + +#: qcsrc/lib/counting.qh:50 +#, c-format +msgid "CI_FIR^%d minute" +msgstr "^%d minuto" + +#: qcsrc/lib/counting.qh:51 +#, c-format +msgid "CI_SEC^%d minutes" +msgstr "^%d minutos" + +#: qcsrc/lib/counting.qh:52 +#, c-format +msgid "CI_THI^%d minutes" +msgstr "^%d minutos" + +#: qcsrc/lib/counting.qh:53 +#, c-format +msgid "CI_MUL^%d minutes" +msgstr "^%d minutos" + +#: qcsrc/lib/counting.qh:55 +#, c-format +msgid "CI_DEC^%s seconds" +msgstr "^%s segundos" + +#: qcsrc/lib/counting.qh:58 +#, c-format +msgid "CI_ZER^%d seconds" +msgstr "^%d segundos" + +#: qcsrc/lib/counting.qh:59 +#, c-format +msgid "CI_FIR^%d second" +msgstr "^%d segundo" + +#: qcsrc/lib/counting.qh:60 +#, c-format +msgid "CI_SEC^%d seconds" +msgstr "^%d segundos" + +#: qcsrc/lib/counting.qh:61 +#, c-format +msgid "CI_THI^%d seconds" +msgstr "^%d segundos" + +#: qcsrc/lib/counting.qh:62 +#, c-format +msgid "CI_MUL^%d seconds" +msgstr "^%d segundos" + +#: qcsrc/lib/counting.qh:79 +#, c-format +msgid "%dst" +msgstr "%dst" + +#: qcsrc/lib/counting.qh:80 +#, c-format +msgid "%dnd" +msgstr "%dnd" + +#: qcsrc/lib/counting.qh:81 +#, c-format +msgid "%drd" +msgstr "%drd" + +#: qcsrc/lib/counting.qh:82 qcsrc/lib/counting.qh:85 +#, c-format +msgid "%dth" +msgstr "%dth" + +#: qcsrc/lib/oo.qh:298 +msgid "No description" +msgstr "Sem descrição" + +#: qcsrc/lib/spawnfunc.qh:65 +#, c-format +msgid "" +"Entity field %s.%s (%s) is not whitelisted. If you believe this is an error, " +"please file an issue." +msgstr "" +"Campo de entidade %s.%s (%s) não está na lista branca. Se você acredita que " +"isso é um erro, por favor, reporte-o." + +#: qcsrc/lib/string.qh:48 +#, c-format +msgid "%d days, %02d:%02d:%02d" +msgstr "%d dias, %02d:%02d:%02d" + +#: qcsrc/lib/string.qh:49 +#, c-format +msgid "%02d:%02d:%02d" +msgstr "%02d:%02d:%02d" + +#: qcsrc/menu/command/menu_cmd.qc:48 +msgid "Usage: menu_cmd command..., where possible commands are:\n" +msgstr "Uso: comando menu_cmd..., onde os possíveis comandos são:\n" + +#: qcsrc/menu/command/menu_cmd.qc:49 +msgid " sync - reloads all cvars on the current menu page\n" +msgstr " sync - recarrega todas as cvars no menu atual\n" + +#: qcsrc/menu/command/menu_cmd.qc:50 +msgid " directmenu ITEM - select a menu item as main item\n" +msgstr " directmenu ITEM - seleciona um item do menu como principal\n" + +#: qcsrc/menu/command/menu_cmd.qc:79 +msgid "Available options:\n" +msgstr "Opções disponíveis:\n" + +#: qcsrc/menu/command/menu_cmd.qc:128 +msgid "Invalid command. For a list of supported commands, try menu_cmd help.\n" +msgstr "" +"Comando inválido. Para uma lista de comandos suportados, digite menu_cmd " +"help.\n" + +#: qcsrc/menu/item/listbox.qc:415 +#, c-format +msgid "Item %d" +msgstr "Item %d" + +#: qcsrc/menu/item/textslider.qc:11 qcsrc/menu/item/textslider.qc:12 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:37 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:68 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:115 +msgid "Custom" +msgstr "Personalizado" + +#: qcsrc/menu/xonotic/campaign.qc:241 +#, c-format +msgid "Level %d: %s" +msgstr "Nível %d: %s" + +#: qcsrc/menu/xonotic/credits.qc:4 +msgid "Core Team" +msgstr "Equipe Principal" + +#: qcsrc/menu/xonotic/credits.qc:16 +msgid "Extended Team" +msgstr "Equipe Estendida" + +#: qcsrc/menu/xonotic/credits.qc:48 +msgid "Website" +msgstr "Site" + +#: qcsrc/menu/xonotic/credits.qc:53 +msgid "Stats" +msgstr "Estatísticas" + +#: qcsrc/menu/xonotic/credits.qc:57 +msgid "Art" +msgstr "Arte" + +#: qcsrc/menu/xonotic/credits.qc:65 +msgid "Animation" +msgstr "Animação" + +#: qcsrc/menu/xonotic/credits.qc:69 +msgid "Level Design" +msgstr "Design de Mapas" + +#: qcsrc/menu/xonotic/credits.qc:92 +msgid "Music / Sound FX" +msgstr "Música / Efeitos de Som" + +#: qcsrc/menu/xonotic/credits.qc:108 +msgid "Game Code" +msgstr "Codificação de Jogo" + +#: qcsrc/menu/xonotic/credits.qc:116 +msgid "Marketing / PR" +msgstr "Marketing / Relações Públicas" + +#: qcsrc/menu/xonotic/credits.qc:122 +msgid "Legal" +msgstr "Assuntos Legais" + +#: qcsrc/menu/xonotic/credits.qc:127 +msgid "Game Engine" +msgstr "Motor de Jogo" + +#: qcsrc/menu/xonotic/credits.qc:131 +msgid "Engine Additions" +msgstr "Adições ao Motor" + +#: qcsrc/menu/xonotic/credits.qc:136 +msgid "Compiler" +msgstr "Compilador" + +#: qcsrc/menu/xonotic/credits.qc:142 +msgid "Other Active Contributors" +msgstr "Outros Contribuidores Ativos" + +#: qcsrc/menu/xonotic/credits.qc:149 +msgid "Translators" +msgstr "Tradutores" + +#: qcsrc/menu/xonotic/credits.qc:151 +msgid "Asturian" +msgstr "Asturiano" + +#: qcsrc/menu/xonotic/credits.qc:156 +msgid "Belarusian" +msgstr "Bielorrusso" + +#: qcsrc/menu/xonotic/credits.qc:159 +msgid "Bulgarian" +msgstr "Búlgaro" + +#: qcsrc/menu/xonotic/credits.qc:166 +msgid "Chinese (China)" +msgstr "Chinês (China)" + +#: qcsrc/menu/xonotic/credits.qc:172 +msgid "Chinese (Taiwan)" +msgstr "Chinês (Taiwan)" + +#: qcsrc/menu/xonotic/credits.qc:177 +msgid "Cornish" +msgstr "Córnico" + +#: qcsrc/menu/xonotic/credits.qc:180 +msgid "Czech" +msgstr "Tcheco" + +#: qcsrc/menu/xonotic/credits.qc:185 +msgid "Dutch" +msgstr "Holandês" + +#: qcsrc/menu/xonotic/credits.qc:192 +msgid "English (Australia)" +msgstr "Inglês (Austrália)" + +#: qcsrc/menu/xonotic/credits.qc:197 +msgid "Finnish" +msgstr "Finlandês" + +#: qcsrc/menu/xonotic/credits.qc:202 +msgid "French" +msgstr "Francês" + +#: qcsrc/menu/xonotic/credits.qc:210 +msgid "German" +msgstr "Alemão" + +#: qcsrc/menu/xonotic/credits.qc:221 +msgid "Greek" +msgstr "Grego" + +#: qcsrc/menu/xonotic/credits.qc:227 +msgid "Hungarian" +msgstr "Húngaro" + +#: qcsrc/menu/xonotic/credits.qc:231 +msgid "Irish" +msgstr "Irlandês" + +#: qcsrc/menu/xonotic/credits.qc:234 +msgid "Italian" +msgstr "Italiano" + +#: qcsrc/menu/xonotic/credits.qc:240 +msgid "Kazakh" +msgstr "Cazaque" + +#: qcsrc/menu/xonotic/credits.qc:243 +msgid "Korean" +msgstr "Coreano" + +#: qcsrc/menu/xonotic/credits.qc:247 +msgid "Polish" +msgstr "Polônes" + +#: qcsrc/menu/xonotic/credits.qc:255 +msgid "Portuguese" +msgstr "Português" + +#: qcsrc/menu/xonotic/credits.qc:261 +msgid "Romanian" +msgstr "Romeno" + +#: qcsrc/menu/xonotic/credits.qc:268 +msgid "Russian" +msgstr "Russo" + +#: qcsrc/menu/xonotic/credits.qc:279 +msgid "Scottish Gaelic" +msgstr "Gaélico Escocês" + +#: qcsrc/menu/xonotic/credits.qc:282 +msgid "Serbian" +msgstr "Sérvio" + +#: qcsrc/menu/xonotic/credits.qc:288 +msgid "Spanish" +msgstr "Espanhol" + +#: qcsrc/menu/xonotic/credits.qc:299 +msgid "Swedish" +msgstr "Sueco" + +#: qcsrc/menu/xonotic/credits.qc:303 +msgid "Ukrainian" +msgstr "Ucraniano" + +#: qcsrc/menu/xonotic/credits.qc:310 +msgid "Past Contributors" +msgstr "Colaboradores Passados" + +#: qcsrc/menu/xonotic/cvarlist.qc:73 +msgid "forced to be saved to config.cfg" +msgstr "forçado a ser salvo em config.cfg" + +#: qcsrc/menu/xonotic/cvarlist.qc:79 qcsrc/menu/xonotic/cvarlist.qc:89 +msgid "will not be saved" +msgstr "não será salvo" + +#: qcsrc/menu/xonotic/cvarlist.qc:84 +msgid "will be saved to config.cfg" +msgstr "será salvo em config.cfg" + +#: qcsrc/menu/xonotic/cvarlist.qc:93 +msgid "private" +msgstr "privado" + +#: qcsrc/menu/xonotic/cvarlist.qc:95 +msgid "engine setting" +msgstr "configuração do motor" + +#: qcsrc/menu/xonotic/cvarlist.qc:97 +msgid "read only" +msgstr "somente leitura" + +#: qcsrc/menu/xonotic/dialog_credits.qc:13 +#: qcsrc/menu/xonotic/dialog_monstertools.qc:38 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:287 +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:85 +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:75 +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.qc:14 +msgid "OK" +msgstr "OK" + +#: qcsrc/menu/xonotic/dialog_credits.qh:7 +msgid "Credits" +msgstr "Créditos" + +#: qcsrc/menu/xonotic/dialog_credits.qh:8 +msgid "The Xonotic credits" +msgstr "Créditos - Xonotic" + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:39 +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 "" +"Bem-vindo(a) ao Xonotic! Escolha o seu idioma de preferência e insira o seu " +"apelido para começar. Você pode alterar essas configurações mais tarde pelo " +"menu." + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:45 +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:28 +msgid "Name:" +msgstr "Nome:" + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:53 +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:60 +msgid "Name under which you will appear in the game" +msgstr "Seu nome que aparecerá no jogo" + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:69 +msgid "Text language:" +msgstr "Idioma do texto:" + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:78 +msgid "Allow player statistics to use your nickname at stats.xonotic.org?" +msgstr "" +"Permitir que as estatísticas de jogador usem o seu apelido em stats.xonotic." +"org?" + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:84 +msgid "Undecided" +msgstr "Não decidido" + +#: qcsrc/menu/xonotic/dialog_firstrun.qc:88 +msgid "Save settings" +msgstr "Salvar configurações" + +#: qcsrc/menu/xonotic/dialog_firstrun.qh:6 +msgid "Welcome" +msgstr "Bem-vindo(a)" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:16 +msgid "Ammunition display:" +msgstr "Exibir munições:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:19 +msgid "Show only current ammo type" +msgstr "Exibir apenas o tipo de munição atual" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:22 +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:44 +msgid "Noncurrent alpha:" +msgstr "Alfa não circulante:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:26 +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:48 +msgid "Noncurrent scale:" +msgstr "Escala não circulante:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:24 +msgid "Align icon:" +msgstr "Alinhar ícone:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:31 +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:30 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:35 +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:25 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:21 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:33 +#: qcsrc/menu/xonotic/dialog_hudpanel_quickmenu.qc:18 +msgid "Left" +msgstr "Esquerda" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:25 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:36 +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:26 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:23 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:34 +#: qcsrc/menu/xonotic/dialog_hudpanel_quickmenu.qc:20 +msgid "Right" +msgstr "Direita" + +#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qh:6 +msgid "Ammo Panel" +msgstr "Painel de Munições" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:17 +msgid "Message duration:" +msgstr "Duração de mensagem:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:21 +msgid "Fade time:" +msgstr "Tempo de desaparecimento:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:25 +msgid "Flip messages order" +msgstr "Trocar ordem de mensagens" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:27 +#: qcsrc/menu/xonotic/dialog_hudpanel_quickmenu.qc:15 +msgid "Text alignment:" +msgstr "Alinhamento do texto:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:31 +#: qcsrc/menu/xonotic/dialog_hudpanel_quickmenu.qc:19 +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:71 +msgid "Center" +msgstr "Centro" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qc:35 +msgid "Font scale:" +msgstr "Tamanho da fonte:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_centerprint.qh:6 +msgid "Centerprint Panel" +msgstr "Painel Central" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:15 +msgid "Chat entries:" +msgstr "Entradas do bate-papo:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:18 +msgid "Chat size:" +msgstr "Tamanho do bate-papo:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:22 +msgid "Chat lifetime:" +msgstr "Tempo de vida do bate-papo:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.qc:26 +msgid "Chat beep sound" +msgstr "Som de aviso do bate-papo" + +#: qcsrc/menu/xonotic/dialog_hudpanel_chat.qh:6 +msgid "Chat Panel" +msgstr "Painel do Bate-papo" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.qc:14 +msgid "Engine info:" +msgstr "Informações do Motor:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.qc:17 +msgid "Use an averaging algorithm for fps" +msgstr "Usar um algoritmo médio para o fps" + +#: qcsrc/menu/xonotic/dialog_hudpanel_engineinfo.qh:6 +msgid "Engine Info Panel" +msgstr "Painel de Informações do Motor" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:15 +msgid "Combine health and armor" +msgstr "Combinar saúde e armadura" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:17 +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:28 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:15 +msgid "Enable status bar" +msgstr "Habilitar barra de status" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:19 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:17 +msgid "Status bar alignment:" +msgstr "Alinhamento da barra de status:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:27 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:37 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:25 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:35 +msgid "Inward" +msgstr "Para dentro" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:29 +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:38 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:27 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:36 +msgid "Outward" +msgstr "Para fora" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:32 +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qc:30 +msgid "Icon alignment:" +msgstr "Alinhamento de ícones:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qc:40 +msgid "Flip health and armor positions" +msgstr "Trocar as posições da saúde e armadura" + +#: qcsrc/menu/xonotic/dialog_hudpanel_healtharmor.qh:6 +msgid "Health/Armor Panel" +msgstr "Painel de Saúde/Armadura" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.qc:14 +msgid "Info messages:" +msgstr "Mensagens de informação:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.qc:17 +msgid "Flip align" +msgstr "Trocar alinhamento" + +#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.qh:6 +msgid "Info Messages Panel" +msgstr "Painel de Mensagens de Informação" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:16 +msgid "PNL^Disabled" +msgstr "Desabilitado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:17 +msgid "PNL^Enabled spectating" +msgstr "Espectadores habilitados" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:18 +msgid "PNL^Enabled even playing in warmup" +msgstr "Habilitado mesmo jogando em aquecimento" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:29 +msgid "Reduced" +msgstr "Reduzido" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:32 +msgid "Text/icon ratio:" +msgstr "Proporção para textos e ícones:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:35 +msgid "Hide spawned items" +msgstr "Ocultar itens disponíveis" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:37 +msgid "Hide big armor and health" +msgstr "Ocultar armadura grande e saúde grande" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:39 +msgid "Dynamic size" +msgstr "Tamanho dinâmico" + +#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qh:6 +msgid "Items Time Panel" +msgstr "Painel de Tempo dos Itens " + +#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.qh:6 +msgid "Mod Icons Panel" +msgstr "Painel de Ícones de Mod" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:15 +msgid "Notifications:" +msgstr "Notificações:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:18 +msgid "Also print notifications to the console" +msgstr "Mostrar notificações no console também" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:21 +msgid "Flip notify order" +msgstr "Trocar ordem de notificações" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:24 +msgid "Entry lifetime:" +msgstr "Tempo de vida de cada entrada:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:28 +msgid "Entry fadetime:" +msgstr "Desaparecimento de cada entrada:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qh:6 +msgid "Notification Panel" +msgstr "Painel de Notificações" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:15 +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:14 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:15 +msgid "Panel disabled" +msgstr "Painel desabilitado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:16 +msgid "Panel enabled" +msgstr "Painel habilitado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:17 +msgid "Panel enabled even observing" +msgstr "Painel habilitado enquanto estiver observando" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:18 +msgid "Panel enabled only in Race/CTS" +msgstr "Painel habilitado apenas em Corrida/CTS" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:24 +msgid "Status bar" +msgstr "Barra de status" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:26 +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:68 +msgid "Left align" +msgstr "Alinhamento à esquerda" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:27 +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:74 +msgid "Right align" +msgstr "Alinhamento à direita" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:28 +msgid "Inward align" +msgstr "Alinhamento para dentro" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:29 +msgid "Outward align" +msgstr "Alinhamento para fora" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:33 +msgid "Flip speed/acceleration positions" +msgstr "Trocar posição da velocidade e da aceleração" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:37 +msgid "Speed:" +msgstr "Velocidade:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:38 +msgid "Include vertical speed" +msgstr "Incluir velocidade vertical" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:49 +msgid "Speed unit:" +msgstr "Unidade de velocidade:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:51 +msgid "qu/s" +msgstr "qu/s" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:52 +msgid "m/s" +msgstr "m/s" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:53 +msgid "km/h" +msgstr "km/h" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:54 +msgid "mph" +msgstr "mph" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:55 +msgid "knots" +msgstr "nós" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:57 +msgid "Show" +msgstr "Exibir" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:60 +msgid "Top speed" +msgstr "Velocidade máxima" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:66 +msgid "Acceleration:" +msgstr "Aceleração:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:67 +msgid "Include vertical acceleration" +msgstr "Incluir aceleração vertical" + +#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qh:6 +msgid "Physics Panel" +msgstr "Painel de Física" + +#: qcsrc/menu/xonotic/dialog_hudpanel_powerups.qh:6 +msgid "Powerups Panel" +msgstr "Painel de Potencializadores" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:15 +msgid "Panel enabled when spectating" +msgstr "Painel habilitado enquanto estiver de espectador" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:16 +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:17 +msgid "Panel always enabled" +msgstr "Painel sempre habilitado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:23 +msgid "Forced aspect:" +msgstr "Forçar aspecto:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qh:6 +msgid "Pressed Keys Panel" +msgstr "Painel de Teclas Pressionadas" + +#: qcsrc/menu/xonotic/dialog_hudpanel_quickmenu.qh:6 +msgid "Quick Menu Panel" +msgstr "Painel de Menu Instantâneo" + +#: qcsrc/menu/xonotic/dialog_hudpanel_racetimer.qh:6 +msgid "Race Timer Panel" +msgstr "Painel do Cronômetro de Corrida" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:16 +msgid "Panel enabled in teamgames" +msgstr "Painel habilitado em jogos de equipe" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:23 +msgid "Radar:" +msgstr "Radar:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:26 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:68 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:107 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:54 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:87 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:103 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:45 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:67 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:118 +#: qcsrc/menu/xonotic/util.qc:792 +msgid "Alpha:" +msgstr "Alfa:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:30 +msgid "Rotation:" +msgstr "Rotação:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:32 +msgid "Forward" +msgstr "Para a frente" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:33 +msgid "West" +msgstr "Para o oeste" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:34 +msgid "South" +msgstr "Para o sul" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:35 +msgid "East" +msgstr "Para o leste" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:36 +msgid "North" +msgstr "Para o norte" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:40 +msgid "Scale:" +msgstr "Escala:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:44 +msgid "Zoom mode:" +msgstr "Modo de zoom:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:46 +msgid "Zoomed in" +msgstr "Ampliado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:47 +msgid "Zoomed out" +msgstr "Afastado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:48 +msgid "Always zoomed" +msgstr "Sempre ampliado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:49 +msgid "Never zoomed" +msgstr "Nunca ampliado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qh:6 +msgid "Radar Panel" +msgstr "Painel do Radar" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.qc:15 +msgid "Score:" +msgstr "Pontuação:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.qc:18 +msgid "Rankings:" +msgstr "Classificações:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.qc:19 +msgid "Off" +msgstr "Desligado" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.qc:20 +msgid "And me" +msgstr "E eu" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.qc:21 +msgid "Pure" +msgstr "Puro" + +#: qcsrc/menu/xonotic/dialog_hudpanel_score.qh:6 +msgid "Score Panel" +msgstr "Painel da Pontuação" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:14 +msgid "Timer:" +msgstr "Cronômetro:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:17 +msgid "Show elapsed time" +msgstr "Exibir tempo decorrido" + +#: qcsrc/menu/xonotic/dialog_hudpanel_timer.qh:6 +msgid "Timer Panel" +msgstr "Painel do Cronômetro" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.qc:15 +msgid "Alpha after voting:" +msgstr "Alfa após votação:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_vote.qh:6 +msgid "Vote Panel" +msgstr "Painel de Votação" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:20 +msgid "Fade out after:" +msgstr "Desaparecer após:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:22 +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:167 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:139 +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:55 +msgid "Never" +msgstr "Nunca" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:24 +#, c-format +msgid "%ds" +msgstr "%ds" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:28 +msgid "Fade effect:" +msgstr "Efeito de desaparecimento:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:31 +msgid "EF^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:32 +msgid "Alpha" +msgstr "Alfa" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:33 +msgid "Slide" +msgstr "Deslizar" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:34 +msgid "EF^Both" +msgstr "Ambos" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:38 +msgid "Weapon icons:" +msgstr "Ícones das armas:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:41 +msgid "Show only owned weapons" +msgstr "Exibir apenas armas obtidas" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:52 +msgid "Show weapon ID as:" +msgstr "Exibir o ID da arma como:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:53 +msgid "SHOWAS^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:54 +msgid "Number" +msgstr "Número" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:55 +msgid "Bind" +msgstr "Atalho" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:58 +msgid "Weapon ID scale:" +msgstr "Escala do ID da arma:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:64 +msgid "Show Accuracy" +msgstr "Exibir precisão" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:65 +msgid "Show Ammo" +msgstr "Exibir munições" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:68 +msgid "Ammo bar alpha:" +msgstr "Transparência da barra de munições:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:74 +msgid "Ammo bar color:" +msgstr "Cor da barra de munições:" + +#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qh:6 +msgid "Weapons Panel" +msgstr "Painel das Armas" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:19 +msgid "HUD skins" +msgstr "Visuais de HUD" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:22 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:196 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:31 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:42 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:25 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc:35 +msgid "Filter:" +msgstr "Filtrar:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:30 +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:53 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:49 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc:44 +msgid "Refresh" +msgstr "Atualizar" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:33 +#: qcsrc/menu/xonotic/dialog_settings_user.qc:30 +msgid "Set skin" +msgstr "Definir visual" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:37 +msgid "Save current skin" +msgstr "Salvar visual atual" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:46 +msgid "Panel background defaults:" +msgstr "Padrões de fundo do painel:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:48 +#: qcsrc/menu/xonotic/util.qc:767 +msgid "Background:" +msgstr "Fundo:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:50 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:62 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:77 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:116 +#: qcsrc/menu/xonotic/util.qc:770 qcsrc/menu/xonotic/util.qc:786 +#: qcsrc/menu/xonotic/util.qc:803 +msgid "Disable" +msgstr "Desabilitar" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:60 +#: qcsrc/menu/xonotic/util.qc:783 +msgid "Border size:" +msgstr "Tamanho das bordas:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:75 +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:114 +msgid "Team color:" +msgstr "Cor de equipe:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:83 +#: qcsrc/menu/xonotic/util.qc:809 +msgid "Test team color in configure mode" +msgstr "Testar cor de equipe no modo de configuração" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:86 +#: qcsrc/menu/xonotic/util.qc:812 +msgid "Padding:" +msgstr "Preenchimento:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:93 +msgid "HUD Dock:" +msgstr "Camada do HUD:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:95 +msgid "DOCK^Disabled" +msgstr "Desabilitada" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:96 +msgid "DOCK^Small" +msgstr "Pequena" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:97 +msgid "DOCK^Medium" +msgstr "Média" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:98 +msgid "DOCK^Large" +msgstr "Grande" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:121 +msgid "Grid settings:" +msgstr "Configurações da rede:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:124 +msgid "Snap panels to grid" +msgstr "Fixar painéis à grade" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:127 +msgid "Grid size:" +msgstr "Tamanho da rede:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:129 +msgid "X:" +msgstr "X:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:136 +msgid "Y:" +msgstr "Y:" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:145 +msgid "Exit setup" +msgstr "Sair da configuração" + +#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qh:6 +msgid "Panel HUD Setup" +msgstr "Painel de Configuração do HUD" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:13 +msgid "Monster:" +msgstr "Monstro:" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:22 +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:20 +msgid "Spawn" +msgstr "Surgir" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:23 +#: qcsrc/menu/xonotic/serverlist.qc:268 +msgid "Remove" +msgstr "Remover" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:25 +msgid "Move target:" +msgstr "Mover alvo:" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:26 +msgid "Follow" +msgstr "Seguir" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:27 +msgid "Wander" +msgstr "Vaguear" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:28 +msgid "Spawnpoint" +msgstr "Ponto de surgimento" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:29 +msgid "No moving" +msgstr "Sem movimento" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:31 +msgid "Colors:" +msgstr "Cores:" + +#: qcsrc/menu/xonotic/dialog_monstertools.qc:33 +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:39 +msgid "Set skin:" +msgstr "Definir visual:" + +#: qcsrc/menu/xonotic/dialog_monstertools.qh:6 +msgid "Monster Tools" +msgstr "Ferramentas de Monstros" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qc:14 +msgid "Servers" +msgstr "Servidores" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qc:15 +msgid "Find servers to play on" +msgstr "Encontre servidores para jogar" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qc:17 +msgid "Host your own game" +msgstr "Crie a sua própria partida" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qc:18 +msgid "Media" +msgstr "Mídia" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qc:19 +msgid "Profile" +msgstr "Perfil" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qh:6 +msgid "Multiplayer" +msgstr "Multijogador" + +#: qcsrc/menu/xonotic/dialog_multiplayer.qh:7 +msgid "" +"Play online, against your friends in LAN, view demos or change player " +"settings" +msgstr "" +"Jogue online, jogue contra seus amigos em rede local, assista a demos ou " +"altere as configurações de jogador." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:46 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:134 +#: qcsrc/menu/xonotic/skinlist.qc:88 qcsrc/menu/xonotic/util.qc:769 +#: qcsrc/menu/xonotic/util.qc:785 qcsrc/menu/xonotic/util.qc:794 +#: qcsrc/menu/xonotic/util.qc:802 qcsrc/menu/xonotic/util.qc:814 +msgid "Default" +msgstr "Padrão" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:48 +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:64 +msgid "Unlimited" +msgstr "Ilimitado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:65 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:66 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:78 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:128 +msgid "Frag limit:" +msgstr "Limite de execuções:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:65 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:66 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:78 +msgid "The amount of frags needed before the match will end" +msgstr "A quantidade de execuções necessária para acabar a partida" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:67 +msgid "Capture limit:" +msgstr "Limite de capturas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:67 +msgid "The amount of captures needed before the match will end" +msgstr "A quantidade de capturas necessária para acabar a partida" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:69 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:73 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:74 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:75 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:76 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:77 +msgid "Point limit:" +msgstr "Limite de pontos:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:68 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:69 +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:77 +msgid "The amount of points needed before the match will end" +msgstr "A quantidade de pontos necessária para acabar a partida" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:70 +msgid "Lives:" +msgstr "Vidas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:71 +msgid "Laps:" +msgstr "Voltas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:72 +msgid "Goals:" +msgstr "Gols:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:72 +msgid "The amount of goals needed before the match will end" +msgstr "A quantidade de gols necessária para acabar a partida" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:97 +msgid "Gametype" +msgstr "Modo de jogo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:102 +msgid "Time limit:" +msgstr "Tempo limite:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:104 +msgid "Timelimit in minutes that when hit, will end the match" +msgstr "" +"Limite de tempo em minutos que, ao ser atingido, irá encerrar a partida." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:105 +#, c-format +msgid "%d minutes" +msgstr "%d minutos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:106 +msgid "TIMLIM^Default" +msgstr "Padrão" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:107 +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:159 +msgid "1 minute" +msgstr "1 minuto" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:124 +msgid "TIMLIM^Infinite" +msgstr "Infinito" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:132 +msgid "Teams:" +msgstr "Equipes:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:135 +msgid "2 teams" +msgstr "2 equipes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:136 +msgid "3 teams" +msgstr "3 equipes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:137 +msgid "4 teams" +msgstr "4 equipes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:140 +msgid "Player slots:" +msgstr "Vagas para jogadores:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:142 +msgid "" +"The maximum amount of players or bots that can be connected to your server " +"at once" +msgstr "" +"O número máximo de jogadores ou bots que podem estar conectados ao seu " +"servidor simultaneamente." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:144 +msgid "Number of bots:" +msgstr "Número de bots:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:146 +msgid "Amount of bots on your server" +msgstr "Quantidade de bots no seu servidor" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:148 +msgid "Bot skill:" +msgstr "Habilidade dos bots:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:151 +msgid "Specify how experienced the bots will be" +msgstr "Especifique a experiência dos bots" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:152 +msgid "Botlike" +msgstr "Perdido" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:153 +msgid "Beginner" +msgstr "Iniciante" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:154 +msgid "You will win" +msgstr "Você vai ganhar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:155 +msgid "You can win" +msgstr "Você pode ganhar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:156 +msgid "You might win" +msgstr "Você talvez ganhe" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:157 +msgid "Advanced" +msgstr "Avançado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:158 +msgid "Expert" +msgstr "Experiente" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:159 +msgid "Pro" +msgstr "Profissional" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:160 +msgid "Assassin" +msgstr "Assassino" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:161 +msgid "Unhuman" +msgstr "Desumano" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:162 +msgid "Godlike" +msgstr "Divino" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:178 +msgid "Mutators..." +msgstr "Modificadores..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:179 +msgid "Mutators and weapon arenas" +msgstr "Modificadores e arenas de armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:188 +msgid "Maplist" +msgstr "Lista de mapas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:198 +msgid "" +"Click here or Ctrl-F to provide a keyword to narrow down the map list. Ctrl-" +"Delete to clear; Enter when done." +msgstr "" +"Clique aqui ou aperte Ctrl+F para digitar uma palavra chave e buscar o mapa " +"desejado. Você pode apertar Ctrl+Delete para apagar e Enter para confirmar." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:207 +msgid "Add shown" +msgstr "Adicionar exibidos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:208 +msgid "Add the maps shown in the list to your selection" +msgstr "Adiciona os mapas exibidos na lista para a sua seleção" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:211 +msgid "Remove shown" +msgstr "Remover exibidos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:212 +msgid "Remove the maps shown in the list from your selection" +msgstr "Remove os mapas exibidos na lista da sua seleção" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:217 +msgid "Add all" +msgstr "Adicionar todos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:218 +msgid "Add every available map to your selection" +msgstr "Adiciona todos os mapas disponíveis para a sua seleção" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:221 +msgid "Remove all" +msgstr "Remover todos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:222 +msgid "Remove all the maps from your selection" +msgstr "Remove todos os mapas da sua seleção" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:229 +msgid "Start Multiplayer!" +msgstr "Iniciar Multijogador!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:58 +msgid "Title:" +msgstr "Título:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:64 +msgid "Author:" +msgstr "Autor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:70 +msgid "Game types:" +msgstr "Modos de jogo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:93 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:296 +msgid "Close" +msgstr "Fechar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:96 +msgid "MAP^Play" +msgstr "Jogar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qh:7 +msgid "Map Information" +msgstr "Informações do Mapa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:28 +msgid "All Weapons Arena" +msgstr "Arena com Todas as Armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:30 +msgid "Most Weapons Arena" +msgstr "Arena com Maior Parte das Armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:49 +#, c-format +msgid "%s Arena" +msgstr "%s Arena" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:61 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:159 +msgid "Dodging" +msgstr "Esquiva" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:63 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:267 +msgid "InstaGib" +msgstr "InstaGib" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:65 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:216 +msgid "New Toys" +msgstr "Novos Brinquedos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:67 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:272 +msgid "NIX" +msgstr "NIX" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:69 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:220 +msgid "Rocket Flying" +msgstr "Voar com Foguetes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:71 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:212 +msgid "Invincible Projectiles" +msgstr "Projéteis Invencíveis" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:75 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:282 +msgid "No start weapons" +msgstr "Sem armas iniciais" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:77 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:195 +msgid "Low gravity" +msgstr "Pouca gravidade" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:79 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:166 +msgid "Cloaked" +msgstr "Oculto" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:81 +msgid "Hook" +msgstr "Gancho" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:83 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:173 +msgid "Midair" +msgstr "No ar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:87 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:224 +msgid "Piñata" +msgstr "Piñata" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:89 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:229 +msgid "Weapons stay" +msgstr "Armas permanescentes" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:91 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:184 +msgid "Blood loss" +msgstr "Perda de sangue" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:93 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:208 +msgid "Jet pack" +msgstr "Mochila a Jato" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:95 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:170 +msgid "Buffs" +msgstr "Bônus (buffs)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:97 +msgid "Overkill" +msgstr "Exagero" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:99 +msgid "No powerups" +msgstr "Sem potencializadores" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:101 +msgid "Powerups" +msgstr "Potencializadores" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:103 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:163 +msgid "Touch explode" +msgstr "Toque explosivo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:105 +msgid "MUT^None" +msgstr "Nenhum" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:156 +msgid "Gameplay mutators:" +msgstr "Modificadores de jogabilidade:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:160 +msgid "Enable dodging" +msgstr "Habilitar esquiva" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:167 +msgid "All players are almost invisible" +msgstr "Todos jogadores ficarão quase invisíveis" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:174 +msgid "Only possible to inflict damage on your enemy while he's airborne" +msgstr "" +"Só é possível causar dano aos seus inimigos enquanto eles estiverem no ar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:178 +msgid "Damage done to your enemy gets added to your own health" +msgstr "O dano causado aos seus inimigos será adicionado à sua saúde" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:183 +msgid "" +"Amount of health below which your player gets stunned because of blood loss" +msgstr "" +"Quantidade de saúde abaixo a qual o seu jogador permanecerá atordoado devido " +"à perda de sangue" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:192 +msgid "Make things fall to the ground slower, lower value means lower gravity" +msgstr "" +"Faz com que as coisas caiam no chão mais devagar. Valores mais baixos " +"significam gravidade mais baixa" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:201 +msgid "Weapon & item mutators:" +msgstr "Modificadores de armas e itens:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:204 +msgid "Grappling hook" +msgstr "Gancho de escalada" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:205 +msgid "Players spawn with the grappling hook" +msgstr "Jogadores surgem com o gancho" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:209 +msgid "Players spawn with the jetpack" +msgstr "Jogadores surgem com a mochila a jato" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:225 +msgid "Players will drop all weapons they possessed when they are killed" +msgstr "" +"Ao morrerem, jogadores irão deixar cair no chão todas as armas que tinham" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:230 +msgid "Weapons stay after they are picked up" +msgstr "Armas permanecem no chão após serem coletadas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:235 +msgid "Regular (no arena)" +msgstr "Normal (sem arena)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:237 +msgid "Weapon arenas:" +msgstr "Arenas de armas:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:238 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:256 +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:261 +msgid "" +"Selecting a weapon arena will give all players that weapon at spawn as well " +"as unlimited ammo, and disable all other weapon pickups." +msgstr "" +"Selecionar uma arena de armas concederá a todos os jogadores a arma " +"selecionada ao surgirem bem como munição ilimitada. Todas as outras armas " +"ficarão indisponíveis no mapa." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:255 +msgid "Most weapons" +msgstr "Maior parte das armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:260 +msgid "All weapons" +msgstr "Todas as armas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:264 +msgid "Special arenas:" +msgstr "Arenas especiais:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:268 +msgid "" +"Players will be given only one weapon, which can instantly kill the opponent " +"with a single shot. 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 " +"does not inflict any damage but is good for doing trickjumps." +msgstr "" +"Os jogadores terão uma arma, a qual pode instantaneamente matar o oponente " +"com um único disparo. Se o jogador ficar sem munição, ele terá 10 segundos " +"para encontrar alguma e se não conseguir fazer isso, irá morrer. O modo de " +"disparo secundário não causa nenhum dano, mas é útil para executar truques " +"de movimento." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:273 +msgid "" +"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." +msgstr "" +"Sem itens Xonotic - em vez de pegar itens espalhados pelo mapa, todo mundo " +"joga com a mesma arma. Depois de um certo tempo, uma contagem regressiva irá " +"iniciar, e depois disso todos irão trocar para uma outra arma." + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:277 +msgid "with blaster" +msgstr "com blaster" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:278 +msgid "Always carry the blaster as an additional weapon in Nix" +msgstr "Sempre carregue a blaster como uma arma adicional em Nix" + +#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qh:9 +msgid "Mutators" +msgstr "Modificadores" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:38 +msgid "SRVS^Categories" +msgstr "Categorias" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:41 +msgid "SRVS^Empty" +msgstr "Vazio" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:42 +msgid "Show empty servers" +msgstr "Exibir servidores vazios" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:46 +msgid "SRVS^Full" +msgstr "Cheio" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:47 +msgid "Show full servers that have no slots available" +msgstr "Exibir servidores cheios que não contêm vagas disponíveis" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:51 +msgid "Pause" +msgstr "Pausar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:52 +msgid "" +"Pause updating the server list to prevent servers from \"jumping around\"" +msgstr "" +"Pausa a atualização da lista de servidores para evitar que os servidores " +"fiquem saindo do lugar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:53 +msgid "Reload the server list" +msgstr "Atualizar a lista de servidores" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:67 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:223 +msgid "Address:" +msgstr "Endereço:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:78 +msgid "Info..." +msgstr "Informações..." + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:79 +msgid "Show more information about the currently highlighted server" +msgstr "Exibir mais informações sobre o servidor atualmente destacado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:84 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:303 +msgid "Join!" +msgstr "Conectar!" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:154 +#: qcsrc/menu/xonotic/serverlist.qc:1061 +msgid "MOD^Default" +msgstr "Padrão" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:161 +#, c-format +msgid "%d modified" +msgstr "%d modificadas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:161 +msgid "Official" +msgstr "Oficial" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:169 +msgid "N/A (auth library missing, can't connect)" +msgstr "" +"N/A (biblioteca de autenticação não encontrada, não foi possível se conectar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:171 +msgid "N/A (auth library missing)" +msgstr "N/A (biblioteca de autenticação não encontrada)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:177 +msgid "Not supported (can't connect)" +msgstr "Não suportado (não foi possível se conectar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:179 +msgid "Not supported (won't encrypt)" +msgstr "Não suportado (não encriptará)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:183 +msgid "Supported (will encrypt)" +msgstr "Suportado (irá encriptar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:185 +msgid "Supported (won't encrypt)" +msgstr "Suportado (não encriptará)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:189 +msgid "Requested (will encrypt)" +msgstr "Solicitado (irá encriptar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:191 +msgid "Requested (won't encrypt)" +msgstr "Solicitado (não encriptará)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:195 +msgid "Required (can't connect)" +msgstr "Necessário (não foi possível se conectar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:197 +msgid "Required (will encrypt)" +msgstr "Necessário (irá encriptar)" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:217 +msgid "Hostname:" +msgstr "Servidor:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:231 +msgid "Gametype:" +msgstr "Modo de jogo:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:236 +msgid "Map:" +msgstr "Mapa:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:241 +msgid "Mod:" +msgstr "Mod:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:246 +msgid "Version:" +msgstr "Versão:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:251 +msgid "Settings:" +msgstr "Configurações:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:258 +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:290 +msgid "Players:" +msgstr "Jogadores:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:263 +msgid "Bots:" +msgstr "Bots:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:268 +msgid "Free slots:" +msgstr "Vagas livres:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:274 +msgid "Encryption:" +msgstr "Encriptação:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:279 +msgid "ID:" +msgstr "ID:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:284 +msgid "Key:" +msgstr "Chave:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qh:7 +msgid "Server Information" +msgstr "Informações do Servidor" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media.qc:25 +msgid "Demos" +msgstr "Demos" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media.qc:26 +msgid "Screenshots" +msgstr "Capturas de tela" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media.qc:27 +msgid "Music Player" +msgstr "Reprodutor de Músicas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:48 +msgid "Auto record demos" +msgstr "Gravar demos automaticamente" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:57 +msgid "Timedemo" +msgstr "Executar benchmark" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:58 +msgid "Benchmark how fast your computer can run the highlighted demo" +msgstr "" +"Executa um teste de desempenho para saber quão rápido seu computador pode " +"rodar a demo destacada" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:62 +msgid "DEMO^Play" +msgstr "Reproduzir" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:13 +msgid "Playing a demo will disconnect you from the current match." +msgstr "Reproduzir uma demo irá desconectar você da partida atual." + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:15 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:15 +msgid "Do you really wish to disconnect now?" +msgstr "Você realmente deseja desconectar agora?" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qh:6 +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qh:6 +msgid "Disconnect" +msgstr "Desconectar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:13 +msgid "Timing a demo will disconnect you from the current match." +msgstr "Executar benchmark em uma demo irá desconectá-lo da partida atual." + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:37 +msgid "MUSICPL^Add" +msgstr "Adicionar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:40 +msgid "MUSICPL^Add all" +msgstr "Adicionar todas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:44 +msgid "Set as menu track" +msgstr "Definir como música do menu" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:48 +msgid "Reset default menu track" +msgstr "Redefinir música padrão do menu" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:54 +msgid "Playlist:" +msgstr "Lista de reprodução:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:55 +msgid "Random order" +msgstr "Ordem aleatória" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:60 +msgid "MUSICPL^Stop" +msgstr "Parar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:63 +msgid "MUSICPL^Play" +msgstr "Tocar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:66 +msgid "MUSICPL^Pause" +msgstr "Pausar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:69 +msgid "MUSICPL^Prev" +msgstr "Anterior" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:72 +msgid "MUSICPL^Next" +msgstr "Seguinte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:76 +msgid "MUSICPL^Remove" +msgstr "Remover" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:79 +msgid "MUSICPL^Remove all" +msgstr "Remover todas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc:43 +msgid "Auto screenshot scoreboard" +msgstr "Tirar capturas de tela automaticamente do placar" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc:63 +msgid "Open in the viewer" +msgstr "Abrir no visualizador" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:139 +msgid "Reset" +msgstr "Redefinir" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:144 +msgid "Previous" +msgstr "Anterior" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:147 +msgid "Next" +msgstr "Seguinte" + +#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc:152 +msgid "Slide show" +msgstr "Apresentação de slides" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:34 +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:21 +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:37 +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:25 +#: qcsrc/menu/xonotic/dialog_settings_user.qc:20 +#: qcsrc/menu/xonotic/dialog_settings_video.qc:21 +msgid "Apply immediately" +msgstr "Aplicar imediatamente" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:48 +msgid "Name" +msgstr "Nome" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:77 +msgid "Model" +msgstr "Modelo" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:96 +msgid "Glowing color" +msgstr "Cor brilhante" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:106 +msgid "Detail color" +msgstr "Cor do detalhe" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:121 +msgid "Statistics" +msgstr "Estatísticas" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:125 +msgid "Allow player statistics to track your client" +msgstr "Permitir que as estatísticas de jogadores rastreiem o seu cliente" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:129 +msgid "Allow player statistics to use your nickname" +msgstr "Permitir que as estatísticas de jogadores usem o seu apelido" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:145 +msgid "Country" +msgstr "Idioma" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:159 +msgid "Gender:" +msgstr "Gênero:" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:161 +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:174 +msgid "Undisclosed" +msgstr "Não revelado" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:162 +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:172 +msgid "Female" +msgstr "Feminino" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:163 +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:173 +msgid "Male" +msgstr "Masculino" + +#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:166 +msgid "Gender" +msgstr "Gênero" + +#: qcsrc/menu/xonotic/dialog_quit.qc:11 +msgid "Are you sure you want to quit?" +msgstr "Tem certeza de que deseja sair?" + +#: qcsrc/menu/xonotic/dialog_quit.qc:15 +msgid "Back to work..." +msgstr "De volta ao trabalho..." + +#: qcsrc/menu/xonotic/dialog_quit.qc:17 +msgid "I got some more fragging to do!" +msgstr "Está na hora das execuções!" + +#: qcsrc/menu/xonotic/dialog_quit.qh:7 +msgid "Quit the game" +msgstr "Sair do jogo" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:15 +msgid "Model:" +msgstr "Modelo:" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:21 +msgid "Remove *" +msgstr "Remover *" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:23 +msgid "Copy *" +msgstr "Copiar *" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:24 +msgid "Paste" +msgstr "Colar" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:26 +msgid "Bone:" +msgstr "Osso:" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:31 +msgid "Set * as child" +msgstr "Definir * como criança" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:32 +msgid "Attach to *" +msgstr "Anexar à *" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:34 +msgid "Detach from *" +msgstr "Separar de *" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:37 +msgid "Visual object properties for *:" +msgstr "Propriedades de objeto visual para *:" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:41 +msgid "Set alpha:" +msgstr "Definir alfa:" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:44 +msgid "Set color main:" +msgstr "Definir cor principal:" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:46 +msgid "Set color glow:" +msgstr "Definir cor do brilho:" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:50 +msgid "Set frame:" +msgstr "Definir frame:" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:54 +msgid "Physical object properties for *:" +msgstr "Propriedades de objeto físico para *:" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:56 +msgid "Set material:" +msgstr "Definir material:" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:62 +msgid "Set solidity:" +msgstr "Definir solidez:" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:63 +msgid "Non-solid" +msgstr "Não sólido" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:64 +msgid "Solid" +msgstr "Sólido" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:65 +msgid "Set physics:" +msgstr "Definir física:" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:66 +msgid "Static" +msgstr "Estática" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:67 +msgid "Movable" +msgstr "Movível" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:68 +msgid "Physical" +msgstr "Físico" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:70 +msgid "Set scale:" +msgstr "Definir escala:" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:72 +msgid "Set force:" +msgstr "Definir força:" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:76 +msgid "Claim *" +msgstr "Resgatar *" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:78 +msgid "* object info" +msgstr "Informações de objeto *" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:79 +msgid "* mesh info" +msgstr "Informações de malha *" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:80 +msgid "* attachment info" +msgstr "Informações de extras *" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:81 +msgid "Show help" +msgstr "Exibir ajuda" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:82 +msgid "* is the object you are facing" +msgstr "* é o objeto para o qual você está virado" + +#: qcsrc/menu/xonotic/dialog_sandboxtools.qh:6 +msgid "Sandbox Tools" +msgstr "Ferramentas Sandbox" + +#: qcsrc/menu/xonotic/dialog_settings.qc:18 +msgid "Video" +msgstr "Vídeo" + +#: qcsrc/menu/xonotic/dialog_settings.qc:19 +msgid "Effects" +msgstr "Efeitos" + +#: qcsrc/menu/xonotic/dialog_settings.qc:20 +msgid "Audio" +msgstr "Áudio" + +#: qcsrc/menu/xonotic/dialog_settings.qc:22 +msgid "Game" +msgstr "Jogo" + +#: qcsrc/menu/xonotic/dialog_settings.qc:23 +msgid "Input" +msgstr "Entrada" + +#: qcsrc/menu/xonotic/dialog_settings.qc:24 +msgid "User" +msgstr "Usuário" + +#: qcsrc/menu/xonotic/dialog_settings.qc:25 +#: qcsrc/menu/xonotic/keybinder.qc:105 +msgid "Misc" +msgstr "Diversos" + +#: qcsrc/menu/xonotic/dialog_settings.qh:6 +msgid "Settings" +msgstr "Configurações" + +#: qcsrc/menu/xonotic/dialog_settings.qh:7 +msgid "Change the game settings" +msgstr "Altere as configurações do jogo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:29 +msgid "Master:" +msgstr "Principal:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:35 +msgid "Music:" +msgstr "Música:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:43 +msgid "VOL^Ambient:" +msgstr "Ambiente:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:50 +msgid "Info:" +msgstr "Informação:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:57 +msgid "Items:" +msgstr "Itens:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:64 +msgid "Pain:" +msgstr "Dor:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:71 +msgid "Player:" +msgstr "Jogador:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:78 +msgid "Shots:" +msgstr "Disparos:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:85 +msgid "Voice:" +msgstr "Voz:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:93 +msgid "Weapons:" +msgstr "Armas:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:99 +msgid "New style sound attenuation" +msgstr "Novo estilo de atenuação de som" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:102 +msgid "Mute sounds when not active" +msgstr "Desabilita o som enquanto estiver em segundo plano" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:105 +msgid "Frequency:" +msgstr "Frequência:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:107 +msgid "Sound output frequency" +msgstr "Frequência da saída de som" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:108 +msgid "8 kHz" +msgstr "8 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:109 +msgid "11.025 kHz" +msgstr "11.025 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:110 +msgid "16 kHz" +msgstr "16 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:111 +msgid "22.05 kHz" +msgstr "22.05 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:112 +msgid "24 kHz" +msgstr "24 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:113 +msgid "32 kHz" +msgstr "32 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:114 +msgid "44.1 kHz" +msgstr "44.1 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:115 +msgid "48 kHz" +msgstr "48 kHz" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:119 +msgid "Channels:" +msgstr "Canais:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:121 +msgid "Number of channels for the sound output" +msgstr "Número de canais para a saída de som" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:122 +msgid "Mono" +msgstr "Mono" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:123 +msgid "Stereo" +msgstr "Estéreo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:124 +msgid "2.1" +msgstr "2.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:125 +msgid "4" +msgstr "4" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:126 +msgid "5" +msgstr "5" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:127 +msgid "5.1" +msgstr "5.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:128 +msgid "6.1" +msgstr "6.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:129 +msgid "7.1" +msgstr "7.1" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:134 +msgid "Swap stereo output channels" +msgstr "Trocar canais de saída estéreo de lugar" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:135 +msgid "Swap left/right channels" +msgstr "Troca de lugar os canais esquerdo e direito" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:138 +msgid "Headphone friendly mode" +msgstr "Modo de fones de ouvido" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:139 +msgid "" +"Enable spatialization (blend the right and left channel slightly to decrease " +"stereo separation a bit for headphones)" +msgstr "" +"Habilita espacialização (combina levemente os canais esquerdo e direito para " +"diminuir um pouco a separação de estéreo para fones de ouvido)" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:143 +msgid "Hit indication sound" +msgstr "Som indicador de disparo acertado" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:144 +msgid "Play a hit indicator sound when your shot hits an enemy" +msgstr "Reproduz um som indicando que você acertou um inimigo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:147 +msgid "Chat message sound" +msgstr "Som de mensagem do bate-papo" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:149 +msgid "Menu sounds" +msgstr "Sons do menu" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:150 +msgid "Play sounds when clicking menu items" +msgstr "Reproduz sons quando você clica nas opções do menu" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:151 +msgid "Focus sounds" +msgstr "Sons de foco" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:152 +msgid "Play sounds when hovering over menu items too" +msgstr "Reproduz sons quando você passa o mouse sobre as opções do menu também" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:156 +msgid "Time announcer:" +msgstr "Aviso de tempo:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:158 +msgid "WRN^Disabled" +msgstr "Desabilitado" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:160 +msgid "5 minutes" +msgstr "5 minutos" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:161 +msgid "WRN^Both" +msgstr "Ambos" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:164 +msgid "Automatic taunts:" +msgstr "Provocações automáticas:" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:166 +msgid "Automatically taunt enemies after fragging them" +msgstr "Provocar inimigos automaticamente depois de executá-los" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:168 +msgid "Sometimes" +msgstr "Às vezes" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:169 +msgid "Often" +msgstr "Frequentemente" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:170 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:141 +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:57 +msgid "Always" +msgstr "Sempre" + +#: qcsrc/menu/xonotic/dialog_settings_audio.qc:176 +msgid "Debug info about sounds" +msgstr "Depurar informações sobre sons" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:41 +msgid "Quality preset:" +msgstr "Predefinição de qualidade:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:45 +msgid "PRE^OMG!" +msgstr "MEU DEUS!" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:48 +msgid "PRE^Low" +msgstr "Baixa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:50 +msgid "PRE^Medium" +msgstr "Média" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:52 +msgid "PRE^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:54 +msgid "PRE^High" +msgstr "Alta" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:56 +msgid "PRE^Ultra" +msgstr "Ultra" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:60 +msgid "PRE^Ultimate" +msgstr "Máxima" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:65 +msgid "Geometry detail:" +msgstr "Detalhes da geometria:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:67 +msgid "Change the smoothness of the curves on the map (default: normal)" +msgstr "Altera a suavização das curvas no mapa (padrão: normal)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:68 +msgid "DET^Lowest" +msgstr "Mínimo" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:69 +msgid "DET^Low" +msgstr "Baixo" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:70 +msgid "DET^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:71 +msgid "DET^Good" +msgstr "Bom" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:72 +msgid "DET^Best" +msgstr "Melhor" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:73 +msgid "DET^Insane" +msgstr "Insano" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:77 +msgid "Player detail:" +msgstr "Detalhes do jogador:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:79 +msgid "PDET^Low" +msgstr "Baixo" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:80 +msgid "PDET^Medium" +msgstr "Médio" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:81 +msgid "PDET^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:82 +msgid "PDET^Good" +msgstr "Bom" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:83 +msgid "PDET^Best" +msgstr "Melhor" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:87 +msgid "Texture resolution:" +msgstr "Resolução das texturas:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:91 +msgid "RES^Leet" +msgstr "Elite" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:92 +msgid "RES^Lowest" +msgstr "Mínima" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:93 +msgid "RES^Very low" +msgstr "Muito baixa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:94 +msgid "RES^Low" +msgstr "Baixa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:95 +msgid "RES^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:96 +msgid "RES^Good" +msgstr "Boa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:97 +msgid "RES^Best" +msgstr "Melhor" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:110 +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:115 +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:120 +msgid "Avoid lossy texture compression" +msgstr "Evitar compressão de texturas com perdas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:131 +msgid "Show surfaces" +msgstr "Exibir superfícies" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:132 +msgid "" +"Disable textures completely for very slow hardware. This gives a huge " +"performance boost, but looks very ugly. (default: disabled)" +msgstr "" +"Desabilita completamente as texturas para PCs de baixo desempenho. Isso " +"garante uma alto ganho de desempenho, mas deixa o jogo muito feio. (padrão: " +"desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:135 +msgid "Use lightmaps" +msgstr "Usar lightmaps" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:136 +msgid "" +"Use high resolution lightmaps, which will look pretty but use up some extra " +"video memory (default: enabled)" +msgstr "" +"Usa lightmaps de alta resolução, os quais ficarão elegantes, mas irão usar " +"um pouco mais de memória (padrão: habilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:138 +msgid "Deluxe mapping" +msgstr "Mapeamento deluxe" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:139 +msgid "Use per-pixel lighting effects (default: enabled)" +msgstr "Usa efeitos de iluminação por pixel (padrão: habilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:141 +msgid "Gloss" +msgstr "Lustro" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:142 +msgid "" +"Enable the use of glossmaps on textures supporting it (default: enabled)" +msgstr "" +"Habilita o uso de glossmaps em texturas que suportam esse recurso (padrão: " +"habilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:145 +msgid "Offset mapping" +msgstr "Mapeamento por paralaxe" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:146 +msgid "" +"Offset mapping effect that will make textures with bumpmaps appear like they " +"\"pop out\" of the flat 2D surface (default: disabled)" +msgstr "" +"Efeito de mapeamento por paralaxe que fará as texturas com bumpmaps " +"parecerem que estão \"saindo\" da superfície plana em 2D (padrão: " +"desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:148 +msgid "Relief mapping" +msgstr "Mapeamento de relevo" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:149 +msgid "" +"Higher quality offset mapping, which also has a huge impact on performance " +"(default: disabled)" +msgstr "" +"Mapeamento por paralaxe de maior qualidade, o qual também causa um grande " +"impacto no desempenho (padrão: desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:152 +msgid "Reflections:" +msgstr "Reflexos:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:153 +msgid "" +"Reflection and refraction quality, has a huge impact on performance on maps " +"with reflecting surfaces (default: disabled)" +msgstr "" +"Qualidade de reflexos e refrações. Causa um grande impacto no desempenho em " +"mapas que contenham superfícies com reflexos (padrão: desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:156 +msgid "Resolution of reflections/refractions (default: good)" +msgstr "Resolução dos reflexos e refrações (padrão: boa)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:157 +msgid "Blurred" +msgstr "Borrados" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:158 +msgid "REFL^Good" +msgstr "Boa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:159 +msgid "Sharp" +msgstr "Alta" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:163 +msgid "Decals" +msgstr "Decalques" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:164 +msgid "Enable decals (bullet holes and blood) (default: enabled)" +msgstr "Habilita decalques (buracos de bala e sangue) (padrão: habilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:165 +msgid "Decals on models" +msgstr "Decalques em modelos" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:169 +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:253 +msgid "Distance:" +msgstr "Distância:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:172 +msgid "Decals further away than this will not be drawn (default: 300)" +msgstr "Decalques mais distantes que isso não serão desenhados (padrão: 300)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:176 +msgid "Time:" +msgstr "Tempo:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:179 +msgid "Time in seconds before decals fade away (default: 2)" +msgstr "Tempo em segundos antes de decalques desaparecerem (padrão: 2)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:183 +msgid "Damage effects:" +msgstr "Efeitos de dano:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:185 +msgid "DMGFX^Disabled" +msgstr "Desabilitado" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:186 +msgid "Skeletal" +msgstr "Esquelético" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:187 +msgid "DMGFX^All" +msgstr "Todos" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:191 +msgid "No dynamic lighting" +msgstr "Desabilitar iluminação dinâmica" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:192 +msgid "Enable corona flares around certain lights (default: enabled)" +msgstr "Habilita luzes de corona ao redor de certas luzes (padrão: habilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:194 +msgid "Fake corona lighting" +msgstr "Iluminação de coronas falsa" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:195 +msgid "" +"Enable faster but uglier dynamic lights by rendering bright coronas instead " +"of real dynamic lights (default: disabled)" +msgstr "" +"Habilita luzes dinâmicas mais rápidas porém mais feias renderizando coronas " +"brilhantes em vez de luzes dinâmicas reais (padrão: desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:198 +msgid "Realtime dynamic lighting" +msgstr "Iluminação dinâmica em tempo real" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:199 +msgid "" +"Enable rendering of dynamic lights such as explosions and rocket lights " +"(default: enabled)" +msgstr "" +"Habilita a renderização de luzes dinâmicas como explosões e luzes de " +"foguetes (padrão: habilitada)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:201 +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:207 +msgid "Shadows" +msgstr "Sombras" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:202 +msgid "Enable rendering of shadows from dynamic lights (default: disabled)" +msgstr "" +"Habilita a renderização de sombras a partir de luzes dinâmicas (padrão: " +"desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:205 +msgid "Realtime world lighting" +msgstr "Iluminação de mundo em tempo real" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:206 +msgid "" +"Enable rendering of full realtime world lighting on maps that support it. " +"Note that this might have a big impact on performance. (default: disabled)" +msgstr "" +"Habilita a renderização de iluminação de mundo em tempo real em mapas que a " +"suportam. Note que isso pode causar um grande impacto no desempenho (padrão: " +"desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:208 +msgid "" +"Enable rendering of shadows from realtime world lights (default: disabled)" +msgstr "" +"Habilita a renderização de sombras de luzes de mundo em tempo real (padrão: " +"desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:212 +msgid "Use normal maps" +msgstr "Usar normal maps" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:213 +msgid "Enable use of directional shading on textures (default: enabled)" +msgstr "Habilita o uso de shaders direcionais em texturas (padrão: habilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:215 +msgid "Soft shadows" +msgstr "Sombras suaves" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:219 +msgid "Fade corona according to visibility" +msgstr "Enfraquecer corona de acordo com a visibilidade" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:220 +msgid "Fade coronas according to visibility (default: enabled)" +msgstr "Enfraquece coronas de acordo com a visibilidade (padrão: habilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:224 +msgid "Bloom" +msgstr "Bloom" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:225 +msgid "" +"Enable bloom effect, which brightens the neighboring pixels of very bright " +"pixels. Has a big impact on performance. (default: disabled)" +msgstr "" +"Habilita o efeito bloom, o qual ilumina os pixeis próximos de pixeis muito " +"brilhantes. Causa um grande impacto no desempenho (padrão: desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:226 +msgid "Extra postprocessing effects" +msgstr "Efeitos extras de pós-processamento" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:227 +msgid "" +"Enables special postprocessing effects for when damaged or under water or " +"using a powerup (default: disabled)" +msgstr "" +"Habilita efeitos especiais de pós-processamento para quando receber dano, " +"estar debaixo d'água ou ao usar potencializadores (padrão: desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:232 +msgid "Motion blur strength - 0.4 recommended" +msgstr "Intensidade do desfoque de movimento - 0.4 recomendado" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:233 +msgid "Motion blur:" +msgstr "Desfoque de movimento:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:239 +msgid "Particles" +msgstr "Partículas" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:240 +msgid "Spawnpoint effects" +msgstr "Efeitos de ponto de surgimento" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:241 +msgid "Particles effects at all spawn points and whenever a player spawns" +msgstr "" +"Efeitos de partículas em todos os pontos de surgimento e sempre que um " +"jogador nascer" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:246 +msgid "Quality:" +msgstr "Qualidade:" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:249 +msgid "" +"Multiplier for amount of particles. Less means less particles, which in turn " +"gives for better performance (default: 1.0)" +msgstr "" +"Multiplicador para a quantidade de partículas. Menos significa menos " +"partículas, o que resulta em um melhor desempenho (padrão: 1.0)" + +#: qcsrc/menu/xonotic/dialog_settings_effects.qc:256 +msgid "Particles further away than this will not be drawn (default: 1000)" +msgstr "Partículas mais distantes que isso não serão desenhadas (padrão: 1000)" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:31 +msgid "No crosshair" +msgstr "Sem retículo" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:33 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:62 +msgid "Per weapon" +msgstr "Por arma" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:34 +msgid "" +"Set a different crosshair for each weapon, good if you play without weapon " +"models" +msgstr "" +"Define um retículo diferente para cada uma das armas, uma boa opção caso " +"você jogue sem os modelos das armas na tela" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:48 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:81 +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:97 +msgid "Size:" +msgstr "Tamanho:" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:64 +msgid "By health" +msgstr "Por saúde" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:76 +msgid "Use rings to indicate weapon status" +msgstr "Usar anéis para indicar status da arma" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:93 +msgid "Enable center crosshair dot" +msgstr "Habilitar ponto no centro do retículo" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:111 +msgid "Use normal crosshair color" +msgstr "Usa cor normal do retículo" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:122 +msgid "Smooth effects of crosshairs" +msgstr "Suavizar efeitos dos retículos" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:125 +msgid "Hit testing:" +msgstr "Teste de acerto:" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:128 +msgid "" +"None: do not do hit tests for the crosshair; TrueAim: blur the crosshair " +"when there's an obstacle between your gun and the target; Enemies: also " +"enlarge the crosshair when you would hit an enemy" +msgstr "" +"Nenhum: não realiza testes de acerto para o retículo; Retículo Real: desfoca " +"o retículo quando há um obstáculo entre a sua arma e o alvo; Inimigos: o " +"retículo também é ampliado quando você acertaria um inimigo" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:129 +msgid "HTTST^Disabled" +msgstr "Desabilitado" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:130 +msgid "HTTST^TrueAim" +msgstr "Mira Real" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:131 +msgid "HTTST^Enemies" +msgstr "Inimigos" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:136 +msgid "Blur crosshair if the shot is obstructed" +msgstr "Borrar retículo se o disparo for obstruído" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:140 +msgid "Enlarge crosshair if targeting an enemy" +msgstr "Ampliar retículo ao focar em um inimigo" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:143 +msgid "Animate crosshair when hitting an enemy" +msgstr "Animar retículo ao acertar um inimigo" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:146 +msgid "Animate crosshair when picking up an item" +msgstr "Animar retículo ao pegar um item" + +#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qh:7 +msgid "Crosshair" +msgstr "Retículo" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:48 +msgid "Fading speed:" +msgstr "Vel. de desaparecimento:" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:51 +msgid "Enable rows / columns highlighting" +msgstr "Habilitar destacamento de fileiras/colunas" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:55 +msgid "Show decimals in respawn countdown" +msgstr "Exibir decimais na contagem de ressurgimento" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:57 +msgid "Show accuracy underneath scoreboard" +msgstr "Exibir precisão embaixo do placar" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:61 +msgid "Waypoints" +msgstr "Caminhos" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:63 +msgid "Display waypoint markers for objectives on the map" +msgstr "Mostra os marcadores de caminhos para objetivos no mapa" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:64 +msgid "Show various gametype specific waypoints" +msgstr "Mostra diversos caminhos específicos de modos de jogo" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:70 +msgid "Control transparency of the waypoints" +msgstr "Transparência dos caminhos" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:74 +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:124 +msgid "Fontsize:" +msgstr "Tamanho da fonte:" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:80 +msgid "Edge offset:" +msgstr "Extremidade:" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:89 +msgid "Fade when near the crosshair" +msgstr "Desvanecer ao se aproximar do retículo" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:94 +msgid "Damage" +msgstr "Dano" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:96 +msgid "Overlay:" +msgstr "Sobreposição:" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:99 +msgid "Factor:" +msgstr "Fator:" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:104 +msgid "Fade rate:" +msgstr "Taxa de desaparecimento:" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:112 +msgid "Player Names" +msgstr "Nomes de Jogadores" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:114 +msgid "Show names above players" +msgstr "Exibir nomes sobre jogadores" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:130 +msgid "Max distance:" +msgstr "Distância máxima:" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:136 +msgid "Decolorize:" +msgstr "Descoloração:" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:140 +#: qcsrc/menu/xonotic/keybinder.qc:99 +msgid "Teamplay" +msgstr "Equipe" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:148 +msgid "Only when near crosshair" +msgstr "Apenas quando próximo ao retículo" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:152 +msgid "Display health and armor" +msgstr "Exibir saúde e armadura" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:157 +msgid "Damage overlay:" +msgstr "Sobreposição do dano:" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:160 +msgid "Dynamic HUD" +msgstr "HUD dinâmico" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:161 +msgid "HUD moves around following player's movement" +msgstr "O HUD se move de acordo com o movimento do jogador" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:163 +msgid "Shake the HUD when hurt" +msgstr "Vibrar o HUD ao ser atingido" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:167 +#: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qh:6 +msgid "Enter HUD editor" +msgstr "Entrar no editor do HUD" + +#: qcsrc/menu/xonotic/dialog_settings_game_hud.qh:7 +msgid "HUD" +msgstr "HUD" + +#: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qc:21 +msgid "In order for the HUD editor to show, you must first be in game." +msgstr "Para o editor do HUD aparecer, é necessário estar jogando em um mapa." + +#: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qc:23 +msgid "Do you wish to start a local game to set up the HUD?" +msgstr "Quer iniciar um jogo local para personalizar o HUD?" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:24 +msgid "Frag Information" +msgstr "Informações de Execuções" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:26 +msgid "Display information about killing sprees" +msgstr "Exibir informação sobre sequências de mortes" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:29 +msgid "Only display sprees if they are achievements" +msgstr "Apenas exibir sequências se forem conquistas" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:34 +msgid "Show spree information in centerprints" +msgstr "Exibir informação de sequências em impressões centrais" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:38 +msgid "Show spree information in death messages" +msgstr "Exibir informação de sequências em mensagens de morte" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:43 +msgid "Sprees in info messages:" +msgstr "Sequências em mensagens de informação:" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:46 +msgid "SPREES^Disabled" +msgstr "Desabilitadas" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:47 +msgid "Target" +msgstr "Alvo" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:48 +msgid "Attacker" +msgstr "Atacante" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:49 +msgid "SPREES^Both" +msgstr "Ambos" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:55 +msgid "Print on a seperate line" +msgstr "Imprimir numa linha separada" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:58 +msgid "Add extra frag information to centerprint when available" +msgstr "" +"Adicionar informações extras de execução à impressão central quando " +"disponível" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:62 +msgid "Add frag location to death messages when available" +msgstr "" +"Adicionar localização de execução nas mensagens de morte quando disponível" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:65 +msgid "Gamemode Settings" +msgstr "Configurações do Modo de Jogo" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:67 +msgid "Display capture times in Capture The Flag" +msgstr "Exibir tempos de captura em Capture a Bandeira" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:71 +msgid "Display name of flag stealer in Capture The Flag" +msgstr "Exibir nome do ladrão da bandeira em Capture a Bandeira" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:76 +#: qcsrc/menu/xonotic/dialog_settings_input.qc:91 +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:133 +msgid "Other" +msgstr "Outros" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:78 +msgid "Display console messages in the top left corner" +msgstr "Exibir mensagens de console no canto superior esquerdo" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:80 +msgid "Display all info messages in the chatbox" +msgstr "Exibir todas as mensagens de informação no bate-papo" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:82 +msgid "Display player statuses in the chatbox" +msgstr "Exibir status de jogadores no bate-papo" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:86 +msgid "Powerup notifications" +msgstr "Notificações de potencializador" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:89 +msgid "Weapon centerprint notifications" +msgstr "Notificações centrais de armas" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:92 +msgid "Weapon info message notifications" +msgstr "Notificações de informação de arma" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:96 +msgid "Announcers" +msgstr "Locutores" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:98 +msgid "Respawn countdown sounds" +msgstr "Sons da contagem de ressurgimento" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:101 +msgid "Killstreak sounds" +msgstr "Sons de sequências de mortes" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:104 +msgid "Achievement sounds" +msgstr "Sons de conquistas" + +#: qcsrc/menu/xonotic/dialog_settings_game_messages.qh:7 +msgid "Messages" +msgstr "Mensagens" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:30 +msgid "Items" +msgstr "Itens" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:32 +msgid "Use simple 2D images instead of item models" +msgstr "Usar imagens 2D simples em vez de modelos de itens" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:34 +msgid "Unavailable alpha:" +msgstr "Alfa indisponível:" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:37 +msgid "Unavailable color:" +msgstr "Cor indisponível:" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:39 +msgid "GHOITEMS^Black" +msgstr "Preto" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:40 +msgid "GHOITEMS^Dark" +msgstr "Escuro" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:41 +msgid "GHOITEMS^Tinted" +msgstr "Pintado" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:42 +msgid "GHOITEMS^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:43 +msgid "GHOITEMS^Blue" +msgstr "Azul" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:49 +#: qcsrc/menu/xonotic/serverlist.qc:767 +msgid "Players" +msgstr "Jogadores" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:51 +msgid "Force player models to mine" +msgstr "Forçar modelos dos jogadores para ficarem iguais ao meu" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:53 +msgid "Force player colors to mine" +msgstr "Forçar cores de jogadores para ficarem iguais às minhas" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:56 +msgid "In non teamplay modes only" +msgstr "Apenas em modos de jogo que não sejam de equipes" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:60 +msgid "Body fading:" +msgstr "Desaparecimento de corpos:" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:63 +msgid "Gibs:" +msgstr "Tripas:" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:65 +msgid "GIBS^None" +msgstr "Desabilitadas" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:66 +msgid "GIBS^Few" +msgstr "Poucas" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:67 +msgid "GIBS^Many" +msgstr "Muitas" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:68 +msgid "GIBS^Lots" +msgstr "Excessivas" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qh:7 +msgid "Models" +msgstr "Modelos" + +#: qcsrc/menu/xonotic/dialog_settings_game_model.qh:8 +msgid "Customize how players and items are displayed in game" +msgstr "Personalize como jogadores e itens são exibidos dentro do jogo" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:26 +msgid "1st person perspective" +msgstr "Perspectiva em 1ª pessoa" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:30 +msgid "Slide to third person upon death" +msgstr "Mudar para terceira pessoa depois de morrer" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:34 +msgid "Smooth the view when landing from a jump" +msgstr "Suavizar a visão quando aterrissar de um salto" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:38 +msgid "Smooth the view while crouching" +msgstr "Suavizar a visão quando estiver agachado" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:42 +msgid "View waving while idle" +msgstr "Ver acenos quando ausente" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:46 +msgid "View bobbing while walking around" +msgstr "Oscilação de visão ao andar" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:51 +msgid "3rd person perspective" +msgstr "Perspectiva em 3ª pessoa" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:55 +msgid "Back distance" +msgstr "Distância das costas" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:61 +msgid "Up distance" +msgstr "Distância para cima" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:67 +msgid "Allow passing through walls while spectating" +msgstr "Atravessar paredes quando estiver de espectador" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:70 +msgid "Field of view:" +msgstr "Campo de visão:" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:72 +msgid "Field of vision in degrees (default: 100)" +msgstr "Campo de visão em graus (padrão: 100)" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:76 +msgid "ZOOM^Zoom factor:" +msgstr "Fator do zoom:" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:78 +msgid "How big the zoom factor is when the zoom button is pressed" +msgstr "" +"Quão grande o fator do zoom será quando o botão de zoom for pressionado" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:81 +msgid "ZOOM^Zoom speed:" +msgstr "Velocidade do zoom:" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:83 +msgid "How fast the view will be zoomed, disable to zoom instantly" +msgstr "Quão rápido será o zoom da visão, desabilite para zoom instantâneo" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:92 +msgid "ZOOM^Instant" +msgstr "Instantâneo" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:96 +msgid "ZOOM^Zoom sensitivity:" +msgstr "Sensibilidade do zoom:" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:98 +msgid "" +"How zoom changes sensitivity, from 0 (lower sensitivity) to 1 (no " +"sensitivity change)" +msgstr "" +"Como o zoom altera a sensibilidade, a partir do valor 0 (sensibilidade mais " +"baixa) até 1 (sem alterações na sensibilidade)" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:101 +msgid "Velocity zoom" +msgstr "Zoom baseado na velocidade" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:102 +msgid "Forward movement only" +msgstr "Apenas ao movimentar-se para frente" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:106 +msgid "VZOOM^Factor" +msgstr "Fator" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:113 +msgid "Display reticle 2D overlay while zooming" +msgstr "Exibe uma sobreposição reticular em 2D durante o zoom" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:116 +msgid "Release zoom when you die or respawn" +msgstr "Soltar o zoom quando você morre ou ressurge" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:120 +msgid "Release zoom when you switch weapons" +msgstr "Soltar o zoom quando você troca de arma" + +#: qcsrc/menu/xonotic/dialog_settings_game_view.qh:7 +#: qcsrc/menu/xonotic/keybinder.qc:76 +msgid "View" +msgstr "Visão" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:34 +msgid "Weapon Priority List (* = mutator weapon)" +msgstr "Lista de Prioridade de Armas (* = arma de modificador)" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:40 +msgid "Up" +msgstr "Mover para cima" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:44 +msgid "Down" +msgstr "Mover para baixo" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:50 +msgid "Use priority list for weapon cycling" +msgstr "Usar lista de prioridades como ordem de alternação de armas" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:51 +msgid "" +"Make use of the list above when cycling through weapons with the mouse wheel" +msgstr "" +"Faz uso da lista acima durante a alternação de armas com a roda do mouse" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:53 +msgid "Cycle through only usable weapon selections" +msgstr "Alterne somente entre armas utilizáveis" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:57 +msgid "Auto switch weapons on pickup" +msgstr "Trocar para a arma coletada automaticamente" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:58 +msgid "" +"Automatically switch to newly picked up weapons if they are better than what " +"you are carrying" +msgstr "" +"Alterna automaticamente para a arma coletada caso ela seja melhor do que a " +"que você está carregando" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:61 +msgid "Release attack buttons when you switch weapons" +msgstr "Soltar os botões de ataque durante a troca de arma" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:64 +msgid "Draw 1st person weapon model" +msgstr "Renderizar modelo de arma em 1ª pessoa" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:65 +msgid "Draw the weapon model" +msgstr "Exibe os modelos das armas em sua tela" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:69 +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:72 +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:75 +msgid "Position of the weapon model; requires reconnect" +msgstr "Posicionamento do modelo de arma; é preciso reconectar-se" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:80 +msgid "Gun model swaying" +msgstr "Mover modelo de arma ao mover o mouse" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:85 +msgid "Gun model bobbing" +msgstr "Oscilar modelo de arma" + +#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qh:7 +#: qcsrc/menu/xonotic/keybinder.qc:43 +msgid "Weapons" +msgstr "Armas" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:33 +msgid "Key Bindings" +msgstr "Teclas de Atalho" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:37 +msgid "Change key..." +msgstr "Alterar botão..." + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:41 +msgid "Edit..." +msgstr "Editar..." + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:47 +msgid "Clear" +msgstr "Limpar" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:52 +msgid "Reset all" +msgstr "Redefinir tudo" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:57 +msgid "Mouse" +msgstr "Mouse" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:59 +msgid "Sensitivity:" +msgstr "Sensibilidade:" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:61 +msgid "Mouse speed multiplier" +msgstr "Multiplicador da velocidade do mouse" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:63 +msgid "Smooth aiming" +msgstr "Suavizar mouse" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:64 +msgid "Smoothes the mouse movement, but makes aiming slightly less responsive" +msgstr "" +"Suaviza os movimentos do mouse, mas torna a mira levemente menos responsiva" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:66 +msgid "Invert aiming" +msgstr "Inverter mouse" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:67 +msgid "Invert mouse movement on the Y-axis" +msgstr "Inverter eixo Y do movimento do mouse" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:69 +msgid "Use system mouse positioning" +msgstr "Usar posicionamento de mouse do sistema" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:74 +msgid "Enable built in mouse acceleration" +msgstr "Habilitar aceleração de mouse imbutida" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:78 +#: qcsrc/menu/xonotic/dialog_settings_input.qc:82 +#: qcsrc/menu/xonotic/dialog_settings_input.qc:85 +msgid "Disable system mouse acceleration" +msgstr "Desabilitar aceleração de mouse do SO" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:79 +msgid "Make use of DGA mouse input" +msgstr "Fazer uso da entrada DGA de mouse" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:93 +msgid "Pressing \"enter console\" key also closes it" +msgstr " Pressionar \"abrir console\" também o fecha" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:94 +msgid "Allow the console toggling bind to also close the console" +msgstr "Permite que o atalho para abrir o console também feche-o" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:96 +msgid "Automatically repeat jumping if holding jump" +msgstr " Saltar continuamente ao segurar o botão de saltar" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:99 +msgid "Jetpack on jump:" +msgstr "Mochila a jato ao saltar:" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:101 +msgid "JPJUMP^Disabled" +msgstr "Desabilitado" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:102 +msgid "Air only" +msgstr "Somente no ar" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:103 +msgid "JPJUMP^All" +msgstr "Todos" + +#: qcsrc/menu/xonotic/dialog_settings_input.qc:109 +#: qcsrc/menu/xonotic/dialog_settings_input.qc:114 +#: qcsrc/menu/xonotic/dialog_settings_input.qc:119 +msgid "Use joystick input" +msgstr "Usar entrada de gamepad" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:31 +msgid "Command when pressed:" +msgstr "Comando quando pressionado:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:34 +msgid "Command when released:" +msgstr "Comando quando largado:" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:40 +msgid "Cancel" +msgstr "Cancelar" + +#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qh:7 +msgid "User defined key bind" +msgstr "Botão de atalho definido pelo usuário" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:11 +#, c-format +msgid "%d fps" +msgstr "%d fps" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:12 +#, c-format +msgid "%d KB/s" +msgstr "%d KB/s" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:13 +#, c-format +msgid "%d MB/s" +msgstr "%d MB/s" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:27 +msgid "Network" +msgstr "Rede" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:29 +msgid "Client UDP port:" +msgstr "Porta UDP do cliente:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:31 +msgid "Force client to use chosen port unless it is set to 0" +msgstr "" +"Força os clientes a utilizarem as portas escolhidas a menos que esteja " +"definido como 0" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:34 +msgid "Bandwidth:" +msgstr "Largura de banda:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:36 +msgid "Specify your network speed" +msgstr "Especifique a velocidade da sua rede" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:37 +msgid "56k" +msgstr "56k" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:38 +msgid "ISDN" +msgstr "ISDN" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:39 +msgid "Slow ADSL" +msgstr "ADSL lenta" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:40 +msgid "Fast ADSL" +msgstr "ADSL rápida" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:41 +msgid "Broadband" +msgstr "Banda larga" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:44 +msgid "Input packets/s:" +msgstr "Pacotes de entrada/s:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:46 +msgid "How many input packets to send to the server each second" +msgstr "Quantos pacotes de entrada serão enviados ao servidor a cada segundo" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:48 +msgid "Server queries/s:" +msgstr "Consultas ao servidor/s:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:52 +msgid "Downloads:" +msgstr "Downloads:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:54 +msgid "Maximum number of concurrent HTTP/FTP downloads" +msgstr "Número máximo de downloads simultâneos via HTTP/FTP" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:56 +msgid "Download speed:" +msgstr "Velocidade de download:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:69 +msgid "Local latency:" +msgstr "Latência local:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:73 +msgid "Show netgraph" +msgstr "Exibir gráfico de rede" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:74 +msgid "Show a graph of packet sizes and other information" +msgstr "Exibe um gráfico de tamanhos de pacotes e outras informações" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:76 +msgid "Client-side movement prediction" +msgstr "Previsão de movimento pelo cliente" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:78 +msgid "Movement error compensation" +msgstr "Compensação de erro de movimento" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:82 +msgid "Use encryption (AES) when available" +msgstr "Usar encriptação (AES) quando disponível" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:85 +msgid "Framerate" +msgstr "Taxa de Quadros por Segundo (FPS)" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:87 +msgid "Maximum:" +msgstr "Máximo:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:99 +msgid "MAXFPS^Unlimited" +msgstr "Ilimitada" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:102 +msgid "Target:" +msgstr "Alvo:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:104 +msgid "TRGT^Disabled" +msgstr "Desabilitado" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:116 +msgid "Idle limit:" +msgstr "Em segundo plano:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:122 +msgid "IDLFPS^Unlimited" +msgstr "Ilimitado" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:126 +msgid "Save processing time for other apps" +msgstr "Salvar tempo de processamento para outras aplicações" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:129 +msgid "Show frames per second" +msgstr "Exibir taxa de quadros por segundo" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:130 +msgid "Show your rendered frames per second" +msgstr "Exibe a sua taxa de quadros por segundo" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:135 +msgid "Menu tooltips:" +msgstr "Dicas de menu:" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:137 +msgid "" +"Menu tooltips: disabled, standard or advanced (also shows cvar or console " +"command bound to the menu item)" +msgstr "" +"Dicas de menu: desabilitado, padrão ou avançado (também mostra a cvar ou " +"comando de console ligado ao item de menu)" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:138 +msgid "TLTIP^Disabled" +msgstr "Desabilitado" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:139 +msgid "TLTIP^Standard" +msgstr "Padrão" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:140 +msgid "TLTIP^Advanced" +msgstr "Avançado" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:143 +msgid "Show current date and time" +msgstr "Exibir data e hora atual" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:144 +msgid "Show current date and time of day, useful on screenshots" +msgstr "Exibe a data e hora atual do dia, útil para capturas de tela" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:147 +msgid "Enable developer mode" +msgstr "Habilitar modo de desenvolvedor" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:151 +msgid "Advanced settings..." +msgstr "Configurações avançadas..." + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:152 +msgid "Advanced settings where you can tweak every single variable of the game" +msgstr "" +"Definições avançadas onde você poderá ajustar cada uma das variáveis do jogo" + +#: qcsrc/menu/xonotic/dialog_settings_misc.qc:157 +#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qh:6 +msgid "Factory reset" +msgstr "Configurações padrões" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:31 +msgid "Cvar filter:" +msgstr "Filtro de cvar:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:38 +msgid "Modified cvars only" +msgstr "Somente cvars modificadas" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:45 +msgid "Setting:" +msgstr "Configuração:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:49 +msgid "Type:" +msgstr "Modo:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:53 +msgid "Value:" +msgstr "Valor:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:70 +msgid "Description:" +msgstr "Descrição:" + +#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qh:7 +msgid "Advanced settings" +msgstr "Configurações avançadas" + +#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:11 +msgid "Are you sure you want to reset all settings?" +msgstr "" +"Tem certeza de que deseja redefinir todas as configurações para o padrão?" + +#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:13 +msgid "This will create a backup config in your data directory" +msgstr "" +"Isso irá criar uma cópia da sua configuração na seguinte pasta: C:\\Users" +"\\[usuário]\\Saved Games\\xonotic\\data" + +#: qcsrc/menu/xonotic/dialog_settings_user.qc:25 +msgid "Menu Skins" +msgstr "Visuais de Menu" + +#: qcsrc/menu/xonotic/dialog_settings_user.qc:64 +msgid "Text Language" +msgstr "Idioma dos Textos" + +#: qcsrc/menu/xonotic/dialog_settings_user.qc:69 +msgid "Set language" +msgstr "Definir idioma" + +#: qcsrc/menu/xonotic/dialog_settings_user.qc:74 +msgid "Disable gore effects and harsh language" +msgstr "Desabilitar sangue e linguagem inapropriada" + +#: qcsrc/menu/xonotic/dialog_settings_user.qc:75 +msgid "" +"Replace blood and gibs with content that does not have any gore effects " +"(default: disabled)" +msgstr "" +"Substitui o sangue com conteúdo que não contém nenhum efeito violento " +"(padrão: desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:10 +msgid "While connected language changes will be applied only to the menu," +msgstr "" +"Enquanto estiver conectado, alterações no idioma serão aplicadas somente no " +"menu." + +#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:12 +msgid "full language changes will take effect starting from the next game" +msgstr "" +"Alterações completas de idioma surtirão efeito a partir da próxima partida" + +#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:16 +msgid "Disconnect now" +msgstr "Desconectar agora" + +#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:17 +msgid "Switch language" +msgstr "Alterar idioma" + +#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qh:6 +msgid "Warning" +msgstr "Aviso" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:33 +msgid "Resolution:" +msgstr "Resolução:" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:37 +msgid "Font/UI size:" +msgstr "Tamanho da fonte/UI:" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:39 +msgid "SZ^Unreadable" +msgstr "Ilegível" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:40 +msgid "SZ^Tiny" +msgstr "Minúsculo" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:41 +msgid "SZ^Little" +msgstr "Muito Pequeno" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:42 +msgid "SZ^Small" +msgstr "Pequeno" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:43 +msgid "SZ^Medium" +msgstr "Médio" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:44 +msgid "SZ^Large" +msgstr "Grande" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:45 +msgid "SZ^Huge" +msgstr "Enorme" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:46 +msgid "SZ^Gigantic" +msgstr "Gigante" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:47 +msgid "SZ^Colossal" +msgstr "Colossal" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:51 +msgid "Color depth:" +msgstr "Profundidade da cor:" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:53 +msgid "How many bits per pixel (BPP) to render at, 32 is recommended" +msgstr "Quantos bits por pixel (BPP) a serem renderizados, 32 é o recomendado" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:54 +msgid "16bit" +msgstr "16bit" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:55 +msgid "32bit" +msgstr "32bit" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:59 +msgid "Full screen" +msgstr "Tela cheia" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:61 +msgid "Vertical Synchronization" +msgstr "Sincronização Vertical" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:62 +msgid "" +"Enable vertical synchronization to prevent tearing, will cap your fps to the " +"screen refresh rate (default: disabled)" +msgstr "" +"Habilita a sincronização vertical para evitar cortes na tela. Isso irá " +"limitar a quantidade de quadros por segundo em relação à taxa de atualização " +"do monitor (padrão: desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:67 +msgid "Flip view horizontally" +msgstr "Girar a visão horizontalmente" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:68 +msgid "Poor man's left handed mode (default: off)" +msgstr "Modo canhoto (padrão: desligado)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:71 +msgid "Anisotropy:" +msgstr "Filtro anisotrópico:" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:73 +msgid "Anisotropic filtering quality (default: 1x)" +msgstr "Qualidade do filtro anisotrópico (padrão: 1x)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:74 +msgid "ANISO^Disabled" +msgstr "Desabilitado" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:75 +#: qcsrc/menu/xonotic/dialog_settings_video.qc:86 +msgid "2x" +msgstr "2x" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:76 +#: qcsrc/menu/xonotic/dialog_settings_video.qc:87 +msgid "4x" +msgstr "4x" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:77 +msgid "8x" +msgstr "8x" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:78 +msgid "16x" +msgstr "16x" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:81 +msgid "Antialiasing:" +msgstr "Anti-serrilhado:" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:84 +msgid "" +"Enable antialiasing, which smooths the edges of 3D geometry. Note that it " +"might decrease performance by quite a lot (default: disabled)" +msgstr "" +"Habilita o anti-serrilhado, o qual suaviza as bordas da geometria em 3D. " +"Note que isso pode diminuir bastante o desempenho (padrão: desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:85 +msgid "AA^Disabled" +msgstr "Desabilitado" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:92 +msgid "High-quality frame buffer" +msgstr "Buffer de quadro de alta qualidade" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:97 +msgid "Depth first:" +msgstr "Profundidade principal:" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:99 +msgid "" +"Eliminate overdraw by rendering a depth-only version of the scene before the " +"normal rendering starts (default: disabled)" +msgstr "" +"Elimina o sobredesenho renderizando uma versão de profundidade única da cena " +"antes que a renderização normal comece (padrão: desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:100 +msgid "DF^Disabled" +msgstr "Desabilitado" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:101 +msgid "DF^World" +msgstr "Mundo" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:102 +msgid "DF^All" +msgstr "Todos" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:105 +msgid "Vertex Buffer Objects (VBOs)" +msgstr "Objetos de Buffers de Vertex (VBOs)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:108 +msgid "VBO^Off" +msgstr "Desligado" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:109 +msgid "Vertices, some Tris (compatible)" +msgstr "Vértices, alguns Triângulos (compatível)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:110 +#: qcsrc/menu/xonotic/dialog_settings_video.qc:114 +#: qcsrc/menu/xonotic/dialog_settings_video.qc:116 +msgid "" +"Make use of Vertex Buffer Objects to store static geometry in video memory " +"for faster rendering (default: Vertex and Triangles)" +msgstr "" +"Faz uso de objetos de buffers de vertex (VBOs) para armazenar geometria " +"estática na memória de vídeo para renderização mais rápida. (padrão: " +"Vértices e Triângulos)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:113 +msgid "Vertices" +msgstr "Vértices" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:115 +msgid "Vertices and Triangles" +msgstr "Vértices e Triângulos" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:119 +msgid "Brightness:" +msgstr "Brilho:" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:121 +msgid "Brightness of black (default: 0)" +msgstr "Brilho do preto (padrão: 0)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:123 +msgid "Contrast:" +msgstr "Contraste:" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:125 +msgid "Brightness of white (default: 1)" +msgstr "Brilho do branco (padrão: 1)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:127 +msgid "Gamma:" +msgstr "Gama:" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:130 +msgid "" +"Inverse gamma correction value, a brightness effect that does not affect " +"white or black (default: 1.125)" +msgstr "" +"Valor de correção de gama inverso, é um efeito de brilho que não afeta o " +"branco ou preto (padrão: 1.125)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:133 +msgid "Contrast boost:" +msgstr "Impulso do contraste:" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:136 +msgid "By how much to multiply the contrast in dark areas (default: 1)" +msgstr "" +"Por quanto deve ser multiplicado o contraste em áreas escuras (padrão: 1)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:139 +msgid "Saturation:" +msgstr "Saturação:" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:142 +msgid "" +"Saturation adjustment (0 = grayscale, 1 = normal, 2 = oversaturated), " +"requires GLSL color control (default: 1)" +msgstr "" +"Ajuste da saturação (0 = tons de cinza, 1 = normal, 2 = muito saturado), " +"requer controle de cor GLSL (padrão: 1)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:146 +msgid "LIT^Ambient:" +msgstr "Iluminação ambiental:" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:148 +msgid "" +"Ambient lighting, if set too high it tends to make light on maps look dull " +"and flat (default: 4)" +msgstr "" +"Iluminação ambiental, caso o valor seja muito alto, poderá fazer com que as " +"luzes dos mapas fiquem achatadas e sem graça (padrão: 4)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:150 +msgid "Intensity:" +msgstr "Intensidade:" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:152 +msgid "Global rendering brightness (default: 1)" +msgstr "Brilho geral da renderização (padrão: 1)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:155 +msgid "Wait for GPU to finish each frame" +msgstr "Esperar que a placa de vídeo termine cada quadro" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:156 +msgid "" +"Make the CPU wait for the GPU to finish each frame, can help with some " +"strange input or video lag on some machines (default: disabled)" +msgstr "" +"Faz com que o processador espere pela placa de vídeo terminar cada quadro. " +"Pode ajudar no caso de alguns atrasos nos dispositivos de entrada ou lag de " +"vídeo em algumas máquinas (padrão: desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:158 +msgid "Use OpenGL 2.0 shaders (GLSL)" +msgstr "Usar shaders de OpenGL 2.0 (GLSL)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:162 +msgid "Use GLSL to handle color control" +msgstr "Usar GLSL para o controle de cores" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:163 +msgid "" +"Enable use of GLSL to apply gamma correction, note that it might decrease " +"performance by a lot (default: disabled)" +msgstr "" +"Habilita o uso de GLSL para aplicar correção de gama. Note que isso pode " +"diminuir bastante o desempenho (padrão: desabilitado)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:168 +msgid "Psycho coloring (easter egg)" +msgstr "Cores 'Psycho' (easter egg)" + +#: qcsrc/menu/xonotic/dialog_settings_video.qc:171 +msgid "Trippy vertices (easter egg)" +msgstr "Vértices 'Trip' (easter egg)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:110 +msgid "Instant action! (random map with bots)" +msgstr "Ação Instantânea! (mapa aleatório com bots)" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:117 +msgid "???" +msgstr "???" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:130 +msgid "Campaign Difficulty:" +msgstr "Dificuldade da Campanha:" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:131 +msgid "CSKL^Easy" +msgstr "Fácil" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:132 +msgid "CSKL^Medium" +msgstr "Média" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:133 +msgid "CSKL^Hard" +msgstr "Difícil" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qc:135 +msgid "Start Singleplayer!" +msgstr "Iniciar Campanha!" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qh:6 +msgid "Singleplayer" +msgstr "Um Jogador" + +#: qcsrc/menu/xonotic/dialog_singleplayer.qh:7 +msgid "Play the singleplayer campaign or instant action matches against bots" +msgstr "" +"Jogue a campanha de um jogador ou inicie uma partida de ação instantânea " +"contra bots" + +#: qcsrc/menu/xonotic/dialog_singleplayer_winner.qh:7 +msgid "Winner" +msgstr "Vencedor" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:32 +msgid "join 'best' team (auto-select)" +msgstr "juntar-se à 'melhor' equipe (seleção automática)" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:33 +msgid "Autoselect team (recommended)" +msgstr "Selecionar equipe automaticamente (recomendado)" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:37 +msgid "red" +msgstr "vermelha" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:38 +msgid "blue" +msgstr "azul" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:39 +msgid "yellow" +msgstr "amarela" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:40 +msgid "pink" +msgstr "rosa" + +#: qcsrc/menu/xonotic/dialog_teamselect.qc:43 +msgid "spectate" +msgstr "assistir" + +#: qcsrc/menu/xonotic/dialog_teamselect.qh:7 +msgid "Team Selection" +msgstr "Seleção de Equipe" + +#: qcsrc/menu/xonotic/dialog_uid2name.qc:10 +msgid "Allow player statistics to use your nickname?" +msgstr "Permitir que as estatísticas de jogadores usem o seu apelido?" + +#: qcsrc/menu/xonotic/dialog_uid2name.qc:12 +msgid "Answering \"No\" you will appear as \"Anonymous player\"" +msgstr "" +"Selecionando \"Não\" você aparecerá como \"Anonymous player\" (em português, " +"\"Jogador anônimo\")" + +#: qcsrc/menu/xonotic/gametypelist.qc:86 +msgid "teamplay" +msgstr "jogo em equipe" + +#: qcsrc/menu/xonotic/gametypelist.qc:88 +msgid "free for all" +msgstr "cada um por si" + +#: qcsrc/menu/xonotic/keybinder.qc:29 +msgid "Moving" +msgstr "Movimento" + +#: qcsrc/menu/xonotic/keybinder.qc:30 +msgid "forward" +msgstr "Mover-se para frente" + +#: qcsrc/menu/xonotic/keybinder.qc:31 +msgid "backpedal" +msgstr "Mover-se para trás" + +#: qcsrc/menu/xonotic/keybinder.qc:32 +msgid "strafe left" +msgstr "Mover-se para a esquerda" + +#: qcsrc/menu/xonotic/keybinder.qc:33 +msgid "strafe right" +msgstr "Mover-se para a direita" + +#: qcsrc/menu/xonotic/keybinder.qc:34 +msgid "jump / swim" +msgstr "saltar / nadar" + +#: qcsrc/menu/xonotic/keybinder.qc:35 +msgid "crouch / sink" +msgstr "agachar / afundar" + +#: qcsrc/menu/xonotic/keybinder.qc:36 +msgid "off-hand hook" +msgstr "gancho imediato" + +#: qcsrc/menu/xonotic/keybinder.qc:37 +msgid "jet pack" +msgstr "mochila a jato" + +#: qcsrc/menu/xonotic/keybinder.qc:39 +msgid "Attacking" +msgstr "Ataques" + +#: qcsrc/menu/xonotic/keybinder.qc:44 +msgid "WEAPON^previous" +msgstr "anterior" + +#: qcsrc/menu/xonotic/keybinder.qc:45 +msgid "WEAPON^next" +msgstr "seguinte" + +#: qcsrc/menu/xonotic/keybinder.qc:46 +msgid "WEAPON^previously used" +msgstr "usada anteriormente" + +#: qcsrc/menu/xonotic/keybinder.qc:47 +msgid "WEAPON^best" +msgstr "melhor" + +#: qcsrc/menu/xonotic/keybinder.qc:48 +msgid "reload" +msgstr "recarregar" + +#: qcsrc/menu/xonotic/keybinder.qc:49 +msgid "drop weapon / throw nade" +msgstr "largar arma / arremessar granada" + +#: qcsrc/menu/xonotic/keybinder.qc:77 +msgid "hold zoom" +msgstr "manter zoom" + +#: qcsrc/menu/xonotic/keybinder.qc:78 +msgid "toggle zoom" +msgstr "ativar/desativar zoom" + +#: qcsrc/menu/xonotic/keybinder.qc:79 +msgid "show scores" +msgstr "exibir pontuações" + +#: qcsrc/menu/xonotic/keybinder.qc:80 +msgid "screen shot" +msgstr "tirar captura de tela" + +#: qcsrc/menu/xonotic/keybinder.qc:81 +msgid "maximize radar" +msgstr "maximizar radar" + +#: qcsrc/menu/xonotic/keybinder.qc:82 +msgid "3rd person view" +msgstr "visão em 3ª pessoa" + +#: qcsrc/menu/xonotic/keybinder.qc:83 +msgid "enter spectator mode" +msgstr "entrar no modo de espectador" + +#: qcsrc/menu/xonotic/keybinder.qc:85 +msgid "Communicate" +msgstr "Comunicação" + +#: qcsrc/menu/xonotic/keybinder.qc:86 +msgid "public chat" +msgstr "Bate-papo público" + +#: qcsrc/menu/xonotic/keybinder.qc:87 qcsrc/menu/xonotic/keybinder.qc:100 +msgid "team chat" +msgstr "Bate-papo de equipe" + +#: qcsrc/menu/xonotic/keybinder.qc:88 +msgid "show chat history" +msgstr "exibir histórico do bate-papo" + +#: qcsrc/menu/xonotic/keybinder.qc:89 +msgid "vote YES" +msgstr "votar SIM" + +#: qcsrc/menu/xonotic/keybinder.qc:90 +msgid "vote NO" +msgstr "votar NÃO" + +#: qcsrc/menu/xonotic/keybinder.qc:93 +msgid "Client" +msgstr "Cliente" + +#: qcsrc/menu/xonotic/keybinder.qc:95 +msgid "enter console" +msgstr "abrir o console" + +#: qcsrc/menu/xonotic/keybinder.qc:96 +msgid "disconnect" +msgstr "desconectar" + +#: qcsrc/menu/xonotic/keybinder.qc:97 +msgid "quit" +msgstr "sair" + +#: qcsrc/menu/xonotic/keybinder.qc:101 +msgid "auto-join team" +msgstr "juntar-se à uma equipe automáticamente" + +#: qcsrc/menu/xonotic/keybinder.qc:103 +msgid "drop key / drop flag" +msgstr "largar chave / largar bandeira" + +#: qcsrc/menu/xonotic/keybinder.qc:106 +msgid "quick menu" +msgstr "menu rápido" + +#: qcsrc/menu/xonotic/keybinder.qc:107 +msgid "sandbox menu" +msgstr "menu sandbox" + +#: qcsrc/menu/xonotic/keybinder.qc:108 +msgid "drag object" +msgstr "arrastar objeto" + +#: qcsrc/menu/xonotic/keybinder.qc:110 +msgid "User defined" +msgstr "Definido pelo usuário" + +#: qcsrc/menu/xonotic/mainwindow.qc:64 qcsrc/menu/xonotic/mainwindow.qc:67 +msgid "Do not press this button again!" +msgstr "Não aperte este botão novamente!" + +#: qcsrc/menu/xonotic/maplist.qc:291 +msgid "" +"Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n" +msgstr "" +"Huh? Não posso jogar isto (m é NULO). Refiltrando para que isso não ocorra " +"novamente.\n" + +#: qcsrc/menu/xonotic/maplist.qc:299 +#, c-format +msgid "%s's Xonotic Server" +msgstr "Servidor de Xonotic de %s" + +#: qcsrc/menu/xonotic/maplist.qc:304 +msgid "" +"Huh? Can't play this (invalid game type). Refiltering so this won't happen " +"again.\n" +msgstr "" +"Huh? Não posso jogar isto (modo de jogo inválido). Refiltrando para que isso " +"não ocorra novamente.\n" + +#: qcsrc/menu/xonotic/playerlist.qc:100 qcsrc/menu/xonotic/playerlist.qc:110 +msgid "spectator" +msgstr "espectador" + +#: qcsrc/menu/xonotic/playermodel.qc:170 +msgid "<no model found>" +msgstr "<nenhum modelo encontrado>" + +#: qcsrc/menu/xonotic/serverlist.qc:273 +msgid "Favorite" +msgstr "Favoritar" + +#: qcsrc/menu/xonotic/serverlist.qc:274 +msgid "" +"Bookmark the currently highlighted server so that it's faster to find in the " +"future" +msgstr "" +"Marca o servidor selecionado como favorito para que seja mais rápido " +"encontrá-lo no futuro" + +#: qcsrc/menu/xonotic/serverlist.qc:763 +msgid "Ping" +msgstr "Ping" + +#: qcsrc/menu/xonotic/serverlist.qc:764 +msgid "Hostname" +msgstr "Servidor" + +#: qcsrc/menu/xonotic/serverlist.qc:765 +msgid "Map" +msgstr "Mapa" + +#: qcsrc/menu/xonotic/serverlist.qc:766 +msgid "Type" +msgstr "Modo" + +#: qcsrc/menu/xonotic/serverlist.qc:1060 +#, c-format +msgid "AES level %d" +msgstr "Nível AES %d" + +#: qcsrc/menu/xonotic/serverlist.qc:1060 +msgid "ENC^none" +msgstr "nenhuma" + +#: qcsrc/menu/xonotic/serverlist.qc:1060 +msgid "encryption:" +msgstr "encriptação:" + +#: qcsrc/menu/xonotic/serverlist.qc:1061 +#, c-format +msgid "mod: %s" +msgstr "modificação: %s" + +#: qcsrc/menu/xonotic/serverlist.qc:1063 +#, c-format +msgid "modified settings" +msgstr "configurações modificadas" + +#: qcsrc/menu/xonotic/serverlist.qc:1063 +#, c-format +msgid "official settings" +msgstr "configurações oficiais" + +#: qcsrc/menu/xonotic/serverlist.qc:1065 +msgid "stats disabled" +msgstr "estatísticas desabilitadas" + +#: qcsrc/menu/xonotic/serverlist.qc:1065 +msgid "stats enabled" +msgstr "estatísticas habilitadas" + +#: qcsrc/menu/xonotic/serverlist.qh:151 +msgid "SLCAT^Favorites" +msgstr "Favoritos" + +#: qcsrc/menu/xonotic/serverlist.qh:152 +msgid "SLCAT^Recommended" +msgstr "Recomendados" + +#: qcsrc/menu/xonotic/serverlist.qh:153 +msgid "SLCAT^Normal Servers" +msgstr "Servidores Normais" + +#: qcsrc/menu/xonotic/serverlist.qh:154 +msgid "SLCAT^Servers" +msgstr "Servidores" + +#: qcsrc/menu/xonotic/serverlist.qh:155 +msgid "SLCAT^Competitive Mode" +msgstr "Modo Competitivo" + +#: qcsrc/menu/xonotic/serverlist.qh:156 +msgid "SLCAT^Modified Servers" +msgstr "Servidores Modificados" + +#: qcsrc/menu/xonotic/serverlist.qh:157 +msgid "SLCAT^Overkill" +msgstr "Overkill" + +#: qcsrc/menu/xonotic/serverlist.qh:158 +msgid "SLCAT^InstaGib" +msgstr "InstaGib" + +#: qcsrc/menu/xonotic/serverlist.qh:159 +msgid "SLCAT^Defrag Mode" +msgstr "Modo Defrag" + +#: qcsrc/menu/xonotic/skinlist.qc:70 +msgid "<TITLE>" +msgstr "<TÍTULO>" + +#: qcsrc/menu/xonotic/skinlist.qc:71 +msgid "<AUTHOR>" +msgstr "<AUTOR>" + +#: qcsrc/menu/xonotic/slider_decibels.qc:72 +msgid "VOL^MAX" +msgstr "MÁX" + +#: qcsrc/menu/xonotic/slider_decibels.qc:74 +msgid "VOL^OFF" +msgstr "DESLIGADO" + +#: qcsrc/menu/xonotic/slider_decibels.qc:82 +#, c-format +msgid "%s dB" +msgstr "%s dB" + +#: qcsrc/menu/xonotic/slider_particles.qc:13 +msgid "" +"Multiplier for amount of particles. Less means less particles, which in turn " +"gives for better performance (default: 1)" +msgstr "" +"Multiplicador para a quantidade de partículas. Menos significa menos " +"partículas, o que resulta em um melhor desempenho (padrão: 1)" + +#: qcsrc/menu/xonotic/slider_particles.qc:14 +msgid "PART^OMG" +msgstr "MEUDEUS" + +#: qcsrc/menu/xonotic/slider_particles.qc:15 +msgid "PART^Low" +msgstr "Baixa" + +#: qcsrc/menu/xonotic/slider_particles.qc:16 +msgid "PART^Medium" +msgstr "Média" + +#: qcsrc/menu/xonotic/slider_particles.qc:17 +#: qcsrc/menu/xonotic/slider_sbfadetime.qc:14 +msgid "PART^Normal" +msgstr "Normal" + +#: qcsrc/menu/xonotic/slider_particles.qc:18 +msgid "PART^High" +msgstr "Alta" + +#: qcsrc/menu/xonotic/slider_particles.qc:19 +msgid "PART^Ultra" +msgstr "Ultra" + +#: qcsrc/menu/xonotic/slider_particles.qc:20 +msgid "PART^Ultimate" +msgstr "Extrema" + +#: qcsrc/menu/xonotic/slider_picmip.qc:13 +msgid "" +"Change the sharpness of the textures. Lowering it will effectively reduce " +"texture memory usage, but make the textures appear very blurry. (default: " +"good)" +msgstr "" +"Altera a nitidez das texturas. Usar valores baixos irá efetivamente reduzir " +"a utilização de memória para as texturas, mas fará com que elas pareçam mais " +"desfocadas. (padrão: boa)" + +#: qcsrc/menu/xonotic/slider_resolution.qc:115 +msgid "Screen resolution" +msgstr "Resolução da tela" + +#: qcsrc/menu/xonotic/slider_sbfadetime.qc:13 +msgid "PART^Slow" +msgstr "Lento" + +#: qcsrc/menu/xonotic/slider_sbfadetime.qc:15 +msgid "PART^Fast" +msgstr "Rápido" + +#: qcsrc/menu/xonotic/slider_sbfadetime.qc:16 +msgid "PART^Instant" +msgstr "Instantâneo" + +#: qcsrc/menu/xonotic/statslist.qc:29 +msgid "January" +msgstr "Janeiro" + +#: qcsrc/menu/xonotic/statslist.qc:30 +msgid "February" +msgstr "Fevereiro" + +#: qcsrc/menu/xonotic/statslist.qc:31 +msgid "March" +msgstr "Março" + +#: qcsrc/menu/xonotic/statslist.qc:32 +msgid "April" +msgstr "Abril" + +#: qcsrc/menu/xonotic/statslist.qc:33 +msgid "May" +msgstr "Maio" + +#: qcsrc/menu/xonotic/statslist.qc:34 +msgid "June" +msgstr "Junho" + +#: qcsrc/menu/xonotic/statslist.qc:35 +msgid "July" +msgstr "Julho" + +#: qcsrc/menu/xonotic/statslist.qc:36 +msgid "August" +msgstr "Agosto" + +#: qcsrc/menu/xonotic/statslist.qc:37 +msgid "September" +msgstr "Setembro" + +#: qcsrc/menu/xonotic/statslist.qc:38 +msgid "October" +msgstr "Outubro" + +#: qcsrc/menu/xonotic/statslist.qc:39 +msgid "November" +msgstr "Novembro" + +#: qcsrc/menu/xonotic/statslist.qc:40 +msgid "December" +msgstr "Dezembro" + +#: qcsrc/menu/xonotic/statslist.qc:96 +msgid "Joined:" +msgstr "Juntou-se:" + +#: qcsrc/menu/xonotic/statslist.qc:103 +msgid "Last_Seen:" +msgstr "Última_Visita:" + +#: qcsrc/menu/xonotic/statslist.qc:110 +msgid "Time_Played:" +msgstr "Tempo_Jogado:" + +#: qcsrc/menu/xonotic/statslist.qc:117 +msgid "Favorite_Map:" +msgstr "Mapa_Favorito:" + +#: qcsrc/menu/xonotic/statslist.qc:201 qcsrc/menu/xonotic/statslist.qc:245 +#, c-format +msgid "%s_Matches:" +msgstr "%s_Partidas:" + +#: qcsrc/menu/xonotic/statslist.qc:208 +#, c-format +msgid "%s_ELO:" +msgstr "%s_ELO:" + +#: qcsrc/menu/xonotic/statslist.qc:215 +#, c-format +msgid "%s_Rank:" +msgstr "%s_Posição:" + +#: qcsrc/menu/xonotic/statslist.qc:222 +#, c-format +msgid "%s_Percentile:" +msgstr "%s_Percentil:" + +#: qcsrc/menu/xonotic/statslist.qc:231 +#, c-format +msgid "%s_Favorite_Map:" +msgstr "%s_Mapa_Favorito:" + +#: qcsrc/menu/xonotic/statslist.qc:246 +#, c-format +msgid "%d (unranked)" +msgstr "%d (não classificado)" + +#: qcsrc/menu/xonotic/util.qc:417 +#, c-format +msgid "" +"Update can be downloaded at:\n" +"%s\n" +msgstr "" +"A atualização pode ser baixada em:\n" +"%s\n" + +#: qcsrc/menu/xonotic/util.qc:528 +msgid "Autogenerating mapinfo for newly added maps..." +msgstr "Gerando mapinfo automaticamente para os novos mapas adicionados..." + +#: qcsrc/menu/xonotic/util.qc:557 +#, c-format +msgid "^1%s TEST BUILD" +msgstr "^1%s VERSÃO DE TESTE" + +#: qcsrc/menu/xonotic/util.qc:577 +#, c-format +msgid "Update to %s now!" +msgstr "Atualize para %s agora!" + +#: qcsrc/menu/xonotic/util.qc:662 +msgid "" +"^1ERROR: Texture compression is required but not supported.\n" +"^1Expect visual problems.\n" +msgstr "" +"^1ERRO: A compressão de texturas é necessária, mas não é suportada.\n" +"^1Espere problemas visuais.\n" +"\n" + +#: qcsrc/menu/xonotic/util.qc:780 +msgid "Use default" +msgstr "Usar padrão" + +#: qcsrc/menu/xonotic/util.qc:800 +msgid "Team Color:" +msgstr "Cor de Equipe:" + +#: qcsrc/menu/xonotic/util.qh:44 +msgid "Enable panel" +msgstr "Habilitar painel" + +#~ msgid "QMCMD^Chat" +#~ msgstr "Bate-papo" + +#~ msgid "^BG%s%s^K1 got too close ^BG%s^K1's rocket%s%s" +#~ msgstr "^BG%s%s^K1 chegou muito perto do foguete de ^BG%s^K1%s%s" diff --git a/common.uk.po b/common.uk.po index a57869003c..f164a92f21 100644 --- a/common.uk.po +++ b/common.uk.po @@ -20,8 +20,10 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != " +"11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % " +"100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || " +"(n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" #: qcsrc/client/hud/hud_config.qc:239 #, c-format diff --git a/common.zh_CN.po b/common.zh_CN.po index 0287246689..992ebdeaf8 100644 --- a/common.zh_CN.po +++ b/common.zh_CN.po @@ -8,13 +8,14 @@ # sapphireliu <balancedliu@gmail.com>, 2014 # kalawore <kalawore@outlook.com>, 2015 # sapphireliu <balancedliu@gmail.com>, 2014 +# 茂森 杜 <dumaosen_main01@outlook.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Xonotic\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-07-09 00:35+0200\n" -"PO-Revision-Date: 2017-09-19 23:30+0000\n" -"Last-Translator: divVerent <divVerent@xonotic.org>\n" +"PO-Revision-Date: 2018-05-29 22:44+0000\n" +"Last-Translator: 茂森 杜 <dumaosen_main01@outlook.com>\n" "Language-Team: Chinese (China) (http://www.transifex.com/team-xonotic/" "xonotic/language/zh_CN/)\n" "Language: zh_CN\n" @@ -180,7 +181,7 @@ msgstr "团队菜单" #: qcsrc/client/hud/panel/infomessages.qc:209 msgid "^1Spectating this player:" -msgstr "" +msgstr "^1观看这个玩家:" #: qcsrc/client/hud/panel/infomessages.qc:209 msgid "^1Spectating you:" @@ -356,7 +357,7 @@ msgstr "" #: qcsrc/client/hud/panel/quickmenu.qc:816 msgid "QMCMD^drop weapon, icon" -msgstr "" +msgstr "QMCMD^掉落武器, icon" #: qcsrc/client/hud/panel/quickmenu.qc:816 msgid "QMCMD^dropped weapon %w^7 (l:%l^7)" diff --git a/languages.txt b/languages.txt index 03be75cf77..b12ac43987 100644 --- a/languages.txt +++ b/languages.txt @@ -13,6 +13,7 @@ hu Hungarian "Magyar" 55% nl Dutch "Nederlands" 70% pl Polish "Polski" 81% pt Portuguese "Português" +pt_BR pt_BR "pt_BR" 99% ro Romanian "Romana" 83% fi Finnish "Suomi" 33% zh_TW "Chinese (Taiwan)" "國語" 68% diff --git a/mutators.cfg b/mutators.cfg index 32145dd04c..c997a807f4 100644 --- a/mutators.cfg +++ b/mutators.cfg @@ -276,7 +276,7 @@ set g_nades_entrap_radius 500 // Veil (9) set g_nades_veil_time 8 "Life time of the orb" -set g_nades_veil_radius 300 +set g_nades_veil_radius 200 // ============ diff --git a/physics.cfg b/physics.cfg index b74f68b3db..823e85bce3 100644 --- a/physics.cfg +++ b/physics.cfg @@ -7,7 +7,7 @@ // Main options // ============== set g_physics_clientselect 0 "allow clients to select their physics set" -set g_physics_clientselect_options "xonotic nexuiz quake warsow defrag quake3 vecxis quake2 bones" +set g_physics_clientselect_options "xonotic nexuiz quake warsow defrag quake3 vecxis quake2 bones overkill" set g_physics_clientselect_default "" "override default physics" // ========= diff --git a/qcsrc/client/bgmscript.qc b/qcsrc/client/bgmscript.qc index 2db9e54cf1..02739194a8 100644 --- a/qcsrc/client/bgmscript.qc +++ b/qcsrc/client/bgmscript.qc @@ -11,12 +11,12 @@ float bgmscriptbuf; float bgmscriptbufsize; float bgmscriptbufloaded; -class(BGMScript) .float bgmscriptline; -class(BGMScript) .float bgmscriptline0; -class(BGMScript) .float bgmscriptvolume; -class(BGMScript) .float bgmscripttime; -class(BGMScript) .float bgmscriptstate; -class(BGMScript) .float bgmscriptstatetime; +classfield(BGMScript) .float bgmscriptline; +classfield(BGMScript) .float bgmscriptline0; +classfield(BGMScript) .float bgmscriptvolume; +classfield(BGMScript) .float bgmscripttime; +classfield(BGMScript) .float bgmscriptstate; +classfield(BGMScript) .float bgmscriptstatetime; float GetAttackDecaySustainAmplitude(float a, float d, float s, float t) { @@ -139,8 +139,7 @@ void BGMScript_InitEntity(entity e) if(i >= bgmscriptbufsize) { LOG_INFOF("ERROR: bgmscript does not define %s", e.bgmscript); - strunzone(e.bgmscript); - e.bgmscript = string_null; + strfree(e.bgmscript); } } } diff --git a/qcsrc/client/bgmscript.qh b/qcsrc/client/bgmscript.qh index 18b0d5ee42..a3044d537c 100644 --- a/qcsrc/client/bgmscript.qh +++ b/qcsrc/client/bgmscript.qh @@ -1,13 +1,13 @@ #pragma once entityclass(BGMScript); -class(BGMScript) .string bgmscript; -class(BGMScript) .float bgmscriptattack; -class(BGMScript) .float bgmscriptdecay; -class(BGMScript) .float bgmscriptsustain; -class(BGMScript) .float bgmscriptrelease; +classfield(BGMScript) .string bgmscript; +classfield(BGMScript) .float bgmscriptattack; +classfield(BGMScript) .float bgmscriptdecay; +classfield(BGMScript) .float bgmscriptsustain; +classfield(BGMScript) .float bgmscriptrelease; -class(BGMScript) .float just_toggled; +classfield(BGMScript) .float just_toggled; #ifdef CSQC void BGMScript_InitEntity(entity e); diff --git a/qcsrc/client/commands/cl_cmd.qc b/qcsrc/client/commands/cl_cmd.qc index 8faf0f387b..8eea240d40 100644 --- a/qcsrc/client/commands/cl_cmd.qc +++ b/qcsrc/client/commands/cl_cmd.qc @@ -418,7 +418,7 @@ void LocalCommand_sendcvar(int request, int argc) if (argv(1)) { // W_FixWeaponOrder will trash argv, so save what we need. - string thiscvar = strzone(argv(1)); + string thiscvar = string_null; strcpy(thiscvar, argv(1)); string s = cvar_string(thiscvar); if (thiscvar == "cl_weaponpriority") @@ -427,7 +427,7 @@ void LocalCommand_sendcvar(int request, int argc) s = W_FixWeaponOrder(W_NumberWeaponOrder(s), 0); localcmd("cmd sentcvar ", thiscvar, " \"", s, "\"\n"); - strunzone(thiscvar); + strfree(thiscvar); return; } } diff --git a/qcsrc/client/hud/hud.qc b/qcsrc/client/hud/hud.qc index 9bcdd3d662..01799caccc 100644 --- a/qcsrc/client/hud/hud.qc +++ b/qcsrc/client/hud/hud.qc @@ -579,12 +579,8 @@ void HUD_Main() // Drawing stuff if (hud_skin_prev != autocvar_hud_skin) { - if (hud_skin_path) - strunzone(hud_skin_path); - hud_skin_path = strzone(strcat("gfx/hud/", autocvar_hud_skin)); - if (hud_skin_prev) - strunzone(hud_skin_prev); - hud_skin_prev = strzone(autocvar_hud_skin); + strcpy(hud_skin_path, strcat("gfx/hud/", autocvar_hud_skin)); + strcpy(hud_skin_prev, autocvar_hud_skin); } // draw the dock @@ -659,9 +655,7 @@ void HUD_Main() LOG_TRACE("Automatically fixed wrong/missing panel numbers in _hud_panelorder"); cvar_set("_hud_panelorder", s); - if(hud_panelorder_prev) - strunzone(hud_panelorder_prev); - hud_panelorder_prev = strzone(s); + strcpy(hud_panelorder_prev, s); //now properly set panel_order tokenize_console(s); diff --git a/qcsrc/client/hud/hud.qh b/qcsrc/client/hud/hud.qh index d070dce380..496d775efe 100644 --- a/qcsrc/client/hud/hud.qh +++ b/qcsrc/client/hud/hud.qh @@ -120,18 +120,18 @@ vector panel_size_copied; entity panel; entityclass(HUDPanel); -class(HUDPanel) .string panel_name; -class(HUDPanel) .int panel_id; -class(HUDPanel) .vector current_panel_pos; -class(HUDPanel) .vector current_panel_size; -class(HUDPanel) .string current_panel_bg; -class(HUDPanel) .float current_panel_bg_alpha; -class(HUDPanel) .float current_panel_bg_border; -class(HUDPanel) .vector current_panel_bg_color; -class(HUDPanel) .float current_panel_bg_color_team; -class(HUDPanel) .float current_panel_bg_padding; -class(HUDPanel) .float current_panel_fg_alpha; -class(HUDPanel) .float update_time; +classfield(HUDPanel) .string panel_name; +classfield(HUDPanel) .int panel_id; +classfield(HUDPanel) .vector current_panel_pos; +classfield(HUDPanel) .vector current_panel_size; +classfield(HUDPanel) .string current_panel_bg; +classfield(HUDPanel) .float current_panel_bg_alpha; +classfield(HUDPanel) .float current_panel_bg_border; +classfield(HUDPanel) .vector current_panel_bg_color; +classfield(HUDPanel) .float current_panel_bg_color_team; +classfield(HUDPanel) .float current_panel_bg_padding; +classfield(HUDPanel) .float current_panel_fg_alpha; +classfield(HUDPanel) .float update_time; float panel_enabled; vector panel_pos; vector panel_size; @@ -148,7 +148,7 @@ string panel_bg_border_str; float panel_bg_padding; string panel_bg_padding_str; -class(HUDPanel) .void() panel_draw; +classfield(HUDPanel) .void() panel_draw; // chat panel can be reduced / moved while the mapvote is active // let know the mapvote panel about chat pos and size @@ -264,9 +264,7 @@ REGISTER_HUD_PANEL(SCOREBOARD, Scoreboard_Draw, PANEL_CONFIG_NO } \ } \ } \ - if (panel.current_panel_bg) \ - strunzone(panel.current_panel_bg); \ - panel.current_panel_bg = strzone(panel_bg); \ + strcpy(panel.current_panel_bg, panel_bg); \ } MACRO_END // Get value for panel_bg_color: if "" fetch default, else use panel_bg_color. Convert pants, shirt or teamcolor into a vector. diff --git a/qcsrc/client/hud/hud_config.qc b/qcsrc/client/hud/hud_config.qc index ec07ee4095..3c93a6d64c 100644 --- a/qcsrc/client/hud/hud_config.qc +++ b/qcsrc/client/hud/hud_config.qc @@ -1029,9 +1029,7 @@ void HUD_Panel_FirstInDrawQ(float id) s = strcat(s, ftos(panel_order[i]), " "); } cvar_set("_hud_panelorder", s); - if(hud_panelorder_prev) - strunzone(hud_panelorder_prev); - hud_panelorder_prev = strzone(autocvar__hud_panelorder); // prevent HUD_Main from doing useless update, we already updated here + strcpy(hud_panelorder_prev, autocvar__hud_panelorder); // prevent HUD_Main from doing useless update, we already updated here } void HUD_Panel_Highlight(float allow_move) diff --git a/qcsrc/client/hud/panel/centerprint.qc b/qcsrc/client/hud/panel/centerprint.qc index a92bdc6923..f8f70c8189 100644 --- a/qcsrc/client/hud/panel/centerprint.qc +++ b/qcsrc/client/hud/panel/centerprint.qc @@ -75,9 +75,7 @@ void centerprint_generic(int new_id, string strMessage, float duration, int coun cpm_index = CENTERPRINT_MAX_MSGS - 1; j = cpm_index; } - if(centerprint_messages[j]) - strunzone(centerprint_messages[j]); - centerprint_messages[j] = strzone(strMessage); + strcpy(centerprint_messages[j], strMessage); centerprint_msgID[j] = new_id; if (duration < 0) { @@ -112,9 +110,7 @@ void reset_centerprint_messages() centerprint_expire_time[i] = 0; centerprint_time[i] = 1; centerprint_msgID[i] = 0; - if(centerprint_messages[i]) - strunzone(centerprint_messages[i]); - centerprint_messages[i] = string_null; + strfree(centerprint_messages[i]); } } float hud_configure_cp_generation_time; diff --git a/qcsrc/client/hud/panel/chat.qc b/qcsrc/client/hud/panel/chat.qc index 74d4b6d0f4..5f309d0b02 100644 --- a/qcsrc/client/hud/panel/chat.qc +++ b/qcsrc/client/hud/panel/chat.qc @@ -48,9 +48,7 @@ void HUD_Chat() panel_bg = strcat(hud_skin_path, "/border_default"); if(precache_pic(panel_bg) == "") panel_bg = "gfx/hud/default/border_default"; - if(panel.current_panel_bg) - strunzone(panel.current_panel_bg); - panel.current_panel_bg = strzone(panel_bg); + strcpy(panel.current_panel_bg, panel_bg); chat_panel_modified = true; } panel_bg_alpha = max(0.75, panel_bg_alpha); diff --git a/qcsrc/client/hud/panel/modicons.qc b/qcsrc/client/hud/panel/modicons.qc index 65682b3ec7..0bbcb41484 100644 --- a/qcsrc/client/hud/panel/modicons.qc +++ b/qcsrc/client/hud/panel/modicons.qc @@ -583,9 +583,7 @@ void HUD_Mod_Race(vector pos, vector mySize) if (race_status != race_status_prev || race_status_name != race_status_name_prev) { race_status_time = time + 5; race_status_prev = race_status; - if (race_status_name_prev) - strunzone(race_status_name_prev); - race_status_name_prev = strzone(race_status_name); + strcpy(race_status_name_prev, race_status_name); } // race "awards" @@ -621,12 +619,8 @@ void HUD_Mod_Race(vector pos, vector mySize) if (race_status_time - time <= 0) { race_status_prev = -1; race_status = -1; - if(race_status_name) - strunzone(race_status_name); - race_status_name = string_null; - if(race_status_name_prev) - strunzone(race_status_name_prev); - race_status_name_prev = string_null; + strfree(race_status_name); + strfree(race_status_name_prev); } } diff --git a/qcsrc/client/hud/panel/quickmenu.qc b/qcsrc/client/hud/panel/quickmenu.qc index ba3e5f0cb5..b84066b84f 100644 --- a/qcsrc/client/hud/panel/quickmenu.qc +++ b/qcsrc/client/hud/panel/quickmenu.qc @@ -45,23 +45,15 @@ void QuickMenu_Page_LoadEntry(int i, string s, string s1) { TC(int, i); //LOG_INFOF("^xc80 entry %d: %s, %s\n", i, s, s1); - if (QuickMenu_Page_Description[i]) - strunzone(QuickMenu_Page_Description[i]); - QuickMenu_Page_Description[i] = strzone(s); - if (QuickMenu_Page_Command[i]) - strunzone(QuickMenu_Page_Command[i]); - QuickMenu_Page_Command[i] = strzone(s1); + strcpy(QuickMenu_Page_Description[i], s); + strcpy(QuickMenu_Page_Command[i], s1); } void QuickMenu_Page_ClearEntry(int i) { TC(int, i); - if (QuickMenu_Page_Description[i]) - strunzone(QuickMenu_Page_Description[i]); - QuickMenu_Page_Description[i] = string_null; - if (QuickMenu_Page_Command[i]) - strunzone(QuickMenu_Page_Command[i]); - QuickMenu_Page_Command[i] = string_null; + strfree(QuickMenu_Page_Description[i]); + strfree(QuickMenu_Page_Command[i]); QuickMenu_Page_Command_Type[i] = 0; } @@ -197,9 +189,7 @@ void QuickMenu_Buffer_Close() void QuickMenu_Close() { - if (QuickMenu_CurrentSubMenu) - strunzone(QuickMenu_CurrentSubMenu); - QuickMenu_CurrentSubMenu = string_null; + strfree(QuickMenu_CurrentSubMenu); int i; for (i = 0; i < QUICKMENU_MAXLINES; ++i) QuickMenu_Page_ClearEntry(i); @@ -217,18 +207,17 @@ void QuickMenu_Close() // It assumes submenu open tag is already detected void QuickMenu_skip_submenu(string submenu) { - string s, z_submenu; - z_submenu = strzone(submenu); + string z_submenu = string_null; strcpy(z_submenu, submenu); for(++QuickMenu_Buffer_Index ; QuickMenu_Buffer_Index < QuickMenu_Buffer_Size; ++QuickMenu_Buffer_Index) { - s = QuickMenu_Buffer_Get(); + string s = QuickMenu_Buffer_Get(); if(substring(s, 0, 1) != QM_TAG_SUBMENU) continue; if(substring(s, 1, -1) == z_submenu) // submenu end break; QuickMenu_skip_submenu(substring(s, 1, -1)); } - strunzone(z_submenu); + strfree(z_submenu); } bool QuickMenu_IsOpened() @@ -273,9 +262,7 @@ bool QuickMenu_Page_Load(string target_submenu, bool new_page) ++QuickMenu_Page; z_submenu = strzone(target_submenu); - if (QuickMenu_CurrentSubMenu) - strunzone(QuickMenu_CurrentSubMenu); - QuickMenu_CurrentSubMenu = strzone(z_submenu); + strcpy(QuickMenu_CurrentSubMenu, z_submenu); QuickMenu_IsLastPage = true; QuickMenu_Page_Entries = 0; diff --git a/qcsrc/client/hud/panel/radar.qc b/qcsrc/client/hud/panel/radar.qc index b1cc222ccf..f0ec01c9e7 100644 --- a/qcsrc/client/hud/panel/radar.qc +++ b/qcsrc/client/hud/panel/radar.qc @@ -214,9 +214,7 @@ void HUD_Radar() panel_bg = "gfx/hud/default/border_default"; // fallback if(!radar_panel_modified && panel_bg != panel.current_panel_bg) radar_panel_modified = true; - if(panel.current_panel_bg) - strunzone(panel.current_panel_bg); - panel.current_panel_bg = strzone(panel_bg); + strcpy(panel.current_panel_bg, panel_bg); switch(hud_panel_radar_maximized_zoommode) { diff --git a/qcsrc/client/hud/panel/scoreboard.qc b/qcsrc/client/hud/panel/scoreboard.qc index 5e4a31f1e7..96d30aa52c 100644 --- a/qcsrc/client/hud/panel/scoreboard.qc +++ b/qcsrc/client/hud/panel/scoreboard.qc @@ -448,8 +448,7 @@ void Cmd_Scoreboard_SetFields(int argc) continue; } - strunzone(sbt_field_title[sbt_num_fields]); - sbt_field_title[sbt_num_fields] = strzone(TranslateScoresLabel(str)); + strcpy(sbt_field_title[sbt_num_fields], TranslateScoresLabel(str)); sbt_field_size[sbt_num_fields] = stringwidth(sbt_field_title[sbt_num_fields], false, hud_fontsize); str = strtolower(str); @@ -540,8 +539,7 @@ LABEL(found) } else if(!have_separator) { - strunzone(sbt_field_title[sbt_num_fields]); - sbt_field_title[sbt_num_fields] = strzone("|"); + strcpy(sbt_field_title[sbt_num_fields], "|"); sbt_field_size[sbt_num_fields] = stringwidth("|", false, hud_fontsize); sbt_field[sbt_num_fields] = SP_SEPARATOR; ++sbt_num_fields; @@ -549,8 +547,7 @@ LABEL(found) } if(!have_secondary) { - strunzone(sbt_field_title[sbt_num_fields]); - sbt_field_title[sbt_num_fields] = strzone(TranslateScoresLabel(scores_label(ps_secondary))); + strcpy(sbt_field_title[sbt_num_fields], TranslateScoresLabel(scores_label(ps_secondary))); sbt_field_size[sbt_num_fields] = stringwidth(sbt_field_title[sbt_num_fields], false, hud_fontsize); sbt_field[sbt_num_fields] = ps_secondary; ++sbt_num_fields; @@ -558,8 +555,7 @@ LABEL(found) } if(!have_primary) { - strunzone(sbt_field_title[sbt_num_fields]); - sbt_field_title[sbt_num_fields] = strzone(TranslateScoresLabel(scores_label(ps_primary))); + strcpy(sbt_field_title[sbt_num_fields], TranslateScoresLabel(scores_label(ps_primary))); sbt_field_size[sbt_num_fields] = stringwidth(sbt_field_title[sbt_num_fields], false, hud_fontsize); sbt_field[sbt_num_fields] = ps_primary; ++sbt_num_fields; @@ -1489,9 +1485,7 @@ void Scoreboard_Draw() { hud_fontsize = HUD_GetFontsize("hud_fontsize"); Scoreboard_initFieldSizes(); - if(hud_fontsize_str) - strunzone(hud_fontsize_str); - hud_fontsize_str = strzone(autocvar_hud_fontsize); + strcpy(hud_fontsize_str, autocvar_hud_fontsize); } } else { diff --git a/qcsrc/client/hud/panel/vote.qc b/qcsrc/client/hud/panel/vote.qc index 15e18e8f44..57b32039dc 100644 --- a/qcsrc/client/hud/panel/vote.qc +++ b/qcsrc/client/hud/panel/vote.qc @@ -27,9 +27,7 @@ void HUD_Vote() LOG_INFO(_("^1You must answer before entering hud configure mode")); cvar_set("_hud_configure", "0"); } - if(vote_called_vote) - strunzone(vote_called_vote); - vote_called_vote = strzone(_("^2Name ^7instead of \"^1Anonymous player^7\" in stats")); + strcpy(vote_called_vote, _("^2Name ^7instead of \"^1Anonymous player^7\" in stats")); uid2name_dialog = 1; } diff --git a/qcsrc/client/hud/panel/weapons.qc b/qcsrc/client/hud/panel/weapons.qc index 70c4c10131..4506f69a0c 100644 --- a/qcsrc/client/hud/panel/weapons.qc +++ b/qcsrc/client/hud/panel/weapons.qc @@ -94,13 +94,8 @@ void HUD_Weapons() if(weaponorder_bypriority != autocvar_cl_weaponpriority || !weaponorder[0]) { int weapon_cnt; - if(weaponorder_bypriority) - strunzone(weaponorder_bypriority); - if(weaponorder_byimpulse) - strunzone(weaponorder_byimpulse); - - weaponorder_bypriority = strzone(autocvar_cl_weaponpriority); - weaponorder_byimpulse = strzone(W_FixWeaponOrder_BuildImpulseList(W_FixWeaponOrder_ForceComplete(W_NumberWeaponOrder(weaponorder_bypriority)))); + strcpy(weaponorder_bypriority, autocvar_cl_weaponpriority); + strcpy(weaponorder_byimpulse, W_FixWeaponOrder_BuildImpulseList(W_FixWeaponOrder_ForceComplete(W_NumberWeaponOrder(weaponorder_bypriority)))); weaponorder_cmp_str = strcat(" ", weaponorder_byimpulse, " "); weapon_cnt = 0; diff --git a/qcsrc/client/main.qc b/qcsrc/client/main.qc index 9c146c09bd..37027d25cd 100644 --- a/qcsrc/client/main.qc +++ b/qcsrc/client/main.qc @@ -555,9 +555,7 @@ NET_HANDLE(ENT_CLIENT_NAGGER, bool isnew) if(!(nags & BIT(2))) { - if(vote_called_vote) - strunzone(vote_called_vote); - vote_called_vote = string_null; + strfree(vote_called_vote); vote_active = 0; } else @@ -575,9 +573,7 @@ NET_HANDLE(ENT_CLIENT_NAGGER, bool isnew) if(nags & BIT(7)) { - if(vote_called_vote) - strunzone(vote_called_vote); - vote_called_vote = strzone(ReadString()); + strcpy(vote_called_vote, ReadString()); } if(nags & 1) @@ -959,14 +955,12 @@ NET_HANDLE(ENT_CLIENT_SCORES_INFO, bool isnew) teamplay = _MapInfo_GetTeamPlayBool(gametype); HUD_ModIcons_SetFunc(); FOREACH(Scores, true, { - if (scores_label(it)) strunzone(scores_label(it)); - scores_label(it) = strzone(ReadString()); + strcpy(scores_label(it), ReadString()); scores_flags(it) = ReadByte(); }); for (int i = 0; i < MAX_TEAMSCORE; ++i) { - if (teamscores_label(i)) strunzone(teamscores_label(i)); - teamscores_label(i) = strzone(ReadString()); + strcpy(teamscores_label(i), ReadString()); teamscores_flags(i) = ReadByte(); } return = true; @@ -987,8 +981,7 @@ NET_HANDLE(ENT_CLIENT_INIT, bool isnew) arc_shotorigin[2] = decompressShotOrigin(ReadInt24_t()); arc_shotorigin[3] = decompressShotOrigin(ReadInt24_t()); - if (forcefog) strunzone(forcefog); - forcefog = strzone(ReadString()); + strcpy(forcefog, ReadString()); armorblockpercent = ReadByte() / 255.0; damagepush_speedfactor = ReadByte() / 255.0; @@ -1051,17 +1044,15 @@ NET_HANDLE(TE_CSQC_RACE, bool isNew) race_time = ReadInt24_t(); race_previousbesttime = ReadInt24_t(); race_mypreviousbesttime = ReadInt24_t(); - if(race_previousbestname) - strunzone(race_previousbestname); string pbestname = ReadString(); if(autocvar_cl_race_cptimes_onlyself) { race_previousbesttime = race_mypreviousbesttime; race_mypreviousbesttime = 0; - race_previousbestname = strzone(""); + strcpy(race_previousbestname, ""); } else - race_previousbestname = strzone(pbestname); + strcpy(race_previousbestname, pbestname); race_checkpointtime = time; @@ -1087,17 +1078,15 @@ NET_HANDLE(TE_CSQC_RACE, bool isNew) race_nextbesttime = ReadInt24_t(); if(b != RACE_NET_CHECKPOINT_NEXT_SPEC_QUALIFYING) // not while spectating (matches server) race_mybesttime = ReadInt24_t(); - if(race_nextbestname) - strunzone(race_nextbestname); string newname = ReadString(); if(autocvar_cl_race_cptimes_onlyself && b != RACE_NET_CHECKPOINT_NEXT_SPEC_QUALIFYING) { race_nextbesttime = race_mybesttime; race_mybesttime = 0; - race_nextbestname = strzone(""); + strcpy(race_nextbestname, ""); } else - race_nextbestname = strzone(newname); + strcpy(race_nextbestname, newname); break; case RACE_NET_CHECKPOINT_HIT_RACE: @@ -1107,13 +1096,11 @@ NET_HANDLE(TE_CSQC_RACE, bool isNew) race_mycheckpointlapsdelta = ReadByte(); if(race_mycheckpointlapsdelta >= 128) race_mycheckpointlapsdelta -= 256; - if(race_mycheckpointenemy) - strunzone(race_mycheckpointenemy); int who = ReadByte(); if(who) - race_mycheckpointenemy = strzone(entcs_GetName(who - 1)); + strcpy(race_mycheckpointenemy, entcs_GetName(who - 1)); else - race_mycheckpointenemy = strzone(""); // TODO: maybe string_null works fine here? + strcpy(race_mycheckpointenemy, ""); // TODO: maybe string_null works fine here? break; case RACE_NET_CHECKPOINT_HIT_RACE_BY_OPPONENT: @@ -1123,31 +1110,25 @@ NET_HANDLE(TE_CSQC_RACE, bool isNew) race_othercheckpointlapsdelta = ReadByte(); if(race_othercheckpointlapsdelta >= 128) race_othercheckpointlapsdelta -= 256; - if(race_othercheckpointenemy) - strunzone(race_othercheckpointenemy); int what = ReadByte(); if(what) - race_othercheckpointenemy = strzone(entcs_GetName(what - 1)); + strcpy(race_othercheckpointenemy, entcs_GetName(what - 1)); else - race_othercheckpointenemy = strzone(""); // TODO: maybe string_null works fine here? + strcpy(race_othercheckpointenemy, ""); // TODO: maybe string_null works fine here? break; case RACE_NET_PENALTY_RACE: race_penaltyeventtime = time; race_penaltytime = ReadShort(); //race_penaltyaccumulator += race_penaltytime; - if(race_penaltyreason) - strunzone(race_penaltyreason); - race_penaltyreason = strzone(ReadString()); + strcpy(race_penaltyreason, ReadString()); break; case RACE_NET_PENALTY_QUALIFYING: race_penaltyeventtime = time; race_penaltytime = ReadShort(); race_penaltyaccumulator += race_penaltytime; - if(race_penaltyreason) - strunzone(race_penaltyreason); - race_penaltyreason = strzone(ReadString()); + strcpy(race_penaltyreason, ReadString()); break; case RACE_NET_SERVER_RECORD: @@ -1155,21 +1136,13 @@ NET_HANDLE(TE_CSQC_RACE, bool isNew) break; case RACE_NET_SPEED_AWARD: race_speedaward = ReadInt24_t() * GetSpeedUnitFactor(autocvar_hud_panel_physics_speed_unit); - if(race_speedaward_holder) - strunzone(race_speedaward_holder); - race_speedaward_holder = strzone(ReadString()); - if(race_speedaward_unit) - strunzone(race_speedaward_unit); - race_speedaward_unit = strzone(GetSpeedUnit(autocvar_hud_panel_physics_speed_unit)); + strcpy(race_speedaward_holder, ReadString()); + strcpy(race_speedaward_unit, GetSpeedUnit(autocvar_hud_panel_physics_speed_unit)); break; case RACE_NET_SPEED_AWARD_BEST: race_speedaward_alltimebest = ReadInt24_t() * GetSpeedUnitFactor(autocvar_hud_panel_physics_speed_unit); - if(race_speedaward_alltimebest_holder) - strunzone(race_speedaward_alltimebest_holder); - race_speedaward_alltimebest_holder = strzone(ReadString()); - if(race_speedaward_alltimebest_unit) - strunzone(race_speedaward_alltimebest_unit); - race_speedaward_alltimebest_unit = strzone(GetSpeedUnit(autocvar_hud_panel_physics_speed_unit)); + strcpy(race_speedaward_alltimebest_holder, ReadString()); + strcpy(race_speedaward_alltimebest_unit, GetSpeedUnit(autocvar_hud_panel_physics_speed_unit)); break; case RACE_NET_SERVER_RANKINGS: float prevpos, del; @@ -1182,47 +1155,35 @@ NET_HANDLE(TE_CSQC_RACE, bool isNew) if (prevpos) { for (i=prevpos-1;i>pos-1;--i) { grecordtime[i] = grecordtime[i-1]; - if(grecordholder[i]) - strunzone(grecordholder[i]); - grecordholder[i] = strzone(grecordholder[i-1]); + strcpy(grecordholder[i], grecordholder[i-1]); } } else if (del) { // a record has been deleted by the admin for (i=pos-1; i<= RANKINGS_CNT-1; ++i) { if (i == RANKINGS_CNT-1) { // clear out last record grecordtime[i] = 0; - if (grecordholder[i]) - strunzone(grecordholder[i]); - grecordholder[i] = string_null; + strfree(grecordholder[i]); } else { grecordtime[i] = grecordtime[i+1]; - if (grecordholder[i]) - strunzone(grecordholder[i]); - grecordholder[i] = strzone(grecordholder[i+1]); + strcpy(grecordholder[i], grecordholder[i+1]); } } } else { // player has no ranked record yet for (i=RANKINGS_CNT-1;i>pos-1;--i) { grecordtime[i] = grecordtime[i-1]; - if(grecordholder[i]) - strunzone(grecordholder[i]); - grecordholder[i] = strzone(grecordholder[i-1]); + strcpy(grecordholder[i], grecordholder[i-1]); } } // store new ranking - if(grecordholder[pos-1] != "") - strunzone(grecordholder[pos-1]); - grecordholder[pos-1] = strzone(ReadString()); + strcpy(grecordholder[pos-1], ReadString()); grecordtime[pos-1] = ReadInt24_t(); if(strdecolorize(grecordholder[pos-1]) == strdecolorize(entcs_GetName(player_localnum))) race_myrank = pos; break; case RACE_NET_SERVER_STATUS: race_status = ReadShort(); - if(race_status_name) - strunzone(race_status_name); - race_status_name = strzone(ReadString()); + strcpy(race_status_name, ReadString()); } return true; } diff --git a/qcsrc/client/miscfunctions.qc b/qcsrc/client/miscfunctions.qc index fd1647ddcc..01409280a4 100644 --- a/qcsrc/client/miscfunctions.qc +++ b/qcsrc/client/miscfunctions.qc @@ -577,9 +577,7 @@ void Accuracy_LoadLevels() { if(autocvar_accuracy_color_levels != acc_color_levels) { - if(acc_color_levels) - strunzone(acc_color_levels); - acc_color_levels = strzone(autocvar_accuracy_color_levels); + strcpy(acc_color_levels, autocvar_accuracy_color_levels); acc_levels = tokenize_console(acc_color_levels); if(acc_levels > MAX_ACCURACY_LEVELS) acc_levels = MAX_ACCURACY_LEVELS; diff --git a/qcsrc/client/mutators/events.qh b/qcsrc/client/mutators/events.qh index 5edb84ae0e..cc6fced9b8 100644 --- a/qcsrc/client/mutators/events.qh +++ b/qcsrc/client/mutators/events.qh @@ -3,7 +3,7 @@ #include <common/mutators/base.qh> // register all possible hooks here - + // to use a hook, first register your mutator using REGISTER_MUTATOR // then create your function using MUTATOR_HOOKFUNCTION diff --git a/qcsrc/client/player_skeleton.qc b/qcsrc/client/player_skeleton.qc index 55e54d8ac2..220b9c6127 100644 --- a/qcsrc/client/player_skeleton.qc +++ b/qcsrc/client/player_skeleton.qc @@ -8,13 +8,13 @@ .float v_angle_save_x; -class(Skeleton) .float skeleton_info_modelindex; -class(Skeleton) .float skeleton_info_skin; +classfield(Skeleton) .float skeleton_info_modelindex; +classfield(Skeleton) .float skeleton_info_skin; const int BONETYPE_LOWER = 0; const int BONETYPE_UPPER = 1; const int MAX_BONES = 128; -class(Skeleton) .float skeleton_bonetype[MAX_BONES]; -class(Skeleton) .float skeleton_numbones; +classfield(Skeleton) .float skeleton_bonetype[MAX_BONES]; +classfield(Skeleton) .float skeleton_numbones; void skeleton_loadinfo(entity e) { diff --git a/qcsrc/client/player_skeleton.qh b/qcsrc/client/player_skeleton.qh index 8c5969b09f..082335e4b0 100644 --- a/qcsrc/client/player_skeleton.qh +++ b/qcsrc/client/player_skeleton.qh @@ -7,8 +7,8 @@ void skeleton_from_frames(entity e, float is_dead); void skeleton_loadinfo(entity e); entityclass(Skeleton); -class(Skeleton) .float bone_upperbody; -class(Skeleton) .int bone_weapon; -class(Skeleton) .float bone_aim[MAX_AIM_BONES]; -class(Skeleton) .float bone_aimweight[MAX_AIM_BONES]; -class(Skeleton) .float fixbone; +classfield(Skeleton) .float bone_upperbody; +classfield(Skeleton) .int bone_weapon; +classfield(Skeleton) .float bone_aim[MAX_AIM_BONES]; +classfield(Skeleton) .float bone_aimweight[MAX_AIM_BONES]; +classfield(Skeleton) .float fixbone; diff --git a/qcsrc/client/shownames.qh b/qcsrc/client/shownames.qh index 24f6568d26..a05ca701d0 100644 --- a/qcsrc/client/shownames.qh +++ b/qcsrc/client/shownames.qh @@ -1,10 +1,10 @@ #pragma once entityclass(ShowNames); -class(ShowNames) .float healthvalue; -class(ShowNames) .float armorvalue; -class(ShowNames) .float sameteam; -class(ShowNames) .float fadedelay; -class(ShowNames) .float pointtime; +classfield(ShowNames) .float healthvalue; +classfield(ShowNames) .float armorvalue; +classfield(ShowNames) .float sameteam; +classfield(ShowNames) .float fadedelay; +classfield(ShowNames) .float pointtime; void Draw_ShowNames_All(); diff --git a/qcsrc/client/teamradar.qh b/qcsrc/client/teamradar.qh index 251c1a53f1..41c7d46c56 100644 --- a/qcsrc/client/teamradar.qh +++ b/qcsrc/client/teamradar.qh @@ -4,10 +4,10 @@ const int MAX_TEAMRADAR_TIMES = 32; entityclass(TeamRadar); // to make entities have dots on the team radar -class(TeamRadar) .float teamradar_icon; -class(TeamRadar) .float teamradar_times[MAX_TEAMRADAR_TIMES]; -class(TeamRadar) .int teamradar_time_index; -class(TeamRadar) .vector teamradar_color; +classfield(TeamRadar) .float teamradar_icon; +classfield(TeamRadar) .float teamradar_times[MAX_TEAMRADAR_TIMES]; +classfield(TeamRadar) .int teamradar_time_index; +classfield(TeamRadar) .vector teamradar_color; float teamradar_angle; // player yaw angle vector teamradar_origin3d_in_texcoord; // player origin diff --git a/qcsrc/client/view.qc b/qcsrc/client/view.qc index dd184bee9b..42a8820e76 100644 --- a/qcsrc/client/view.qc +++ b/qcsrc/client/view.qc @@ -1375,12 +1375,8 @@ void HUD_Crosshair(entity this) wcross_scale_goal_prev = 0; wcross_alpha_goal_prev = 0; wcross_changedonetime = 0; - if(wcross_name_goal_prev) - strunzone(wcross_name_goal_prev); - wcross_name_goal_prev = string_null; - if(wcross_name_goal_prev_prev) - strunzone(wcross_name_goal_prev_prev); - wcross_name_goal_prev_prev = string_null; + strfree(wcross_name_goal_prev); + strfree(wcross_name_goal_prev_prev); wcross_name_changestarttime = 0; wcross_name_changedonetime = 0; wcross_name_alpha_goal_prev = 0; diff --git a/qcsrc/client/wall.qc b/qcsrc/client/wall.qc index b572809548..600bf5fa8f 100644 --- a/qcsrc/client/wall.qc +++ b/qcsrc/client/wall.qc @@ -111,9 +111,7 @@ void Ent_Wall_Draw(entity this) void Ent_Wall_Remove(entity this) { - if(this.bgmscript) - strunzone(this.bgmscript); - this.bgmscript = string_null; + strfree(this.bgmscript); } NET_HANDLE(ENT_CLIENT_WALL, bool isnew) @@ -186,17 +184,15 @@ NET_HANDLE(ENT_CLIENT_WALL, bool isnew) this.mins = this.maxs = '0 0 0'; setsize(this, this.mins, this.maxs); - if(this.bgmscript) - strunzone(this.bgmscript); - this.bgmscript = ReadString(); - if(substring(this.bgmscript, 0, 1) == "<") + string s = ReadString(); + if(substring(s, 0, 1) == "<") { - this.bgmscript = strzone(substring(this.bgmscript, 1, -1)); + strcpy(this.bgmscript, substring(s, 1, -1)); this.bgmscriptangular = 1; } else { - this.bgmscript = strzone(this.bgmscript); + strcpy(this.bgmscript, s); this.bgmscriptangular = 0; } if(this.bgmscript != "") diff --git a/qcsrc/client/wall.qh b/qcsrc/client/wall.qh index 11aebd0ed5..e55bc489b3 100644 --- a/qcsrc/client/wall.qh +++ b/qcsrc/client/wall.qh @@ -1,11 +1,11 @@ #pragma once entityclass(Wall); -class(Wall) .float lip; -class(Wall) .float bgmscriptangular; -class(Wall) .int lodmodelindex0, lodmodelindex1, lodmodelindex2; -class(Wall) .float loddistance1, loddistance2; -class(Wall) .vector saved; +classfield(Wall) .float lip; +classfield(Wall) .float bgmscriptangular; +classfield(Wall) .int lodmodelindex0, lodmodelindex1, lodmodelindex2; +classfield(Wall) .float loddistance1, loddistance2; +classfield(Wall) .vector saved; // Needed for interactive clientwalls .float inactive; // Clientwall disappears when inactive diff --git a/qcsrc/client/weapons/projectile.qh b/qcsrc/client/weapons/projectile.qh index a6ae463477..eaa80d05f0 100644 --- a/qcsrc/client/weapons/projectile.qh +++ b/qcsrc/client/weapons/projectile.qh @@ -3,20 +3,20 @@ #include <common/sounds/sound.qh> entityclass(Projectile); -class(Projectile).int traileffect; - -class(Projectile).vector iorigin1, iorigin2; -class(Projectile).float spawntime; -class(Projectile).vector trail_oldorigin; -class(Projectile).float trail_oldtime; -class(Projectile).float fade_time, fade_rate; - -class(Projectile).float alphamod; -class(Projectile).int count; // set if clientside projectile -class(Projectile).int cnt; // sound index -class(Projectile).float gravity; -class(Projectile).int snd_looping; -class(Projectile).bool silent; +classfield(Projectile).int traileffect; + +classfield(Projectile).vector iorigin1, iorigin2; +classfield(Projectile).float spawntime; +classfield(Projectile).vector trail_oldorigin; +classfield(Projectile).float trail_oldtime; +classfield(Projectile).float fade_time, fade_rate; + +classfield(Projectile).float alphamod; +classfield(Projectile).int count; // set if clientside projectile +classfield(Projectile).int cnt; // sound index +classfield(Projectile).float gravity; +classfield(Projectile).int snd_looping; +classfield(Projectile).bool silent; void SUB_Stop(entity this, entity toucher); diff --git a/qcsrc/common/campaign_file.qc b/qcsrc/common/campaign_file.qc index d3efe77e84..bc26203399 100644 --- a/qcsrc/common/campaign_file.qc +++ b/qcsrc/common/campaign_file.qc @@ -88,16 +88,15 @@ void CampaignFile_Unload() { if(campaign_title) { - strunzone(campaign_title); + strfree(campaign_title); for(int i = 0; i < campaign_entries; ++i) { - strunzone(campaign_gametype[i]); - strunzone(campaign_mapname[i]); - strunzone(campaign_mutators[i]); - strunzone(campaign_shortdesc[i]); - strunzone(campaign_longdesc[i]); + strfree(campaign_gametype[i]); + strfree(campaign_mapname[i]); + strfree(campaign_mutators[i]); + strfree(campaign_shortdesc[i]); + strfree(campaign_longdesc[i]); } campaign_entries = 0; - campaign_title = string_null; } } diff --git a/qcsrc/common/debug.qh b/qcsrc/common/debug.qh index 936f1e0288..983b073b40 100644 --- a/qcsrc/common/debug.qh +++ b/qcsrc/common/debug.qh @@ -411,7 +411,7 @@ CLASS(DebugText3d, Object) } DESTRUCTOR(DebugText3d) { - strunzone(this.message); + strfree(this.message); } void DebugText3d_draw2d(DebugText3d this) { diff --git a/qcsrc/common/effects/effectinfo.qc b/qcsrc/common/effects/effectinfo.qc index 71260eb3d0..a1b2787305 100644 --- a/qcsrc/common/effects/effectinfo.qc +++ b/qcsrc/common/effects/effectinfo.qc @@ -327,7 +327,7 @@ REGISTRY(EffectInfos, BITS(9)) #define EffectInfos_from(i) _EffectInfos_from(i, NULL) REGISTER_REGISTRY(EffectInfos) #define EFFECTINFO(name) \ - [[accumulate]] void effectinfo_##name(EffectInfoGroup parent, EffectInfo this) { } \ + ACCUMULATE void effectinfo_##name(EffectInfoGroup parent, EffectInfo this) { } \ REGISTER(EffectInfos, EFFECTINFO, name, m_id, NEW(EffectInfoGroup)) { \ effectinfo_##name(this, NULL); \ } @@ -335,8 +335,8 @@ REGISTER_REGISTRY(EffectInfos) #define MY(f) this.effectinfo_##f #define DEF(name) EFFECTINFO(name) #define SUB(name) \ - [[accumulate]] void effectinfo_##name(EffectInfoGroup parent, EffectInfo this) { parent = EFFECTINFO_##name; parent.children[parent.children_count++] = this = NEW(EffectInfo, #name); } \ - [[accumulate]] void effectinfo_##name(EffectInfoGroup parent, EffectInfo this) + ACCUMULATE void effectinfo_##name(EffectInfoGroup parent, EffectInfo this) { parent = EFFECTINFO_##name; parent.children[parent.children_count++] = this = NEW(EffectInfo, #name); } \ + ACCUMULATE void effectinfo_##name(EffectInfoGroup parent, EffectInfo this) #include "effectinfo.inc" #undef MY #undef DEF diff --git a/qcsrc/common/effects/qc/casings.qc b/qcsrc/common/effects/qc/casings.qc index 2abf2122c2..d225b337bc 100644 --- a/qcsrc/common/effects/qc/casings.qc +++ b/qcsrc/common/effects/qc/casings.qc @@ -30,10 +30,10 @@ void SpawnCasing(vector vel, float randomvel, vector ang, vector avel, float ran #ifdef CSQC entityclass(Casing); -class(Casing) .float alpha; -class(Casing) .bool silent; -class(Casing) .int state; -class(Casing) .float cnt; +classfield(Casing) .float alpha; +classfield(Casing) .bool silent; +classfield(Casing) .int state; +classfield(Casing) .float cnt; void Casing_Delete(entity this) { diff --git a/qcsrc/common/effects/qc/globalsound.qc b/qcsrc/common/effects/qc/globalsound.qc index 4875a40ee9..8c0dfd5080 100644 --- a/qcsrc/common/effects/qc/globalsound.qc +++ b/qcsrc/common/effects/qc/globalsound.qc @@ -237,8 +237,7 @@ .string fld = it.m_playersoundfld; if (this.(fld)) { - strunzone(this.(fld)); - this.(fld) = string_null; + strfree(this.(fld)); } }); } @@ -269,8 +268,7 @@ } string file = argv(1); string variants = argv(2); - if (this.(field)) strunzone(this.(field)); - this.(field) = strzone(strcat(file, " ", variants)); + strcpy(this.(field), strcat(file, " ", variants)); } fclose(fh); return true; @@ -284,8 +282,7 @@ void UpdatePlayerSounds(entity this) { if (this.model == this.model_for_playersound && this.skin == this.skin_for_playersound) return; - if (this.model_for_playersound) strunzone(this.model_for_playersound); - this.model_for_playersound = strzone(this.model); + strcpy(this.model_for_playersound, this.model); this.skin_for_playersound = this.skin; ClearPlayerSounds(this); LoadPlayerSounds(this, "sound/player/default.sounds", true); diff --git a/qcsrc/common/effects/qc/modeleffects.qc b/qcsrc/common/effects/qc/modeleffects.qc index 26b3ec9f52..9849b5be73 100644 --- a/qcsrc/common/effects/qc/modeleffects.qc +++ b/qcsrc/common/effects/qc/modeleffects.qc @@ -80,10 +80,10 @@ void modeleffect_spawn(string m, float s, float f, vector o, vector v, vector an #ifdef CSQC entityclass(ModelEffect); -class(ModelEffect) .float frame1time; -class(ModelEffect) .float lifetime, fadetime; -class(ModelEffect) .float teleport_time; -class(ModelEffect) .float scale1, scale2; +classfield(ModelEffect) .float frame1time; +classfield(ModelEffect) .float lifetime, fadetime; +classfield(ModelEffect) .float teleport_time; +classfield(ModelEffect) .float scale1, scale2; .float cnt; .float scale; diff --git a/qcsrc/common/effects/qc/rubble.qh b/qcsrc/common/effects/qc/rubble.qh index dd3785b68e..6eda9b15ef 100644 --- a/qcsrc/common/effects/qc/rubble.qh +++ b/qcsrc/common/effects/qc/rubble.qh @@ -3,7 +3,7 @@ #ifdef CSQC entityclass(Rubble); -class(Rubble).float creationtime; +classfield(Rubble).float creationtime; IntrusiveList g_rubble; STATIC_INIT(g_rubble) { g_rubble = IL_NEW(); } diff --git a/qcsrc/common/ent_cs.qc b/qcsrc/common/ent_cs.qc index 12abc21b18..0eeddc349b 100644 --- a/qcsrc/common/ent_cs.qc +++ b/qcsrc/common/ent_cs.qc @@ -39,8 +39,7 @@ MACRO_END /** the engine player name strings are mutable! */ #define ENTCS_SET_MUTABLE_STRING(var, x) MACRO_BEGIN \ - if (var) strunzone(var); \ - var = strzone(x); \ + strcpy(var, x); \ MACRO_END ENTCS_PROP(ENTNUM, false, sv_entnum, ENTCS_SET_NORMAL, {}, {}) /* sentinel */ @@ -63,11 +62,11 @@ ENTCS_PROP(ARMOR, false, armorvalue, ENTCS_SET_NORMAL, ENTCS_PROP(NAME, true, netname, ENTCS_SET_MUTABLE_STRING, { WriteString(chan, ent.netname); }, - { if (ent.netname) strunzone(ent.netname); ent.netname = strzone(ReadString()); }) + { strcpy(ent.netname, ReadString()); }) ENTCS_PROP(MODEL, true, model, ENTCS_SET_NORMAL, { WriteString(chan, ent.model); }, - { if (ent.model) strunzone(ent.model); ent.model = strzone(ReadString()); }) + { strcpy(ent.model, ReadString()); }) ENTCS_PROP(SKIN, true, skin, ENTCS_SET_NORMAL, { WriteByte(chan, ent.skin); }, @@ -168,10 +167,8 @@ ENTCS_PROP(FRAGS, true, frags, ENTCS_SET_NORMAL, int n = this.sv_entnum; entity e = entcs_receiver(n); entcs_receiver(n, NULL); - if (e.netname) strunzone(e.netname); - e.netname = string_null; - if (e.model) strunzone(e.model); - e.model = string_null; + strfree(e.netname); + strfree(e.model); if (e != this) delete(e); } @@ -188,8 +185,7 @@ ENTCS_PROP(FRAGS, true, frags, ENTCS_SET_NORMAL, // `cl_forceplayermodels 1` sounds will be wrong until the player has been in the PVS, but so be it if (this.model != e.model) { - if (this.model) strunzone(this.model); - this.model = strzone(e.model); + strcpy(this.model, e.model); } } diff --git a/qcsrc/common/minigames/minigame/bd.qc b/qcsrc/common/minigames/minigame/bd.qc index 4790f1f1f7..b4195c0577 100644 --- a/qcsrc/common/minigames/minigame/bd.qc +++ b/qcsrc/common/minigames/minigame/bd.qc @@ -309,8 +309,7 @@ bool bd_move_dozer(entity minigame, entity dozer) case BD_TILE_BRICK1: return false; } - if(hit.netname) { strunzone(hit.netname); } - hit.netname = strzone(testpos); + strcpy(hit.netname, testpos); minigame_server_sendflags(hit,MINIG_SF_UPDATE); break; } @@ -330,8 +329,7 @@ bool bd_move_dozer(entity minigame, entity dozer) case BD_TILE_BRICK1: return false; } - if(dozer.netname) { strunzone(dozer.netname); } - dozer.netname = strzone(newpos); + strcpy(dozer.netname, newpos); return true; } @@ -422,7 +420,7 @@ void bd_editor_place(entity minigame, entity player, string pos, int thetile, st if(!piece) return; // how?! - if(piece.netname) { strunzone(piece.netname); } + strfree(piece.netname); delete(piece); minigame_server_sendflags(minigame,MINIG_SF_UPDATE); return; @@ -488,12 +486,12 @@ void bd_unfill_recurse(entity minigame, entity player, int thetype, int letter, if(targ && thetype == targ.bd_tiletype) { - if(targ.netname) { strunzone(targ.netname); } + strfree(targ.netname); delete(targ); } else if(piece && thetype == piece.bd_tiletype) { - if(piece.netname) { strunzone(piece.netname); } + strfree(piece.netname); delete(piece); } else return; @@ -568,7 +566,7 @@ void bd_setup_pieces(entity minigame) while( (e = findentity(e, owner, minigame)) ) if(e.classname == "minigame_board_piece") { - if(e.netname) { strunzone(e.netname); } + strfree(e.netname); delete(e); } e = NULL; @@ -598,8 +596,7 @@ void bd_do_next_match(entity minigame, entity player) if(minigame.bd_nextlevel && minigame.bd_nextlevel != "") { - if(minigame.bd_levelname) { strunzone(minigame.bd_levelname); } - minigame.bd_levelname = strzone(minigame.bd_nextlevel); + strcpy(minigame.bd_levelname, minigame.bd_nextlevel); } bd_setup_pieces(minigame); @@ -609,8 +606,7 @@ void bd_do_next_match(entity minigame, entity player) void bd_set_next_match(entity minigame, string next) { - if(minigame.bd_nextlevel) { strunzone(minigame.bd_nextlevel); } - minigame.bd_nextlevel = strzone(next); + strcpy(minigame.bd_nextlevel, next); } void bd_next_match(entity minigame, entity player, string next) @@ -678,8 +674,7 @@ void bd_set_nextlevel(entity minigame, string s) { tokenize_console(s); - if(minigame.bd_nextlevel) { strunzone(minigame.bd_nextlevel); } - minigame.bd_nextlevel = strzone(argv(2)); + strcpy(minigame.bd_nextlevel, argv(2)); } int bd_fix_dir(vector dir) @@ -854,8 +849,7 @@ int bd_server_event(entity minigame, string event, ...) { case "start": { - if(minigame.bd_levelname) { strunzone(minigame.bd_levelname); } - minigame.bd_levelname = strzone(autocvar_sv_minigames_bulldozer_startlevel); + strcpy(minigame.bd_levelname, autocvar_sv_minigames_bulldozer_startlevel); bd_setup_pieces(minigame); minigame.minigame_flags = BD_TURN_MOVE; @@ -867,7 +861,7 @@ int bd_server_event(entity minigame, string event, ...) while( (e = findentity(e, owner, minigame)) ) if(e.classname == "minigame_board_piece") { - if(e.netname) { strunzone(e.netname); } + strfree(e.netname); delete(e); } e = NULL; @@ -877,8 +871,8 @@ int bd_server_event(entity minigame, string event, ...) delete(e); } - if(minigame.bd_nextlevel) { strunzone(minigame.bd_nextlevel); } - if(minigame.bd_levelname) { strunzone(minigame.bd_levelname); } + strfree(minigame.bd_nextlevel); + strfree(minigame.bd_levelname); return false; } case "join": @@ -1209,8 +1203,7 @@ void bd_editor_fill(entity minigame) void bd_set_curr_pos(string s) { - if ( bd_curr_pos ) - strunzone(bd_curr_pos); + strfree(bd_curr_pos); if ( s ) s = strzone(s); bd_curr_pos = s; @@ -1386,8 +1379,7 @@ int bd_client_event(entity minigame, string event, ...) { int letter = ReadByte(); int number = ReadByte(); - if(sent.netname) { strunzone(sent.netname); } - sent.netname = strzone(minigame_tile_buildname(letter, number)); + strcpy(sent.netname, minigame_tile_buildname(letter, number)); sent.bd_tiletype = ReadByte(); diff --git a/qcsrc/common/minigames/minigame/c4.qc b/qcsrc/common/minigames/minigame/c4.qc index b3f5885c22..c8f8184f5b 100644 --- a/qcsrc/common/minigames/minigame/c4.qc +++ b/qcsrc/common/minigames/minigame/c4.qc @@ -201,7 +201,7 @@ int c4_server_event(entity minigame, string event, ...) while( (e = findentity(e, owner, minigame)) ) if(e.classname == "minigame_board_piece") { - if(e.netname) { strunzone(e.netname); } + strfree(e.netname); delete(e); } return false; @@ -399,8 +399,7 @@ void c4_make_move(entity minigame) void c4_set_curr_pos(string s) { - if ( c4_curr_pos ) - strunzone(c4_curr_pos); + strfree(c4_curr_pos); if ( s ) s = strzone(s); c4_curr_pos = s; diff --git a/qcsrc/common/minigames/minigame/nmm.qc b/qcsrc/common/minigames/minigame/nmm.qc index 82e09c324a..65ac9dee01 100644 --- a/qcsrc/common/minigames/minigame/nmm.qc +++ b/qcsrc/common/minigames/minigame/nmm.qc @@ -126,9 +126,9 @@ void nmm_kill_tiles(entity minig) while ( ( e = findentity(e,owner,minig) ) ) if ( e.classname == "minigame_nmm_tile" ) { - strunzone(e.netname); - strunzone(e.nmm_tile_hmill); - strunzone(e.nmm_tile_vmill); + strfree(e.netname); + strfree(e.nmm_tile_hmill); + strfree(e.nmm_tile_vmill); delete(e); } } diff --git a/qcsrc/common/minigames/minigame/pp.qc b/qcsrc/common/minigames/minigame/pp.qc index 40ddcca08b..0b1d74344e 100644 --- a/qcsrc/common/minigames/minigame/pp.qc +++ b/qcsrc/common/minigames/minigame/pp.qc @@ -121,7 +121,7 @@ void pp_move(entity minigame, entity player, string pos ) if(existing) { - if(existing.netname) { strunzone(existing.netname); } + strfree(existing.netname); delete(existing); } @@ -215,7 +215,7 @@ int pp_server_event(entity minigame, string event, ...) while( (e = findentity(e, owner, minigame)) ) if(e.classname == "minigame_board_piece") { - if(e.netname) { strunzone(e.netname); } + strfree(e.netname); delete(e); } return false; @@ -471,8 +471,7 @@ void pp_make_move(entity minigame) void pp_set_curr_pos(string s) { - if ( pp_curr_pos ) - strunzone(pp_curr_pos); + strfree(pp_curr_pos); if ( s ) s = strzone(s); pp_curr_pos = s; diff --git a/qcsrc/common/minigames/minigame/ps.qc b/qcsrc/common/minigames/minigame/ps.qc index cd5c001e7a..c8851f2ac4 100644 --- a/qcsrc/common/minigames/minigame/ps.qc +++ b/qcsrc/common/minigames/minigame/ps.qc @@ -139,11 +139,10 @@ bool ps_move_piece(entity minigame, entity piece, string pos, int leti, int numb if(!middle) return false; - if(middle.netname) { strunzone(middle.netname); } + strfree(middle.netname); delete(middle); - if(piece.netname) { strunzone(piece.netname); } - piece.netname = strzone(pos); + strcpy(piece.netname, pos); minigame_server_sendflags(piece,MINIG_SF_ALL); @@ -232,7 +231,7 @@ int ps_server_event(entity minigame, string event, ...) while( (e = findentity(e, owner, minigame)) ) if(e.classname == "minigame_board_piece") { - if(e.netname) { strunzone(e.netname); } + strfree(e.netname); delete(e); } return false; @@ -514,8 +513,7 @@ void ps_make_move(entity minigame) void ps_set_curr_pos(string s) { - if ( ps_curr_pos ) - strunzone(ps_curr_pos); + strfree(ps_curr_pos); if ( s ) s = strzone(s); ps_curr_pos = s; diff --git a/qcsrc/common/minigames/minigame/ttt.qc b/qcsrc/common/minigames/minigame/ttt.qc index c5a658054f..a6cc502377 100644 --- a/qcsrc/common/minigames/minigame/ttt.qc +++ b/qcsrc/common/minigames/minigame/ttt.qc @@ -147,7 +147,7 @@ int ttt_server_event(entity minigame, string event, ...) while( (e = findentity(e, owner, minigame)) ) if(e.classname == "minigame_board_piece") { - if(e.netname) { strunzone(e.netname); } + strfree(e.netname); delete(e); } return false; @@ -540,8 +540,7 @@ void ttt_make_move(entity minigame) void ttt_set_curr_pos(string s) { - if ( ttt_curr_pos ) - strunzone(ttt_curr_pos); + strfree(ttt_curr_pos); if ( s ) s = strzone(s); ttt_curr_pos = s; diff --git a/qcsrc/common/minigames/sv_minigames.qc b/qcsrc/common/minigames/sv_minigames.qc index 415417b465..5c6af26615 100644 --- a/qcsrc/common/minigames/sv_minigames.qc +++ b/qcsrc/common/minigames/sv_minigames.qc @@ -248,7 +248,7 @@ void end_minigame(entity minigame_session) delete(e); } - strunzone(minigame_session.netname); + strfree(minigame_session.netname); delete(minigame_session); } diff --git a/qcsrc/common/models/model.qh b/qcsrc/common/models/model.qh index 7a1e7d73c2..38aa4e33ad 100644 --- a/qcsrc/common/models/model.qh +++ b/qcsrc/common/models/model.qh @@ -1,10 +1,9 @@ #pragma once -#define setmodel(e, m) _setmodel((e), (m).model_str()) - CLASS(Model, Object) ATTRIB(Model, m_id, int, 0); ATTRIB(Model, model_str, string()); + ATTRIB(Model, model_str_, string); CONSTRUCTOR(Model, string() path) { CONSTRUCT(Model); @@ -20,5 +19,12 @@ CLASS(Model, Object) } profile(sprintf("precache_model(\"%s\")", s)); precache_model(s); + strcpy(this.model_str_, s); } ENDCLASS(Model) + +#define setmodel(this, m) MACRO_BEGIN \ + Model _setmodel_model = (m); \ + string _setmodel_cached = _setmodel_model.model_str_; \ + _setmodel((this), _setmodel_cached ? _setmodel_cached : _setmodel_model.model_str()); \ +MACRO_END diff --git a/qcsrc/common/monsters/sv_monsters.qc b/qcsrc/common/monsters/sv_monsters.qc index bf019b9cf1..ccd10ee453 100644 --- a/qcsrc/common/monsters/sv_monsters.qc +++ b/qcsrc/common/monsters/sv_monsters.qc @@ -276,7 +276,7 @@ void Monster_Sounds_Precache(entity this) void Monster_Sounds_Clear(entity this) { -#define _MSOUND(m) if(this.monstersound_##m) { strunzone(this.monstersound_##m); this.monstersound_##m = string_null; } +#define _MSOUND(m) strfree(this.monstersound_##m); ALLMONSTERSOUNDS #undef _MSOUND } @@ -311,9 +311,7 @@ bool Monster_Sounds_Load(entity this, string f, int first) field = Monster_Sound_SampleField(argv(0)); if(GetMonsterSoundSampleField_notFound) continue; - if (this.(field)) - strunzone(this.(field)); - this.(field) = strzone(strcat(argv(1), " ", argv(2))); + strcpy(this.(field), strcat(argv(1), " ", argv(2))); } fclose(fh); return true; diff --git a/qcsrc/common/monsters/sv_spawn.qc b/qcsrc/common/monsters/sv_spawn.qc index d6989ad318..d456282d42 100644 --- a/qcsrc/common/monsters/sv_spawn.qc +++ b/qcsrc/common/monsters/sv_spawn.qc @@ -21,7 +21,7 @@ entity spawnmonster (entity e, string monster, int monster_id, entity spawnedby, if(monster == "random" || allow_any) { RandomSelection_Init(); - FOREACH(Monsters, it != MON_Null && (allow_any || (!(it.spawnflags & MONSTER_TYPE_PASSIVE) && !(it.spawnflags & MON_FLAG_HIDDEN))), + FOREACH(Monsters, it != MON_Null && (allow_any || !(it.spawnflags & MON_FLAG_HIDDEN)) && !(it.spawnflags & MONSTER_TYPE_PASSIVE), { RandomSelection_AddEnt(it, 1, 1); }); diff --git a/qcsrc/common/mutators/base.qh b/qcsrc/common/mutators/base.qh index 4f940c42b3..565e39998d 100644 --- a/qcsrc/common/mutators/base.qh +++ b/qcsrc/common/mutators/base.qh @@ -135,7 +135,7 @@ void RegisterCallbacks() {}; params(_MUTATOR_HANDLE_NOP, _MUTATOR_HANDLE_POPOUT) \ return ret; \ } \ - [[accumulate]] void RegisterHooks() { HOOK_##id = NEW(CallbackChain, #id); } + ACCUMULATE void RegisterHooks() { HOOK_##id = NEW(CallbackChain, #id); } #define MUTATOR_CALLHOOK(id, ...) _MUTATOR_CALLHOOK(id, __VA_ARGS__) #ifdef __STDC__ @@ -265,7 +265,7 @@ void Mutator_Remove(Mutator mut) bool MUTATOR_##id##_check() { return dependence; } \ REGISTER(Mutators, MUTATOR, id, m_id, NEW(Mutator, #id, MUTATORFUNCTION_##id)) \ { this.mutatorcheck = MUTATOR_##id##_check; } \ - [[accumulate]] bool MUTATORFUNCTION_##id(int mode) + ACCUMULATE bool MUTATORFUNCTION_##id(int mode) STATIC_INIT(Mutators) { RegisterHooks(); @@ -301,7 +301,7 @@ STATIC_INIT_LATE(Mutators) { #define _MUTATOR_CALLBACK(name, func) \ Callback CALLBACK_##name; \ bool func(); \ - [[accumulate]] void RegisterCallbacks() { CALLBACK_##name = NEW(Callback, func); } + ACCUMULATE void RegisterCallbacks() { CALLBACK_##name = NEW(Callback, func); } #define MUTATOR_HOOKFUNCTION(...) \ EVAL_MUTATOR_HOOKFUNCTION(OVERLOAD(MUTATOR_HOOKFUNCTION, __VA_ARGS__)) @@ -312,9 +312,9 @@ STATIC_INIT_LATE(Mutators) { #define MUTATOR_HOOKFUNCTION_3(mut, cb, order) \ _MUTATOR_CALLBACK(mut##_##cb, mut##_##cb) \ - [[accumulate]] bool MUTATORFUNCTION_##mut##_hooks(int mode) { MUTATOR_HOOK(cb, mut##_##cb, order); } \ + ACCUMULATE bool MUTATORFUNCTION_##mut##_hooks(int mode) { MUTATOR_HOOK(cb, mut##_##cb, order); } \ bool mut##_##cb() { return = false; } \ - [[accumulate]] bool mut##_##cb() + ACCUMULATE bool mut##_##cb() #define MUTATOR_HOOK(cb, func, order) MACRO_BEGIN { \ MUTATOR_ONADD { \ diff --git a/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc b/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc index 937f4cbde4..4a54d8117d 100644 --- a/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc +++ b/qcsrc/common/mutators/mutator/buffs/sv_buffs.qc @@ -926,7 +926,7 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink) BUFF_ONADD(BUFF_INVISIBLE) { - if(time < player.strength_finished && g_instagib) + if(time < player.strength_finished && autocvar_g_instagib) player.buff_invisible_prev_alpha = default_player_alpha; // we don't want to save the powerup's alpha, as player may lose the powerup while holding the buff else player.buff_invisible_prev_alpha = player.alpha; @@ -935,7 +935,7 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink) BUFF_ONREM(BUFF_INVISIBLE) { - if(time < player.strength_finished && g_instagib) + if(time < player.strength_finished && autocvar_g_instagib) player.alpha = autocvar_g_instagib_invis_alpha; else player.alpha = player.buff_invisible_prev_alpha; diff --git a/qcsrc/common/mutators/mutator/cloaked/sv_cloaked.qc b/qcsrc/common/mutators/mutator/cloaked/sv_cloaked.qc index a1fe27a877..5f9de3b7cb 100644 --- a/qcsrc/common/mutators/mutator/cloaked/sv_cloaked.qc +++ b/qcsrc/common/mutators/mutator/cloaked/sv_cloaked.qc @@ -1,7 +1,7 @@ #include "sv_cloaked.qh" -string autocvar_g_cloaked; -REGISTER_MUTATOR(cloaked, expr_evaluate(autocvar_g_cloaked)); +//string autocvar_g_cloaked; +REGISTER_MUTATOR(cloaked, expr_evaluate(cvar_string("g_cloaked"))); float autocvar_g_balance_cloaked_alpha; diff --git a/qcsrc/common/mutators/mutator/damagetext/cl_damagetext.qc b/qcsrc/common/mutators/mutator/damagetext/cl_damagetext.qc index 0977b62ceb..5f8d8e6823 100644 --- a/qcsrc/common/mutators/mutator/damagetext/cl_damagetext.qc +++ b/qcsrc/common/mutators/mutator/damagetext/cl_damagetext.qc @@ -155,8 +155,7 @@ CLASS(DamageText, Object) ); } - if (this.text) strunzone(this.text); - this.text = strzone(s); + strcpy(this.text, s); this.m_size = map_bound_ranges(potential, autocvar_cl_damagetext_size_min_damage, autocvar_cl_damagetext_size_max_damage, @@ -180,7 +179,7 @@ CLASS(DamageText, Object) } DESTRUCTOR(DamageText) { - if (this.text) strunzone(this.text); + strfree(this.text); if (this == DamageText_screen_first) { // start from 0 offset again, hopefully, others (if any) will have faded away by now DamageText_screen_first = NULL; diff --git a/qcsrc/common/mutators/mutator/melee_only/sv_melee_only.qc b/qcsrc/common/mutators/mutator/melee_only/sv_melee_only.qc index 5603dd4901..2f8b45a99b 100644 --- a/qcsrc/common/mutators/mutator/melee_only/sv_melee_only.qc +++ b/qcsrc/common/mutators/mutator/melee_only/sv_melee_only.qc @@ -1,7 +1,7 @@ #include "sv_melee_only.qh" string autocvar_g_melee_only; -REGISTER_MUTATOR(melee_only, expr_evaluate(autocvar_g_melee_only) && !cvar("g_instagib") && !cvar("g_overkill") && !g_nexball); +REGISTER_MUTATOR(melee_only, expr_evaluate(autocvar_g_melee_only) && !autocvar_g_instagib && !cvar("g_overkill") && !g_nexball); MUTATOR_HOOKFUNCTION(melee_only, SetStartItems, CBC_ORDER_LAST) { diff --git a/qcsrc/common/mutators/mutator/new_toys/sv_new_toys.qc b/qcsrc/common/mutators/mutator/new_toys/sv_new_toys.qc index ec2593215a..3ac652d780 100644 --- a/qcsrc/common/mutators/mutator/new_toys/sv_new_toys.qc +++ b/qcsrc/common/mutators/mutator/new_toys/sv_new_toys.qc @@ -70,11 +70,11 @@ roflsound "New toys, new toys!" sound. */ -string autocvar_g_new_toys; +//string autocvar_g_new_toys; bool nt_IsNewToy(int w); -REGISTER_MUTATOR(nt, expr_evaluate(autocvar_g_new_toys) && !cvar("g_instagib") && !cvar("g_overkill")) +REGISTER_MUTATOR(nt, expr_evaluate(cvar_string("g_new_toys")) && !autocvar_g_instagib && !cvar("g_overkill")) { MUTATOR_ONADD { diff --git a/qcsrc/common/mutators/mutator/nix/sv_nix.qc b/qcsrc/common/mutators/mutator/nix/sv_nix.qc index 953321cc0b..e88ff9b552 100644 --- a/qcsrc/common/mutators/mutator/nix/sv_nix.qc +++ b/qcsrc/common/mutators/mutator/nix/sv_nix.qc @@ -1,6 +1,6 @@ #include "sv_nix.qh" -string autocvar_g_nix; +//string autocvar_g_nix; int autocvar_g_balance_nix_ammo_cells; int autocvar_g_balance_nix_ammo_plasma; int autocvar_g_balance_nix_ammo_fuel; @@ -36,7 +36,7 @@ float nix_nextweapon; bool NIX_CanChooseWeapon(int wpn); -REGISTER_MUTATOR(nix, expr_evaluate(autocvar_g_nix) && !cvar("g_instagib") && !cvar("g_overkill")) +REGISTER_MUTATOR(nix, expr_evaluate(cvar_string("g_nix")) && !autocvar_g_instagib && !cvar("g_overkill")) { MUTATOR_ONADD { diff --git a/qcsrc/common/mutators/mutator/overkill/sv_overkill.qc b/qcsrc/common/mutators/mutator/overkill/sv_overkill.qc index e910623946..582a8d35bc 100644 --- a/qcsrc/common/mutators/mutator/overkill/sv_overkill.qc +++ b/qcsrc/common/mutators/mutator/overkill/sv_overkill.qc @@ -11,7 +11,7 @@ bool autocvar_g_overkill_itemwaypoints = true; .Weapon ok_lastwep[MAX_WEAPONSLOTS]; -REGISTER_MUTATOR(ok, expr_evaluate(autocvar_g_overkill) && !cvar("g_instagib") && !g_nexball && cvar_string("g_mod_balance") == "Overkill") +REGISTER_MUTATOR(ok, expr_evaluate(autocvar_g_overkill) && !autocvar_g_instagib && !g_nexball && cvar_string("g_mod_balance") == "Overkill") { MUTATOR_ONADD { diff --git a/qcsrc/common/mutators/mutator/pinata/sv_pinata.qc b/qcsrc/common/mutators/mutator/pinata/sv_pinata.qc index 1084ff7789..c5bf2262eb 100644 --- a/qcsrc/common/mutators/mutator/pinata/sv_pinata.qc +++ b/qcsrc/common/mutators/mutator/pinata/sv_pinata.qc @@ -1,7 +1,7 @@ #include "sv_pinata.qh" string autocvar_g_pinata; -REGISTER_MUTATOR(pinata, expr_evaluate(autocvar_g_pinata) && !cvar("g_instagib") && !cvar("g_overkill")); +REGISTER_MUTATOR(pinata, expr_evaluate(autocvar_g_pinata) && !autocvar_g_instagib && !cvar("g_overkill")); MUTATOR_HOOKFUNCTION(pinata, PlayerDies) { diff --git a/qcsrc/common/mutators/mutator/rocketminsta/sv_rocketminsta.qc b/qcsrc/common/mutators/mutator/rocketminsta/sv_rocketminsta.qc index 7edef9813d..c6def68e1b 100644 --- a/qcsrc/common/mutators/mutator/rocketminsta/sv_rocketminsta.qc +++ b/qcsrc/common/mutators/mutator/rocketminsta/sv_rocketminsta.qc @@ -3,7 +3,7 @@ #include <common/deathtypes/all.qh> #include <server/round_handler.qh> -REGISTER_MUTATOR(rm, cvar("g_instagib")); +REGISTER_MUTATOR(rm, autocvar_g_instagib); MUTATOR_HOOKFUNCTION(rm, Damage_Calculate) { diff --git a/qcsrc/common/mutators/mutator/sandbox/sv_sandbox.qc b/qcsrc/common/mutators/mutator/sandbox/sv_sandbox.qc index d121cf1094..d80b21d5a6 100644 --- a/qcsrc/common/mutators/mutator/sandbox/sv_sandbox.qc +++ b/qcsrc/common/mutators/mutator/sandbox/sv_sandbox.qc @@ -212,11 +212,11 @@ void sandbox_ObjectRemove(entity e) // if the object being removed has been selected for attachment by a player, unset it FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it) && it.object_attach == e, { it.object_attach = NULL; }); - if(e.material) { strunzone(e.material); e.material = string_null; } - if(e.crypto_idfp) { strunzone(e.crypto_idfp); e.crypto_idfp = string_null; } - if(e.netname) { strunzone(e.netname); e.netname = string_null; } - if(e.message) { strunzone(e.message); e.message = string_null; } - if(e.message2) { strunzone(e.message2); e.message2 = string_null; } + strfree(e.material); + strfree(e.crypto_idfp); + strfree(e.netname); + strfree(e.message); + strfree(e.message2); delete(e); e = NULL; @@ -357,14 +357,14 @@ entity sandbox_ObjectPort_Load(entity this, string s, float database) e.old_movetype = stof(argv(argv_num)); ++argv_num; set_movetype(e, e.old_movetype); e.damageforcescale = stof(argv(argv_num)); ++argv_num; - if(e.material) strunzone(e.material); if(argv(argv_num) != "") e.material = strzone(argv(argv_num)); else e.material = string_null; ++argv_num; + strfree(e.material); if(argv(argv_num) != "") e.material = strzone(argv(argv_num)); else e.material = string_null; ++argv_num; if(database) { // properties stored only for the database - if(e.crypto_idfp) strunzone(e.crypto_idfp); if(argv(argv_num) != "") e.crypto_idfp = strzone(argv(argv_num)); else e.crypto_idfp = string_null; ++argv_num; - if(e.netname) strunzone(e.netname); e.netname = strzone(argv(argv_num)); ++argv_num; - if(e.message) strunzone(e.message); e.message = strzone(argv(argv_num)); ++argv_num; - if(e.message2) strunzone(e.message2); e.message2 = strzone(argv(argv_num)); ++argv_num; + strfree(e.crypto_idfp); if(argv(argv_num) != "") e.crypto_idfp = strzone(argv(argv_num)); else e.crypto_idfp = string_null; ++argv_num; + strcpy(e.netname, argv(argv_num)); ++argv_num; + strcpy(e.message, argv(argv_num)); ++argv_num; + strcpy(e.message2, argv(argv_num)); ++argv_num; } // attach last @@ -702,7 +702,7 @@ MUTATOR_HOOKFUNCTION(sandbox, SV_ParseClientCommand) e.damageforcescale = stof(argv(3)); break; case "material": - if(e.material) strunzone(e.material); + strfree(e.material); if(argv(3)) { for (j = 1; j <= 5; j++) // precache material sounds, 5 in total @@ -718,8 +718,7 @@ MUTATOR_HOOKFUNCTION(sandbox, SV_ParseClientCommand) } // update last editing time - if(e.message2) strunzone(e.message2); - e.message2 = strzone(strftime(true, "%d-%m-%Y %H:%M:%S")); + strcpy(e.message2, strftime(true, "%d-%m-%Y %H:%M:%S")); if(autocvar_g_sandbox_info > 1) LOG_INFO("^3SANDBOX - SERVER: ^7", player.netname, " edited property ^3", argv(2), " ^7of an object at origin ^3", vtos(e.origin)); @@ -745,8 +744,7 @@ MUTATOR_HOOKFUNCTION(sandbox, SV_ParseClientCommand) // also update the player's nickname if he changed it (but has the same player UID) if(e.netname != player.netname) { - if(e.netname) strunzone(e.netname); - e.netname = strzone(player.netname); + strcpy(e.netname, player.netname); print_to(player, "^2SANDBOX - INFO: ^7Object owner name updated"); } @@ -756,8 +754,7 @@ MUTATOR_HOOKFUNCTION(sandbox, SV_ParseClientCommand) return true; } - if(e.crypto_idfp) strunzone(e.crypto_idfp); - e.crypto_idfp = strzone(player.crypto_idfp); + strcpy(e.crypto_idfp, player.crypto_idfp); print_to(player, "^2SANDBOX - INFO: ^7Object claimed successfully"); } diff --git a/qcsrc/common/mutators/mutator/vampire/sv_vampire.qc b/qcsrc/common/mutators/mutator/vampire/sv_vampire.qc index 199b4e202a..b599805a45 100644 --- a/qcsrc/common/mutators/mutator/vampire/sv_vampire.qc +++ b/qcsrc/common/mutators/mutator/vampire/sv_vampire.qc @@ -1,7 +1,7 @@ #include "sv_vampire.qh" string autocvar_g_vampire; -REGISTER_MUTATOR(vampire, expr_evaluate(autocvar_g_vampire) && !cvar("g_instagib")); +REGISTER_MUTATOR(vampire, expr_evaluate(autocvar_g_vampire) && !autocvar_g_instagib); MUTATOR_HOOKFUNCTION(vampire, PlayerDamage_SplitHealthArmor) { diff --git a/qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc b/qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc index be5b40c14c..326a26219b 100644 --- a/qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc +++ b/qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc @@ -106,9 +106,9 @@ NET_HANDLE(waypointsprites, bool isnew) { void Ent_RemoveWaypointSprite(entity this) { - if (this.netname) strunzone(this.netname); - if (this.netname2) strunzone(this.netname2); - if (this.netname3) strunzone(this.netname3); + strfree(this.netname); + strfree(this.netname2); + strfree(this.netname3); } /** flags origin [team displayrule] [spritename] [spritename2] [spritename3] [lifetime maxdistance hideable] */ @@ -169,23 +169,17 @@ void Ent_WaypointSprite(entity this, bool isnew) if (sendflags & 2) { - if (this.netname) - strunzone(this.netname); - this.netname = strzone(ReadString()); + strcpy(this.netname, ReadString()); } if (sendflags & 4) { - if (this.netname2) - strunzone(this.netname2); - this.netname2 = strzone(ReadString()); + strcpy(this.netname2, ReadString()); } if (sendflags & 8) { - if (this.netname3) - strunzone(this.netname3); - this.netname3 = strzone(ReadString()); + strcpy(this.netname3, ReadString()); } if (sendflags & 16) @@ -589,15 +583,16 @@ void Draw_WaypointSprite(entity this) { // scale it to be just in view vector d; - float f1, f2; d = o - '0.5 0 0' * vid_conwidth - '0 0.5 0' * vid_conheight; ang = atan2(-d.x, -d.y); if (o.z < 0) ang += M_PI; - f1 = d.x / vid_conwidth; - f2 = d.y / vid_conheight; + float f1 = d.x / vid_conwidth; + float f2 = d.y / vid_conheight; + if (f1 == 0) { f1 = 0.000001; } + if (f2 == 0) { f2 = 0.000001; } if (max(f1, -f1) > max(f2, -f2)) { if (d.z * f1 > 0) { diff --git a/qcsrc/common/mutators/mutator/waypoints/waypointsprites.qh b/qcsrc/common/mutators/mutator/waypoints/waypointsprites.qh index 95b8890ccc..94d735a1f6 100644 --- a/qcsrc/common/mutators/mutator/waypoints/waypointsprites.qh +++ b/qcsrc/common/mutators/mutator/waypoints/waypointsprites.qh @@ -11,21 +11,21 @@ const int SPRITERULE_SPECTATOR = 2; #ifdef CSQC entityclass(WaypointSprite); -class(WaypointSprite) .float helpme; -class(WaypointSprite) .float rule; -class(WaypointSprite) .string netname; // primary picture -class(WaypointSprite) .string netname2; // secondary picture -class(WaypointSprite) .string netname3; // tertiary picture -class(WaypointSprite) .int team; // team that gets netname2 -class(WaypointSprite) .float lifetime; -class(WaypointSprite) .float fadetime; -class(WaypointSprite) .float maxdistance; -class(WaypointSprite) .int hideflags; -class(WaypointSprite) .float spawntime; -class(WaypointSprite) .float health; -class(WaypointSprite) .float build_started; -class(WaypointSprite) .float build_starthealth; -class(WaypointSprite) .float build_finished; +classfield(WaypointSprite) .float helpme; +classfield(WaypointSprite) .float rule; +classfield(WaypointSprite) .string netname; // primary picture +classfield(WaypointSprite) .string netname2; // secondary picture +classfield(WaypointSprite) .string netname3; // tertiary picture +classfield(WaypointSprite) .int team; // team that gets netname2 +classfield(WaypointSprite) .float lifetime; +classfield(WaypointSprite) .float fadetime; +classfield(WaypointSprite) .float maxdistance; +classfield(WaypointSprite) .int hideflags; +classfield(WaypointSprite) .float spawntime; +classfield(WaypointSprite) .float health; +classfield(WaypointSprite) .float build_started; +classfield(WaypointSprite) .float build_starthealth; +classfield(WaypointSprite) .float build_finished; float autocvar_g_waypointsprite_alpha; float autocvar_g_waypointsprite_crosshairfadealpha; diff --git a/qcsrc/common/notifications/all.qc b/qcsrc/common/notifications/all.qc index b9350758a1..644d049d38 100644 --- a/qcsrc/common/notifications/all.qc +++ b/qcsrc/common/notifications/all.qc @@ -1063,8 +1063,7 @@ void Local_Notification_sound(int soundchannel, string soundfile, float soundvol _sound(NULL, soundchannel, AnnouncerFilename(soundfile), soundvolume, soundposition); - if (prev_soundfile) strunzone(prev_soundfile); - prev_soundfile = strzone(soundfile); + strcpy(prev_soundfile, soundfile); prev_soundtime = time; } else @@ -1467,7 +1466,7 @@ void Net_Notification_Remove(entity this) this.owner.nent_name )); #endif - for (int i = 0; i < this.nent_stringcount; ++i) { if (this.nent_strings[i]) strunzone(this.nent_strings[i]); } + for (int i = 0; i < this.nent_stringcount; ++i) { strfree(this.nent_strings[i]); } delete(this); } diff --git a/qcsrc/common/physics/player.qc b/qcsrc/common/physics/player.qc index 1b80655026..53765f4191 100644 --- a/qcsrc/common/physics/player.qc +++ b/qcsrc/common/physics/player.qc @@ -77,6 +77,8 @@ void Physics_UpdateStats(entity this) STAT(MOVEVARS_JUMPVELOCITY, this) = Physics_ClientOption(this, "jumpvelocity", autocvar_sv_jumpvelocity); STAT(MOVEVARS_JUMPVELOCITY_CROUCH, this) = Physics_ClientOption(this, "jumpvelocity_crouch", autocvar_sv_jumpvelocity_crouch); STAT(MOVEVARS_TRACK_CANJUMP, this) = Physics_ClientOption(this, "track_canjump", autocvar_sv_track_canjump); + + MUTATOR_CALLHOOK(PlayerPhysics_PostUpdateStats, this, maxspd_mod); } #endif diff --git a/qcsrc/common/playerstats.qc b/qcsrc/common/playerstats.qc index 0fcd70dfc0..cde6a51902 100644 --- a/qcsrc/common/playerstats.qc +++ b/qcsrc/common/playerstats.qc @@ -154,8 +154,7 @@ void PlayerStats_GameReport_FinalizePlayer(entity p) } } - strunzone(p.playerstats_id); - p.playerstats_id = string_null; + strfree(p.playerstats_id); } void PlayerStats_GameReport(float finished) diff --git a/qcsrc/common/sounds/sound.qh b/qcsrc/common/sounds/sound.qh index 8c4aecbda0..d46ac9eafc 100644 --- a/qcsrc/common/sounds/sound.qh +++ b/qcsrc/common/sounds/sound.qh @@ -22,7 +22,7 @@ const int CH_PLAYER_SINGLE = 7; // const int CH_BGM_SINGLE = -8; const int CH_BGM_SINGLE = 8; const int CH_AMBIENT = -9; -// const int CH_AMBIENT_SINGLE = 9; +const int CH_AMBIENT_SINGLE = 9; const float ATTEN_NONE = 0; const float ATTEN_MIN = 0.015625; @@ -92,40 +92,55 @@ const float VOL_MUFFLED = 0.35; } \ } MACRO_END +string _Sound_fixpath(string base) +{ + if (base == "") return string_null; +#ifdef SVQC + return strcat(base, ".wav"); // let the client engine decide +#else +#define extensions(x) \ + x(wav) \ + x(ogg) \ + x(flac) \ + /**/ +#define tryext(ext) { \ + string s = strcat(base, "." #ext); \ + if (fexists(strcat("sound/", s))) { \ + return s; \ + } \ + } + extensions(tryext); + LOG_WARNF("Missing sound: \"%s\"", strcat("sound/", base)); +#undef tryext +#undef extensions + return string_null; +#endif +} + CLASS(Sound, Object) ATTRIB(Sound, m_id, int, 0); ATTRIB(Sound, sound_str, string()); + ATTRIB(Sound, sound_str_, string); CONSTRUCTOR(Sound, string() path) { CONSTRUCT(Sound); this.sound_str = path; } - #define Sound_fixpath(this) _Sound_fixpath((this).sound_str()) - string _Sound_fixpath(string base) - { - if (base == "") return string_null; -#ifdef SVQC - return strcat(base, ".wav"); // let the client engine decide -#else - #define extensions(x) \ - x(wav) \ - x(ogg) \ - x(flac) \ - /**/ - #define tryext(ext) { string s = strcat(base, "." #ext); if (fexists(strcat("sound/", s))) return s; } - extensions(tryext); - LOG_WARNF("Missing sound: \"%s\"", strcat("sound/", base)); - #undef tryext - #undef extensions - return string_null; -#endif - } METHOD(Sound, sound_precache, void(Sound this)) { TC(Sound, this); - string s = Sound_fixpath(this); + string s = _Sound_fixpath(this.sound_str()); if (!s) return; profile(sprintf("precache_sound(\"%s\")", s)); precache_sound(s); + strcpy(this.sound_str_, s); } ENDCLASS(Sound) + +entity _Sound_fixpath_this; +string _Sound_fixpath_cached; +#define Sound_fixpath(this) ( \ + _Sound_fixpath_this = (this), \ + _Sound_fixpath_cached = _Sound_fixpath_this.sound_str_, \ + _Sound_fixpath_cached ? _Sound_fixpath_cached : _Sound_fixpath(_Sound_fixpath_this.sound_str()) \ +) diff --git a/qcsrc/common/t_items.qc b/qcsrc/common/t_items.qc index 02a0dc171c..37a29f101e 100644 --- a/qcsrc/common/t_items.qc +++ b/qcsrc/common/t_items.qc @@ -50,13 +50,8 @@ void Item_SetAlpha(entity this) } else { - if (autocvar_cl_ghost_items_color) - { - this.alpha = autocvar_cl_ghost_items; - this.colormod = this.glowmod = autocvar_cl_ghost_items_color; - } - else - this.alpha = -1; + this.alpha = autocvar_cl_ghost_items; + this.colormod = this.glowmod = autocvar_cl_ghost_items_color; } if((!veh_hud) && (this.ItemStatus & ITS_STAYWEP)) @@ -148,8 +143,17 @@ void Item_PreDraw(entity this) void ItemRemove(entity this) { - if(this.mdl) - strunzone(this.mdl); + strfree(this.mdl); +} + +HashMap ENT_CLIENT_ITEM_simple; +STATIC_INIT(ENT_CLIENT_ITEM_simple) +{ + HM_NEW(ENT_CLIENT_ITEM_simple); +} +SHUTDOWN(ENT_CLIENT_ITEM_simple) +{ + HM_DELETE(ENT_CLIENT_ITEM_simple); } NET_HANDLE(ENT_CLIENT_ITEM, bool isnew) @@ -211,10 +215,8 @@ NET_HANDLE(ENT_CLIENT_ITEM, bool isnew) if(!warpzone_warpzones_exist && this.fade_start && !autocvar_cl_items_nofade) setpredraw(this, Item_PreDraw); - if(this.mdl) - strunzone(this.mdl); + strfree(this.mdl); - this.mdl = ""; string _fn = ReadString(); this.item_simple = false; // reset it! @@ -223,27 +225,37 @@ NET_HANDLE(ENT_CLIENT_ITEM, bool isnew) string _fn2 = substring(_fn, 0 , strlen(_fn) -4); this.item_simple = true; - if(fexists(strcat(_fn2, autocvar_cl_simpleitems_postfix, ".md3"))) - this.mdl = strzone(strcat(_fn2, autocvar_cl_simpleitems_postfix, ".md3")); - else if(fexists(strcat(_fn2, autocvar_cl_simpleitems_postfix, ".dpm"))) - this.mdl = strzone(strcat(_fn2, autocvar_cl_simpleitems_postfix, ".dpm")); - else if(fexists(strcat(_fn2, autocvar_cl_simpleitems_postfix, ".iqm"))) - this.mdl = strzone(strcat(_fn2, autocvar_cl_simpleitems_postfix, ".iqm")); - else if(fexists(strcat(_fn2, autocvar_cl_simpleitems_postfix, ".mdl"))) - this.mdl = strzone(strcat(_fn2, autocvar_cl_simpleitems_postfix, ".mdl")); - else - { - this.item_simple = false; - LOG_TRACE("Simple item requested for ", _fn, " but no model exists for it"); - } + #define extensions(x) \ + x(md3) \ + x(dpm) \ + x(iqm) \ + x(mdl) \ + /**/ + #define tryext(ext) { \ + string s = strcat(_fn2, autocvar_cl_simpleitems_postfix, "." #ext); \ + string cached = HM_gets(ENT_CLIENT_ITEM_simple, s); \ + if (cached == "") { \ + HM_sets(ENT_CLIENT_ITEM_simple, s, cached = fexists(s) ? "1" : "0"); \ + } \ + if (cached != "0") { \ + strcpy(this.mdl, s); \ + break; \ + } \ + } + do { + extensions(tryext); + this.item_simple = false; + LOG_TRACEF("Simple item requested for %s but no model exists for it", _fn); + } while (0); + #undef tryext + #undef extensions } if(!this.item_simple) - this.mdl = strzone(_fn); - + strcpy(this.mdl, _fn); if(this.mdl == "") - LOG_TRACE("^1WARNING!^7 this.mdl is unset for item ", this.classname, ", tell tZork about this!"); + LOG_WARNF("this.mdl is unset for item %s", this.classname); precache_model(this.mdl); _setmodel(this, this.mdl); diff --git a/qcsrc/common/triggers/defs.qh b/qcsrc/common/triggers/defs.qh new file mode 100644 index 0000000000..45afb51f9a --- /dev/null +++ b/qcsrc/common/triggers/defs.qh @@ -0,0 +1,41 @@ +#pragma once + +//----------- +// SPAWNFLAGS +//----------- +const int START_ENABLED = BIT(0); +const int START_DISABLED = BIT(0); +const int ALL_ENTITIES = BIT(1); +const int ON_MAPLOAD = BIT(1); +const int INVERT_TEAMS = BIT(2); +const int CRUSH = BIT(2); +const int NOSPLASH = BIT(8); // generic anti-splashdamage spawnflag +const int ONLY_PLAYERS = BIT(14); + +// triggers +const int SPAWNFLAG_NOMESSAGE = BIT(0); +const int SPAWNFLAG_NOTOUCH = BIT(0); + +//---------- +// SENDFLAGS +//---------- +const int SF_TRIGGER_INIT = BIT(0); +const int SF_TRIGGER_UPDATE = BIT(1); +const int SF_TRIGGER_RESET = BIT(2); + +//---------------- +// STATES & ACTIVE +//---------------- +#ifdef CSQC +// this stuff is defined in the server side engine VM, so we must define it separately here +const int STATE_TOP = 0; +const int STATE_BOTTOM = 1; +const int STATE_UP = 2; +const int STATE_DOWN = 3; + +const int ACTIVE_NOT = 0; +const int ACTIVE_ACTIVE = 1; +const int ACTIVE_IDLE = 2; +const int ACTIVE_BUSY = 2; +const int ACTIVE_TOGGLE = 3; +#endif diff --git a/qcsrc/common/triggers/func/bobbing.qc b/qcsrc/common/triggers/func/bobbing.qc index ff8841a570..b647e15a82 100644 --- a/qcsrc/common/triggers/func/bobbing.qc +++ b/qcsrc/common/triggers/func/bobbing.qc @@ -59,9 +59,9 @@ spawnfunc(func_bobbing) this.dmgtime2 = time; // how far to bob - if (this.spawnflags & 1) // X + if (this.spawnflags & BOBBING_XAXIS) this.movedir = '1 0 0' * this.height; - else if (this.spawnflags & 2) // Y + else if (this.spawnflags & BOBBING_YAXIS) this.movedir = '0 1 0' * this.height; else // Z this.movedir = '0 0 1' * this.height; diff --git a/qcsrc/common/triggers/func/bobbing.qh b/qcsrc/common/triggers/func/bobbing.qh index 6f70f09bee..58f7bb7145 100644 --- a/qcsrc/common/triggers/func/bobbing.qh +++ b/qcsrc/common/triggers/func/bobbing.qh @@ -1 +1,5 @@ #pragma once + + +const int BOBBING_XAXIS = BIT(0); +const int BOBBING_YAXIS = BIT(1); diff --git a/qcsrc/common/triggers/func/breakable.qc b/qcsrc/common/triggers/func/breakable.qc index ec71bc3fc3..d09ccd5e00 100644 --- a/qcsrc/common/triggers/func/breakable.qc +++ b/qcsrc/common/triggers/func/breakable.qc @@ -34,9 +34,10 @@ // target = targets to trigger when broken // health = amount of damage it can take // spawnflags: -// 1 = start disabled (needs to be triggered to activate) -// 2 = indicate damage -// 4 = don't take direct damage (needs to be triggered to 'explode', then triggered again to restore) +// START_DISABLED: needs to be triggered to activate +// BREAKABLE_INDICATE_DAMAGE: indicate damage +// BREAKABLE_NODAMAGE: don't take direct damage (needs to be triggered to 'explode', then triggered again to restore) +// NOSPLASH: don't take splash damage // notes: // for mdl_dead to work, origin must be set (using a common/origin brush). // Otherwise mdl_dead will be displayed at the map origin, and nobody would @@ -81,7 +82,7 @@ void LaunchDebris (entity this, string debrisname, vector force) void func_breakable_colormod(entity this) { float h; - if (!(this.spawnflags & 2)) + if (!(this.spawnflags & BREAKABLE_INDICATE_DAMAGE)) return; h = this.health / this.max_health; if(h < 0.25) @@ -135,8 +136,8 @@ void func_breakable_behave_destroyed(entity this) IL_REMOVE(g_bot_targets, this); this.bot_attack = false; this.event_damage = func_null; - this.state = 1; - if(this.spawnflags & 4) + this.state = STATE_BROKEN; + if(this.spawnflags & BREAKABLE_NODAMAGE) this.use = func_null; func_breakable_colormod(this); if (this.noise1) @@ -158,7 +159,7 @@ void func_breakable_behave_restore(entity this) WaypointSprite_UpdateMaxHealth(this.sprite, this.max_health); WaypointSprite_UpdateHealth(this.sprite, this.health); } - if(!(this.spawnflags & 4)) + if(!(this.spawnflags & BREAKABLE_NODAMAGE)) { this.takedamage = DAMAGE_AIM; if(!this.bot_attack) @@ -166,9 +167,9 @@ void func_breakable_behave_restore(entity this) this.bot_attack = true; this.event_damage = func_breakable_damage; } - if(this.spawnflags & 4) + if(this.spawnflags & BREAKABLE_NODAMAGE) this.use = func_breakable_destroy; // don't need to set it usually, as .use isn't reset - this.state = 0; + this.state = STATE_ALIVE; //this.nextthink = 0; // cancel auto respawn setthink(this, func_breakable_think); this.nextthink = time + 0.1; @@ -179,7 +180,7 @@ void func_breakable_behave_restore(entity this) void func_breakable_init_for_player(entity this, entity player) { - if (this.noise1 && this.state == 0 && IS_REAL_CLIENT(player)) + if (this.noise1 && this.state == STATE_ALIVE && IS_REAL_CLIENT(player)) { msg_entity = player; soundto (MSG_ONE, this, CH_TRIGGER_SINGLE, this.noise1, VOL_BASE, ATTEN_NORM); @@ -248,9 +249,9 @@ void func_breakable_destroy_self(entity this) void func_breakable_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, .entity weaponentity, vector hitloc, vector force) { - if(this.state == 1) + if(this.state == STATE_BROKEN) return; - if(this.spawnflags & DOOR_NOSPLASH) + if(this.spawnflags & NOSPLASH) if(!(DEATH_ISSPECIAL(deathtype)) && (deathtype & HITTYPE_SPLASH)) return; if(this.team) @@ -290,7 +291,7 @@ void func_breakable_reset(entity this) { this.team = this.team_saved; func_breakable_look_restore(this); - if(this.spawnflags & 1) + if(this.spawnflags & START_DISABLED) func_breakable_behave_destroyed(this); else func_breakable_behave_restore(this); @@ -330,12 +331,12 @@ spawnfunc(func_breakable) this.mdl = this.model; SetBrushEntityModel(this); - if(this.spawnflags & 4) + if(this.spawnflags & BREAKABLE_NODAMAGE) this.use = func_breakable_destroy; else this.use = func_breakable_restore; - if(this.spawnflags & 4) + if(this.spawnflags & BREAKABLE_NODAMAGE) { this.takedamage = DAMAGE_NO; this.event_damage = func_null; diff --git a/qcsrc/common/triggers/func/breakable.qh b/qcsrc/common/triggers/func/breakable.qh index 761a2c7a98..0efbcfaed5 100644 --- a/qcsrc/common/triggers/func/breakable.qh +++ b/qcsrc/common/triggers/func/breakable.qh @@ -1,5 +1,12 @@ #pragma once + +const int BREAKABLE_INDICATE_DAMAGE = BIT(1); +const int BREAKABLE_NODAMAGE = BIT(2); + +const int STATE_ALIVE = 0; +const int STATE_BROKEN = 1; + #ifdef SVQC spawnfunc(func_breakable); #endif diff --git a/qcsrc/common/triggers/func/button.qc b/qcsrc/common/triggers/func/button.qc index c51c034f16..28e6481c88 100644 --- a/qcsrc/common/triggers/func/button.qc +++ b/qcsrc/common/triggers/func/button.qc @@ -91,7 +91,7 @@ void button_touch(entity this, entity toucher) void button_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, .entity weaponentity, vector hitloc, vector force) { - if(this.spawnflags & DOOR_NOSPLASH) + if(this.spawnflags & NOSPLASH) if(!(DEATH_ISSPECIAL(deathtype)) && (deathtype & HITTYPE_SPLASH)) return; if (this.spawnflags & BUTTON_DONTACCUMULATEDMG) @@ -123,11 +123,7 @@ When a button is touched, it moves some distance in the direction of it's angle, "wait" override the default 1 second wait (-1 = never return) "lip" override the default 4 pixel lip remaining at end of move "health" if set, the button must be killed instead of touched. If set to -1, the button will fire on ANY attack, even damageless ones like the InstaGib laser -"sounds" -0) steam metal -1) wooden clunk -2) metallic click -3) in-out +"noise" sound that is played when the button is activated */ spawnfunc(func_button) { diff --git a/qcsrc/common/triggers/func/button.qh b/qcsrc/common/triggers/func/button.qh index 75a6006eb5..86a0fc9180 100644 --- a/qcsrc/common/triggers/func/button.qh +++ b/qcsrc/common/triggers/func/button.qh @@ -1,3 +1,4 @@ #pragma once -const int BUTTON_DONTACCUMULATEDMG = 128; + +const int BUTTON_DONTACCUMULATEDMG = BIT(7); diff --git a/qcsrc/common/triggers/func/conveyor.qc b/qcsrc/common/triggers/func/conveyor.qc index 1802a75db4..9ad326cfa2 100644 --- a/qcsrc/common/triggers/func/conveyor.qc +++ b/qcsrc/common/triggers/func/conveyor.qc @@ -17,9 +17,9 @@ void conveyor_think(entity this) IL_REMOVE(g_conveyed, it); }); - if(this.state) + if(this.active == ACTIVE_ACTIVE) { - FOREACH_ENTITY_RADIUS((this.absmin + this.absmax) * 0.5, vlen(this.absmax - this.absmin) * 0.5 + 1, !it.conveyor.state && isPushable(it), + FOREACH_ENTITY_RADIUS((this.absmin + this.absmax) * 0.5, vlen(this.absmax - this.absmin) * 0.5 + 1, it.conveyor.active == ACTIVE_NOT && isPushable(it), { vector emin = it.absmin; vector emax = it.absmax; @@ -63,26 +63,12 @@ void conveyor_think(entity this) #ifdef SVQC -void conveyor_use(entity this, entity actor, entity trigger) -{ - this.state = !this.state; - - this.SendFlags |= 2; -} - -void conveyor_reset(entity this) -{ - this.state = (this.spawnflags & 1); - - this.SendFlags |= 2; -} - -bool conveyor_send(entity this, entity to, int sf) +bool conveyor_send(entity this, entity to, int sendflags) { WriteHeader(MSG_ENTITY, ENT_CLIENT_CONVEYOR); - WriteByte(MSG_ENTITY, sf); + WriteByte(MSG_ENTITY, sendflags); - if(sf & 1) + if(sendflags & SF_TRIGGER_INIT) { WriteByte(MSG_ENTITY, this.warpzone_isboxy); WriteVector(MSG_ENTITY, this.origin); @@ -93,14 +79,14 @@ bool conveyor_send(entity this, entity to, int sf) WriteVector(MSG_ENTITY, this.movedir); WriteByte(MSG_ENTITY, this.speed); - WriteByte(MSG_ENTITY, this.state); + WriteByte(MSG_ENTITY, this.active); WriteString(MSG_ENTITY, this.targetname); WriteString(MSG_ENTITY, this.target); } - if(sf & 2) - WriteByte(MSG_ENTITY, this.state); + if(sendflags & SF_TRIGGER_UPDATE) + WriteByte(MSG_ENTITY, this.active); return true; } @@ -111,20 +97,20 @@ void conveyor_init(entity this) this.movedir *= this.speed; setthink(this, conveyor_think); this.nextthink = time; + this.setactive = generic_netlinked_setactive; IFTARGETED { - this.use = conveyor_use; - this.reset = conveyor_reset; - this.reset(this); + // backwards compatibility + this.use = generic_netlinked_legacy_use; } - else - this.state = 1; + this.reset = generic_netlinked_reset; + this.reset(this); FixSize(this); Net_LinkEntity(this, 0, false, conveyor_send); - this.SendFlags |= 1; + this.SendFlags |= SF_TRIGGER_INIT; } spawnfunc(trigger_conveyor) @@ -161,9 +147,9 @@ void conveyor_init(entity this, bool isnew) NET_HANDLE(ENT_CLIENT_CONVEYOR, bool isnew) { - int sf = ReadByte(); + int sendflags = ReadByte(); - if(sf & 1) + if(sendflags & SF_TRIGGER_INIT) { this.warpzone_isboxy = ReadByte(); this.origin = ReadVector(); @@ -176,7 +162,7 @@ NET_HANDLE(ENT_CLIENT_CONVEYOR, bool isnew) this.movedir = ReadVector(); this.speed = ReadByte(); - this.state = ReadByte(); + this.active = ReadByte(); this.targetname = strzone(ReadString()); this.target = strzone(ReadString()); @@ -184,8 +170,8 @@ NET_HANDLE(ENT_CLIENT_CONVEYOR, bool isnew) conveyor_init(this, isnew); } - if(sf & 2) - this.state = ReadByte(); + if(sendflags & SF_TRIGGER_UPDATE) + this.active = ReadByte(); return true; } diff --git a/qcsrc/common/triggers/func/conveyor.qh b/qcsrc/common/triggers/func/conveyor.qh index c12b52d2dd..22b674ff36 100644 --- a/qcsrc/common/triggers/func/conveyor.qh +++ b/qcsrc/common/triggers/func/conveyor.qh @@ -1,4 +1,5 @@ #pragma once +#include "../defs.qh" IntrusiveList g_conveyed; STATIC_INIT(g_conveyed) { g_conveyed = IL_NEW(); } diff --git a/qcsrc/common/triggers/func/door.qc b/qcsrc/common/triggers/func/door.qc index 956114a26b..c19041aa0b 100644 --- a/qcsrc/common/triggers/func/door.qc +++ b/qcsrc/common/triggers/func/door.qc @@ -1,4 +1,5 @@ #include "door.qh" +#include "door_rotating.qh" /* Doors are similar to buttons, but can spawn a fat trigger field around them @@ -23,12 +24,10 @@ THINK FUNCTIONS void door_go_down(entity this); void door_go_up(entity this, entity actor, entity trigger); -void door_rotating_go_down(entity this); -void door_rotating_go_up(entity this, entity oth); void door_blocked(entity this, entity blocker) { - if((this.spawnflags & 8) + if((this.spawnflags & DOOR_CRUSH) #ifdef SVQC && (blocker.takedamage != DAMAGE_NO) #elif defined(CSQC) @@ -177,7 +176,7 @@ bool door_check_keys(entity door, entity player) if(!door.itemkeys) { #ifdef SVQC - play2(player, SND(TALK)); + play2(player, door.noise); Send_Notification(NOTIF_ONE, player, MSG_CENTER, CENTER_DOOR_UNLOCKED); #endif return true; @@ -238,12 +237,12 @@ void door_fire(entity this, entity actor, entity trigger) door_go_up(e, actor, trigger); } else { // if the BIDIR spawnflag (==2) is set and the trigger has set trigger_reverse, reverse the opening direction - if ((e.spawnflags & 2) && trigger.trigger_reverse!=0 && e.lip != 666 && e.state == STATE_BOTTOM) { + if ((e.spawnflags & DOOR_ROTATING_BIDIR) && trigger.trigger_reverse!=0 && e.lip != 666 && e.state == STATE_BOTTOM) { e.lip = 666; // e.lip is used to remember reverse opening direction for door_rotating e.pos2 = '0 0 0' - e.pos2; } // if BIDIR_IN_DOWN (==8) is set, prevent the door from reoping during closing if it is triggered from the wrong side - if (!((e.spawnflags & 2) && (e.spawnflags & 8) && e.state == STATE_DOWN + if (!((e.spawnflags & DOOR_ROTATING_BIDIR) && (e.spawnflags & DOOR_ROTATING_BIDIR_IN_DOWN) && e.state == STATE_DOWN && (((e.lip == 666) && (trigger.trigger_reverse == 0)) || ((e.lip != 666) && (trigger.trigger_reverse != 0))))) { door_rotating_go_up(e, trigger); @@ -263,7 +262,7 @@ void door_use(entity this, entity actor, entity trigger) void door_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, .entity weaponentity, vector hitloc, vector force) { - if(this.spawnflags & DOOR_NOSPLASH) + if(this.spawnflags & NOSPLASH) if(!(DEATH_ISSPECIAL(deathtype)) && (deathtype & HITTYPE_SPLASH)) return; this.health = this.health - damage; @@ -313,7 +312,7 @@ void door_touch(entity this, entity toucher) void door_generic_plat_blocked(entity this, entity blocker) { - if((this.spawnflags & 8) && (blocker.takedamage != DAMAGE_NO)) { // Kill Kill Kill!! + if((this.spawnflags & DOOR_CRUSH) && (blocker.takedamage != DAMAGE_NO)) { // Kill Kill Kill!! #ifdef SVQC Damage (blocker, this, this, 10000, DEATH_HURTTRIGGER.m_id, DMG_NOWEP, blocker.origin, '0 0 0'); #endif @@ -348,66 +347,6 @@ void door_generic_plat_blocked(entity this, entity blocker) } } -void door_rotating_hit_top(entity this) -{ - if (this.noise1 != "") - _sound (this, CH_TRIGGER_SINGLE, this.noise1, VOL_BASE, ATTEN_NORM); - this.state = STATE_TOP; - if (this.spawnflags & DOOR_TOGGLE) - return; // don't come down automatically - setthink(this, door_rotating_go_down); - this.nextthink = this.ltime + this.wait; -} - -void door_rotating_hit_bottom(entity this) -{ - if (this.noise1 != "") - _sound (this, CH_TRIGGER_SINGLE, this.noise1, VOL_BASE, ATTEN_NORM); - if (this.lip==666) // this.lip is used to remember reverse opening direction for door_rotating - { - this.pos2 = '0 0 0' - this.pos2; - this.lip = 0; - } - this.state = STATE_BOTTOM; -} - -void door_rotating_go_down(entity this) -{ - if (this.noise2 != "") - _sound (this, CH_TRIGGER_SINGLE, this.noise2, VOL_BASE, ATTEN_NORM); - if (this.max_health) - { - this.takedamage = DAMAGE_YES; - this.health = this.max_health; - } - - this.state = STATE_DOWN; - SUB_CalcAngleMove (this, this.pos1, TSPEED_LINEAR, this.speed, door_rotating_hit_bottom); -} - -void door_rotating_go_up(entity this, entity oth) -{ - if (this.state == STATE_UP) - return; // already going up - - if (this.state == STATE_TOP) - { // reset top wait time - this.nextthink = this.ltime + this.wait; - return; - } - if (this.noise2 != "") - _sound (this, CH_TRIGGER_SINGLE, this.noise2, VOL_BASE, ATTEN_NORM); - this.state = STATE_UP; - SUB_CalcAngleMove (this, this.pos2, TSPEED_LINEAR, this.speed, door_rotating_hit_top); - - string oldmessage; - oldmessage = this.message; - this.message = ""; - SUB_UseTargets(this, NULL, oth); // TODO: is oth needed here? - this.message = oldmessage; -} - - /* ========================================= door trigger @@ -465,7 +404,7 @@ LinkDoors entity LinkDoors_nextent(entity cur, entity near, entity pass) { - while((cur = find(cur, classname, pass.classname)) && ((cur.spawnflags & 4) || cur.enemy)) + while((cur = find(cur, classname, pass.classname)) && ((cur.spawnflags & DOOR_DONT_LINK) || cur.enemy)) { } return cur; @@ -498,7 +437,7 @@ void LinkDoors(entity this) if (this.enemy) return; // already linked by another door - if (this.spawnflags & 4) + if (this.spawnflags & DOOR_DONT_LINK) { this.owner = this.enemy = this; @@ -688,53 +627,93 @@ void door_reset(entity this) #ifdef SVQC -// spawnflags require key (for now only func_door) -spawnfunc(func_door) +// common code for func_door and func_door_rotating spawnfuncs +void door_init_shared(entity this) { - // Quake 1 keys compatibility - if (this.spawnflags & SPAWNFLAGS_GOLD_KEY) - this.itemkeys |= ITEM_KEY_BIT(0); - if (this.spawnflags & SPAWNFLAGS_SILVER_KEY) - this.itemkeys |= ITEM_KEY_BIT(1); - - SetMovedir(this); - this.max_health = this.health; - if (!InitMovingBrushTrigger(this)) - return; - this.effects |= EF_LOWPRECISION; - this.classname = "door"; + // unlock sound if(this.noise == "") + { this.noise = "misc/talk.wav"; + } + // door still locked sound if(this.noise3 == "") + { this.noise3 = "misc/talk.wav"; + } precache_sound(this.noise); precache_sound(this.noise3); - setblocked(this, door_blocked); - this.use = door_use; - - if(this.dmg && (this.message == "")) + if((this.dmg || (this.spawnflags & DOOR_CRUSH)) && (this.message == "")) + { this.message = "was squished"; - if(this.dmg && (this.message2 == "")) + } + if((this.dmg || (this.spawnflags & DOOR_CRUSH)) && (this.message2 == "")) + { this.message2 = "was squished by"; + } + // TODO: other soundpacks if (this.sounds > 0) { this.noise2 = "plats/medplat1.wav"; this.noise1 = "plats/medplat2.wav"; } - if(this.noise1 && this.noise1 != "") { precache_sound(this.noise1); } - if(this.noise2 && this.noise2 != "") { precache_sound(this.noise2); } + // sound when door stops moving + if(this.noise1 && this.noise1 != "") + { + precache_sound(this.noise1); + } + // sound when door is moving + if(this.noise2 && this.noise2 != "") + { + precache_sound(this.noise2); + } - if (!this.speed) - this.speed = 100; if (!this.wait) + { this.wait = 3; + } if (!this.lip) + { this.lip = 8; + } + + this.state = STATE_BOTTOM; + + if (this.health) + { + //this.canteamdamage = true; // TODO + this.takedamage = DAMAGE_YES; + this.event_damage = door_damage; + } + + if (this.items) + { + this.wait = -1; + } +} + +// spawnflags require key (for now only func_door) +spawnfunc(func_door) +{ + // Quake 1 keys compatibility + if (this.spawnflags & SPAWNFLAGS_GOLD_KEY) + this.itemkeys |= ITEM_KEY_BIT(0); + if (this.spawnflags & SPAWNFLAGS_SILVER_KEY) + this.itemkeys |= ITEM_KEY_BIT(1); + + SetMovedir(this); + + if (!InitMovingBrushTrigger(this)) + return; + this.effects |= EF_LOWPRECISION; + this.classname = "door"; + + setblocked(this, door_blocked); + this.use = door_use; this.pos1 = this.origin; this.pos2 = this.pos1 + this.movedir*(fabs(this.movedir*this.size) - this.lip); @@ -747,18 +726,13 @@ spawnfunc(func_door) if (this.spawnflags & DOOR_START_OPEN) InitializeEntity(this, door_init_startopen, INITPRIO_SETLOCATION); - this.state = STATE_BOTTOM; + door_init_shared(this); - if (this.health) + if (!this.speed) { - //this.canteamdamage = true; // TODO - this.takedamage = DAMAGE_YES; - this.event_damage = door_damage; + this.speed = 100; } - if (this.items) - this.wait = -1; - settouch(this, door_touch); // LinkDoors can't be done until all of the doors have been spawned, so diff --git a/qcsrc/common/triggers/func/door.qh b/qcsrc/common/triggers/func/door.qh index 84a9d6aa23..181de8b7b8 100644 --- a/qcsrc/common/triggers/func/door.qh +++ b/qcsrc/common/triggers/func/door.qh @@ -1,16 +1,15 @@ #pragma once -// door constants -const int DOOR_START_OPEN = 1; -const int DOOR_DONT_LINK = 4; -const int DOOR_TOGGLE = 32; -const int DOOR_NOSPLASH = 256; // generic anti-splashdamage spawnflag +const int DOOR_START_OPEN = BIT(0); +const int DOOR_DONT_LINK = BIT(2); +const int SPAWNFLAGS_GOLD_KEY = BIT(3); // Quake 1 compat, can only be used with func_door! +const int SPAWNFLAGS_SILVER_KEY = BIT(4); // Quake 1 compat, can only be used with func_door! +const int DOOR_TOGGLE = BIT(5); -const int DOOR_NONSOLID = 1024; +const int DOOR_NONSOLID = BIT(10); +const int DOOR_CRUSH = BIT(11); // can't use CRUSH cause that is the same as DOOR_DONT_LINK -const int SPAWNFLAGS_GOLD_KEY = 8; -const int SPAWNFLAGS_SILVER_KEY = 16; #ifdef CSQC // stuff for preload diff --git a/qcsrc/common/triggers/func/door_rotating.qc b/qcsrc/common/triggers/func/door_rotating.qc index c61a026866..41fd05e574 100644 --- a/qcsrc/common/triggers/func/door_rotating.qc +++ b/qcsrc/common/triggers/func/door_rotating.qc @@ -1,5 +1,4 @@ #include "door_rotating.qh" -#ifdef SVQC /*QUAKED spawnfunc_func_door_rotating (0 .5 .8) ? START_OPEN BIDIR DOOR_DONT_LINK BIDIR_IN_DOWN x TOGGLE X_AXIS Y_AXIS if two doors touch, they are assumed to be connected and operate as a unit. @@ -28,6 +27,68 @@ START_OPEN causes the door to move to its destination when spawned, and operate FIXME: only one sound set available at the time being */ +#ifdef GAMEQC +void door_rotating_hit_top(entity this) +{ + if (this.noise1 != "") + _sound (this, CH_TRIGGER_SINGLE, this.noise1, VOL_BASE, ATTEN_NORM); + this.state = STATE_TOP; + if (this.spawnflags & DOOR_TOGGLE) + return; // don't come down automatically + setthink(this, door_rotating_go_down); + this.nextthink = this.ltime + this.wait; +} + +void door_rotating_hit_bottom(entity this) +{ + if (this.noise1 != "") + _sound (this, CH_TRIGGER_SINGLE, this.noise1, VOL_BASE, ATTEN_NORM); + if (this.lip==666) // this.lip is used to remember reverse opening direction for door_rotating + { + this.pos2 = '0 0 0' - this.pos2; + this.lip = 0; + } + this.state = STATE_BOTTOM; +} + +void door_rotating_go_down(entity this) +{ + if (this.noise2 != "") + _sound (this, CH_TRIGGER_SINGLE, this.noise2, VOL_BASE, ATTEN_NORM); + if (this.max_health) + { + this.takedamage = DAMAGE_YES; + this.health = this.max_health; + } + + this.state = STATE_DOWN; + SUB_CalcAngleMove (this, this.pos1, TSPEED_LINEAR, this.speed, door_rotating_hit_bottom); +} + +void door_rotating_go_up(entity this, entity oth) +{ + if (this.state == STATE_UP) + return; // already going up + + if (this.state == STATE_TOP) + { // reset top wait time + this.nextthink = this.ltime + this.wait; + return; + } + if (this.noise2 != "") + _sound (this, CH_TRIGGER_SINGLE, this.noise2, VOL_BASE, ATTEN_NORM); + this.state = STATE_UP; + SUB_CalcAngleMove (this, this.pos2, TSPEED_LINEAR, this.speed, door_rotating_hit_top); + + string oldmessage; + oldmessage = this.message; + this.message = ""; + SUB_UseTargets(this, NULL, oth); // TODO: is oth needed here? + this.message = oldmessage; +} +#endif + +#ifdef SVQC void door_rotating_reset(entity this) { this.angles = this.pos1; @@ -44,17 +105,15 @@ void door_rotating_init_startopen(entity this) this.pos1 = this.movedir; } - spawnfunc(func_door_rotating) { - //if (!this.deathtype) // map makers can override this // this.deathtype = " got in the way"; // I abuse "movedir" for denoting the axis for now - if (this.spawnflags & 64) // X (untested) + if (this.spawnflags & DOOR_ROTATING_XAXIS) this.movedir = '0 0 1'; - else if (this.spawnflags & 128) // Y (untested) + else if (this.spawnflags & DOOR_ROTATING_YAXIS) this.movedir = '1 0 0'; else // Z this.movedir = '0 1 0'; @@ -64,7 +123,6 @@ spawnfunc(func_door_rotating) this.movedir = this.movedir * this.angles_y; this.angles = '0 0 0'; - this.max_health = this.health; this.avelocity = this.movedir; if (!InitMovingBrushTrigger(this)) return; @@ -75,28 +133,6 @@ spawnfunc(func_door_rotating) setblocked(this, door_blocked); this.use = door_use; - if(this.spawnflags & 8) - this.dmg = 10000; - - if(this.dmg && (this.message == "")) - this.message = "was squished"; - if(this.dmg && (this.message2 == "")) - this.message2 = "was squished by"; - - if (this.sounds > 0) - { - precache_sound ("plats/medplat1.wav"); - precache_sound ("plats/medplat2.wav"); - this.noise2 = "plats/medplat1.wav"; - this.noise1 = "plats/medplat2.wav"; - } - - if (!this.speed) - this.speed = 50; - if (!this.wait) - this.wait = 1; - this.lip = 0; // this.lip is used to remember reverse opening direction for door_rotating - this.pos1 = '0 0 0'; this.pos2 = this.movedir; @@ -105,17 +141,12 @@ spawnfunc(func_door_rotating) if (this.spawnflags & DOOR_START_OPEN) InitializeEntity(this, door_rotating_init_startopen, INITPRIO_SETLOCATION); - this.state = STATE_BOTTOM; - - if (this.health) + door_init_shared(this); + if (!this.speed) { - //this.canteamdamage = true; // TODO - this.takedamage = DAMAGE_YES; - this.event_damage = door_damage; + this.speed = 50; } - - if (this.items) - this.wait = -1; + this.lip = 0; // this.lip is used to remember reverse opening direction for door_rotating settouch(this, door_touch); diff --git a/qcsrc/common/triggers/func/door_rotating.qh b/qcsrc/common/triggers/func/door_rotating.qh index 6f70f09bee..5ff572859b 100644 --- a/qcsrc/common/triggers/func/door_rotating.qh +++ b/qcsrc/common/triggers/func/door_rotating.qh @@ -1 +1,14 @@ #pragma once + + +const int DOOR_ROTATING_BIDIR = BIT(1); +const int DOOR_ROTATING_BIDIR_IN_DOWN = BIT(3); + +const int DOOR_ROTATING_XAXIS = BIT(6); +const int DOOR_ROTATING_YAXIS = BIT(7); + + +#ifdef GAMEQC +void door_rotating_go_down(entity this); +void door_rotating_go_up(entity this, entity oth); +#endif diff --git a/qcsrc/common/triggers/func/door_secret.qc b/qcsrc/common/triggers/func/door_secret.qc index 5558269647..78e0dd64e9 100644 --- a/qcsrc/common/triggers/func/door_secret.qc +++ b/qcsrc/common/triggers/func/door_secret.qc @@ -8,12 +8,6 @@ void fd_secret_move5(entity this); void fd_secret_move6(entity this); void fd_secret_done(entity this); -const float SECRET_OPEN_ONCE = 1; // stays open -const float SECRET_1ST_LEFT = 2; // 1st move is left of arrow -const float SECRET_1ST_DOWN = 4; // 1st move is down from arrow -const float SECRET_NO_SHOOT = 8; // only opened by trigger -const float SECRET_YES_SHOOT = 16; // shootable even if targeted - void fd_secret_use(entity this, entity actor, entity trigger) { float temp; @@ -41,12 +35,12 @@ void fd_secret_use(entity this, entity actor, entity trigger) _sound(this, CH_TRIGGER_SINGLE, this.noise1, VOL_BASE, ATTEN_NORM); this.nextthink = this.ltime + 0.1; - temp = 1 - (this.spawnflags & SECRET_1ST_LEFT); // 1 or -1 + temp = 1 - (this.spawnflags & DOOR_SECRET_1ST_LEFT); // 1 or -1 makevectors(this.mangle); if (!this.t_width) { - if (this.spawnflags & SECRET_1ST_DOWN) + if (this.spawnflags & DOOR_SECRET_1ST_DOWN) this.t_width = fabs(v_up * this.size); else this.t_width = fabs(v_right * this.size); @@ -55,7 +49,7 @@ void fd_secret_use(entity this, entity actor, entity trigger) if (!this.t_length) this.t_length = fabs(v_forward * this.size); - if (this.spawnflags & SECRET_1ST_DOWN) + if (this.spawnflags & DOOR_SECRET_1ST_DOWN) this.dest1 = this.origin - v_up * this.t_width; else this.dest1 = this.origin + v_right * (this.t_width * temp); @@ -93,7 +87,7 @@ void fd_secret_move3(entity this) { if (this.noise3 != "") _sound(this, CH_TRIGGER_SINGLE, this.noise3, VOL_BASE, ATTEN_NORM); - if (!(this.spawnflags & SECRET_OPEN_ONCE)) + if (!(this.spawnflags & DOOR_SECRET_OPEN_ONCE) && this.wait >= 0) { this.nextthink = this.ltime + this.wait; setthink(this, fd_secret_move4); @@ -126,7 +120,7 @@ void fd_secret_move6(entity this) void fd_secret_done(entity this) { - if (this.spawnflags&SECRET_YES_SHOOT) + if (this.spawnflags&DOOR_SECRET_YES_SHOOT) { this.health = 10000; this.takedamage = DAMAGE_YES; @@ -172,7 +166,7 @@ void secret_touch(entity this, entity toucher) void secret_reset(entity this) { - if (this.spawnflags & SECRET_YES_SHOOT) + if (this.spawnflags & DOOR_SECRET_YES_SHOOT) { this.health = 10000; this.takedamage = DAMAGE_YES; @@ -204,7 +198,10 @@ spawnfunc(func_door_secret) /*if (!this.deathtype) // map makers can override this this.deathtype = " got in the way";*/ - if (!this.dmg) this.dmg = 2; + if (!this.dmg) + { + this.dmg = 2; + } // Magic formula... this.mangle = this.angles; @@ -213,8 +210,35 @@ spawnfunc(func_door_secret) if (!InitMovingBrushTrigger(this)) return; this.effects |= EF_LOWPRECISION; - if (this.noise == "") this.noise = "misc/talk.wav"; + // TODO: other soundpacks + if (this.sounds > 0) + { + this.noise1 = "plats/medplat1.wav"; + this.noise2 = "plats/medplat1.wav"; + this.noise3 = "plats/medplat2.wav"; + } + + // sound on touch + if (this.noise == "") + { + this.noise = "misc/talk.wav"; + } precache_sound(this.noise); + // sound while moving backwards + if (this.noise1 && this.noise1 != "") + { + precache_sound(this.noise1); + } + // sound while moving sideways + if (this.noise2 && this.noise2 != "") + { + precache_sound(this.noise2); + } + // sound when door stops moving + if (this.noise3 && this.noise3 != "") + { + precache_sound(this.noise3); + } settouch(this, secret_touch); setblocked(this, secret_blocked); @@ -224,9 +248,9 @@ spawnfunc(func_door_secret) { } else - this.spawnflags |= SECRET_YES_SHOOT; + this.spawnflags |= DOOR_SECRET_YES_SHOOT; - if (this.spawnflags & SECRET_YES_SHOOT) + if (this.spawnflags & DOOR_SECRET_YES_SHOOT) { //this.canteamdamage = true; // TODO this.health = 10000; diff --git a/qcsrc/common/triggers/func/door_secret.qh b/qcsrc/common/triggers/func/door_secret.qh index 6f70f09bee..ee575bc424 100644 --- a/qcsrc/common/triggers/func/door_secret.qh +++ b/qcsrc/common/triggers/func/door_secret.qh @@ -1 +1,8 @@ #pragma once + + +const int DOOR_SECRET_OPEN_ONCE = BIT(0); // stays open - LEGACY, set wait to -1 instead +const int DOOR_SECRET_1ST_LEFT = BIT(1); // 1st move is left of arrow +const int DOOR_SECRET_1ST_DOWN = BIT(2); // 1st move is down from arrow +const int DOOR_SECRET_NO_SHOOT = BIT(3); // only opened by trigger +const int DOOR_SECRET_YES_SHOOT = BIT(4); // shootable even if targeted diff --git a/qcsrc/common/triggers/func/ladder.qc b/qcsrc/common/triggers/func/ladder.qc index 92f361a145..020ecca085 100644 --- a/qcsrc/common/triggers/func/ladder.qc +++ b/qcsrc/common/triggers/func/ladder.qc @@ -126,8 +126,7 @@ spawnfunc(func_water) void func_ladder_remove(entity this) { - if(this.classname) { strunzone(this.classname); } - this.classname = string_null; + strfree(this.classname); } NET_HANDLE(ENT_CLIENT_LADDER, bool isnew) diff --git a/qcsrc/common/triggers/func/plat.qc b/qcsrc/common/triggers/func/plat.qc index 9f97a1cea0..b052336217 100644 --- a/qcsrc/common/triggers/func/plat.qc +++ b/qcsrc/common/triggers/func/plat.qc @@ -58,12 +58,19 @@ void plat_link(entity this) spawnfunc(func_plat) { - if (this.sounds == 0) this.sounds = 2; - - if (this.spawnflags & 4) this.dmg = 10000; + if (this.spawnflags & CRUSH) + { + this.dmg = 10000; + } - if (this.dmg && (this.message == "")) this.message = "was squished"; - if (this.dmg && (this.message2 == "")) this.message2 = "was squished by"; + if (this.dmg && (this.message == "")) + { + this.message = "was squished"; + } + if (this.dmg && (this.message2 == "")) + { + this.message2 = "was squished by"; + } if (this.sounds == 1) { @@ -77,13 +84,20 @@ spawnfunc(func_plat) this.noise1 = "plats/medplat2.wav"; } + // WARNING: backwards compatibility because people don't use already existing fields :( if (this.sound1) this.noise = this.sound1; if (this.sound2) this.noise1 = this.sound2; - if(this.noise && this.noise != "") { precache_sound(this.noise); } - if(this.noise1 && this.noise1 != "") { precache_sound(this.noise1); } + if(this.noise && this.noise != "") + { + precache_sound(this.noise); + } + if(this.noise1 && this.noise1 != "") + { + precache_sound(this.noise1); + } this.mangle = this.angles; this.angles = '0 0 0'; diff --git a/qcsrc/common/triggers/func/pointparticles.qc b/qcsrc/common/triggers/func/pointparticles.qc index 54fe212ae2..7de5a03ef8 100644 --- a/qcsrc/common/triggers/func/pointparticles.qc +++ b/qcsrc/common/triggers/func/pointparticles.qc @@ -4,39 +4,39 @@ REGISTER_NET_LINKED(ENT_CLIENT_POINTPARTICLES) #ifdef SVQC // NOTE: also contains func_sparks -bool pointparticles_SendEntity(entity this, entity to, float fl) +bool pointparticles_SendEntity(entity this, entity to, float sendflags) { WriteHeader(MSG_ENTITY, ENT_CLIENT_POINTPARTICLES); // optional features to save space - fl = fl & 0x0F; - if(this.spawnflags & 2) - fl |= 0x10; // absolute count on toggle-on + sendflags = sendflags & 0x0F; + if(this.spawnflags & PARTICLES_IMPULSE) + sendflags |= SF_POINTPARTICLES_IMPULSE; // absolute count on toggle-on if(this.movedir != '0 0 0' || this.velocity != '0 0 0') - fl |= 0x20; // 4 bytes - saves CPU + sendflags |= SF_POINTPARTICLES_MOVING; // 4 bytes - saves CPU if(this.waterlevel || this.count != 1) - fl |= 0x40; // 4 bytes - obscure features almost never used + sendflags |= SF_POINTPARTICLES_JITTER_AND_COUNT; // 4 bytes - obscure features almost never used if(this.mins != '0 0 0' || this.maxs != '0 0 0') - fl |= 0x80; // 14 bytes - saves lots of space + sendflags |= SF_POINTPARTICLES_BOUNDS; // 14 bytes - saves lots of space - WriteByte(MSG_ENTITY, fl); - if(fl & 2) + WriteByte(MSG_ENTITY, sendflags); + if(sendflags & SF_TRIGGER_UPDATE) { - if(this.state) + if(this.active == ACTIVE_ACTIVE) WriteCoord(MSG_ENTITY, this.impulse); else WriteCoord(MSG_ENTITY, 0); // off } - if(fl & 4) + if(sendflags & SF_TRIGGER_RESET) { WriteVector(MSG_ENTITY, this.origin); } - if(fl & 1) + if(sendflags & SF_TRIGGER_INIT) { if(this.model != "null") { WriteShort(MSG_ENTITY, this.modelindex); - if(fl & 0x80) + if(sendflags & SF_POINTPARTICLES_BOUNDS) { WriteVector(MSG_ENTITY, this.mins); WriteVector(MSG_ENTITY, this.maxs); @@ -45,19 +45,19 @@ bool pointparticles_SendEntity(entity this, entity to, float fl) else { WriteShort(MSG_ENTITY, 0); - if(fl & 0x80) + if(sendflags & SF_POINTPARTICLES_BOUNDS) { WriteVector(MSG_ENTITY, this.maxs); } } WriteShort(MSG_ENTITY, this.cnt); WriteString(MSG_ENTITY, this.mdl); - if(fl & 0x20) + if(sendflags & SF_POINTPARTICLES_MOVING) { WriteShort(MSG_ENTITY, compressShortVector(this.velocity)); WriteShort(MSG_ENTITY, compressShortVector(this.movedir)); } - if(fl & 0x40) + if(sendflags & SF_POINTPARTICLES_JITTER_AND_COUNT) { WriteShort(MSG_ENTITY, this.waterlevel * 16.0); WriteByte(MSG_ENTITY, this.count * 16.0); @@ -80,30 +80,16 @@ bool pointparticles_SendEntity(entity this, entity to, float fl) return 1; } -void pointparticles_use(entity this, entity actor, entity trigger) -{ - this.state = !this.state; - this.SendFlags |= 2; -} - void pointparticles_think(entity this) { if(this.origin != this.oldorigin) { - this.SendFlags |= 4; + this.SendFlags |= SF_TRIGGER_RESET; this.oldorigin = this.origin; } this.nextthink = time; } -void pointparticles_reset(entity this) -{ - if(this.spawnflags & 1) - this.state = 1; - else - this.state = 0; -} - spawnfunc(func_pointparticles) { if(this.model != "") { precache_model(this.model); _setmodel(this, this.model); } @@ -125,41 +111,35 @@ spawnfunc(func_pointparticles) setsize(this, '0 0 0', this.maxs - this.mins); } //if(!this.cnt) this.cnt = _particleeffectnum(this.mdl); + this.setactive = generic_netlinked_setactive; - Net_LinkEntity(this, (this.spawnflags & 4), 0, pointparticles_SendEntity); + Net_LinkEntity(this, (this.spawnflags & PARTICLES_VISCULLING), 0, pointparticles_SendEntity); IFTARGETED { - this.use = pointparticles_use; - this.reset = pointparticles_reset; - this.reset(this); + // backwards compatibility + this.use = generic_netlinked_legacy_use; } - else - this.state = 1; + this.reset = generic_netlinked_reset; + this.reset(this); setthink(this, pointparticles_think); this.nextthink = time; } spawnfunc(func_sparks) { - // this.cnt is the amount of sparks that one burst will spawn - if(this.cnt < 1) { - this.cnt = 25.0; // nice default value + if(this.count < 1) { + this.count = 25.0; // nice default value } - // this.wait is the probability that a sparkthink will spawn a spark shower - // range: 0 - 1, but 0 makes little sense, so... - if(this.wait < 0.05) { - this.wait = 0.25; // nice default value + if(this.impulse < 0.5) { + this.impulse = 2.5; // nice default value } - this.count = this.cnt; this.mins = '0 0 0'; this.maxs = '0 0 0'; this.velocity = '0 0 -1'; this.mdl = "TE_SPARK"; - this.impulse = 10 * this.wait; // by default 2.5/sec - this.wait = 0; this.cnt = 0; // use mdl spawnfunc_func_pointparticles(this); @@ -169,17 +149,19 @@ spawnfunc(func_sparks) .int dphitcontentsmask; entityclass(PointParticles); -class(PointParticles) .int cnt; // effect number -class(PointParticles) .vector velocity; // particle velocity -class(PointParticles) .float waterlevel; // direction jitter -class(PointParticles) .int count; // count multiplier -class(PointParticles) .int impulse; // density -class(PointParticles) .string noise; // sound -class(PointParticles) .float atten; -class(PointParticles) .float volume; -class(PointParticles) .float absolute; // 1 = count per second is absolute, 2 = only spawn at toggle -class(PointParticles) .vector movedir; // trace direction -class(PointParticles) .float glow_color; // palette index +classfield(PointParticles) .int cnt; // effect number +classfield(PointParticles) .vector velocity; // particle velocity +classfield(PointParticles) .float waterlevel; // direction jitter +classfield(PointParticles) .int count; // count multiplier +classfield(PointParticles) .int impulse; // density +classfield(PointParticles) .string noise; // sound +classfield(PointParticles) .float atten; +classfield(PointParticles) .float volume; +classfield(PointParticles) .float absolute; // 1 = count per second is absolute, ABSOLUTE_ONLY_SPAWN_AT_TOGGLE = only spawn at toggle +classfield(PointParticles) .vector movedir; // trace direction +classfield(PointParticles) .float glow_color; // palette index + +const int ABSOLUTE_ONLY_SPAWN_AT_TOGGLE = 2; void Draw_PointParticles(entity this) { @@ -190,7 +172,7 @@ void Draw_PointParticles(entity this) o = this.origin; sz = this.maxs - this.mins; n = doBGMScript(this); - if(this.absolute == 2) + if(this.absolute == ABSOLUTE_ONLY_SPAWN_AT_TOGGLE) { if(n >= 0) n = this.just_toggled ? this.impulse : 0; @@ -253,37 +235,31 @@ void Draw_PointParticles(entity this) void Ent_PointParticles_Remove(entity this) { - if(this.noise) - strunzone(this.noise); - this.noise = string_null; - if(this.bgmscript) - strunzone(this.bgmscript); - this.bgmscript = string_null; - if(this.mdl) - strunzone(this.mdl); - this.mdl = string_null; + strfree(this.noise); + strfree(this.bgmscript); + strfree(this.mdl); } NET_HANDLE(ENT_CLIENT_POINTPARTICLES, bool isnew) { float i; vector v; - int f = ReadByte(); - if(f & 2) + int sendflags = ReadByte(); + if(sendflags & SF_TRIGGER_UPDATE) { i = ReadCoord(); // density (<0: point, >0: volume) if(i && !this.impulse && (this.cnt || this.mdl)) // this.cnt check is so it only happens if the ent already existed this.just_toggled = 1; this.impulse = i; } - if(f & 4) + if(sendflags & SF_TRIGGER_RESET) { this.origin = ReadVector(); } - if(f & 1) + if(sendflags & SF_TRIGGER_INIT) { this.modelindex = ReadShort(); - if(f & 0x80) + if(sendflags & SF_POINTPARTICLES_BOUNDS) { if(this.modelindex) { @@ -304,7 +280,7 @@ NET_HANDLE(ENT_CLIENT_POINTPARTICLES, bool isnew) this.cnt = ReadShort(); // effect number this.mdl = strzone(ReadString()); // effect string - if(f & 0x20) + if(sendflags & SF_POINTPARTICLES_MOVING) { this.velocity = decompressShortVector(ReadShort()); this.movedir = decompressShortVector(ReadShort()); @@ -313,7 +289,7 @@ NET_HANDLE(ENT_CLIENT_POINTPARTICLES, bool isnew) { this.velocity = this.movedir = '0 0 0'; } - if(f & 0x40) + if(sendflags & SF_POINTPARTICLES_JITTER_AND_COUNT) { this.waterlevel = ReadShort() / 16.0; this.count = ReadByte() / 16.0; @@ -323,17 +299,13 @@ NET_HANDLE(ENT_CLIENT_POINTPARTICLES, bool isnew) this.waterlevel = 0; this.count = 1; } - if(this.noise) - strunzone(this.noise); - if(this.bgmscript) - strunzone(this.bgmscript); - this.noise = strzone(ReadString()); + strcpy(this.noise, ReadString()); if(this.noise != "") { this.atten = ReadByte() / 64.0; this.volume = ReadByte() / 255.0; } - this.bgmscript = strzone(ReadString()); + strcpy(this.bgmscript, ReadString()); if(this.bgmscript != "") { this.bgmscriptattack = ReadByte() / 64.0; @@ -346,18 +318,18 @@ NET_HANDLE(ENT_CLIENT_POINTPARTICLES, bool isnew) return = true; - if(f & 2) + if(sendflags & SF_TRIGGER_UPDATE) { this.absolute = (this.impulse >= 0); if(!this.absolute) { v = this.maxs - this.mins; - this.impulse *= -v.x * v.y * v.z / 262144; // relative: particles per 64^3 cube + this.impulse *= -v.x * v.y * v.z / (64**3); // relative: particles per 64^3 cube } } - if(f & 0x10) - this.absolute = 2; + if(sendflags & SF_POINTPARTICLES_IMPULSE) + this.absolute = ABSOLUTE_ONLY_SPAWN_AT_TOGGLE; setorigin(this, this.origin); setsize(this, this.mins, this.maxs); diff --git a/qcsrc/common/triggers/func/pointparticles.qh b/qcsrc/common/triggers/func/pointparticles.qh index 6f70f09bee..b167527bc8 100644 --- a/qcsrc/common/triggers/func/pointparticles.qh +++ b/qcsrc/common/triggers/func/pointparticles.qh @@ -1 +1,11 @@ #pragma once + +// spawnflags +const int PARTICLES_IMPULSE = BIT(1); +const int PARTICLES_VISCULLING = BIT(2); + +// sendflags +const int SF_POINTPARTICLES_IMPULSE = BIT(4); +const int SF_POINTPARTICLES_MOVING = BIT(5); // Send velocity and movedir +const int SF_POINTPARTICLES_JITTER_AND_COUNT = BIT(6); // Send waterlevel (=jitter) and count +const int SF_POINTPARTICLES_BOUNDS = BIT(7); // Send min and max of the brush diff --git a/qcsrc/common/triggers/func/rainsnow.qc b/qcsrc/common/triggers/func/rainsnow.qc index 1817a9ce9a..c765a4293b 100644 --- a/qcsrc/common/triggers/func/rainsnow.qc +++ b/qcsrc/common/triggers/func/rainsnow.qc @@ -38,17 +38,19 @@ spawnfunc(func_rain) this.solid = SOLID_NOT; SetBrushEntityModel(this); if (!this.cnt) + { this.cnt = 12; + } if (!this.count) this.count = 2000; - this.count = 0.01 * this.count * (this.size_x / 1024) * (this.size_y / 1024); + // relative to absolute particle count + this.count = 0.1 * this.count * (this.size_x / 1024) * (this.size_y / 1024); if (this.count < 1) this.count = 1; if(this.count > 65535) this.count = 65535; - this.state = 1; // 1 is rain, 0 is snow - this.Version = 1; + this.state = RAINSNOW_RAIN; Net_LinkEntity(this, false, 0, rainsnow_SendEntity); } @@ -76,17 +78,19 @@ spawnfunc(func_snow) this.solid = SOLID_NOT; SetBrushEntityModel(this); if (!this.cnt) + { this.cnt = 12; + } if (!this.count) this.count = 2000; - this.count = 0.01 * this.count * (this.size_x / 1024) * (this.size_y / 1024); + // relative to absolute particle count + this.count = 0.1 * this.count * (this.size_x / 1024) * (this.size_y / 1024); if (this.count < 1) this.count = 1; if(this.count > 65535) this.count = 65535; - this.state = 0; // 1 is rain, 0 is snow - this.Version = 1; + this.state = RAINSNOW_SNOW; Net_LinkEntity(this, false, 0, rainsnow_SendEntity); } @@ -113,11 +117,11 @@ void Draw_Snow(entity this) NET_HANDLE(ENT_CLIENT_RAINSNOW, bool isnew) { - this.impulse = ReadByte(); // Rain, Snow, or Whatever + this.state = ReadByte(); // Rain, Snow, or Whatever this.origin = ReadVector(); this.maxs = ReadVector(); this.velocity = decompressShortVector(ReadShort()); - this.count = ReadShort() * 10; + this.count = ReadShort(); this.glow_color = ReadByte(); // color return = true; @@ -130,7 +134,7 @@ NET_HANDLE(ENT_CLIENT_RAINSNOW, bool isnew) setsize(this, this.mins, this.maxs); this.solid = SOLID_NOT; if (isnew) IL_PUSH(g_drawables, this); - if(this.impulse) + if(this.state == RAINSNOW_RAIN) this.draw = Draw_Rain; else this.draw = Draw_Snow; diff --git a/qcsrc/common/triggers/func/rainsnow.qh b/qcsrc/common/triggers/func/rainsnow.qh index 6f70f09bee..d60eb4f481 100644 --- a/qcsrc/common/triggers/func/rainsnow.qh +++ b/qcsrc/common/triggers/func/rainsnow.qh @@ -1 +1,5 @@ #pragma once + + +const int RAINSNOW_SNOW = 0; +const int RAINSNOW_RAIN = 1; diff --git a/qcsrc/common/triggers/func/rotating.qc b/qcsrc/common/triggers/func/rotating.qc index 6268dcfeb8..35351ee08e 100644 --- a/qcsrc/common/triggers/func/rotating.qc +++ b/qcsrc/common/triggers/func/rotating.qc @@ -1,6 +1,5 @@ #include "rotating.qh" #ifdef SVQC -const int FUNC_ROTATING_STARTOFF = BIT(4); void func_rotating_setactive(entity this, int astate) { @@ -15,9 +14,18 @@ void func_rotating_setactive(entity this, int astate) this.active = astate; if(this.active == ACTIVE_NOT) + { this.avelocity = '0 0 0'; + stopsound(this, CH_AMBIENT_SINGLE); + } else + { this.avelocity = this.pos1; + if(this.noise && this.noise != "") + { + _sound(this, CH_AMBIENT_SINGLE, this.noise, VOL_BASE, ATTEN_IDLE); + } + } } void func_rotating_reset(entity this) @@ -26,13 +34,20 @@ void func_rotating_reset(entity this) if(this.spawnflags & FUNC_ROTATING_STARTOFF) { - this.avelocity = '0 0 0'; - this.active = ACTIVE_NOT; + this.setactive(this, ACTIVE_NOT); } else { - this.avelocity = this.pos1; - this.active = ACTIVE_ACTIVE; + this.setactive(this, ACTIVE_ACTIVE); + } +} + +void func_rotating_init_for_player(entity this, entity player) +{ + if (this.noise && this.noise != "" && this.active == ACTIVE_ACTIVE && IS_REAL_CLIENT(player)) + { + msg_entity = player; + soundto (MSG_ONE, this, CH_AMBIENT_SINGLE, this.noise, VOL_BASE, ATTEN_IDLE); } } @@ -46,37 +61,24 @@ dmgtime : See above. spawnfunc(func_rotating) { - if (this.noise != "") + if (this.noise && this.noise != "") { precache_sound(this.noise); - ambientsound(this.origin, this.noise, VOL_BASE, ATTEN_IDLE); } this.setactive = func_rotating_setactive; if (!this.speed) this.speed = 100; - // FIXME: test if this turns the right way, then remove this comment (negate as needed) - if (this.spawnflags & BIT(2)) // X (untested) + if (this.spawnflags & FUNC_ROTATING_XAXIS) this.avelocity = '0 0 1' * this.speed; - // FIXME: test if this turns the right way, then remove this comment (negate as needed) - else if (this.spawnflags & BIT(3)) // Y (untested) + else if (this.spawnflags & FUNC_ROTATING_YAXIS) this.avelocity = '1 0 0' * this.speed; - // FIXME: test if this turns the right way, then remove this comment (negate as needed) else // Z this.avelocity = '0 1 0' * this.speed; this.pos1 = this.avelocity; - // do this after setting pos1, so we can safely reactivate the func_rotating - if(this.spawnflags & FUNC_ROTATING_STARTOFF) - { - this.avelocity = '0 0 0'; - this.active = ACTIVE_NOT; - } - else - this.active = ACTIVE_ACTIVE; - if(this.dmg && (this.message == "")) this.message = " was squished"; if(this.dmg && (this.message2 == "")) @@ -99,5 +101,10 @@ spawnfunc(func_rotating) setthink(this, SUB_NullThink); // for PushMove this.reset = func_rotating_reset; + this.reset(this); + + // maybe send sound to new players + IL_PUSH(g_initforplayer, this); + this.init_for_player = func_rotating_init_for_player; } #endif diff --git a/qcsrc/common/triggers/func/rotating.qh b/qcsrc/common/triggers/func/rotating.qh index 6f70f09bee..ad1b6ec920 100644 --- a/qcsrc/common/triggers/func/rotating.qh +++ b/qcsrc/common/triggers/func/rotating.qh @@ -1 +1,6 @@ #pragma once + + +const int FUNC_ROTATING_XAXIS = BIT(2); +const int FUNC_ROTATING_YAXIS = BIT(3); +const int FUNC_ROTATING_STARTOFF = BIT(4); diff --git a/qcsrc/common/triggers/func/train.qc b/qcsrc/common/triggers/func/train.qc index ead0867081..4e9c334562 100644 --- a/qcsrc/common/triggers/func/train.qc +++ b/qcsrc/common/triggers/func/train.qc @@ -16,7 +16,7 @@ void train_wait(entity this) entity targ, cp; vector ang; targ = this.future_target; - if((this.spawnflags & 1) && targ.curvetarget) + if((this.spawnflags & TRAIN_CURVE) && targ.curvetarget) cp = find(NULL, targetname, targ.curvetarget); else cp = NULL; @@ -43,7 +43,7 @@ void train_wait(entity this) #ifdef SVQC entity tg = this.future_target; - if(tg.spawnflags & 4) + if(tg.spawnflags & TRAIN_NEEDACTIVATION) { this.use = train_use; setthink(this, func_null); @@ -91,7 +91,7 @@ void train_next(entity this) this.target_random = targ.target_random; this.future_target = train_next_find(targ); - if (this.spawnflags & 1) + if (this.spawnflags & TRAIN_CURVE) { if(targ.curvetarget) { @@ -195,7 +195,7 @@ void train_use(entity this, entity actor, entity trigger) { this.nextthink = this.ltime + 1; setthink(this, train_next); - this.use = func_null; // not again + this.use = func_null; // not again, next target can set it again if needed if(trigger.target2 && trigger.target2 != "") this.future_target = find(NULL, targetname, trigger.target2); } @@ -211,7 +211,7 @@ void func_train_find(entity this) objerror(this, "func_train_find: no next target"); setorigin(this, targ.origin - this.view_ofs); - if(!(this.spawnflags & 4)) + if(!(this.spawnflags & TRAIN_NEEDACTIVATION)) { this.nextthink = this.ltime + 1; setthink(this, train_next); @@ -242,10 +242,10 @@ spawnfunc(func_train) return; this.effects |= EF_LOWPRECISION; - if(this.spawnflags & 4) + if(this.spawnflags & TRAIN_NEEDACTIVATION) this.use = train_use; - if (this.spawnflags & 2) + if (this.spawnflags & TRAIN_TURN) { this.platmovetype_turn = true; this.view_ofs = '0 0 0'; // don't offset a rotating train, origin works differently now diff --git a/qcsrc/common/triggers/func/train.qh b/qcsrc/common/triggers/func/train.qh index 8b6f7c02da..0b2a099c53 100644 --- a/qcsrc/common/triggers/func/train.qh +++ b/qcsrc/common/triggers/func/train.qh @@ -1,5 +1,10 @@ #pragma once + +const int TRAIN_CURVE = BIT(0); +const int TRAIN_TURN = BIT(1); +const int TRAIN_NEEDACTIVATION = BIT(2); + #ifdef CSQC .float dmgtime; #endif diff --git a/qcsrc/common/triggers/func/vectormamamam.qc b/qcsrc/common/triggers/func/vectormamamam.qc index 951a740a20..61da52acbc 100644 --- a/qcsrc/common/triggers/func/vectormamamam.qc +++ b/qcsrc/common/triggers/func/vectormamamam.qc @@ -6,20 +6,20 @@ .float targetfactor, target2factor, target3factor, target4factor; .vector targetnormal, target2normal, target3normal, target4normal; -vector func_vectormamamam_origin(entity o, float t) +vector func_vectormamamam_origin(entity o, float timestep) { vector v, p; - float f; + float flags; entity e; - f = o.spawnflags; + flags = o.spawnflags; v = '0 0 0'; e = o.wp00; if(e) { - p = e.origin + t * e.velocity; - if(f & 1) + p = e.origin + timestep * e.velocity; + if(flags & PROJECT_ON_TARGETNORMAL) v = v + (p * o.targetnormal) * o.targetnormal * o.targetfactor; else v = v + (p - (p * o.targetnormal) * o.targetnormal) * o.targetfactor; @@ -28,8 +28,8 @@ vector func_vectormamamam_origin(entity o, float t) e = o.wp01; if(e) { - p = e.origin + t * e.velocity; - if(f & 2) + p = e.origin + timestep * e.velocity; + if(flags & PROJECT_ON_TARGET2NORMAL) v = v + (p * o.target2normal) * o.target2normal * o.target2factor; else v = v + (p - (p * o.target2normal) * o.target2normal) * o.target2factor; @@ -38,8 +38,8 @@ vector func_vectormamamam_origin(entity o, float t) e = o.wp02; if(e) { - p = e.origin + t * e.velocity; - if(f & 4) + p = e.origin + timestep * e.velocity; + if(flags & PROJECT_ON_TARGET3NORMAL) v = v + (p * o.target3normal) * o.target3normal * o.target3factor; else v = v + (p - (p * o.target3normal) * o.target3normal) * o.target3factor; @@ -48,8 +48,8 @@ vector func_vectormamamam_origin(entity o, float t) e = o.wp03; if(e) { - p = e.origin + t * e.velocity; - if(f & 8) + p = e.origin + timestep * e.velocity; + if(flags & PROJECT_ON_TARGET4NORMAL) v = v + (p * o.target4normal) * o.target4normal * o.target4factor; else v = v + (p - (p * o.target4normal) * o.target4normal) * o.target4factor; @@ -60,7 +60,7 @@ vector func_vectormamamam_origin(entity o, float t) void func_vectormamamam_controller_think(entity this) { - this.nextthink = time + 0.1; + this.nextthink = time + vectormamamam_timestep; if(this.owner.active != ACTIVE_ACTIVE) { @@ -69,7 +69,7 @@ void func_vectormamamam_controller_think(entity this) } if(this.owner.classname == "func_vectormamamam") // don't brake stuff if the func_vectormamamam was killtarget'ed - this.owner.velocity = (this.owner.destvec + func_vectormamamam_origin(this.owner, 0.1) - this.owner.origin) * 10; + this.owner.velocity = (this.owner.destvec + func_vectormamamam_origin(this.owner, vectormamamam_timestep) - this.owner.origin) * 10; } void func_vectormamamam_findtarget(entity this) @@ -98,12 +98,45 @@ void func_vectormamamam_findtarget(entity this) setthink(controller, func_vectormamamam_controller_think); } +void func_vectormamamam_setactive(entity this, int astate) +{ + if (astate == ACTIVE_TOGGLE) + { + if(this.active == ACTIVE_ACTIVE) + this.active = ACTIVE_NOT; + else + this.active = ACTIVE_ACTIVE; + } + else + this.active = astate; + + if(this.active == ACTIVE_NOT) + { + stopsound(this, CH_TRIGGER_SINGLE); + } + else + { + if(this.noise && this.noise != "") + { + _sound(this, CH_TRIGGER_SINGLE, this.noise, VOL_BASE, ATTEN_IDLE); + } + } +} + +void func_vectormamamam_init_for_player(entity this, entity player) +{ + if (this.noise && this.noise != "" && this.active == ACTIVE_ACTIVE && IS_REAL_CLIENT(player)) + { + msg_entity = player; + soundto(MSG_ONE, this, CH_TRIGGER_SINGLE, this.noise, VOL_BASE, ATTEN_IDLE); + } +} + spawnfunc(func_vectormamamam) { if (this.noise != "") { precache_sound(this.noise); - soundto(MSG_INIT, this, CH_TRIGGER_SINGLE, this.noise, VOL_BASE, ATTEN_IDLE); } if(!this.targetfactor) @@ -139,9 +172,6 @@ spawnfunc(func_vectormamamam) this.dmgtime = 0.25; this.dmgtime2 = time; - if(this.netname == "") - this.netname = "1 0 0 0 1"; - if (!InitMovingBrushTrigger(this)) return; @@ -152,7 +182,12 @@ spawnfunc(func_vectormamamam) // Savage: Reduce bandwith, critical on e.g. nexdm02 this.effects |= EF_LOWPRECISION; - this.active = ACTIVE_ACTIVE; + this.setactive = func_vectormamamam_setactive; + this.setactive(this, ACTIVE_ACTIVE); + + // maybe send sound to new players + IL_PUSH(g_initforplayer, this); + this.init_for_player = func_vectormamamam_init_for_player; InitializeEntity(this, func_vectormamamam_findtarget, INITPRIO_FINDTARGET); } diff --git a/qcsrc/common/triggers/func/vectormamamam.qh b/qcsrc/common/triggers/func/vectormamamam.qh index 6f70f09bee..7eb6b0a63b 100644 --- a/qcsrc/common/triggers/func/vectormamamam.qh +++ b/qcsrc/common/triggers/func/vectormamamam.qh @@ -1 +1,9 @@ #pragma once + + +const int PROJECT_ON_TARGETNORMAL = BIT(0); +const int PROJECT_ON_TARGET2NORMAL = BIT(1); +const int PROJECT_ON_TARGET3NORMAL = BIT(2); +const int PROJECT_ON_TARGET4NORMAL = BIT(3); + +const float vectormamamam_timestep = 0.1; diff --git a/qcsrc/common/triggers/misc/corner.qc b/qcsrc/common/triggers/misc/corner.qc index 6c9093318f..a0f67b759b 100644 --- a/qcsrc/common/triggers/misc/corner.qc +++ b/qcsrc/common/triggers/misc/corner.qc @@ -39,23 +39,12 @@ spawnfunc(path_corner) void corner_remove(entity this) { - if(this.target) { strunzone(this.target); } - this.target = string_null; - - if(this.target2) { strunzone(this.target2); } - this.target2 = string_null; - - if(this.target3) { strunzone(this.target3); } - this.target3 = string_null; - - if(this.target4) { strunzone(this.target4); } - this.target4 = string_null; - - if(this.targetname) { strunzone(this.targetname); } - this.targetname = string_null; - - if(this.platmovetype) { strunzone(this.platmovetype); } - this.platmovetype = string_null; + strfree(this.target); + strfree(this.target2); + strfree(this.target3); + strfree(this.target4); + strfree(this.targetname); + strfree(this.platmovetype); } NET_HANDLE(ENT_CLIENT_CORNER, bool isnew) diff --git a/qcsrc/common/triggers/misc/follow.qc b/qcsrc/common/triggers/misc/follow.qc index 63db2c18fa..87619ca711 100644 --- a/qcsrc/common/triggers/misc/follow.qc +++ b/qcsrc/common/triggers/misc/follow.qc @@ -29,10 +29,10 @@ void follow_init(entity this) objerror(this, "follow: could not find target/killtarget"); return; } - else if(this.spawnflags & 1) + else if(this.spawnflags & FOLLOW_ATTACH) { // attach - if(this.spawnflags & 2) + if(this.spawnflags & FOLLOW_LOCAL) { setattachment(dst, src, this.message); } @@ -46,7 +46,7 @@ void follow_init(entity this) } else { - if(this.spawnflags & 2) + if(this.spawnflags & FOLLOW_LOCAL) { set_movetype(dst, MOVETYPE_FOLLOW); dst.aiment = src; diff --git a/qcsrc/common/triggers/misc/follow.qh b/qcsrc/common/triggers/misc/follow.qh index 6f70f09bee..aef491ff32 100644 --- a/qcsrc/common/triggers/misc/follow.qh +++ b/qcsrc/common/triggers/misc/follow.qh @@ -1 +1,5 @@ #pragma once + + +const int FOLLOW_ATTACH = BIT(0); +const int FOLLOW_LOCAL = BIT(1); diff --git a/qcsrc/common/triggers/misc/laser.qc b/qcsrc/common/triggers/misc/laser.qc index 3d5ef42d84..df88b750f2 100644 --- a/qcsrc/common/triggers/misc/laser.qc +++ b/qcsrc/common/triggers/misc/laser.qc @@ -16,12 +16,12 @@ void misc_laser_aim(entity this) vector a; if(this.enemy) { - if(this.spawnflags & 2) + if(this.spawnflags & LASER_FINITE) { if(this.enemy.origin != this.mangle) { this.mangle = this.enemy.origin; - this.SendFlags |= 2; + this.SendFlags |= SF_LASER_UPDATE_TARGET; } } else @@ -31,7 +31,7 @@ void misc_laser_aim(entity this) if(a != this.mangle) { this.mangle = a; - this.SendFlags |= 2; + this.SendFlags |= SF_LASER_UPDATE_TARGET; } } } @@ -40,12 +40,12 @@ void misc_laser_aim(entity this) if(this.angles != this.mangle) { this.mangle = this.angles; - this.SendFlags |= 2; + this.SendFlags |= SF_LASER_UPDATE_TARGET; } } if(this.origin != this.oldorigin) { - this.SendFlags |= 1; + this.SendFlags |= SF_LASER_UPDATE_ORIGIN; this.oldorigin = this.origin; } } @@ -65,7 +65,7 @@ void misc_laser_think(entity this) this.nextthink = time; - if(!this.state) + if(this.active == ACTIVE_NOT) return; misc_laser_aim(this); @@ -73,13 +73,13 @@ void misc_laser_think(entity this) if(this.enemy) { o = this.enemy.origin; - if (!(this.spawnflags & 2)) - o = this.origin + normalize(o - this.origin) * 32768; + if (!(this.spawnflags & LASER_FINITE)) + o = this.origin + normalize(o - this.origin) * LASER_BEAM_MAXLENGTH; } else { makevectors(this.mangle); - o = this.origin + v_forward * 32768; + o = this.origin + v_forward * LASER_BEAM_MAXLENGTH; } if(this.dmg || this.enemy.target != "") @@ -115,48 +115,48 @@ void misc_laser_think(entity this) if(this.dmg) { if(this.team) - if(((this.spawnflags & 8) == 0) == (this.team != hitent.team)) + if(((this.spawnflags & LASER_INVERT_TEAM) == 0) == (this.team != hitent.team)) return; if(hitent.takedamage) Damage(hitent, this, this, ((this.dmg < 0) ? 100000 : (this.dmg * frametime)), DEATH_HURTTRIGGER.m_id, DMG_NOWEP, hitloc, '0 0 0'); } } -bool laser_SendEntity(entity this, entity to, float fl) +bool laser_SendEntity(entity this, entity to, float sendflags) { WriteHeader(MSG_ENTITY, ENT_CLIENT_LASER); - fl = fl - (fl & 0xF0); // use that bit to indicate finite length laser - if(this.spawnflags & 2) - fl |= 0x80; + sendflags = sendflags & 0x0F; // use that bit to indicate finite length laser + if(this.spawnflags & LASER_FINITE) + sendflags |= SF_LASER_FINITE; if(this.alpha) - fl |= 0x40; + sendflags |= SF_LASER_ALPHA; if(this.scale != 1 || this.modelscale != 1) - fl |= 0x20; - if(this.spawnflags & 4) - fl |= 0x10; - WriteByte(MSG_ENTITY, fl); - if(fl & 1) + sendflags |= SF_LASER_SCALE; + if(this.spawnflags & LASER_NOTRACE) + sendflags |= SF_LASER_NOTRACE; + WriteByte(MSG_ENTITY, sendflags); + if(sendflags & SF_LASER_UPDATE_ORIGIN) { WriteVector(MSG_ENTITY, this.origin); } - if(fl & 8) + if(sendflags & SF_LASER_UPDATE_EFFECT) { - WriteByte(MSG_ENTITY, this.colormod_x * 255.0); - WriteByte(MSG_ENTITY, this.colormod_y * 255.0); - WriteByte(MSG_ENTITY, this.colormod_z * 255.0); - if(fl & 0x40) + WriteByte(MSG_ENTITY, this.beam_color.x * 255.0); + WriteByte(MSG_ENTITY, this.beam_color.y * 255.0); + WriteByte(MSG_ENTITY, this.beam_color.z * 255.0); + if(sendflags & SF_LASER_ALPHA) WriteByte(MSG_ENTITY, this.alpha * 255.0); - if(fl & 0x20) + if(sendflags & SF_LASER_SCALE) { WriteByte(MSG_ENTITY, bound(0, this.scale * 16.0, 255)); WriteByte(MSG_ENTITY, bound(0, this.modelscale * 16.0, 255)); } - if((fl & 0x80) || !(fl & 0x10)) // effect doesn't need sending if the laser is infinite and has collision testing turned off - WriteShort(MSG_ENTITY, this.cnt + 1); + if((sendflags & SF_LASER_FINITE) || !(sendflags & SF_LASER_NOTRACE)) // effect doesn't need sending if the laser is infinite and has collision testing turned off + WriteShort(MSG_ENTITY, this.cnt); } - if(fl & 2) + if(sendflags & SF_LASER_UPDATE_TARGET) { - if(fl & 0x80) + if(sendflags & SF_LASER_FINITE) { WriteVector(MSG_ENTITY, this.enemy.origin); } @@ -166,9 +166,9 @@ bool laser_SendEntity(entity this, entity to, float fl) WriteAngle(MSG_ENTITY, this.mangle_y); } } - if(fl & 4) - WriteByte(MSG_ENTITY, this.state); - return 1; + if(sendflags & SF_LASER_UPDATE_ACTIVE) + WriteByte(MSG_ENTITY, this.active); + return true; } /*QUAKED spawnfunc_misc_laser (.5 .5 .5) ? START_ON DEST_IS_FIXED @@ -178,24 +178,41 @@ Keys: spawnfunc_target_position where the laser ends "mdl" name of beam end effect to use -"colormod" +"beam_color" color of the beam (default: red) "dmg" damage per second (-1 for a laser that kills immediately) */ -void laser_use(entity this, entity actor, entity trigger) + +void laser_setactive(entity this, int act) { - this.state = !this.state; - this.SendFlags |= 4; - misc_laser_aim(this); + int old_status = this.active; + if(act == ACTIVE_TOGGLE) + { + if(this.active == ACTIVE_ACTIVE) + { + this.active = ACTIVE_NOT; + } + else + { + this.active = ACTIVE_ACTIVE; + } + } + else + { + this.active = act; + } + + if (this.active != old_status) + { + this.SendFlags |= SF_LASER_UPDATE_ACTIVE; + misc_laser_aim(this); + } } -void laser_reset(entity this) +void laser_use(entity this, entity actor, entity trigger) { - if(this.spawnflags & 1) - this.state = 1; - else - this.state = 0; + this.setactive(this, ACTIVE_TOGGLE); } spawnfunc(misc_laser) @@ -221,14 +238,38 @@ spawnfunc(misc_laser) if(this.cnt < 0) this.cnt = -1; - if(this.colormod == '0 0 0') + if(!this.beam_color && this.colormod) + { + LOG_WARN("misc_laser uses legacy field 'colormod', please use 'beam_color' instead"); + this.beam_color = this.colormod; + } + + if(this.beam_color == '0 0 0') + { if(!this.alpha) - this.colormod = '1 0 0'; - if(this.message == "") this.message = "saw the light"; - if (this.message2 == "") this.message2 = "was pushed into a laser by"; - if(!this.scale) this.scale = 1; - if(!this.modelscale) this.modelscale = 1; - else if(this.modelscale < 0) this.modelscale = 0; + this.beam_color = '1 0 0'; + } + + if(this.message == "") + { + this.message = "saw the light"; + } + if (this.message2 == "") + { + this.message2 = "was pushed into a laser by"; + } + if(!this.scale) + { + this.scale = 1; + } + if(!this.modelscale) + { + this.modelscale = 1; + } + else if(this.modelscale < 0) + { + this.modelscale = 0; + } setthink(this, misc_laser_think); this.nextthink = time; InitializeEntity(this, misc_laser_init, INITPRIO_FINDTARGET); @@ -237,38 +278,40 @@ spawnfunc(misc_laser) Net_LinkEntity(this, false, 0, laser_SendEntity); + this.setactive = laser_setactive; + IFTARGETED { - this.reset = laser_reset; - this.reset(this); + // backwards compatibility this.use = laser_use; } - else - this.state = 1; + + this.reset = generic_netlinked_reset; + this.reset(this); } #elif defined(CSQC) // a laser goes from origin in direction angles -// it has color 'colormod' +// it has color 'beam_color' // and stops when something is in the way entityclass(Laser); -class(Laser) .int cnt; // end effect -class(Laser) .vector colormod; -class(Laser) .int state; // on-off -class(Laser) .int count; // flags for the laser -class(Laser) .vector velocity; -class(Laser) .float alpha; -class(Laser) .float scale; // scaling factor of the thickness -class(Laser) .float modelscale; // scaling factor of the dlight +classfield(Laser) .int cnt; // end effect +classfield(Laser) .vector colormod; +classfield(Laser) .int state; // on-off +classfield(Laser) .int count; // flags for the laser +classfield(Laser) .vector velocity; // laser endpoint if it is FINITE +classfield(Laser) .float alpha; +classfield(Laser) .float scale; // scaling factor of the thickness +classfield(Laser) .float modelscale; // scaling factor of the dlight void Draw_Laser(entity this) { - if(!this.state) + if(this.active == ACTIVE_NOT) return; InterpolateOrigin_Do(this); - if(this.count & 0x80) + if(this.count & SF_LASER_FINITE) { - if(this.count & 0x10) + if(this.count & SF_LASER_NOTRACE) { trace_endpos = this.velocity; trace_dphitq3surfaceflags = 0; @@ -278,37 +321,37 @@ void Draw_Laser(entity this) } else { - if(this.count & 0x10) + if(this.count & SF_LASER_NOTRACE) { makevectors(this.angles); - trace_endpos = this.origin + v_forward * 1048576; + trace_endpos = this.origin + v_forward * LASER_BEAM_MAXWORLDSIZE; trace_dphitq3surfaceflags = Q3SURFACEFLAG_SKY; } else { makevectors(this.angles); - traceline(this.origin, this.origin + v_forward * 32768, 0, this); + traceline(this.origin, this.origin + v_forward * LASER_BEAM_MAXLENGTH, 0, this); if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_SKY) - trace_endpos = this.origin + v_forward * 1048576; + trace_endpos = this.origin + v_forward * LASER_BEAM_MAXWORLDSIZE; } } if(this.scale != 0) { if(this.alpha) { - Draw_CylindricLine(this.origin, trace_endpos, this.scale, "particles/laserbeam", 0, time * 3, this.colormod, this.alpha, DRAWFLAG_NORMAL, view_origin); + Draw_CylindricLine(this.origin, trace_endpos, this.scale, "particles/laserbeam", 0, time * 3, this.beam_color, this.alpha, DRAWFLAG_NORMAL, view_origin); } else { - Draw_CylindricLine(this.origin, trace_endpos, this.scale, "particles/laserbeam", 0, time * 3, this.colormod, 0.5, DRAWFLAG_ADDITIVE, view_origin); + Draw_CylindricLine(this.origin, trace_endpos, this.scale, "particles/laserbeam", 0, time * 3, this.beam_color, 0.5, DRAWFLAG_ADDITIVE, view_origin); } } if (!(trace_dphitq3surfaceflags & (Q3SURFACEFLAG_SKY | Q3SURFACEFLAG_NOIMPACT))) { if(this.cnt >= 0) __pointparticles(this.cnt, trace_endpos, trace_plane_normal, drawframetime * 1000); - if(this.colormod != '0 0 0' && this.modelscale != 0) - adddynamiclight(trace_endpos + trace_plane_normal * 1, this.modelscale, this.colormod * 5); + if(this.beam_color != '0 0 0' && this.modelscale != 0) + adddynamiclight(trace_endpos + trace_plane_normal * 1, this.modelscale, this.beam_color * 5); } } @@ -317,43 +360,43 @@ NET_HANDLE(ENT_CLIENT_LASER, bool isnew) InterpolateOrigin_Undo(this); // 30 bytes, or 13 bytes for just moving - int f = ReadByte(); - this.count = (f & 0xF0); + int sendflags = ReadByte(); + this.count = (sendflags & 0xF0); - if(this.count & 0x80) + if(this.count & SF_LASER_FINITE) this.iflags = IFLAG_VELOCITY | IFLAG_ORIGIN; else this.iflags = IFLAG_ANGLES | IFLAG_ORIGIN; - if(f & 1) + if(sendflags & SF_LASER_UPDATE_ORIGIN) { this.origin = ReadVector(); setorigin(this, this.origin); } - if(f & 8) + if(sendflags & SF_LASER_UPDATE_EFFECT) { - this.colormod_x = ReadByte() / 255.0; - this.colormod_y = ReadByte() / 255.0; - this.colormod_z = ReadByte() / 255.0; - if(f & 0x40) + this.beam_color.x = ReadByte() / 255.0; + this.beam_color.y = ReadByte() / 255.0; + this.beam_color.z = ReadByte() / 255.0; + if(sendflags & SF_LASER_ALPHA) this.alpha = ReadByte() / 255.0; else this.alpha = 0; - this.scale = 2; - this.modelscale = 50; - if(f & 0x20) + this.scale = 2; // NOTE: why 2? + this.modelscale = 50; // NOTE: why 50? + if(sendflags & SF_LASER_SCALE) { this.scale *= ReadByte() / 16.0; // beam radius this.modelscale *= ReadByte() / 16.0; // dlight radius } - if((f & 0x80) || !(f & 0x10)) - this.cnt = ReadShort() - 1; // effect number + if((sendflags & SF_LASER_FINITE) || !(sendflags & SF_LASER_NOTRACE)) + this.cnt = ReadShort(); // effect number else this.cnt = 0; } - if(f & 2) + if(sendflags & SF_LASER_UPDATE_TARGET) { - if(f & 0x80) + if(sendflags & SF_LASER_FINITE) { this.velocity = ReadVector(); } @@ -363,8 +406,8 @@ NET_HANDLE(ENT_CLIENT_LASER, bool isnew) this.angles_y = ReadAngle(); } } - if(f & 4) - this.state = ReadByte(); + if(sendflags & SF_LASER_UPDATE_ACTIVE) + this.active = ReadByte(); return = true; diff --git a/qcsrc/common/triggers/misc/laser.qh b/qcsrc/common/triggers/misc/laser.qh index 6f70f09bee..0ff57646ad 100644 --- a/qcsrc/common/triggers/misc/laser.qh +++ b/qcsrc/common/triggers/misc/laser.qh @@ -1 +1,22 @@ #pragma once + + +const int LASER_FINITE = BIT(1); +const int LASER_NOTRACE = BIT(2); +const int LASER_INVERT_TEAM = BIT(3); + +const int SF_LASER_UPDATE_ORIGIN = BIT(0); +const int SF_LASER_UPDATE_TARGET = BIT(1); +const int SF_LASER_UPDATE_ACTIVE = BIT(2); +const int SF_LASER_UPDATE_EFFECT = BIT(3); + +const int SF_LASER_NOTRACE = BIT(4); +const int SF_LASER_SCALE = BIT(5); +const int SF_LASER_ALPHA = BIT(6); +const int SF_LASER_FINITE = BIT(7); + +.vector beam_color; + +const float LASER_BEAM_MAXLENGTH = 32768; // maximum length of a beam trace +// TODO: find a better way to do this +const float LASER_BEAM_MAXWORLDSIZE = 1048576; // to make sure the endpoint of the beam is not visible inside diff --git a/qcsrc/common/triggers/misc/teleport_dest.qc b/qcsrc/common/triggers/misc/teleport_dest.qc index 40c7d46c42..126a20ea26 100644 --- a/qcsrc/common/triggers/misc/teleport_dest.qc +++ b/qcsrc/common/triggers/misc/teleport_dest.qc @@ -3,12 +3,12 @@ REGISTER_NET_LINKED(ENT_CLIENT_TELEPORT_DEST) #ifdef SVQC -bool teleport_dest_send(entity this, entity to, int sf) +bool teleport_dest_send(entity this, entity to, int sendflags) { WriteHeader(MSG_ENTITY, ENT_CLIENT_TELEPORT_DEST); - WriteByte(MSG_ENTITY, sf); + WriteByte(MSG_ENTITY, sendflags); - if(sf & 1) + if(sendflags & SF_TRIGGER_INIT) { WriteByte(MSG_ENTITY, this.cnt); WriteCoord(MSG_ENTITY, this.speed); @@ -26,7 +26,7 @@ bool teleport_dest_send(entity this, entity to, int sf) void teleport_dest_link(entity this) { Net_LinkEntity(this, false, 0, teleport_dest_send); - this.SendFlags |= 1; // update + this.SendFlags |= SF_TRIGGER_INIT; } spawnfunc(info_teleport_destination) @@ -57,20 +57,15 @@ spawnfunc(misc_teleporter_dest) void teleport_dest_remove(entity this) { - //if(this.classname) - //strunzone(this.classname); - //this.classname = string_null; - - if(this.targetname) - strunzone(this.targetname); - this.targetname = string_null; + // strfree(this.classname); + strfree(this.targetname); } NET_HANDLE(ENT_CLIENT_TELEPORT_DEST, bool isnew) { - int sf = ReadByte(); + int sendflags = ReadByte(); - if(sf & 1) + if(sendflags & SF_TRIGGER_INIT) { this.classname = "info_teleport_destination"; this.cnt = ReadByte(); diff --git a/qcsrc/common/triggers/platforms.qc b/qcsrc/common/triggers/platforms.qc index 8ea48275d3..4747877314 100644 --- a/qcsrc/common/triggers/platforms.qc +++ b/qcsrc/common/triggers/platforms.qc @@ -61,7 +61,7 @@ void plat_spawn_inside_trigger(entity this) void plat_hit_top(entity this) { _sound (this, CH_TRIGGER_SINGLE, this.noise1, VOL_BASE, ATTEN_NORM); - this.state = 1; + this.state = STATE_TOP; setthink(this, plat_go_down); this.nextthink = this.ltime + 3; @@ -70,20 +70,20 @@ void plat_hit_top(entity this) void plat_hit_bottom(entity this) { _sound (this, CH_TRIGGER_SINGLE, this.noise1, VOL_BASE, ATTEN_NORM); - this.state = 2; + this.state = STATE_BOTTOM; } void plat_go_down(entity this) { _sound (this, CH_TRIGGER_SINGLE, this.noise, VOL_BASE, ATTEN_NORM); - this.state = 3; + this.state = STATE_DOWN; SUB_CalcMove (this, this.pos2, TSPEED_LINEAR, this.speed, plat_hit_bottom); } void plat_go_up(entity this) { _sound (this, CH_TRIGGER_SINGLE, this.noise, VOL_BASE, ATTEN_NORM); - this.state = 4; + this.state = STATE_UP; SUB_CalcMove (this, this.pos1, TSPEED_LINEAR, this.speed, plat_hit_top); } @@ -102,9 +102,9 @@ void plat_center_touch(entity this, entity toucher) return; #endif - if (this.enemy.state == 2) { + if (this.enemy.state == STATE_BOTTOM) { plat_go_up(this.enemy); - } else if (this.enemy.state == 1) + } else if (this.enemy.state == STATE_TOP) this.enemy.nextthink = this.enemy.ltime + 1; } @@ -121,7 +121,7 @@ void plat_outside_touch(entity this, entity toucher) return; #endif - if (this.enemy.state == 1) { + if (this.enemy.state == STATE_TOP) { entity e = this.enemy; plat_go_down(e); } @@ -137,7 +137,7 @@ void plat_trigger_use(entity this, entity actor, entity trigger) void plat_crush(entity this, entity blocker) { - if((this.spawnflags & 4) && (blocker.takedamage != DAMAGE_NO)) + if((this.spawnflags & CRUSH) && (blocker.takedamage != DAMAGE_NO)) { // KIll Kill Kill!! #ifdef SVQC Damage (blocker, this, this, 10000, DEATH_HURTTRIGGER.m_id, DMG_NOWEP, blocker.origin, '0 0 0'); @@ -155,9 +155,9 @@ void plat_crush(entity this, entity blocker) } #endif - if (this.state == 4) + if (this.state == STATE_UP) plat_go_down (this); - else if (this.state == 3) + else if (this.state == STATE_DOWN) plat_go_up (this); // when in other states, then the plat_crush event came delayed after // plat state already had changed @@ -168,11 +168,13 @@ void plat_crush(entity this, entity blocker) void plat_use(entity this, entity actor, entity trigger) { this.use = func_null; - if (this.state != 4) + if (this.state != STATE_UP) objerror (this, "plat_use: not in up state"); plat_go_down(this); } +// WARNING: backwards compatibility because people don't use already existing fields :( +// TODO: Check if any maps use these fields and remove these fields if it doesn't break maps .string sound1, sound2; void plat_reset(entity this) @@ -180,13 +182,13 @@ void plat_reset(entity this) IFTARGETED { setorigin(this, this.pos1); - this.state = 4; + this.state = STATE_UP; this.use = plat_use; } else { setorigin(this, this.pos2); - this.state = 2; + this.state = STATE_BOTTOM; this.use = plat_trigger_use; } diff --git a/qcsrc/common/triggers/platforms.qh b/qcsrc/common/triggers/platforms.qh index c40467494f..346cebc716 100644 --- a/qcsrc/common/triggers/platforms.qh +++ b/qcsrc/common/triggers/platforms.qh @@ -1,5 +1,8 @@ #pragma once + +const int PLAT_LOW_TRIGGER = BIT(0); + .float dmgtime2; void plat_center_touch(entity this, entity toucher); @@ -8,6 +11,5 @@ void plat_trigger_use(entity this, entity actor, entity trigger); void plat_go_up(entity this); void plat_go_down(entity this); void plat_crush(entity this, entity blocker); -const float PLAT_LOW_TRIGGER = 1; .float dmg; diff --git a/qcsrc/common/triggers/subs.qc b/qcsrc/common/triggers/subs.qc index 5b6182e0ab..2a237fdcb7 100644 --- a/qcsrc/common/triggers/subs.qc +++ b/qcsrc/common/triggers/subs.qc @@ -145,6 +145,8 @@ void SUB_CalcMove_controller_think (entity this) // derivative: delta + 2 * delta2 (e.g. for angle positioning) entity own = this.owner; setthink(own, this.think1); + // set the owner's reference to this entity to NULL + own.move_controller = NULL; delete(this); getthink(own)(own); } @@ -220,8 +222,14 @@ void SUB_CalcMove_Bezier (entity this, vector tcontrol, vector tdest, float tspe return; } + // delete the previous controller, otherwise changing movement midway is glitchy + if (this.move_controller != NULL) + { + delete(this.move_controller); + } controller = new(SUB_CalcMove_controller); controller.owner = this; + this.move_controller = controller; controller.platmovetype = this.platmovetype; controller.platmovetype_start = this.platmovetype_start; controller.platmovetype_end = this.platmovetype_end; diff --git a/qcsrc/common/triggers/subs.qh b/qcsrc/common/triggers/subs.qh index 1b3bc5e690..8d4e406504 100644 --- a/qcsrc/common/triggers/subs.qh +++ b/qcsrc/common/triggers/subs.qh @@ -1,4 +1,5 @@ #pragma once +#include "defs.qh" void SUB_SetFade (entity ent, float when, float fading_time); void SUB_VanishOrRemove (entity ent); @@ -41,17 +42,14 @@ void SUB_VanishOrRemove (entity ent); .vector dest1, dest2; +.entity move_controller; + #ifdef CSQC // this stuff is defined in the server side engine VM, so we must define it separately here .float takedamage; -const float DAMAGE_NO = 0; -const float DAMAGE_YES = 1; -const float DAMAGE_AIM = 2; - -float STATE_TOP = 0; -float STATE_BOTTOM = 1; -float STATE_UP = 2; -float STATE_DOWN = 3; +const int DAMAGE_NO = 0; +const int DAMAGE_YES = 1; +const int DAMAGE_AIM = 2; .string noise, noise1, noise2, noise3; // contains names of wavs to play diff --git a/qcsrc/common/triggers/target/changelevel.qc b/qcsrc/common/triggers/target/changelevel.qc index 6c006d42a9..114fd87181 100644 --- a/qcsrc/common/triggers/target/changelevel.qc +++ b/qcsrc/common/triggers/target/changelevel.qc @@ -5,7 +5,7 @@ void target_changelevel_use(entity this, entity actor, entity trigger) { - if(this.spawnflags & 2) + if(this.spawnflags & CHANGELEVEL_MULTIPLAYER) { // simply don't react if a non-player triggers it if(!IS_PLAYER(actor)) { return; } @@ -33,10 +33,23 @@ void target_changelevel_use(entity this, entity actor, entity trigger) localcmd(strcat("changelevel ", this.chmap, "\n")); } +/*target_changelevel +Target to change/end level +KEYS: +chmap: map to switch to, leave empty for endmatch +gametype: gametype for the next map +count: fraction of real players that need to trigger this entity for levelchange +SPAWNFLAGS: +CHANGELEVEL_MULTIPLAYER: multiplayer support +*/ + spawnfunc(target_changelevel) { this.use = target_changelevel_use; - if(!this.count) { this.count = 0.7; } + if(!this.count) + { + this.count = 0.7; + } } #endif diff --git a/qcsrc/common/triggers/target/changelevel.qh b/qcsrc/common/triggers/target/changelevel.qh index 6f70f09bee..f6e206edc9 100644 --- a/qcsrc/common/triggers/target/changelevel.qh +++ b/qcsrc/common/triggers/target/changelevel.qh @@ -1 +1,4 @@ #pragma once + + +const int CHANGELEVEL_MULTIPLAYER = BIT(1); diff --git a/qcsrc/common/triggers/target/levelwarp.qc b/qcsrc/common/triggers/target/levelwarp.qc index 6cef53d6e5..21419cf81a 100644 --- a/qcsrc/common/triggers/target/levelwarp.qc +++ b/qcsrc/common/triggers/target/levelwarp.qc @@ -14,6 +14,8 @@ void target_levelwarp_use(entity this, entity actor, entity trigger) spawnfunc(target_levelwarp) { + // this.cnt is index (starting from 1) of the campaign level to warp to + // 0 means next level this.use = target_levelwarp_use; } #endif diff --git a/qcsrc/common/triggers/target/music.qc b/qcsrc/common/triggers/target/music.qc index 7ec3351381..5a63872dbd 100644 --- a/qcsrc/common/triggers/target/music.qc +++ b/qcsrc/common/triggers/target/music.qc @@ -14,7 +14,10 @@ REGISTER_NET_LINKED(ENT_CLIENT_TRIGGER_MUSIC) #ifdef SVQC IntrusiveList g_targetmusic_list; -STATIC_INIT(g_targetmusic_list) { g_targetmusic_list = IL_NEW(); } +STATIC_INIT(g_targetmusic_list) +{ + g_targetmusic_list = IL_NEW(); +} // values: // volume @@ -37,7 +40,10 @@ void target_music_sendto(entity this, int to, bool is) } void target_music_reset(entity this) { - if (this.targetname == "") target_music_sendto(this, MSG_ALL, 1); + if (this.targetname == "") + { + target_music_sendto(this, MSG_ALL, true); + } } void target_music_kill() { @@ -45,9 +51,9 @@ void target_music_kill() { it.volume = 0; if (it.targetname == "") - target_music_sendto(it, MSG_ALL, 1); + target_music_sendto(it, MSG_ALL, true); else - target_music_sendto(it, MSG_ALL, 0); + target_music_sendto(it, MSG_ALL, false); }); } void target_music_use(entity this, entity actor, entity trigger) @@ -57,11 +63,11 @@ void target_music_use(entity this, entity actor, entity trigger) if(IS_REAL_CLIENT(actor)) { msg_entity = actor; - target_music_sendto(this, MSG_ONE, 1); + target_music_sendto(this, MSG_ONE, true); } FOREACH_CLIENT(IS_SPEC(it) && it.enemy == actor, { msg_entity = it; - target_music_sendto(this, MSG_ONE, 1); + target_music_sendto(this, MSG_ONE, true); }); } spawnfunc(target_music) @@ -72,18 +78,18 @@ spawnfunc(target_music) this.volume = 1; IL_PUSH(g_targetmusic_list, this); if(this.targetname == "") - target_music_sendto(this, MSG_INIT, 1); + target_music_sendto(this, MSG_INIT, true); else - target_music_sendto(this, MSG_INIT, 0); + target_music_sendto(this, MSG_INIT, false); } void TargetMusic_RestoreGame() { IL_EACH(g_targetmusic_list, true, { if(it.targetname == "") - target_music_sendto(it, MSG_INIT, 1); + target_music_sendto(it, MSG_INIT, true); else - target_music_sendto(it, MSG_INIT, 0); + target_music_sendto(it, MSG_INIT, false); }); } // values: @@ -92,20 +98,17 @@ void TargetMusic_RestoreGame() // targetname // fade_time // spawnflags: -// 1 = START_OFF -// when triggered, it is disabled/enabled for everyone -bool trigger_music_SendEntity(entity this, entity to, float sf) +// START_DISABLED +// can be disabled/enabled for everyone with relays +bool trigger_music_SendEntity(entity this, entity to, int sendflags) { WriteHeader(MSG_ENTITY, ENT_CLIENT_TRIGGER_MUSIC); - sf &= ~0x80; - if(this.cnt) - sf |= 0x80; - WriteByte(MSG_ENTITY, sf); - if(sf & 4) + WriteByte(MSG_ENTITY, sendflags); + if(sendflags & SF_MUSIC_ORIGIN) { WriteVector(MSG_ENTITY, this.origin); } - if(sf & 1) + if(sendflags & SF_TRIGGER_INIT) { if(this.model != "null") { @@ -123,31 +126,44 @@ bool trigger_music_SendEntity(entity this, entity to, float sf) WriteByte(MSG_ENTITY, this.fade_rate * 16.0); WriteString(MSG_ENTITY, this.noise); } - return 1; + if(sendflags & SF_TRIGGER_UPDATE) + { + WriteByte(MSG_ENTITY, this.active); + } + return true; } void trigger_music_reset(entity this) { - this.cnt = !(this.spawnflags & 1); - this.SendFlags |= 0x80; -} -void trigger_music_use(entity this, entity actor, entity trigger) -{ - this.cnt = !this.cnt; - this.SendFlags |= 0x80; + if(this.spawnflags & START_DISABLED) + { + this.setactive(this, ACTIVE_NOT); + } + else + { + this.setactive(this, ACTIVE_ACTIVE); + } } + spawnfunc(trigger_music) { - if(this.model != "") _setmodel(this, this.model); - if(!this.volume) this.volume = 1; + if(this.model != "") + { + _setmodel(this, this.model); + } + if(!this.volume) + { + this.volume = 1; + } if(!this.modelindex) { setorigin(this, this.origin + this.mins); setsize(this, '0 0 0', this.maxs - this.mins); } - trigger_music_reset(this); - this.use = trigger_music_use; + this.setactive = generic_netlinked_setactive; + this.use = generic_netlinked_legacy_use; // backwards compatibility this.reset = trigger_music_reset; + this.reset(this); Net_LinkEntity(this, false, 0, trigger_music_SendEntity); } @@ -163,8 +179,14 @@ void TargetMusic_Advance() { // run AFTER all the thinks! entity best = music_default; - if (music_target && time < music_target.lifetime) best = music_target; - if (music_trigger) best = music_trigger; + if (music_target && time < music_target.lifetime) + { + best = music_target; + } + if (music_trigger) + { + best = music_trigger; + } LL_EACH(TargetMusic_list, it.noise, { const float vol0 = (getsoundtime(it, CH_BGM_SINGLE) >= 0) ? it.lastvol : -1; if (it == best) @@ -181,9 +203,9 @@ void TargetMusic_Advance() if (vol != vol0) { if(vol0 < 0) - _sound(it, CH_BGM_SINGLE, it.noise, vol, ATTEN_NONE); // restart + sound7(it, CH_BGM_SINGLE, it.noise, vol, ATTEN_NONE, 0, BIT(4)); // restart else - _sound(it, CH_BGM_SINGLE, "", vol, ATTEN_NONE); + sound7(it, CH_BGM_SINGLE, "", vol, ATTEN_NONE, 0, BIT(4)); it.lastvol = vol; } }); @@ -215,16 +237,13 @@ void Net_TargetMusic() } if(e.noise != noi) { - if(e.noise) - strunzone(e.noise); - e.noise = strzone(noi); + strcpy(e.noise, noi); precache_sound(e.noise); _sound(e, CH_BGM_SINGLE, e.noise, 0, ATTEN_NONE); if(getsoundtime(e, CH_BGM_SINGLE) < 0) { LOG_TRACEF("Cannot initialize sound %s", e.noise); - strunzone(e.noise); - e.noise = string_null; + strfree(e.noise); } } e.volume = vol; @@ -253,28 +272,30 @@ void Net_TargetMusic() void Ent_TriggerMusic_Think(entity this) { - if(WarpZoneLib_BoxTouchesBrush(view_origin, view_origin, this, NULL)) + if(this.active == ACTIVE_NOT) + { + return; + } + vector org = (csqcplayer) ? csqcplayer.origin : view_origin; + if(WarpZoneLib_BoxTouchesBrush(org + STAT(PL_MIN), org + STAT(PL_MAX), this, NULL)) { music_trigger = this; } - this.nextthink = time; } void Ent_TriggerMusic_Remove(entity this) { - if(this.noise) - strunzone(this.noise); - this.noise = string_null; + strfree(this.noise); } NET_HANDLE(ENT_CLIENT_TRIGGER_MUSIC, bool isnew) { - int f = ReadByte(); - if(f & 4) + int sendflags = ReadByte(); + if(sendflags & SF_MUSIC_ORIGIN) { this.origin = ReadVector(); } - if(f & 1) + if(sendflags & SF_TRIGGER_INIT) { this.modelindex = ReadShort(); if(this.modelindex) @@ -292,27 +313,31 @@ NET_HANDLE(ENT_CLIENT_TRIGGER_MUSIC, bool isnew) this.fade_time = ReadByte() / 16.0; this.fade_rate = ReadByte() / 16.0; string s = this.noise; - if(this.noise) - strunzone(this.noise); - this.noise = strzone(ReadString()); + strcpy(this.noise, ReadString()); if(this.noise != s) { precache_sound(this.noise); - _sound(this, CH_BGM_SINGLE, this.noise, 0, ATTEN_NONE); + sound7(this, CH_BGM_SINGLE, this.noise, 0, ATTEN_NONE, 0, BIT(4)); if(getsoundtime(this, CH_BGM_SINGLE) < 0) { - LOG_TRACEF("Cannot initialize sound %s", this.noise); - strunzone(this.noise); - this.noise = string_null; + LOG_WARNF("Cannot initialize sound %s", this.noise); + strfree(this.noise); } } } + if(sendflags & SF_TRIGGER_UPDATE) + { + this.active = ReadByte(); + } setorigin(this, this.origin); setsize(this, this.mins, this.maxs); - this.cnt = 1; - setthink(this, Ent_TriggerMusic_Think); - this.nextthink = time; + this.draw = Ent_TriggerMusic_Think; + if(isnew) + { + LL_PUSH(TargetMusic_list, this); + IL_PUSH(g_drawables, this); + } return true; } diff --git a/qcsrc/common/triggers/target/music.qh b/qcsrc/common/triggers/target/music.qh index 80b3684a4e..ccf3f674e6 100644 --- a/qcsrc/common/triggers/target/music.qh +++ b/qcsrc/common/triggers/target/music.qh @@ -2,6 +2,8 @@ .float lifetime; +const int SF_MUSIC_ORIGIN = BIT(2); + #ifdef CSQC float music_disabled; entity music_default; @@ -10,8 +12,8 @@ entity music_trigger; // FIXME also control bgmvolume here, to not require a target_music for the default track. entityclass(TargetMusic); -class(TargetMusic) .int state; -class(TargetMusic) .float lastvol; +classfield(TargetMusic) .int state; +classfield(TargetMusic) .float lastvol; void TargetMusic_Advance(); diff --git a/qcsrc/common/triggers/target/spawn.qc b/qcsrc/common/triggers/target/spawn.qc index 1464da9551..9c999ed4df 100644 --- a/qcsrc/common/triggers/target/spawn.qc +++ b/qcsrc/common/triggers/target/spawn.qc @@ -12,8 +12,7 @@ // "classname" "target_spawn" // "message" "fieldname value fieldname value ..." // "spawnflags" -// 1 = call the spawn function -// 2 = trigger on map load +// ON_MAPLOAD = trigger on map load float target_spawn_initialized; .void(entity this) target_spawn_spawnfunc; @@ -298,7 +297,7 @@ void target_spawn_use(entity this, entity actor, entity trigger) void target_spawn_spawnfirst(entity this) { entity act = this.target_spawn_activator; - if(this.spawnflags & 2) + if(this.spawnflags & ON_MAPLOAD) target_spawn_use(this, act, NULL); } diff --git a/qcsrc/common/triggers/target/speaker.qc b/qcsrc/common/triggers/target/speaker.qc index af327b443b..11c9ad7bae 100644 --- a/qcsrc/common/triggers/target/speaker.qc +++ b/qcsrc/common/triggers/target/speaker.qc @@ -54,7 +54,7 @@ void target_speaker_use_on(entity this, entity actor, entity trigger) else snd = this.noise; _sound(this, CH_TRIGGER_SINGLE, snd, VOL_BASE * this.volume, this.atten); - if(this.spawnflags & 3) + if(this.spawnflags & (SPEAKER_LOOPED_ON + SPEAKER_LOOPED_OFF)) this.use = target_speaker_use_off; } void target_speaker_use_off(entity this, entity actor, entity trigger) @@ -64,12 +64,12 @@ void target_speaker_use_off(entity this, entity actor, entity trigger) } void target_speaker_reset(entity this) { - if(this.spawnflags & 1) // LOOPED_ON + if(this.spawnflags & SPEAKER_LOOPED_ON) { if(this.use == target_speaker_use_on) target_speaker_use_on(this, NULL, NULL); } - else if(this.spawnflags & 2) + else if(this.spawnflags & SPEAKER_LOOPED_OFF) { if(this.use == target_speaker_use_off) target_speaker_use_off(this, NULL, NULL); @@ -83,7 +83,13 @@ spawnfunc(target_speaker) if(this.noise) precache_sound (this.noise); - if(!this.atten && !(this.spawnflags & 4)) + if(!this.atten && (this.spawnflags & SPEAKER_GLOBAL)) + { + LOG_WARN("target_speaker uses legacy spawnflag GLOBAL (BIT(2)), please set atten to -1 instead"); + this.atten = -1; + } + + if(!this.atten) { IFTARGETED this.atten = ATTEN_NORM; @@ -98,14 +104,14 @@ spawnfunc(target_speaker) IFTARGETED { - if(this.spawnflags & 8) // ACTIVATOR + if(this.spawnflags & SPEAKER_ACTIVATOR) this.use = target_speaker_use_activator; - else if(this.spawnflags & 1) // LOOPED_ON + else if(this.spawnflags & SPEAKER_LOOPED_ON) { target_speaker_use_on(this, NULL, NULL); this.reset = target_speaker_reset; } - else if(this.spawnflags & 2) // LOOPED_OFF + else if(this.spawnflags & SPEAKER_LOOPED_OFF) { this.use = target_speaker_use_on; this.reset = target_speaker_reset; @@ -113,12 +119,12 @@ spawnfunc(target_speaker) else this.use = target_speaker_use_on; } - else if(this.spawnflags & 1) // LOOPED_ON + else if(this.spawnflags & SPEAKER_LOOPED_ON) { ambientsound (this.origin, this.noise, VOL_BASE * this.volume, this.atten); delete(this); } - else if(this.spawnflags & 2) // LOOPED_OFF + else if(this.spawnflags & SPEAKER_LOOPED_OFF) { objerror(this, "This sound entity can never be activated"); } diff --git a/qcsrc/common/triggers/target/speaker.qh b/qcsrc/common/triggers/target/speaker.qh index 6f70f09bee..53e0194be4 100644 --- a/qcsrc/common/triggers/target/speaker.qh +++ b/qcsrc/common/triggers/target/speaker.qh @@ -1 +1,7 @@ #pragma once + + +const int SPEAKER_LOOPED_ON = BIT(0); +const int SPEAKER_LOOPED_OFF = BIT(1); +const int SPEAKER_GLOBAL = BIT(2); // legacy, set speaker atten to -1 instead +const int SPEAKER_ACTIVATOR = BIT(3); diff --git a/qcsrc/common/triggers/teleporters.qh b/qcsrc/common/triggers/teleporters.qh index 6f5b2b595d..68c5114f4d 100644 --- a/qcsrc/common/triggers/teleporters.qh +++ b/qcsrc/common/triggers/teleporters.qh @@ -1,21 +1,23 @@ #pragma once +#include "defs.qh" IntrusiveList g_teleporters; STATIC_INIT(g_teleporters) { g_teleporters = IL_NEW(); } .entity pusher; -const float TELEPORT_FLAG_SOUND = 1; -const float TELEPORT_FLAG_PARTICLES = 2; -const float TELEPORT_FLAG_TDEATH = 4; -const float TELEPORT_FLAG_FORCE_TDEATH = 8; + +const int TELEPORT_FLAG_SOUND = BIT(0); +const int TELEPORT_FLAG_PARTICLES = BIT(1); +const int TELEPORT_FLAG_TDEATH = BIT(2); +const int TELEPORT_FLAG_FORCE_TDEATH = BIT(3); #define TELEPORT_FLAGS_WARPZONE 0 #define TELEPORT_FLAGS_PORTAL (TELEPORT_FLAG_SOUND | TELEPORT_FLAG_PARTICLES | TELEPORT_FLAG_TDEATH | TELEPORT_FLAG_FORCE_TDEATH) #define TELEPORT_FLAGS_TELEPORTER (TELEPORT_FLAG_SOUND | TELEPORT_FLAG_PARTICLES | TELEPORT_FLAG_TDEATH) // types for .teleportable entity setting -const float TELEPORT_NORMAL = 1; // play sounds/effects etc -const float TELEPORT_SIMPLE = 2; // only do teleport, nothing special +const int TELEPORT_NORMAL = 1; // play sounds/effects etc +const int TELEPORT_SIMPLE = 2; // only do teleport, nothing special entity Simple_TeleportPlayer(entity teleporter, entity player); diff --git a/qcsrc/common/triggers/trigger/counter.qc b/qcsrc/common/triggers/trigger/counter.qc index 87c046b0db..4c89c4c27e 100644 --- a/qcsrc/common/triggers/trigger/counter.qc +++ b/qcsrc/common/triggers/trigger/counter.qc @@ -8,7 +8,7 @@ void counter_use(entity this, entity actor, entity trigger) if (this.count < 0) return; - bool doactivate = (this.spawnflags & 4); + bool doactivate = (this.spawnflags & COUNTER_FIRE_AT_COUNT); if (this.count == 0) { @@ -45,14 +45,15 @@ void counter_reset(entity this) this.count = this.cnt; } -/*QUAKED spawnfunc_trigger_counter (.5 .5 .5) ? nomessage +/*QUAKED spawnfunc_trigger_counter (.5 .5 .5) ? nomessage COUNTER_FIRE_AT_COUNT Acts as an intermediary for an action that takes multiple inputs. If nomessage is not set, it will print "1 more.. " etc when triggered and "sequence complete" when finished. +If COUNTER_FIRE_AT_COUNT is set, it will also fire all of its targets at countdown, making it behave like trigger_mulitple with limited shots If respawntime is set, it will re-enable itself after the time once the sequence has been completed -After the counter has been triggered "count" times (default 2), it will fire all of it's targets and remove itself. +After the counter has been triggered "count" times (default 2), it will fire all of its targets. */ spawnfunc(trigger_counter) { diff --git a/qcsrc/common/triggers/trigger/counter.qh b/qcsrc/common/triggers/trigger/counter.qh index 6f70f09bee..394d15472c 100644 --- a/qcsrc/common/triggers/trigger/counter.qh +++ b/qcsrc/common/triggers/trigger/counter.qh @@ -1 +1,4 @@ #pragma once + + +const int COUNTER_FIRE_AT_COUNT = BIT(2); diff --git a/qcsrc/common/triggers/trigger/flipflop.qc b/qcsrc/common/triggers/trigger/flipflop.qc index af212ff5a4..141f3ea9f1 100644 --- a/qcsrc/common/triggers/trigger/flipflop.qc +++ b/qcsrc/common/triggers/trigger/flipflop.qc @@ -12,8 +12,10 @@ void flipflop_use(entity this, entity actor, entity trigger) spawnfunc(trigger_flipflop) { - if(this.spawnflags & 1) - this.state = 1; + if(this.spawnflags & START_ENABLED) + { + this.state = true; + } this.use = flipflop_use; this.reset = spawnfunc_trigger_flipflop; // perfect resetter } diff --git a/qcsrc/common/triggers/trigger/gravity.qc b/qcsrc/common/triggers/trigger/gravity.qc index 3ea1562f08..1ac0f8768d 100644 --- a/qcsrc/common/triggers/trigger/gravity.qc +++ b/qcsrc/common/triggers/trigger/gravity.qc @@ -33,29 +33,31 @@ void trigger_gravity_check_think(entity this) } } +// legacy void trigger_gravity_use(entity this, entity actor, entity trigger) { - this.state = !this.state; + this.setactive(this, ACTIVE_TOGGLE); } void trigger_gravity_touch(entity this, entity toucher) { float g; - if(this.state != true) + if(this.active == ACTIVE_NOT) return; EXACTTRIGGER_TOUCH(this, toucher); g = this.gravity; - if (!(this.spawnflags & 1)) + if (!(this.spawnflags & GRAVITY_STICKY)) { if(toucher.trigger_gravity_check) { if(this == toucher.trigger_gravity_check.enemy) { // same? + // NOTE: see explanation in trigger_gravity_check_think toucher.trigger_gravity_check.count = 2; // gravity one more frame... return; } @@ -96,12 +98,14 @@ spawnfunc(trigger_gravity) if(this.noise != "") precache_sound(this.noise); - this.state = true; + this.active = ACTIVE_ACTIVE; + this.setactive = generic_setactive; IFTARGETED { + // legacy use this.use = trigger_gravity_use; - if(this.spawnflags & 2) - this.state = false; + if(this.spawnflags & GRAVITY_START_DISABLED) + this.active = ACTIVE_NOT; } } #endif diff --git a/qcsrc/common/triggers/trigger/gravity.qh b/qcsrc/common/triggers/trigger/gravity.qh index 6f70f09bee..872f04ad9f 100644 --- a/qcsrc/common/triggers/trigger/gravity.qh +++ b/qcsrc/common/triggers/trigger/gravity.qh @@ -1 +1,5 @@ #pragma once + + +const int GRAVITY_STICKY = BIT(0); // keep gravity multiplier even after exiting the trigger_gravity +const int GRAVITY_START_DISABLED = BIT(1); diff --git a/qcsrc/common/triggers/trigger/heal.qc b/qcsrc/common/triggers/trigger/heal.qc index 0f5c69c777..cfcd726fcd 100644 --- a/qcsrc/common/triggers/trigger/heal.qc +++ b/qcsrc/common/triggers/trigger/heal.qc @@ -9,9 +9,7 @@ void trigger_heal_touch(entity this, entity toucher) // only do the EXACTTRIGGER_TOUCH checks when really needed (saves some cpu) if (toucher.iscreature) { - if (toucher.takedamage) - if (!IS_DEAD(toucher)) - if (toucher.triggerhealtime < time) + if (toucher.takedamage && !IS_DEAD(toucher) && toucher.triggerhealtime < time) { bool is_trigger = this.targetname == ""; if(is_trigger) @@ -19,7 +17,7 @@ void trigger_heal_touch(entity this, entity toucher) if(this.delay > 0) toucher.triggerhealtime = time + this.delay; - bool playthesound = (this.spawnflags & 4); + bool playthesound = (this.spawnflags & HEAL_SOUND_ALWAYS); if (toucher.health < this.max_health) { playthesound = true; diff --git a/qcsrc/common/triggers/trigger/heal.qh b/qcsrc/common/triggers/trigger/heal.qh index 6f70f09bee..8dbeea5456 100644 --- a/qcsrc/common/triggers/trigger/heal.qh +++ b/qcsrc/common/triggers/trigger/heal.qh @@ -1 +1,4 @@ #pragma once + + +const int HEAL_SOUND_ALWAYS = BIT(2); diff --git a/qcsrc/common/triggers/trigger/hurt.qc b/qcsrc/common/triggers/trigger/hurt.qc index 9c09f923be..966e0cfb0f 100644 --- a/qcsrc/common/triggers/trigger/hurt.qc +++ b/qcsrc/common/triggers/trigger/hurt.qc @@ -15,7 +15,7 @@ void trigger_hurt_touch(entity this, entity toucher) return; if(this.team) - if(((this.spawnflags & 4) == 0) == (this.team != toucher.team)) + if(((this.spawnflags & INVERT_TEAMS) == 0) == (this.team != toucher.team)) return; // only do the EXACTTRIGGER_TOUCH checks when really needed (saves some cpu) @@ -53,7 +53,7 @@ void trigger_hurt_touch(entity this, entity toucher) /*QUAKED spawnfunc_trigger_hurt (.5 .5 .5) ? Any object touching this will be hurt set dmg to damage amount -defalt dmg = 5 +default dmg = 1000 */ .entity trigger_hurt_next; entity trigger_hurt_last; @@ -80,12 +80,12 @@ spawnfunc(trigger_hurt) trigger_hurt_last = this; } -float tracebox_hits_trigger_hurt(vector start, vector mi, vector ma, vector end) +bool tracebox_hits_trigger_hurt(vector start, vector e_min, vector e_max, vector end) { entity th; for(th = trigger_hurt_first; th; th = th.trigger_hurt_next) - if(tracebox_hits_box(start, mi, ma, end, th.absmin, th.absmax)) + if(tracebox_hits_box(start, e_min, e_max, end, th.absmin, th.absmax)) return true; return false; diff --git a/qcsrc/common/triggers/trigger/impulse.qc b/qcsrc/common/triggers/trigger/impulse.qc index 4be6e86bca..c4e7ae287a 100644 --- a/qcsrc/common/triggers/trigger/impulse.qc +++ b/qcsrc/common/triggers/trigger/impulse.qc @@ -1,6 +1,6 @@ #include "impulse.qh" // targeted (directional) mode -void trigger_impulse_touch1(entity this, entity toucher) +void trigger_impulse_touch_directional(entity this, entity toucher) { entity targ; float pushdeltatime; @@ -22,26 +22,26 @@ void trigger_impulse_touch1(entity this, entity toucher) return; } - str = min(this.radius, vlen(this.origin - toucher.origin)); - - if(this.falloff == 1) - str = (str / this.radius) * this.strength; - else if(this.falloff == 2) - str = (1 - (str / this.radius)) * this.strength; - else - str = this.strength; + // falloff is not supported because radius is always 0 in directional mode + str = this.strength; pushdeltatime = time - toucher.lastpushtime; - if (pushdeltatime > 0.15) pushdeltatime = 0; + if (pushdeltatime > IMPULSE_MAX_PUSHDELTATIME) + { + pushdeltatime = 0; + } toucher.lastpushtime = time; - if(!pushdeltatime) return; + if(!pushdeltatime) + { + return; + } - if(this.spawnflags & 64) + if(this.spawnflags & IMPULSE_DIRECTIONAL_SPEEDTARGET) { float addspeed = str - toucher.velocity * normalize(targ.origin - this.origin); if (addspeed > 0) { - float accelspeed = min(8 * pushdeltatime * str, addspeed); + float accelspeed = min(IMPULSE_DIRECTIONAL_MAX_ACCEL_FACTOR * pushdeltatime * str, addspeed); toucher.velocity += accelspeed * normalize(targ.origin - this.origin); } } @@ -56,7 +56,7 @@ void trigger_impulse_touch1(entity this, entity toucher) } // Directionless (accelerator/decelerator) mode -void trigger_impulse_touch2(entity this, entity toucher) +void trigger_impulse_touch_accel(entity this, entity toucher) { float pushdeltatime; @@ -69,9 +69,15 @@ void trigger_impulse_touch2(entity this, entity toucher) EXACTTRIGGER_TOUCH(this, toucher); pushdeltatime = time - toucher.lastpushtime; - if (pushdeltatime > 0.15) pushdeltatime = 0; + if (pushdeltatime > IMPULSE_MAX_PUSHDELTATIME) + { + pushdeltatime = 0; + } toucher.lastpushtime = time; - if(!pushdeltatime) return; + if(!pushdeltatime) + { + return; + } // div0: ticrate independent, 1 = identity (not 20) toucher.velocity = toucher.velocity * (this.strength ** pushdeltatime); @@ -82,7 +88,7 @@ void trigger_impulse_touch2(entity this, entity toucher) } // Spherical (gravity/repulsor) mode -void trigger_impulse_touch3(entity this, entity toucher) +void trigger_impulse_touch_radial(entity this, entity toucher) { float pushdeltatime; float str; @@ -96,17 +102,23 @@ void trigger_impulse_touch3(entity this, entity toucher) EXACTTRIGGER_TOUCH(this, toucher); pushdeltatime = time - toucher.lastpushtime; - if (pushdeltatime > 0.15) pushdeltatime = 0; + if (pushdeltatime > IMPULSE_MAX_PUSHDELTATIME) + { + pushdeltatime = 0; + } toucher.lastpushtime = time; - if(!pushdeltatime) return; + if(!pushdeltatime) + { + return; + } setsize(this, '-1 -1 -1' * this.radius,'1 1 1' * this.radius); str = min(this.radius, vlen(this.origin - toucher.origin)); - if(this.falloff == 1) + if(this.falloff == FALLOFF_LINEAR) str = (1 - str / this.radius) * this.strength; // 1 in the inside - else if(this.falloff == 2) + else if(this.falloff == FALLOFF_LINEAR_INV) str = (str / this.radius) * this.strength; // 0 in the inside else str = this.strength; @@ -121,15 +133,16 @@ void trigger_impulse_touch3(entity this, entity toucher) REGISTER_NET_LINKED(ENT_CLIENT_TRIGGER_IMPULSE) /*QUAKED spawnfunc_trigger_impulse (.5 .5 .5) ? +Force field -------- KEYS -------- target : If this is set, this points to the spawnfunc_target_position to which the player will get pushed. If not, this trigger acts like a damper/accelerator field. -strength : This is how mutch force to add in the direction of .target each second - when .target is set. If not, this is hoe mutch to slow down/accelerate - someting cought inside this trigger. (1=no change, 0,5 half speed rougthly each tic, 2 = doubble) +strength : This is how much force to add in the direction of .target each second + when .target is set. If not, this is how much to slow down/accelerate + something cought inside this trigger. (1=no change, 0,5 half speed rougthly each tic, 2 = doubble) -radius : If set, act as a spherical device rather then a liniar one. +radius : If set, act as a spherical device rather then a linear one. falloff : 0 = none, 1 = liniar, 2 = inverted liniar @@ -142,7 +155,7 @@ bool trigger_impulse_send(entity this, entity to, int sf) { WriteHeader(MSG_ENTITY, ENT_CLIENT_TRIGGER_IMPULSE); - WriteInt24_t(MSG_ENTITY, this.spawnflags); + WriteByte(MSG_ENTITY, this.spawnflags); WriteCoord(MSG_ENTITY, this.radius); WriteCoord(MSG_ENTITY, this.strength); WriteByte(MSG_ENTITY, this.falloff); @@ -166,23 +179,32 @@ spawnfunc(trigger_impulse) if(this.radius) { - if(!this.strength) this.strength = 2000 * autocvar_g_triggerimpulse_radial_multiplier; + if(!this.strength) + { + this.strength = IMPULSE_DEFAULT_RADIAL_STRENGTH * autocvar_g_triggerimpulse_radial_multiplier; + } setorigin(this, this.origin); setsize(this, '-1 -1 -1' * this.radius,'1 1 1' * this.radius); - settouch(this, trigger_impulse_touch3); + settouch(this, trigger_impulse_touch_radial); } else { if(this.target) { - if(!this.strength) this.strength = 950 * autocvar_g_triggerimpulse_directional_multiplier; - settouch(this, trigger_impulse_touch1); + if(!this.strength) + { + this.strength = IMPULSE_DEFAULT_DIRECTIONAL_STRENGTH * autocvar_g_triggerimpulse_directional_multiplier; + } + settouch(this, trigger_impulse_touch_directional); } else { - if(!this.strength) this.strength = 0.9; + if(!this.strength) + { + this.strength = IMPULSE_DEFAULT_ACCEL_STRENGTH; + } this.strength = (this.strength ** autocvar_g_triggerimpulse_accel_power) * autocvar_g_triggerimpulse_accel_multiplier; - settouch(this, trigger_impulse_touch2); + settouch(this, trigger_impulse_touch_accel); } } @@ -191,7 +213,7 @@ spawnfunc(trigger_impulse) #elif defined(CSQC) NET_HANDLE(ENT_CLIENT_TRIGGER_IMPULSE, bool isnew) { - this.spawnflags = ReadInt24_t(); + this.spawnflags = ReadByte(); this.radius = ReadCoord(); this.strength = ReadCoord(); this.falloff = ReadByte(); @@ -205,8 +227,17 @@ NET_HANDLE(ENT_CLIENT_TRIGGER_IMPULSE, bool isnew) this.entremove = trigger_remove_generic; this.move_time = time; - if (this.radius) { settouch(this, trigger_impulse_touch3); } - else if (this.target) { settouch(this, trigger_impulse_touch1); } - else { settouch(this, trigger_impulse_touch2); } + if (this.radius) + { + settouch(this, trigger_impulse_touch_radial); + } + else if (this.target) + { + settouch(this, trigger_impulse_touch_directional); + } + else + { + settouch(this, trigger_impulse_touch_accel); + } } #endif diff --git a/qcsrc/common/triggers/trigger/impulse.qh b/qcsrc/common/triggers/trigger/impulse.qh index a6961f5d2e..e86de4a497 100644 --- a/qcsrc/common/triggers/trigger/impulse.qh +++ b/qcsrc/common/triggers/trigger/impulse.qh @@ -2,6 +2,20 @@ // tZorks trigger impulse / gravity .float radius; -.float falloff; +.int falloff; .float strength; .float lastpushtime; + +const int FALLOFF_NO = 0; +const int FALLOFF_LINEAR = 1; +const int FALLOFF_LINEAR_INV = 2; + +const int IMPULSE_DIRECTIONAL_SPEEDTARGET = BIT(6); + +const float IMPULSE_DEFAULT_RADIAL_STRENGTH = 2000; +const float IMPULSE_DEFAULT_DIRECTIONAL_STRENGTH = 950; +const float IMPULSE_DEFAULT_ACCEL_STRENGTH = 0.9; + +const float IMPULSE_MAX_PUSHDELTATIME = 0.15; + +const float IMPULSE_DIRECTIONAL_MAX_ACCEL_FACTOR = 8; diff --git a/qcsrc/common/triggers/trigger/jumppads.qc b/qcsrc/common/triggers/trigger/jumppads.qc index fde6e1fb9d..5ffdf2d106 100644 --- a/qcsrc/common/triggers/trigger/jumppads.qc +++ b/qcsrc/common/triggers/trigger/jumppads.qc @@ -1,7 +1,6 @@ #include "jumppads.qh" // TODO: split target_push and put it in the target folder #ifdef SVQC -#include "jumppads.qh" #include <common/physics/movetypes/movetypes.qh> void trigger_push_use(entity this, entity actor, entity trigger) @@ -9,7 +8,7 @@ void trigger_push_use(entity this, entity actor, entity trigger) if(teamplay) { this.team = actor.team; - this.SendFlags |= 2; + this.SendFlags |= SF_TRIGGER_UPDATE; } } #endif @@ -254,7 +253,7 @@ void trigger_push_touch(entity this, entity toucher) return; if(this.team) - if(((this.spawnflags & 4) == 0) == (DIFF_TEAM(this, toucher))) + if(((this.spawnflags & INVERT_TEAMS) == 0) == (DIFF_TEAM(this, toucher))) return; EXACTTRIGGER_TOUCH(this, toucher); @@ -309,6 +308,24 @@ bool trigger_push_testorigin(entity tracetest_ent, entity targ, entity jp, vecto tracebox(trace_endpos, tracetest_ent.mins, tracetest_ent.maxs, trace_endpos - eZ * 1500, true, tracetest_ent); return true; } + +bool trigger_push_testorigin_for_item(entity tracetest_ent, entity item, vector org) +{ + setorigin(tracetest_ent, org); + tracetoss(tracetest_ent, tracetest_ent); + + if(trace_startsolid) + return false; + if (trace_ent == item) + return true; + + tracebox(trace_endpos, tracetest_ent.mins, tracetest_ent.maxs, trace_endpos - eZ * 1500, true, tracetest_ent); + + if (trace_ent == item) + return true; + + return false; +} #endif /// if (item != NULL) returns true if the item can be reached by using this jumppad, false otherwise @@ -317,7 +334,7 @@ bool trigger_push_test(entity this, entity item) { // first calculate a typical start point for the jump vector org = (this.absmin + this.absmax) * 0.5; - org.z = this.absmax.z - PL_MIN_CONST.z - 10; + org.z = this.absmax.z - PL_MIN_CONST.z - 7; if (this.target) { @@ -337,26 +354,28 @@ bool trigger_push_test(entity this, entity item) e.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP | DPCONTENTS_BOTCLIP; e.velocity = trigger_push_calculatevelocity(org, t, this.height, e); - if(item) - { - setorigin(e, org); - tracetoss(e, e); - bool r = (trace_ent == item); - delete(e); - return r; - } - vel = e.velocity; vector best_target = '0 0 0'; vector best_org = '0 0 0'; vector best_vel = '0 0 0'; bool valid_best_target = false; - if (trigger_push_testorigin(e, t, this, org)) + if (item) + { + if (!trigger_push_testorigin_for_item(e, item, org)) + { + delete(e); + return false; + } + } + else { - best_target = trace_endpos; - best_org = org; - best_vel = e.velocity; - valid_best_target = true; + if (trigger_push_testorigin(e, t, this, org)) + { + best_target = trace_endpos; + best_org = org; + best_vel = e.velocity; + valid_best_target = true; + } } vector new_org; @@ -369,31 +388,43 @@ bool trigger_push_test(entity this, entity item) vector flatdir = normalize(dist - eZ * dist.z); vector ofs = flatdir * 0.5 * min(fabs(this.absmax.x - this.absmin.x), fabs(this.absmax.y - this.absmin.y)); new_org = org + ofs; + + LABEL(new_test) e.velocity = trigger_push_calculatevelocity(new_org, t, this.height, e); - vel = e.velocity; - if (vdist(vec2(e.velocity), <, autocvar_sv_maxspeed)) - e.velocity = autocvar_sv_maxspeed * flatdir; - if (trigger_push_testorigin(e, t, this, new_org) && (!valid_best_target || trace_endpos.z > best_target.z + 50)) + if (item) { - best_target = trace_endpos; - best_org = new_org; - best_vel = vel; - valid_best_target = true; + if (!trigger_push_testorigin_for_item(e, item, new_org)) + { + delete(e); + return false; + } } - new_org = org - ofs; - e.velocity = trigger_push_calculatevelocity(new_org, t, this.height, e); - vel = e.velocity; - if (vdist(vec2(e.velocity), <, autocvar_sv_maxspeed)) - e.velocity = autocvar_sv_maxspeed * flatdir; - if (trigger_push_testorigin(e, t, this, new_org) && (!valid_best_target || trace_endpos.z > best_target.z + 50)) + else { - best_target = trace_endpos; - best_org = new_org; - best_vel = vel; - valid_best_target = true; + vel = e.velocity; + if (vdist(vec2(e.velocity), <, autocvar_sv_maxspeed)) + e.velocity = autocvar_sv_maxspeed * flatdir; + if (trigger_push_testorigin(e, t, this, new_org) && (!valid_best_target || trace_endpos.z > best_target.z + 50)) + { + best_target = trace_endpos; + best_org = new_org; + best_vel = vel; + valid_best_target = true; + } + } + if (ofs && new_org != org - ofs) + { + new_org = org - ofs; + goto new_test; } } + if (item) + { + delete(e); + return true; + } + if (valid_best_target) { if (!(boxesoverlap(this.absmin, this.absmax + eZ * 50, best_target + PL_MIN_CONST, best_target + PL_MAX_CONST))) @@ -441,7 +472,7 @@ bool trigger_push_test(entity this, entity item) setorigin(e, org); e.velocity = this.movedir; tracetoss(e, e); - if(item) + if (item) { bool r = (trace_ent == item); delete(e); @@ -481,7 +512,7 @@ float trigger_push_send(entity this, entity to, float sf) void trigger_push_updatelink(entity this) { - this.SendFlags |= 1; + this.SendFlags |= SF_TRIGGER_INIT; } void trigger_push_link(entity this) @@ -577,16 +608,30 @@ void target_push_init2(entity this) target_push_init(this); // normal push target behaviour can be combined with a legacy pusher? } -spawnfunc(target_push) { target_push_init2(this); } -spawnfunc(info_notnull) { target_push_init(this); } -spawnfunc(target_position) { target_push_init(this); } +spawnfunc(target_push) +{ + target_push_init2(this); +} + +spawnfunc(info_notnull) +{ + target_push_init(this); +} +spawnfunc(target_position) +{ + target_push_init(this); +} #elif defined(CSQC) NET_HANDLE(ENT_CLIENT_TRIGGER_PUSH, bool isnew) { this.classname = "jumppad"; - int mytm = ReadByte(); if(mytm) { this.team = mytm - 1; } + int mytm = ReadByte(); + if(mytm) + { + this.team = mytm - 1; + } this.spawnflags = ReadInt24_t(); this.active = ReadByte(); this.height = ReadCoord(); @@ -606,13 +651,8 @@ NET_HANDLE(ENT_CLIENT_TRIGGER_PUSH, bool isnew) void target_push_remove(entity this) { - //if(this.classname) - //strunzone(this.classname); - //this.classname = string_null; - - if(this.targetname) - strunzone(this.targetname); - this.targetname = string_null; + // strfree(this.classname); + strfree(this.targetname); } NET_HANDLE(ENT_CLIENT_TARGET_PUSH, bool isnew) diff --git a/qcsrc/common/triggers/trigger/jumppads.qh b/qcsrc/common/triggers/trigger/jumppads.qh index 50ed0a343c..cd6adec310 100644 --- a/qcsrc/common/triggers/trigger/jumppads.qh +++ b/qcsrc/common/triggers/trigger/jumppads.qh @@ -1,11 +1,12 @@ #pragma once + +const int PUSH_ONCE = BIT(0); // legacy, deactivate with relay instead +const int PUSH_SILENT = BIT(1); // not used? + IntrusiveList g_jumppads; STATIC_INIT(g_jumppads) { g_jumppads = IL_NEW(); } -const float PUSH_ONCE = 1; -const float PUSH_SILENT = 2; - .float pushltime; .float istypefrag; .float height; @@ -18,6 +19,7 @@ const int NUM_JUMPPADSUSED = 3; void SUB_UseTargets(entity this, entity actor, entity trigger); void trigger_push_use(entity this, entity actor, entity trigger); bool trigger_push_testorigin(entity tracetest_ent, entity targ, entity jp, vector org); +bool trigger_push_testorigin_for_item(entity tracetest_ent, entity item, vector org); #endif /* diff --git a/qcsrc/common/triggers/trigger/keylock.qc b/qcsrc/common/triggers/trigger/keylock.qc index bf20d1e973..67db144216 100644 --- a/qcsrc/common/triggers/trigger/keylock.qc +++ b/qcsrc/common/triggers/trigger/keylock.qc @@ -164,23 +164,12 @@ spawnfunc(trigger_keylock) #elif defined(CSQC) void keylock_remove(entity this) { - if(this.target) { strunzone(this.target); } - this.target = string_null; - - if(this.target2) { strunzone(this.target2); } - this.target2 = string_null; - - if(this.target3) { strunzone(this.target3); } - this.target3 = string_null; - - if(this.target4) { strunzone(this.target4); } - this.target4 = string_null; - - if(this.killtarget) { strunzone(this.killtarget); } - this.killtarget = string_null; - - if(this.targetname) { strunzone(this.targetname); } - this.targetname = string_null; + strfree(this.target); + strfree(this.target2); + strfree(this.target3); + strfree(this.target4); + strfree(this.killtarget); + strfree(this.targetname); } NET_HANDLE(ENT_CLIENT_KEYLOCK, bool isnew) diff --git a/qcsrc/common/triggers/trigger/magicear.qc b/qcsrc/common/triggers/trigger/magicear.qc index 354ed1bfed..16118cb9d6 100644 --- a/qcsrc/common/triggers/trigger/magicear.qc +++ b/qcsrc/common/triggers/trigger/magicear.qc @@ -11,7 +11,7 @@ string trigger_magicear_processmessage(entity ear, entity source, float teamsay, magicear_matched = false; dotrigger = ((IS_PLAYER(source)) && (!IS_DEAD(source)) && ((ear.radius == 0) || (vdist(source.origin - ear.origin, <=, ear.radius)))); - domatch = ((ear.spawnflags & 32) || dotrigger); + domatch = ((ear.spawnflags & MAGICEAR_REPLACE_OUTSIDE) || dotrigger); if (!domatch) return msgin; @@ -19,13 +19,13 @@ string trigger_magicear_processmessage(entity ear, entity source, float teamsay, if (!msgin) { // we are in TUBA mode! - if (!(ear.spawnflags & 256)) + if (!(ear.spawnflags & MAGICEAR_TUBA)) return msgin; for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot) { .entity weaponentity = weaponentities[slot]; - if(!W_Tuba_HasPlayed(source, weaponentity, ear.message, ear.movedir_x, !(ear.spawnflags & 512), ear.movedir_y, ear.movedir_z)) + if(!W_Tuba_HasPlayed(source, weaponentity, ear.message, ear.movedir_x, !(ear.spawnflags & MAGICEAR_TUBA_EXACTPITCH), ear.movedir_y, ear.movedir_z)) return msgin; } @@ -45,31 +45,31 @@ string trigger_magicear_processmessage(entity ear, entity source, float teamsay, return msgin; } - if(ear.spawnflags & 256) // ENOTUBA + if(ear.spawnflags & MAGICEAR_TUBA) // ENOTUBA return msgin; if(privatesay) { - if(ear.spawnflags & 4) + if(ear.spawnflags & MAGICEAR_IGNORE_TELL) return msgin; } else { if(!teamsay) - if(ear.spawnflags & 1) + if(ear.spawnflags & MAGICEAR_IGNORE_SAY) return msgin; if(teamsay > 0) - if(ear.spawnflags & 2) + if(ear.spawnflags & MAGICEAR_IGNORE_TEAMSAY) return msgin; if(teamsay < 0) - if(ear.spawnflags & 8) + if(ear.spawnflags & MAGICEAR_IGNORE_INVALIDTELL) return msgin; } matchstart = -1; l = strlen(ear.message); - if(ear.spawnflags & 128) + if(ear.spawnflags & MAGICEAR_NODECOLORIZE) msg = msgin; else msg = strdecolorize(msgin); @@ -126,7 +126,7 @@ string trigger_magicear_processmessage(entity ear, entity source, float teamsay, ear.message = savemessage; } - if(ear.spawnflags & 16) + if(ear.spawnflags & MAGICEAR_REPLACE_WHOLE_MESSAGE) { return ear.netname; } @@ -153,7 +153,7 @@ string trigger_magicear_processmessage_forallears(entity source, float teamsay, for(ear = magicears; ear; ear = ear.enemy) { msgout = trigger_magicear_processmessage(ear, source, teamsay, privatesay, msgin); - if(!(ear.spawnflags & 64)) + if(!(ear.spawnflags & MAGICEAR_CONTINUE)) if(magicear_matched) return msgout; msgin = msgout; diff --git a/qcsrc/common/triggers/trigger/magicear.qh b/qcsrc/common/triggers/trigger/magicear.qh index 6f70f09bee..4e705868c3 100644 --- a/qcsrc/common/triggers/trigger/magicear.qh +++ b/qcsrc/common/triggers/trigger/magicear.qh @@ -1 +1,13 @@ #pragma once + + +const int MAGICEAR_IGNORE_SAY = BIT(0); +const int MAGICEAR_IGNORE_TEAMSAY = BIT(1); +const int MAGICEAR_IGNORE_TELL = BIT(2); +const int MAGICEAR_IGNORE_INVALIDTELL = BIT(3); +const int MAGICEAR_REPLACE_WHOLE_MESSAGE = BIT(4); +const int MAGICEAR_REPLACE_OUTSIDE = BIT(5); +const int MAGICEAR_CONTINUE = BIT(6); +const int MAGICEAR_NODECOLORIZE = BIT(7); +const int MAGICEAR_TUBA = BIT(8); +const int MAGICEAR_TUBA_EXACTPITCH = BIT(9); diff --git a/qcsrc/common/triggers/trigger/monoflop.qc b/qcsrc/common/triggers/trigger/monoflop.qc index a67baca16a..0c960ba8a1 100644 --- a/qcsrc/common/triggers/trigger/monoflop.qc +++ b/qcsrc/common/triggers/trigger/monoflop.qc @@ -38,7 +38,7 @@ spawnfunc(trigger_monoflop) { if(!this.wait) this.wait = 1; - if(this.spawnflags & 1) + if(this.spawnflags & MONOFLOP_FIXED) this.use = monoflop_fixed_use; else this.use = monoflop_use; diff --git a/qcsrc/common/triggers/trigger/monoflop.qh b/qcsrc/common/triggers/trigger/monoflop.qh index 6f70f09bee..c64dffdee8 100644 --- a/qcsrc/common/triggers/trigger/monoflop.qh +++ b/qcsrc/common/triggers/trigger/monoflop.qh @@ -1 +1,4 @@ #pragma once + + +const int MONOFLOP_FIXED = BIT(0); diff --git a/qcsrc/common/triggers/trigger/multi.qc b/qcsrc/common/triggers/trigger/multi.qc index 24b7d5f2ac..accfbe8ac4 100644 --- a/qcsrc/common/triggers/trigger/multi.qc +++ b/qcsrc/common/triggers/trigger/multi.qc @@ -24,10 +24,12 @@ void multi_trigger(entity this) return; // allready been triggered } - if(this.spawnflags & 16384) - if(!IS_PLAYER(this.enemy)) + if(this.spawnflags & ONLY_PLAYERS && !IS_PLAYER(this.enemy)) + { return; // only players + } + // TODO: restructure this so that trigger_secret is more independent if (this.classname == "trigger_secret") { if (!IS_PLAYER(this.enemy)) @@ -37,9 +39,11 @@ void multi_trigger(entity this) } if (this.noise) + { _sound (this.enemy, CH_TRIGGER, this.noise, VOL_BASE, ATTEN_NORM); + } -// don't trigger again until reset + // don't trigger again until reset this.takedamage = DAMAGE_NO; SUB_UseTargets(this, this.enemy, this.goalentity); @@ -69,15 +73,20 @@ void multi_use(entity this, entity actor, entity trigger) void multi_touch(entity this, entity toucher) { - if(!(this.spawnflags & 2)) - if(!toucher.iscreature) - return; + if(!(this.spawnflags & ALL_ENTITIES) && !toucher.iscreature) + { + return; + } if(this.team) - if(((this.spawnflags & 4) == 0) == (this.team != toucher.team)) + { + if(((this.spawnflags & INVERT_TEAMS) == 0) == (this.team != toucher.team)) + { return; + } + } -// if the trigger has an angles field, check player's facing direction + // if the trigger has an angles field, check player's facing direction if (this.movedir != '0 0 0') { makevectors (toucher.angles); @@ -87,8 +96,12 @@ void multi_touch(entity this, entity toucher) // if the trigger has pressed keys, check that the player is pressing those keys if(this.pressedkeys && IS_PLAYER(toucher)) // only for players - if(!(CS(toucher).pressedkeys & this.pressedkeys)) - return; + { + if(!(CS(toucher).pressedkeys & this.pressedkeys)) + { + return; + } + } EXACTTRIGGER_TOUCH(this, toucher); @@ -101,11 +114,11 @@ void multi_eventdamage(entity this, entity inflictor, entity attacker, float dam { if(!this.takedamage) return; - if(this.spawnflags & DOOR_NOSPLASH) + if(this.spawnflags & NOSPLASH) if(!(DEATH_ISSPECIAL(deathtype)) && (deathtype & HITTYPE_SPLASH)) return; if(this.team) - if(((this.spawnflags & 4) == 0) == (this.team != attacker.team)) + if(((this.spawnflags & INVERT_TEAMS) == 0) == (this.team != attacker.team)) return; this.health = this.health - damage; if (this.health <= 0) diff --git a/qcsrc/common/triggers/trigger/multivibrator.qc b/qcsrc/common/triggers/trigger/multivibrator.qc index d946efe5f1..932fda13ca 100644 --- a/qcsrc/common/triggers/trigger/multivibrator.qc +++ b/qcsrc/common/triggers/trigger/multivibrator.qc @@ -43,13 +43,13 @@ void multivibrator_toggle(entity this, entity actor, entity trigger) void multivibrator_reset(entity this) { - if(!(this.spawnflags & 1)) + if(!(this.spawnflags & START_ENABLED)) this.nextthink = 0; // wait for a trigger event else this.nextthink = max(1, time); } -/*QUAKED trigger_multivibrator (.5 .5 .5) (-8 -8 -8) (8 8 8) START_ON +/*QUAKED trigger_multivibrator (.5 .5 .5) (-8 -8 -8) (8 8 8) START_ENABLED "Multivibrator" trigger gate... repeatedly sends trigger events. When triggered, turns on or off. -------- KEYS -------- target: trigger all entities with this targetname when it goes off @@ -58,7 +58,7 @@ phase: offset of the timing wait: "on" cycle time (default: 1) respawntime: "off" cycle time (default: same as wait) -------- SPAWNFLAGS -------- -START_ON: assume it is already turned on (when targeted) +START_ENABLED: assume it is already turned on (when targeted) */ spawnfunc(trigger_multivibrator) { diff --git a/qcsrc/common/triggers/trigger/relay.qc b/qcsrc/common/triggers/trigger/relay.qc index e5d0018032..f99d364aec 100644 --- a/qcsrc/common/triggers/trigger/relay.qc +++ b/qcsrc/common/triggers/trigger/relay.qc @@ -19,5 +19,8 @@ spawnfunc(trigger_relay) this.reset = spawnfunc_trigger_relay; // this spawnfunc resets fully } -spawnfunc(target_relay) { spawnfunc_trigger_relay(this); } +spawnfunc(target_relay) +{ + spawnfunc_trigger_relay(this); +} #endif diff --git a/qcsrc/common/triggers/trigger/relay_activators.qc b/qcsrc/common/triggers/trigger/relay_activators.qc index d713a05837..18c2a40d01 100644 --- a/qcsrc/common/triggers/trigger/relay_activators.qc +++ b/qcsrc/common/triggers/trigger/relay_activators.qc @@ -9,13 +9,7 @@ void relay_activators_use(entity this, entity actor, entity trigger) else { //bprint("Not using setactive\n"); - if(this.cnt == ACTIVE_TOGGLE) - if(trg.active == ACTIVE_ACTIVE) - trg.active = ACTIVE_NOT; - else - trg.active = ACTIVE_ACTIVE; - else - trg.active = this.cnt; + generic_setactive(trg, this.cnt); } } } diff --git a/qcsrc/common/triggers/trigger/relay_if.qc b/qcsrc/common/triggers/trigger/relay_if.qc index 728252c704..9adcd666ec 100644 --- a/qcsrc/common/triggers/trigger/relay_if.qc +++ b/qcsrc/common/triggers/trigger/relay_if.qc @@ -6,7 +6,7 @@ void trigger_relay_if_use(entity this, entity actor, entity trigger) // TODO make this generic AND faster than nextent()ing through all, if somehow possible n = (cvar_string(this.netname) == cvar_string(this.message)); - if(this.spawnflags & 1) + if(this.spawnflags & RELAYIF_NEGATE) n = !n; if(n) diff --git a/qcsrc/common/triggers/trigger/relay_if.qh b/qcsrc/common/triggers/trigger/relay_if.qh index 6f70f09bee..6f37aa71d9 100644 --- a/qcsrc/common/triggers/trigger/relay_if.qh +++ b/qcsrc/common/triggers/trigger/relay_if.qh @@ -1 +1,4 @@ #pragma once + + +const int RELAYIF_NEGATE = BIT(0); diff --git a/qcsrc/common/triggers/trigger/relay_teamcheck.qc b/qcsrc/common/triggers/trigger/relay_teamcheck.qc index fee28df51a..bf03b1542f 100644 --- a/qcsrc/common/triggers/trigger/relay_teamcheck.qc +++ b/qcsrc/common/triggers/trigger/relay_teamcheck.qc @@ -4,7 +4,7 @@ void trigger_relay_teamcheck_use(entity this, entity actor, entity trigger) { if(actor.team) { - if(this.spawnflags & 2) + if(this.spawnflags & RELAYTEAMCHECK_INVERT) { if(DIFF_TEAM(actor, this)) SUB_UseTargets(this, actor, trigger); @@ -17,7 +17,7 @@ void trigger_relay_teamcheck_use(entity this, entity actor, entity trigger) } else { - if(this.spawnflags & 1) + if(this.spawnflags & RELAYTEAMCHECK_NOTEAM) SUB_UseTargets(this, actor, trigger); } } diff --git a/qcsrc/common/triggers/trigger/relay_teamcheck.qh b/qcsrc/common/triggers/trigger/relay_teamcheck.qh index 6f70f09bee..602d253562 100644 --- a/qcsrc/common/triggers/trigger/relay_teamcheck.qh +++ b/qcsrc/common/triggers/trigger/relay_teamcheck.qh @@ -1 +1,5 @@ #pragma once + + +const int RELAYTEAMCHECK_NOTEAM = BIT(0); +const int RELAYTEAMCHECK_INVERT = BIT(1); diff --git a/qcsrc/common/triggers/trigger/teleport.qc b/qcsrc/common/triggers/trigger/teleport.qc index 0330ce8d8c..825dd01dde 100644 --- a/qcsrc/common/triggers/trigger/teleport.qc +++ b/qcsrc/common/triggers/trigger/teleport.qc @@ -36,7 +36,7 @@ bool Teleport_Active(entity this, entity player) return false; if(this.team) - if(((this.spawnflags & 4) == 0) == (DIFF_TEAM(this, player))) + if(((this.spawnflags & INVERT_TEAMS) == 0) == (DIFF_TEAM(this, player))) return false; return true; @@ -83,7 +83,10 @@ void target_teleport_use(entity this, entity actor, entity trigger) string s = this.target; this.target = string_null; SUB_UseTargets(this, player, player); // TODO: should we be using toucher for trigger too? - if (!this.target) this.target = s; + if (!this.target) + { + this.target = s; + } SUB_UseTargets(e, player, player); } @@ -157,7 +160,11 @@ NET_HANDLE(ENT_CLIENT_TRIGGER_TELEPORT, bool isnew) this.classname = "trigger_teleport"; if(isnew) IL_PUSH(g_teleporters, this); - int mytm = ReadByte(); if(mytm) { this.team = mytm - 1; } + int mytm = ReadByte(); + if(mytm) + { + this.team = mytm - 1; + } this.spawnflags = ReadInt24_t(); this.active = ReadByte(); this.speed = ReadCoord(); diff --git a/qcsrc/common/triggers/trigger/viewloc.qc b/qcsrc/common/triggers/trigger/viewloc.qc index 8b985795da..ba5dcbe443 100644 --- a/qcsrc/common/triggers/trigger/viewloc.qc +++ b/qcsrc/common/triggers/trigger/viewloc.qc @@ -154,7 +154,10 @@ spawnfunc(target_viewlocation_end) } // compatibility -spawnfunc(target_viewlocation) { spawnfunc_target_viewlocation_start(this); } +spawnfunc(target_viewlocation) +{ + spawnfunc_target_viewlocation_start(this); +} #elif defined(CSQC) diff --git a/qcsrc/common/triggers/trigger/viewloc.qh b/qcsrc/common/triggers/trigger/viewloc.qh index 69c6c821ed..3c393afd37 100644 --- a/qcsrc/common/triggers/trigger/viewloc.qh +++ b/qcsrc/common/triggers/trigger/viewloc.qh @@ -1,11 +1,12 @@ #pragma once -.entity viewloc; const int VIEWLOC_NOSIDESCROLL = BIT(0); // NOTE: currently unimplemented const int VIEWLOC_FREEAIM = BIT(1); const int VIEWLOC_FREEMOVE = BIT(2); +.entity viewloc; + #ifdef CSQC .entity goalentity; .entity enemy; diff --git a/qcsrc/common/triggers/triggers.qc b/qcsrc/common/triggers/triggers.qc index f7287212ad..9db38a10b9 100644 --- a/qcsrc/common/triggers/triggers.qc +++ b/qcsrc/common/triggers/triggers.qc @@ -21,6 +21,63 @@ void FixSize(entity e) } #ifdef SVQC +void generic_setactive(entity this, int act) +{ + if(act == ACTIVE_TOGGLE) + { + if(this.active == ACTIVE_ACTIVE) + { + this.active = ACTIVE_NOT; + } + else + { + this.active = ACTIVE_ACTIVE; + } + } + else + { + this.active = act; + } +} + +void generic_netlinked_setactive(entity this, int act) +{ + int old_status = this.active; + generic_setactive(this, act); + + if (this.active != old_status) + { + this.SendFlags |= SF_TRIGGER_UPDATE; + } +} + +void generic_netlinked_reset(entity this) +{ + IFTARGETED + { + if(this.spawnflags & START_ENABLED) + { + this.active = ACTIVE_ACTIVE; + } + else + { + this.active = ACTIVE_NOT; + } + } + else + { + this.active = ACTIVE_ACTIVE; + } + + this.SendFlags |= SF_TRIGGER_UPDATE; +} + +// Compatibility with old maps +void generic_netlinked_legacy_use(entity this, entity actor, entity trigger) +{ + LOG_WARNF("Entity %s was (de)activated by a trigger, please update map to use relays", this.targetname); + this.setactive(this, ACTIVE_TOGGLE); +} bool autocvar_g_triggers_debug = true; @@ -116,12 +173,12 @@ void trigger_common_read(entity this, bool withtarget) if(withtarget) { - if(this.target) { strunzone(this.target); } - if(this.target2) { strunzone(this.target2); } - if(this.target3) { strunzone(this.target3); } - if(this.target4) { strunzone(this.target4); } - if(this.targetname) { strunzone(this.targetname); } - if(this.killtarget) { strunzone(this.killtarget); } + strfree(this.target); + strfree(this.target2); + strfree(this.target3); + strfree(this.target4); + strfree(this.targetname); + strfree(this.killtarget); int targbits = ReadByte(); @@ -158,23 +215,12 @@ void trigger_common_read(entity this, bool withtarget) void trigger_remove_generic(entity this) { - if(this.target) { strunzone(this.target); } - this.target = string_null; - - if(this.target2) { strunzone(this.target2); } - this.target2 = string_null; - - if(this.target3) { strunzone(this.target3); } - this.target3 = string_null; - - if(this.target4) { strunzone(this.target4); } - this.target4 = string_null; - - if(this.targetname) { strunzone(this.targetname); } - this.target = string_null; - - if(this.killtarget) { strunzone(this.killtarget); } - this.killtarget = string_null; + strfree(this.target); + strfree(this.target2); + strfree(this.target3); + strfree(this.target4); + strfree(this.targetname); + strfree(this.killtarget); } #endif diff --git a/qcsrc/common/triggers/triggers.qh b/qcsrc/common/triggers/triggers.qh index 49cd7be7c2..bfb32696a5 100644 --- a/qcsrc/common/triggers/triggers.qh +++ b/qcsrc/common/triggers/triggers.qh @@ -1,11 +1,5 @@ #pragma once - -const float SF_TRIGGER_INIT = 1; -const float SF_TRIGGER_UPDATE = 2; -const float SF_TRIGGER_RESET = 4; - -const float SPAWNFLAG_NOMESSAGE = 1; -const float SPAWNFLAG_NOTOUCH = 1; +#include "defs.qh" .bool pushable; @@ -28,6 +22,13 @@ void target_voicescript_next(entity pl); void target_voicescript_clear(entity pl); void SUB_UseTargets_PreventReuse(entity this, entity actor, entity trigger); + +void generic_setactive(entity this, int act); +// generic methods for netlinked entities +void generic_netlinked_reset(entity this); +void generic_netlinked_setactive(entity this, int act); +// WARNING: DON'T USE, ONLY TO KEEP COMPATIBILITY BECAUSE OF SWITCH FROM .state TO .alive!!!! +void generic_netlinked_legacy_use(entity this, entity actor, entity trigger); #endif .float sub_target_used; @@ -45,10 +46,4 @@ void trigger_remove_generic(entity this); .float active; .string target; .string targetname; - -const int ACTIVE_NOT = 0; -const int ACTIVE_ACTIVE = 1; -const int ACTIVE_IDLE = 2; -const int ACTIVE_BUSY = 2; -const int ACTIVE_TOGGLE = 3; #endif diff --git a/qcsrc/common/turrets/turret/plasma.qc b/qcsrc/common/turrets/turret/plasma.qc index 96fa81f8ee..c4e50a7e71 100644 --- a/qcsrc/common/turrets/turret/plasma.qc +++ b/qcsrc/common/turrets/turret/plasma.qc @@ -6,7 +6,7 @@ spawnfunc(turret_plasma) { if (!turret_initialize(this, TUR_PLASMA)) delete(this METHOD(PlasmaTurret, tr_attack, void(PlasmaTurret this, entity it)) { - if(g_instagib) + if(autocvar_g_instagib) { .entity weaponentity = weaponentities[0]; // TODO: unhardcode FireRailgunBullet (it, weaponentity, it.tur_shotorg, it.tur_shotorg + it.tur_shotdir_updated * max_shot_distance, 10000000000, diff --git a/qcsrc/common/turrets/turret/plasma_dual.qc b/qcsrc/common/turrets/turret/plasma_dual.qc index 2a6f997cf3..8d20da5b6e 100644 --- a/qcsrc/common/turrets/turret/plasma_dual.qc +++ b/qcsrc/common/turrets/turret/plasma_dual.qc @@ -6,7 +6,7 @@ spawnfunc(turret_plasma_dual) { if (!turret_initialize(this, TUR_PLASMA_DUAL)) d METHOD(DualPlasmaTurret, tr_attack, void(DualPlasmaTurret thistur, entity it)) { - if (g_instagib) { + if (autocvar_g_instagib) { .entity weaponentity = weaponentities[0]; // TODO: unhardcode FireRailgunBullet (it, weaponentity, it.tur_shotorg, it.tur_shotorg + it.tur_shotdir_updated * max_shot_distance, 10000000000, 800, 0, 0, 0, 0, DEATH_TURRET_PLASMA.m_id); diff --git a/qcsrc/common/util.qc b/qcsrc/common/util.qc index deba86c289..97bd155eaa 100644 --- a/qcsrc/common/util.qc +++ b/qcsrc/common/util.qc @@ -336,19 +336,18 @@ STATIC_INIT(compressShortVector) if(cvar("developer")) { - LOG_INFO("Verifying vector compression table..."); + LOG_TRACE("Verifying vector compression table..."); for(i = 0x0F00; i < 0xFFFF; ++i) if(i != compressShortVector(decompressShortVector(i))) { - LOG_INFOF( + LOG_FATALF( "BROKEN vector compression: %s -> %s -> %s", ftos(i), vtos(decompressShortVector(i)), ftos(compressShortVector(decompressShortVector(i))) ); - error("b0rk"); } - LOG_INFO("Done."); + LOG_TRACE("Done."); } } @@ -453,14 +452,12 @@ void get_mi_min_max(float mode) { vector mi, ma; - if(mi_shortname) - strunzone(mi_shortname); - mi_shortname = mapname; - if(!strcasecmp(substring(mi_shortname, 0, 5), "maps/")) - mi_shortname = substring(mi_shortname, 5, strlen(mi_shortname) - 5); - if(!strcasecmp(substring(mi_shortname, strlen(mi_shortname) - 4, 4), ".bsp")) - mi_shortname = substring(mi_shortname, 0, strlen(mi_shortname) - 4); - mi_shortname = strzone(mi_shortname); + string s = mapname; + if(!strcasecmp(substring(s, 0, 5), "maps/")) + s = substring(s, 5, strlen(s) - 5); + if(!strcasecmp(substring(s, strlen(s) - 4, 4), ".bsp")) + s = substring(s, 0, strlen(s) - 4); + strcpy(mi_shortname, s); #ifdef CSQC mi = world.mins; @@ -1397,8 +1394,7 @@ void execute_next_frame() if(to_execute_next_frame) { localcmd("\n", to_execute_next_frame, "\n"); - strunzone(to_execute_next_frame); - to_execute_next_frame = string_null; + strfree(to_execute_next_frame); } } void queue_to_execute_next_frame(string s) @@ -1406,9 +1402,8 @@ void queue_to_execute_next_frame(string s) if(to_execute_next_frame) { s = strcat(s, "\n", to_execute_next_frame); - strunzone(to_execute_next_frame); } - to_execute_next_frame = strzone(s); + strcpy(to_execute_next_frame, s); } .float FindConnectedComponent_processing; diff --git a/qcsrc/common/weapons/weapon/hook.qc b/qcsrc/common/weapons/weapon/hook.qc index 8d569d04e2..985d2ae59e 100644 --- a/qcsrc/common/weapons/weapon/hook.qc +++ b/qcsrc/common/weapons/weapon/hook.qc @@ -261,11 +261,11 @@ float autocvar_cl_grapplehook_alpha = 1; void Draw_CylindricLine(vector from, vector to, float thickness, string texture, float aspect, float shift, vector rgb, float theAlpha, float drawflag, vector vieworg); entityclass(Hook); -class(Hook) .entity HookType; // ENT_CLIENT_* -class(Hook) .vector origin; -class(Hook) .vector velocity; -class(Hook) .float HookSilent; -class(Hook) .float HookRange; +classfield(Hook) .entity HookType; // ENT_CLIENT_* +classfield(Hook) .vector origin; +classfield(Hook) .vector velocity; +classfield(Hook) .float HookSilent; +classfield(Hook) .float HookRange; string Draw_GrapplingHook_trace_callback_tex; float Draw_GrapplingHook_trace_callback_rnd; @@ -281,7 +281,7 @@ void Draw_GrapplingHook_trace_callback(vector start, vector hit, vector end) Draw_GrapplingHook_trace_callback_rnd += 0.25 * vlen(hit - start) / 8; } -class(Hook) .float teleport_time; +classfield(Hook) .float teleport_time; void Draw_GrapplingHook(entity this) { vector a, b, atrans; diff --git a/qcsrc/common/weapons/weapon/tuba.qh b/qcsrc/common/weapons/weapon/tuba.qh index ffa1dd6e2d..d932d98bd1 100644 --- a/qcsrc/common/weapons/weapon/tuba.qh +++ b/qcsrc/common/weapons/weapon/tuba.qh @@ -45,9 +45,9 @@ SPAWNFUNC_WEAPON(weapon_tuba, WEP_TUBA) #ifdef CSQC entityclass(Tuba); -class(Tuba) .int note; -class(Tuba) .bool tuba_attenuate; -class(Tuba) .float tuba_volume; -class(Tuba) .float tuba_volume_initial; -class(Tuba) .int tuba_instrument; +classfield(Tuba) .int note; +classfield(Tuba) .bool tuba_attenuate; +classfield(Tuba) .float tuba_volume; +classfield(Tuba) .float tuba_volume_initial; +classfield(Tuba) .int tuba_instrument; #endif diff --git a/qcsrc/common/weapons/weapon/vaporizer.qc b/qcsrc/common/weapons/weapon/vaporizer.qc index e46745c2ac..c3baa12127 100644 --- a/qcsrc/common/weapons/weapon/vaporizer.qc +++ b/qcsrc/common/weapons/weapon/vaporizer.qc @@ -144,7 +144,7 @@ void W_Vaporizer_Attack(Weapon thiswep, entity actor, .entity weaponentity) if(!(trace_dphitq3surfaceflags & (Q3SURFACEFLAG_SKY | Q3SURFACEFLAG_NOIMPACT))) W_RocketMinsta_Explosion(actor, weaponentity, trace_endpos); - W_DecreaseAmmo(thiswep, actor, ((g_instagib) ? 1 : WEP_CVAR_PRI(vaporizer, ammo)), weaponentity); + W_DecreaseAmmo(thiswep, actor, ((autocvar_g_instagib) ? 1 : WEP_CVAR_PRI(vaporizer, ammo)), weaponentity); } void W_RocketMinsta_Laser_Explode (entity this, entity directhitentity) @@ -288,7 +288,7 @@ METHOD(Vaporizer, wr_aim, void(entity thiswep, entity actor, .entity weaponentit } METHOD(Vaporizer, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire)) { - float vaporizer_ammo = ((g_instagib) ? 1 : WEP_CVAR_PRI(vaporizer, ammo)); + float vaporizer_ammo = ((autocvar_g_instagib) ? 1 : WEP_CVAR_PRI(vaporizer, ammo)); // if the laser uses load, we also consider its ammo for reloading if(WEP_CVAR(vaporizer, reload_ammo) && WEP_CVAR_SEC(vaporizer, ammo) && actor.(weaponentity).clip_load < min(vaporizer_ammo, WEP_CVAR_SEC(vaporizer, ammo))) { // forced reload thiswep.wr_reload(thiswep, actor, weaponentity); @@ -349,7 +349,7 @@ METHOD(Vaporizer, wr_setup, void(entity thiswep, entity actor, .entity weaponent } METHOD(Vaporizer, wr_checkammo1, bool(entity thiswep, entity actor, .entity weaponentity)) { - float vaporizer_ammo = ((g_instagib) ? 1 : WEP_CVAR_PRI(vaporizer, ammo)); + float vaporizer_ammo = ((autocvar_g_instagib) ? 1 : WEP_CVAR_PRI(vaporizer, ammo)); float ammo_amount = GetResourceAmount(actor, thiswep.ammo_type) >= vaporizer_ammo; ammo_amount += actor.(weaponentity).(weapon_load[WEP_VAPORIZER.m_id]) >= vaporizer_ammo; return ammo_amount; @@ -368,7 +368,7 @@ METHOD(Vaporizer, wr_resetplayer, void(entity thiswep, entity actor)) } METHOD(Vaporizer, wr_reload, void(entity thiswep, entity actor, .entity weaponentity)) { - float vaporizer_ammo = ((g_instagib) ? 1 : WEP_CVAR_PRI(vaporizer, ammo)); + float vaporizer_ammo = ((autocvar_g_instagib) ? 1 : WEP_CVAR_PRI(vaporizer, ammo)); float used_ammo; if(WEP_CVAR_SEC(vaporizer, ammo)) used_ammo = min(vaporizer_ammo, WEP_CVAR_SEC(vaporizer, ammo)); diff --git a/qcsrc/ecs/systems/physics.qc b/qcsrc/ecs/systems/physics.qc index c8b459962e..8896b5a442 100644 --- a/qcsrc/ecs/systems/physics.qc +++ b/qcsrc/ecs/systems/physics.qc @@ -43,7 +43,7 @@ void sys_phys_update(entity this, float dt) float maxspeed_mod = (!this.in_swamp) ? 1 : this.swamp_slowdown; // cvar("g_balance_swamp_moverate"); // conveyors: first fix velocity - if (this.conveyor.state) { this.velocity -= this.conveyor.movedir; } + if (this.conveyor.active) { this.velocity -= this.conveyor.movedir; } MUTATOR_CALLHOOK(PlayerPhysics, this, dt); if (!IS_PLAYER(this)) { @@ -156,7 +156,7 @@ void sys_phys_update(entity this, float dt) LABEL(end) if (IS_ONGROUND(this)) { this.lastground = time; } // conveyors: then break velocity again - if (this.conveyor.state) { this.velocity += this.conveyor.movedir; } + if (this.conveyor.active) { this.velocity += this.conveyor.movedir; } this.lastflags = this.flags; this.lastclassname = this.classname; diff --git a/qcsrc/lib/_all.inc b/qcsrc/lib/_all.inc index d44c5e89cd..0bed40bbf0 100644 --- a/qcsrc/lib/_all.inc +++ b/qcsrc/lib/_all.inc @@ -24,12 +24,26 @@ #define bool float #endif +#ifndef QCC_SUPPORT_ACCUMULATE + #warning "QCC does not support accumulate, may not compile correctly" + #define ACCUMULATE +#else + #define ACCUMULATE [[accumulate]] +#endif + #ifndef QCC_SUPPORT_ERASEABLE #define ERASEABLE #else #define ERASEABLE [[eraseable]] #endif +#ifndef QCC_SUPPORT_ALIAS + #warning "QCC does not support alias, may not compile correctly" + #define ALIAS(var) +#else + #define ALIAS(var) [[alias(var)]] +#endif + #include <dpdefs/pre.qh> #if defined(CSQC) @@ -47,6 +61,12 @@ #include <dpdefs/post.qh> +#ifndef QCC_SUPPORT_POW + #define pow(a, b) pow(a, b) +#else + #define pow(a, b) ((a) ** (b)) +#endif + #include "self.qh" #define USING(name, T) typedef T name @@ -113,6 +133,7 @@ #include "oo.qh" #include "p2mathlib.qc" #include "progname.qh" +#include "promise.qc" #include "random.qc" #include "registry.qh" #include "registry_net.qh" diff --git a/qcsrc/lib/_mod.inc b/qcsrc/lib/_mod.inc index 115a6a070f..8df43c95f4 100644 --- a/qcsrc/lib/_mod.inc +++ b/qcsrc/lib/_mod.inc @@ -2,6 +2,7 @@ #include <lib/angle.qc> #include <lib/json.qc> #include <lib/p2mathlib.qc> +#include <lib/promise.qc> #include <lib/random.qc> #include <lib/sortlist.qc> #include <lib/test.qc> diff --git a/qcsrc/lib/_mod.qh b/qcsrc/lib/_mod.qh index fd97f51b65..8645347d69 100644 --- a/qcsrc/lib/_mod.qh +++ b/qcsrc/lib/_mod.qh @@ -2,6 +2,7 @@ #include <lib/angle.qh> #include <lib/json.qh> #include <lib/p2mathlib.qh> +#include <lib/promise.qh> #include <lib/random.qh> #include <lib/sortlist.qh> #include <lib/test.qh> diff --git a/qcsrc/lib/accumulate.qh b/qcsrc/lib/accumulate.qh index c265325f8f..2d1e40212f 100644 --- a/qcsrc/lib/accumulate.qh +++ b/qcsrc/lib/accumulate.qh @@ -2,7 +2,7 @@ #ifdef QCC_SUPPORT_ACCUMULATE #define ACCUMULATE_FUNCTION(func, otherfunc) \ - [[accumulate]] void func() \ + ACCUMULATE void func() \ { \ otherfunc(); \ } diff --git a/qcsrc/lib/compiler.qh b/qcsrc/lib/compiler.qh index d1bdc4fe5b..5ca0ed5652 100644 --- a/qcsrc/lib/compiler.qh +++ b/qcsrc/lib/compiler.qh @@ -18,6 +18,18 @@ #endif #endif +#ifndef QCC_SUPPORT_ALIAS + #ifdef GMQCC + #define QCC_SUPPORT_ALIAS + #endif +#endif + +#ifndef QCC_SUPPORT_POW + #ifdef GMQCC + #define QCC_SUPPORT_POW + #endif +#endif + #ifdef GMQCC #define LABEL(id) :id #else diff --git a/qcsrc/lib/cvar.qh b/qcsrc/lib/cvar.qh index a17f2bad72..e8e2c54880 100644 --- a/qcsrc/lib/cvar.qh +++ b/qcsrc/lib/cvar.qh @@ -87,7 +87,7 @@ const noref vector default_vector = '0 0 0'; // e.g.: AUTOCVAR(mycvar, float, 2.5, "cvar description") #define __AUTOCVAR(file, archive, var, type, desc, default) \ - [[accumulate]] void RegisterCvars(void(string, string, string, bool, string) f) \ + ACCUMULATE void RegisterCvars(void(string, string, string, bool, string) f) \ { \ f( #var, repr_cvar_##type(default), desc, archive, file); \ } \ diff --git a/qcsrc/lib/defer.qh b/qcsrc/lib/defer.qh index 4f34bb4853..5d6473080a 100644 --- a/qcsrc/lib/defer.qh +++ b/qcsrc/lib/defer.qh @@ -6,8 +6,8 @@ #include "self.qh" entityclass(Defer); - class(Defer).entity owner; - class(Defer).void(entity) defer_func; + classfield(Defer).entity owner; + classfield(Defer).void(entity) defer_func; /** Remove entity */ void SUB_Remove(entity this) diff --git a/qcsrc/lib/matrix/command.qc b/qcsrc/lib/matrix/command.qc index 449aa373b3..1b58eb1b9f 100644 --- a/qcsrc/lib/matrix/command.qc +++ b/qcsrc/lib/matrix/command.qc @@ -5,12 +5,10 @@ GENERIC_COMMAND(mx, "Send a matrix command") { switch (argv(1)) { case "user": - if (matrix_user) strunzone(matrix_user); - matrix_user = strzone(substring(command, argv_start_index(2), -1)); + strcpy(matrix_user, substring(command, argv_start_index(2), -1)); break; case "token": - if (matrix_access_token) strunzone(matrix_access_token); - matrix_access_token = strzone(substring(command, argv_start_index(2), -1)); + strcpy(matrix_access_token, substring(command, argv_start_index(2), -1)); break; case "messages": MX_Messages(string_null); diff --git a/qcsrc/lib/matrix/matrix.qc b/qcsrc/lib/matrix/matrix.qc index c399c2aa6c..57754d04e4 100644 --- a/qcsrc/lib/matrix/matrix.qc +++ b/qcsrc/lib/matrix/matrix.qc @@ -204,7 +204,8 @@ void MX_Say_(entity fh, entity pass, int status) fh.url_verb = "PUT"; fh.url_content_type = "application/json"; url_fputs(fh, sprintf("{\"msgtype\": \"m.text\", \"body\": \"%s\"}", pass.message)); - strunzone(pass.message); delete(pass); + strfree(pass.message); + delete(pass); url_fclose(fh); break; } diff --git a/qcsrc/lib/misc.qh b/qcsrc/lib/misc.qh index 6c29a4b88d..cbb1079244 100644 --- a/qcsrc/lib/misc.qh +++ b/qcsrc/lib/misc.qh @@ -10,13 +10,15 @@ #include "p99.qh" #define OVERLOAD(F, ...) P99_IF_EMPTY(__VA_ARGS__)(P99_PASTE2(F, _00)())(P99_PASTE3(F, _, P00_NARG(__VA_ARGS__))(__VA_ARGS__)) - /** for use within a macro */ + /** for use within macros */ #define OVERLOAD_(F, ...) P99_IF_EMPTY(__VA_ARGS__)(P99_PASTE2(F, _00)())(P99_PASTE3(F, _, P00_NARG(__VA_ARGS__))(__VA_ARGS__)) + #define OVERLOAD__(F, ...) P99_IF_EMPTY(__VA_ARGS__)(P99_PASTE2(F, _00)())(P99_PASTE3(F, _, P00_NARG(__VA_ARGS__))(__VA_ARGS__)) #else #define EVAL(...) __VA_ARGS__ - #define OVERLOAD_(F, ...) F##_##__VA_COUNT__(__VA_ARGS__) #define OVERLOAD(F, ...) F##_##__VA_COUNT__(__VA_ARGS__) + #define OVERLOAD_(F, ...) F##_##__VA_COUNT__(__VA_ARGS__) + #define OVERLOAD__(F, ...) F##_##__VA_COUNT__(__VA_ARGS__) #endif #if defined(CSQC) diff --git a/qcsrc/lib/net.qh b/qcsrc/lib/net.qh index fe2952e2c4..7b3f581b38 100644 --- a/qcsrc/lib/net.qh +++ b/qcsrc/lib/net.qh @@ -50,7 +50,7 @@ STATIC_INIT(RegisterTempEntities_renumber) { FOREACH(TempEntities, true, it.m_id #ifdef CSQC #define REGISTER_NET_LINKED(id) \ - [[accumulate]] NET_HANDLE(id, bool isnew) \ + ACCUMULATE NET_HANDLE(id, bool isnew) \ { \ this = __self; \ this.sourceLoc = __FILE__ ":" STR(__LINE__); \ @@ -107,7 +107,6 @@ STATIC_INIT(C2S_Protocol_renumber) { FOREACH(C2S_Protocol, true, it.m_id = i); } #ifdef SVQC const int MSG_ENTITY = 5; - .int Version; // deprecated, use SendFlags .int SendFlags; IntrusiveList g_uncustomizables; @@ -202,8 +201,7 @@ STATIC_INIT(C2S_Protocol_renumber) { FOREACH(C2S_Protocol, true, it.m_id = i); } { if (g_buf == "") return; localcmd("\ncmd c2s \"", strreplace("$", "$$", g_buf), "\"\n"); - strunzone(g_buf); - g_buf = string_null; + strfree(g_buf); } #endif @@ -301,8 +299,7 @@ MACRO_END string s = string_null; yenc_single(b, s); string tmp = strcat(g_buf, s); - if (g_buf) strunzone(g_buf); - g_buf = strzone(tmp); + strcpy(g_buf, tmp); } void WriteShort(int to, int b) { diff --git a/qcsrc/lib/noise.qh b/qcsrc/lib/noise.qh index 782798c9fe..5ef9cf8b6b 100644 --- a/qcsrc/lib/noise.qh +++ b/qcsrc/lib/noise.qh @@ -2,11 +2,11 @@ // noises "usually" start in the range -1..1 entityclass(Noise); -class(Noise).float noise_baccum; -class(Noise).float noise_paccum; -class(Noise).float noise_paccum2; -class(Noise).float noise_paccum3; -class(Noise).float noise_bstate; +classfield(Noise).float noise_baccum; +classfield(Noise).float noise_paccum; +classfield(Noise).float noise_paccum2; +classfield(Noise).float noise_paccum3; +classfield(Noise).float noise_bstate; ERASEABLE float Noise_Brown(entity e, float dt) diff --git a/qcsrc/lib/oo.qh b/qcsrc/lib/oo.qh index bd1d34666b..b22ff79150 100644 --- a/qcsrc/lib/oo.qh +++ b/qcsrc/lib/oo.qh @@ -5,19 +5,16 @@ #include "static.qh" .vector origin; + .bool pure_data; -/** @deprecated use new_pure or NEW(class) */ -#define make_pure(e) \ - MACRO_BEGIN \ - { \ - (e).pure_data = true; \ - } MACRO_END -#define make_impure(e) \ - MACRO_BEGIN \ - { \ - (e).pure_data = false; \ - } MACRO_END #define is_pure(e) ((e).pure_data) +/** @deprecated use new_pure or NEW(class) */ +#define make_pure(e) MACRO_BEGIN \ + (e).pure_data = true; \ +MACRO_END +#define make_impure(e) MACRO_BEGIN \ + (e).pure_data = false; \ +MACRO_END .string classname; /** Location entity was spawned from in source */ @@ -58,11 +55,11 @@ entity __spawn(string _classname, string _sourceLoc, bool pure) #define entityclass_1(name) entityclass_2(name, Object) #ifndef QCC_SUPPORT_ENTITYCLASS #define entityclass_2(name, base) USING(name, entity) - #define class(name) + #define classfield(name) #define _new(class, pure) __spawn( #class, __FILE__ ":" STR(__LINE__), pure) #else #define entityclass_2(name, base) entityclass name : base {} - #define class(name) [[class(name)]] + #define classfield(name) [[class(name)]] #define _new(class, pure) ((class) __spawn( #class, __FILE__ ":" STR(__LINE__), pure)) #endif /** entities you care about seeing (.origin works) */ @@ -71,12 +68,13 @@ entity __spawn(string _classname, string _sourceLoc, bool pure) #define new_pure(class) _new(class, true) #define spawn() __spawn("entity", __FILE__ ":" STR(__LINE__), false) -[[accumulate]] void ONREMOVE(entity this) {} +ACCUMULATE void ONREMOVE(entity this) {} #ifndef SVQC #define delete_fn builtin_remove #endif +.void(entity this) dtor; #define delete(this) MACRO_BEGIN { \ entity _this = (this); \ void(entity) _dtor = _this.dtor; \ @@ -104,7 +102,7 @@ void clearentity(entity e) } // Classes have a `spawn##cname(entity)` constructor -// The parameter is used across [[accumulate]] functions +// The parameter is used across ACCUMULATE functions .bool transmute; @@ -138,12 +136,149 @@ void clearentity(entity e) } \ MACRO_END -#define CONSTRUCTOR(cname, ...) \ - cname OVERLOAD(spawn##cname, cname this, __VA_ARGS__) \ - { \ - return = this; \ - } \ - [[accumulate]] cname OVERLOAD(spawn##cname, cname this, __VA_ARGS__) +#define CLASS(...) EVAL_CLASS(OVERLOAD__(CLASS, __VA_ARGS__)) +#define EVAL_CLASS(...) __VA_ARGS__ + +#define ATTRIB(...) EVAL_ATTRIB(OVERLOAD_(ATTRIB, __VA_ARGS__)) +#define EVAL_ATTRIB(...) __VA_ARGS__ + +#ifdef QCC_SUPPORT_CLASS + +#warning "QCC_SUPPORT_CLASS not implemented" + +#define CLASS_1(name) CLASS_2(name, entity) +#define CLASS_2(name, base) class name : base { + +#define INIT(class) void class::class() +#define CONSTRUCTOR(class, ...) void class::class(__VA_ARGS__) +#define DESTRUCTOR(class) class::~class() + +#define SUPER(class) super + +#define ATTRIB_3(class, name, T) T name +#define ATTRIB_4(class, name, T, val) ATTRIB_3(class, name, T) = val +#define STATIC_ATTRIB(class, name, T, val) static T name = val + +#define ATTRIB_STRZONE(class, name, T, val) T name = val +#define STATIC_ATTRIB_STRZONE(class, name, T, val) static T name = val + +#define ATTRIBARRAY(class, name, T, val) T name[val] + +#define METHOD(class, name, prototype) virtual void class::name() +#define STATIC_METHOD(class, name, prototype) static void class::name() + +#define ENDCLASS(class) }; + +#else + +#define CLASS_1(cname) CLASS_2(cname, ) +#define CLASS_2(cname, base) \ + entityclass(cname, base); \ + classfield(cname).bool instanceOf##cname; \ + DEBUG_STUFF(cname) \ + VTBL(cname, base) \ + _INIT_STATIC(cname) \ + { \ + if (cname##_vtbl && !this.transmute) \ + { \ + copyentity(cname##_vtbl, this); \ + return; \ + } \ + spawn##base##_static(this); \ + this.instanceOf##cname = true; \ + } \ + INIT(cname) \ + { \ + /* Only statically initialize the current class, it contains everything it inherits */ \ + if (cname##_vtbl.vtblname == this.classname) \ + { \ + spawn##cname##_static(this); \ + this.transmute = false; \ + this.classname = #cname; \ + this.vtblname = string_null; \ + this.vtblbase = cname##_vtbl; \ + } \ + spawn##base##_1(this); \ + } + +#define INIT(cname) \ + ACCUMULATE cname spawn##cname##_1(cname this) + +#define CONSTRUCTOR(cname, ...) \ + cname OVERLOAD(spawn##cname, cname this, __VA_ARGS__) \ + { \ + return = this; \ + } \ + ACCUMULATE cname OVERLOAD(spawn##cname, cname this, __VA_ARGS__) + +#define DESTRUCTOR(cname) \ + STATIC_METHOD(cname, dtorimpl, void(cname this)); \ + METHOD(cname, dtor, void(cname this)) \ + { \ + METHOD_REFERENCE(cname, dtorimpl)(this); \ + this.instanceOf##cname = false; \ + entity super = SUPER(cname); \ + if (super != cname##_vtbl) super.dtor(this); \ + } \ + STATIC_METHOD(cname, dtorimpl, void(cname this)) + +#define SUPER(cname) (cname##_vtbl.vtblbase) + +#define ATTRIB_3(cname, name, type) classfield(cname) .type name +#define ATTRIB_4(cname, name, type, val) \ + ATTRIB_3(cname, name, type); \ + INIT(cname) \ + { \ + noref bool strzone; /* Error on strzone() calls. */ \ + this.name = val; \ + } \ + ATTRIB_3(cname, name, type) + +#define STATIC_ATTRIB(cname, name, type, val) \ + type cname##_##name; \ + _INIT_STATIC(cname) \ + { \ + noref bool strzone; /* Error on strzone() calls. */ \ + cname##_##name = val; \ + } + +// cleanup potentially zoned strings from base classes +#define ATTRIB_STRZONE(cname, name, type, val) \ + classfield(cname).type name; \ + INIT(cname) \ + { \ + strcpy(this.name, val); \ + } + +#define STATIC_ATTRIB_STRZONE(cname, name, type, val) \ + type cname##_##name; \ + _INIT_STATIC(cname) \ + { \ + strcpy(cname##_##name, val); \ + } + +#define ATTRIBARRAY(cname, name, type, cnt) \ + classfield(cname) .type name[cnt] + +#define METHOD(cname, name, prototype) \ + STATIC_METHOD(cname, name, prototype); \ + classfield(cname) .prototype name; \ + _INIT_STATIC(cname) \ + { \ + this.name = METHOD_REFERENCE(cname, name); \ + } \ + STATIC_METHOD(cname, name, prototype) + +#define STATIC_METHOD(cname, name, prototype) \ + prototype METHOD_REFERENCE(cname, name) + +#define ENDCLASS(cname) \ + INIT(cname) \ + { \ + return this; \ + } + +// impl .string vtblname; .entity vtblbase; @@ -168,128 +303,25 @@ STATIC_INIT(RegisterClasses) } \ ACCUMULATE_FUNCTION(RegisterClasses, cname##_vtbl_init) -#define _INIT_STATIC(cname) [[accumulate]] void spawn##cname##_static(cname this) -#define INIT(cname) [[accumulate]] cname spawn##cname##_1(cname this) +#define _INIT_STATIC(cname) ACCUMULATE void spawn##cname##_static(cname this) #if NDEBUG #define DEBUG_STUFF(cname) #else #define DEBUG_STUFF(cname) \ - bool is_##cname(entity e) { return e.instanceOf##cname; } \ - void isnt_##cname(entity e) { eprint(e); } + ERASEABLE bool is_##cname(entity e) { return e.instanceOf##cname; } \ + ERASEABLE void isnt_##cname(entity e) { eprint(e); } #endif - -#define CLASS(cname, base) \ - entityclass(cname, base); \ - class(cname).bool instanceOf##cname; \ - DEBUG_STUFF(cname) \ - VTBL(cname, base) \ - _INIT_STATIC(cname) \ - { \ - if (cname##_vtbl && !this.transmute)\ - { \ - copyentity(cname##_vtbl, this); \ - return; \ - } \ - spawn##base##_static(this); \ - this.instanceOf##cname = true; \ - } \ - INIT(cname) \ - { \ - /* Only statically initialize the current class, it contains everything it inherits */ \ - if (cname##_vtbl.vtblname == this.classname) \ - { \ - spawn##cname##_static(this); \ - this.transmute = false; \ - this.classname = #cname; \ - this.vtblname = string_null; \ - this.vtblbase = cname##_vtbl; \ - } \ - spawn##base##_1(this); \ - } - #define METHOD_REFERENCE(cname, name) \ cname##_##name -#define STATIC_METHOD(cname, name, prototype) \ - prototype METHOD_REFERENCE(cname, name) - -#define METHOD(cname, name, prototype) \ - STATIC_METHOD(cname, name, prototype); \ - class(cname) .prototype name; \ - _INIT_STATIC(cname) \ - { \ - this.name = METHOD_REFERENCE(cname, name); \ - } \ - STATIC_METHOD(cname, name, prototype) - -#define DESTRUCTOR(cname) \ - STATIC_METHOD(cname, dtorimpl, void(cname this)); \ - METHOD(cname, dtor, void(cname this)) \ - { \ - METHOD_REFERENCE(cname, dtorimpl)(this); \ - this.instanceOf##cname = false; \ - entity super = SUPER(cname); \ - if (super != cname##_vtbl) super.dtor(this); \ - } \ - STATIC_METHOD(cname, dtorimpl, void(cname this)) - -#define ATTRIB(...) EVAL_ATTRIB(OVERLOAD_(ATTRIB, __VA_ARGS__)) -#define EVAL_ATTRIB(...) __VA_ARGS__ -#define ATTRIB_3(cname, name, type) class(cname) .type name -#define ATTRIB_4(cname, name, type, val) \ - ATTRIB_3(cname, name, type); \ - INIT(cname) \ - { \ - noref bool strzone; /* Error on strzone() calls. */ \ - this.name = val; \ - } \ - ATTRIB_3(cname, name, type) - -#define STATIC_ATTRIB(cname, name, type, val) \ - type cname##_##name; \ - _INIT_STATIC(cname) \ - { \ - noref bool strzone; /* Error on strzone() calls. */ \ - cname##_##name = val; \ - } - -// cleanup potentially zoned strings from base classes - -#define ATTRIB_STRZONE(cname, name, type, val) \ - class(cname).type name; \ - INIT(cname) \ - { \ - if (this.name) \ - strunzone(this.name); \ - this.name = strzone(val); \ - } - -#define STATIC_ATTRIB_STRZONE(cname, name, type, val) \ - type cname##_##name; \ - _INIT_STATIC(cname) \ - { \ - if (cname##_##name) \ - strunzone(cname##_##name); \ - cname##_##name = val; \ - } - -#define ATTRIBARRAY(cname, name, type, cnt) \ - class(cname) .type name[cnt] - -#define ENDCLASS(cname) \ - INIT(cname) \ - { \ - return this; \ - } - -#define SUPER(cname) (cname##_vtbl.vtblbase) +#endif #define spawn_static(this) #define spawn_1(this) #define _vtbl NULL -CLASS(Object, ); +CLASS(Object) DESTRUCTOR(Object) { builtin_remove(this); } #define remove(this) delete(this) METHOD(Object, describe, string(Object this)) diff --git a/qcsrc/lib/promise.qc b/qcsrc/lib/promise.qc new file mode 100644 index 0000000000..475208e34a --- /dev/null +++ b/qcsrc/lib/promise.qc @@ -0,0 +1,214 @@ +#include "promise.qh" + +.int _ref_count; +.void(entity this) _ref_finalize; + +void ref_init(entity this, int init, void(entity this) finalize) +{ + this._ref_count = init; + this._ref_finalize = finalize; +} + +// todo: rename to `ref` +entity REF(entity this) +{ + this._ref_count += 1; + return this; +} + +entity unref(Promise this) +{ + this._ref_count -= 1; + if (!this._ref_count) { + LOG_DEBUGF("Finalize entity %i (from %s)", this, this.sourceLoc); + this._ref_finalize(this); + return NULL; + } + return this; +} + +enum { + PROMISE_PENDING, + PROMISE_RESOLVED, + PROMISE_REJECTED, +}; + +classfield(Promise) .int _promise_state; +classfield(Promise) .entity _promise_result; +classfield(Promise) .IntrusiveList _promise_handlers; + +entityclass(PromiseHandler); +classfield(PromiseHandler) .Promise _promise_handler_ret; +classfield(PromiseHandler) .entity _promise_handler_data; +classfield(PromiseHandler) .Promise(Promise ret, entity result, entity userdata) _promise_handler_resolve; +classfield(PromiseHandler) .Promise(Promise ret, entity err, entity userdata) _promise_handler_reject; + +void _Promise_finalize(Promise this) +{ + delete(this); +} + +Promise Promise_new_(Promise this) +{ + ref_init(this, 2, _Promise_finalize); + this._promise_result = this; // promises default to being their own result to save on entities + return this; +} + +void _Promise_handle(Promise this, PromiseHandler h); + +void Promise_resolve(Promise this) +{ + if (!this) { + LOG_SEVERE("Attempted to resolve a null promise"); + return; + } + if (this._promise_state != PROMISE_PENDING) { + LOG_SEVEREF("Resolved non-pending promise %i", this); + return; + } + this._promise_state = PROMISE_RESOLVED; + if (this._promise_handlers) { + IL_EACH(this._promise_handlers, true, _Promise_handle(this, it)); + IL_DELETE(this._promise_handlers); + } + unref(this); + return; +} + +void Promise_reject(Promise this) +{ + if (!this) { + LOG_SEVERE("Attempted to reject a null promise"); + return; + } + if (this._promise_state != PROMISE_PENDING) { + LOG_SEVEREF("Rejected non-pending promise %i", this); + return; + } + this._promise_state = PROMISE_REJECTED; + if (this._promise_handlers) { + IL_EACH(this._promise_handlers, true, _Promise_handle(this, it)); + IL_DELETE(this._promise_handlers); + } + unref(this); + return; +} + +Promise _Promise_then( + Promise this, + Promise ret, + Promise(Promise ret, entity result, entity userdata) onResolve, + Promise(Promise ret, entity result, entity userdata) onReject, + entity userdata +); + +void _Promise_handle(Promise this, PromiseHandler h) +{ + switch (this._promise_state) { + case PROMISE_PENDING: + if (!this._promise_handlers) { + this._promise_handlers = IL_NEW(); + } + IL_PUSH(this._promise_handlers, h); + break; + case PROMISE_RESOLVED: { + Promise ret = h._promise_handler_ret; + Promise p = h._promise_handler_resolve(ret, this._promise_result, h._promise_handler_data); + if (p != ret) _Promise_then(p, ret, func_null, func_null, NULL); // bind p -> ret + delete(h); + break; + } + case PROMISE_REJECTED: { + Promise ret = h._promise_handler_ret; + Promise p = h._promise_handler_reject(ret, this._promise_result, h._promise_handler_data); + if (p != ret) _Promise_then(p, ret, func_null, func_null, NULL); // bind p -> ret + delete(h); + break; + } + } +} + +void _Promise_done( + Promise this, + Promise(Promise ret, entity result, entity userdata) onResolve, + Promise(Promise ret, entity err, entity userdata) onReject, + Promise ret, + entity userdata +) +{ + PromiseHandler h = new_pure(PromiseHandler); + h._promise_handler_ret = ret; + h._promise_handler_data = userdata; + h._promise_handler_resolve = onResolve; + h._promise_handler_reject = onReject; + _Promise_handle(this, h); +} + +Promise _Promise_onResolve_default(Promise ret, entity result, entity userdata) +{ + ret._promise_result = result; + Promise_resolve(ret); + return ret; +} + +Promise _Promise_onReject_default(Promise ret, entity err, entity userdata) +{ + ret._promise_result = err; + Promise_reject(ret); + return ret; +} + +Promise _Promise_then( + Promise this, + Promise ret, + Promise(Promise ret, entity result, entity userdata) onResolve, + Promise(Promise ret, entity result, entity userdata) onReject, + entity userdata +) +{ + _Promise_done( + this, + (onResolve ? onResolve : _Promise_onResolve_default), + (onReject ? onReject : _Promise_onReject_default), + ret, + userdata + ); + return ret; +} + +Promise Promise_then_( + Promise this, + Promise ret, + Promise(Promise ret, entity result, entity userdata) onResolve, + entity userdata +) +{ + unref(ret); // ret is a temporary + return _Promise_then(this, ret, onResolve, func_null, userdata); +} + +Promise Promise_catch_( + Promise this, + Promise ret, + Promise(Promise ret, entity result, entity userdata) onReject, + entity userdata +) +{ + unref(ret); // ret is a temporary + return _Promise_then(this, ret, func_null, onReject, userdata); +} + +// utils + +#ifndef MENUQC + +Promise Promise_sleep(float n) +{ + Promise p = unref(Promise_new()); + setthink(p, Promise_resolve); + p.nextthink = time + n; + return p; +} + +#endif diff --git a/qcsrc/lib/promise.qh b/qcsrc/lib/promise.qh new file mode 100644 index 0000000000..a793f58583 --- /dev/null +++ b/qcsrc/lib/promise.qh @@ -0,0 +1,31 @@ +#pragma once + +entityclass(Promise); + +#define Promise_new() Promise_new_(new_pure(Promise)) +Promise Promise_new_(Promise this); + +/** + * notify all Promise_then subscribers that this promise has resolved + */ +void Promise_resolve(Promise this); + +#define Promise_then(this, handler, userdata) Promise_then_(this, Promise_new(), handler, userdata) +Promise Promise_then_(Promise this, Promise ret, Promise(Promise ret, entity result, entity userdata) handler, entity userdata); + +/** + * notify all Promise_catch subscribers that this promise has rejected + */ +void Promise_reject(Promise this); + +#define Promise_catch(this, handler, userdata) Promise_catch_(this, Promise_new(), handler, userdata) +Promise Promise_catch_(Promise this, Promise ret, Promise(Promise ret, entity err, entity userdata) handler, entity userdata); + +// utils + +#ifndef MENUQC + +// TODO: support menu +Promise Promise_sleep(float n); + +#endif diff --git a/qcsrc/lib/registry.qh b/qcsrc/lib/registry.qh index 306a107d7e..d8f18a02c9 100644 --- a/qcsrc/lib/registry.qh +++ b/qcsrc/lib/registry.qh @@ -22,7 +22,7 @@ */ #define REGISTRY(id, max) \ void Register##id(); \ - [[accumulate]] void REGISTRY_DEPENDS_(id) {} \ + ACCUMULATE void REGISTRY_DEPENDS_(id) {} \ REGISTRY_BEGIN(id) {} \ REGISTRY_END(id) {} \ void _Register##id() {} \ @@ -40,11 +40,11 @@ #define REGISTRY_DEPENDS_(id) Register##id##_Depends() /** Called before initializing a registry. */ -#define REGISTRY_BEGIN(id) [[accumulate]] void REGISTRY_BEGIN_(id) { noref void() f = Register##id; } void REGISTRY_BEGIN_(id) +#define REGISTRY_BEGIN(id) ACCUMULATE void REGISTRY_BEGIN_(id) { noref void() f = Register##id; } void REGISTRY_BEGIN_(id) #define REGISTRY_BEGIN_(id) Register##id##_First() /** Called after initializing a registry. */ -#define REGISTRY_END(id) [[accumulate]] void REGISTRY_END_(id) { noref void() f = Register##id; } void REGISTRY_END_(id) +#define REGISTRY_END(id) ACCUMULATE void REGISTRY_END_(id) { noref void() f = Register##id; } void REGISTRY_END_(id) #define REGISTRY_END_(id) Register##id##_Done() REGISTRY(Registries, BITS(8)) @@ -104,7 +104,7 @@ REGISTRY(Registries, BITS(8)) REGISTRY_PUSH(registry, fld, e); \ } MACRO_END -#define REGISTER_INIT(id) [[accumulate]] void Register_##id##_init(entity this) +#define REGISTER_INIT(id) ACCUMULATE void Register_##id##_init(entity this) /** internal next pointer */ #define REGISTRY_NEXT enemy @@ -147,9 +147,9 @@ REGISTRY(Registries, BITS(8)) #define REGISTRY_HASH(id) Registry_hash_##id ERASEABLE -[[accumulate]] void Registry_check(string r, string server) { } +ACCUMULATE void Registry_check(string r, string server) { } ERASEABLE -[[accumulate]] void Registry_send_all() { } +ACCUMULATE void Registry_send_all() { } #ifdef SVQC void Registry_send(string id, string hash); diff --git a/qcsrc/lib/replicate.qh b/qcsrc/lib/replicate.qh index c7a42042de..6569897826 100644 --- a/qcsrc/lib/replicate.qh +++ b/qcsrc/lib/replicate.qh @@ -12,21 +12,20 @@ #define REPLICATE(...) EVAL_REPLICATE(OVERLOAD(REPLICATE, __VA_ARGS__)) #define EVAL_REPLICATE(...) __VA_ARGS__ - [[accumulate]] void ReplicateVars(entity this, entity store, string thisname, int i) {} + ACCUMULATE void ReplicateVars(entity this, entity store, string thisname, int i) {} #define REPLICATE_3(fld, type, var) REPLICATE_4(fld, type, var, ) #define REPLICATE_4(fld, type, var, func) REPLICATE_##type(fld, var, func) #define REPLICATE_string(fld, var, func) \ REPLICATE_7(fld, string, var, , \ - { if (field) strunzone(field); field = strzone(it); }, \ - { if (field) strunzone(field); field = string_null; }, \ + { strcpy(field, it); }, \ + { strfree(field); }, \ { \ /* also initialize to the default value of func when requesting cvars */ \ string s = func(field); \ if (s != field) \ { \ - strunzone(field); \ - field = strzone(s); \ + strcpy(field, s); \ } \ }) #define REPLICATE_float(fld, var, func) REPLICATE_7(fld, float, var, func, { field = stof(it); }, , ) diff --git a/qcsrc/lib/self.qh b/qcsrc/lib/self.qh index 0a61cc003d..4299c19cd3 100644 --- a/qcsrc/lib/self.qh +++ b/qcsrc/lib/self.qh @@ -12,7 +12,7 @@ // Step 2: const self #if 1 #define self (RVALUE, self) - [[alias("self")]] entity __self; + ALIAS("self") entity __self; #define setself(s) (__self = s) #define WITHSELF(value, block) WITH(entity, __self, value, (RVALUE, block)) #endif diff --git a/qcsrc/lib/sortlist.qh b/qcsrc/lib/sortlist.qh index af4b47ab80..8c362d4305 100644 --- a/qcsrc/lib/sortlist.qh +++ b/qcsrc/lib/sortlist.qh @@ -2,7 +2,7 @@ entityclass(Sort); // .float(entity,entity) sort_cmp; -class(Sort).entity chain, sort_next, sort_prev; +classfield(Sort).entity chain, sort_next, sort_prev; entity Sort_Spawn(); diff --git a/qcsrc/lib/spawnfunc.qh b/qcsrc/lib/spawnfunc.qh index e14002a6d5..d3198b3ce4 100644 --- a/qcsrc/lib/spawnfunc.qh +++ b/qcsrc/lib/spawnfunc.qh @@ -86,7 +86,7 @@ noref bool require_spawnfunc_prefix; #define spawnfunc_1(id) spawnfunc_2(id, FIELDS_UNION) #define spawnfunc_2(id, whitelist) \ void __spawnfunc_##id(entity this); \ - [[accumulate]] void spawnfunc_##id(entity this) \ + ACCUMULATE void spawnfunc_##id(entity this) \ { \ if (!__spawnfunc_first) { \ __spawnfunc_first = true; \ @@ -163,6 +163,7 @@ noref bool require_spawnfunc_prefix; FIELD_SCALAR(fld, bgmscriptsustain) \ FIELD_SCALAR(fld, bgmscript) \ FIELD_SCALAR(fld, button0) \ + FIELD_SCALAR(fld, chmap) \ FIELD_SCALAR(fld, cnt) \ FIELD_SCALAR(fld, colormap) \ FIELD_SCALAR(fld, count) \ @@ -182,10 +183,12 @@ noref bool require_spawnfunc_prefix; FIELD_SCALAR(fld, dmg_force) \ FIELD_SCALAR(fld, dmg_radius) \ FIELD_SCALAR(fld, effects) \ + FIELD_SCALAR(fld, falloff) \ FIELD_SCALAR(fld, flags) \ FIELD_SCALAR(fld, fog) \ FIELD_SCALAR(fld, frags) \ FIELD_SCALAR(fld, frame) \ + FIELD_SCALAR(fld, gametype) \ FIELD_SCALAR(fld, gametypefilter) \ FIELD_SCALAR(fld, geomtype) \ FIELD_SCALAR(fld, gravity) \ @@ -216,6 +219,7 @@ noref bool require_spawnfunc_prefix; FIELD_SCALAR(fld, noalign) \ FIELD_SCALAR(fld, noise1) \ FIELD_SCALAR(fld, noise2) \ + FIELD_SCALAR(fld, noise3) \ FIELD_SCALAR(fld, noise) \ FIELD_SCALAR(fld, phase) \ FIELD_SCALAR(fld, platmovetype) \ @@ -243,6 +247,7 @@ noref bool require_spawnfunc_prefix; FIELD_SCALAR(fld, target_random) \ FIELD_SCALAR(fld, target_range) \ FIELD_SCALAR(fld, team) \ + FIELD_SCALAR(fld, trigger_reverse) \ FIELD_SCALAR(fld, turret_scale_health) \ FIELD_SCALAR(fld, turret_scale_range) \ FIELD_SCALAR(fld, turret_scale_respawn) \ @@ -256,6 +261,7 @@ noref bool require_spawnfunc_prefix; FIELD_VEC(fld, absmin) \ FIELD_VEC(fld, angles) \ FIELD_VEC(fld, avelocity) \ + FIELD_VEC(fld, beam_color)\ FIELD_VEC(fld, debrisavelocityjitter) \ FIELD_VEC(fld, debrisvelocity) \ FIELD_VEC(fld, debrisvelocityjitter) \ diff --git a/qcsrc/lib/static.qh b/qcsrc/lib/static.qh index 6f511fcecf..e0ec96b8ec 100644 --- a/qcsrc/lib/static.qh +++ b/qcsrc/lib/static.qh @@ -17,7 +17,9 @@ void profile(string s) } #define _STATIC_INIT(func, where) \ - [[accumulate]] void _static_##func() { profile(#func); } \ + ACCUMULATE void _static_##func##profile() { profile(#func); } \ + ACCUMULATE_FUNCTION(where, _static_##func##profile) \ + ACCUMULATE void _static_##func(); \ ACCUMULATE_FUNCTION(where, _static_##func) \ void _static_##func() diff --git a/qcsrc/lib/stats.qh b/qcsrc/lib/stats.qh index 1100c474cb..03bd34b813 100644 --- a/qcsrc/lib/stats.qh +++ b/qcsrc/lib/stats.qh @@ -53,7 +53,7 @@ int g_magic_stats_hole = 0; REGISTRY_RESERVE(Stats, m_id, STAT_##id, z); \ } \ } \ - [[accumulate]] void stats_get() \ + ACCUMULATE void stats_get() \ { \ T it = getstat_##T(STAT_##id.m_id); \ /* if (it != CAT(_STAT(id), _prev)) \ @@ -111,7 +111,7 @@ int g_magic_stats_hole = 0; REGISTRY_RESERVE(Stats, m_id, STAT_##id, z); \ } \ } \ - [[accumulate]] void stats_add() \ + ACCUMULATE void stats_add() \ { \ .T fld = _STAT(id); \ addstat_##T(STAT_##id.m_id, fld); \ @@ -120,7 +120,7 @@ int g_magic_stats_hole = 0; /** TODO: do we want the global copy to update? */ #define REGISTER_STAT_3(id, T, expr) \ REGISTER_STAT_2(id, T); \ - [[accumulate]] void GlobalStats_update(entity this) { STAT(id, this) = (expr); } \ + ACCUMULATE void GlobalStats_update(entity this) { STAT(id, this) = (expr); } \ STATIC_INIT(worldstat_##id) { entity this = STATS; STAT(id, this) = (expr); } #else #define REGISTER_STAT_2(id, type) diff --git a/qcsrc/lib/string.qh b/qcsrc/lib/string.qh index 812eb72c84..96e8a3a276 100644 --- a/qcsrc/lib/string.qh +++ b/qcsrc/lib/string.qh @@ -4,6 +4,25 @@ #include "sort.qh" #include "oo.qh" +// string logic +// +// true: is truthy +// == "": is equal to "" +// is "": has the same string index as the string constant "" +// strunzone: can be strunzoned +// +// | | true | == "" | is "" | strunzone | +// | :----------: | :--: | :---: | :---: | :-------: | +// | nil | | yes | | | +// | strcat(nil) | yes | yes | | | +// | strzone(nil) | yes | yes | | yes | +// | "" | yes | yes | yes | | +// | strcat("") | yes | yes | | | +// | strzone("") | yes | yes | | yes | +// | "s" | yes | | | | +// | strcat("s") | yes | | | | +// | strzone("s") | yes | | | yes | + #ifdef CSQC float stringwidth_colors(string s, vector theSize) { @@ -27,6 +46,20 @@ } #endif +#define strcpy(this, s) MACRO_BEGIN \ + if (this) { \ + strunzone(this); \ + } \ + this = strzone(s); \ +MACRO_END + +#define strfree(this) MACRO_BEGIN \ + if (this) { \ + strunzone(this); \ + } \ + this = string_null; \ +MACRO_END + ERASEABLE string seconds_tostring(float sec) { diff --git a/qcsrc/lib/test.qh b/qcsrc/lib/test.qh index ff6f2d23d5..8d8de76ec6 100644 --- a/qcsrc/lib/test.qh +++ b/qcsrc/lib/test.qh @@ -5,7 +5,7 @@ /** Use UpperCamelCase for suite and test only */ #define TEST(suite, test) \ void _TEST_##suite##_##test(); \ - [[accumulate]] int TEST_RunAll_accumulated(int f) { \ + ACCUMULATE int TEST_RunAll_accumulated(int f) { \ if (!TEST_Run(#suite "_" #test)) ++f; \ return = f; \ } \ diff --git a/qcsrc/lib/urllib.qc b/qcsrc/lib/urllib.qc index 1572fec07c..2ad7bda246 100644 --- a/qcsrc/lib/urllib.qc +++ b/qcsrc/lib/urllib.qc @@ -55,7 +55,7 @@ float url_URI_Get_Callback(int id, float status, string data) { LOG_INFO("url_URI_Get_Callback: out of memory in buf_create"); e.url_ready(e, e.url_ready_pass, URL_READY_ERROR); - strunzone(e.url_url); + strfree(e.url_url); delete(e); return 1; } @@ -64,7 +64,7 @@ float url_URI_Get_Callback(int id, float status, string data) { LOG_INFO("url_URI_Get_Callback: out of memory in buf_create"); e.url_ready(e, e.url_ready_pass, URL_READY_ERROR); - strunzone(e.url_url); + strfree(e.url_url); delete(e); return 1; } @@ -77,7 +77,7 @@ float url_URI_Get_Callback(int id, float status, string data) { // an ERROR e.url_ready(e, e.url_ready_pass, -fabs(status)); - strunzone(e.url_url); + strfree(e.url_url); delete(e); return 1; } @@ -108,7 +108,7 @@ void url_single_fopen(string url, int mode, url_ready_func rdy, entity pass) { LOG_INFO("url_single_fopen: out of memory in buf_create"); rdy(e, pass, URL_READY_ERROR); - strunzone(e.url_url); + strfree(e.url_url); delete(e); return; } @@ -231,7 +231,7 @@ void url_fclose(entity e) LOG_INFO("url_fclose: too many concurrent requests"); e.url_ready(e, e.url_ready_pass, URL_READY_ERROR); buf_del(e.url_wbuf); - strunzone(e.url_url); + strfree(e.url_url); delete(e); return; } @@ -243,7 +243,7 @@ void url_fclose(entity e) LOG_INFO("url_fclose: failure in crypto_uri_postbuf"); e.url_ready(e, e.url_ready_pass, URL_READY_ERROR); buf_del(e.url_wbuf); - strunzone(e.url_url); + strfree(e.url_url); delete(e); return; } @@ -264,7 +264,7 @@ void url_fclose(entity e) // we have READ all data, just close e.url_ready(e, e.url_ready_pass, URL_READY_CLOSED); buf_del(e.url_rbuf); - strunzone(e.url_url); + strfree(e.url_url); delete(e); } } @@ -341,7 +341,7 @@ void url_multi_ready(entity fh, entity me, float status) { LOG_INFO("uri_multi_ready: got HTTP error 422, data is in unusable format - not continuing"); me.url_ready(fh, me.url_ready_pass, status); - strunzone(me.url_url); + strfree(me.url_url); delete(me); return; } @@ -350,7 +350,7 @@ void url_multi_ready(entity fh, entity me, float status) if (n <= me.url_attempt) { me.url_ready(fh, me.url_ready_pass, status); - strunzone(me.url_url); + strfree(me.url_url); delete(me); return; } diff --git a/qcsrc/lib/warpzone/mathlib.qc b/qcsrc/lib/warpzone/mathlib.qc index acbc1c61d4..4a7c886106 100644 --- a/qcsrc/lib/warpzone/mathlib.qc +++ b/qcsrc/lib/warpzone/mathlib.qc @@ -63,11 +63,11 @@ float tanh(float e) float exp(float e) { - return (M_E ** e); + return pow(M_E, e); } float exp2(float e) { - return (2 ** e); + return pow(2, e); } float expm1(float e) { @@ -79,16 +79,16 @@ vector frexp(float e) vector v; v.z = 0; v.y = ilogb(e) + 1; - v.x = e / (2 ** v.y); + v.x = e / pow(2, v.y); return v; } int ilogb(float e) { return floor(log2(fabs(e))); } -float ldexp(float e, int e) +float ldexp(float x, int e) { - return e * (2 ** e); + return x * pow(2, e); } float logn(float e, float base) { @@ -117,12 +117,12 @@ vector modf(float f) float scalbn(float e, int n) { - return e * (2 ** n); + return e * pow(2, n); } float cbrt(float e) { - return copysign((fabs(e) ** (1.0/3.0)), e); + return copysign(pow(fabs(e), (1.0/3.0)), e); } float hypot(float e, float f) { diff --git a/qcsrc/menu/item/inputbox.qc b/qcsrc/menu/item/inputbox.qc index a418dc2ce0..d02f4661f5 100644 --- a/qcsrc/menu/item/inputbox.qc +++ b/qcsrc/menu/item/inputbox.qc @@ -22,7 +22,7 @@ void InputBox_setText(entity me, string txt) { - if (me.text) strunzone(me.text); + strfree(me.text); SUPER(InputBox).setText(me, strzone(txt)); } diff --git a/qcsrc/menu/item/label.qc b/qcsrc/menu/item/label.qc index d21b5676bd..f7a782dabb 100644 --- a/qcsrc/menu/item/label.qc +++ b/qcsrc/menu/item/label.qc @@ -9,8 +9,7 @@ me.text = txt; if (txt != me.currentText) { - if (me.currentText) strunzone(me.currentText); - me.currentText = strzone(txt); + strcpy(me.currentText, txt); me.recalcPos = 1; } } @@ -112,8 +111,7 @@ t = me.textEntity.toString(me.textEntity); if (t != me.currentText) { - if (me.currentText) strunzone(me.currentText); - me.currentText = strzone(t); + strcpy(me.currentText, t); me.recalcPos = 1; } } diff --git a/qcsrc/menu/menu.qc b/qcsrc/menu/menu.qc index af14e0842b..fb6c4aeeda 100644 --- a/qcsrc/menu/menu.qc +++ b/qcsrc/menu/menu.qc @@ -217,8 +217,7 @@ void m_init_delayed() if (m_goto_buffer) { m_goto(m_goto_buffer); - strunzone(m_goto_buffer); - m_goto_buffer = string_null; + strfree(m_goto_buffer); } if (Menu_Active) m_display(); // delayed menu display @@ -550,8 +549,7 @@ void m_tooltip(vector pos) { // fade out if tooltip of a certain item has changed menuTooltipState = 3; - if (prev_tooltip) strunzone(prev_tooltip); - prev_tooltip = strzone(it.tooltip); + strcpy(prev_tooltip, it.tooltip); } else if (menuTooltipItem && !m_testmousetooltipbox(pos)) { @@ -584,8 +582,7 @@ void m_tooltip(vector pos) menuTooltipOrigin.x = -1; // unallocated - if (menuTooltipText) strunzone(menuTooltipText); - menuTooltipText = strzone(gettooltip()); + strcpy(menuTooltipText, gettooltip()); int i = 0; float w = 0; @@ -635,11 +632,7 @@ void m_tooltip(vector pos) if (menuTooltipItem == NULL) { - if (menuTooltipText) - { - strunzone(menuTooltipText); - menuTooltipText = string_null; - } + strfree(menuTooltipText); return; } else @@ -953,8 +946,7 @@ void m_goto(string itemname) { if (!menuInitialized) { - if (m_goto_buffer) strunzone(m_goto_buffer); - m_goto_buffer = strzone(itemname); + strcpy(m_goto_buffer, itemname); return; } if (itemname == "") // this can be called by GameCommand diff --git a/qcsrc/menu/mutators/events.qh b/qcsrc/menu/mutators/events.qh index 0c5056b974..af1b7f6324 100644 --- a/qcsrc/menu/mutators/events.qh +++ b/qcsrc/menu/mutators/events.qh @@ -3,7 +3,7 @@ #include <common/mutators/base.qh> // register all possible hooks here - + // to use a hook, first register your mutator using REGISTER_MUTATOR // then create your function using MUTATOR_HOOKFUNCTION diff --git a/qcsrc/menu/xonotic/campaign.qc b/qcsrc/menu/xonotic/campaign.qc index cb418a4e18..9f953f66f5 100644 --- a/qcsrc/menu/xonotic/campaign.qc +++ b/qcsrc/menu/xonotic/campaign.qc @@ -14,8 +14,7 @@ void rewrapCampaign(float w, float l0, float emptyheight, vector theFontSize) for(i = 0; i < campaign_entries; ++i) { l = l0; - if(campaign_longdesc_wrapped[i]) - strunzone(campaign_longdesc_wrapped[i]); + strfree(campaign_longdesc_wrapped[i]); n = tokenizebyseparator(campaign_longdesc[i], "\n"); r = ""; for(j = 0; j < n; ++j) @@ -70,12 +69,8 @@ void XonoticCampaignList_destroy(entity me) void XonoticCampaignList_loadCvars(entity me) { // read campaign cvars - if(campaign_name) - strunzone(campaign_name); - if(me.cvarName) - strunzone(me.cvarName); - campaign_name = strzone(cvar_string("g_campaign_name")); - me.cvarName = strzone(strcat("g_campaign", campaign_name, "_index")); + strcpy(campaign_name, cvar_string("g_campaign_name")); + strcpy(me.cvarName, strcat("g_campaign", campaign_name, "_index")); registercvar(me.cvarName, "", 0); // saved by server QC anyway CampaignFile_Unload(); CampaignFile_Load(0, CAMPAIGN_MAX_ENTRIES); diff --git a/qcsrc/menu/xonotic/crosshairpreview.qc b/qcsrc/menu/xonotic/crosshairpreview.qc index e11d7dcc0f..f3c3fe24fa 100644 --- a/qcsrc/menu/xonotic/crosshairpreview.qc +++ b/qcsrc/menu/xonotic/crosshairpreview.qc @@ -25,9 +25,7 @@ void XonoticCrosshairPreview_draw(entity me) float a; rgb = stov(cvar_string("crosshair_color")); a = cvar("crosshair_alpha"); - if(me.src) - strunzone(me.src); - me.src = strzone(strcat("/gfx/crosshair", cvar_string("crosshair"))); + strcpy(me.src, strcat("/gfx/crosshair", cvar_string("crosshair"))); sz = draw_PictureSize(me.src); sz = globalToBoxSize(sz, me.size); diff --git a/qcsrc/menu/xonotic/cvarlist.qc b/qcsrc/menu/xonotic/cvarlist.qc index 12bb2810ba..9587d5432d 100644 --- a/qcsrc/menu/xonotic/cvarlist.qc +++ b/qcsrc/menu/xonotic/cvarlist.qc @@ -107,17 +107,10 @@ void XonoticCvarList_setSelected(entity me, float i) if(me.nItems == 0) return; - if(me.cvarName) - strunzone(me.cvarName); - if(me.cvarDescription) - strunzone(me.cvarDescription); - if(me.cvarType) - strunzone(me.cvarType); - if(me.cvarDefault) - strunzone(me.cvarDefault); - me.cvarName = strzone(bufstr_get(me.handle, me.selectedItem)); - me.cvarDescription = strzone(cvar_description(me.cvarName)); - me.cvarDefault = strzone(cvar_defstring(me.cvarName)); + strfree(me.cvarType); + strcpy(me.cvarName, bufstr_get(me.handle, me.selectedItem)); + strcpy(me.cvarDescription, cvar_description(me.cvarName)); + strcpy(me.cvarDefault, cvar_defstring(me.cvarName)); me.cvarNameBox.setText(me.cvarNameBox, me.cvarName); me.cvarDescriptionBox.setText(me.cvarDescriptionBox, me.cvarDescription); float needsForcing = me.updateCvarType(me); diff --git a/qcsrc/menu/xonotic/demolist.qc b/qcsrc/menu/xonotic/demolist.qc index b527542a59..16d5370f5d 100644 --- a/qcsrc/menu/xonotic/demolist.qc +++ b/qcsrc/menu/xonotic/demolist.qc @@ -129,8 +129,7 @@ void DemoList_Refresh_Click(entity btn, entity me) void DemoList_Filter_Change(entity box, entity me) { - if(me.filterString) - strunzone(me.filterString); + strfree(me.filterString); if(box.text != "") { diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_modicons.qc b/qcsrc/menu/xonotic/dialog_hudpanel_modicons.qc index afc47af30d..5023d7a2d9 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_modicons.qc +++ b/qcsrc/menu/xonotic/dialog_hudpanel_modicons.qc @@ -4,7 +4,7 @@ void XonoticHUDModIconsDialog_fill(entity me) { - entity e; + //entity e; string panelname = "modicons"; dialog_hudpanel_main_checkbox(me, panelname); diff --git a/qcsrc/menu/xonotic/dialog_hudpanel_racetimer.qc b/qcsrc/menu/xonotic/dialog_hudpanel_racetimer.qc index d4bbe51f56..dec6fe3644 100644 --- a/qcsrc/menu/xonotic/dialog_hudpanel_racetimer.qc +++ b/qcsrc/menu/xonotic/dialog_hudpanel_racetimer.qc @@ -4,7 +4,7 @@ void XonoticHUDRaceTimerDialog_fill(entity me) { - entity e; + //entity e; string panelname = "racetimer"; dialog_hudpanel_main_checkbox(me, panelname); diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create.qc b/qcsrc/menu/xonotic/dialog_multiplayer_create.qc index 481914200a..2a2144598b 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create.qc +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create.qc @@ -27,16 +27,8 @@ void GameType_ConfigureSliders(entity me, string pLabel, float pMin, float pMax, // clear old values for(i = 0; i < e.nValues; ++i); { - if(e.(valueStrings[i])) - { - strunzone(e.(valueStrings[i])); - e.(valueStrings[i]) = string_null; - } - if(e.(valueIdentifiers[i])) - { - strunzone(e.(valueIdentifiers[i])); - e.(valueIdentifiers[i]) = string_null; - } + strfree(e.(valueStrings[i])); + strfree(e.(valueIdentifiers[i])); } e.clearValues(e); diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc b/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc index 2f2ab901a8..87ffadf383 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc @@ -12,19 +12,11 @@ void XonoticMapInfoDialog_loadMapInfo(entity me, int i, entity mlb) me.startButton.onClickEntity = mlb; MapInfo_Get_ByID(i); - if(me.currentMapBSPName) - { - strunzone(me.currentMapBSPName); - strunzone(me.currentMapTitle); - strunzone(me.currentMapAuthor); - strunzone(me.currentMapDescription); - strunzone(me.currentMapPreviewImage); - } - me.currentMapBSPName = strzone(MapInfo_Map_bspname); - me.currentMapTitle = strzone(strdecolorize(MapInfo_Map_title)); - me.currentMapAuthor = strzone(strdecolorize(MapInfo_Map_author)); - me.currentMapDescription = strzone(MapInfo_Map_description); - me.currentMapPreviewImage = strzone(strcat("/maps/", MapInfo_Map_bspname)); + strcpy(me.currentMapBSPName, MapInfo_Map_bspname); + strcpy(me.currentMapTitle, strdecolorize(MapInfo_Map_title)); + strcpy(me.currentMapAuthor, strdecolorize(MapInfo_Map_author)); + strcpy(me.currentMapDescription, MapInfo_Map_description); + strcpy(me.currentMapPreviewImage, strcat("/maps/", MapInfo_Map_bspname)); me.frame.setText(me.frame, me.currentMapBSPName); me.titleLabel.setText(me.titleLabel, me.currentMapTitle); diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc b/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc index 022bed03d5..994c5a7c95 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc @@ -30,12 +30,8 @@ string WeaponArenaString() return _("Most Weapons Arena"); if(s == weaponarenastring_cvar) return weaponarenastring; - if(weaponarenastring) - strunzone(weaponarenastring); - if(weaponarenastring_cvar) - strunzone(weaponarenastring_cvar); - weaponarenastring_cvar = strzone(s); + strcpy(weaponarenastring_cvar, s); n = tokenize_console(s); s = ""; @@ -48,7 +44,7 @@ string WeaponArenaString() } s = sprintf(_("%s Arena"), s); - weaponarenastring = strzone(s); + strcpy(weaponarenastring, s); return weaponarenastring; } diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_join.qc b/qcsrc/menu/xonotic/dialog_multiplayer_join.qc index a34d0d80a1..1792ec635b 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_join.qc +++ b/qcsrc/menu/xonotic/dialog_multiplayer_join.qc @@ -5,6 +5,7 @@ #include "textlabel.qh" #include "inputbox.qh" #include "checkbox.qh" +#include "commandbutton.qh" #include "button.qh" entity makeXonoticServerListTab() @@ -81,7 +82,10 @@ void XonoticServerListTab_fill(entity me) e.onClickEntity = slist; slist.infoButton = e; me.TR(me); - me.TD(me, 1, me.columns, e = makeXonoticButton(_("Join!"), '0 0 0')); + me.TD(me, 1, 1, e = makeXonoticCommandButton_T(_("Disconnect"), '0 0 0', "disconnect", 0, + _("Disconnect from the server"))); + slist.disconnectButton = e; + me.TD(me, 1, me.columns-1, e = makeXonoticButton(_("Join!"), '0 0 0')); e.onClick = ServerList_Connect_Click; e.onClickEntity = slist; slist.connectButton = e; diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc b/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc index baeb9a51bc..5745ce072e 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc +++ b/qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc @@ -16,61 +16,21 @@ void XonoticServerInfoDialog_loadServerInfo(entity me, float i) // ==================================== // First clear and unzone the strings // ==================================== - if(me.currentServerName) - strunzone(me.currentServerName); - me.currentServerName = string_null; - - if(me.currentServerCName) - strunzone(me.currentServerCName); - me.currentServerCName = string_null; - - if(me.currentServerType) - strunzone(me.currentServerType); - me.currentServerType = string_null; - - if(me.currentServerMap) - strunzone(me.currentServerMap); - me.currentServerMap = string_null; - - if(me.currentServerPlayers) - strunzone(me.currentServerPlayers); - me.currentServerPlayers = string_null; - - if(me.currentServerNumPlayers) - strunzone(me.currentServerNumPlayers); - me.currentServerNumPlayers = string_null; - - if(me.currentServerNumBots) - strunzone(me.currentServerNumBots); - me.currentServerNumBots = string_null; - - if(me.currentServerNumFreeSlots) - strunzone(me.currentServerNumFreeSlots); - me.currentServerNumFreeSlots = string_null; - - if(me.currentServerMod) - strunzone(me.currentServerMod); - me.currentServerMod = string_null; - - if(me.currentServerVersion) - strunzone(me.currentServerVersion); - me.currentServerVersion = string_null; - + strfree(me.currentServerName); + strfree(me.currentServerCName); + strfree(me.currentServerType); + strfree(me.currentServerMap); + strfree(me.currentServerPlayers); + strfree(me.currentServerNumPlayers); + strfree(me.currentServerNumBots); + strfree(me.currentServerNumFreeSlots); + strfree(me.currentServerMod); + strfree(me.currentServerVersion); // not zoned! - //if(me.currentServerEncrypt) - // strunzone(me.currentServerEncrypt); - //me.currentServerEncrypt = string_null; - if(me.currentServerPure) - strunzone(me.currentServerPure); - me.currentServerPure = string_null; - - if(me.currentServerKey) - strunzone(me.currentServerKey); - me.currentServerKey = string_null; - - if(me.currentServerID) - strunzone(me.currentServerID); - me.currentServerID = string_null; + // strfree(me.currentServerEncrypt); + strfree(me.currentServerPure); + strfree(me.currentServerKey); + strfree(me.currentServerID); // ========================== // Now, fill in the strings diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc b/qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc index 1229be7144..afde0914a4 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc +++ b/qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc @@ -19,9 +19,7 @@ void XonoticScreenshotBrowserTab_loadPreviewScreenshot(entity me, string scrImag { if (me.currentScrPath == scrImage) return; - if (me.currentScrPath) - strunzone(me.currentScrPath); - me.currentScrPath = strzone(scrImage); + strcpy(me.currentScrPath, scrImage); me.screenshotImage.load(me.screenshotImage, me.currentScrPath); } void XonoticScreenshotBrowserTab_fill(entity me) diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc b/qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc index d6d545eeea..57dd75679e 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc +++ b/qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot_viewer.qc @@ -24,9 +24,7 @@ void XonoticScreenshotViewerDialog_loadScreenshot(entity me, string scrImage) if (me.currentScrPath == scrImage) return; - if (me.currentScrPath) - strunzone(me.currentScrPath); - me.currentScrPath = strzone(scrImage); + strcpy(me.currentScrPath, scrImage); me.screenshotImage.load(me.screenshotImage, me.currentScrPath); me.frame.setText(me.frame, me.screenshotImage.screenshotTitle); } diff --git a/qcsrc/menu/xonotic/hudskinlist.qc b/qcsrc/menu/xonotic/hudskinlist.qc index 66c96046d8..d97d7131a4 100644 --- a/qcsrc/menu/xonotic/hudskinlist.qc +++ b/qcsrc/menu/xonotic/hudskinlist.qc @@ -188,19 +188,15 @@ void HUDSkinList_Refresh_Click(entity btn, entity me) void HUDSkinList_SavedName_Change(entity box, entity me) { - if(me.savedName) - strunzone(me.savedName); + strfree(me.savedName); if(box.text != "") me.savedName = strzone(box.text); - else - me.savedName = string_null; } void HUDSkinList_Filter_Change(entity box, entity me) { - if(me.filterString) - strunzone(me.filterString); + strfree(me.filterString); if(box.text != "") { @@ -209,8 +205,6 @@ void HUDSkinList_Filter_Change(entity box, entity me) else me.filterString = strzone(strcat("*", box.text, "*")); } - else - me.filterString = string_null; me.getHUDSkins(me); } diff --git a/qcsrc/menu/xonotic/keybinder.qc b/qcsrc/menu/xonotic/keybinder.qc index 1f28a1bdfe..cde80d693d 100644 --- a/qcsrc/menu/xonotic/keybinder.qc +++ b/qcsrc/menu/xonotic/keybinder.qc @@ -246,12 +246,8 @@ void XonoticKeyBinder_destroy(entity me) for(int i = 0; i < MAX_KEYBINDS; ++i) { - if(Xonotic_KeyBinds_Functions[i]) - strunzone(Xonotic_KeyBinds_Functions[i]); - Xonotic_KeyBinds_Functions[i] = string_null; - if(Xonotic_KeyBinds_Descriptions[i]) - strunzone(Xonotic_KeyBinds_Descriptions[i]); - Xonotic_KeyBinds_Descriptions[i] = string_null; + strfree(Xonotic_KeyBinds_Functions[i]); + strfree(Xonotic_KeyBinds_Descriptions[i]); } Xonotic_KeyBinds_Count = 0; } diff --git a/qcsrc/menu/xonotic/maplist.qc b/qcsrc/menu/xonotic/maplist.qc index 111744e966..73ef8a32ae 100644 --- a/qcsrc/menu/xonotic/maplist.qc +++ b/qcsrc/menu/xonotic/maplist.qc @@ -181,8 +181,6 @@ void XonoticMapList_refilter(entity me) for(i = 0; i < MapInfo_count; ++i) draw_PreloadPicture(strcat("/maps/", MapInfo_BSPName_ByID(i))); - if(me.g_maplistCache) - strunzone(me.g_maplistCache); s = "0"; for(i = 1; i < MapInfo_count; i *= 2) s = strcat(s, s); @@ -201,7 +199,7 @@ void XonoticMapList_refilter(entity me) ); } } - me.g_maplistCache = strzone(s); + strcpy(me.g_maplistCache, s); if(gt != me.lastGametype || f != me.lastFeatures) { me.lastGametype = gt; @@ -217,12 +215,9 @@ void XonoticMapList_refilterCallback(entity me, entity cb) void MapList_StringFilterBox_Change(entity box, entity me) { - if(me.stringFilter) - strunzone(me.stringFilter); + strfree(me.stringFilter); if(box.text != "") me.stringFilter = strzone(box.text); - else - me.stringFilter = string_null; me.refilter(me); } @@ -345,9 +340,7 @@ float XonoticMapList_keyDown(entity me, float scan, float ascii, float shift) if(time < me.typeToSearchTime) { save = substring(me.typeToSearchString, 0, strlen(me.typeToSearchString) - 1); - if(me.typeToSearchString) - strunzone(me.typeToSearchString); - me.typeToSearchString = strzone(save); + strcpy(me.typeToSearchString, save); me.typeToSearchTime = time + 0.5; if(strlen(me.typeToSearchString)) { @@ -364,9 +357,7 @@ float XonoticMapList_keyDown(entity me, float scan, float ascii, float shift) save = ch; else save = strcat(me.typeToSearchString, ch); - if(me.typeToSearchString) - strunzone(me.typeToSearchString); - me.typeToSearchString = strzone(save); + strcpy(me.typeToSearchString, save); me.typeToSearchTime = time + 0.5; MapInfo_FindName(me.typeToSearchString); if(MapInfo_FindName_firstResult >= 0) diff --git a/qcsrc/menu/xonotic/playermodel.qc b/qcsrc/menu/xonotic/playermodel.qc index c679d4449d..1ad651bdb5 100644 --- a/qcsrc/menu/xonotic/playermodel.qc +++ b/qcsrc/menu/xonotic/playermodel.qc @@ -113,21 +113,12 @@ void XonoticPlayerModelSelector_go(entity me, float d) { me.idxModels = mod(me.idxModels + d + me.numModels, me.numModels); - if(me.currentModel) - strunzone(me.currentModel); - if(me.currentModelTitle) - strunzone(me.currentModelTitle); - if(me.currentModelImage) - strunzone(me.currentModelImage); - if(me.currentModelDescription) - strunzone(me.currentModelDescription); - // select model #i! - me.currentModelTitle = strzone(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_TITLE)); - me.currentModelImage = strzone(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_IMAGE)); + strcpy(me.currentModelTitle, bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_TITLE)); + strcpy(me.currentModelImage, bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_IMAGE)); me.currentSkin = stof(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_SKIN)); - me.currentModel = strzone(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_MODEL)); - me.currentModelDescription = strzone(bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_DESC)); + strcpy(me.currentModel, bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_MODEL)); + strcpy(me.currentModelDescription, bufstr_get(me.bufModels, BUFMODELS_COUNT*me.idxModels+BUFMODELS_DESC)); // fix the image if(draw_PictureSize(me.currentModelImage) == '0 0 0') diff --git a/qcsrc/menu/xonotic/screenshotimage.qc b/qcsrc/menu/xonotic/screenshotimage.qc index 8e8f3ccf73..af987e7b58 100644 --- a/qcsrc/menu/xonotic/screenshotimage.qc +++ b/qcsrc/menu/xonotic/screenshotimage.qc @@ -19,9 +19,7 @@ void XonoticScreenshotImage_load(entity me, string theImage) { me.screenshotTime = time; me.src = theImage; - if (me.screenshotTitle) - strunzone(me.screenshotTitle); - me.screenshotTitle = strzone(substring(me.src, 13, strlen(theImage) - 13)); //strip "/screenshots/" + strcpy(me.screenshotTitle, substring(me.src, 13, strlen(theImage) - 13)); //strip "/screenshots/" me.initZoom(me); // this image may have a different size me.setZoom(me, 0, 0); diff --git a/qcsrc/menu/xonotic/screenshotlist.qc b/qcsrc/menu/xonotic/screenshotlist.qc index a948ce86f8..de0adc7938 100644 --- a/qcsrc/menu/xonotic/screenshotlist.qc +++ b/qcsrc/menu/xonotic/screenshotlist.qc @@ -153,8 +153,7 @@ void ScreenshotList_Refresh_Click(entity btn, entity me) void ScreenshotList_Filter_Change(entity box, entity me) { - if(me.filterString) - strunzone(me.filterString); + strfree(me.filterString); if(box.text != "") { @@ -163,8 +162,6 @@ void ScreenshotList_Filter_Change(entity box, entity me) else me.filterString = strzone(strcat("*", box.text, "*")); } - else - me.filterString = string_null; ScreenshotList_Refresh_Click(NULL, me); } diff --git a/qcsrc/menu/xonotic/serverlist.qc b/qcsrc/menu/xonotic/serverlist.qc index 5e6a567b6a..eec56ca5fd 100644 --- a/qcsrc/menu/xonotic/serverlist.qc +++ b/qcsrc/menu/xonotic/serverlist.qc @@ -37,8 +37,7 @@ void RegisterSLCategories() } } \ if(catnum) \ { \ - strunzone(categories[i].override_string); \ - categories[i].override_string = string_null; \ + strfree(categories[i].override_string); \ categories[i].override_field = catnum; \ continue; \ } \ @@ -51,8 +50,7 @@ void RegisterSLCategories() ); \ } \ } \ - strunzone(categories[i].override_string); \ - categories[i].override_string = string_null; \ + strfree(categories[i].override_string); \ categories[i].override_field = 0; \ } PROCESS_OVERRIDE(cat_enoverride_string, cat_enoverride) @@ -308,9 +306,7 @@ void XonoticServerList_setSelected(entity me, int i) if(gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT) != me.nItems) return; // sorry, it would be wrong - if(me.selectedServer) - strunzone(me.selectedServer); - me.selectedServer = strzone(gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem)); + strcpy(me.selectedServer, gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem)); me.ipAddressBox.setText(me.ipAddressBox, me.selectedServer); me.ipAddressBox.cursorPos = strlen(me.selectedServer); @@ -549,9 +545,10 @@ void XonoticServerList_draw(entity me) } else { me.nItems = gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT); } - 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 == "")); + me.connectButton.disabled = (me.lockedSelectedItem || (me.nItems == 0 && me.ipAddressBox.text == "")); + me.disconnectButton.disabled = (!(gamestatus & (GAME_ISSERVER | GAME_CONNECTED))); + me.infoButton.disabled = (me.lockedSelectedItem || me.nItems == 0 || !owned); + me.favoriteButton.disabled = (me.lockedSelectedItem || (me.nItems == 0 && me.ipAddressBox.text == "")); if(me.lockedSelectedItem) { @@ -559,9 +556,7 @@ void XonoticServerList_draw(entity me) { if(gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem) != me.selectedServer) { - if(me.selectedServer) - strunzone(me.selectedServer); - me.selectedServer = strzone(gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem)); + strcpy(me.selectedServer, gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem)); } found = true; } @@ -586,9 +581,7 @@ void XonoticServerList_draw(entity me) // selected server disappeared, select the last server (scrolling to it) if(me.selectedItem >= me.nItems) SUPER(XonoticServerList).setSelected(me, me.nItems - 1); - if(me.selectedServer) - strunzone(me.selectedServer); - me.selectedServer = strzone(gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem)); + strcpy(me.selectedServer, gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem)); } } @@ -666,12 +659,9 @@ void ServerList_TypeSort_Click(entity btn, entity me) } void ServerList_Filter_Change(entity box, entity me) { - if(me.filterString) - strunzone(me.filterString); + strfree(me.filterString); if(box.text != "") me.filterString = strzone(box.text); - else - me.filterString = string_null; me.refreshServerList(me, REFRESHSERVERLIST_REFILTER); me.ipAddressBox.setText(me.ipAddressBox, ""); @@ -717,9 +707,7 @@ void XonoticServerList_setSortOrder(entity me, int fld, int direction) me.sortButton4.forcePressed = 0; me.sortButton5.forcePressed = (fld == SLIST_FIELD_NUMHUMANS); me.selectedItem = 0; - if(me.selectedServer) - strunzone(me.selectedServer); - me.selectedServer = string_null; + strfree(me.selectedServer); me.refreshServerList(me, REFRESHSERVERLIST_REFILTER); } void XonoticServerList_positionSortButton(entity me, entity btn, float theOrigin, float theSize, string theTitle, void(entity, entity) theFunc) @@ -775,11 +763,10 @@ void XonoticServerList_resizeNotify(entity me, vector relOrigin, vector relSize, } void ServerList_Connect_Click(entity btn, entity me) { - localcmd(sprintf("connect %s\n", - ((me.ipAddressBox.text != "") ? - me.ipAddressBox.text : me.selectedServer - ) - )); + if (me.lockedSelectedItem) + return; + string sv = (me.ipAddressBox.text != "") ? me.ipAddressBox.text : me.selectedServer; + localcmd(sprintf("connect %s\n", sv)); } void ServerList_Favorite_Click(entity btn, entity this) { @@ -857,7 +844,7 @@ void XonoticServerList_drawListBoxItem(entity me, int i, vector absSize, bool is } } - if(isSelected) + if(isSelected && !me.lockedSelectedItem) draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED); else if(isFocused) { diff --git a/qcsrc/menu/xonotic/serverlist.qh b/qcsrc/menu/xonotic/serverlist.qh index e45abfda33..74f3bd570d 100644 --- a/qcsrc/menu/xonotic/serverlist.qh +++ b/qcsrc/menu/xonotic/serverlist.qh @@ -30,7 +30,7 @@ CLASS(XonoticServerList, XonoticListBox) ATTRIB(XonoticServerList, columnTypeSize, float, 0); ATTRIB(XonoticServerList, columnPlayersOrigin, float, 0); ATTRIB(XonoticServerList, columnPlayersSize, float, 0); - ATTRIB(XonoticServerList, lockedSelectedItem, bool, true); // initially keep selected the first item of the list, avoiding an unwanted scrolling + ATTRIB(XonoticServerList, lockedSelectedItem, bool, true); // initially keep selected the first item of the list to avoid unwanted scrolling ATTRIB(XonoticServerList, selectedServer, string); // to restore selected server when needed METHOD(XonoticServerList, setSelected, void(entity, float)); @@ -52,6 +52,7 @@ CLASS(XonoticServerList, XonoticListBox) ATTRIB(XonoticServerList, sortButton4, entity); ATTRIB(XonoticServerList, sortButton5, entity); ATTRIB(XonoticServerList, connectButton, entity); + ATTRIB(XonoticServerList, disconnectButton, entity); ATTRIB(XonoticServerList, infoButton, entity); ATTRIB(XonoticServerList, currentSortOrder, float, 0); ATTRIB(XonoticServerList, currentSortField, float, -1); diff --git a/qcsrc/menu/xonotic/soundlist.qc b/qcsrc/menu/xonotic/soundlist.qc index 13e6ba34c0..6d77e1adf9 100644 --- a/qcsrc/menu/xonotic/soundlist.qc +++ b/qcsrc/menu/xonotic/soundlist.qc @@ -104,13 +104,10 @@ void SoundList_Menu_Track_Reset(entity box, entity me) void SoundList_Filter_Change(entity box, entity me) { - if(me.filterString) - strunzone(me.filterString); + strfree(me.filterString); if(box.text != "") me.filterString = strzone(box.text); - else - me.filterString = string_null; me.getSounds(me); } diff --git a/qcsrc/menu/xonotic/util.qc b/qcsrc/menu/xonotic/util.qc index 602862820b..fb4bb92a80 100644 --- a/qcsrc/menu/xonotic/util.qc +++ b/qcsrc/menu/xonotic/util.qc @@ -267,8 +267,7 @@ void setZonedTooltip(entity e, string theTooltip, string theCvar) theTooltip = string_null; } - if(e.tooltip) - strunzone(e.tooltip); + strfree(e.tooltip); e.tooltip = (theTooltip != "") ? strzone(theTooltip) : string_null; } @@ -459,21 +458,18 @@ void UpdateNotification_URI_Get_Callback(float id, float status, string data) void updateCheck() { - if(cvar("menu_updatecheck")) + if(!_Nex_ExtResponseSystem_Queried) { - if(!_Nex_ExtResponseSystem_Queried) - { - _Nex_ExtResponseSystem_Queried = 1; - float startcnt; - string uri; + _Nex_ExtResponseSystem_Queried = 1; + float startcnt; + string uri; - cvar_set("cl_startcount", ftos(startcnt = cvar("cl_startcount") + 1)); + cvar_set("cl_startcount", ftos(startcnt = cvar("cl_startcount") + 1)); - // for privacy, munge the start count a little - startcnt = floor((floor(startcnt / 10) + random()) * 10); - uri = sprintf("http://update.xonotic.org/checkupdate.txt?version=%s&cnt=%d", uri_escape(cvar_string("g_xonoticversion")), startcnt); - uri_get(uri, URI_GET_UPDATENOTIFICATION); - } + // for privacy, munge the start count a little + startcnt = floor((floor(startcnt / 10) + random()) * 10); + uri = sprintf("http://update.xonotic.org/checkupdate.txt?version=%s&cnt=%d", uri_escape(cvar_string("g_xonoticversion")), startcnt); + uri_get(uri, URI_GET_UPDATENOTIFICATION); } if(_Nex_ExtResponseSystem_PacksStep > 0) @@ -566,7 +562,7 @@ void preMenuDraw() updateCheck(); - if(_Nex_ExtResponseSystem_UpdateTo != "") + if(_Nex_ExtResponseSystem_UpdateTo != "" && !(gamestatus & (GAME_CONNECTED | GAME_ISSERVER))) { // TODO rather turn this into a dialog fs = ((1/draw_scale.x) * eX + (1/draw_scale.y) * eY) * 12; @@ -612,8 +608,7 @@ void preMenuDraw() } else { - strunzone(campaign_name_previous); - campaign_name_previous = strzone(campaign_name); + strcpy(campaign_name_previous, campaign_name); campaign_won_previous = cvar(strcat("g_campaign", campaign_name, "_won")); } } diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index e9bacafa7d..c1abd00410 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -167,7 +167,7 @@ int autocvar_g_maxplayers; float autocvar_g_maxplayers_spectator_blocktime; float autocvar_g_maxpushtime; float autocvar_g_maxspeed; -bool autocvar_g_instagib; +#define autocvar_g_instagib cvar("g_instagib") #define autocvar_g_mirrordamage cvar("g_mirrordamage") #define autocvar_g_mirrordamage_virtual cvar("g_mirrordamage_virtual") bool autocvar_g_mirrordamage_onlyweapons; @@ -240,6 +240,7 @@ float autocvar_g_turrets_targetscan_mindelay; bool autocvar_g_use_ammunition; bool autocvar_g_waypointeditor; bool autocvar_g_waypointeditor_symmetrical; +bool autocvar_g_waypointeditor_symmetrical_allowload = true; vector autocvar_g_waypointeditor_symmetrical_origin; int autocvar_g_waypointeditor_symmetrical_order; vector autocvar_g_waypointeditor_symmetrical_axis; diff --git a/qcsrc/server/bot/default/aim.qc b/qcsrc/server/bot/default/aim.qc index fde4c0154a..5d74a8f062 100644 --- a/qcsrc/server/bot/default/aim.qc +++ b/qcsrc/server/bot/default/aim.qc @@ -143,6 +143,8 @@ bool bot_shouldattack(entity this, entity targ) return false; if(targ.flags & FL_NOTARGET) return false; + if(targ.alpha <= 0.25 && targ.alpha != 0) + return false; // invisible via alpha if(MUTATOR_CALLHOOK(BotShouldAttack, this, targ)) return false; diff --git a/qcsrc/server/bot/default/bot.qc b/qcsrc/server/bot/default/bot.qc index a605fc0689..b4272e3e06 100644 --- a/qcsrc/server/bot/default/bot.qc +++ b/qcsrc/server/bot/default/bot.qc @@ -396,18 +396,10 @@ void bot_clientdisconnect(entity this) if (!IS_BOT_CLIENT(this)) return; bot_clearqueue(this); - if(this.cleanname) - strunzone(this.cleanname); - if(this.netname_freeme) - strunzone(this.netname_freeme); - if(this.playermodel_freeme) - strunzone(this.playermodel_freeme); - if(this.playerskin_freeme) - strunzone(this.playerskin_freeme); - this.cleanname = string_null; - this.netname_freeme = string_null; - this.playermodel_freeme = string_null; - this.playerskin_freeme = string_null; + strfree(this.cleanname); + strfree(this.netname_freeme); + strfree(this.playermodel_freeme); + strfree(this.playerskin_freeme); if(this.bot_cmd_current) delete(this.bot_cmd_current); if(bot_waypoint_queue_owner == this) diff --git a/qcsrc/server/bot/default/scripting.qc b/qcsrc/server/bot/default/scripting.qc index e69050beb8..82d82cb590 100644 --- a/qcsrc/server/bot/default/scripting.qc +++ b/qcsrc/server/bot/default/scripting.qc @@ -308,9 +308,7 @@ float bot_decodecommand(string cmdstring) bot_cmd.bot_cmd_parm_float = stof(parm); break; case BOT_CMD_PARAMETER_STRING: - if(bot_cmd.bot_cmd_parm_string) - strunzone(bot_cmd.bot_cmd_parm_string); - bot_cmd.bot_cmd_parm_string = strzone(parm); + strcpy(bot_cmd.bot_cmd_parm_string, parm); break; case BOT_CMD_PARAMETER_VECTOR: if(substring(parm, 0, 1) != "\'") @@ -1170,8 +1168,7 @@ void bot_resetqueues() it.bot_barrier = 0; for(int i = 0; i < it.bot_places_count; ++i) { - strunzone(it.(bot_placenames[i])); - it.(bot_placenames[i]) = string_null; + strfree(it.(bot_placenames[i])); } it.bot_places_count = 0; }); diff --git a/qcsrc/server/bot/default/waypoints.qc b/qcsrc/server/bot/default/waypoints.qc index fa82d926b6..bc29b31da1 100644 --- a/qcsrc/server/bot/default/waypoints.qc +++ b/qcsrc/server/bot/default/waypoints.qc @@ -190,6 +190,16 @@ entity waypoint_spawn(vector m1, vector m2, float f) return it; }); } + // spawn only one destination waypoint for teleports teleporting player to the exact same spot + // otherwise links loaded from file would be applied only to the first destination + // waypoint since link format doesn't specify waypoint entities but just positions + if((f & WAYPOINTFLAG_GENERATED) && !(f & WAYPOINTFLAG_NORELINK) && m1 == m2) + { + IL_EACH(g_waypoints, boxesoverlap(m1, m2, it.absmin, it.absmax), + { + return it; + }); + } entity w = new(waypoint); IL_PUSH(g_waypoints, w); @@ -446,7 +456,7 @@ float waypoint_getlinearcost(float dist) } float waypoint_getlinearcost_underwater(float dist) { - // NOTE: this value is hardcoded on the engine too, see SV_WaterMove + // NOTE: underwater speed factor is hardcoded in the engine too, see SV_WaterMove return dist / (autocvar_sv_maxspeed * 0.7); } @@ -1028,10 +1038,33 @@ void waypoint_saveall() return; } - // add 3 comments to not break compatibility with older Xonotic versions + float sym = autocvar_g_waypointeditor_symmetrical; + string sym_str = ftos(sym); + if (sym == -1 || (sym == 1 && autocvar_g_waypointeditor_symmetrical_order >= 2)) + { + if (sym == 1) + { + sym_str = cons(sym_str, "-"); + sym_str = cons(sym_str, "-"); + } + else + { + sym_str = cons(sym_str, ftos(autocvar_g_waypointeditor_symmetrical_origin.x)); + sym_str = cons(sym_str, ftos(autocvar_g_waypointeditor_symmetrical_origin.y)); + } + if (autocvar_g_waypointeditor_symmetrical_order >= 2) + sym_str = cons(sym_str, ftos(autocvar_g_waypointeditor_symmetrical_order)); + } + else if (autocvar_g_waypointeditor_symmetrical == -2) + { + sym_str = cons(sym_str, ftos(autocvar_g_waypointeditor_symmetrical_axis.x)); + sym_str = cons(sym_str, ftos(autocvar_g_waypointeditor_symmetrical_axis.y)); + } + + // a group of 3 comments doesn't break compatibility with older Xonotic versions // (they are read as a waypoint with origin '0 0 0' and flag 0 though) fputs(file, strcat("//", "WAYPOINT_VERSION ", ftos_decimals(WAYPOINT_VERSION, 2), "\n")); - fputs(file, strcat("//", "\n")); + fputs(file, strcat("//", "WAYPOINT_SYMMETRY ", sym_str, "\n")); fputs(file, strcat("//", "\n")); int c = 0; @@ -1085,6 +1118,8 @@ float waypoint_loadall() bool parse_comments = true; float ver = 0; + float sym = 0; + float sym_param1 = 0, sym_param2 = 0, sym_param3 = 0; while ((s = fgets(file))) { @@ -1094,6 +1129,14 @@ float waypoint_loadall() { if(substring(s, 2, 17) == "WAYPOINT_VERSION ") ver = stof(substring(s, 19, -1)); + else if(substring(s, 2, 18) == "WAYPOINT_SYMMETRY ") + { + int tokens = tokenizebyseparator(substring(s, 20, -1), " "); + if (tokens) { sym = stof(argv(0)); } + if (tokens > 1) { sym_param1 = stof(argv(1)); } + if (tokens > 2) { sym_param2 = stof(argv(2)); } + if (tokens > 3) { sym_param3 = stof(argv(3)); } + } continue; } else @@ -1124,6 +1167,35 @@ float waypoint_loadall() fclose(file); LOG_TRACE("loaded ", ftos(cwp), " waypoints and ", ftos(cwb), " wayboxes from maps/", mapname, ".waypoints"); + if (autocvar_g_waypointeditor && autocvar_g_waypointeditor_symmetrical_allowload) + { + cvar_set("g_waypointeditor_symmetrical", ftos(sym)); + if (sym == 1 && sym_param3 < 2) + cvar_set("g_waypointeditor_symmetrical_order", "0"); // make sure this is reset if not loaded + if (sym == -1 || (sym == 1 && sym_param3 >= 2)) + { + string params; + if (sym == 1) + params = cons("-", "-"); + else + { + params = cons(ftos(sym_param1), ftos(sym_param2)); + cvar_set("g_waypointeditor_symmetrical_origin", params); + } + cvar_set("g_waypointeditor_symmetrical_order", ftos(sym_param3)); + LOG_INFO("Waypoint editor: loaded symmetry ", ftos(sym), " with origin ", params, " and order ", ftos(sym_param3)); + } + else if (sym == -2) + { + string params = strcat(ftos(sym_param1), " ", ftos(sym_param2)); + cvar_set("g_waypointeditor_symmetrical_axis", params); + LOG_INFO("Waypoint editor: loaded symmetry ", ftos(sym), " with axis ", params); + } + else + LOG_INFO("Waypoint editor: loaded symmetry ", ftos(sym)); + LOG_INFO(strcat("g_waypointeditor_symmetrical", " has been set to ", cvar_string("g_waypointeditor_symmetrical"))); + } + return cwp + cwb; } @@ -1283,6 +1355,8 @@ void botframe_showwaypointlinks() { int display_type = 0; entity head = navigation_findnearestwaypoint(it, false); + it.nearestwaypoint = head; // mainly useful for debug + it.nearestwaypointtimeout = time + 2; // while I'm at it... if (IS_ONGROUND(it) || it.waterlevel > WATERLEVEL_NONE) display_type = 1; // default else if(head && (head.wphardwired)) diff --git a/qcsrc/server/bot/default/waypoints.qh b/qcsrc/server/bot/default/waypoints.qh index bea11e9299..595c2d058f 100644 --- a/qcsrc/server/bot/default/waypoints.qh +++ b/qcsrc/server/bot/default/waypoints.qh @@ -6,7 +6,7 @@ // increase by 0.01 when changes require only waypoint relinking // increase by 1 when changes require to manually edit waypoints // max 2 decimal places, always specified -#define WAYPOINT_VERSION 1.00 +#define WAYPOINT_VERSION 1.01 // fields you can query using prvm_global server to get some statistics about waypoint linking culling float relink_total, relink_walkculled, relink_pvsculled, relink_lengthculled; diff --git a/qcsrc/server/campaign.qc b/qcsrc/server/campaign.qc index e80769cc27..e90d666035 100644 --- a/qcsrc/server/campaign.qc +++ b/qcsrc/server/campaign.qc @@ -52,8 +52,7 @@ void cvar_set_campaignwrapper(string theCvar, string theValue) { if(cvar_string_campaignwrapper(theCvar) == theValue) return; - string s; - s = cvar_campaignwrapper_list; + string s = cvar_campaignwrapper_list; cvar_campaignwrapper_list = strzone(strcat("; ", theCvar, " ", theValue, s)); strunzone(s); //print(cvar_campaignwrapper_list, "\n"); diff --git a/qcsrc/server/client.qc b/qcsrc/server/client.qc index 01b5055cdb..d706f81073 100644 --- a/qcsrc/server/client.qc +++ b/qcsrc/server/client.qc @@ -152,10 +152,15 @@ void ClientData_Detach(entity this) void ClientData_Touch(entity e) { - CS(e).clientdata.SendFlags = 1; + entity cd = CS(e).clientdata; + if (cd) { cd.SendFlags = 1; } // make it spectatable - FOREACH_CLIENT(IS_REAL_CLIENT(it) && it != e && IS_SPEC(it) && it.enemy == e, { CS(it).clientdata.SendFlags = 1; }); + FOREACH_CLIENT(IS_REAL_CLIENT(it) && it != e && IS_SPEC(it) && it.enemy == e, + { + entity cd = CS(it).clientdata; + if (cd) { cd.SendFlags = 1; } + }); } void SetSpectatee(entity this, entity spectatee); @@ -1343,8 +1348,8 @@ void ClientDisconnect(entity this) MUTATOR_CALLHOOK(ClientDisconnect, this); - if (CS(this).netname_previous) strunzone(CS(this).netname_previous); // needs to be before the CS entity is removed! - if (CS(this).weaponorder_byimpulse) strunzone(CS(this).weaponorder_byimpulse); + strfree(CS(this).netname_previous); // needs to be before the CS entity is removed! + strfree(CS(this).weaponorder_byimpulse); ClientState_detach(this); Portal_ClearAll(this); @@ -1364,7 +1369,7 @@ void ClientDisconnect(entity this) bot_relinkplayerlist(); - if (this.clientstatus) strunzone(this.clientstatus); + strfree(this.clientstatus); if (this.personal) delete(this.personal); this.playerid = 0; @@ -1487,7 +1492,7 @@ void player_powerups(entity this) Fire_ApplyDamage(this); Fire_ApplyEffect(this); - if (!g_instagib) + if (!autocvar_g_instagib) { if (this.items & ITEM_Strength.m_itemid) { @@ -2474,8 +2479,7 @@ void PlayerPreThink (entity this) } if (!assume_unchanged && autocvar_sv_eventlog) GameLogEcho(strcat(":name:", ftos(this.playerid), ":", playername(this, false))); - if (CS(this).netname_previous) strunzone(CS(this).netname_previous); - CS(this).netname_previous = strzone(this.netname); + strcpy(CS(this).netname_previous, this.netname); } // version nagging diff --git a/qcsrc/server/client.qh b/qcsrc/server/client.qh index 75a01c96ba..72732037fd 100644 --- a/qcsrc/server/client.qh +++ b/qcsrc/server/client.qh @@ -232,5 +232,5 @@ float CalcRotRegen(float current, float regenstable, float regenfactor, float re bool Spectate(entity this, entity pl); -#define SPECTATE_COPY() [[accumulate]] void SpectateCopy(entity this, entity spectatee) +#define SPECTATE_COPY() ACCUMULATE void SpectateCopy(entity this, entity spectatee) #define SPECTATE_COPYFIELD(fld) SPECTATE_COPY() { this.(fld) = spectatee.(fld); } diff --git a/qcsrc/server/command/cmd.qc b/qcsrc/server/command/cmd.qc index 47e94f5203..e0c72dbc27 100644 --- a/qcsrc/server/command/cmd.qc +++ b/qcsrc/server/command/cmd.qc @@ -248,12 +248,14 @@ void ClientCommand_ready(entity caller, float request) // todo: anti-spam for t if (caller.ready) // toggle { caller.ready = false; - bprint(playername(caller, false), "^2 is ^1NOT^2 ready\n"); + if(IS_PLAYER(caller) || caller.caplayer == 1) + bprint(playername(caller, false), "^2 is ^1NOT^2 ready\n"); } else { caller.ready = true; - bprint(playername(caller, false), "^2 is ready\n"); + if(IS_PLAYER(caller) || caller.caplayer == 1) + bprint(playername(caller, false), "^2 is ready\n"); } // cannot reset the game while a timeout is active! diff --git a/qcsrc/server/command/common.qc b/qcsrc/server/command/common.qc index 2f7467eab7..db822eb71f 100644 --- a/qcsrc/server/command/common.qc +++ b/qcsrc/server/command/common.qc @@ -391,7 +391,7 @@ void CommonCommand_editmob(int request, entity caller, int argc) break; }); - if (!found && arg_lower != "random") { print_to(caller, "Invalid monster"); return; } + if (!found && arg_lower != "random" && arg_lower != "anyrandom") { print_to(caller, "Invalid monster"); return; } totalspawned += 1; WarpZone_TraceBox(CENTER_OR_VIEWOFS(caller), caller.mins, caller.maxs, CENTER_OR_VIEWOFS(caller) + v_forward * 150, true, caller); diff --git a/qcsrc/server/command/vote.qc b/qcsrc/server/command/vote.qc index 7a30d1ddce..638dbb1565 100644 --- a/qcsrc/server/command/vote.qc +++ b/qcsrc/server/command/vote.qc @@ -128,19 +128,15 @@ void VoteReset() if (vote_called) { - strunzone(vote_called_command); - strunzone(vote_called_display); - strunzone(vote_caller_name); + strfree(vote_called_command); + strfree(vote_called_display); + strfree(vote_caller_name); } vote_called = VOTE_NULL; vote_caller = NULL; - vote_caller_name = string_null; vote_endtime = 0; - vote_called_command = string_null; - vote_called_display = string_null; - vote_parsed_command = string_null; vote_parsed_display = string_null; diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index f85d6e2b6f..e005d0ca84 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -7,7 +7,7 @@ // Globals -float g_footsteps, g_grappling_hook, g_instagib; +float g_footsteps, g_grappling_hook; float g_warmup_allguns; float g_warmup_allow_timeout; float warmup_stage; diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index b5ab77d419..f87bce9e85 100644 --- a/qcsrc/server/g_damage.qc +++ b/qcsrc/server/g_damage.qc @@ -713,7 +713,7 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, int d } // should this be changed at all? If so, in what way? - MUTATOR_CALLHOOK(Damage_Calculate, inflictor, attacker, targ, deathtype, damage, mirrordamage, force); + MUTATOR_CALLHOOK(Damage_Calculate, inflictor, attacker, targ, deathtype, damage, mirrordamage, force, attacker.(weaponentity)); damage = M_ARGV(4, float); mirrordamage = M_ARGV(5, float); force = M_ARGV(6, vector); @@ -779,7 +779,7 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, int d } } - if(!g_instagib) + if(!autocvar_g_instagib) { // apply strength multiplier if (attacker.items & ITEM_Strength.m_itemid) diff --git a/qcsrc/server/g_models.qc b/qcsrc/server/g_models.qc index 1026e3aa7a..c8f85247c8 100644 --- a/qcsrc/server/g_models.qc +++ b/qcsrc/server/g_models.qc @@ -8,11 +8,11 @@ #include "../common/triggers/triggers.qh" entityclass(BGMScript); -class(BGMScript) .string bgmscript; -class(BGMScript) .float bgmscriptattack; -class(BGMScript) .float bgmscriptdecay; -class(BGMScript) .float bgmscriptsustain; -class(BGMScript) .float bgmscriptrelease; +classfield(BGMScript) .string bgmscript; +classfield(BGMScript) .float bgmscriptattack; +classfield(BGMScript) .float bgmscriptdecay; +classfield(BGMScript) .float bgmscriptsustain; +classfield(BGMScript) .float bgmscriptrelease; #include "../common/constants.qh" #include "../lib/csqcmodel/sv_model.qh" diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index a3bb6eb216..a613edc14c 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -145,12 +145,8 @@ void cvar_changes_init() string k, v, d; float n, i, adding, pureadding; - if(cvar_changes) - strunzone(cvar_changes); - cvar_changes = string_null; - if(cvar_purechanges) - strunzone(cvar_purechanges); - cvar_purechanges = string_null; + strfree(cvar_changes); + strfree(cvar_purechanges); cvar_purechanges_count = 0; h = buf_create(); @@ -253,6 +249,7 @@ void cvar_changes_init() // these can contain player IDs, so better hide BADPREFIX("g_forced_team_"); BADCVAR("sv_muteban_list"); + BADCVAR("sv_voteban_list"); BADCVAR("sv_allow_customplayermodels_idlist"); BADCVAR("sv_allow_customplayermodels_speciallist"); @@ -1199,9 +1196,7 @@ void Maplist_Init() error("empty maplist, cannot select a new map"); Map_Current = bound(0, GetMaplistPosition(), Map_Count - 1); - if(Map_Current_Name) - strunzone(Map_Current_Name); - Map_Current_Name = strzone(argv(Map_Current)); // will be automatically freed on exit thanks to DP + strcpy(Map_Current_Name, argv(Map_Current)); // will be automatically freed on exit thanks to DP // this may or may not be correct, but who cares, in the worst case a map // isn't chosen in the first pass that should have been } diff --git a/qcsrc/server/ipban.qc b/qcsrc/server/ipban.qc index 98dbf5c55b..cf0eb13b77 100644 --- a/qcsrc/server/ipban.qc +++ b/qcsrc/server/ipban.qc @@ -211,12 +211,8 @@ void OnlineBanList_Think(entity this) if(argc == 0) goto killme; - if(OnlineBanList_Servers) - strunzone(OnlineBanList_Servers); - OnlineBanList_Servers = argv(0); - for(i = 1; i < argc; ++i) - OnlineBanList_Servers = strcat(OnlineBanList_Servers, ";", argv(i)); - OnlineBanList_Servers = strzone(OnlineBanList_Servers); + string s = argv(0); for(i = 1; i < argc; ++i) s = strcat(s, ";", argv(i)); + strcpy(OnlineBanList_Servers, s); uri = strcat( "action=list&hostname=", uri_escape(autocvar_hostname)); uri = strcat(uri, "&servers=", uri_escape(OnlineBanList_Servers)); diff --git a/qcsrc/server/mapvoting.qc b/qcsrc/server/mapvoting.qc index 209ac7af98..816945d2ab 100644 --- a/qcsrc/server/mapvoting.qc +++ b/qcsrc/server/mapvoting.qc @@ -109,16 +109,8 @@ void MapVote_UnzoneStrings() { for(int j = 0; j < mapvote_count; ++j) { - if ( mapvote_maps[j] ) - { - strunzone(mapvote_maps[j]); - mapvote_maps[j] = string_null; - } - if ( mapvote_maps_pakfile[j] ) - { - strunzone(mapvote_maps_pakfile[j]); - mapvote_maps_pakfile[j] = string_null; - } + strfree(mapvote_maps[j]); + strfree(mapvote_maps_pakfile[j]); } } diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index ff762e9046..bbbefd5a88 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -298,17 +298,13 @@ void GetCvars_handleString(entity this, entity store, string thisname, float f, { if (f < 0) { - if (store.(field)) - strunzone(store.(field)); - store.(field) = string_null; + strfree(store.(field)); } else if (f > 0) { if (thisname == name) { - if (store.(field)) - strunzone(store.(field)); - store.(field) = strzone(argv(f + 1)); + strcpy(store.(field), argv(f + 1)); } } else @@ -323,8 +319,7 @@ void GetCvars_handleString_Fixup(entity this, entity store, string thisname, flo string s = func(this, strcat1(store.(field))); if (s != store.(field)) { - strunzone(store.(field)); - store.(field) = strzone(s); + strcpy(store.(field), s); } } } @@ -366,14 +361,8 @@ void GetCvars_handleFloatOnce(entity this, entity store, string thisname, float } string W_FixWeaponOrder_ForceComplete_AndBuildImpulseList(entity this, string wo) { - string o; - o = W_FixWeaponOrder_ForceComplete(wo); - if(CS(this).weaponorder_byimpulse) - { - strunzone(CS(this).weaponorder_byimpulse); - CS(this).weaponorder_byimpulse = string_null; - } - CS(this).weaponorder_byimpulse = strzone(W_FixWeaponOrder_BuildImpulseList(o)); + string o = W_FixWeaponOrder_ForceComplete(wo); + strcpy(CS(this).weaponorder_byimpulse, W_FixWeaponOrder_BuildImpulseList(o)); return o; } diff --git a/qcsrc/server/miscfunctions.qh b/qcsrc/server/miscfunctions.qh index 5538a57442..41e725946a 100644 --- a/qcsrc/server/miscfunctions.qh +++ b/qcsrc/server/miscfunctions.qh @@ -222,8 +222,6 @@ void readlevelcvars() if(cvar("sv_allow_fullbright")) serverflags |= SERVERFLAG_ALLOW_FULLBRIGHT; - g_instagib = cvar("g_instagib"); - sv_clones = cvar("sv_clones"); sv_foginterval = cvar("sv_foginterval"); g_footsteps = cvar("g_footsteps"); diff --git a/qcsrc/server/mutators/events.qh b/qcsrc/server/mutators/events.qh index 6065158436..ca3ce6fcc8 100644 --- a/qcsrc/server/mutators/events.qh +++ b/qcsrc/server/mutators/events.qh @@ -3,7 +3,7 @@ #include <common/mutators/base.qh> // register all possible hooks here - + // to use a hook, first register your mutator using REGISTER_MUTATOR // then create your function using MUTATOR_HOOKFUNCTION @@ -417,7 +417,8 @@ MUTATOR_HOOKABLE(PlayerDamage_SplitHealthArmor, EV_PlayerDamage_SplitHealthArmor /** mirrordamage */ i(float, MUTATOR_ARGV_5_float) \ /** mirrordamage */ o(float, MUTATOR_ARGV_5_float) \ /** force */ i(vector, MUTATOR_ARGV_6_vector) \ - /** force */ o(vector, MUTATOR_ARGV_6_vector) \ + /** force */ o(vector, MUTATOR_ARGV_6_vector) \ + /** weapon entity */ i(entity, MUTATOR_ARGV_7_entity) \ /**/ MUTATOR_HOOKABLE(Damage_Calculate, EV_Damage_Calculate); @@ -1112,6 +1113,13 @@ MUTATOR_HOOKABLE(Item_ScheduleRespawn, EV_Item_ScheduleRespawn); /**/ MUTATOR_HOOKABLE(PlayerPhysics_UpdateStats, EV_PlayerPhysics_UpdateStats); +/** called after physics stats are set on a player, allows post-initialization modifications */ +#define EV_PlayerPhysics_PostUpdateStats(i, o) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /** maxspeed_mod */ i(float, MUTATOR_ARGV_1_float) \ + /**/ +MUTATOR_HOOKABLE(PlayerPhysics_PostUpdateStats, EV_PlayerPhysics_PostUpdateStats); + /** return true to use your own aim target (or none at all) */ #define EV_HavocBot_Aim(i, o) \ /** bot */ i(entity, MUTATOR_ARGV_0_entity) \ diff --git a/qcsrc/server/mutators/mutator/gamemode_ctf.qc b/qcsrc/server/mutators/mutator/gamemode_ctf.qc index b34e3f59f5..e0d25e9e8f 100644 --- a/qcsrc/server/mutators/mutator/gamemode_ctf.qc +++ b/qcsrc/server/mutators/mutator/gamemode_ctf.qc @@ -2249,8 +2249,7 @@ MUTATOR_HOOKFUNCTION(ctf, GetPressedKeys) if(player.stored_netname != player.netname) { db_put(ServerProgsDB, strcat("/uid2name/", player.crypto_idfp), player.netname); - strunzone(player.stored_netname); - player.stored_netname = strzone(player.netname); + strcpy(player.stored_netname, player.netname); } } } diff --git a/qcsrc/server/mutators/mutator/gamemode_cts.qc b/qcsrc/server/mutators/mutator/gamemode_cts.qc index daaf8a9695..1363411aa9 100644 --- a/qcsrc/server/mutators/mutator/gamemode_cts.qc +++ b/qcsrc/server/mutators/mutator/gamemode_cts.qc @@ -286,8 +286,7 @@ MUTATOR_HOOKFUNCTION(cts, GetPressedKeys) if(player.stored_netname != player.netname) { db_put(ServerProgsDB, strcat("/uid2name/", player.crypto_idfp), player.netname); - strunzone(player.stored_netname); - player.stored_netname = strzone(player.netname); + strcpy(player.stored_netname, player.netname); } } diff --git a/qcsrc/server/mutators/mutator/gamemode_race.qc b/qcsrc/server/mutators/mutator/gamemode_race.qc index aa6d12a83e..e4109b72a8 100644 --- a/qcsrc/server/mutators/mutator/gamemode_race.qc +++ b/qcsrc/server/mutators/mutator/gamemode_race.qc @@ -325,8 +325,7 @@ MUTATOR_HOOKFUNCTION(rc, GetPressedKeys) if(player.stored_netname != player.netname) { db_put(ServerProgsDB, strcat("/uid2name/", player.crypto_idfp), player.netname); - strunzone(player.stored_netname); - player.stored_netname = strzone(player.netname); + strcpy(player.stored_netname, player.netname); } } diff --git a/qcsrc/server/player.qc b/qcsrc/server/player.qc index 06bdb1428f..2fcd301639 100644 --- a/qcsrc/server/player.qc +++ b/qcsrc/server/player.qc @@ -969,7 +969,7 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc if (privatesay && source && !IS_PLAYER(source)) { if (!game_stopped) - if ((privatesay && !IS_PLAYER(privatesay)) || (autocvar_g_chat_nospectators == 1) || (autocvar_g_chat_nospectators == 2 && !warmup_stage)) + if ((privatesay && IS_PLAYER(privatesay)) && ((autocvar_g_chat_nospectators == 1) || (autocvar_g_chat_nospectators == 2 && !warmup_stage))) ret = -1; // just hide the message completely } diff --git a/qcsrc/server/race.qc b/qcsrc/server/race.qc index 8804063dc6..743d02d03c 100644 --- a/qcsrc/server/race.qc +++ b/qcsrc/server/race.qc @@ -316,9 +316,7 @@ void race_setTime(string map, float t, string myuid, string mynetname, entity e, } race_SendRankings(newpos, player_prevpos, 0, MSG_ALL); - if(rankings_reply) - strunzone(rankings_reply); - rankings_reply = strzone(getrankings()); + strcpy(rankings_reply, getrankings()); if(newpos == player_prevpos) { @@ -366,9 +364,7 @@ void race_deleteTime(string map, float pos) if(pos == 1) race_send_recordtime(MSG_ALL); - if(rankings_reply) - strunzone(rankings_reply); - rankings_reply = strzone(getrankings()); + strcpy(rankings_reply, getrankings()); } void race_SendTime(entity e, float cp, float t, float tvalid) @@ -442,9 +438,7 @@ void race_SendTime(entity e, float cp, float t, float tvalid) if(t < recordtime || recordtime == 0) { race_checkpoint_records[cp] = t; - if(race_checkpoint_recordholders[cp]) - strunzone(race_checkpoint_recordholders[cp]); - race_checkpoint_recordholders[cp] = strzone(e.netname); + strcpy(race_checkpoint_recordholders[cp], e.netname); if(g_race_qualifying) FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it) && it.race_checkpoint == cp, { race_SendNextCheckpoint(it, 0); }); } @@ -1089,9 +1083,7 @@ void race_ClearRecords() for(int j = 0; j < MAX_CHECKPOINTS; ++j) { race_checkpoint_records[j] = 0; - if(race_checkpoint_recordholders[j]) - strunzone(race_checkpoint_recordholders[j]); - race_checkpoint_recordholders[j] = string_null; + strfree(race_checkpoint_recordholders[j]); } FOREACH_CLIENT(true, { diff --git a/qcsrc/server/scores.qc b/qcsrc/server/scores.qc index 3f1db42903..67c115c8a5 100644 --- a/qcsrc/server/scores.qc +++ b/qcsrc/server/scores.qc @@ -535,9 +535,7 @@ void WinningConditionHelper(entity this) } } - if(worldstatus) - strunzone(worldstatus); - worldstatus = strzone(s); + strcpy(worldstatus, s); FOREACH_CLIENT(true, { string s = ""; @@ -556,9 +554,7 @@ void WinningConditionHelper(entity this) s = "-666"; } - if(it.clientstatus) - strunzone(it.clientstatus); - it.clientstatus = strzone(s); + strcpy(it.clientstatus, s); }); } diff --git a/qcsrc/server/sv_main.qc b/qcsrc/server/sv_main.qc index 1130b6a4e5..487ab1fc53 100644 --- a/qcsrc/server/sv_main.qc +++ b/qcsrc/server/sv_main.qc @@ -360,7 +360,7 @@ void SV_OnEntityPreSpawnFunction(entity this) } return; LABEL(cleanup) - builtin_remove(this); + delete(this); } void WarpZone_PostInitialize_Callback() diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index cf21de4bfd..43aa4a26bd 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -131,12 +131,8 @@ string getwelcomemessage(entity this) if(cache_lastmutatormsg != autocvar_g_mutatormsg) { - if(cache_lastmutatormsg) - strunzone(cache_lastmutatormsg); - if(cache_mutatormsg) - strunzone(cache_mutatormsg); - cache_lastmutatormsg = strzone(autocvar_g_mutatormsg); - cache_mutatormsg = strzone(cache_lastmutatormsg); + strcpy(cache_lastmutatormsg, autocvar_g_mutatormsg); + strcpy(cache_mutatormsg, cache_lastmutatormsg); } if (cache_mutatormsg != "") { diff --git a/qcsrc/server/weapons/weaponsystem.qc b/qcsrc/server/weapons/weaponsystem.qc index d63c226bc1..8bfcbb79cf 100644 --- a/qcsrc/server/weapons/weaponsystem.qc +++ b/qcsrc/server/weapons/weaponsystem.qc @@ -743,8 +743,7 @@ void W_Reload(entity actor, .entity weaponentity, float sent_ammo_min, Sound sen this.reload_ammo_min = sent_ammo_min; this.reload_ammo_amount = e.reloading_ammo; this.reload_time = e.reloading_time; - if (actor.reload_sound) strunzone(actor.reload_sound); - actor.reload_sound = strzone(Sound_fixpath(sent_sound)); + strcpy(actor.reload_sound, Sound_fixpath(sent_sound)); // don't reload weapons that don't have the RELOADABLE flag if (!(e.spawnflags & WEP_FLAG_RELOADABLE)) diff --git a/sound/misc/kill.ogg b/sound/misc/kill.ogg deleted file mode 100644 index c1d3b8c237..0000000000 Binary files a/sound/misc/kill.ogg and /dev/null differ diff --git a/sound/misc/kill.wav b/sound/misc/kill.wav new file mode 100644 index 0000000000..139ff57178 Binary files /dev/null and b/sound/misc/kill.wav differ diff --git a/xonotic-client.cfg b/xonotic-client.cfg index 2d7eb360d1..32ef34a4d6 100644 --- a/xonotic-client.cfg +++ b/xonotic-client.cfg @@ -675,7 +675,6 @@ set cl_effects_lightningarc_drift_end 0.1 set cl_effects_lightningarc_branchfactor_start 0.25 set cl_effects_lightningarc_branchfactor_add 0.1 -set menu_updatecheck 1 "check for updates" set menu_updatecheck_getpacks 1 "get update packs from update server" set cl_loddistance1 1024 @@ -834,11 +833,11 @@ alias menu_sync "menu_cmd sync" seta cl_items_nofade 0 seta cl_animate_items 1 seta cl_ghost_items 0.45 "enable ghosted items (when between 0 and 1, overrides the alpha value)" -seta cl_ghost_items_color "-1 -1 -1" "color of ghosted items, 0 0 0 leaves the color unchanged" +seta cl_ghost_items_color "-1 -1 -1" "color of ghosted items (colormod format: 0 0 0 leaves the color unchanged, negative values allowed)" seta cl_simple_items 0 "enable simple items (if server allows)" set cl_simpleitems_postfix "_luma" "posfix to add fo model name when simple items are enabled" set cl_fullbright_items 0 "enable fullbright items (if server allows, controlled by g_fullbrightitems)" -set cl_weapon_stay_color "2 0.5 0.5" "Color of picked up weapons when g_weapon_stay > 0" +set cl_weapon_stay_color "2 0.5 0.5" "Color of picked up weapons when g_weapon_stay > 0 (colormod format: 0 0 0 leaves the color unchanged, negative values allowed)" set cl_weapon_stay_alpha 0.75 "Alpha of picked up weapons when g_weapon_stay > 0" seta cl_showspectators 0 "Show who's spectating you if server has sv_showspectators enabled" diff --git a/xonotic-server.cfg b/xonotic-server.cfg index 29d5c2f675..49ba47fa39 100644 --- a/xonotic-server.cfg +++ b/xonotic-server.cfg @@ -170,6 +170,7 @@ set bot_ai_timeitems_minrespawndelay 25 "bots run to items with this minimum res set g_waypointeditor 0 set g_waypointeditor_auto 0 "Automatically create waypoints for bots while playing; BEWARE, this currently creates too many of them" set g_waypointeditor_symmetrical 0 "Enable symmetrical editing of waypoints on symmetrical CTF maps (NOTE: it assumes that the map is perfectly symmetrical). 1: automatically determine origin of symmetry; -1: use custom origin (g_waypointeditor_symmetrical_origin); 2: automatically determine axis of symmetry; -2: use custom axis (g_waypointeditor_symmetrical_axis)" +set g_waypointeditor_symmetrical_allowload 1 "Allow loading symmetry settings from waypoint files into g_waypointeditor_symmetrical* cvars on map start" set g_waypointeditor_symmetrical_origin "0 0" "Custom origin of symmetry (x y)" set g_waypointeditor_symmetrical_order 0 "if >= 2 apply rotational symmetry (around origin of symmetry) of this order, otherwise apply autodetected order of symmetry" set g_waypointeditor_symmetrical_axis "0 0" "Custom axis of symmetry (m q parameters of y = mx + q)" @@ -179,7 +180,7 @@ set bot_vs_human 0 "Bots and humans play in different teams when set. positive v set g_spawnshieldtime 1 "number of seconds you are invincible after you spawned, this shield is lost after you fire" set g_spawnshield_blockdamage 1 "how much spawn shield protects you from damage (1 = full protection)" -set g_antilag 2 "AntiLag (0 = no AntiLag, 1 = verified client side hit scan, 2 = server side hit scan in the past, 3 = unverified client side hit scan)" +set g_antilag 2 "AntiLag (0 = no AntiLag, 1 = verified client side hit scan, 2 = server side hit scan in the past)" set g_antilag_nudge 0 "don't touch" set g_shootfromeye 0 "shots are fired from your eye/crosshair; visual gun position can still be influenced by cl_gunalign 1 and 2" set g_shootfromcenter 0 "weapon gets moved to the center, shots still come from the barrel of your weapon; visual gun position can still be influenced by cl_gunalign 1 and 2" @@ -338,7 +339,7 @@ set g_maplist_votable_keeptwotime 15 "show only 2 options after this amount of t set g_maplist_votable_timeout 30 "timeout for the map voting; must be below 50 seconds!" set g_maplist_votable_suggestions 2 set g_maplist_votable_suggestions_override_mostrecent 0 -set g_maplist_votable_nodetail 1 "nodetail only shows total count instead of all vote counts per map, so votes don't influence others that much" +set g_maplist_votable_nodetail 0 "nodetail only shows total count instead of all vote counts per map, so votes don't influence others that much" set g_maplist_votable_abstain 0 "when 1, you can abstain from your vote" set g_maplist_votable_screenshot_dir "maps levelshots" "where to look for map screenshots"