.DS_Store
.idea/
Thumbs.db
+
+# sv_game hashtest local test re-use
+data/maps/
+data/maps/_init.bsp
+data/maps/stormkeep.mapinfo
+data/maps/stormkeep.waypoints
+data/maps/stormkeep.waypoints.cache
+data/stormkeep.pk3
-workflow:\r
- rules:\r
- - if: $CI_COMMIT_MESSAGE =~ /Transifex autosync/\r
- when: never\r
- - when: always\r
-\r
-before_script:\r
- - ln -s $PWD data/xonotic-data.pk3dir\r
-\r
- - export MAKEFLAGS=-j$(nproc); echo MAKEFLAGS=$MAKEFLAGS\r
-# FIXME: -march=native -mtune=native _changes the hash_, why?!?\r
-# - export CC="gcc -pipe -march=native -mtune=native"\r
- - export CC="gcc -pipe"\r
-\r
- - >\r
- if wget -nv https://beta.xonotic.org/pipeline-bin/gmqcc ; then\r
- export QCC="$PWD/gmqcc"\r
- chmod +x "$QCC"\r
- else\r
- git clone --depth=1 --branch=main https://gitlab.com/xonotic/gmqcc.git gmqcc\r
- make -C gmqcc || exit 1\r
- export QCC="$PWD/gmqcc/gmqcc"\r
- fi\r
-\r
- # Makefile: don't complain about lack of tags (fetching them is slow)\r
- - export QCCFLAGS_WATERMARK=gitlab_pipeline\r
- # Makefile: don't compress anything or complain about lack of zip program\r
- - export ZIP=/bin/true\r
-\r
-test_compilation_units:\r
- rules:\r
- - changes:\r
- - qcsrc/**/*\r
- stage: test\r
- script:\r
- - make test\r
-\r
-test_sv_game:\r
- stage: test\r
- script:\r
- - >\r
- if wget -nv https://beta.xonotic.org/pipeline-bin/xonotic-linux64-dedicated ; then\r
- export ENGINE="$PWD/xonotic-linux64-dedicated"\r
- chmod +x "$ENGINE"\r
- else\r
- git clone --depth=1 --branch=div0-stable https://gitlab.com/xonotic/darkplaces.git darkplaces\r
- make -C darkplaces sv-release || exit 1\r
- export ENGINE="$PWD/darkplaces/darkplaces-dedicated -xonotic"\r
- fi\r
- - export ENGINE="$ENGINE -noconfig -nohome"\r
-\r
- - make qc || exit 1\r
-\r
- - mkdir -p data/maps\r
- - wget -nv -O data/maps/_init.bsp https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/_init/_init.bsp\r
-\r
- - while read LINE; do\r
- echo $LINE;\r
- [ "$LINE" = "All tests OK" ] && PASS=1;\r
- done < <(${ENGINE} +developer 1 +map _init +sv_cmd runtest +wait +quit)\r
- - test "$PASS" = "1" || { echo 'sv_cmd runtest failed!'; exit 1; }\r
-\r
- - ${ENGINE} +map _init +sv_cmd dumpnotifs +wait +quit\r
- - diff notifications.cfg data/data/notifications_dump.cfg ||\r
- { echo 'Please update notifications.cfg using `dumpnotifs`!'; exit 1; }\r
-\r
-# - wget -nv -O data/stormkeep.pk3 http://beta.xonotic.org/autobuild-bsp/latest/stormkeep.pk3\r
-# ^^ INCORRECT: /latest/stormkeep.pk3 is the most recently built, not necessarily the one built from master!\r
-# we can't get the one from master directly as there's no /stable/stormkeep.pk3 or /master/stormkeep.pk3\r
-# and we can't run misc/tools/xonotic-map-compiler-autobuild as it uses commit hashes from xonotic-maps.pk3dir to generate filenames\r
-# but the autobuild server can run it and provide us the resulting pk3:\r
- - wget -nv -O data/stormkeep.pk3 https://beta.xonotic.org/pipeline-bin/stormkeep.pk3\r
-# see also: misc/infrastructure/xonotic-release-build.cron\r
- - wget -nv -O data/maps/stormkeep.mapinfo https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/stormkeep.mapinfo\r
- - wget -nv -O data/maps/stormkeep.waypoints https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/stormkeep.waypoints\r
- - wget -nv -O data/maps/stormkeep.waypoints.cache https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/stormkeep.waypoints.cache\r
-\r
- - EXPECT=27f38dfbbd72e4bf8f9b540882d5ccbe\r
- - HASH=$(${ENGINE} +exec serverbench.cfg\r
- | tee /dev/stderr\r
- | grep '^:'\r
- | grep -v '^:gamestart:'\r
- | grep -v '^:anticheat:'\r
- | md5sum | awk '{ print $1 }')\r
- - echo 'expected:' $EXPECT\r
- - echo ' actual:' $HASH\r
- - test "$HASH" == "$EXPECT"\r
- - exit $?\r
-\r
-\r
-# NOTE: The generated docs are incomplete - they don't contain code behind SVQC CSQC MENUQC GAMEQC ifdefs.\r
-# With them added to PREDEFINED, it would take over half an hour to generate the docs and even then\r
-# they might not be complete. Doxygen doesn't handle #elif and might not understand some QC definitions.\r
-#doxygen: # rename to 'pages' when gitlab.com allows pages to exceed 100MiB\r
-# before_script:\r
-# - ln -s $PWD data/xonotic-data.pk3dir # is this needed?\r
-# - apt-get update\r
-# - apt-get -y install doxygen graphviz\r
-# stage: deploy\r
-# script:\r
-# - cd qcsrc && doxygen\r
-# - mv html ../public\r
-# - mkdir -p ~/.ssh\r
-# - for i in {0..0}; do eval $(printf "echo \$id_rsa_%02d\n" $i) >> ~/.ssh/id_rsa_base64; done\r
-# - base64 --decode ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa\r
-# - chmod 600 ~/.ssh/id_rsa\r
-# - echo -e "Host *\n\tStrictHostKeyChecking no\n\tLogLevel ERROR\n" >> ~/.ssh/config\r
-# - git config --global user.name "Gitlab CI"\r
-# - git config --global user.email "<>"\r
-# - git clone --single-branch --depth 1 ${DEPLOY_HOST}:${DEPLOY_REPO} ~/deploy_\r
-# - mkdir ~/deploy && mv ~/deploy_/.git ~/deploy && rm -r ~/deploy_\r
-# - cp -r ../public/* ~/deploy\r
-# - cd ~/deploy && git add -A . && git commit -m "Deploy ${CI_BUILD_REF}" && git push origin gh-pages\r
-# artifacts:\r
-# paths:\r
-# - public\r
-# only:\r
-# - master\r
+workflow:
+ rules:
+ - if: $CI_COMMIT_MESSAGE =~ /Transifex autosync/
+ when: never
+ - when: always
+
+before_script:
+ - ln -s $PWD data/xonotic-data.pk3dir
+
+ - export MAKEFLAGS=-j$(nproc); echo MAKEFLAGS=$MAKEFLAGS
+ - export CC="gcc -pipe"
+
+ - >
+ if wget -nv https://beta.xonotic.org/pipeline-bin/gmqcc ; then
+ export QCC="$PWD/gmqcc"
+ chmod +x "$QCC"
+ else
+ git clone --depth=1 --branch=main https://gitlab.com/xonotic/gmqcc.git gmqcc
+ make -C gmqcc || exit 1
+ export QCC="$PWD/gmqcc/gmqcc"
+ fi
+
+ # Makefile: don't complain about lack of tags (fetching them is slow)
+ - export QCCFLAGS_WATERMARK=gitlab_pipeline
+ # Makefile: don't compress anything or complain about lack of zip program
+ - export ZIP=/bin/true
+
+test_compilation_units:
+ rules:
+ - changes:
+ - qcsrc/**/*
+ stage: test
+ script:
+ - make test
+
+test_sv_game:
+ stage: test
+ script:
+ - export EXPECT=210a5126bffa3cd2acdb8d62bcec9e11
+ - qcsrc/tools/sv_game-hashtest.sh
+ - exit $?
+
+
+# NOTE: The generated docs are incomplete - they don't contain code behind SVQC CSQC MENUQC GAMEQC ifdefs.
+# With them added to PREDEFINED, it would take over half an hour to generate the docs and even then
+# they might not be complete. Doxygen doesn't handle #elif and might not understand some QC definitions.
+#doxygen: # rename to 'pages' when gitlab.com allows pages to exceed 100MiB
+# before_script:
+# - ln -s $PWD data/xonotic-data.pk3dir # is this needed?
+# - apt-get update
+# - apt-get -y install doxygen graphviz
+# stage: deploy
+# script:
+# - cd qcsrc && doxygen
+# - mv html ../public
+# - mkdir -p ~/.ssh
+# - for i in {0..0}; do eval $(printf "echo \$id_rsa_%02d\n" $i) >> ~/.ssh/id_rsa_base64; done
+# - base64 --decode ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
+# - chmod 600 ~/.ssh/id_rsa
+# - echo -e "Host *\n\tStrictHostKeyChecking no\n\tLogLevel ERROR\n" >> ~/.ssh/config
+# - git config --global user.name "Gitlab CI"
+# - git config --global user.email "<>"
+# - git clone --single-branch --depth 1 ${DEPLOY_HOST}:${DEPLOY_REPO} ~/deploy_
+# - mkdir ~/deploy && mv ~/deploy_/.git ~/deploy && rm -r ~/deploy_
+# - cp -r ../public/* ~/deploy
+# - cd ~/deploy && git add -A . && git commit -m "Deploy ${CI_BUILD_REF}" && git push origin gh-pages
+# artifacts:
+# paths:
+# - public
+# only:
+# - master
-Fri 15 Sep 2023 07:26:17 AM CEST
+Fri Jan 26 07:22:59 AM CET 2024
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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ó bandera del ^TC^TT^BG en ^F1%s^BG segundos, superando'l "
"récor anterior que fizo ^BG%s^BG de ^F2%s^BG segundos"
#, c-format
msgid "^BG%s%s^K1 tried to occupy ^BG%s^K1's teleport destination space%s%s"
msgstr ""
-"^BG%s%s^K1 tentó d'ocupar l'espaciu de destín del teletresporte de ^BG%s^K1%s"
-"%s"
+"^BG%s%s^K1 tentó d'ocupar l'espaciu de destín del teletresporte de "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:291
#, 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 morrió pola bonísima interpretación de ^BG%s^K1 col @!#%% acordión"
-"%s%s"
+"^BG%s%s^K1 morrió pola bonísima interpretación de ^BG%s^K1 col @!#%% "
+"acordión%s%s"
#: qcsrc/common/notifications/all.inc:461
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#, 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 morrió pola bonísima interpretación de ^BG%s^K1 cola @!#%% tuba%s"
-"%s"
+"^BG%s%s^K1 morrió pola bonísima interpretación de ^BG%s^K1 cola @!#%% "
+"tuba%s%s"
#: qcsrc/common/notifications/all.inc:521
#, c-format
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
-"%100>=11 && n%100<=14)? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
+"(n%100>=11 && n%100<=14)? 2 : 3);\n"
#: qcsrc/client/hud/hud_config.qc:80
#, c-format
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 захапіў ^TC^TT^BG сцяг цягам ^F1%s^BG секунд, пабіўшы папярэдні "
"рэкорд ^BG%s^BG - ^F2%s^BG секунд"
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 плени ^TC^TT^BG знаме за ^F1%s^BG секунди, подобрявайки рекорда на "
"^BG%s^BG от ^F2%s^BG секудни"
#, 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 бе хваната от взривната вълна когато експлодира Raptor-а на ^BG"
-"%s^K1 %s%s"
+"^BG%s%s^K1 бе хваната от взривната вълна когато експлодира Raptor-а на "
+"^BG%s^K1 %s%s"
#: qcsrc/common/notifications/all.inc:299
#, 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 бе хванат от взривната вълна когато експлодира Spiderbot-а на ^BG"
-"%s^K1 %s%s"
+"^BG%s%s^K1 бе хванат от взривната вълна когато експлодира Spiderbot-а на "
+"^BG%s^K1 %s%s"
#: qcsrc/common/notifications/all.inc:300
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !"
-"=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n"
-"%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > "
-"19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 "
-"&& n % 1000000 == 0) ? 3 : 4);\n"
+"=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && "
+"(n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 "
+"> 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != "
+"0 && n % 1000000 == 0) ? 3 : 4);\n"
#: qcsrc/client/hud/hud_config.qc:80
#, c-format
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
+# A Person, 2023
+# A Person, 2023
# Archy Coder, 2022
# Archy Coder, 2022
msgid ""
#: qcsrc/client/hud/panel/centerprint.qc:211
msgid "Generic message"
-msgstr ""
+msgstr "Generisk besked"
#: qcsrc/client/hud/panel/centerprint.qc:293
#: qcsrc/client/hud/panel/centerprint.qc:303
msgid "vs"
-msgstr ""
+msgstr "mod"
#: qcsrc/client/hud/panel/chat.qc:165
msgid "^3Player^7: This is the chat area."
#: qcsrc/client/hud/panel/infomessages.qc:107
#: qcsrc/client/hud/panel/infomessages.qc:111
msgid "previous weapon"
-msgstr ""
+msgstr "forrige våben"
#: qcsrc/client/hud/panel/infomessages.qc:111
#, c-format
#: qcsrc/client/hud/panel/infomessages.qc:115
#: qcsrc/common/vehicles/cl_vehicles.qc:171
msgid "drop weapon"
-msgstr ""
+msgstr "lig våben"
#: qcsrc/client/hud/panel/infomessages.qc:113
#: qcsrc/menu/xonotic/keybinder.qc:51
msgid "secondary fire"
-msgstr ""
+msgstr "sekundære skud"
#: qcsrc/client/hud/panel/infomessages.qc:115
#, c-format
#: qcsrc/client/hud/panel/infomessages.qc:118
#: qcsrc/menu/xonotic/keybinder.qc:106
msgid "server info"
-msgstr ""
+msgstr "server info"
#: qcsrc/client/hud/panel/infomessages.qc:130
#, c-format
#: qcsrc/client/hud/panel/infomessages.qc:130 qcsrc/client/main.qc:1409
#: qcsrc/common/notifications/all.qh:442
msgid "jump"
-msgstr "hoppe"
+msgstr "hop"
#: qcsrc/client/hud/panel/infomessages.qc:139
#, c-format
msgid "^1Game starts in ^3%d^1 seconds"
-msgstr "^1Spil begynder om ^3%d^1 sekunder"
+msgstr "^1Spillet starter om ^3%d^1 sekunder"
#: qcsrc/client/hud/panel/infomessages.qc:151
msgid "^2Currently in ^1warmup^2 stage!"
#: qcsrc/client/hud/panel/infomessages.qc:163
msgid "^31^2 more player is needed for the match to start."
-msgstr ""
+msgstr "^31^2 flere spillere kræves for at start kampen"
#: qcsrc/client/hud/panel/infomessages.qc:165
#, c-format
#: qcsrc/client/hud/panel/infomessages.qc:178
#: qcsrc/menu/xonotic/keybinder.qc:102
msgid "ready"
-msgstr ""
+msgstr "klar"
#: qcsrc/client/hud/panel/infomessages.qc:175
msgid "^2Waiting for others to ready up to end warmup..."
#: qcsrc/client/hud/panel/infomessages.qc:203
#: qcsrc/menu/xonotic/keybinder.qc:117
msgid "team selection"
-msgstr ""
+msgstr "hold selektion"
#: qcsrc/client/hud/panel/infomessages.qc:213
msgid "^1Spectating this player:"
#: qcsrc/client/hud/panel/quickmenu.qc:667
msgid "Continue..."
-msgstr ""
+msgstr "Fortsæt..."
#: qcsrc/client/hud/panel/quickmenu.qc:818
#: qcsrc/client/hud/panel/quickmenu.qc:825
#: qcsrc/client/hud/panel/quickmenu.qc:821
msgid "QMCMD^good game"
-msgstr ""
+msgstr "QMCMD^god kamp"
#: qcsrc/client/hud/panel/quickmenu.qc:822
msgid "QMCMD^hi / good luck"
-msgstr ""
+msgstr "QMCMD^hej / held og lykke"
#: qcsrc/client/hud/panel/quickmenu.qc:822
msgid "QMCMD^hi / good luck and have fun"
#: qcsrc/client/hud/panel/quickmenu.qc:824
msgid "QMCMD^Send in English"
-msgstr "QMCMD^Send i Engelsk"
+msgstr "QMCMD^Send på Engelsk"
#: qcsrc/client/hud/panel/quickmenu.qc:829
#: qcsrc/client/hud/panel/quickmenu.qc:845
#: qcsrc/client/hud/panel/scoreboard.qc:172
msgid "Number of suicides"
-msgstr "Antal selvmord"
+msgstr "Antal selvdrab"
#: qcsrc/client/hud/panel/scoreboard.qc:172
msgid "SCO^suicides"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 hat die ^TC^TT^BG Flagge in ^F1%s^BG Sekunden erobert, und damit ^BG"
-"%s^BGs Rekord von ^F2%s^BG Sekunden geschlagen"
+"^BG%s^BG hat die ^TC^TT^BG Flagge in ^F1%s^BG Sekunden erobert, und damit "
+"^BG%s^BGs Rekord von ^F2%s^BG Sekunden geschlagen"
#: qcsrc/common/notifications/all.inc:242
#, c-format
#, 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 wurde durch ^BG%s^K1s ^BG%s^K1-Bonus zu Punkten verarbeitet ^K1%s"
-"%s"
+"^BG%s%s^K1 wurde durch ^BG%s^K1s ^BG%s^K1-Bonus zu Punkten verarbeitet "
+"^K1%s%s"
#: qcsrc/common/notifications/all.inc:277
#, c-format
#, c-format
msgid "^BG%s^K1 could not remember where they put their Electro orb%s%s"
msgstr ""
-"^BG%s^K1 konnte sich nicht erinnern, wo noch einmal diese Elektro-Kugel lag%s"
-"%s"
+"^BG%s^K1 konnte sich nicht erinnern, wo noch einmal diese Elektro-Kugel "
+"lag%s%s"
#: qcsrc/common/notifications/all.inc:477
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
"^BG%s%s^K1 wurde von ^BG%s^K1s Overkill-Raketenkettensäge in zwei Teile "
"zersägt%s%s"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 hat die ^TC^TT^BG Flagge in ^F1%s^BG Sekunden erobert, und damit ^BG"
-"%s^BGs Rekord von ^F2%s^BG Sekunden geschlagen"
+"^BG%s^BG hat die ^TC^TT^BG Flagge in ^F1%s^BG Sekunden erobert, und damit "
+"^BG%s^BGs Rekord von ^F2%s^BG Sekunden geschlagen"
#: qcsrc/common/notifications/all.inc:242
#, c-format
#, 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 wurde durch ^BG%s^K1s ^BG%s^K1-Bonus zu Punkten verarbeitet ^K1%s"
-"%s"
+"^BG%s%s^K1 wurde durch ^BG%s^K1s ^BG%s^K1-Bonus zu Punkten verarbeitet "
+"^K1%s%s"
#: qcsrc/common/notifications/all.inc:277
#, c-format
#, c-format
msgid "^BG%s^K1 could not remember where they put their Electro orb%s%s"
msgstr ""
-"^BG%s^K1 konnte sich nicht erinnern, wo noch einmal diese Elektro-Kugel lag%s"
-"%s"
+"^BG%s^K1 konnte sich nicht erinnern, wo noch einmal diese Elektro-Kugel "
+"lag%s%s"
#: qcsrc/common/notifications/all.inc:477
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
"^BG%s%s^K1 wurde von ^BG%s^K1s Overkill-Raketenkettensäge in zwei Teile "
"zersägt%s%s"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 έπιασε την ^TC^TT^BG σημαία σε ^F1%s^BG δευτερόλεπτα, ξεπερνώντας "
"^BG%s^BG's προηγούμενο ρεκόρ των ^F2%s^BG δευτερολέπτων"
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 captured the ^TC^TT^BG flag in ^F1%s^BG seconds, breaking ^BG"
-"%s^BG's previous record of ^F2%s^BG seconds"
+"^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"
#: qcsrc/common/notifications/all.inc:242
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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, batiendo el "
"récord anterior de ^BG%s^BG de ^F2%s^BG segundos"
#, 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 quedó atrapado en la explosión cuando el Racer de ^BG%s^K1 explotó"
-"%s%s"
+"^BG%s%s^K1 quedó atrapado en la explosión cuando el Racer de ^BG%s^K1 "
+"explotó%s%s"
#: qcsrc/common/notifications/all.inc:303
#, c-format
#, c-format
msgid "^BG%s^K1 got caught in the blast of a Bumblebee explosion%s%s"
msgstr ""
-"^BG%s^K1 fue alcanzado por la onda expansiva de una explosión de Bumblebee%s"
-"%s"
+"^BG%s^K1 fue alcanzado por la onda expansiva de una explosión de "
+"Bumblebee%s%s"
#: qcsrc/common/notifications/all.inc:352
#, c-format
#, c-format
msgid "^BG%s^K1 got caught in the blast of a Raptor explosion%s%s"
msgstr ""
-"^BG%s^K1 fue alcanzado por la explosión de la bomba de racimo de un Raptor%s"
-"%s"
+"^BG%s^K1 fue alcanzado por la explosión de la bomba de racimo de un "
+"Raptor%s%s"
#: qcsrc/common/notifications/all.inc:355
#, c-format
#, 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 sintió el aire electrificante del el combo de Electro de ^BG"
-"%s^K1%s%s"
+"^BG%s%s^K1 sintió el aire electrificante del el combo de Electro de "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:474
#, c-format
#, c-format
msgid "^BG%s%s^K1 was sniped by ^BG%s^K1's Overkill Heavy Machine Gun%s%s"
msgstr ""
-"^BG%s%s^K1 fue arrebatado por la Ametralladora Pesada Overkill de ^BG%s^K1%s"
-"%s"
+"^BG%s%s^K1 fue arrebatado por la Ametralladora Pesada Overkill de "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:499
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
"^BG%s%s^K1 fue aserrado por la mitad por la Motosierra Overkill Propulsada "
"por Cohetes de ^BG%s^K1%s%s"
msgid ""
"^BG%s%s^K1 almost dodged ^BG%s^K1's Overkill Rocket Propelled Chainsaw%s%s"
msgstr ""
-"^BG%s%s^K1 casi esquivó la Motosierra Overkill Propulsada por Cohetes d^BG"
-"%s^K1%s%s"
+"^BG%s%s^K1 casi esquivó la Motosierra Overkill Propulsada por Cohetes "
+"d^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:504
#, c-format
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 kaappasi ^TC^TT^BG lipun ^F1%s^BG sekunnissa, rikkoen ^BG%s^BG's "
"edellisen ennätyksen ^F2%s^BG sekuntia"
#, 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 tunsi mitä se on kun tekee poppaa ^BG%s^K1's tulen polttaessa^K1%s"
-"%s"
+"^BG%s%s^K1 tunsi mitä se on kun tekee poppaa ^BG%s^K1's tulen "
+"polttaessa^K1%s%s"
#: qcsrc/common/notifications/all.inc:280
#, c-format
#, c-format
msgid "^BG%s%s^K1 was shot into space by ^BG%s^K1%s%s"
msgstr ""
-"^BG%s%s^K1 ammuttiin planeettaa kiertävälle radalle syyllisen ollen ^BG"
-"%s^K1%s%s"
+"^BG%s%s^K1 ammuttiin planeettaa kiertävälle radalle syyllisen ollen "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:289
#, 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 kuoli syyn ollen ^BG%s^K1 on mahtava soittamaan @!#%%'n Haitaria%s"
-"%s"
+"^BG%s%s^K1 kuoli syyn ollen ^BG%s^K1 on mahtava soittamaan @!#%%'n "
+"Haitaria%s%s"
#: qcsrc/common/notifications/all.inc:461
#, c-format
#, c-format
msgid "^BG%s%s^K1 was sniped by ^BG%s^K1's Overkill Heavy Machine Gun%s%s"
msgstr ""
-"^BG%s%s^K1 niputettiin ^BG%s^K1'n Ylimalkaallisen Raskaalla Konekiväärillä%s"
-"%s"
+"^BG%s%s^K1 niputettiin ^BG%s^K1'n Ylimalkaallisen Raskaalla "
+"Konekiväärillä%s%s"
#: qcsrc/common/notifications/all.inc:499
#, c-format
msgid ""
"^BG%s%s^K1 was riddled full of holes by ^BG%s^K1's Overkill Machine Gun%s%s"
msgstr ""
-"^BG%s%s^K1 ropisi täyteen reikiä ^BG%s^K1'n Ylimalkaallisella konekiväärillä"
-"%s%s"
+"^BG%s%s^K1 ropisi täyteen reikiä ^BG%s^K1'n Ylimalkaallisella "
+"konekiväärillä%s%s"
#: qcsrc/common/notifications/all.inc:501
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
"^BG%s%s^K1 sahattiin kahtia ^BG%s^K1'n Ylimalkaallisella rakettikäyttöisellä "
"moottorisahalla%s%s"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 a capturé le drapeau ^TC^TT^BG en ^F1%s^BG secondes, battant le "
"précédent record de ^BG%s^BG en ^F2%s^BG secondes"
#, 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 a été pris pour cible par ^BG%s^K1 et son bonus de ^BG%s^K1 ^K1%s"
-"%s"
+"^BG%s%s^K1 a été pris pour cible par ^BG%s^K1 et son bonus de ^BG%s^K1 "
+"^K1%s%s"
#: qcsrc/common/notifications/all.inc:277
#, c-format
#, 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 en a vu de toutes les couleurs avec le canon du Bumblebee de ^BG"
-"%s^K1%s%s"
+"^BG%s%s^K1 en a vu de toutes les couleurs avec le canon du Bumblebee de "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:295
#, c-format
#, 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 a été pris dans le souffle quand le Raptor de ^BG%s^K1 a explosé%s"
-"%s"
+"^BG%s%s^K1 a été pris dans le souffle quand le Raptor de ^BG%s^K1 a "
+"explosé%s%s"
#: qcsrc/common/notifications/all.inc:299
#, c-format
#, 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 a été pris dans le souffle quand le Racer de ^BG%s^K1 a explosé%s"
-"%s"
+"^BG%s%s^K1 a été pris dans le souffle quand le Racer de ^BG%s^K1 a "
+"explosé%s%s"
#: qcsrc/common/notifications/all.inc:303
#, c-format
#, c-format
msgid "^BG%s^BG couldn't break their %s%s^BG place record of %s%s %s"
msgstr ""
-"^BG%s^BG n'a pas réussi à améliorer son record au classement de %s%s^BG de %s"
-"%s %s"
+"^BG%s^BG n'a pas réussi à améliorer son record au classement de %s%s^BG de "
+"%s%s %s"
#: qcsrc/common/notifications/all.inc:434
#, c-format
msgid ""
"^BG%s%s^K1 was torn to bits by ^BG%s^K1's Overkill Heavy Machine Gun%s%s"
msgstr ""
-"^BG%s%s^K1 a été réduit en miettes par la Mitraillette Overkill lourde de ^BG"
-"%s^K1%s%s"
+"^BG%s%s^K1 a été réduit en miettes par la Mitraillette Overkill lourde de "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:500
#, c-format
msgid ""
"^BG%s%s^K1 was riddled full of holes by ^BG%s^K1's Overkill Machine Gun%s%s"
msgstr ""
-"^BG%s%s^K1 a été criblé de balles par la Mitraillette Overkill de ^BG%s^K1%s"
-"%s"
+"^BG%s%s^K1 a été criblé de balles par la Mitraillette Overkill de "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:501
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
-"^BG%s%s^K1 a été scié en deux par la Tronçonneuse à roquettes Overkill de ^BG"
-"%s^K1%s%s"
+"^BG%s%s^K1 a été scié en deux par la Tronçonneuse à roquettes Overkill de "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:503
#, c-format
msgid ""
"^BG%s%s^K1 almost dodged ^BG%s^K1's Overkill Rocket Propelled Chainsaw%s%s"
msgstr ""
-"^BG%s%s^K1 a presque évité la Tronçonneuse à roquettes Overkill de ^BG%s^K1%s"
-"%s"
+"^BG%s%s^K1 a presque évité la Tronçonneuse à roquettes Overkill de "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:504
#, c-format
msgid ""
"^BG%s^K1 was sawn in half by their own Overkill Rocket Propelled Chainsaw%s%s"
msgstr ""
-"^BG%s^K1 a été scié en deux par sa propre Tronçonneuse à roquettes Overkill%s"
-"%s"
+"^BG%s^K1 a été scié en deux par sa propre Tronçonneuse à roquettes "
+"Overkill%s%s"
#: qcsrc/common/notifications/all.inc:505
#, c-format
#, c-format
msgid "^BG%s%s^K1 died in ^BG%s^K1's Rifle bullet hail%s%s"
msgstr ""
-"^BG%s%s^K1 est mort dans la grêle de balles du Fusil de précision de ^BG"
-"%s^K1%s%s"
+"^BG%s%s^K1 est mort dans la grêle de balles du Fusil de précision de "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:510
#, 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 n'a pas pu éviter la grêle de balles du Fusil de précision de ^BG"
-"%s^K1%s%s"
+"^BG%s%s^K1 n'a pas pu éviter la grêle de balles du Fusil de précision de "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:511
#, c-format
#: qcsrc/common/notifications/all.inc:642
msgid "^K1You unfairly eliminated yourself!"
-msgstr "^K1Vous vous êtes éliminé tout seul !"
+msgstr "^K1Vous vous êtes injustement éliminé vous-même !"
#: qcsrc/common/notifications/all.inc:643
#, c-format
#: qcsrc/common/notifications/all.inc:647
msgid "^K1You fragged yourself!"
-msgstr "^K1Vous vous êtes tué tout seul !"
+msgstr "^K1Vous vous êtes tué vous-même !"
#: qcsrc/common/notifications/all.inc:647
msgid "^K1You need to be more careful!"
#: qcsrc/common/notifications/all.inc:688
msgid "^K3You revived yourself"
-msgstr "^K3Vous vous êtes dégelé tout seul"
+msgstr "^K3Vous vous êtes dégelé vous-même"
#: qcsrc/common/notifications/all.inc:689
#, c-format
#: qcsrc/common/notifications/all.inc:698
msgid "^K1You froze yourself"
-msgstr "^K1Vous vous êtes gelé tout seul"
+msgstr "^K1Vous vous êtes gelé vous-même"
#: qcsrc/common/notifications/all.inc:699
msgid "^K1Round already started, you spawn as frozen"
"^K1You may not join the game at this time.\n"
"This match is limited to ^F2%s^BG players."
msgstr ""
-"^K1Vous ne pouvez actuellement pas rejoindre la partie.\n"
+"^K1Vous ne pouvez pas rejoindre la partie actuellement.\n"
"Cette partie est limitée à ^F2%s^BG joueurs."
#: qcsrc/common/notifications/all.inc:716
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
msgstr ""
"A csúszkával a képernyő felbontását tudod megváltoztatni. TIPP: Ha több "
"monitorod van, és a kép az összes monitorra szét van feszítve, akkor az "
-"Egyéb -> Haladó beállításokban keresd ki a listából a \"vid_netwmfullscreen"
-"\" változót, és állítsd át az értékét \"1\"-re! Ez megoldja problémát, de "
-"ebben az esetben csak a képernyőd natív felbontását tudod csak használni!"
+"Egyéb -> Haladó beállításokban keresd ki a listából a "
+"\"vid_netwmfullscreen\" változót, és állítsd át az értékét \"1\"-re! Ez "
+"megoldja problémát, de ebben az esetben csak a képernyőd natív felbontását "
+"tudod csak használni!"
#: qcsrc/menu/xonotic/slider_sbfadetime.qc:13
msgid "FADESPEED^Slow"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
# Ariesandy Hidayat, 2023
# Ariesandy Hidayat, 2023
# red koala, 2023
+# Red Koala, 2023
+# Red Koala, 2023
# red koala, 2023
msgid ""
msgstr ""
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 menangkap bendera ^TC^TT^BG dalam ^F1%s^BG detik, memecahkan rekor "
"^BG%s^BG sebelumnya dari ^F2%s^BG detik"
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
msgid ""
"^K1No spawnpoints available!\n"
"Hope your team can fix it..."
-msgstr ""
+msgstr "Tidak ada tempat spawn tersedia! Semoga tim-mu bisa memperbaikinya..."
#: qcsrc/common/notifications/all.inc:715
#, c-format
#: qcsrc/common/notifications/all.inc:716
msgid "^K1You aren't allowed to play because you are banned in this server"
-msgstr ""
+msgstr "^K1Anda tidak diizinkan bermain karena anda di ban di server ini "
#: qcsrc/common/notifications/all.inc:720
msgid "^BGYou picked up the ball"
#: qcsrc/common/notifications/all.inc:735
#, c-format
msgid "^BGWaiting for %s player(s) to join..."
-msgstr ""
+msgstr "^BGMenunggu pemain %s untuk bergabung..."
#: qcsrc/common/notifications/all.inc:737
msgid "^BGYour weapon has been downgraded until you find some ammo!"
#: qcsrc/common/notifications/all.inc:740
#, c-format
msgid "^F2Extra lives remaining: ^K1%s"
-msgstr ""
+msgstr "^F2Sisa nyawa ekstra: ^K1%s"
#: qcsrc/common/notifications/all.inc:742
#, c-format
#: qcsrc/common/notifications/all.inc:746
msgid "^BGYou captured a control point"
-msgstr ""
+msgstr "^BGAnda menangkap poin kontrol"
#: qcsrc/common/notifications/all.inc:747
#, c-format
#: qcsrc/common/notifications/all.inc:751
msgid "^BGThe ^TCenemy^BG generator is no longer shielded!"
-msgstr ""
+msgstr "^BGGenerator ^TCmusuh^BG tidak lagi terlindungi"
#: qcsrc/common/notifications/all.inc:752
msgid ""
"^K1Your generator is NOT shielded!\n"
"^BGRe-capture control points to shield it!"
msgstr ""
+"^K1Generator anda TIDAK terlindungi!\n"
+"^BGAmbil poin kontrol untuk melindunginya!"
#: qcsrc/common/notifications/all.inc:753
#, c-format
#: qcsrc/common/notifications/all.inc:767
msgid "^F2Shield surrounds you"
-msgstr ""
+msgstr "^F2Anda terlindungi"
#: qcsrc/common/notifications/all.inc:768
msgid "^F2Shield has worn off"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 ha catturato la bandiera ^TC^TT^BG in ^F1%s^BG secondi, battendo il "
"precedente record di ^BG%s^BG di ^F2%s^BG secondi"
#, c-format
msgid "^BG%s%s^K1 was blasted to bits by ^BG%s^K1's Spiderbot%s%s"
msgstr ""
-"^BG%s%s^K1 è stato fatto scoppiare in pezzettini dallo Spiderbot di ^BG"
-"%s^K1%s%s"
+"^BG%s%s^K1 è stato fatto scoppiare in pezzettini dallo Spiderbot di "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:302
#, c-format
#, c-format
msgid "^BG%s^BG couldn't break their %s%s^BG place record of %s%s %s"
msgstr ""
-"^BG%s^BG non è riuscito a battere il proprio record del %s%s^BG posto di %s"
-"%s %s"
+"^BG%s^BG non è riuscito a battere il proprio record del %s%s^BG posto di "
+"%s%s %s"
#: qcsrc/common/notifications/all.inc:434
#, c-format
#, 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 ha sentito l'aria elettrificata della combo dell'Electro di ^BG"
-"%s^K1%s%s"
+"^BG%s%s^K1 ha sentito l'aria elettrificata della combo dell'Electro di "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:474
#, c-format
#, c-format
msgid "^BG%s%s^K1 was caught in ^BG%s^K1's Hook gravity bomb%s%s"
msgstr ""
-"^BG%s%s^K1 è stato catturato nella bomba di gravità del Rampino di ^BG%s^K1%s"
-"%s"
+"^BG%s%s^K1 è stato catturato nella bomba di gravità del Rampino di "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:487
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
"^BG%s%s^K1 è stato tagliato in due dall'Overkill Rocket Propelled Chainsaw "
"di ^BG%s^K1%s%s"
msgid ""
"^BG%s%s^K1 almost dodged ^BG%s^K1's Overkill Rocket Propelled Chainsaw%s%s"
msgstr ""
-"^BG%s%s^K1 ha quasi schivato l'Overkill Rocket Propelled Chainsaw di ^BG"
-"%s^K1%s%s"
+"^BG%s%s^K1 ha quasi schivato l'Overkill Rocket Propelled Chainsaw di "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:504
#, c-format
msgid ""
"^BG%s^K1 was sawn in half by their own Overkill Rocket Propelled Chainsaw%s%s"
msgstr ""
-"^BG%s^K1 è stato segato in due dal proprio Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s^K1 è stato segato in due dal proprio Overkill Rocket Propelled "
+"Chainsaw%s%s"
#: qcsrc/common/notifications/all.inc:505
#, c-format
# Antoni Das <Antonidas159@gmail.com>, 2017
# Antonio <piuntn@gmail.com>, 2023
# LegendGuard, 2020
-# LegendGuard, 2020-2023
+# LegendGuard, 2020-2024
# Lento <securemailfor28-xonotic@yahoo.co.jp>, 2015
# RYU N. <ryusho2523@yahoo.co.jp>, 2021
# z 411 <winrar.hurr@gmail.com>, 2021-2022
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-11 07:22+0200\n"
"PO-Revision-Date: 2013-09-12 16:53+0000\n"
-"Last-Translator: RYU N. <ryusho2523@yahoo.co.jp>, 2021\n"
+"Last-Translator: LegendGuard, 2020-2024\n"
"Language-Team: Japanese (Japan) (http://app.transifex.com/team-xonotic/"
"xonotic/language/ja_JP/)\n"
"Language: ja_JP\n"
#: qcsrc/client/hud/panel/quickmenu.qc:838
msgid "QMCMD^defending (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)"
-msgstr "QMCMD^守り中 (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)"
+msgstr "QMCMD^防衛中 (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)"
#: qcsrc/client/hud/panel/quickmenu.qc:838
msgid "QMCMD^defending, icon"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 が ^F1%s^BG 秒で ^TC^TT^BG 旗を取れたし、^BG%s^BG の以前の記録であ"
"る ^F2%s^BG 秒を破った"
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
"^BG%s%s^K1 は ^BG%s^K1 のオーバーキルロケット推進チェーンソー%s%sによって半分"
"に切断された"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#
# Translators:
# oblector o, 2022
-# oblector o, 2022-2023
+# oblector o, 2022-2024
msgid ""
msgstr ""
"Project-Id-Version: Xonotic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-11 07:22+0200\n"
"PO-Revision-Date: 2013-09-12 16:53+0000\n"
-"Last-Translator: oblector o, 2022\n"
+"Last-Translator: oblector o, 2022-2024\n"
"Language-Team: Latin (http://app.transifex.com/team-xonotic/xonotic/language/"
"la/)\n"
"Language: la\n"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 vexillum ^TC^TT^BG ^F1%s^BG secundis cepit, fuit captus celerior "
"anteriore celerrimo, quem ^BG%s^BG ^F2%s^BG secundis fecerat"
#, c-format
msgid "^BG%s^BG improved their %s%s^BG place record with %s%s %s"
msgstr ""
-"^BG%s^BG celerior fuit quam suum ipsum gradum %s%s^BG, tempus novum fuit %s"
-"%s %s"
+"^BG%s^BG celerior fuit quam suum ipsum gradum %s%s^BG, tempus novum fuit "
+"%s%s %s"
#: qcsrc/common/notifications/all.inc:438
#, c-format
#: qcsrc/common/notifications/all.inc:489
#, c-format
msgid "^BG%s%s^K1 was sniped by ^BG%s^K1's Machine Gun%s%s"
-msgstr ""
+msgstr "^BG%s%s^K1, Polybolo ^BG%s^K1, occisus est%s%s"
#: qcsrc/common/notifications/all.inc:490
#, c-format
#: qcsrc/common/notifications/all.inc:498
#, c-format
msgid "^BG%s%s^K1 was sniped by ^BG%s^K1's Overkill Heavy Machine Gun%s%s"
-msgstr ""
+msgstr "^BG%s%s^K1, Polybolo Immoderato ^BG%s^K1, occisus est%s%s"
#: qcsrc/common/notifications/all.inc:499
#, c-format
msgid ""
"^BG%s%s^K1 was torn to bits by ^BG%s^K1's Overkill Heavy Machine Gun%s%s"
-msgstr ""
+msgstr "^BG%s%s^K1, Polybolo Immoderato ^BG%s^K1, divisus est%s%s"
#: qcsrc/common/notifications/all.inc:500
#, c-format
#: qcsrc/common/notifications/all.inc:501
#, c-format
msgid "^BG%s%s^K1 has been vaporized by ^BG%s^K1's Overkill Nex%s%s"
-msgstr ""
+msgstr "^BG%s%s^K1, Nece Immoderata ^BG%s^K1, in vaporem mutatus est%s%s"
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
-"^BG%s%s^K1, Missilium Pellentium Serra Immoderata ^BG%s^K1, dimidiatus est%s"
-"%s"
+"^BG%s%s^K1, Missilium Pellentium Serra Immoderata ^BG%s^K1, dimidiatus "
+"est%s%s"
#: qcsrc/common/notifications/all.inc:503
#, c-format
msgid ""
"^BG%s%s^K1 almost dodged ^BG%s^K1's Overkill Rocket Propelled Chainsaw%s%s"
msgstr ""
-"^BG%s%s^K1 Missilium Pellentium Serram Immoderatam, ^BG%s^K1, fere vitavit%s"
-"%s"
+"^BG%s%s^K1 Missilium Pellentium Serram Immoderatam, ^BG%s^K1, fere "
+"vitavit%s%s"
#: qcsrc/common/notifications/all.inc:504
#, c-format
#: qcsrc/common/notifications/all.inc:507
#, c-format
msgid "^BG%s%s^K1 was gunned down by ^BG%s^K1's Overkill Shotgun%s%s"
-msgstr ""
+msgstr "^BG%s%s^K1, Sclopeto Immoderato ^BG%s^K1, occisus est%s%s"
#: qcsrc/common/notifications/all.inc:508
#, c-format
msgid "^BG%s%s^K1 was sniped with a Rifle by ^BG%s^K1%s%s"
-msgstr ""
+msgstr "^BG%s%s^K1, Sclopeto Pungenti ^BG%s^K1, occisus est%s%s"
#: qcsrc/common/notifications/all.inc:509
#, c-format
msgid "^BG%s%s^K1 died in ^BG%s^K1's Rifle bullet hail%s%s"
msgstr ""
+"^BG%s%s^K1 sub ^BG%s^K1 Sclopeti Pungentis missilium pluvia mortus est%s%s"
#: qcsrc/common/notifications/all.inc:510
#, 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, ex ^BG%s^K1 Sclopeti Pungentis missilium pluvia, effugire non "
+"potuit%s%s"
#: qcsrc/common/notifications/all.inc:511
#, c-format
msgid "^BG%s%s^K1 failed to hide from ^BG%s^K1's Rifle%s%s"
-msgstr ""
+msgstr "^BG%s%s^K1, ex ^BG%s^K1 Sclopeto Pungenti, effugire non potuit%s%s"
#: qcsrc/common/notifications/all.inc:512
#, c-format
#: qcsrc/common/notifications/all.inc:517
#, c-format
msgid "^BG%s%s^K1 was gunned down by ^BG%s^K1's Shotgun%s%s"
-msgstr ""
+msgstr "^BG%s%s^K1, Sclopeto ^BG%s^K1, occisus est%s%s"
#: qcsrc/common/notifications/all.inc:518
#, c-format
msgid "^BG%s%s^K1 slapped ^BG%s^K1 around a bit with a large Shotgun%s%s"
-msgstr ""
+msgstr "^BG%s%s^K1 magno Sclopeto ^BG%s^K1 alapam dedit%s%s"
#: qcsrc/common/notifications/all.inc:519
#, c-format
#: qcsrc/common/notifications/all.inc:522
#, c-format
msgid "^BG%s%s^K1 has been sublimated by ^BG%s^K1's Vaporizer%s%s"
-msgstr ""
+msgstr "^BG%s%s^K1, Vaporatro ^BG%s^K1, fervefactus est%s%s"
#: qcsrc/common/notifications/all.inc:523
#, c-format
msgid "^BG%s%s^K1 has been vaporized by ^BG%s^K1's Vortex%s%s"
-msgstr ""
+msgstr "^BG%s%s^K1, Vortice ^BG%s^K1, in vaporem mutatus est%s%s"
#: qcsrc/common/notifications/all.inc:542
msgid "^F4You are now alone!"
#: qcsrc/common/turrets/turret/plasma.qh:13
msgid "Plasma Cannon"
-msgstr ""
+msgstr "Plasmatis Tormentum"
#: qcsrc/common/turrets/turret/plasma_dual.qh:8
msgid "Dual plasma"
-msgstr ""
+msgstr "Plasma Duplum"
#: qcsrc/common/turrets/turret/plasma_dual.qh:20
msgid "Dual Plasma Cannon"
-msgstr ""
+msgstr "Plasmatis Dupli Tormentum"
#: qcsrc/common/turrets/turret/tesla.qh:13
#: qcsrc/common/turrets/turret/tesla_weapon.qh:7
msgid "Tesla Coil"
-msgstr ""
+msgstr "Teslae Spira"
#: qcsrc/common/turrets/turret/walker.qh:15
msgid "Walker Turret"
#: qcsrc/common/util.qc:260
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:192
msgid "Piñata"
-msgstr ""
+msgstr "Referti Armis"
#: qcsrc/common/util.qc:261
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:197
#: qcsrc/common/vehicles/vehicle/racer_weapon.qh:9
msgid "Racer cannon"
-msgstr ""
+msgstr "Cursoris tormentum"
#: qcsrc/common/vehicles/vehicle/raptor.qh:21
msgid "Raptor"
#: qcsrc/common/vehicles/vehicle/raptor_weapons.qh:9
msgid "Raptor cannon"
-msgstr ""
+msgstr "Raptoris tormentum"
#: qcsrc/common/vehicles/vehicle/raptor_weapons.qh:17
msgid "Raptor bomb"
#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:24
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:46
msgid "Noncurrent alpha:"
-msgstr ""
+msgstr "Traluciditas aliorum:"
#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:28
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:50
msgid "Noncurrent scale:"
-msgstr ""
+msgstr "Proportio aliorum:"
#: qcsrc/menu/xonotic/dialog_hudpanel_ammo.qc:32
#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:24
#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.qc:16
msgid "Info messages:"
-msgstr ""
+msgstr "Condicionum notae:"
#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.qc:19
msgid "Flip align"
-msgstr ""
+msgstr "Ad alterum latus"
#: qcsrc/menu/xonotic/dialog_hudpanel_infomessages.qh:6
msgid "Info Messages Panel"
-msgstr ""
+msgstr "Condicionum Notarum Tabella"
#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:16
#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:15
#: qcsrc/menu/xonotic/dialog_hudpanel_modicons.qh:6
msgid "Mod Icons Panel"
-msgstr ""
+msgstr "Mutationis Imaginum Tabella"
#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:17
msgid "Notifications:"
-msgstr ""
+msgstr "Nuntia:"
#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:20
msgid "Also print notifications to the console"
-msgstr ""
+msgstr "Nuntia scribere in iussorum loco quoque"
#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:23
msgid "Flip notify order"
-msgstr ""
+msgstr "Nuntiorum ordo inversa"
#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:26
msgid "Entry lifetime:"
-msgstr ""
+msgstr "Scriptum manet tempus:"
#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qc:30
msgid "Entry fadetime:"
-msgstr ""
+msgstr "Scriptum evanescit tempus:"
#: qcsrc/menu/xonotic/dialog_hudpanel_notification.qh:6
msgid "Notification Panel"
-msgstr ""
+msgstr "Nuntiorum Tabella"
#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:16
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:30
#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:38
msgid "Include vertical speed"
-msgstr ""
+msgstr "Velocitatem erectam addere"
#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:49
msgid "Show speed unit"
-msgstr ""
+msgstr "Velocitatis unitatem videre"
#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:52
msgid "Top speed"
-msgstr ""
+msgstr "Velocitas summa"
#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:58
msgid "Acceleration:"
#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qc:59
msgid "Include vertical acceleration"
-msgstr ""
+msgstr "Accelerationem erectam addere"
#: qcsrc/menu/xonotic/dialog_hudpanel_physics.qh:6
msgid "Physics Panel"
#: qcsrc/menu/xonotic/dialog_hudpanel_pickup.qc:37
msgid "Icon size scale:"
-msgstr ""
+msgstr "Imaginis proportio:"
#: qcsrc/menu/xonotic/dialog_hudpanel_pickup.qh:6
msgid "Pickup Panel"
#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:23
msgid "Forced aspect:"
-msgstr ""
+msgstr "Proportio postulata:"
#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qh:6
msgid "Pressed Keys Panel"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:124
#: qcsrc/menu/xonotic/util.qc:784
msgid "Alpha:"
-msgstr ""
+msgstr "Traluciditas"
#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:30
msgid "Rotation:"
-msgstr ""
+msgstr "Rotatio:"
#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:32
msgid "Forward"
-msgstr ""
+msgstr "Directus"
#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:33
msgid "West"
#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:40
msgid "Scale:"
-msgstr ""
+msgstr "Proportio:"
#: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:44
msgid "Zoom mode:"
#: qcsrc/menu/xonotic/dialog_hudpanel_score.qc:21
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:58
msgid "Off"
-msgstr ""
+msgstr "Sine"
#: qcsrc/menu/xonotic/dialog_hudpanel_score.qc:22
msgid "And me"
-msgstr ""
+msgstr "Mecum"
#: qcsrc/menu/xonotic/dialog_hudpanel_score.qc:23
msgid "Pure"
-msgstr ""
+msgstr "Pura"
#: qcsrc/menu/xonotic/dialog_hudpanel_score.qh:6
msgid "Score Panel"
-msgstr ""
+msgstr "Rationum Tabella"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:38
msgid "StrafeHUD mode:"
-msgstr ""
+msgstr "Motionis lateralis Notarum modus:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:41
msgid "View angle centered"
-msgstr ""
+msgstr "Angulum videre centralem"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:42
msgid "Velocity angle centered"
-msgstr ""
+msgstr "Velocitatis angulum videre centralem"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:45
msgid "StrafeHUD style:"
-msgstr ""
+msgstr "Motionis lateralis Notarum facies:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:48
msgid "no styling"
-msgstr ""
+msgstr "nulla facies"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:49
msgid "progress bar"
-msgstr ""
+msgstr "linea progressus"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:50
msgid "gradient"
-msgstr ""
+msgstr "gradiens"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:53
msgid "Range:"
-msgstr ""
+msgstr "Intervallum:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:56
msgid "Demo mode"
-msgstr ""
+msgstr "Demonstrationis modus"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:60
msgid "Reset colors"
-msgstr ""
+msgstr "Colores reponere"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:64
msgid "Strafe bar:"
-msgstr ""
+msgstr "Linea motionis lateralis:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:68
msgid "Angle indicator:"
-msgstr ""
+msgstr "Angulum indicare:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:70
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:78
msgid "Neutral:"
-msgstr ""
+msgstr "Non specialem"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:72
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:80
msgid "Good:"
-msgstr ""
+msgstr "Bonum"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:74
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:82
msgid "Overturn:"
-msgstr ""
+msgstr "Ad inversionem:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:109
msgid "Switch indicator:"
-msgstr ""
+msgstr "Inversionem indicare:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:113
msgid "Best angle indicator:"
-msgstr ""
+msgstr "Angulum optimum indicare:"
#: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qh:6
msgid "StrafeHUD Panel"
-msgstr ""
+msgstr "Motionis lateralis Notarum Tabella"
#: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:17
msgid "Timer:"
-msgstr ""
+msgstr "Tempus numeratum:"
#: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:20
msgid "Show elapsed time"
-msgstr ""
+msgstr "Tempus quod transivit videre"
#: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:23
msgid "Secondary timer:"
-msgstr ""
+msgstr "Tempus secundarium:"
#: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:27
msgid "Swapped"
-msgstr ""
+msgstr "Commutata"
#: qcsrc/menu/xonotic/dialog_hudpanel_timer.qh:6
msgid "Timer Panel"
-msgstr ""
+msgstr "Temporum Tabella"
#: qcsrc/menu/xonotic/dialog_hudpanel_vote.qc:17
msgid "Alpha after voting:"
-msgstr ""
+msgstr "Traluciditas post suffragium:"
#: qcsrc/menu/xonotic/dialog_hudpanel_vote.qh:6
msgid "Vote Panel"
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:33
msgid "EF^None"
-msgstr ""
+msgstr "Nullus"
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:34
msgid "Alpha"
-msgstr ""
+msgstr "Tralucidus"
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:35
msgid "Slide"
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:36
msgid "EF^Both"
-msgstr ""
+msgstr "Ambo"
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:40
msgid "Weapon icons:"
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:60
msgid "Weapon ID scale:"
-msgstr ""
+msgstr "Proportio Nominis:"
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:66
msgid "Show Accuracy"
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:70
msgid "Ammo bar alpha:"
-msgstr ""
+msgstr "Missilium tabellae traluciditas:"
#: qcsrc/menu/xonotic/dialog_hudpanel_weapons.qc:76
msgid "Ammo bar color:"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:19
msgid "HUD skins"
-msgstr ""
+msgstr "Facies Notarum Superpositarum"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:22
#: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:179
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:25
#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc:33
msgid "Filter:"
-msgstr ""
+msgstr "Electe scribere:"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:30
#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:59
#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:49
#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc:43
msgid "Refresh"
-msgstr ""
+msgstr "Iterum scribere:"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:33
#: qcsrc/menu/xonotic/dialog_settings_user.qc:28
msgid "Set skin"
-msgstr ""
+msgstr "Faciem eligere"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:37
msgid "Save current skin"
-msgstr ""
+msgstr "Hanc faciem servare"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:46
msgid "Panel background defaults:"
-msgstr ""
+msgstr "Tabellae imago supposita ordinaria:"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:48 qcsrc/menu/xonotic/util.qc:759
msgid "Background:"
-msgstr ""
+msgstr "Imago supposita:"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:60 qcsrc/menu/xonotic/util.qc:775
msgid "Border size:"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:83 qcsrc/menu/xonotic/util.qc:801
msgid "Test team color in configure mode"
-msgstr ""
+msgstr "Manus colorem exemplarem in optionibus inspicere"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:86 qcsrc/menu/xonotic/util.qc:804
msgid "Padding:"
-msgstr ""
+msgstr "Margo:"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:93
msgid "HUD Dock:"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:148
msgid "Exit setup"
-msgstr ""
+msgstr "Finire optiones"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qh:6
msgid "Panel HUD Setup"
-msgstr ""
+msgstr "Mutare Notarum Superpositarum Tabellam"
#: qcsrc/menu/xonotic/dialog_monstertools.qc:13
msgid "Monster:"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:159
msgid "N/A (auth library missing, can't connect)"
-msgstr ""
+msgstr "N/A (sine bibliotheca auth, conectere non potest)"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:161
msgid "N/A (auth library missing)"
-msgstr ""
+msgstr "N/A (sine bibliotheca auth)"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:167
msgid "Not supported (can't connect)"
-msgstr ""
+msgstr "Non capax (conectere non potest)"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:169
msgid "Not supported (won't encrypt)"
-msgstr ""
+msgstr "Non capax (non cryptographabit)"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:173
msgid "Supported (will encrypt)"
-msgstr ""
+msgstr "Capax (cryptographabit)"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:175
msgid "Supported (won't encrypt)"
-msgstr ""
+msgstr "Capax (non cryptographabit)"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:179
msgid "Requested (will encrypt)"
-msgstr ""
+msgstr "Rogatur (cryptographabit)"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:181
msgid "Requested (won't encrypt)"
-msgstr ""
+msgstr "Rogatur (non cryptographabit)"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:185
msgid "Required (can't connect)"
-msgstr ""
+msgstr "Postulatur (conectere non potest)"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:187
msgid "Required (will encrypt)"
-msgstr ""
+msgstr "Postulatur (cryptographabit)"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:191
msgid "Use the `crypto_aeslevel` cvar to change your preferences"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:203
#: qcsrc/menu/xonotic/serverlist.qc:1059
msgid "custom stats server"
-msgstr ""
+msgstr "stat. moderatrum speciale"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:203
#: qcsrc/menu/xonotic/serverlist.qc:1059
msgid "stats disabled"
-msgstr ""
+msgstr "sine stat."
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:203
#: qcsrc/menu/xonotic/serverlist.qc:1059
msgid "stats enabled"
-msgstr ""
+msgstr "cum stat."
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:213
msgid "Status"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:91
msgid "Key:"
-msgstr ""
+msgstr "Clavis:"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:96
msgid "Stats:"
-msgstr ""
+msgstr "Stats:"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qh:6
msgid "Server Information"
-msgstr ""
+msgstr "Moderatri Notae"
#: qcsrc/menu/xonotic/dialog_multiplayer_media.qc:25
msgid "Demos"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:62
msgid "DEMO^Play"
-msgstr ""
+msgstr "Demonstrare"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:13
msgid "Playing a demo will disconnect you from the current match."
-msgstr ""
+msgstr "Si demonstrationem videre vis, hunc ludum linques."
#: 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 ""
+msgstr "Certumne est tibi ludum linquere?"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qh:6
#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qh:6
#: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:13
msgid "Timing a demo will disconnect you from the current match."
-msgstr ""
+msgstr "Si demonstrationis tempus computare vis, hunc ludum linques."
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:37
msgid "MUSICPL^Add"
-msgstr ""
+msgstr "Addere"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:40
msgid "MUSICPL^Add all"
-msgstr ""
+msgstr "Omnes addere"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:44
msgid "Set as menu track"
-msgstr ""
+msgstr "Indicis cantum eligere"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:48
msgid "Reset default menu track"
-msgstr ""
+msgstr "Indicis cantum ordinarium reponere"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:54
msgid "Playlist:"
-msgstr ""
+msgstr "Series cantuum:"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:55
msgid "Random order"
-msgstr ""
+msgstr "Ordo mixta"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:60
msgid "MUSICPL^Stop"
-msgstr ""
+msgstr "Finire"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:63
msgid "MUSICPL^Play"
-msgstr ""
+msgstr "Canere"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:66
msgid "MUSICPL^Pause"
-msgstr ""
+msgstr "Intermittere"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:69
msgid "MUSICPL^Prev"
-msgstr ""
+msgstr "Anterior"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:72
msgid "MUSICPL^Next"
-msgstr ""
+msgstr "Posterior"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:76
msgid "MUSICPL^Remove"
-msgstr ""
+msgstr "Removere"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.qc:79
msgid "MUSICPL^Remove all"
-msgstr ""
+msgstr "Omnes removere"
#: qcsrc/menu/xonotic/dialog_multiplayer_media_screenshot.qc:41
msgid "Auto screenshot scoreboard"
#: qcsrc/menu/xonotic/dialog_quit.qc:12
msgid "Are you sure you want to quit?"
-msgstr ""
+msgstr "Certumne est tibi linquere?"
#: qcsrc/menu/xonotic/dialog_quit.qh:7
msgid "Quit the game"
-msgstr ""
+msgstr "Ludum linquere"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:15
msgid "Model:"
-msgstr ""
+msgstr "Forma:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:21
msgid "Remove *"
-msgstr ""
+msgstr "* Removere"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:23
msgid "Copy *"
-msgstr ""
+msgstr "* Transcribere"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:24
msgid "Paste"
-msgstr ""
+msgstr "Hic Transcribere"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:26
msgid "Bone:"
-msgstr ""
+msgstr "Ossa:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:31
msgid "Set * as child"
-msgstr ""
+msgstr "Quasi * filius"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:32
msgid "Attach to *"
-msgstr ""
+msgstr "In * Adhaerere"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:34
msgid "Detach from *"
-msgstr ""
+msgstr "Ab * Solvere"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:37
msgid "Visual object properties for *:"
-msgstr ""
+msgstr "Proprietates Visibiles *:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:41
msgid "Set alpha:"
-msgstr ""
+msgstr "Traluciditas:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:44
msgid "Set color main:"
-msgstr ""
+msgstr "Color primarius:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:46
msgid "Set color glow:"
-msgstr ""
+msgstr "Color lucens:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:50
msgid "Set frame:"
-msgstr ""
+msgstr "Quadrum:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:54
msgid "Physical object properties for *:"
-msgstr ""
+msgstr "Proprietates physicae *:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:56
msgid "Set material:"
-msgstr ""
+msgstr "Materia:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:62
msgid "Set solidity:"
-msgstr ""
+msgstr "Soliditas:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:63
msgid "Non-solid"
-msgstr ""
+msgstr "Non solidum"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:64
msgid "Solid"
-msgstr ""
+msgstr "Solidum"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:65
msgid "Set physics:"
-msgstr ""
+msgstr "Physica:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:66
msgid "Static"
-msgstr ""
+msgstr "Stans"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:67
msgid "Movable"
-msgstr ""
+msgstr "Mobile"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:68
msgid "Physical"
-msgstr ""
+msgstr "Physica"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:70
msgid "Set scale:"
-msgstr ""
+msgstr "Proportio:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:72
msgid "Set force:"
-msgstr ""
+msgstr "Vis:"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:76
msgid "Claim *"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:81
msgid "Show help"
-msgstr ""
+msgstr "Explanationes legere"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qc:82
msgid "* is the object you are facing"
-msgstr ""
+msgstr "* est id quod ante te est"
#: qcsrc/menu/xonotic/dialog_sandboxtools.qh:6
msgid "Sandbox Tools"
-msgstr ""
+msgstr "Probationis Utensilia"
#: qcsrc/menu/xonotic/dialog_settings.qc:18
msgid "Video"
-msgstr ""
+msgstr "Imagines"
#: qcsrc/menu/xonotic/dialog_settings.qc:19
msgid "Effects"
-msgstr ""
+msgstr "Subtilitas Graphica"
#: qcsrc/menu/xonotic/dialog_settings.qc:20
msgid "Audio"
-msgstr ""
+msgstr "Soni"
#: qcsrc/menu/xonotic/dialog_settings.qc:22
msgid "Game"
-msgstr ""
+msgstr "Ludus"
#: qcsrc/menu/xonotic/dialog_settings.qc:24
msgid "User"
-msgstr ""
+msgstr "Utens"
#: qcsrc/menu/xonotic/dialog_settings.qc:25 qcsrc/menu/xonotic/keybinder.qc:121
msgid "Misc"
-msgstr ""
+msgstr "Alia"
#: qcsrc/menu/xonotic/dialog_settings.qh:8
msgid "Change the game settings"
-msgstr ""
+msgstr "Ludi optiones optare"
#: qcsrc/menu/xonotic/dialog_settings_audio.qc:30
msgid "Master:"
#: qcsrc/menu/xonotic/dialog_settings_audio.qc:163
msgid "Focus sounds"
-msgstr ""
+msgstr "Attentionis soni"
#: qcsrc/menu/xonotic/dialog_settings_audio.qc:164
msgid "Play sounds when hovering over menu items too"
-msgstr ""
+msgstr "Quidam sonus fit cum indicem transis"
#: qcsrc/menu/xonotic/dialog_settings_audio.qc:168
msgid "Time announcer:"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:115
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:120
msgid "Avoid lossy texture compression"
-msgstr ""
+msgstr "Cum texturae memoria computatralis breviatur, subtilitas servanda est"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:129
msgid "Disable sky for performance and visibility"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:142
msgid "Gloss"
-msgstr ""
+msgstr "Superficies illustres"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:143
msgid "Enable the use of glossmaps on textures supporting it"
-msgstr ""
+msgstr "Illustrationum tabulis utitur in texturis quae eas contineant"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:146
msgid "Offset mapping"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:149
msgid "Relief mapping"
-msgstr ""
+msgstr "Anaglyptorum tabulae"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:150
msgid ""
"Higher quality offset mapping, which also has a huge impact on performance"
msgstr ""
+"Subtiliorum tuberum tabulae, et si eis utitur, computatrum minus velox erit"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:153
msgid "Reflections:"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:164
msgid "Decals"
-msgstr ""
+msgstr "Sigilla"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:165
msgid "Enable decals (bullet holes and blood)"
-msgstr ""
+msgstr "Sigilla pinguntur (picturae missilium perforantium sanguinumque)"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:166
msgid "Decals on models"
-msgstr ""
+msgstr "Sigilla in formis"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:170
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:251
msgid "Distance:"
-msgstr ""
+msgstr "Distantia:"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:173
msgid "Decals further away than this will not be drawn"
-msgstr ""
+msgstr "Sigilla quae distant plus quam hanc mensuram non pinguntur"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:177
msgid "Time:"
-msgstr ""
+msgstr "Tempus:"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:180
msgid "Time in seconds before decals fade away"
-msgstr ""
+msgstr "Numerus secundorum, post quae evanescunt sigilla"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:184
msgid "Damage effects:"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:218
msgid "Corona fading using occlusion queries"
-msgstr ""
+msgstr "Luces coronales evanescunt secundum inquisitionem occludentium"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:222
msgid "Bloom"
-msgstr ""
+msgstr "Illuminatio finitima"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:223
msgid ""
"Enable bloom effect, which brightens the neighboring pixels of very bright "
"pixels. Has a big impact on performance."
msgstr ""
+"Illuminantur laterculi qui adiacent ad alios laterculos iam "
+"illuminatissimos. Itaque computatrum minus velox erit."
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:224
msgid "Extra postprocessing effects"
-msgstr ""
+msgstr "Plura artificia"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:225
msgid ""
"Enables special postprocessing effects for when damaged or under water or "
"using a powerup"
msgstr ""
+"Plura artificia efficiuntur, e.g., picturae vulnerationis vel summersionis "
+"vel potestatis"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:230
msgid "Motion blur strength - 0.4 recommended"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:237
msgid "Particles"
-msgstr ""
+msgstr "Particulae"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:238
msgid "Spawnpoint effects"
-msgstr ""
+msgstr "Picturae parvae in loco ubi nascitur"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:239
msgid "Particles effects at all spawn points and whenever a player spawns"
msgstr ""
+"Particulae pinguntur in loco ubi nascitur et in ludentibus qui nascuntur"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:244
msgid "Quality:"
-msgstr ""
+msgstr "Subtilitas:"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:247
#: qcsrc/menu/xonotic/slider_particles.qc:13
"Multiplier for amount of particles. Less means less particles, which in turn "
"gives for better performance"
msgstr ""
+"Cum quo multiplicare numerum particularum. Si multiplicandus parvus est, "
+"erunt paucae particulae, atque computatrum velocius erit"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:254
msgid "Particles further away than this will not be drawn"
-msgstr ""
+msgstr "Particulae quae distant plus quam hanc mensuram non pinguntur"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:31
msgid "No crosshair"
-msgstr ""
+msgstr "Sine reticulo"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:33
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:62
msgid "Per weapon"
-msgstr ""
+msgstr "Armorum singula"
#: 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 ""
+"Arma singula reticula distincta habent, quod prudens est si arma tua non "
+"vides"
#: 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 ""
+msgstr "Magnitudo:"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:64
msgid "By health"
-msgstr ""
+msgstr "Secundum sanitatem"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:76
msgid "Use rings to indicate weapon status"
-msgstr ""
+msgstr "Anelli condiciones armorum indicant"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:93
msgid "Enable center crosshair dot"
-msgstr ""
+msgstr "Reticuli punctum medium videre"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:111
msgid "Use normal crosshair color"
-msgstr ""
+msgstr "Reticuli color ordinarius"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:122
msgid "Smooth effects of crosshairs"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:125
msgid "Perform hit tests for the crosshair"
-msgstr ""
+msgstr "Indicare in reticulo cum arma sunt examussim ad hostem"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:129
msgid "Blur if obstructed by an obstacle"
-msgstr ""
+msgstr "Offuscare cum arma obstantur"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:133
msgid "Blur if obstructed by a teammate"
-msgstr ""
+msgstr "Offuscare cum arma sunt ad collegam"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:137
msgid "Shrink if obstructed by a teammate"
-msgstr ""
+msgstr "Minuere cum arma sunt ad collegam"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:140
msgid "Animate crosshair when hitting an enemy"
-msgstr ""
+msgstr "Movere reticulum cum hostis vulneratur"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:143
msgid "Animate crosshair when picking up an item"
-msgstr ""
+msgstr "Movere reticulum cum res colligitur"
#: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qh:7
msgid "Crosshair"
-msgstr ""
+msgstr "Reticulum"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:43
msgid "Scoreboard"
-msgstr ""
+msgstr "Rationarium"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:48
msgid "Fading speed:"
-msgstr ""
+msgstr "Quam celeriter evanescit:"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:51
msgid "Enable rows / columns highlighting"
-msgstr ""
+msgstr "Versus/columnas illuminatas videre"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:53
msgid "Show accuracy underneath scoreboard"
-msgstr ""
+msgstr "Accuratiam sub rationario videre"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:55
msgid "Show team sizes:"
-msgstr ""
+msgstr "Manuum magnitudines videre:"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:56
msgid ""
"Team size position: Off=do not show; Left=on the left side of the scoreboard "
"and move team scores to the right; Right=on the right of the scoreboard"
msgstr ""
+"Ubi manuum magnitudines scribantur: Sine=non scribuntur; Sinistrum=in latere "
+"sinistro rationarii, et manuum rationes in dextro; Dextrum=in latere dextro "
+"rationarii"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:64
msgid "Waypoints"
-msgstr ""
+msgstr "Loci indicati"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:66
msgid "Display waypoint markers for objectives on the map"
-msgstr ""
+msgstr "Locos indicatos in metis harenae videre"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:67
msgid "Show various gametype specific waypoints"
-msgstr ""
+msgstr "Locos indicatos proprios modi videre"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:73
msgid "Control transparency of the waypoints"
-msgstr ""
+msgstr "Locorum indicatorum traluciditas"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:77
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:130
msgid "Font size:"
-msgstr ""
+msgstr "Litterae magnitudo:"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:83
msgid "Edge offset:"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:91
msgid "Fade when near the crosshair"
-msgstr ""
+msgstr "Evanescit si circum reticulum"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:95
msgid "Display names instead of icons"
-msgstr ""
+msgstr "Nomina non imagines videre"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:100
msgid "Damage"
-msgstr ""
+msgstr "Vulnus"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:102
msgid "Overlay:"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:118
msgid "Player Names"
-msgstr ""
+msgstr "Ludentium Nomina"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:120
msgid "Show names above players"
-msgstr ""
+msgstr "Nomina super ludentes videre"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:136
msgid "Max distance:"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:146
#: qcsrc/menu/xonotic/keybinder.qc:115
msgid "Teamplay"
-msgstr ""
+msgstr "Manus ludus"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:154
msgid "Only when near crosshair"
-msgstr ""
+msgstr "Prope reticulum modo"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:158
msgid "Display health and armor"
-msgstr ""
+msgstr "Sanitatem armaturamque videre"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:163
msgid "Speed unit:"
-msgstr ""
+msgstr "Velocitatis unitas:"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:172
msgid "Damage overlay:"
-msgstr ""
+msgstr "Vulnera superposita:"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:175
msgid "Dynamic HUD"
-msgstr ""
+msgstr "Mobiles Notae Superpositae"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:176
msgid "HUD moves around following player's movement"
-msgstr ""
+msgstr "Notae Superpositae moventur quasi cum ludente ambulet"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:178
msgid "Shake the HUD when hurt"
-msgstr ""
+msgstr "Notae Superpositae vibrantur cum vulneraris"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:182
#: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qh:6
msgid "Enter HUD editor"
-msgstr ""
+msgstr "Notarum Superpositarum optiones videre"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qh:7
msgid "HUD"
-msgstr ""
+msgstr "Notae Superpositae"
#: 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 ""
+"Si Notarum Superpositarum optiones videre vis, necesse est ludus incipi."
#: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qc:23
msgid "Do you wish to start a local game to set up the HUD?"
-msgstr ""
+msgstr "Visne incipi ludum localem ut videas Notarum Superpositarum optiones?"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:24
msgid "Frag Information"
-msgstr ""
+msgstr "Caedium Notae"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:26
msgid "Display information about killing sprees"
-msgstr ""
+msgstr "De caedium seriebus notas videre"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:29
msgid "Only display sprees if they are achievements"
-msgstr ""
+msgstr "Caedium series videre modo si insignes sunt"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:34
msgid "Show spree information in centerprints"
-msgstr ""
+msgstr "Caedium series scriptae in media parte"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:38
msgid "Show spree information in death messages"
-msgstr ""
+msgstr "Caedium series scriptae in mortuorum notis"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:43
msgid "Sprees in info messages:"
-msgstr ""
+msgstr "Caedium series in condicionum notis:"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:46
msgid "SPREES^Disabled"
-msgstr ""
+msgstr "Sine"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:47
msgid "Target"
-msgstr ""
+msgstr "Vulnerati"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:48
msgid "Attacker"
-msgstr ""
+msgstr "Vulnerans"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:49
msgid "SPREES^Both"
-msgstr ""
+msgstr "Ambo"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:55
msgid "Print on a seperate line"
-msgstr ""
+msgstr "In alio versu scribere"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:58
msgid "Add extra frag information to centerprint when available"
-msgstr ""
+msgstr "Plures notas de caedibus in scripto medio scribere si dicuntur"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:62
msgid "Add frag location to death messages when available"
-msgstr ""
+msgstr "Locos caedium in mortuorum notis scribere si dicuntur"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:65
msgid "Gamemode Settings"
-msgstr ""
+msgstr "Ludi Modi Optiones"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:67
msgid "Display capture times in Capture The Flag"
-msgstr ""
+msgstr "In Vexilli Captu tempora captuum videre"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:71
msgid "Display name of flag stealer in Capture The Flag"
-msgstr ""
+msgstr "In Vexilli Captu nomen eius qui vexillum rapuit videre"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:76
#: qcsrc/menu/xonotic/dialog_settings_input.qc:92
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:78
msgid "Display console messages in the top left corner"
-msgstr ""
+msgstr "Iussorum loci notas videre in angulo supero sinistro"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:80
msgid "Display all info messages in the chatbox"
-msgstr ""
+msgstr "Omnes condicionum notas in locutorii loco videre"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:82
msgid "Display player statuses in the chatbox"
-msgstr ""
+msgstr "Ludentium condiciones in locutorii loco videre"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:86
msgid "Powerup notifications"
-msgstr ""
+msgstr "Potestatium nuntia"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:89
msgid "Weapon centerprint notifications"
-msgstr ""
+msgstr "Armorum nuntia in scripto medio"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:92
msgid "Weapon info message notifications"
-msgstr ""
+msgstr "Armorum nuntia in condicionum notis"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:96
msgid "Announcers"
-msgstr ""
+msgstr "Nuntiatores"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:98
msgid "Respawn countdown sounds"
-msgstr ""
+msgstr "Soni numerationis regrendientis cum renascitur"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:101
msgid "Killstreak sounds"
-msgstr ""
+msgstr "Soni seriei caedium"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:104
msgid "Achievement sounds"
-msgstr ""
+msgstr "Rerum insignium soni"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qh:7
msgid "Messages"
-msgstr ""
+msgstr "Notae"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:30
msgid "Items"
-msgstr ""
+msgstr "Utilia"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:32
msgid "Use simple 2D images instead of item models"
-msgstr ""
+msgstr "Imagines planas non formas solidas videre"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:34
msgid "Unavailable alpha:"
-msgstr ""
+msgstr "Traluciditas si absens:"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:37
msgid "Unavailable color:"
-msgstr ""
+msgstr "Color si absens:"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:39
msgid "GHOITEMS^Black"
-msgstr ""
+msgstr "Niger"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:40
msgid "GHOITEMS^Dark"
-msgstr ""
+msgstr "Fuscus"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:41
msgid "GHOITEMS^Tinted"
-msgstr ""
+msgstr "Tinctus"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:42
msgid "GHOITEMS^Normal"
-msgstr ""
+msgstr "Ordinarius"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:43
msgid "GHOITEMS^Blue"
-msgstr ""
+msgstr "Caeruleus"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:49
#: qcsrc/menu/xonotic/serverlist.qc:758
msgid "Players"
-msgstr ""
+msgstr "Lusores"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:51
msgid "Force player models to mine"
-msgstr ""
+msgstr "Ludentium formae aequales meae"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:53
msgid "Force player colors to mine"
-msgstr ""
+msgstr "Ludentium colores aequales meo"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:55
msgid ""
"Warning: if enabled in team games your team's color may be the same as the "
"enemy team"
msgstr ""
+"NB: si in manus ludis hoc optas, forte non distinguuntur coloribus manus tua "
+"et manus hostium"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:57
msgid "Except in team games"
-msgstr ""
+msgstr "Sed non manus ludis"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:58
msgid "Only in Duel"
-msgstr ""
+msgstr "Duello modo"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:59
msgid "Only in team games"
-msgstr ""
+msgstr "Manus ludis modo"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:60
msgid "In team games and Duel"
-msgstr ""
+msgstr "Manus ludis et duello"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:64
msgid "Body fading:"
-msgstr ""
+msgstr "Evanescunt corpora:"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:67
msgid "Gibs:"
-msgstr ""
+msgstr "Intestina:"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:69
msgid "GIBS^None"
-msgstr ""
+msgstr "Nulla"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:70
msgid "GIBS^Few"
-msgstr ""
+msgstr "Pauca"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:71
msgid "GIBS^Many"
-msgstr ""
+msgstr "Multa"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qc:72
msgid "GIBS^Lots"
-msgstr ""
+msgstr "Plures"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qh:7
msgid "Models"
-msgstr ""
+msgstr "Formae"
#: qcsrc/menu/xonotic/dialog_settings_game_model.qh:8
msgid "Customize how players and items are displayed in game"
-msgstr ""
+msgstr "Eligere formas imaginesque quas ludentes et utilia habeant"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:26
msgid "1st person perspective"
-msgstr ""
+msgstr "1ae personae visio"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:29
msgid "Slide to third person upon death"
-msgstr ""
+msgstr "Ad 3ae personae visionem labitur cum moreris"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:33
msgid "Smooth the view when landing from a jump"
-msgstr ""
+msgstr "Mollitur visio cum solum tangis"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:37
msgid "Smooth the view while crouching"
-msgstr ""
+msgstr "Mollitur visio cum subsidis"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:41
msgid "View waving while idle"
-msgstr ""
+msgstr "Oscillatur visio cum quiescis"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:45
msgid "View bobbing while walking around"
-msgstr ""
+msgstr "Undat visio cum ambulas"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:50
msgid "3rd person perspective"
-msgstr ""
+msgstr "3ae personae visio"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:53
msgid "Back distance"
-msgstr ""
+msgstr "Distantia ad dorsum"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:59
msgid "Up distance"
-msgstr ""
+msgstr "Distantia superior"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:65
msgid "Allow passing through walls while spectating"
-msgstr ""
+msgstr "Parietes transis dum spectas"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:69
msgid "Field of view:"
-msgstr ""
+msgstr "Visionis intervallum:"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:71
msgid "Field of vision in degrees"
-msgstr ""
+msgstr "Quantum intervallum angulare visibile"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:75
msgid "ZOOM^Zoom factor:"
-msgstr ""
+msgstr "Amplificationis multiplicandus:"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:77
msgid "How big the zoom factor is when the zoom button is pressed"
-msgstr ""
+msgstr "Cum quo numero multiplicare amplificationem cum clavis premitur"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:80
msgid "ZOOM^Zoom speed:"
-msgstr ""
+msgstr "Amplificationis celeritas:"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:82
msgid "How fast the view will be zoomed, disable to zoom instantly"
msgstr ""
+"Quam celeriter fiat amplificatio, nullam elige ut amplificatio statim fiat"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:91
msgid "ZOOM^Instant"
-msgstr ""
+msgstr "Statim"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:95
msgid "ZOOM^Zoom sensitivity:"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:112
msgid "Display reticle 2D overlay while zooming"
-msgstr ""
+msgstr "Reticulum superpositum videre cum amplificatur"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:115
msgid "Release zoom when you die or respawn"
-msgstr ""
+msgstr "Amplificationem removere cum moreris vel renasceris"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:119
msgid "Release zoom when you switch weapons"
-msgstr ""
+msgstr "Amplificationem removere cum arma permutas"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qh:7
#: qcsrc/menu/xonotic/keybinder.qc:86
msgid "View"
-msgstr ""
+msgstr "Visio"
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:33
msgid "Weapon Priority List (* = mutator weapon)"
-msgstr ""
+msgstr "Ordo armorum Praecedentia (* = mutationis arma)"
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:39
msgid "Up"
-msgstr ""
+msgstr "Sursum"
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:43
msgid "Down"
-msgstr ""
+msgstr "Deorsum"
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:49
msgid "Use priority list for weapon cycling"
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:63
msgid "Draw 1st person weapon model"
-msgstr ""
+msgstr "1ae persona armorum formam pingere"
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:64
msgid "Draw the weapon model"
-msgstr ""
+msgstr "Armorum formam pingere"
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:68
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:71
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:74
msgid "Position of the weapon model; requires reconnect"
-msgstr ""
+msgstr "Latus in quo armorum forma sit; conectere iterum necesse"
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:77
msgid "Weapon model opacity:"
-msgstr ""
+msgstr "Armorum formae traluciditas:"
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:91
msgid "Gun model swaying"
-msgstr ""
+msgstr "Armorum forma pendula"
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qc:96
msgid "Gun model bobbing"
-msgstr ""
+msgstr "Armorum forma undans"
#: qcsrc/menu/xonotic/dialog_settings_game_weapons.qh:7
#: qcsrc/menu/xonotic/keybinder.qc:54
msgid "Weapons"
-msgstr ""
+msgstr "Arma"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:34
msgid "Key Bindings"
-msgstr ""
+msgstr "Claves electae"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:38
msgid "Change key..."
-msgstr ""
+msgstr "Alia clavis..."
#: qcsrc/menu/xonotic/dialog_settings_input.qc:42
msgid "Edit..."
-msgstr ""
+msgstr "Scribere..."
#: qcsrc/menu/xonotic/dialog_settings_input.qc:48
msgid "Clear"
-msgstr ""
+msgstr "Oblivisci"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:53
msgid "Reset all"
-msgstr ""
+msgstr "Omnes reponere"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:58
msgid "Mouse"
-msgstr ""
+msgstr "Mus"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:60
msgid "Sensitivity:"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:97
msgid "Automatically repeat jumping if holding jump"
-msgstr ""
+msgstr "Saltus iterare cum clavis 'salire' pressa tenetur"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:100
msgid "Jetpack on jump:"
-msgstr ""
+msgstr "Sarcina volatilis in 'salire'"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:102
msgid "JPJUMP^Disabled"
-msgstr ""
+msgstr "Sine"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:103
msgid "Air only"
-msgstr ""
+msgstr "In aere modo"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:104
msgid "JPJUMP^All"
-msgstr ""
+msgstr "Semper"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:110
#: qcsrc/menu/xonotic/dialog_settings_input.qc:115
#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:31
msgid "Command when pressed:"
-msgstr ""
+msgstr "Iussum cum premitur:"
#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:34
msgid "Command when released:"
-msgstr ""
+msgstr "Iussum cum solvitur:"
#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:40
msgid "Cancel"
#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qh:7
msgid "User defined key bind"
-msgstr ""
+msgstr "Clavis pro creato ab utente"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:12
#, c-format
msgid "%d fps"
-msgstr ""
+msgstr "%d qis"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:13
#, c-format
msgid "%d KiB/s"
-msgstr ""
+msgstr "%d KiB/s"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:14
#, c-format
msgid "%d MiB/s"
-msgstr ""
+msgstr "%d MiB/s"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:31
msgid "Network"
-msgstr ""
+msgstr "Interrete"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:33
msgid "Show netgraph"
-msgstr ""
+msgstr "Retis graphicum videre"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:34
msgid "Show a graph of packet sizes and other information"
-msgstr ""
+msgstr "In graphico magnitudines litterarum interretialium scribere et alia"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:36
msgid "Packet loss compensation"
-msgstr ""
+msgstr "Compensare perditas litteras interretiales"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:37
msgid "Each packet includes a copy of the previous message"
-msgstr ""
+msgstr "Quaeque litterae transcribunt litteras anteriores quoque"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:39
msgid "Movement prediction error compensation"
-msgstr ""
+msgstr "Compensare motiones vitiose praedictas"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:43
msgid "Use encryption (AES) when available"
-msgstr ""
+msgstr "Cryptographia (AES) uti si accipitur"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:46
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:68
msgid "Bandwidth limit:"
-msgstr ""
+msgstr "Nexionis interretialis velocitas maxima"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:48
msgid "Specify your network speed"
-msgstr ""
+msgstr "Scribe velocitatem nexionis tuae"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:49
msgid "Slow ADSL"
-msgstr ""
+msgstr "ADSL lenta"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:50
msgid "Fast ADSL"
-msgstr ""
+msgstr "ADSL velox"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:51
msgid "Broadband"
-msgstr ""
+msgstr "Taenia lata"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:57
msgid "Local latency:"
-msgstr ""
+msgstr "Mora nexionis localis"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:62
msgid "HTTP downloads"
-msgstr ""
+msgstr "Acceptiones interretiales per HTTP"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:64
msgid "Simultaneous:"
-msgstr ""
+msgstr "Simul:"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:66
msgid "Maximum number of concurrent HTTP downloads"
-msgstr ""
+msgstr "Numerus maximus acceptionum coniunctarum per HTTP"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:82
msgid "Framerate"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:85
msgid "Show your rendered frames per second"
-msgstr ""
+msgstr "Numerum tuum quadrorum pictorum in secundum videre"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:87
msgid "Maximum:"
-msgstr ""
+msgstr "Maximus"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:96
msgid "MAXFPS^Unlimited"
-msgstr ""
+msgstr "Infinitus"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:99
msgid "Target:"
-msgstr ""
+msgstr "Quaesitus:"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:101
msgid "TRGT^Disabled"
-msgstr ""
+msgstr "Sine"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:112
msgid "Idle limit:"
-msgstr ""
+msgstr "Numerus si otiosus"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:118
msgid "IDLFPS^Unlimited"
-msgstr ""
+msgstr "Infinitus"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:124
msgid "Menu tooltips:"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:132
msgid "Show current date and time"
-msgstr ""
+msgstr "Diem et horam videre"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:133
msgid "Show current date and time of day, useful on screenshots"
-msgstr ""
+msgstr "Diem et horam videre, id quod est prudens in photographiis servatis"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:136
msgid "Enable developer mode"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:141
msgid "Advanced settings..."
-msgstr ""
+msgstr "Optiones involutae..."
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:142
msgid "Advanced settings where you can tweak every single variable of the game"
#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:45
msgid "Setting:"
-msgstr ""
+msgstr "Optio:"
#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:49
msgid "Type:"
#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qc:70
msgid "Description:"
-msgstr ""
+msgstr "Descriptio:"
#: qcsrc/menu/xonotic/dialog_settings_misc_cvars.qh:7
msgid "Advanced settings"
-msgstr ""
+msgstr "Optiones involutae"
#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:11
msgid "Are you sure you want to reset all settings?"
#: qcsrc/menu/xonotic/dialog_settings_user.qc:23
msgid "Menu Skins"
-msgstr ""
+msgstr "Facies Indicis"
#: qcsrc/menu/xonotic/dialog_settings_user.qc:62
msgid "Text Language"
-msgstr ""
+msgstr "Scripti Lingua"
#: qcsrc/menu/xonotic/dialog_settings_user.qc:67
msgid "Set language"
-msgstr ""
+msgstr "Linguam eligere"
#: qcsrc/menu/xonotic/dialog_settings_user.qc:72
msgid "Disable gore effects and harsh language"
-msgstr ""
+msgstr "Sanguinis imagines et verba indecentia omittere"
#: qcsrc/menu/xonotic/dialog_settings_user.qc:73
msgid "Replace blood and gibs with content that does not have any gore effects"
-msgstr ""
+msgstr "Nec sanguinem nec intestina pingere, sed alias imagines decoras"
#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:10
msgid "While connected language changes will be applied only to the menu,"
-msgstr ""
+msgstr "Dum conexio tenetur, in hanc linguam vertuntur indicum scripta solum,"
#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:12
msgid "full language changes will take effect starting from the next game"
-msgstr ""
+msgstr "et alia scripta vertentur cum ludus posterior incipietur"
#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:16
msgid "Disconnect now"
-msgstr ""
+msgstr "Dinectere nunc"
#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qc:17
msgid "Switch language"
-msgstr ""
+msgstr "Linguam commutare"
#: qcsrc/menu/xonotic/dialog_settings_user_languagewarning.qh:6
msgid "Warning"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:37
msgid "Font/UI size:"
-msgstr ""
+msgstr "Magnitudo Litterarum/Imaginum:"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:39
msgid "SZ^Unreadable"
-msgstr ""
+msgstr "Illegibilis"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:40
msgid "SZ^Tiny"
-msgstr ""
+msgstr "Minima"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:41
msgid "SZ^Little"
-msgstr ""
+msgstr "Parvula"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:42
msgid "SZ^Small"
-msgstr ""
+msgstr "Parva"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:43
msgid "SZ^Medium"
-msgstr ""
+msgstr "Media"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:44
msgid "SZ^Large"
-msgstr ""
+msgstr "Magna"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:45
msgid "SZ^Huge"
-msgstr ""
+msgstr "Immensa"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:46
msgid "SZ^Gigantic"
-msgstr ""
+msgstr "Gigas"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:47
msgid "SZ^Colossal"
-msgstr ""
+msgstr "Colossica"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:51
msgid "Color depth:"
-msgstr ""
+msgstr "Colorum subtilitas:"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:53
msgid "How many bits per pixel (BPP) to render at, 32 is recommended"
msgstr ""
+"In quot digitis binariis (bit) colores singulorum laterculorum scribere, 32 "
+"suadetur"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:54
msgid "16bit"
-msgstr ""
+msgstr "16bit"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:55
msgid "32bit"
-msgstr ""
+msgstr "32bit"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:59
msgid "Full screen"
-msgstr ""
+msgstr "Totum quadrum"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:61
msgid "Vertical Synchronization"
-msgstr ""
+msgstr "Lineas iacentes pingere Synchrone"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:62
msgid ""
"Vsync prevents tearing, but increases latency and caps your fps at the "
"screen refresh rate"
msgstr ""
+"Si lineae iacentes pinguntur synchrone, imagines scissas non videbis, sed "
+"itaque imagines tardabuntur et numerus imaginum in secundum non maior erit "
+"quam numerum integrationum in quadro"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:64
msgid "High-quality frame buffer"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:72
msgid "Antialiasing:"
-msgstr ""
+msgstr "Imago polita:"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:75
msgid ""
"Enable antialiasing, which smooths the edges of 3D geometry. Note that it "
"might decrease performance by quite a lot"
msgstr ""
+"Polire margines rerum tridimensionalium. NB: computatrum minus velox esse "
+"poterit"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:76
msgid "AA^Disabled"
-msgstr ""
+msgstr "Non polire"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:77
#: qcsrc/menu/xonotic/dialog_settings_video.qc:94
msgid "2x"
-msgstr ""
+msgstr "2x"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:78
#: qcsrc/menu/xonotic/dialog_settings_video.qc:95
msgid "4x"
-msgstr ""
+msgstr "4x"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:85
msgid "Resolution scaling:"
#: qcsrc/menu/xonotic/dialog_singleplayer.qc:149
msgid "Instant action! (random map with bots)"
-msgstr ""
+msgstr "Actio fortuita! (fortuita harena cum automatis)"
#: qcsrc/menu/xonotic/dialog_singleplayer.qc:169
msgid "Campaign Difficulty:"
-msgstr ""
+msgstr "Expeditio Difficultate:"
#: qcsrc/menu/xonotic/dialog_singleplayer.qc:170
msgid "CSKL^Easy"
-msgstr ""
+msgstr "Facili"
#: qcsrc/menu/xonotic/dialog_singleplayer.qc:171
msgid "CSKL^Medium"
-msgstr ""
+msgstr "Media"
#: qcsrc/menu/xonotic/dialog_singleplayer.qc:172
msgid "CSKL^Hard"
-msgstr ""
+msgstr "Difficili"
#: qcsrc/menu/xonotic/dialog_singleplayer.qc:177
msgid "Play campaign!"
-msgstr ""
+msgstr "Expeditionem ludere!"
#: qcsrc/menu/xonotic/dialog_singleplayer.qh:6
msgid "Singleplayer"
-msgstr ""
+msgstr "Unus ludens"
#: qcsrc/menu/xonotic/dialog_singleplayer.qh:7
msgid "Play the singleplayer campaign or instant action matches against bots"
msgstr ""
+"Ludere expeditionem unius ludentis vel actionem fortuitam cum automatis"
#: qcsrc/menu/xonotic/dialog_singleplayer_winner.qh:7
msgid "Winner"
-msgstr ""
+msgstr "Victor"
#: qcsrc/menu/xonotic/dialog_teamselect.qc:32
msgid "join 'best' team (auto-select)"
-msgstr ""
+msgstr "in manum 'optimam' (computatro eligitur)"
#: qcsrc/menu/xonotic/dialog_teamselect.qc:33
msgid "Autoselect team (recommended)"
-msgstr ""
+msgstr "Computatro manus eligi (quod suadetur)"
#: qcsrc/menu/xonotic/dialog_teamselect.qc:37
msgid "red"
#: qcsrc/menu/xonotic/gametypelist.qc:88
msgid "teamplay"
-msgstr ""
+msgstr "manus ludus"
#: qcsrc/menu/xonotic/gametypelist.qc:90
msgid "free for all"
-msgstr ""
+msgstr "omnes contra omnes"
#: qcsrc/menu/xonotic/keybinder.qc:38
msgid "Moving"
-msgstr ""
+msgstr "Motio"
#: qcsrc/menu/xonotic/keybinder.qc:39
msgid "move forwards"
-msgstr ""
+msgstr "progredi"
#: qcsrc/menu/xonotic/keybinder.qc:40
msgid "move backwards"
-msgstr ""
+msgstr "regredi"
#: qcsrc/menu/xonotic/keybinder.qc:41
msgid "strafe left"
-msgstr ""
+msgstr "sinistrorsum gradi"
#: qcsrc/menu/xonotic/keybinder.qc:42
msgid "strafe right"
-msgstr ""
+msgstr "dextrorsum gradi"
#: qcsrc/menu/xonotic/keybinder.qc:43
msgid "jump / swim"
#: qcsrc/menu/xonotic/keybinder.qc:59
msgid "reload"
-msgstr ""
+msgstr "replere"
#: qcsrc/menu/xonotic/keybinder.qc:87
msgid "hold zoom"
-msgstr ""
+msgstr "amplificare"
#: qcsrc/menu/xonotic/keybinder.qc:88
msgid "toggle zoom"
-msgstr ""
+msgstr "alternare amplificationes"
#: qcsrc/menu/xonotic/keybinder.qc:89
msgid "show scores"
-msgstr ""
+msgstr "rationarium videre"
#: qcsrc/menu/xonotic/keybinder.qc:90
msgid "screen shot"
-msgstr ""
+msgstr "imaginem servare"
#: qcsrc/menu/xonotic/keybinder.qc:91
msgid "maximize radar"
-msgstr ""
+msgstr "detectrum amplificare"
#: qcsrc/menu/xonotic/keybinder.qc:92
msgid "3rd person view"
-msgstr ""
+msgstr "3ae personae visio"
#: qcsrc/menu/xonotic/keybinder.qc:93
msgid "enter spectator mode"
-msgstr ""
+msgstr "spectatoris modus"
#: qcsrc/menu/xonotic/keybinder.qc:96
msgid "Communication"
-msgstr ""
+msgstr "Locutio"
#: qcsrc/menu/xonotic/keybinder.qc:97
msgid "public chat"
#: qcsrc/menu/xonotic/keybinder.qc:99
msgid "show chat history"
-msgstr ""
+msgstr "prius locuta videre"
#: qcsrc/menu/xonotic/keybinder.qc:100
msgid "vote YES"
-msgstr ""
+msgstr "approbare suffragio"
#: qcsrc/menu/xonotic/keybinder.qc:101
msgid "vote NO"
-msgstr ""
+msgstr "reprobare suffragio"
#: qcsrc/menu/xonotic/keybinder.qc:105
msgid "Client"
-msgstr ""
+msgstr "Cliens"
#: qcsrc/menu/xonotic/keybinder.qc:109 qcsrc/menu/xonotic/keybinder.qc:111
msgid "enter console"
#: qcsrc/menu/xonotic/keybinder.qc:116
msgid "auto-join team"
-msgstr ""
+msgstr "computatro eligi manus"
#: qcsrc/menu/xonotic/keybinder.qc:122
msgid "drop key/flag, exit vehicle"
#: qcsrc/menu/xonotic/keybinder.qc:129
msgid "User defined"
-msgstr ""
+msgstr "Creata ab utente"
#: qcsrc/menu/xonotic/keybinder.qc:136
msgid "Development"
#: qcsrc/menu/xonotic/keybinder.qc:137
msgid "sandbox menu"
-msgstr ""
+msgstr "probationum index"
#: qcsrc/menu/xonotic/keybinder.qc:138
msgid "drag object (sandbox)"
-msgstr ""
+msgstr "rem trahere (probatione)"
#: qcsrc/menu/xonotic/keybinder.qc:139
msgid "waypoint editor menu"
-msgstr ""
+msgstr "locorum indicandorum index"
#: qcsrc/menu/xonotic/leavematchbutton.qc:12
msgid "Leave current match"
#: qcsrc/menu/xonotic/leavematchbutton.qc:14
msgid "Stop demo"
-msgstr ""
+msgstr "Finire demonstrationem"
#: qcsrc/menu/xonotic/leavematchbutton.qc:16
msgid "Leave campaign"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
"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%10>=2 && n%10<=4) && (n"
-"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n"
-"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && "
+"(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && "
+"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: qcsrc/client/hud/hud_config.qc:80
#, c-format
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 zdobył ^TC^TTĄ^BG flagę w ^F1%s^BG sekund, pobiwszy rekord ^BG%s^BG "
"^F2%s^BG sekund"
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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"
#, c-format
msgid "^BG%s^K1 could not remember where they put their Electro orb%s%s"
msgstr ""
-"^BG%s^K1 não conseguiu lembrar-se onde tinha colocado a sua esfera Elétrica%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:477
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/menu/xonotic/dialog_settings_misc_reset.qc:13
msgid "This will create a backup config in your data directory"
msgstr ""
-"Isto irá criar uma cópia da tua configuração na seguinte pasta: C:\\Users"
-"\\[utilizador]\\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:23
msgid "Menu Skins"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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"
#, 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 de "
+"Metralhadora%s%s"
#: qcsrc/common/notifications/all.inc:344
#, c-format
#, 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 quebrou o recorde %s%s^BG de %s^BG e substituiu seu recorde com "
+"%s%s %s"
#: qcsrc/common/notifications/all.inc:437
#, c-format
#, 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 se lembrar onde tinha colocado a sua esfera de "
+"Electro%s%s"
#: qcsrc/common/notifications/all.inc:477
#, c-format
msgid ""
"^BG%s%s^K1 was riddled full of holes by ^BG%s^K1's Overkill Machine Gun%s%s"
msgstr ""
-"^BG%s%s^K1 ficou cheio de buracos por causa da Metralhadora Suprema de ^BG"
-"%s^K1%s%s"
+"^BG%s%s^K1 ficou cheio de buracos por causa da Metralhadora Suprema de "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:501
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
"^BG%s%s^K1 foi serrado ao meio pelo Lança-motosserras Supremo de ^BG%s^K1%s%s"
#: 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"
+"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:23
msgid "Menu Skins"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 a capturat steagul ^TC^TT^BG în ^F1%s^BG secunde, spărgând recordul "
"lui ^BG%s^BG de ^F2%s^BG secunde"
msgid ""
"^BG%s^K1 decided to take a look at the results of their napalm explosion%s%s"
msgstr ""
-"^BG%s^K1 a decis să simtă pe pielea sa rezultatul propriei explozii cu napalm"
-"%s%s"
+"^BG%s^K1 a decis să simtă pe pielea sa rezultatul propriei explozii cu "
+"napalm%s%s"
#: qcsrc/common/notifications/all.inc:326
#, 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 a murit din cauza virtuozității lui ^BG%s^K1's pe @!#%%'n acordeon"
-"%s%s"
+"^BG%s%s^K1 a murit din cauza virtuozității lui ^BG%s^K1's pe @!#%%'n "
+"acordeon%s%s"
#: qcsrc/common/notifications/all.inc:461
#, c-format
#, 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 a fost zdrobit și sfârtecat de valul de rachete%s%s al lui ^BG"
-"%s^K1"
+"^BG%s%s^K1 a fost zdrobit și sfârtecat de valul de rachete%s%s al lui "
+"^BG%s^K1"
#: qcsrc/common/notifications/all.inc:482
#, c-format
#, c-format
msgid "^BG%s%s^K1 was caught in ^BG%s^K1's Hook gravity bomb%s%s"
msgstr ""
-"^BG%s%s^K1 a fost prins în Cârligul bombelor gravitaționale%s%s ale lui ^BG"
-"%s^K1"
+"^BG%s%s^K1 a fost prins în Cârligul bombelor gravitaționale%s%s ale lui "
+"^BG%s^K1"
#: qcsrc/common/notifications/all.inc:487
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
-"%100>=11 && n%100<=14)? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
+"(n%100>=11 && n%100<=14)? 2 : 3);\n"
#: qcsrc/client/hud/hud_config.qc:80
#, c-format
#: qcsrc/client/hud/panel/quickmenu.qc:853
msgid "QMCMD^Player models like mine"
-msgstr "Ð\9cодели игÑ\80оков Ñ\82акие же как Ñ\83 менÑ\8f"
+msgstr "Ð\97амениÑ\82Ñ\8c модели игÑ\80оков моей"
#: qcsrc/client/hud/panel/quickmenu.qc:854
msgid "QMCMD^Names above players"
#: qcsrc/common/minigames/minigame/bd.qc:1110
msgid "Well done! Click 'Next Level' to continue"
-msgstr "Ð\9fÑ\80екÑ\80аÑ\81но! ЩÑ\91лкниÑ\82е по «Следующий уровень» для продолжения"
+msgstr "Ð\9fÑ\80екÑ\80аÑ\81но! ЩÑ\91лкниÑ\82е на «Следующий уровень» для продолжения"
#: qcsrc/common/minigames/minigame/bd.qc:1181
#: qcsrc/common/minigames/minigame/c4.qc:381
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 захватил ^TC^TT^BG флаг за ^F1%s^BG секунд, побив предыдущий рекорд "
"^BG%s^BG — ^F2%s^BG секунды"
msgid ""
"^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Spiderbot exploded%s%s"
msgstr ""
-"^BG%s%s^K1 зацепило взрывной волной от взорвавшегося на Пауке-боте ^BG%s^K1%s"
-"%s"
+"^BG%s%s^K1 зацепило взрывной волной от взорвавшегося на Пауке-боте "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:300
#, c-format
#, c-format
msgid "^BG%s%s^K1 got too close to ^BG%s^K1's Mortar grenade%s%s"
msgstr ""
-"^BG%s%s^K1 оказался в зоне поражения гранаты, выпущенной из Мортиры ^BG"
-"%s^K1%s%s"
+"^BG%s%s^K1 оказался в зоне поражения гранаты, выпущенной из Мортиры "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:495
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
"^BG%s%s^K1 был распилен пополам Оверкилл Реактивной Бензопилой ^BG%s^K1%s%s"
#, c-format
msgid "^BG%s%s^K1 was pummeled by ^BG%s^K1's Seeker rockets%s%s"
msgstr ""
-"^BG%s%s^K1 попал под обстрел ракетами из Самонаводчика со стороны ^BG%s^K1%s"
-"%s"
+"^BG%s%s^K1 попал под обстрел ракетами из Самонаводчика со стороны "
+"^BG%s^K1%s%s"
#: qcsrc/common/notifications/all.inc:513
#, c-format
#: qcsrc/common/notifications/all.inc:798
msgid "^F4Timeout begins in ^COUNT"
-msgstr "^F4Тайм-аут начнётся через ^COUNT"
+msgstr "^F4Тайм-аут начнётся через ^COUNT с"
#: qcsrc/common/notifications/all.inc:799
msgid "^F4Timeout ends in ^COUNT"
-msgstr "^F4Тайм-аут закончится через ^COUNT"
+msgstr "^F4Тайм-аут закончится через ^COUNT с"
#: qcsrc/common/notifications/all.inc:801
msgid "^K1Cannot join given minigame session!"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:36
msgid "Packet loss compensation"
-msgstr "СмÑ\8fгÑ\87ение потери пакетов (п/п)"
+msgstr "СмÑ\8fгÑ\87аÑ\82Ñ\8c потери пакетов (п/п)"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:37
msgid "Each packet includes a copy of the previous message"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:39
msgid "Movement prediction error compensation"
-msgstr "СмÑ\8fгÑ\87ение оÑ\88ибок предрасчёта движения"
+msgstr "СмÑ\8fгÑ\87аÑ\82Ñ\8c оÑ\88ибки предрасчёта движения"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:43
msgid "Use encryption (AES) when available"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
"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=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: qcsrc/client/hud/hud_config.qc:80
#, c-format
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 fångade den ^TC^TT^BG flaggan på ^F1%s^BG sekunder, vilket slår ^BG"
-"%s^BGs föregående rekord på ^F2%s^BG sekunder"
+"^BG%s^BG fångade den ^TC^TT^BG flaggan på ^F1%s^BG sekunder, vilket slår "
+"^BG%s^BGs föregående rekord på ^F2%s^BG sekunder"
#: qcsrc/common/notifications/all.inc:242
#, 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 var inblandad i sprängningen när ^BG%s^K1s Bumblebee exploderade%s"
-"%s"
+"^BG%s%s^K1 var inblandad i sprängningen när ^BG%s^K1s Bumblebee "
+"exploderade%s%s"
#: qcsrc/common/notifications/all.inc:294
#, 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 var inblandad i sprängningen när ^BG%s^K1s Spiderbot exploderade%s"
-"%s"
+"^BG%s%s^K1 var inblandad i sprängningen när ^BG%s^K1s Spiderbot "
+"exploderade%s%s"
#: qcsrc/common/notifications/all.inc:300
#, c-format
msgid ""
"^BG%s^K1 decided to take a look at the results of their napalm explosion%s%s"
msgstr ""
-"^BG%s^K1 bestämde sig för att ta en titt på resultatet av sin napalmexplosion"
-"%s%s"
+"^BG%s^K1 bestämde sig för att ta en titt på resultatet av sin "
+"napalmexplosion%s%s"
#: qcsrc/common/notifications/all.inc:326
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
-"^BG%s%s^K1 var sågad på mitten av ^BG%s^K1s Overkill Raketframdriven Motorsåg"
-"%s%s"
+"^BG%s%s^K1 var sågad på mitten av ^BG%s^K1s Overkill Raketframdriven "
+"Motorsåg%s%s"
#: qcsrc/common/notifications/all.inc:503
#, c-format
msgid ""
"^BG%s^K1 was sawn in half by their own Overkill Rocket Propelled Chainsaw%s%s"
msgstr ""
-"^BG%s^K1 var sågad på mitten av sin egen Overkill Raketframdriven Motorsåg%s"
-"%s"
+"^BG%s^K1 var sågad på mitten av sin egen Overkill Raketframdriven "
+"Motorsåg%s%s"
#: qcsrc/common/notifications/all.inc:505
#, c-format
# ibra kap <ibrakap@gmail.com>, 2019
# Lucifer Morningstar, 2022
# Lucifer Morningstar, 2022
+# Mehmet Ali Kaplan, 2023
+# Mehmet Ali Kaplan, 2023
# Tan Siret Akıncı <tanakinci2002@gmail.com>, 2021
msgid ""
msgstr ""
#: qcsrc/client/hud/panel/centerprint.qc:202
#, c-format
msgid "^3Countdown message at time %s, seconds left: ^COUNT"
-msgstr ""
+msgstr "^3Geri sayım mesajı zamanı %s, kalan saniyeler; ^COUNT"
#: qcsrc/client/hud/panel/centerprint.qc:204
#, c-format
#: qcsrc/client/hud/panel/quickmenu.qc:202
msgid "Standard quick menu"
-msgstr ""
+msgstr "Standart hızlı menü"
#: qcsrc/client/hud/panel/quickmenu.qc:634
#: qcsrc/client/hud/panel/quickmenu.qc:636
#: qcsrc/client/hud/panel/quickmenu.qc:830
msgid "QMCMD^strength soon"
-msgstr ""
+msgstr "QMCMD^güç yakında"
#: qcsrc/client/hud/panel/quickmenu.qc:831
msgid "QMCMD^free item %x^7 (l:%y^7)"
#: qcsrc/client/hud/panel/quickmenu.qc:838
msgid "QMCMD^defending (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)"
-msgstr ""
+msgstr "QMCMD^savunanlar (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)"
#: qcsrc/client/hud/panel/quickmenu.qc:838
msgid "QMCMD^defending, icon"
-msgstr ""
+msgstr "QMCMD^savunanlar, ikon"
#: qcsrc/client/hud/panel/quickmenu.qc:839
msgid "QMCMD^roaming (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)"
-msgstr ""
+msgstr "QMCMD^roaming (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)"
#: qcsrc/client/hud/panel/quickmenu.qc:839
msgid "QMCMD^roaming, icon"
-msgstr ""
+msgstr "QMCMD^roaming, ikon"
#: qcsrc/client/hud/panel/quickmenu.qc:840
msgid "QMCMD^attacking (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)"
-msgstr ""
+msgstr "QMCMD^saldıranlar (l:%l^7) (h:%h^7 a:%a^7 w:%w^7)"
#: qcsrc/client/hud/panel/quickmenu.qc:840
msgid "QMCMD^attacking, icon"
-msgstr ""
+msgstr "QMCMD^saldıranlar, ikon"
#: qcsrc/client/hud/panel/quickmenu.qc:841
msgid "QMCMD^killed flagcarrier (l:%y^7)"
-msgstr ""
+msgstr "QMCMD^sancak-taşıyıcısı öldü (l:%y^7)"
#: qcsrc/client/hud/panel/quickmenu.qc:841
msgid "QMCMD^killed flagcarrier, icon"
-msgstr ""
+msgstr "QMCMD^sancak-taşıyıcısı öldü, ikon"
#: qcsrc/client/hud/panel/quickmenu.qc:842
#, c-format
msgid "QMCMD^dropped flag (l:%d^7)"
-msgstr ""
+msgstr "QMCMD^sancağı düşürdü (l:%d^7)"
#: qcsrc/client/hud/panel/quickmenu.qc:842
msgid "QMCMD^dropped flag, icon"
-msgstr ""
+msgstr "QMCMD^sancağı düşürdü, ikon"
#: qcsrc/client/hud/panel/quickmenu.qc:843
msgid "QMCMD^drop weapon, icon"
#: qcsrc/client/hud/panel/quickmenu.qc:844
msgid "QMCMD^drop flag/key, icon"
-msgstr ""
+msgstr "QMCMD^sancak/anahtar düştü, ikon"
#: qcsrc/client/hud/panel/quickmenu.qc:844
msgid "QMCMD^dropped flag/key %w^7 (l:%l^7)"
-msgstr ""
+msgstr "QMCMD^sancak/anahtar düşürüldü %w^7 (l:%l^7)"
#: qcsrc/client/hud/panel/quickmenu.qc:848
msgid "QMCMD^Send private message to"
#: qcsrc/client/hud/panel/quickmenu.qc:853
msgid "QMCMD^Player models like mine"
-msgstr ""
+msgstr "QMCMD^benimki gibi Oyuncu modelleri"
#: qcsrc/client/hud/panel/quickmenu.qc:854
msgid "QMCMD^Names above players"
#: qcsrc/client/hud/panel/quickmenu.qc:896
msgid "Server quick menu"
-msgstr ""
+msgstr "Hızlı sunucu menüsü"
#: qcsrc/client/hud/panel/quickmenu.qc:898
msgid "Waypoint editor menu"
-msgstr ""
+msgstr "Hedefnokta editör menüsü"
#: qcsrc/client/hud/panel/quickmenu.qc:901
msgid "Waypoint editor menu as default"
-msgstr ""
+msgstr "Varsayılan olarak Hedefnokta editör menüsü "
#: qcsrc/client/hud/panel/quickmenu.qc:903
msgid "Server quick menu as default"
-msgstr ""
+msgstr "Varsayılan olarak hızlı Sunucu menüsü"
#: qcsrc/client/hud/panel/quickmenu.qc:909
msgid "QMCMD^Spectate a player"
#: qcsrc/client/hud/panel/scoreboard.qc:136
msgid "How often a flag (CTF) or a key (KeyHunt) was captured"
msgstr ""
+"Ne kadar sıklıkla bir sancak (BK) ya da anahtar (AnahtarAvı) ele geçirildi"
#: qcsrc/client/hud/panel/scoreboard.qc:136
msgid "SCO^caps"
#: qcsrc/client/hud/panel/scoreboard.qc:174
msgid "Number of survivals"
-msgstr ""
+msgstr "Hayatta kalanların sayısı"
#: qcsrc/client/hud/panel/scoreboard.qc:174
msgid "SCO^survivals"
-msgstr ""
+msgstr "SCO^Hayatta Kalanlar"
#: qcsrc/client/hud/panel/scoreboard.qc:175
msgid "Number of domination points taken (Domination)"
#: qcsrc/client/hud/panel/scoreboard.qc:176
msgid "SCO^teamkills"
-msgstr ""
+msgstr "SCO^TakımdanÖldürülenler"
#: qcsrc/client/hud/panel/scoreboard.qc:177
msgid "Number of ticks (Domination)"
-msgstr ""
+msgstr "Tiklerin sayısı (Kontrol)"
#: qcsrc/client/hud/panel/scoreboard.qc:177
msgid "SCO^ticks"
-msgstr ""
+msgstr "SCO^Tikler"
#: qcsrc/client/hud/panel/scoreboard.qc:178
msgid "SCO^time"
#: qcsrc/client/hud/panel/scoreboard.qc:178
msgid "Total time raced (Race/CTS)"
-msgstr ""
+msgstr "Yarışılan toplam zaman (Race/CTS)"
#: qcsrc/client/hud/panel/scoreboard.qc:707
msgid ""
#: qcsrc/client/hud/panel/scoreboard.qc:1856
msgid "Item stats"
-msgstr ""
+msgstr "Eşya istatistikleri"
#: qcsrc/client/hud/panel/scoreboard.qc:1967
msgid "Map stats:"
#: qcsrc/client/hud/panel/scoreboard.qc:2340
#, c-format
msgid "^7Press ^3%s^7 to join the selected team"
-msgstr ""
+msgstr "^7Tıklayın ^3%s^7 ya seçili takıma katılmak için"
#: qcsrc/client/hud/panel/scoreboard.qc:2342
#, c-format
msgid "^7Press ^3%s^7 to auto-select a team and join"
-msgstr ""
+msgstr "^7Tıklayın ^3%s^7 ya otomatik takım seçip katılmak için"
#: qcsrc/client/hud/panel/scoreboard.qc:2346
#, c-format
msgid "^7Press ^3%s ^7to select a specific team"
-msgstr ""
+msgstr "^7Tıklayın ^3%s ^7ya spesifik bir takım seçmek için"
#: qcsrc/client/hud/panel/scoreboard.qc:2357
#, c-format
#: qcsrc/client/hud/panel/scoreboard.qc:2384
#, c-format
msgid "^5%d^7/^5%d ^7players"
-msgstr ""
+msgstr "^5%d^7/^5%d ^7oyuncular"
#: qcsrc/client/hud/panel/scoreboard.qc:2385 qcsrc/client/main.qc:1436
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:43
#: qcsrc/client/hud/panel/timer.qc:126
msgid "Warmup"
-msgstr ""
+msgstr "Isınma"
#: qcsrc/client/hud/panel/timer.qc:131
msgid "Warmup: too few players"
-msgstr ""
+msgstr "Isınma: çok az oyuncu"
#: qcsrc/client/hud/panel/timer.qc:133
msgid "Warmup: no time limit"
-msgstr ""
+msgstr "Isınma: zaman limiti yok"
#: qcsrc/client/hud/panel/timer.qc:137
msgid "Timeout"
-msgstr ""
+msgstr "Süre bitti"
#: qcsrc/client/hud/panel/timer.qc:139
msgid "Sudden Death"
#: qcsrc/client/hud/panel/timer.qc:141
msgid "Overtime"
-msgstr ""
+msgstr "Uzatma"
#: qcsrc/client/hud/panel/timer.qc:143
#, c-format
msgid "Overtime #%d"
-msgstr ""
+msgstr "Uzatma #%d"
#: qcsrc/client/hud/panel/vote.qc:30
msgid "^1You must answer before entering hud configure mode"
-msgstr ""
+msgstr "^1Hud ayarlama moduna girmeden önce yanıtlamak zorundasınız"
#: qcsrc/client/hud/panel/vote.qc:33
msgid "^2Name ^7instead of \"^1Anonymous player^7\" in stats"
#: qcsrc/client/main.qc:1360
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:27
msgid "All Available Weapons Arena"
-msgstr ""
+msgstr "Arenadaki tüm hazır silahlar"
#: qcsrc/client/main.qc:1361
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:28
msgid "Most Weapons Arena"
-msgstr ""
+msgstr "Arenadaki çoğu silahlar"
#: qcsrc/client/main.qc:1362
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:29
msgid "Most Available Weapons Arena"
-msgstr ""
+msgstr "Arenadaki çoğu hazır silahlar"
#: qcsrc/client/main.qc:1365 qcsrc/client/main.qc:1379
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:50
#: qcsrc/client/main.qc:1388 qcsrc/client/main.qc:1393
#, c-format
msgid "This is %s"
-msgstr ""
+msgstr "Bu %s"
#: qcsrc/client/main.qc:1389
msgid "Your client version is outdated."
-msgstr ""
+msgstr "Sizin istemci versiyonunuz eski sürüm"
#: qcsrc/client/main.qc:1390
msgid "### YOU WON'T BE ABLE TO PLAY ON THIS SERVER ###"
-msgstr ""
+msgstr "### SİZ BU SUNUCUDA OYNAYAMAZSINIZ ###"
#: qcsrc/client/main.qc:1391
msgid "Please update!"
-msgstr ""
+msgstr "Lütfen güncelleyin!"
#: qcsrc/client/main.qc:1394
msgid "This server is using an outdated Xonotic version."
-msgstr ""
+msgstr "Bu sunucu eski bir Xonotic versiyonu kullanıyor."
#: qcsrc/client/main.qc:1395
msgid "### THIS SERVER IS INCOMPATIBLE AND THUS YOU CANNOT JOIN ###"
-msgstr ""
+msgstr "### BU SUNUCU UYUMSUZ VE BU YÜZDEN SİZ KATILAMAZSINIZ ###"
#: qcsrc/client/main.qc:1397
#, c-format
msgid "Welcome to %s"
-msgstr ""
+msgstr "%s ya Hoşgeldiniz"
#: qcsrc/client/main.qc:1411 qcsrc/menu/xonotic/campaign.qc:244
#, c-format
msgid "Level %d:"
-msgstr ""
+msgstr "Seviye %d:"
#: qcsrc/client/main.qc:1413
#, c-format
msgid "^BGPress ^F2%s^BG to enter the game"
-msgstr ""
+msgstr "^BGBasın ^F2%s^BG oyuna girmek için"
#: qcsrc/client/main.qc:1434
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:38
#: qcsrc/client/main.qc:1454
#, c-format
msgid "%d players maximum"
-msgstr ""
+msgstr "Maksimum oyuncular %d "
#: qcsrc/client/main.qc:1456
#, c-format
msgid "%d players minimum"
-msgstr ""
+msgstr "Minimum oyuncular %d"
#: qcsrc/client/main.qc:1461
msgid "Active modifications:"
-msgstr ""
+msgstr "Aktif modifikasyonlar:"
#: qcsrc/client/main.qc:1464
msgid "Special gameplay tips:"
-msgstr ""
+msgstr "Özel oynanış ipuçları:"
#: qcsrc/client/main.qc:1471
msgid "Server's message"
-msgstr ""
+msgstr "Sunucunun mesajı"
#: qcsrc/client/main.qc:1565
#, c-format
#: qcsrc/client/mapvoting.qc:559
msgid "mv_mapdownload: ^3You're not supposed to use this command on your own!"
msgstr ""
+"mv_mapdownload: ^3Siz bu emiri kendi başınıza kullanma hakkına sahip "
+"değilsiniz"
#: qcsrc/client/mapvoting.qc:569
msgid "^1Error:^7 Couldn't find pak index."
#: qcsrc/common/gamemodes/gamemode/clanarena/clanarena.qh:40
#: qcsrc/common/gamemodes/gamemode/freezetag/freezetag.qh:43
msgid "Round limit:"
-msgstr ""
+msgstr "Tur limiti:"
#: qcsrc/common/gamemodes/gamemode/clanarena/clanarena.qh:40
#: qcsrc/common/gamemodes/gamemode/freezetag/freezetag.qh:43
msgid "The amount of rounds won needed before the match will end"
-msgstr ""
+msgstr "Maçı bitmeden raundu kazanmak için kazanılması gereken puanlar"
#: qcsrc/common/gamemodes/gamemode/ctf/cl_ctf.qc:202
msgid "Capture time rankings"
#: qcsrc/common/gamemodes/gamemode/ctf/ctf.qh:30
msgid "Capture limit:"
-msgstr ""
+msgstr "Ele geçirme limiti:"
#: qcsrc/common/gamemodes/gamemode/ctf/ctf.qh:30
msgid "The amount of captures needed before the match will end"
-msgstr ""
+msgstr "Maç bitmeden elde edilmesi gereken ele geçirmeler"
#: qcsrc/common/gamemodes/gamemode/cts/cl_cts.qc:41
#: qcsrc/common/gamemodes/gamemode/race/cl_race.qc:178
#: qcsrc/common/gamemodes/gamemode/cts/cts.qh:11
msgid "Race CTS"
-msgstr ""
+msgstr "Yarış CTS"
#: qcsrc/common/gamemodes/gamemode/cts/cts.qh:11
msgid "Race for fastest time."
#: qcsrc/common/gamemodes/gamemode/keyhunt/keyhunt.qh:39
#: qcsrc/common/gamemodes/gamemode/tdm/tdm.qh:47
msgid "The amount of points needed before the match will end"
-msgstr ""
+msgstr "Maç bitmeden elde edilmesi gereken puanlar"
#: qcsrc/common/gamemodes/gamemode/duel/duel.qh:9
msgid "Duel"
#: qcsrc/common/gamemodes/gamemode/lms/lms.qh:20
msgid "Lives:"
-msgstr ""
+msgstr "Canlar:"
#: qcsrc/common/gamemodes/gamemode/mayhem/mayhem.qh:10
msgid "Compete for the most damage dealt and frags in this chaotic mayhem!"
#: qcsrc/common/gamemodes/gamemode/nexball/nexball.qh:25
msgid "Goal limit:"
-msgstr ""
+msgstr "Hedef Limiti:"
#: qcsrc/common/gamemodes/gamemode/nexball/nexball.qh:25
msgid "The amount of goals needed before the match will end"
#: qcsrc/common/gamemodes/gamemode/survival/cl_survival.qc:63
msgid "Hunter"
-msgstr ""
+msgstr "Avcı"
#: qcsrc/common/gamemodes/gamemode/survival/cl_survival.qc:69
msgid "Survivor"
-msgstr ""
+msgstr "Hayatta Kalan"
#: qcsrc/common/gamemodes/gamemode/survival/survival.qh:12
msgid "Identify and eliminate all the hunters before all your allies are gone"
-msgstr ""
+msgstr "Müttefiklerin ölmeden tüm avcıları bul ve ortadan kaldır"
#: qcsrc/common/gamemodes/gamemode/survival/survival.qh:12
msgid "Survival"
-msgstr ""
+msgstr "Hayatta Kalma"
#: qcsrc/common/gamemodes/gamemode/tdm/tdm.qh:9
msgid "Help your team score the most frags against the enemy team"
#: qcsrc/common/gamemodes/gamemode/tka/tka.qh:13
msgid "Keep the ball in your team's possession to get points for kills"
-msgstr ""
+msgstr "Topu tutarak aldığın öldürmelerden takımın için puan kazan"
#: qcsrc/common/gamemodes/gamemode/tka/tka.qh:13
msgid "Team Keepaway"
#: qcsrc/common/items/item/ammo.qh:56
msgid "Shells"
-msgstr ""
+msgstr "Tüfek Kovanları"
#: qcsrc/common/items/item/ammo.qh:92
msgid "Bullets"
-msgstr ""
+msgstr "Mermiler"
#: qcsrc/common/items/item/ammo.qh:124
msgid "Rockets"
-msgstr ""
+msgstr "ROketler"
#: qcsrc/common/items/item/ammo.qh:156
msgid "Cells"
-msgstr ""
+msgstr "Enerji Hücreleri"
#: qcsrc/common/items/item/ammo.qh:188
#: qcsrc/common/turrets/turret/plasma_weapon.qh:7
msgid "Plasma"
-msgstr ""
+msgstr "Plazma"
#: qcsrc/common/items/item/armor.qh:42
msgid "Small armor"
#: qcsrc/common/items/item/jetpack.qh:71
msgid "Fuel"
-msgstr ""
+msgstr "Yakıt"
#: qcsrc/common/items/item/jetpack.qh:96
msgid "Fuel regenerator"
-msgstr ""
+msgstr "Yakıt yenileyici"
#: qcsrc/common/items/item/jetpack.qh:99
msgid "Fuel regen"
#: qcsrc/common/mapinfo.qh:89
msgid "The amount of frags needed before the match will end"
-msgstr ""
+msgstr "Maç bitmeden elde edilmesi gereken infazların sayısı"
#: qcsrc/common/minigames/cl_minigames.qc:379
msgid "It's your turn"
#: qcsrc/common/minigames/cl_minigames_hud.qc:582
msgid "Minigame message"
-msgstr ""
+msgstr "Minioyun mesajı"
#: qcsrc/common/minigames/minigame/bd.qc:2
msgid "Bulldozer"
-msgstr ""
+msgstr "Dozer"
#: qcsrc/common/minigames/minigame/bd.qc:1107
#: qcsrc/common/minigames/minigame/ps.qc:425
#: qcsrc/common/minigames/minigame/c4.qc:2
msgid "Connect Four"
-msgstr ""
+msgstr "Dörtlü Bağla"
#: qcsrc/common/minigames/minigame/c4.qc:316
#: qcsrc/common/minigames/minigame/c4.qc:322
#: qcsrc/common/minigames/minigame/nmm.qc:3
msgid "Nine Men's Morris"
-msgstr ""
+msgstr "9 Adam'ın Morrisi"
#: qcsrc/common/minigames/minigame/nmm.qc:619
msgid ""
#: qcsrc/common/minigames/minigame/pong.qc:2
msgid "Pong"
-msgstr ""
+msgstr "Pong"
#: qcsrc/common/minigames/minigame/pong.qc:607
#: qcsrc/common/minigames/minigame/ttt.qc:309
#: qcsrc/common/minigames/minigame/pp.qc:2
msgid "Push-Pull"
-msgstr ""
+msgstr "İttir-Çek"
#: qcsrc/common/minigames/minigame/pp.qc:456
#: qcsrc/common/minigames/minigame/ttt.qc:339
#: qcsrc/common/minigames/minigame/pp.qc:464
#: qcsrc/common/minigames/minigame/ttt.qc:347
msgid "Wait for your opponent to confirm the rematch"
-msgstr ""
+msgstr "Rakibinizin rövanş için onaylamasını bekleyiniz"
#: qcsrc/common/minigames/minigame/pp.qc:613
#: qcsrc/common/minigames/minigame/ttt.qc:698
#: qcsrc/common/minigames/minigame/ps.qc:418
msgid "All pieces cleared!"
-msgstr ""
+msgstr "Tüm parçalar temizlendi!"
#: qcsrc/common/minigames/minigame/ps.qc:420
msgid "Remaining pieces:"
-msgstr ""
+msgstr "Kalan parçalar:"
#: qcsrc/common/minigames/minigame/ps.qc:488
#, c-format
#: qcsrc/common/monsters/monster/golem.qh:17
#: qcsrc/menu/xonotic/dialog_monstertools.qc:17
msgid "Golem"
-msgstr ""
+msgstr "Golem:"
#: qcsrc/common/monsters/monster/mage.qh:17
#: qcsrc/menu/xonotic/dialog_monstertools.qc:18
#: qcsrc/common/monsters/monster/mage.qh:29
msgid "Mage spike"
-msgstr ""
+msgstr "Büyücü dikeni"
#: qcsrc/common/monsters/monster/spider.qh:17
#: qcsrc/menu/xonotic/dialog_monstertools.qc:16
#: qcsrc/common/monsters/monster/spider.qh:39
msgid "Webbed"
-msgstr ""
+msgstr "Ağlandı"
#: qcsrc/common/monsters/monster/wyvern.qh:17
#: qcsrc/menu/xonotic/dialog_monstertools.qc:19
#: qcsrc/common/mutators/mutator/offhand_blaster/cl_offhand_blaster.qc:9
#: qcsrc/menu/xonotic/keybinder.qc:45
msgid "off-hand hook"
-msgstr ""
+msgstr "boş-el kancası"
#: qcsrc/common/mutators/mutator/hook/cl_hook.qc:12
#, c-format
#: qcsrc/common/mutators/mutator/instagib/items.qh:33
msgid "Vaporizer ammo"
-msgstr ""
+msgstr "Buharlaştırıcı mermisi"
#: qcsrc/common/mutators/mutator/instagib/items.qh:59
#: qcsrc/common/mutators/mutator/instagib/items.qh:62
#: qcsrc/common/mutators/mutator/nades/nades.inc:88
msgid "Veil grenade"
-msgstr ""
+msgstr "Örtü bombası"
#: qcsrc/common/mutators/mutator/nades/nades.inc:99
msgid "Ammo grenade"
-msgstr ""
+msgstr "Cephane bombası"
#: qcsrc/common/mutators/mutator/nades/nades.inc:109
msgid "Darkness grenade"
-msgstr ""
+msgstr "Karanlık bombası"
#: qcsrc/common/mutators/mutator/nades/nades.qc:139
#: qcsrc/menu/xonotic/keybinder.qc:60
msgid "drop weapon / throw nade"
-msgstr ""
+msgstr "silah bırakma / bomba atma"
#: qcsrc/common/mutators/mutator/nades/nades.qc:141
#, c-format
#: qcsrc/common/mutators/mutator/overkill/okhmg.qh:22
msgid "Overkill Heavy Machine Gun"
-msgstr ""
+msgstr "Aşırıhasar ağır makineli tüfek"
#: qcsrc/common/mutators/mutator/overkill/okmachinegun.qh:20
msgid "Overkill MachineGun"
-msgstr ""
+msgstr "Aşırıhasar makineli tüfek"
#: qcsrc/common/mutators/mutator/overkill/oknex.qh:19
msgid "Overkill Nex"
-msgstr ""
+msgstr "Aşırıshasar Nex"
#: qcsrc/common/mutators/mutator/overkill/okrpc.qh:22
msgid "Overkill Rocket Propelled Chainsaw"
#: qcsrc/common/mutators/mutator/overkill/okshotgun.qh:18
msgid "Overkill Shotgun"
-msgstr ""
+msgstr "Aşırıhasar Pompalı Tüfek"
#: qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qh:47
#: qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qh:50
#: qcsrc/common/mutators/mutator/status_effects/status_effect/burning.qh:16
msgid "Burning"
-msgstr ""
+msgstr "Yanıyor"
#: qcsrc/common/mutators/mutator/status_effects/status_effect/spawnshield.qh:10
msgid "Spawn Shield"
-msgstr ""
+msgstr "Diriliş Kalkanı"
#: qcsrc/common/mutators/mutator/status_effects/status_effect/stunned.qh:16
msgid "Stunned"
-msgstr ""
+msgstr "Sersemlemiş"
#: qcsrc/common/mutators/mutator/status_effects/status_effect/superweapons.qh:7
msgid "Superweapons"
-msgstr ""
+msgstr "Süpersilahlar"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:3
msgid "Waypoint"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:11
msgid "Reviving"
-msgstr ""
+msgstr "Yeniden canlanıyor"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:13
msgid "Item"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:55
msgid "Leader"
-msgstr ""
+msgstr "Lider"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:58
msgid "Goal"
-msgstr ""
+msgstr "Hedef"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:63
#: qcsrc/common/mutators/mutator/waypoints/all.inc:64
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:273
msgid "^F2Match is restarting..."
-msgstr ""
+msgstr "^F2Maç yeniden başlatılıyor..."
#: qcsrc/common/notifications/all.inc:274
#: qcsrc/common/notifications/all.inc:548
msgid "^F4Countdown stopped!"
-msgstr ""
+msgstr "^F4Gerisayım durduruldu!"
#: qcsrc/common/notifications/all.inc:276
#, c-format
#: qcsrc/common/notifications/all.inc:408
msgid "^BGMonsters are currently disabled"
-msgstr ""
+msgstr "^BGCanavarlar şuan kapatıldı"
#: qcsrc/common/notifications/all.inc:410
msgid "^BGThe ^TC^TT^BG team held the ball for too long"
#: qcsrc/common/notifications/all.inc:416
msgid "^TC^TT^BG generator has been destroyed"
-msgstr ""
+msgstr "^TC^TT^BG bir jeneratör yok edildi"
#: qcsrc/common/notifications/all.inc:417
msgid "^TC^TT^BG generator spontaneously combusted due to overtime!"
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:544
msgid "^BGYou are attacking!"
-msgstr ""
+msgstr "^BGSaldırıdasın!"
#: qcsrc/common/notifications/all.inc:545
msgid "^BGYou are defending!"
-msgstr ""
+msgstr "^BGSavunmadasın!"
#: qcsrc/common/notifications/all.inc:546
#, c-format
#: qcsrc/common/notifications/all.inc:549
msgid "^BGBegin!"
-msgstr ""
+msgstr "^BGBaşla!"
#: qcsrc/common/notifications/all.inc:550
msgid "^BGGame starts in"
-msgstr ""
+msgstr "^BGOyun başlıyor"
#: qcsrc/common/notifications/all.inc:551
#, c-format
msgid "^BGRound %s starts in"
-msgstr ""
+msgstr "^BGRaunt %s içinde başlıyor"
#: qcsrc/common/notifications/all.inc:552
msgid "^F4Round cannot start"
-msgstr ""
+msgstr "^F4Raunt başlayamaz"
#: qcsrc/common/notifications/all.inc:557
msgid "^F2Don't camp!"
-msgstr ""
+msgstr "^F2Pusma!"
#: qcsrc/common/notifications/all.inc:561
msgid ""
#: qcsrc/common/notifications/all.inc:562
msgid "^BGThis flag is currently inactive"
-msgstr ""
+msgstr "^BGBu bayrak şu an aktif değil"
#: qcsrc/common/notifications/all.inc:563
msgid ""
#: qcsrc/common/notifications/all.inc:594
msgid "^BGYou returned the ^TC^TT^BG flag!"
-msgstr ""
+msgstr "^BGSen geri getirdin ^TC^TT^BG sancağı!"
#: qcsrc/common/notifications/all.inc:595
msgid "^BGStalemate! Enemies can now see you on radar!"
#: qcsrc/common/notifications/all.inc:637
msgid "^F2You got a ^K1BONUS GRENADE^F2!"
-msgstr ""
+msgstr "^F2Sen bir ^K1BONUS BOMBA^F2! kazandın"
#: qcsrc/common/notifications/all.inc:639
#, c-format
#: qcsrc/common/notifications/all.inc:640
msgid "^K1You were punished for attacking your team mates!"
-msgstr ""
+msgstr "^K1Takım arkadaşlarına saldırdığın için cezalandırıldın!"
#: qcsrc/common/notifications/all.inc:641
msgid "^K1Die camper!"
#: qcsrc/common/notifications/all.inc:649
msgid "^K1You need to watch out for monsters!"
-msgstr ""
+msgstr "^K1Canavarlara dikkat et!"
#: qcsrc/common/notifications/all.inc:649
msgid "^K1You were killed by a monster!"
#: qcsrc/common/notifications/all.inc:650
msgid "^K1Tastes like chicken!"
-msgstr ""
+msgstr "^K1Tadı tavuk gibi!"
#: qcsrc/common/notifications/all.inc:650
msgid "^K1You forgot to put the pin back in!"
-msgstr ""
+msgstr "^K1Pini geri takmayı unuttun!"
#: qcsrc/common/notifications/all.inc:651
msgid "^K1Hanging around a napalm explosion is bad!"
-msgstr ""
+msgstr "^K1Napalm patlamasının çevresinde takılmak kötüdür!"
#: qcsrc/common/notifications/all.inc:652
msgid "^K1You felt a little chilly!"
-msgstr ""
+msgstr "^K1Biraz serinlik hissettin!"
#: qcsrc/common/notifications/all.inc:652
msgid "^K1You got a little bit too cold!"
-msgstr ""
+msgstr "^K1Biraz fazla soğuğa yakalandın!"
#: qcsrc/common/notifications/all.inc:653
msgid "^K1Your Healing Nade is a bit defective"
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 захопив ^TC^TT^BG прапор за ^F1%s^BG секунди, побивши попередній "
"рекорд ^BG%s^BG який становив ^F2%s^BG секунди"
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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:242
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr ""
#: qcsrc/common/notifications/all.inc:503
"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."
msgstr ""
-"在域前你可以放一个 +(或 -)号,后跟一个以逗号分割的游戏类型列表,\n"
-"之后一个斜杠,以使此域仅显示在这些(或除了这些)游戏类型中。你也可以使"
+"在域前你可以放一个 +(或 -)号,后跟一个以逗号分割的游戏模式列表,\n"
+"之后一个斜杠,以使此域仅显示在这些(或除了这些)游戏模式中。你也可以使"
"用‘all’以显示当前游戏模式的所有域。"
#: qcsrc/client/hud/panel/scoreboard.qc:727
#: qcsrc/client/main.qc:1434
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:38
msgid "Gametype:"
-msgstr "游戏类型:"
+msgstr "游戏模式:"
#: qcsrc/client/main.qc:1448
msgid "This match supports"
#: qcsrc/client/mapvoting.qc:395
msgid "Decide the gametype"
-msgstr "选择游戏种类"
+msgstr "选择游戏模式"
#: qcsrc/client/mapvoting.qc:395
msgid "Vote for a map"
#: qcsrc/common/mutators/mutator/nades/nades.inc:78
msgid "Entrap grenade"
-msgstr "减速榴弹"
+msgstr "滞速榴弹"
#: qcsrc/common/mutators/mutator/nades/nades.inc:88
msgid "Veil grenade"
-msgstr "隐身榴弹"
+msgstr "藏匿榴弹"
#: qcsrc/common/mutators/mutator/nades/nades.inc:99
msgid "Ammo grenade"
#: qcsrc/common/mutators/mutator/nades/nades.inc:109
msgid "Darkness grenade"
-msgstr "暗黑榴弹"
+msgstr "暗影榴弹"
#: qcsrc/common/mutators/mutator/nades/nades.qc:139
#: qcsrc/menu/xonotic/keybinder.qc:60
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 夺取^TC^TT队^BG旗帜用了 ^F1%s^BG 秒,打破了原来 ^BG%s^BG ^F2%s^BG 秒"
"的记录"
#: qcsrc/common/notifications/all.inc:479
#, c-format
msgid "^BG%s^K1 should have used a smaller gun%s%s"
-msgstr "^BG%s^K1 驾驭不了这么大的抢%s%s"
+msgstr "^BG%s^K1 没能驾驭这么大的枪%s%s"
#: qcsrc/common/notifications/all.inc:480
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr "^BG%s%s^K1 被 ^BG%s^K1 用绝灭火箭炮链锯锯成两份%s%s"
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/menu/xonotic/serverlist.qh:160
msgid "SLCAT^Defrag Mode"
-msgstr "Defrag(无杀戮模式)"
+msgstr "Defrag(休闲)"
#: qcsrc/menu/xonotic/skinlist.qc:70
msgid "<TITLE>"
"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."
msgstr ""
-"在域前你可以放一個 +(或 -)號,後跟一個以逗號分割的遊戲類型列表,\n"
-"之後一個斜槓,以使此域僅顯示在這些(或除了這些)遊戲類型中。你也可以使"
+"在域前你可以放一個 +(或 -)號,後跟一個以逗號分割的遊戲模式列表,\n"
+"之後一個斜槓,以使此域僅顯示在這些(或除了這些)遊戲模式中。你也可以使"
"用‘all’以顯示當前遊戲模式的所有域。"
#: qcsrc/client/hud/panel/scoreboard.qc:727
#: qcsrc/client/main.qc:1434
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:38
msgid "Gametype:"
-msgstr "遊戲類型:"
+msgstr "遊戲模式:"
#: qcsrc/client/main.qc:1448
msgid "This match supports"
#: qcsrc/client/mapvoting.qc:395
msgid "Decide the gametype"
-msgstr "選擇遊戲種類"
+msgstr "選擇遊戲模式"
#: qcsrc/client/mapvoting.qc:395
msgid "Vote for a map"
#: qcsrc/common/mutators/mutator/nades/nades.inc:78
msgid "Entrap grenade"
-msgstr "æ¸\9b速榴彈"
+msgstr "滯速榴彈"
#: qcsrc/common/mutators/mutator/nades/nades.inc:88
msgid "Veil grenade"
-msgstr "隱身榴彈"
+msgstr "藏匿榴彈"
#: qcsrc/common/mutators/mutator/nades/nades.inc:99
msgid "Ammo grenade"
#: qcsrc/common/mutators/mutator/nades/nades.inc:109
msgid "Darkness grenade"
-msgstr "暗黑榴彈"
+msgstr "暗影榴彈"
#: qcsrc/common/mutators/mutator/nades/nades.qc:139
#: qcsrc/menu/xonotic/keybinder.qc:60
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 奪取^TC^TT隊^BG旗幟用了 ^F1%s^BG 秒,打破了原來 ^BG%s^BG ^F2%s^BG 秒"
"的記錄"
#: qcsrc/common/notifications/all.inc:479
#, c-format
msgid "^BG%s^K1 should have used a smaller gun%s%s"
-msgstr "^BG%s^K1 駕馭不了這麼大的搶%s%s"
+msgstr "^BG%s^K1 沒能駕馭這麼大的槍%s%s"
#: qcsrc/common/notifications/all.inc:480
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr "^BG%s%s^K1 被 ^BG%s^K1 用絕滅火箭炮鏈鋸鋸成兩份%s%s"
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/menu/xonotic/serverlist.qh:160
msgid "SLCAT^Defrag Mode"
-msgstr "Defrag(無殺戮模式)"
+msgstr "Defrag(休閒)"
#: qcsrc/menu/xonotic/skinlist.qc:70
msgid "<TITLE>"
#: qcsrc/client/hud/panel/infomessages.qc:231
msgid "^3CTRL ^7to disable collision testing, ^3SHIFT ^7and"
-msgstr "^3CTRL ^7以禁用碰撞檢測, ^3SHIFT ^7以及"
+msgstr "^3CTRL ^7以停用碰撞檢測, ^3SHIFT ^7以及"
#: qcsrc/client/hud/panel/infomessages.qc:232
msgid "^3ALT ^7+ ^3ARROW KEYS ^7for fine adjustments."
"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."
msgstr ""
-"在域前你可以放一個 +(或 -)號,後跟一個以逗號分割的遊戲型別列表,\n"
-"之後一個斜槓,以使此域僅顯示在這些(或除了這些)遊戲型別中。你也可以使"
+"在域前你可以放一個 +(或 -)號,後跟一個以逗號分割的遊戲類型列表,\n"
+"之後一個斜槓,以使此域僅顯示在這些(或除了這些)遊戲類型中。你也可以使"
"用‘all’以顯示當前遊戲類型的所有域。"
#: qcsrc/client/hud/panel/scoreboard.qc:727
#: qcsrc/client/main.qc:1434
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:38
msgid "Gametype:"
-msgstr "遊戲型別:"
+msgstr "遊戲類型:"
#: qcsrc/client/main.qc:1448
msgid "This match supports"
#: qcsrc/client/mapvoting.qc:395
msgid "Decide the gametype"
-msgstr "選擇遊戲種類"
+msgstr "選擇遊戲類型"
#: qcsrc/client/mapvoting.qc:395
msgid "Vote for a map"
#: qcsrc/common/mutators/mutator/nades/nades.inc:78
msgid "Entrap grenade"
-msgstr "æ¸\9b速榴彈"
+msgstr "滯速榴彈"
#: qcsrc/common/mutators/mutator/nades/nades.inc:88
msgid "Veil grenade"
-msgstr "隱身榴彈"
+msgstr "藏匿榴彈"
#: qcsrc/common/mutators/mutator/nades/nades.inc:99
msgid "Ammo grenade"
#: qcsrc/common/mutators/mutator/nades/nades.inc:109
msgid "Darkness grenade"
-msgstr "暗黑榴彈"
+msgstr "暗影榴彈"
#: qcsrc/common/mutators/mutator/nades/nades.qc:139
#: qcsrc/menu/xonotic/keybinder.qc:60
#: qcsrc/common/notifications/all.inc:234
msgid "^F4NOTE: ^BGChat is currently disabled on this server"
-msgstr "^F4注意:^BG此伺服器當前禁用了聊天"
+msgstr "^F4注意:^BG此伺服器當前停用了聊天"
#: qcsrc/common/notifications/all.inc:235
msgid "^F4NOTE: ^BGSpectator chat is not sent to players during the match"
#: qcsrc/common/notifications/all.inc:236
msgid "^F4NOTE: ^BGPrivate chat is currently disabled on this server"
-msgstr "^F4注意:^BG此伺服器當前禁用了私密聊天"
+msgstr "^F4注意:^BG此伺服器當前停用了私密聊天"
#: qcsrc/common/notifications/all.inc:237
msgid "^F4NOTE: ^BGSpectator chat is currently disabled on this server"
-msgstr "^F4注意:^BG此伺服器當前禁用了觀察者聊天"
+msgstr "^F4注意:^BG此伺服器當前停用了觀察者聊天"
#: qcsrc/common/notifications/all.inc:238
msgid "^F4NOTE: ^BGTeam chat is currently disabled on this server"
-msgstr "^F4注意:^BG此伺服器當前禁用了團隊聊天"
+msgstr "^F4注意:^BG此伺服器當前停用了團隊聊天"
#: qcsrc/common/notifications/all.inc:240
#, c-format
#: qcsrc/common/notifications/all.inc:241
#, 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"
+"^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 奪取^TC^TT隊^BG旗子用了 ^F1%s^BG 秒,打破了原來 ^BG%s^BG ^F2%s^BG 秒"
"的記錄"
#: qcsrc/common/notifications/all.inc:408
msgid "^BGMonsters are currently disabled"
-msgstr "^BG怪物當前被禁用"
+msgstr "^BG怪物當前被停用"
#: qcsrc/common/notifications/all.inc:410
msgid "^BGThe ^TC^TT^BG team held the ball for too long"
#: qcsrc/common/notifications/all.inc:479
#, c-format
msgid "^BG%s^K1 should have used a smaller gun%s%s"
-msgstr "^BG%s^K1 駕馭不了這麼大的搶%s%s"
+msgstr "^BG%s^K1 沒能駕馭這麼大的槍%s%s"
#: qcsrc/common/notifications/all.inc:480
#, c-format
#: qcsrc/common/notifications/all.inc:502
#, c-format
msgid ""
-"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled Chainsaw"
-"%s%s"
+"^BG%s%s^K1 was sawn in half by ^BG%s^K1's Overkill Rocket Propelled "
+"Chainsaw%s%s"
msgstr "^BG%s%s^K1 被 ^BG%s^K1 用絕滅火箭炮鏈鋸鋸成兩份%s%s"
#: qcsrc/common/notifications/all.inc:503
#: qcsrc/common/notifications/all.inc:807
msgid "^F2Intruder detected, disabling shields!"
-msgstr "^F2檢測到入侵者,正在禁用護盾!"
+msgstr "^F2檢測到入侵者,正在停用護盾!"
#: qcsrc/common/notifications/all.inc:809
msgid ""
#: qcsrc/menu/xonotic/util.qc:762 qcsrc/menu/xonotic/util.qc:778
#: qcsrc/menu/xonotic/util.qc:795
msgid "Disable"
-msgstr "禁用"
+msgstr "停用"
#: qcsrc/menu/xonotic/dialog_hudpanel_itemstime.qc:17
#: qcsrc/menu/xonotic/dialog_hudpanel_pressedkeys.qc:15
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:95
msgid "DOCK^Disabled"
-msgstr "禁用"
+msgstr "停用"
#: qcsrc/menu/xonotic/dialog_hudsetup_exit.qc:96
msgid "DOCK^Small"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:203
#: qcsrc/menu/xonotic/serverlist.qc:1059
msgid "stats disabled"
-msgstr "禁用了統計"
+msgstr "停用了統計"
#: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:203
#: qcsrc/menu/xonotic/serverlist.qc:1059
#: qcsrc/menu/xonotic/dialog_settings_audio.qc:170
msgid "WRN^Disabled"
-msgstr "已禁用"
+msgstr "已停用"
#: qcsrc/menu/xonotic/dialog_settings_audio.qc:172
msgid "5 minutes"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:129
msgid "Disable sky for performance and visibility"
-msgstr "禁用天空以提高效能和可見度"
+msgstr "停用天空以提高效能和可見度"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:129
msgid "Show sky"
msgid ""
"Disable textures completely for very slow hardware. This gives a huge "
"performance boost, but looks very ugly."
-msgstr "在非常慢的硬體上禁用材質。這會極大提高效能,但看起來很醜"
+msgstr "在非常慢的硬體上停用材質。這會極大提高效能,但看起來很醜"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:136
msgid "Use lightmaps"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:186
msgid "DMGFX^Disabled"
-msgstr "禁用"
+msgstr "停用"
#: qcsrc/menu/xonotic/dialog_settings_effects.qc:187
msgid "Skeletal"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:46
msgid "SPREES^Disabled"
-msgstr "禁用"
+msgstr "停用"
#: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:47
msgid "Target"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:82
msgid "How fast the view will be zoomed, disable to zoom instantly"
-msgstr "視角放縮速度,禁用以瞬間放縮"
+msgstr "視角放縮速度,停用以瞬間放縮"
#: qcsrc/menu/xonotic/dialog_settings_game_view.qc:91
msgid "ZOOM^Instant"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:83
#: qcsrc/menu/xonotic/dialog_settings_input.qc:86
msgid "Disable system mouse acceleration"
-msgstr "禁用內建滑鼠加速"
+msgstr "停用內建滑鼠加速"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:80
msgid "Make use of DGA mouse input"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:102
msgid "JPJUMP^Disabled"
-msgstr "禁用"
+msgstr "停用"
#: qcsrc/menu/xonotic/dialog_settings_input.qc:103
msgid "Air only"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:101
msgid "TRGT^Disabled"
-msgstr "已禁用"
+msgstr "已停用"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:112
msgid "Idle limit:"
"Menu tooltips: disabled, standard or advanced (also shows cvar or console "
"command bound to the menu item)"
msgstr ""
-"選單工具提示:已禁用、標準或高階(也在控制檯顯示繫結到選單項命令的 cvar)"
+"選單工具提示:已停用、標準或高階(也在控制檯顯示繫結到選單項命令的 cvar)"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:127
msgid "TLTIP^Disabled"
-msgstr "已禁用"
+msgstr "已停用"
#: qcsrc/menu/xonotic/dialog_settings_misc.qc:128
msgid "TLTIP^Standard"
#: qcsrc/menu/xonotic/dialog_settings_user.qc:72
msgid "Disable gore effects and harsh language"
-msgstr "禁用血腥效果和惡劣的語言"
+msgstr "停用血腥效果和惡劣的語言"
#: qcsrc/menu/xonotic/dialog_settings_user.qc:73
msgid "Replace blood and gibs with content that does not have any gore effects"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:76
msgid "AA^Disabled"
-msgstr "已禁用"
+msgstr "已停用"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:77
#: qcsrc/menu/xonotic/dialog_settings_video.qc:94
#: qcsrc/menu/xonotic/dialog_settings_video.qc:93
msgid "ANISO^Disabled"
-msgstr "已禁用"
+msgstr "已停用"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:96
msgid "8x"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:105
msgid "DF^Disabled"
-msgstr "已禁用"
+msgstr "已停用"
#: qcsrc/menu/xonotic/dialog_settings_video.qc:106
msgid "DF^World"
#: qcsrc/menu/xonotic/serverlist.qh:160
msgid "SLCAT^Defrag Mode"
-msgstr "Defrag(無殺戮模式)"
+msgstr "Defrag(休閒)"
#: qcsrc/menu/xonotic/skinlist.qc:70
msgid "<TITLE>"
ast "Asturian" "Asturianu" 73%
-id_ID "Indonesian" "Bahasa Indonesia" 39%
+id_ID "Indonesian" "Bahasa Indonesia" 40%
de "German" "Deutsch" 100%
de_CH "German (Switzerland)" "Deutsch (Schweiz)" 100%
en "English" "English" 100%
fr "French" "Français" 100%
ga "Irish" "Irish" 29%
it "Italian" "Italiano" 99%
-la "Latin" "Lingua Latina" 75%
+la "Latin" "Lingua Latina" 92%
hu "Hungarian" "Magyar" 44%
nl "Dutch" "Nederlands" 61%
pl "Polish" "Polski" 79%
ro "Romanian" "Romana" 67%
fi "Finnish" "Suomi" 98%
sv "Swedish" "Svenska" 99%
-tr "Turkish" "Türkçe" 50%
+tr "Turkish" "Türkçe" 55%
cs "Czech" "Čeština" 30%
el "Greek" "Ελληνική" 44%
be "Belarusian" "Беларуская" 49%
vector traceorigin = entcs_receiver(player_localentnum - 1).origin + (eZ * STAT(VIEWHEIGHT));
- vecs = decompressShotOrigin(STAT(SHOTORG));
-
traceline(traceorigin, traceorigin + view_forward * max_shot_distance, mv, ta);
trueaimpoint = trace_endpos;
// move trueaimpoint a little bit forward to make the final tracebox reliable
if(vdist((trueaimpoint - traceorigin), <, g_trueaim_minrange))
trueaimpoint = traceorigin + view_forward * g_trueaim_minrange;
+ vecs = decompressShotOrigin(STAT(SHOTORG));
+
if(vecs.x > 0)
vecs.y = -vecs.y;
else
return false;
}
+bool autocvar_r_drawfog;
+bool autocvar_r_fog_exp2;
string forcefog;
void Fog_Force()
{
if (autocvar_cl_orthoview && autocvar_cl_orthoview_nofog)
- localcmd("\nr_drawfog 0\n");
+ {
+ if (autocvar_r_drawfog)
+ cvar_set("r_drawfog", "0");
+ }
else if (forcefog != "")
- localcmd(sprintf("\nfog %s\nr_fog_exp2 0\nr_drawfog 1\n", forcefog));
+ {
+ // using cvar_set as it's faster and safer than a command
+ if (!autocvar_r_drawfog)
+ cvar_set("r_drawfog", "1");
+ if (autocvar_r_fog_exp2)
+ cvar_set("r_fog_exp2", "0");
+ localcmd(sprintf("\nfog %s\n", forcefog));
+ }
}
bool net_handle_ServerWelcome();
IntrusiveList g_drawables;
IntrusiveList g_drawables_2d;
+IntrusiveList g_damagetext;
IntrusiveList g_radarlinks;
IntrusiveList g_radaricons;
STATIC_INIT(main)
{
g_drawables = IL_NEW();
g_drawables_2d = IL_NEW();
+ g_damagetext = IL_NEW();
g_radarlinks = IL_NEW();
g_radaricons = IL_NEW();
}
}
}
- if(almost_equals(current_viewzoom, 1))
+ if(zoomfactor == 1 || current_viewzoom > 0.999) // zoomfactor check prevents a division by 0
current_zoomfraction = 0;
else if(almost_equals(current_viewzoom, 1/zoomfactor))
current_zoomfraction = 1;
{
float e1 = (autocvar_hud_postprocessing_maxbluralpha != 0);
float e2 = (autocvar_hud_powerup != 0);
+ bool want_postprocessing = false;
if(autocvar_hud_postprocessing && (e1 || e2)) // TODO: Remove this code and re-do the postprocess handling in the engine, where it properly belongs.
{
// enable or disable rendering types if they are used or not
old_blurradius = blurradius;
old_bluralpha = bluralpha;
}
+ want_postprocessing = true;
}
else if(cvar_string("r_glsl_postprocess_uservec1") != "0 0 0 0") // reduce cvar_set spam as much as possible
{
cvar_set("r_glsl_postprocess_uservec2", strcat(ftos((sharpen_intensity / 5) * autocvar_hud_powerup), " ", ftos(-sharpen_intensity * autocvar_hud_powerup), " 0 0"));
old_sharpen_intensity = sharpen_intensity;
}
+ want_postprocessing = true;
}
else if(cvar_string("r_glsl_postprocess_uservec2") != "0 0 0 0") // reduce cvar_set spam as much as possible
{
cvar_set("r_glsl_postprocess_uservec2", "0 0 0 0");
old_sharpen_intensity = 0;
}
-
+ }
+ if (want_postprocessing)
+ {
if(cvar("r_glsl_postprocess") == 0)
cvar_set("r_glsl_postprocess", "2");
}
- else if(cvar("r_glsl_postprocess") == 2)
- cvar_set("r_glsl_postprocess", "0");
+ else
+ {
+ if(cvar("r_glsl_postprocess") == 2)
+ cvar_set("r_glsl_postprocess", "0");
+ }
}
void View_Lock()
// draw 2D entities
IL_EACH(g_drawables_2d, it.draw2d, it.draw2d(it));
+ IL_EACH(g_damagetext, it.draw2d, it.draw2d(it));
Draw_ShowNames_All();
#if ENABLE_DEBUGDRAW
Debug_Draw();
{
// got frozen by an enemy
// counted as "kill" and "death" already
+ if(SAME_TEAM(attacker, targ))
+ GameRules_scoring_add(attacker, SCORE, -1);
+ else
+ GameRules_scoring_add(attacker, SCORE, +1);
GameRules_scoring_add(targ, SCORE, -1);
- GameRules_scoring_add(attacker, SCORE, +1);
}
// else nothing - got frozen by the game type rules themselves
}
if(ITEM_DAMAGE_NEEDKILL(frag_deathtype))
{
+ // can't use freezetag_Add_Score here since it doesn't assign any points
+ // if the attacker is not a player (e.g. triggerhurt) by design
+ if ((STAT(FROZEN, frag_target) != FROZEN_NORMAL) && !IS_PLAYER(frag_attacker))
+ GameRules_scoring_add(frag_target, SCORE, -1);
+
// by restoring some health right after player death (soft-kill)
// weapons and ammo won't be reset
SetResourceExplicit(frag_target, RES_HEALTH, 1);
return vs + '0 0 1' * vz;
}
+#ifdef SVQC
+void trigger_push_velocity_think(entity this)
+{
+ bool found = false;
+ IL_EACH(g_moveables, it.last_pushed == this,
+ {
+ if(!WarpZoneLib_ExactTrigger_Touch(this, it, false))
+ it.last_pushed = NULL;
+ else
+ found = true;
+ });
+
+ if(found)
+ this.nextthink = time;
+ else
+ setthink(this, func_null);
+}
+#endif
+
bool jumppad_push(entity this, entity targ, bool is_velocity_pad)
{
if (!isPushable(targ))
else
{
targ.last_pushed = this; // may be briefly out of sync between client and server if client prediction is toggled
+
+ #ifdef SVQC
+ setthink(this, trigger_push_velocity_think);
+ this.nextthink = time;
+ #endif
}
}
#include "cl_damagetext.qh"
-// no translatable cvar description please
-AUTOCVAR_SAVE(cl_damagetext, bool, true, "Draw damage dealt where you hit the enemy");
-AUTOCVAR_SAVE(cl_damagetext_format, string, "-{total}", "How to format the damage text. {health}, {armor}, {total}, {potential}: full damage not capped to target's health, {potential_health}: health damage not capped to target's health");
-AUTOCVAR_SAVE(cl_damagetext_format_verbose, bool, false, "{health} shows {potential_health} too when they differ; {total} shows {potential} too when they differ");
-AUTOCVAR_SAVE(cl_damagetext_format_hide_redundant, bool, false, "hide {armor} if 0; hide {potential} and {potential_health} when same as actual");
-STATIC_INIT(DamageText_LegacyFormat) {
- // damagetext used to be off by default and the cvar got saved in people's configs along with the old format
- // enable damagetext while updating the format for a one time effect
- if (strstrofs(autocvar_cl_damagetext_format, "{", 0) < 0) {
- localcmd("\nseta cl_damagetext 1\n");
- localcmd("\nseta cl_damagetext_format -{total}\n");
- };
-}
-AUTOCVAR_SAVE(cl_damagetext_color, vector, '1 1 0', "Damage text color");
-AUTOCVAR_SAVE(cl_damagetext_color_per_weapon, bool, false, "Damage text uses weapon color");
-AUTOCVAR_SAVE(cl_damagetext_size_min, float, 10, "Damage text font size for small damage");
-AUTOCVAR_SAVE(cl_damagetext_size_min_damage, float, 25, "How much damage is considered small");
-AUTOCVAR_SAVE(cl_damagetext_size_max, float, 16, "Damage text font size for large damage");
-AUTOCVAR_SAVE(cl_damagetext_size_max_damage, float, 140, "How much damage is considered large");
-AUTOCVAR_SAVE(cl_damagetext_alpha_start, float, 1, "Damage text initial alpha");
-AUTOCVAR_SAVE(cl_damagetext_alpha_lifetime, float, 3, "Damage text lifetime in seconds");
-AUTOCVAR_SAVE(cl_damagetext_velocity_screen, vector, '0 0 0', "Damage text move direction (screen coordinates)");
-AUTOCVAR_SAVE(cl_damagetext_velocity_world, vector, '0 0 20', "Damage text move direction (world coordinates relative to player's view)");
-AUTOCVAR_SAVE(cl_damagetext_offset_screen, vector, '0 -45 0', "Damage text offset (screen coordinates)");
-AUTOCVAR_SAVE(cl_damagetext_offset_world, vector, '0 0 0', "Damage text offset (world coordinates relative to player's view)");
-AUTOCVAR_SAVE(cl_damagetext_accumulate_range, float, 30, "Damage text spawned within this range is accumulated");
-AUTOCVAR_SAVE(cl_damagetext_accumulate_alpha_rel, float, 0.65, "Only update existing damage text when it's above this much percentage (0 to 1) of the starting alpha");
-AUTOCVAR_SAVE(cl_damagetext_friendlyfire, int, 1, "0: never show for friendly fire, 1: when more than 0 damage, 2: always");
-AUTOCVAR_SAVE(cl_damagetext_friendlyfire_color, vector, '1 0 0', "Damage text color for friendlyfire");
-
-AUTOCVAR_SAVE(cl_damagetext_2d, bool, true, "Show damagetext in 2D coordinates if the enemy's location is not known");
-AUTOCVAR_SAVE(cl_damagetext_2d_pos, vector, '0.47 0.53 0', "2D damage text initial position (X and Y between 0 and 1)");
-AUTOCVAR_SAVE(cl_damagetext_2d_alpha_start, float, 1, "2D damage text initial alpha");
-AUTOCVAR_SAVE(cl_damagetext_2d_alpha_lifetime, float, 1.3, "2D damage text lifetime (alpha fading) in seconds");
-AUTOCVAR_SAVE(cl_damagetext_2d_size_lifetime, float, 3, "2D damage text lifetime (size shrinking) in seconds");
-AUTOCVAR_SAVE(cl_damagetext_2d_velocity, vector, '-25 0 0', "2D damage text move direction (screen coordinates)");
-AUTOCVAR_SAVE(cl_damagetext_2d_overlap_offset, vector, '0 -15 0', "Offset 2D damage text by this much to prevent overlapping (screen coordinates)");
-AUTOCVAR_SAVE(cl_damagetext_2d_close_range, float, 125, "Always use 2D damagetext for hits closer that this");
-AUTOCVAR_SAVE(cl_damagetext_2d_out_of_view, bool, true, "Always use 2D damagetext for hits that occurred off-screen");
-
CLASS(DamageText, Object)
- ATTRIB(DamageText, m_color, vector, autocvar_cl_damagetext_color);
- ATTRIB(DamageText, m_color_friendlyfire, vector, autocvar_cl_damagetext_friendlyfire_color);
- ATTRIB(DamageText, m_size, float, autocvar_cl_damagetext_size_min);
- ATTRIB(DamageText, alpha, float, autocvar_cl_damagetext_alpha_start);
- ATTRIB(DamageText, fade_rate, float, 0);
- ATTRIB(DamageText, m_shrink_rate, float, 0);
- ATTRIB(DamageText, m_group, int, 0);
- ATTRIB(DamageText, m_friendlyfire, bool, false);
- ATTRIB(DamageText, m_healthdamage, int, 0);
- ATTRIB(DamageText, m_armordamage, int, 0);
- ATTRIB(DamageText, m_potential_damage, int, 0);
- ATTRIB(DamageText, m_deathtype, int, 0);
- ATTRIB(DamageText, hit_time, float, 0);
- ATTRIB(DamageText, text, string, string_null);
- ATTRIB(DamageText, m_screen_coords, bool, false);
-
- STATIC_ATTRIB(DamageText, screen_first, DamageText, NULL);
- STATIC_ATTRIB(DamageText, screen_count, int, 0);
-
- void DamageText_draw2d(DamageText this) {
- float since_hit = time - this.hit_time;
- // can't use `dt = hit_time - prev_update_time` because shrinking wouldn't be linear
- float size = this.m_size - since_hit * this.m_shrink_rate * this.m_size;
- float alpha_ = this.alpha - since_hit * this.fade_rate;
- if (alpha_ <= 0 || size <= 0) {
- delete(this);
- return;
- }
-
- vector screen_pos;
- if (this.m_screen_coords) {
- screen_pos = this.origin + since_hit * autocvar_cl_damagetext_2d_velocity;
- } else {
- vector forward, right, up;
- MAKE_VECTORS(view_angles, forward, right, up);
- vector world_offset = since_hit * autocvar_cl_damagetext_velocity_world + autocvar_cl_damagetext_offset_world;
- vector world_pos = this.origin + world_offset.x * forward + world_offset.y * right + world_offset.z * up;
- screen_pos = project_3d_to_2d(world_pos) + since_hit * autocvar_cl_damagetext_velocity_screen + autocvar_cl_damagetext_offset_screen;
- }
- screen_pos.y += size / 2;
-
- if (screen_pos.z >= 0) {
- screen_pos.z = 0;
- vector rgb;
- if (this.m_friendlyfire) {
- rgb = this.m_color_friendlyfire;
- } else {
- rgb = this.m_color;
- }
- if (autocvar_cl_damagetext_color_per_weapon) {
- Weapon w = DEATH_WEAPONOF(this.m_deathtype);
- if (w != WEP_Null) rgb = w.wpcolor;
- }
-
- vector drawfontscale_save = drawfontscale;
- drawfontscale = (size / autocvar_cl_damagetext_size_max) * '1 1 0';
- screen_pos.y -= drawfontscale.x * size / 2;
- drawcolorcodedstring2_builtin(screen_pos, this.text, autocvar_cl_damagetext_size_max * '1 1 0', rgb, alpha_, DRAWFLAG_NORMAL);
- drawfontscale = drawfontscale_save;
- }
- }
- ATTRIB(DamageText, draw2d, void(DamageText), DamageText_draw2d);
-
- void DamageText_update(DamageText this, vector _origin, int _health, int _armor, int _potential_damage, int _deathtype) {
- this.m_healthdamage = _health;
- this.m_armordamage = _armor;
- this.m_potential_damage = _potential_damage;
- this.m_deathtype = _deathtype;
- setorigin(this, _origin);
- if (this.m_screen_coords) {
- this.alpha = autocvar_cl_damagetext_2d_alpha_start;
- } else {
- this.alpha = autocvar_cl_damagetext_alpha_start;
- }
- this.hit_time = time;
-
- int health = rint(this.m_healthdamage / DAMAGETEXT_PRECISION_MULTIPLIER);
- int armor = rint(this.m_armordamage / DAMAGETEXT_PRECISION_MULTIPLIER);
- int total = rint((this.m_healthdamage + this.m_armordamage) / DAMAGETEXT_PRECISION_MULTIPLIER);
- int potential = rint(this.m_potential_damage / DAMAGETEXT_PRECISION_MULTIPLIER);
- int potential_health = rint((this.m_potential_damage - this.m_armordamage) / DAMAGETEXT_PRECISION_MULTIPLIER);
-
- bool redundant = almost_equals_eps(this.m_healthdamage + this.m_armordamage, this.m_potential_damage, 5);
-
- string s = autocvar_cl_damagetext_format;
- s = strreplace("{armor}", (
- (this.m_armordamage == 0 && autocvar_cl_damagetext_format_hide_redundant)
- ? ""
- : sprintf("%d", armor)
- ), s);
- s = strreplace("{potential}", (
- (redundant && autocvar_cl_damagetext_format_hide_redundant)
- ? ""
- : sprintf("%d", potential)
- ), s);
- s = strreplace("{potential_health}", (
- (redundant && autocvar_cl_damagetext_format_hide_redundant)
- ? ""
- : sprintf("%d", potential_health)
- ), s);
-
- s = strreplace("{health}", (
- (health == potential_health || !autocvar_cl_damagetext_format_verbose)
- ? sprintf("%d", health)
- : sprintf("%d (%d)", health, potential_health)
- ), s);
- s = strreplace("{total}", (
- (total == potential || !autocvar_cl_damagetext_format_verbose)
- ? sprintf("%d", total)
- : sprintf("%d (%d)", total, potential)
- ), s);
-
- // futureproofing: remove any remaining (unknown) format strings in case we add new ones in the future
- // so players can use them on new servers and still have working damagetext on old ones
- while (true) {
- int opening_pos = strstrofs(s, "{", 0);
- if (opening_pos == -1) break;
- int closing_pos = strstrofs(s, "}", opening_pos);
- if (closing_pos == -1 || closing_pos <= opening_pos) break;
- s = strcat(
- substring(s, 0, opening_pos),
- substring_range(s, closing_pos + 1, strlen(s))
- );
- }
-
- strcpy(this.text, s);
-
- this.m_size = map_bound_ranges(potential,
- autocvar_cl_damagetext_size_min_damage, autocvar_cl_damagetext_size_max_damage,
- autocvar_cl_damagetext_size_min, autocvar_cl_damagetext_size_max);
- }
-
- CONSTRUCTOR(DamageText, int _group, vector _origin, bool _screen_coords, int _health, int _armor, int _potential_damage, int _deathtype, bool _friendlyfire) {
- CONSTRUCT(DamageText);
- this.m_group = _group;
- this.m_friendlyfire = _friendlyfire;
- this.m_screen_coords = _screen_coords;
- if (_screen_coords) {
- this.fade_rate = 1 / autocvar_cl_damagetext_2d_alpha_lifetime;
- this.m_shrink_rate = 1 / autocvar_cl_damagetext_2d_size_lifetime;
- } else {
- this.fade_rate = 1 / autocvar_cl_damagetext_alpha_lifetime;
- this.m_shrink_rate = 0;
- }
- DamageText_update(this, _origin, _health, _armor, _potential_damage, _deathtype);
- IL_PUSH(g_drawables_2d, this);
- }
-
- DESTRUCTOR(DamageText) {
- 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;
- DamageText_screen_count = 0;
- }
- }
+ ATTRIB(DamageText, m_color, vector, autocvar_cl_damagetext_color);
+ ATTRIB(DamageText, m_color_friendlyfire, vector, autocvar_cl_damagetext_friendlyfire_color);
+ ATTRIB(DamageText, m_size, float, autocvar_cl_damagetext_size_min);
+ ATTRIB(DamageText, alpha, float, autocvar_cl_damagetext_alpha_start);
+ ATTRIB(DamageText, fade_rate, float, 0);
+ ATTRIB(DamageText, m_shrink_rate, float, 0);
+ ATTRIB(DamageText, m_group, int, 0);
+ ATTRIB(DamageText, m_friendlyfire, bool, false);
+ ATTRIB(DamageText, m_healthdamage, int, 0);
+ ATTRIB(DamageText, m_armordamage, int, 0);
+ ATTRIB(DamageText, m_potential_damage, int, 0);
+ ATTRIB(DamageText, m_deathtype, int, 0);
+ ATTRIB(DamageText, hit_time, float, 0);
+ ATTRIB(DamageText, text, string, string_null);
+ ATTRIB(DamageText, m_screen_coords, bool, false);
+
+ STATIC_ATTRIB(DamageText, screen_count, int, 0);
+
+ void DamageText_draw2d(DamageText this)
+ {
+ float since_hit = time - this.hit_time;
+ // can't use `dt = hit_time - prev_update_time` because shrinking wouldn't be linear
+ float size = this.m_size - since_hit * this.m_shrink_rate * this.m_size;
+ float alpha_ = this.alpha - since_hit * this.fade_rate;
+ bool haslifetime = (autocvar_cl_damagetext_lifetime < 0 // negative ignores lifetime
+ || (since_hit < autocvar_cl_damagetext_lifetime));
+ if (alpha_ <= 0 || size <= 0 || !haslifetime)
+ {
+ IL_REMOVE(g_damagetext, this);
+ delete(this);
+ return;
+ }
+
+ vector screen_pos;
+ if (this.m_screen_coords)
+ screen_pos = this.origin + since_hit * autocvar_cl_damagetext_2d_velocity;
+ else
+ {
+ vector forward, right, up;
+ MAKE_VECTORS(view_angles, forward, right, up);
+
+ vector world_offset = since_hit * autocvar_cl_damagetext_velocity_world
+ + autocvar_cl_damagetext_offset_world;
+ vector world_pos = this.origin
+ + world_offset.x * forward
+ + world_offset.y * right
+ + world_offset.z * up;
+
+ screen_pos = project_3d_to_2d(world_pos)
+ + (since_hit * autocvar_cl_damagetext_velocity_screen)
+ + autocvar_cl_damagetext_offset_screen;
+ }
+ screen_pos.y += size / 2;
+
+ // strip trailing spaces
+ string dtext = this.text;
+ int j = strlen(dtext) - 1;
+ while (substring(dtext, j, 1) == " " && j >= 0)
+ --j;
+ if (j < strlen(dtext) - 1)
+ dtext = substring(dtext, 0, j + 1);
+
+ // strip leading spaces
+ j = 0;
+ while (substring(dtext, j, 1) == " " && j < strlen(dtext))
+ ++j;
+ if (j > 0)
+ dtext = substring(dtext, j, strlen(dtext) - j);
+
+ // Center damage text
+ screen_pos.x -= stringwidth(dtext, true, hud_fontsize * 2) * 0.5;
+
+ if (screen_pos.z >= 0)
+ {
+ screen_pos.z = 0;
+ vector rgb;
+ if (this.m_friendlyfire)
+ rgb = this.m_color_friendlyfire;
+ else
+ rgb = this.m_color;
+
+ if (autocvar_cl_damagetext_color_per_weapon)
+ {
+ Weapon w = DEATH_WEAPONOF(this.m_deathtype);
+ if (w != WEP_Null) rgb = w.wpcolor;
+ }
+
+ vector drawfontscale_save = drawfontscale;
+ drawfontscale = (size / autocvar_cl_damagetext_size_max) * '1 1 0';
+ screen_pos.y -= drawfontscale.x * size / 2;
+ drawcolorcodedstring2_builtin(screen_pos, this.text,
+ autocvar_cl_damagetext_size_max * '1 1 0',
+ rgb, alpha_, DRAWFLAG_NORMAL);
+ drawfontscale = drawfontscale_save;
+ }
+ }
+ ATTRIB(DamageText, draw2d, void(DamageText), DamageText_draw2d);
+
+ void DamageText_update(DamageText this, vector _origin, bool screen_coords,
+ int _health, int _armor, int _potential_damage, int _deathtype)
+ {
+ this.m_healthdamage = _health;
+ this.m_armordamage = _armor;
+ this.m_potential_damage = _potential_damage;
+ this.m_deathtype = _deathtype;
+ this.hit_time = time;
+ setorigin(this, _origin);
+ this.m_screen_coords = screen_coords;
+ if (this.m_screen_coords)
+ this.alpha = autocvar_cl_damagetext_2d_alpha_start;
+ else
+ this.alpha = autocvar_cl_damagetext_alpha_start;
+
+ int health = rint(this.m_healthdamage
+ / DAMAGETEXT_PRECISION_MULTIPLIER);
+ int armor = rint(this.m_armordamage
+ / DAMAGETEXT_PRECISION_MULTIPLIER);
+ int total = rint((this.m_healthdamage + this.m_armordamage)
+ / DAMAGETEXT_PRECISION_MULTIPLIER);
+ int potential = rint(this.m_potential_damage
+ / DAMAGETEXT_PRECISION_MULTIPLIER);
+ int potential_health = rint((this.m_potential_damage - this.m_armordamage)
+ / DAMAGETEXT_PRECISION_MULTIPLIER);
+
+ bool redundant = almost_equals_eps(this.m_healthdamage + this.m_armordamage,
+ this.m_potential_damage, 5);
+
+ string s = autocvar_cl_damagetext_format;
+ s = strreplace("{armor}", (
+ (this.m_armordamage == 0 && autocvar_cl_damagetext_format_hide_redundant)
+ ? ""
+ : sprintf("%d", armor)
+ ), s);
+ s = strreplace("{potential}", (
+ (redundant && autocvar_cl_damagetext_format_hide_redundant)
+ ? ""
+ : sprintf("%d", potential)
+ ), s);
+ s = strreplace("{potential_health}", (
+ (redundant && autocvar_cl_damagetext_format_hide_redundant)
+ ? ""
+ : sprintf("%d", potential_health)
+ ), s);
+
+ s = strreplace("{health}", (
+ (health == potential_health || !autocvar_cl_damagetext_format_verbose)
+ ? sprintf("%d", health)
+ : sprintf("%d (%d)", health, potential_health)
+ ), s);
+ s = strreplace("{total}", (
+ (total == potential || !autocvar_cl_damagetext_format_verbose)
+ ? sprintf("%d", total)
+ : sprintf("%d (%d)", total, potential)
+ ), s);
+
+ // futureproofing: remove any remaining (unknown) format strings
+ // in case we add new ones in the future so players can use them
+ // on new servers and still have working damagetext on old ones
+ while (true)
+ {
+ int opening_pos = strstrofs(s, "{", 0);
+ if (opening_pos == -1) break;
+ int closing_pos = strstrofs(s, "}", opening_pos);
+ if (closing_pos == -1 || closing_pos <= opening_pos) break;
+ s = strcat(
+ substring(s, 0, opening_pos),
+ substring_range(s, closing_pos + 1, strlen(s))
+ );
+ }
+
+ strcpy(this.text, s);
+
+ this.m_size = map_bound_ranges(potential,
+ autocvar_cl_damagetext_size_min_damage, autocvar_cl_damagetext_size_max_damage,
+ autocvar_cl_damagetext_size_min, autocvar_cl_damagetext_size_max);
+ }
+
+ CONSTRUCTOR(DamageText, int _group, vector _origin, bool _screen_coords,
+ int _health, int _armor, int _potential_damage, int _deathtype, bool _friendlyfire)
+ {
+ CONSTRUCT(DamageText);
+ this.m_group = _group;
+ this.m_friendlyfire = _friendlyfire;
+ this.m_screen_coords = _screen_coords;
+ if (_screen_coords)
+ {
+ if (autocvar_cl_damagetext_2d_alpha_lifetime)
+ this.fade_rate = 1 / autocvar_cl_damagetext_2d_alpha_lifetime;
+ if (autocvar_cl_damagetext_2d_size_lifetime)
+ this.m_shrink_rate = 1 / autocvar_cl_damagetext_2d_size_lifetime;
+ }
+ else
+ {
+ if (autocvar_cl_damagetext_alpha_lifetime)
+ this.fade_rate = 1 / autocvar_cl_damagetext_alpha_lifetime;
+ this.m_shrink_rate = 0;
+ }
+ DamageText_update(this, _origin, _screen_coords,
+ _health, _armor, _potential_damage, _deathtype);
+ IL_PUSH(g_damagetext, this);
+ }
+
+ DESTRUCTOR(DamageText)
+ {
+ strfree(this.text);
+ --DamageText_screen_count;
+ }
ENDCLASS(DamageText)
-float current_alpha(entity damage_text) {
- // alpha doesn't change - actual alpha is always calculated from the initial value
- return damage_text.alpha - (time - damage_text.hit_time) * damage_text.fade_rate;
+float current_alpha(entity damage_text)
+{
+ // alpha doesn't change - actual alpha is always calculated from the initial value
+ return damage_text.alpha - (time - damage_text.hit_time) * damage_text.fade_rate;
}
NET_HANDLE(damagetext, bool isNew)
{
- make_pure(this);
- int server_entity_index = ReadByte();
- int deathtype = ReadInt24_t();
- int flags = ReadByte();
- bool friendlyfire = flags & DTFLAG_SAMETEAM;
-
- int health, armor, potential_damage;
- if (flags & DTFLAG_BIG_HEALTH) health = ReadInt24_t();
- else health = ReadShort();
- if (flags & DTFLAG_NO_ARMOR) armor = 0;
- else if (flags & DTFLAG_BIG_ARMOR) armor = ReadInt24_t();
- else armor = ReadShort();
- if (flags & DTFLAG_NO_POTENTIAL) potential_damage = health + armor;
- else if (flags & DTFLAG_BIG_POTENTIAL) potential_damage = ReadInt24_t();
- else potential_damage = ReadShort();
-
- return = true;
- if (!isNew) return;
- if (autocvar_cl_damagetext == 0) return;
- if (friendlyfire) {
- if (autocvar_cl_damagetext_friendlyfire == 0) return;
- if (autocvar_cl_damagetext_friendlyfire == 1 && health == 0 && armor == 0) return;
- }
-
- int client_entity_index = server_entity_index - 1;
- entity entcs = entcs_receiver(client_entity_index);
-
- bool can_use_3d = entcs && entcs.has_origin;
- bool too_close = vdist(entcs.origin - view_origin, <, autocvar_cl_damagetext_2d_close_range);
- bool prefer_in_view = autocvar_cl_damagetext_2d_out_of_view && !projected_on_screen(project_3d_to_2d(entcs.origin));
- bool prefer_2d = spectatee_status != -1 && autocvar_cl_damagetext_2d && (too_close || prefer_in_view);
-
- if (can_use_3d && !prefer_2d) {
- // world coords
- // 1 as min because shotgun sends damagetext per pellet (see https://gitlab.com/xonotic/xonotic-data.pk3dir/issues/1994).
- for (entity e = findradius(entcs.origin, max(autocvar_cl_damagetext_accumulate_range, 1)); e; e = e.chain) {
- if (e.instanceOfDamageText
- && !e.m_screen_coords // we're using origin for both world coords and screen coords so avoid mismatches
- && e.m_group == server_entity_index
- && current_alpha(e) > autocvar_cl_damagetext_accumulate_alpha_rel * autocvar_cl_damagetext_alpha_start) {
- DamageText_update(e, entcs.origin, e.m_healthdamage + health, e.m_armordamage + armor, e.m_potential_damage + potential_damage, deathtype);
- return;
- }
- }
- make_impure(NEW(DamageText, server_entity_index, entcs.origin, false, health, armor, potential_damage, deathtype, friendlyfire));
- } else if (autocvar_cl_damagetext_2d && spectatee_status != -1) {
- // screen coords only
- vector screen_pos = vec2(vid_conwidth * autocvar_cl_damagetext_2d_pos.x, vid_conheight * autocvar_cl_damagetext_2d_pos.y);
- IL_EACH(g_drawables_2d, it.instanceOfDamageText && it.m_screen_coords && it.m_group == server_entity_index, {
- DamageText_update(it, screen_pos, it.m_healthdamage + health, it.m_armordamage + armor, it.m_potential_damage + potential_damage, deathtype);
- return;
- });
-
- // when hitting multiple enemies, dmgtext would overlap
- if (DamageText_screen_first == NULL) {
- DamageText dt = NEW(DamageText, server_entity_index, screen_pos, true, health, armor, potential_damage, deathtype, friendlyfire);
- make_impure(dt);
- DamageText_screen_first = dt;
- DamageText_screen_count = 1;
- } else {
- screen_pos += autocvar_cl_damagetext_2d_overlap_offset * DamageText_screen_count;
- DamageText_screen_count++;
- make_impure(NEW(DamageText, server_entity_index, screen_pos, true, health, armor, potential_damage, deathtype, friendlyfire));
- }
- }
+ make_pure(this);
+ int server_entity_index = ReadByte();
+ int deathtype = ReadInt24_t();
+ int flags = ReadByte();
+ bool friendlyfire = flags & DTFLAG_SAMETEAM;
+
+ int health, armor, potential_damage;
+ if (flags & DTFLAG_BIG_HEALTH) health = ReadInt24_t();
+ else health = ReadShort();
+ if (flags & DTFLAG_NO_ARMOR) armor = 0;
+ else if (flags & DTFLAG_BIG_ARMOR) armor = ReadInt24_t();
+ else armor = ReadShort();
+ if (flags & DTFLAG_NO_POTENTIAL) potential_damage = health + armor;
+ else if (flags & DTFLAG_BIG_POTENTIAL) potential_damage = ReadInt24_t();
+ else potential_damage = ReadShort();
+
+ return = true;
+ if (!isNew) return;
+ if (autocvar_cl_damagetext == 0) return;
+ if (friendlyfire)
+ {
+ if (autocvar_cl_damagetext_friendlyfire == 0)
+ return;
+
+ if (autocvar_cl_damagetext_friendlyfire == 1
+ && health == 0 && armor == 0)
+ return;
+ }
+
+ int client_entity_index = server_entity_index - 1;
+ entity entcs = entcs_receiver(client_entity_index);
+
+ bool can_use_3d = entcs && entcs.has_origin;
+ bool too_close = vdist(entcs.origin - view_origin, <, autocvar_cl_damagetext_2d_close_range);
+ bool prefer_in_view = autocvar_cl_damagetext_2d_out_of_view && !projected_on_screen(project_3d_to_2d(entcs.origin));
+ bool prefer_2d = spectatee_status != -1 && autocvar_cl_damagetext_2d && (too_close || prefer_in_view);
+
+ vector position;
+ bool is2d;
+ entity entDT = NULL; // which DT to update
+
+ float alphathreshold = autocvar_cl_damagetext_accumulate_alpha_rel
+ * autocvar_cl_damagetext_alpha_start;
+
+ // check if this entity already has a DamageText for it
+ IL_EACH(g_damagetext, it.m_group == server_entity_index, {
+ // if the time window where damage accumulates closes,
+ // disown the parent entity from this DamageText
+ // and (likely) give the entity a new DT afterwards
+ // this should only cancel damage accumulation for this DT
+ if ((autocvar_cl_damagetext_accumulate_lifetime >= 0) // negative never disowns
+ && (time - it.hit_time > autocvar_cl_damagetext_accumulate_lifetime)
+ && (current_alpha(it) > alphathreshold))
+ {
+ it.m_group = 0;
+ }
+ else
+ {
+ health += it.m_healthdamage;
+ armor += it.m_armordamage;
+ potential_damage += it.m_potential_damage;
+
+ entDT = it;
+ }
+ break;
+ });
+
+ if (can_use_3d && !prefer_2d)
+ {
+ // world coords
+ is2d = false;
+ position = entcs.origin;
+
+ if (entDT)
+ goto updateDT;
+
+ // 3D DamageTexts can later be changed into 2D,
+ // increment this here just in case
+ ++DamageText_screen_count;
+ goto spawnnewDT;
+ }
+ else if (autocvar_cl_damagetext_2d && spectatee_status != -1)
+ {
+ // screen coords only
+ is2d = true;
+ position = vec2(vid_conwidth * autocvar_cl_damagetext_2d_pos.x,
+ vid_conheight * autocvar_cl_damagetext_2d_pos.y);
+
+ if (entDT)
+ goto updateDT;
+
+ // offset when hitting multiple enemies, dmgtext would overlap
+ position += autocvar_cl_damagetext_2d_overlap_offset * DamageText_screen_count++;
+ goto spawnnewDT;
+ }
+ return;
+
+LABEL(updateDT)
+ DamageText_update(entDT, position, is2d, health, armor, potential_damage, deathtype);
+ return;
+
+LABEL(spawnnewDT)
+ NEW(DamageText, server_entity_index, position, is2d,
+ health, armor, potential_damage, deathtype, friendlyfire);
+ return;
}
#pragma once
+
+bool autocvar_cl_damagetext;
+string autocvar_cl_damagetext_format;
+bool autocvar_cl_damagetext_format_verbose;
+bool autocvar_cl_damagetext_format_hide_redundant;
+vector autocvar_cl_damagetext_color;
+bool autocvar_cl_damagetext_color_per_weapon;
+float autocvar_cl_damagetext_size_min;
+float autocvar_cl_damagetext_size_min_damage;
+float autocvar_cl_damagetext_size_max;
+float autocvar_cl_damagetext_size_max_damage;
+float autocvar_cl_damagetext_alpha_start;
+float autocvar_cl_damagetext_alpha_lifetime;
+vector autocvar_cl_damagetext_velocity_world;
+vector autocvar_cl_damagetext_offset_world;
+float autocvar_cl_damagetext_accumulate_alpha_rel;
+int autocvar_cl_damagetext_friendlyfire;
+vector autocvar_cl_damagetext_friendlyfire_color;
+
+bool autocvar_cl_damagetext_2d;
+vector autocvar_cl_damagetext_2d_pos;
+float autocvar_cl_damagetext_2d_alpha_start;
+float autocvar_cl_damagetext_2d_alpha_lifetime;
+float autocvar_cl_damagetext_2d_size_lifetime;
+vector autocvar_cl_damagetext_2d_velocity;
+vector autocvar_cl_damagetext_2d_overlap_offset;
+float autocvar_cl_damagetext_2d_close_range;
+bool autocvar_cl_damagetext_2d_out_of_view;
+vector autocvar_cl_damagetext_velocity_screen;
+vector autocvar_cl_damagetext_offset_screen;
+
+// TODO: remove the value init and sort them above properly after next (0.9) release
+// or the release after it to support the old-stable release
+// this can't be done now as players would lack these from their configs then
+#if 0
+float autocvar_cl_damagetext_lifetime = -1;
+float autocvar_cl_damagetext_accumulate_lifetime = -1;
+#else
+AUTOCVAR_SAVE(cl_damagetext_lifetime, float, -1, "Damage text lifetime, edit this if you wish for damage text to disappear before it fades out");
+AUTOCVAR_SAVE(cl_damagetext_accumulate_lifetime, float, -1, "Only update existing damage text when it is younger than this many seconds, negative always updates");
+#endif
bool write_damagetext(entity this, entity client, int sf)
{
- entity attacker = this.realowner;
- entity hit = this.enemy;
- int flags = this.dent_net_flags;
- int deathtype = this.dent_net_deathtype;
- float health = this.dent_net_health;
- float armor = this.dent_net_armor;
- float potential_damage = this.dent_net_potential;
- if (!(
- (SV_DAMAGETEXT_ALL()) ||
- (SV_DAMAGETEXT_PLAYERS() && client == attacker) ||
- (SV_DAMAGETEXT_SPECTATORS_ONLY() && IS_SPEC(client) && client.enemy == attacker) ||
- (SV_DAMAGETEXT_SPECTATORS_ONLY() && IS_OBSERVER(client))
- )) return false;
+ entity attacker = this.realowner;
+ entity hit = this.enemy;
+ int flags = this.dent_net_flags;
+ int deathtype = this.dent_net_deathtype;
+ float health = this.dent_net_health;
+ float armor = this.dent_net_armor;
+ float potential_damage = this.dent_net_potential;
+ if (!(
+ (SV_DAMAGETEXT_ALL()) ||
+ (SV_DAMAGETEXT_PLAYERS() && client == attacker) ||
+ (SV_DAMAGETEXT_SPECTATORS_ONLY() && IS_SPEC(client) && client.enemy == attacker) ||
+ (SV_DAMAGETEXT_SPECTATORS_ONLY() && IS_OBSERVER(client))
+ )) return false;
- WriteHeader(MSG_ENTITY, damagetext);
- WriteByte(MSG_ENTITY, etof(hit));
- WriteInt24_t(MSG_ENTITY, deathtype);
- WriteByte(MSG_ENTITY, flags);
+ WriteHeader(MSG_ENTITY, damagetext);
+ WriteByte(MSG_ENTITY, etof(hit));
+ WriteInt24_t(MSG_ENTITY, deathtype);
+ WriteByte(MSG_ENTITY, flags);
- // we need to send a few decimal places to minimize errors when accumulating damage
- // sending them multiplied saves bandwidth compared to using WriteCoord,
- // however if the multiplied damage would be too much for (signed) short, we send an int24
- if (flags & DTFLAG_BIG_HEALTH) WriteInt24_t(MSG_ENTITY, health * DAMAGETEXT_PRECISION_MULTIPLIER);
- else WriteShort(MSG_ENTITY, health * DAMAGETEXT_PRECISION_MULTIPLIER);
- if (!(flags & DTFLAG_NO_ARMOR))
- {
- if (flags & DTFLAG_BIG_ARMOR) WriteInt24_t(MSG_ENTITY, armor * DAMAGETEXT_PRECISION_MULTIPLIER);
- else WriteShort(MSG_ENTITY, armor * DAMAGETEXT_PRECISION_MULTIPLIER);
- }
- if (!(flags & DTFLAG_NO_POTENTIAL))
- {
- if (flags & DTFLAG_BIG_POTENTIAL) WriteInt24_t(MSG_ENTITY, potential_damage * DAMAGETEXT_PRECISION_MULTIPLIER);
- else WriteShort(MSG_ENTITY, potential_damage * DAMAGETEXT_PRECISION_MULTIPLIER);
- }
- return true;
+ // we need to send a few decimal places to minimize errors when accumulating damage
+ // sending them multiplied saves bandwidth compared to using WriteCoord,
+ // however if the multiplied damage would be too much for (signed) short, we send an int24
+ if (flags & DTFLAG_BIG_HEALTH) WriteInt24_t(MSG_ENTITY, health * DAMAGETEXT_PRECISION_MULTIPLIER);
+ else WriteShort(MSG_ENTITY, health * DAMAGETEXT_PRECISION_MULTIPLIER);
+ if (!(flags & DTFLAG_NO_ARMOR))
+ {
+ if (flags & DTFLAG_BIG_ARMOR) WriteInt24_t(MSG_ENTITY, armor * DAMAGETEXT_PRECISION_MULTIPLIER);
+ else WriteShort(MSG_ENTITY, armor * DAMAGETEXT_PRECISION_MULTIPLIER);
+ }
+ if (!(flags & DTFLAG_NO_POTENTIAL))
+ {
+ if (flags & DTFLAG_BIG_POTENTIAL) WriteInt24_t(MSG_ENTITY, potential_damage * DAMAGETEXT_PRECISION_MULTIPLIER);
+ else WriteShort(MSG_ENTITY, potential_damage * DAMAGETEXT_PRECISION_MULTIPLIER);
+ }
+ return true;
}
MUTATOR_HOOKFUNCTION(damagetext, PlayerDamaged) {
- if (SV_DAMAGETEXT_DISABLED()) return;
- entity attacker = M_ARGV(0, entity);
- entity hit = M_ARGV(1, entity); if (hit == attacker) return;
- float health = M_ARGV(2, float);
- float armor = M_ARGV(3, float);
- int deathtype = M_ARGV(5, int);
- float potential_damage = M_ARGV(6, float);
- if(DEATH_WEAPONOF(deathtype) == WEP_VAPORIZER) return;
- if(deathtype == DEATH_FIRE.m_id || deathtype == DEATH_BUFF.m_id) return; // TODO: exclude damage over time and thorn effects
+ if (SV_DAMAGETEXT_DISABLED()) return;
+ entity attacker = M_ARGV(0, entity);
+ entity hit = M_ARGV(1, entity); if (hit == attacker) return;
+ float health = M_ARGV(2, float);
+ float armor = M_ARGV(3, float);
+ int deathtype = M_ARGV(5, int);
+ float potential_damage = M_ARGV(6, float);
+ if(DEATH_WEAPONOF(deathtype) == WEP_VAPORIZER) return;
- int flags = 0;
- if (SAME_TEAM(hit, attacker)) flags |= DTFLAG_SAMETEAM;
- if (health >= DAMAGETEXT_SHORT_LIMIT) flags |= DTFLAG_BIG_HEALTH;
- if (armor >= DAMAGETEXT_SHORT_LIMIT) flags |= DTFLAG_BIG_ARMOR;
- if (potential_damage >= DAMAGETEXT_SHORT_LIMIT) flags |= DTFLAG_BIG_POTENTIAL;
- if (!armor) flags |= DTFLAG_NO_ARMOR;
- if (almost_equals_eps(armor + health, potential_damage, 5)) flags |= DTFLAG_NO_POTENTIAL;
+ int flags = 0;
+ if (SAME_TEAM(hit, attacker)) flags |= DTFLAG_SAMETEAM;
+ if (health >= DAMAGETEXT_SHORT_LIMIT) flags |= DTFLAG_BIG_HEALTH;
+ if (armor >= DAMAGETEXT_SHORT_LIMIT) flags |= DTFLAG_BIG_ARMOR;
+ if (potential_damage >= DAMAGETEXT_SHORT_LIMIT) flags |= DTFLAG_BIG_POTENTIAL;
+ if (!armor) flags |= DTFLAG_NO_ARMOR;
+ if (almost_equals_eps(armor + health, potential_damage, 5)) flags |= DTFLAG_NO_POTENTIAL;
- entity net_text = new_pure(net_damagetext);
- net_text.realowner = attacker;
- net_text.enemy = hit;
- net_text.dent_net_flags = flags;
- net_text.dent_net_deathtype = deathtype;
- net_text.dent_net_health = health;
- net_text.dent_net_armor = armor;
- net_text.dent_net_potential = potential_damage;
+ entity net_text = new_pure(net_damagetext);
+ net_text.realowner = attacker;
+ net_text.enemy = hit;
+ net_text.dent_net_flags = flags;
+ net_text.dent_net_deathtype = deathtype;
+ net_text.dent_net_health = health;
+ net_text.dent_net_armor = armor;
+ net_text.dent_net_potential = potential_damage;
- setthink(net_text, SUB_Remove);
- net_text.nextthink = (time > 10) ? (time + 0.5) : 10; // allow a buffer from start time for clients to load in
+ setthink(net_text, SUB_Remove);
+ net_text.nextthink = (time > 10) ? (time + 0.5) : 10; // allow a buffer from start time for clients to load in
- Net_LinkEntity(net_text, false, 0, write_damagetext);
+ Net_LinkEntity(net_text, false, 0, write_damagetext);
}
animdecide_setaction(actor, ANIMACTION_SHOOT, true);
}
}
- if (WEP_CVAR(okhmg, reload_ammo) && actor.(weaponentity).clip_load < WEP_CVAR_PRI(okhmg, ammo))
+ if (WEP_CVAR(okhmg, reload_ammo) && actor.(weaponentity).clip_load < WEP_CVAR_PRI(okhmg, ammo))
{
// Forced reload.
- thiswep.wr_reload(thiswep, actor, weaponentity);
+ thiswep.wr_reload(thiswep, actor, weaponentity);
return;
}
if (fire & 1) // Primary attack
METHOD(OverkillHeavyMachineGun, wr_reload, void(entity thiswep, entity actor, .entity weaponentity))
{
- W_Reload(actor, weaponentity, WEP_CVAR_PRI(okhmg, ammo), SND_RELOAD);
+ W_Reload(actor, weaponentity, WEP_CVAR_PRI(okhmg, ammo), SND_RELOAD);
}
METHOD(OverkillHeavyMachineGun, wr_suicidemessage, Notification(entity thiswep))
{
- return WEAPON_THINKING_WITH_PORTALS;
+ return WEAPON_THINKING_WITH_PORTALS;
}
METHOD(OverkillHeavyMachineGun, wr_killmessage, Notification(entity thiswep))
{
- if(w_deathtype & HITTYPE_SECONDARY)
- return WEAPON_OVERKILL_HMG_MURDER_SNIPE;
- else
- return WEAPON_OVERKILL_HMG_MURDER_SPRAY;
+ if(w_deathtype & HITTYPE_SECONDARY)
+ return WEAPON_OVERKILL_HMG_MURDER_SNIPE;
+ else
+ return WEAPON_OVERKILL_HMG_MURDER_SPRAY;
}
#endif
METHOD(OverkillHeavyMachineGun, wr_impacteffect, void(entity thiswep, entity actor))
{
- vector org2 = w_org + w_backoff * 2;
- pointparticles(EFFECT_MACHINEGUN_IMPACT, org2, w_backoff * 1000, 1);
- if(!w_issilent)
- sound(actor, CH_SHOTS, SND_RIC_RANDOM(), VOL_BASE, ATTEN_NORM);
+ vector org2 = w_org + w_backoff * 2;
+ pointparticles(EFFECT_MACHINEGUN_IMPACT, org2, w_backoff * 1000, 1);
+ if(!w_issilent)
+ sound(actor, CH_SHOTS, SND_RIC_RANDOM(), VOL_BASE, ATTEN_NORM);
}
#endif
P(class, prefix, weaponstartoverride, float, NONE) \
P(class, prefix, weaponstart, float, NONE) \
P(class, prefix, weaponthrowable, float, NONE) \
- END()
- W_PROPS(X, OverkillHeavyMachineGun, okhmg)
+ END()
+ W_PROPS(X, OverkillHeavyMachineGun, okhmg)
#undef X
ENDCLASS(OverkillHeavyMachineGun)
/* spawnfunc */ ATTRIB(OverkillMachineGun, m_canonical_spawnfunc, string, "weapon_okmachinegun");
/* ammotype */ ATTRIB(OverkillMachineGun, ammo_type, Resource, RES_BULLETS);
/* impulse */ ATTRIB(OverkillMachineGun, impulse, int, 3);
-/* flags */ ATTRIB(OverkillMachineGun, spawnflags, int, WEP_FLAG_HIDDEN | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN | WEP_FLAG_PENETRATEWALLS | WEP_FLAG_MUTATORBLOCKED);
-/* rating */ ATTRIB(OverkillMachineGun, bot_pickupbasevalue, float, 7000);
-/* color */ ATTRIB(OverkillMachineGun, wpcolor, vector, '1 1 0');
+/* flags */ ATTRIB(OverkillMachineGun, spawnflags, int, WEP_FLAG_HIDDEN | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN | WEP_FLAG_PENETRATEWALLS | WEP_FLAG_MUTATORBLOCKED);
+/* rating */ ATTRIB(OverkillMachineGun, bot_pickupbasevalue, float, 7000);
+/* color */ ATTRIB(OverkillMachineGun, wpcolor, vector, '1 1 0');
/* modelname */ ATTRIB(OverkillMachineGun, mdl, string, "ok_mg");
#ifdef GAMEQC
-/* model */ ATTRIB(OverkillMachineGun, m_model, Model, MDL_OK_MG_ITEM);
+/* model */ ATTRIB(OverkillMachineGun, m_model, Model, MDL_OK_MG_ITEM);
/* flash mdl */ ATTRIB(OverkillMachineGun, m_muzzlemodel, Model, MDL_MACHINEGUN_MUZZLEFLASH);
/* flash eff */ ATTRIB(OverkillMachineGun, m_muzzleeffect, entity, EFFECT_MACHINEGUN_MUZZLEFLASH);
#endif
/* crosshair */ ATTRIB(OverkillMachineGun, w_crosshair, string, "gfx/crosshairuzi");
/* crosshair */ ATTRIB(OverkillMachineGun, w_crosshair_size, float, 0.6);
-/* wepimg */ ATTRIB(OverkillMachineGun, model2, string, "ok_weapon_smg");
+/* wepimg */ ATTRIB(OverkillMachineGun, model2, string, "ok_weapon_smg");
/* refname */ ATTRIB(OverkillMachineGun, netname, string, "okmachinegun");
/* wepname */ ATTRIB(OverkillMachineGun, m_name, string, _("Overkill MachineGun"));
METHOD(OverkillRocketPropelledChainsaw, wr_aim, void(entity thiswep, entity actor, .entity weaponentity))
{
- PHYS_INPUT_BUTTON_ATCK(actor) = bot_aim(actor, weaponentity, WEP_CVAR_PRI(okrpc, speed), 0, WEP_CVAR_PRI(okrpc, lifetime), false, true);
+ PHYS_INPUT_BUTTON_ATCK(actor) = bot_aim(actor, weaponentity, WEP_CVAR_PRI(okrpc, speed), 0, WEP_CVAR_PRI(okrpc, lifetime), false, true);
}
METHOD(OverkillRocketPropelledChainsaw, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire))
METHOD(OverkillRocketPropelledChainsaw, wr_reload, void(entity thiswep, entity actor, .entity weaponentity))
{
- W_Reload(actor, weaponentity, WEP_CVAR_PRI(okrpc, ammo), SND_RELOAD);
+ W_Reload(actor, weaponentity, WEP_CVAR_PRI(okrpc, ammo), SND_RELOAD);
}
METHOD(OverkillRocketPropelledChainsaw, wr_suicidemessage, Notification(entity thiswep))
{
- if((w_deathtype & HITTYPE_BOUNCE) || (w_deathtype & HITTYPE_SPLASH))
- return WEAPON_OVERKILL_RPC_SUICIDE_SPLASH;
- else
- return WEAPON_OVERKILL_RPC_SUICIDE_DIRECT;
+ if((w_deathtype & HITTYPE_BOUNCE) || (w_deathtype & HITTYPE_SPLASH))
+ return WEAPON_OVERKILL_RPC_SUICIDE_SPLASH;
+ else
+ return WEAPON_OVERKILL_RPC_SUICIDE_DIRECT;
}
METHOD(OverkillRocketPropelledChainsaw, wr_killmessage, Notification(entity thiswep))
{
- if(w_deathtype & HITTYPE_SECONDARY)
- return WEAPON_BLASTER_MURDER;
- else if((w_deathtype & HITTYPE_BOUNCE) || (w_deathtype & HITTYPE_SPLASH))
- return WEAPON_OVERKILL_RPC_MURDER_SPLASH;
- else
- return WEAPON_OVERKILL_RPC_MURDER_DIRECT;
+ if(w_deathtype & HITTYPE_SECONDARY)
+ return WEAPON_BLASTER_MURDER;
+ else if((w_deathtype & HITTYPE_BOUNCE) || (w_deathtype & HITTYPE_SPLASH))
+ return WEAPON_OVERKILL_RPC_MURDER_SPLASH;
+ else
+ return WEAPON_OVERKILL_RPC_MURDER_DIRECT;
}
#endif
METHOD(OverkillRocketPropelledChainsaw, wr_impacteffect, void(entity thiswep, entity actor))
{
- vector org2 = w_org + w_backoff * 2;
- pointparticles(EFFECT_ROCKET_EXPLODE, org2, '0 0 0', 1);
- if(!w_issilent)
- sound(actor, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM);
+ vector org2 = w_org + w_backoff * 2;
+ pointparticles(EFFECT_ROCKET_EXPLODE, org2, '0 0 0', 1);
+ if(!w_issilent)
+ sound(actor, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM);
}
#endif
P(class, prefix, speed, float, SEC) \
P(class, prefix, spread, float, SEC) \
P(class, prefix, reload_ammo, float, NONE) \
- P(class, prefix, reload_time, float, NONE) \
- P(class, prefix, switchdelay_drop, float, NONE) \
- P(class, prefix, switchdelay_raise, float, NONE) \
- P(class, prefix, weaponreplace, string, NONE) \
- P(class, prefix, weaponstartoverride, float, NONE) \
- P(class, prefix, weaponstart, float, NONE) \
- P(class, prefix, weaponthrowable, float, NONE) \
- END()
- W_PROPS(X, OverkillRocketPropelledChainsaw, okrpc)
+ P(class, prefix, reload_time, float, NONE) \
+ P(class, prefix, switchdelay_drop, float, NONE) \
+ P(class, prefix, switchdelay_raise, float, NONE) \
+ P(class, prefix, weaponreplace, string, NONE) \
+ P(class, prefix, weaponstartoverride, float, NONE) \
+ P(class, prefix, weaponstart, float, NONE) \
+ P(class, prefix, weaponthrowable, float, NONE) \
+ END()
+ W_PROPS(X, OverkillRocketPropelledChainsaw, okrpc)
#undef X
ENDCLASS(OverkillRocketPropelledChainsaw)
}
SPAWNFUNC_ITEM(item_invisibility, ITEM_Invisibility)
+SPAWNFUNC_ITEM(item_buff_invisibility, ITEM_Invisibility)
CLASS(Invisibility, Powerups)
ATTRIB(Invisibility, netname, string, "invisibility");
}
SPAWNFUNC_ITEM(item_speed, ITEM_Speed)
+SPAWNFUNC_ITEM(item_buff_speed, ITEM_Speed)
CLASS(Speed, Powerups)
ATTRIB(Speed, netname, string, "speed");
// needs to be called before physics are run!
if(IS_REAL_CLIENT(this))
PM_UpdateButtons(this, CS(this));
+#elif defined(CSQC)
+ if(this.last_pushed && !WarpZoneLib_ExactTrigger_Touch(this.last_pushed, this, false))
+ this.last_pushed = NULL;
#endif
sys_phys_update(this, PHYS_INPUT_TIMELENGTH);
PlayerStats_GameReport_FinalizePlayer(it);
});
- if(autocvar_g_playerstats_gamereport_uri != "")
- {
- PlayerStats_GameReport_DelayMapVote = true;
- url_multi_fopen(
- autocvar_g_playerstats_gamereport_uri,
- FILE_APPEND,
- PlayerStats_GameReport_Handler,
- NULL
- );
- }
- else
+ if(autocvar_g_playerstats_gamereport_uri == "" || warmup_stage)
{
PlayerStats_GameReport_DelayMapVote = false;
db_close(PS_GR_OUT_DB);
PS_GR_OUT_DB = -1;
+ return;
}
+
+ PlayerStats_GameReport_DelayMapVote = true;
+ url_multi_fopen(
+ autocvar_g_playerstats_gamereport_uri,
+ FILE_APPEND,
+ PlayerStats_GameReport_Handler,
+ NULL
+ );
}
void PlayerStats_GameReport_Init() // initiated before InitGameplayMode so that scores are added properly
* C: number of "unpure" cvar changes
* U: UDP port number of the server
* D: duration of the match
+ * RP: number of rounds played
* L: "ladder" in which the server is participating in
* P: player ID of an existing player; this also sets the owner for all following "n", "e" and "t" lines (lower case!)
* Q: team number of an existing team (format: team#NN); this also sets the owner for all following "e" lines (lower case!)
url_fputs(fh, sprintf("C %d\n", cvar_purechanges_count));
url_fputs(fh, sprintf("U %d\n", cvar("port")));
url_fputs(fh, sprintf("D %f\n", max(0, time - game_starttime)));
- url_fputs(fh, sprintf("L %s\n", autocvar_g_playerstats_gamereport_ladder));
+ if (rounds_played > 0)
+ url_fputs(fh, sprintf("RP %d\n", rounds_played));
+ if (autocvar_g_playerstats_gamereport_ladder != "")
+ url_fputs(fh, sprintf("L %s\n", autocvar_g_playerstats_gamereport_ladder));
// TEAMS
if(teamplay)
int autocvar_sv_gameplayfix_stepdown = 2;
float autocvar_sv_gameplayfix_stepdown_maxspeed = 0;
int autocvar_sv_gameplayfix_stepmultipletimes = 1;
-int autocvar_sv_gameplayfix_unstickplayers = 0;
+int autocvar_sv_gameplayfix_unstickplayers;
int autocvar_sv_gameplayfix_fixedcheckwatertransition = 1;
int autocvar_sv_gameplayfix_slidemoveprojectiles = 1;
int autocvar_sv_gameplayfix_grenadebouncedownslopes = 1;
return myvel + spd * mydir;
}
+/*
+ * Compresses the shot origin offset vector to an int with the following format:
+ * xxxxxxxx|Syyyyyyy|Syzzzzzz
+ * 32109876|54321098|76543210
+ * 1st byte: x component
+ * 2nd byte: y component in the last 7 bits and the sign of the x component in the 1st bit
+ * 3rd byte: z component in the last 7 bits and the sign of the z component in the 1st bit
+ * All values are multiplied on compression and divided on decompression
+ * so the precision of the values is 0.5 if multiplied by 2 and 0.25 if multiplied by 4
+ * Values are bound to the following ranges:
+ * x: -127.5 +127.5
+ * y: 0 +31.75 negative values not allowed because the gun can't be aligned to the left by default
+ * z: -31.75 +31.75
+ */
float compressShotOrigin(vector v)
{
- float rx = rint(v.x * 2);
- float ry = rint(v.y * 4) + 128;
- float rz = rint(v.z * 4) + 128;
- if(rx > 255 || rx < 0)
+ int rx_neg = (v.x < 0) ? 1 : 0;
+ int rz_neg = (v.z < 0) ? 1 : 0;
+ int rx = rint(fabs(v.x) * 2);
+ int ry = rint(v.y * 4);
+ int rz = rint(fabs(v.z) * 4);
+ if(rx > 255) // 128 * 2 - 1
{
LOG_DEBUG("shot origin ", vtos(v), " x out of bounds\n");
rx = bound(0, rx, 255);
}
- if(ry > 255 || ry < 0)
+ if(ry > 127 || ry < 0) // 32 * 4 - 1
{
LOG_DEBUG("shot origin ", vtos(v), " y out of bounds\n");
- ry = bound(0, ry, 255);
+ ry = bound(0, ry, 127);
}
- if(rz > 255 || rz < 0)
+ if(rz > 127) // 32 * 4 - 1
{
LOG_DEBUG("shot origin ", vtos(v), " z out of bounds\n");
- rz = bound(0, rz, 255);
+ rz = bound(0, rz, 127);
}
+ ry |= rx_neg * BIT(7);
+ rz |= rz_neg * BIT(7);
return rx * 0x10000 + ry * 0x100 + rz;
}
vector decompressShotOrigin(int f)
{
vector v;
- v.x = ((f & 0xFF0000) / 0x10000) / 2;
- v.y = ((f & 0xFF00) / 0x100 - 128) / 4;
- v.z = ((f & 0xFF) - 128) / 4;
- return v;
+ v.x = f >> 16;
+ v.y = (f & 0xFF00) >> 8;
+ v.z = f & 0xFF;
+ // remove sign bits and apply sign
+ if (v.y & BIT(7)) { v.y &= ~BIT(7); v.x *= -1; }
+ if (v.z & BIT(7)) { v.z &= ~BIT(7); v.z *= -1; }
+ return vec3(v.x / 2, v.y / 4, v.z / 4);
}
#ifdef GAMEQC
string to_execute_next_frame;
void execute_next_frame()
{
-#ifdef SVQC
- IL_EACH(g_moveables, it.last_pushed,
- {
- if(!WarpZoneLib_ExactTrigger_Touch(it.last_pushed, it, false))
- {
- it.last_pushed = NULL;
- }
- });
-#elif defined(CSQC)
- if(csqcplayer.last_pushed && !WarpZoneLib_ExactTrigger_Touch(csqcplayer.last_pushed, csqcplayer, false))
- {
- csqcplayer.last_pushed = NULL;
- }
-#endif
-
if(to_execute_next_frame)
{
localcmd("\n", to_execute_next_frame, "\n");
this.movedir_aligned = shotorg_adjust(v, false, true, algn);
this.view_ofs = this.movedir_aligned - v;
}
- int compressed_shotorg = compressShotOrigin(this.movedir);
- // make them match perfectly
-#ifdef SVQC
- // null during init
- if (this.owner) STAT(SHOTORG, this.owner) = compressed_shotorg;
-#endif
- this.movedir = decompressShotOrigin(compressed_shotorg);
+
+ // shotorg_adjust can give negative .x from shootfromfixedorigin
+ // recheck .x here due to it
+ if (this.movedir.x >= 0)
+ {
+ int compressed_shotorg = compressShotOrigin(this.movedir);
+ // make them match perfectly
+ #ifdef SVQC
+ // null during init
+ if (this.owner) STAT(SHOTORG, this.owner) = compressed_shotorg;
+ #endif
+ this.movedir = decompressShotOrigin(compressed_shotorg);
+ }
+ else
+ {
+ // don't support negative x shotorgs
+ this.movedir = '0 0 0';
+
+ // reset _aligned here too even though as a side effect
+ // g_shootfromfixedorigin can make it reset
+ // it'd be only slightly better if it was checked individually
+ this.movedir_aligned = '0 0 0';
+
+ #ifdef SVQC
+ // null during init
+ if (this.owner) STAT(SHOTORG, this.owner) = 0;
+ #endif
+ }
#ifdef SVQC
this.spawnorigin += this.view_ofs; // offset the casings origin by the same amount
rlplayer = csqcplayer; // fall back to the global
vector md = wepent.movedir_aligned;
- vector vecs = ((md.x > 0) ? md : '0 0 0');
- vector dv = forward * vecs.x + right * -vecs.y + up * vecs.z;
+ vector dv = forward * md.x + right * -md.y + up * md.z;
vector org = rlplayer.origin + rlplayer.view_ofs + dv;
pointparticles(thiswep.m_muzzleeffect, org, forward * 1000, 1);
makevectors(actor.v_angle);
w_shotdir = v_forward;
vector md = actor.(weaponentity).movedir;
- vector vecs = ((md.x > 0) ? md : '0 0 0');
- vector dv = v_forward * vecs.x + v_right * -vecs.y + v_up * vecs.z;
+ vector dv = v_forward * md.x + v_right * -md.y + v_up * md.z;
w_shotorg = actor.origin + actor.view_ofs + dv;
//W_SetupShot_Range(actor,weaponentity,false,0,SND_Null,0,0,0,thiswep.m_id);
f = 1;
vector md = this.realowner.(weaponentity).movedir;
- vector vecs = ((md.x > 0) ? md : '0 0 0');
-
- vector dv = v_right * -vecs.y + v_up * vecs.z;
+ vector dv = v_right * -md.y + v_up * md.z;
if(!W_DualWielding(this.realowner))
dv = '0 0 0'; // don't override!
newproj.owner = this.owner;
newproj.realowner = this.realowner;
+ PROJECTILE_MAKETRIGGER(newproj);
setorigin(newproj, this.origin);
setmodel(newproj, MDL_PROJECTILE_ELECTRO);
setsize(newproj, this.mins, this.maxs);
newmine.owner = this.owner;
newmine.realowner = this.realowner;
+ PROJECTILE_MAKETRIGGER(newmine);
setorigin(newmine, this.origin);
setmodel(newmine, MDL_MINELAYER_MINE);
setsize(newmine, '-4 -4 -4', '4 4 4');
*
WEP_CVAR(shockwave, blast_jump_force_velocitybias)
);
- final_force = normalize((CENTER_OR_VIEWOFS(head) - attack_hitpos) + vel);
+
+ if (autocvar_g_player_damageplayercenter)
+ {
+ vector shot_origin = CENTER_OR_VIEWOFS(actor);
+ shot_origin.z += actor.(weaponentity).movedir.z;
+ //if (head == actor) // was checked for already, is true
+ final_force = normalize((shot_origin - attack_hitpos) + vel);
+ //else // use target's bbox centerpoint
+ //final_force = normalize(((head.origin + ((head.mins + head.maxs) * 0.5)) - attack_hitpos) + vel);
+ }
+ else
+ {
+ // if it's a player, use the view origin as reference
+ final_force = normalize((CENTER_OR_VIEWOFS(head) - attack_hitpos) + vel);
+ }
// now multiply the direction by force units
final_force *= (WEP_CVAR(shockwave, blast_jump_force) * multiplier);
// figure out the direction of force
final_force = (w_shotdir * WEP_CVAR(shockwave, blast_splash_force_forwardbias));
- final_force = normalize(CENTER_OR_VIEWOFS(head) - (attack_hitpos - final_force));
+ if (autocvar_g_player_damageplayercenter)
+ {
+ //if (head == actor) // was checked for already, is false
+ //final_force = normalize(CENTER_OR_VIEWOFS(actor) + '0 0 actor.(weaponentity).movedir.z' - (attack_hitpos - final_force));
+ //else // use target's bbox centerpoint
+ final_force = normalize((head.origin + ((head.mins + head.maxs) * 0.5)) - (attack_hitpos - final_force));
+ }
+ else
+ {
+ // if it's a player, use the view origin as reference
+ final_force = normalize(CENTER_OR_VIEWOFS(head) - (attack_hitpos - final_force));
+ }
//te_lightning2(NULL, attack_hitpos, (attack_hitpos + (final_force * 200)));
// now multiply the direction by force units
// BLAST CONE CALCULATION
// ========================
- // if it's a player, use the view origin as reference (stolen from RadiusDamage functions in damage.qc)
- center = CENTER_OR_VIEWOFS(head);
+ if (autocvar_g_player_damageplayercenter)
+ {
+ //if (head == actor) // was checked for already, is false
+ //center = CENTER_OR_VIEWOFS(actor) + '0 0 actor.(weaponentity).movedir.z';
+ //else // use target's bbox centerpoint
+ center = head.origin + ((head.mins + head.maxs) * 0.5);
+ }
+ else
+ {
+ // if it's a player, use the view origin as reference (stolen from RadiusDamage functions in damage.qc)
+ center = CENTER_OR_VIEWOFS(head);
+ }
// find the closest point on the enemy to the center of the attack
float h; // hypotenuse, which is the distance between attacker to head
{
if (w != vidwidth_s || h != vidheight_s || p != vidpixelheight_s)
{
- if (updateConwidths(w, h, p)) localcmd(sprintf("\nexec %s\n", cvar_string("menu_font_cfg")));
+ if (updateConwidths(w, h, p) && menuNotTheFirstFrame)
+ localcmd(sprintf("\nexec %s\n", cvar_string("menu_font_cfg")));
vidwidth_s = w;
vidheight_s = h;
vidpixelheight_s = p;
void XonoticPlayerList_setPlayerList(entity me, string plist)
{
- int buf,i,n;
- string s;
+ int i;
+ int buf = buf_create();
- buf = buf_create();
me.nItems = tokenizebyseparator(plist, "\n");
for(i = 0; i < me.nItems; ++i)
{
- bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME, argv(i)); // -666 100 "^4Nex ^2Player"
+ bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME, argv(i)); // -666 100 "^4Xon ^2Player"
}
for(i = 0; i < me.nItems; ++i)
{
- s = bufstr_get(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME);
- n = tokenize_console(s);
+ string name = bufstr_get(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME);
+ int n = tokenize_console(name);
+ bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_SCORE, argv(0)); // -666
+ bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_PING, argv(1)); // 100
if(n == PLAYERPARM_COUNT)
{
- bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_SCORE, argv(0)); // -666
- bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_PING, argv(1)); // 100
bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_TEAM, argv(2)); // 0 for spec, else 1, 2, 3, 4
- bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME, argv(3)); // ^4Nex ^2Player
+ bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME, argv(3)); // ^4Xon ^2Player
}
else
{
- bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_SCORE, argv(0)); // -666
- bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_PING, argv(1)); // 100
bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_TEAM, "-1");
- bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME, argv(2)); // ^4Nex ^2Player
+ bufstr_set(buf, i * PLAYERPARM_COUNT + PLAYERPARM_NAME, argv(2)); // ^4Xon ^2Player
}
}
me.playerList = buf;
void XonoticPlayerList_drawListBoxItem(entity me, int i, vector absSize, bool isSelected, bool isFocused)
{
- string s;
- string score;
- float t;
- vector rgb;
+ float t = stof(me.getPlayerList(me, i, PLAYERPARM_TEAM));
- t = stof(me.getPlayerList(me, i, PLAYERPARM_TEAM));
+ vector rgb = SKINCOLOR_TEXT;
if(t == 1)
rgb = colormapPaletteColor(4, 0);
else if(t == 2)
rgb = colormapPaletteColor(12, 0);
else if(t == 4)
rgb = colormapPaletteColor(9, 0);
- else
- rgb = SKINCOLOR_TEXT;
- s = me.getPlayerList(me, i, PLAYERPARM_NAME);
- score = me.getPlayerList(me, i, PLAYERPARM_SCORE);
+ string name = me.getPlayerList(me, i, PLAYERPARM_NAME);
+ string score = me.getPlayerList(me, i, PLAYERPARM_SCORE);
if(substring(score, strlen(score) - 10, 10) == ":spectator")
{
score = _("spectator");
}
- s = draw_TextShortenToWidth(s, me.columnNameSize, 1, me.realFontSize);
- draw_Text(me.realUpperMargin2 * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 1, me.realFontSize))) * eX, s, me.realFontSize, '1 1 1', 1, 1);
+ name = draw_TextShortenToWidth(name, me.columnNameSize, 1, me.realFontSize);
+ draw_Text(me.realUpperMargin2 * eY + me.columnNameOrigin * eX, name, me.realFontSize, '1 1 1', 1, 1);
score = draw_TextShortenToWidth(score, me.columnScoreSize, 0, me.realFontSize);
- draw_Text(me.realUpperMargin2 * eY + (me.columnScoreOrigin + 1.00 * (me.columnScoreSize - draw_TextWidth(score, 1, me.realFontSize))) * eX, score, me.realFontSize, rgb, 1, 0);
+ float score_ofs = me.columnScoreSize - draw_TextWidth(score, 1, me.realFontSize);
+ draw_Text(me.realUpperMargin2 * eY + (me.columnScoreOrigin + score_ofs) * eX, score, me.realFontSize, rgb, 1, 0);
}
this.use = fragsfilter_use;
}
+#define PRINT_REDTEAM BIT(0) // Q3 only, not used in Q3DF
+#define PRINT_BLUETEAM BIT(1) // Q3 only, not used in Q3DF
+#define PRINT_PRIVATE BIT(2) // Q3 only, not used in Q3DF
+#define PRINT_BROADCAST BIT(3) // Q3DF only, default behavior in Q3
+
+void target_print_message(entity this, entity actor)
+{
+ centerprint(actor, this.message);
+ play2(actor, SND(TALK));
+}
+
+void target_print_use(entity this, entity actor, entity trigger)
+{
+ if(!IS_PLAYER(actor))
+ return;
+
+ if(this.message == "")
+ return;
+
+ bool priv, red, blue;
+ if(!(q3compat & Q3COMPAT_DEFI)) // Q3 spawnflags
+ {
+ priv = boolean(this.spawnflags & PRINT_PRIVATE);
+ red = boolean(this.spawnflags & PRINT_REDTEAM);
+ blue = boolean(this.spawnflags & PRINT_BLUETEAM);
+ }
+ else // Q3DF spawnflags
+ {
+ priv = !boolean(this.spawnflags & PRINT_BROADCAST);
+ red = blue = false;
+ }
+
+ if(priv)
+ {
+ target_print_message(this, actor);
+ }
+ else
+ {
+ FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it) && ((!red && !blue) || (red && it.team == NUM_TEAM_1) || (blue && it.team == NUM_TEAM_2)), target_print_message(this, it));
+ }
+}
+
+/*
+ * ENTITY PARAMETERS:
+ *
+ * message: text string to print on screen.
+ * targetname: the activating trigger points to this.
+ */
+spawnfunc(target_print)
+{
+ this.use = target_print_use;
+}
+
+// target_smallprint, Q3DF only
+spawnfunc(target_smallprint)
+{
+ spawnfunc_target_print(this);
+}
+
.bool notteam;
.bool notsingle;
.bool notfree;
float a;
float c;
vector hitloc;
- vector center;
// if it's a player, use the view origin as reference
- center = CENTER_OR_VIEWOFS(targ);
+ vector center = CENTER_OR_VIEWOFS(targ);
+
+ if (autocvar_g_player_damageplayercenter)
+ {
+ if (targ != attacker)
+ {
+ // always use target's bbox centerpoint
+ center = targ.origin + ((targ.mins + targ.maxs) * 0.5);
+ }
+ else // targ == attacker
+ {
+ #if 0
+ // code stolen from W_SetupShot_Dir_ProjectileSize_Range()
+ vector md = targ.(weaponentity).movedir;
+ vector dv = v_right * -md.y + v_up * md.z;
+ vector mi = '0 0 0', ma = '0 0 0';
+
+ if(IS_CLIENT(targ)) // no antilag for non-clients!
+ {
+ if(CS(targ).antilag_debug)
+ tracebox_antilag(targ, center, mi, ma, center + dv, MOVE_NORMAL, targ, CS(targ).antilag_debug);
+ else
+ tracebox_antilag(targ, center, mi, ma, center + dv, MOVE_NORMAL, targ, ANTILAG_LATENCY(targ));
+ }
+ else
+ tracebox(center, mi, ma, center + dv, MOVE_NORMAL, targ);
+
+ center.z = trace_endpos.z;
+ #else
+ // very cheap way but it skips move into solid checks which is fine most of the time for now AFAIK
+ // this should only really be an issue with some rare edge cases where
+ // shot origin was prevented from going into a ceiling but it still explodes at the ceiling
+ // shot origin wasn't raised as high as possible and the shooter gets upwards knockback
+ // TL;DR: no bugs if vertical shot origin is always within player bbox
+ center.z = center.z + targ.(weaponentity).movedir.z;
+ #endif
+ }
+ }
+
+ /* debug prints
+ print(sprintf("origin vec %v\n", targ.origin));
+ print(sprintf("movedir vec %v\n", targ.(weaponentity).movedir));
+ print(sprintf("old def vec %v\n", CENTER_OR_VIEWOFS(targ)));
+ print(sprintf("origin+vofs %v\n", targ.origin + targ.view_ofs));
+ print(sprintf("bbox center %v\n", (targ.origin + ((targ.mins + targ.maxs) * 0.5))));
+ print(sprintf("center vec %v\n", center));
+ print(sprintf("shotorg vec %v\n", w_shotorg));
+ print("\n");
+ */
force = normalize(center - inflictororigin_wz);
force = force * (finaldmg / max(coredamage, edgedamage)) * forceintensity;
// WEAPONTODO
#define DMG_NOWEP (weaponentities[0])
+int autocvar_g_player_damageplayercenter;
+
// NOTE: the .weaponentity parameter can be set to DMG_NOWEP if the attack wasn't caused by a weapon or player
void Damage (entity targ, entity inflictor, entity attacker, float damage, int deathtype, .entity weaponentity, vector hitloc, vector force);
{
.entity weaponentity = weaponentities[slot];
vector md = this.(weaponentity).movedir;
- vector vecs = ((md.x > 0) ? md : '0 0 0');
- vector dv = v_right * -vecs.y;
+ vector dv = v_right * -md.y;
if(!is_dualwielding)
dv = '0 0 0'; // don't override!
W_ThrowWeapon(this, weaponentity, W_CalculateProjectileVelocity(this, this.velocity, v_forward * 750, false), dv, true);
#include <common/deathtypes/all.qh>
#include <common/debug.qh>
#include <common/mapinfo.qh>
+#include <common/mapobjects/_mod.qh>
#include <common/monsters/sv_monsters.qh>
#include <common/util.qh>
#include <common/vehicles/all.qh>
});
}
+// called shortly after map change in dedicated
void Pause_TryPause_Dedicated(entity this)
{
- if (player_count == 0)
+ if (player_count == 0 && !intermission_running && !autocvar__endmatch)
setpause(1);
}
+// called every normal frame in singleplayer/listen
void Pause_TryPause()
{
int n = 0, p = 0;
setpause(0);
}
+// called every paused frame by DP
void SV_PausedTic(float elapsedtime)
{
- if (!server_is_dedicated)
+ if (autocvar__endmatch) // `endmatch` while paused
+ setpause(0); // proceed to intermission
+ else if (!server_is_dedicated)
{
if (autocvar_sv_autopause)
Pause_TryPause();
IL_EACH(g_players, IS_FAKE_CLIENT(it), PlayerPreThink(it));
execute_next_frame();
- if (autocvar_sv_autopause && !server_is_dedicated) Pause_TryPause();
delete_fn = remove_unsafely; // not during spawning!
serverprevtime = servertime;
CreatureFrame_All();
CheckRules_World();
+ // after CheckRules_World() as it may set intermission_running, and after RedirectionThink() in case listen server is closing
+ if (autocvar_sv_autopause && !server_is_dedicated && !intermission_running)
+ Pause_TryPause();
+
if (warmup_stage && !game_stopped && warmup_limit > 0 && time - game_starttime >= warmup_limit) {
ReadyRestart(true);
return;
if(IS_PLAYER(ent))
W_HitPlotAnalysis(ent, wep, forward, right, up);
+ // read shot origin offset, like g_shootfromcenter
+ // set in CL_WeaponEntity_SetModel (not a CSQC exclusive function...)
vector md = ent.(weaponentity).movedir;
- vector vecs = ((md.x > 0) ? md : '0 0 0');
+ //print(sprintf("offset of %s: %v\n", ent.(weaponentity).m_weapon.netname, md));
+ vector dv = right * -md.y + up * md.z;
- vector dv = right * -vecs.y + up * vecs.z;
w_shotorg = ent.origin + ent.view_ofs;
+
+ // move the shotorg sideways and vertically as much as requested if possible
if(antilag)
{
if(CS(ent).antilag_debug)
if(antilag)
{
if(CS(ent).antilag_debug)
- tracebox_antilag(ent, w_shotorg, mi, ma, w_shotorg + forward * (vecs.x + nudge), MOVE_NORMAL, ent, CS(ent).antilag_debug);
+ tracebox_antilag(ent, w_shotorg, mi, ma, w_shotorg + forward * (md.x + nudge), MOVE_NORMAL, ent, CS(ent).antilag_debug);
else
- tracebox_antilag(ent, w_shotorg, mi, ma, w_shotorg + forward * (vecs.x + nudge), MOVE_NORMAL, ent, ANTILAG_LATENCY(ent));
+ tracebox_antilag(ent, w_shotorg, mi, ma, w_shotorg + forward * (md.x + nudge), MOVE_NORMAL, ent, ANTILAG_LATENCY(ent));
}
else
- tracebox(w_shotorg, mi, ma, w_shotorg + forward * (vecs.x + nudge), MOVE_NORMAL, ent);
+ tracebox(w_shotorg, mi, ma, w_shotorg + forward * (md.x + nudge), MOVE_NORMAL, ent);
w_shotorg = trace_endpos - forward * nudge;
+
+ //print(sprintf("w_shotorg %v\n\n", w_shotorg - (ent.origin + ent.view_ofs)));
+
// calculate the shotdir from the chosen shotorg
if(W_DualWielding(ent))
w_shotdir = s_forward;
if (!g_duel)
MapReadSizes(mapname);
- if (autocvar_g_maxplayers < 0 && teamplay)
+ if (autocvar_g_maxplayers < 0)
{
- // automatic maxplayers should be a multiple of team count
- if (map_maxplayers == 0 || map_maxplayers > maxclients)
+ if (map_maxplayers <= 0)
map_maxplayers = maxclients; // unlimited, but may need rounding
- int d = map_maxplayers % AVAILABLE_TEAMS;
- int u = AVAILABLE_TEAMS - d;
- map_maxplayers += (u <= d && u + map_maxplayers <= maxclients) ? u : -d;
+ map_maxplayers = bound(max(2, AVAILABLE_TEAMS * 2), map_maxplayers, maxclients);
+ if (teamplay)
+ {
+ // automatic maxplayers should be a multiple of team count
+ int down = map_maxplayers % AVAILABLE_TEAMS;
+ int up = AVAILABLE_TEAMS - down;
+ map_maxplayers += (up < down && up + map_maxplayers <= maxclients) ? up : -down;
+ }
}
if (warmup_stage < 0)
if (teamplay)
{
// automatic minplayers should be a multiple of team count
- int d = map_minplayers % AVAILABLE_TEAMS;
- int u = AVAILABLE_TEAMS - d;
- map_minplayers += (u < d && u + map_minplayers <= m) ? u : -d;
+ int down = map_minplayers % AVAILABLE_TEAMS;
+ int up = AVAILABLE_TEAMS - down;
+ map_minplayers += (up < down && up + map_minplayers <= m) ? up : -down;
}
}
else
WinningConditionHelper(this); // set worldstatus
if (autocvar_sv_autopause && server_is_dedicated && !wantrestart)
- // INITPRIO_LAST is to soon: bots either didn't join yet or didn't leave yet, see: bot_fixcount()
+ // INITPRIO_LAST is too soon: bots either didn't join yet or didn't leave yet, see: bot_fixcount()
defer(this, 5, Pause_TryPause_Dedicated);
world_initialized = 1;
--- /dev/null
+#!/bin/bash
+
+# abort on error(non-0 return code) and abort on unset variable
+set -eu
+
+# refuse to run on Windows' MINGW due to symlinking issues
+# `ln -s "$PWD" data/xonotic-data.pk3dir` seems to not work in any form
+# even with fully relative paths or `ln -s ../ xonotic-data.pk3dir`
+# FIXME?
+case "$(uname)" in
+ MINGW*) printf "%s\n%s\n" "This file is not suitable for Windows' MINGW" \
+ "without modifications due to the lack of proper symlink support"; exit 1 ;;
+esac
+
+printf "Testing for dependencies\n"
+# command -q / --quiet one day? :(
+command -V awk > /dev/null
+command -V chmod > /dev/null
+command -V git > /dev/null
+command -V grep > /dev/null
+command -V make > /dev/null
+command -V md5sum > /dev/null
+command -V mkdir > /dev/null
+command -V mktemp > /dev/null
+command -V rm > /dev/null
+command -V rmdir > /dev/null
+command -V sed > /dev/null
+command -V tee > /dev/null
+command -V test > /dev/null
+command -V true > /dev/null
+command -V printf > /dev/null
+command -V wget > /dev/null
+printf "All dependencies found\n"
+
+createdtoday() {
+ # check if a file's creation date is today
+ if [ "$(stat -c '%y' "$1" | cut -d ' ' -f 1)" = "$(date -I)" ]
+ then
+ #echo "$1 was created today"
+ return 0
+ else
+ #echo "$1 was not created today"
+ return 1
+ fi
+}
+
+hashtestcleanup() {
+ # allow for error return codes in this function as this may be ran on interrupt
+ # right after starting where all files to clean up don't exist yet
+ set +e
+
+ # unset trap
+ trap - EXIT INT QUIT TERM
+
+ # Few files' removal has been disabled for file reuse
+ # It's possible to get rate limited with enough testing
+
+ rm lock
+ rm data/darkplaces_history.txt
+ rm data/xonotic-data.pk3dir
+ #rm data/stormkeep.pk3
+ rm data/data/defaultSVQC.cfg
+ rm data/data/hits---1.plot
+ rm data/data/hits---2.plot
+ rm data/data/hits---3.plot
+ rm data/data/notifications_dump.cfg
+ rm data/data/server.db
+ rmdir data/data/
+ #rm data/maps/_init.bsp
+ #rm data/maps/stormkeep.mapinfo
+ #rm data/maps/stormkeep.waypoints
+ #rm data/maps/stormkeep.waypoints.cache
+ #rmdir data/maps/
+
+ set -e
+}
+trap "hashtestcleanup" EXIT INT QUIT TERM
+
+# cd xonotic-data.pk3dir
+cd "$(dirname "$0")/../../"
+
+WORKINGDIR="$PWD"
+
+TMPDIR="$PWD/.tmp"
+
+# if xonotic-data.pk3dir/data/xonotic-data.pk3dir isn't a symlink then link it
+if [ -e data/xonotic-data.pk3dir ]
+then # file exists
+ if ! [ -L data/xonotic-data.pk3dir ]
+ then # file exists but it's not a symlink, replace it
+ if [ -d data/xonotic-data.pk3dir ]
+ then # it's a dir
+ rmdir data/xonotic-data.pk3dir
+ ln -s "$PWD" data/xonotic-data.pk3dir
+ else # it's not a dir
+ rm data/xonotic-data.pk3dir
+ ln -s "$PWD" data/xonotic-data.pk3dir
+ fi
+ else # it is a symlink, verify where it points
+ if [ "$(realpath data/xonotic-data.pk3dir)" != "$PWD" ]
+ then # wrong place, recreate it
+ rm data/xonotic-data.pk3dir
+ ln -s "$PWD" data/xonotic-data.pk3dir
+ fi
+ fi
+else # no file exists there
+ ln -s "$PWD" data/xonotic-data.pk3dir
+fi
+
+MAKEFLAGS=-j$(nproc)
+export MAKEFLAGS
+printf "%s\n" "MAKEFLAGS=$MAKEFLAGS"
+export CC="gcc -pipe"
+
+# precompiled binary is executable and its creation date is today
+if [ -x "$TMPDIR/gmqcc-bin" ] && createdtoday "$TMPDIR/gmqcc-bin"
+then
+ export QCC="$TMPDIR/gmqcc-bin"
+else # previously compiled is executable and its creation date is today
+ if [ -x "$TMPDIR/gmqcc/gmqcc" ] && createdtoday "$TMPDIR/gmqcc/gmqcc"
+ then
+ export QCC="$TMPDIR/gmqcc/gmqcc"
+ else # nothing reusable exists
+ # prefer a precompiled binary
+ if wget -nv https://beta.xonotic.org/pipeline-bin/gmqcc -O "$TMPDIR/gmqcc-bin"
+ then
+ export QCC="$TMPDIR/gmqcc-bin"
+ chmod +x "$QCC"
+ else
+ if [ -d "$TMPDIR/gmqcc" ]
+ then
+ cd "$TMPDIR/gmqcc"
+ git checkout main
+ git pull
+ cd "$WORKINGDIR"
+ else
+ git clone --depth=1 --branch=main https://gitlab.com/xonotic/gmqcc.git "$TMPDIR/gmqcc"
+ fi
+ make -C "$TMPDIR/gmqcc" || exit 1
+ export QCC="$TMPDIR/gmqcc/gmqcc"
+ fi
+ fi
+fi
+
+# Makefile: don't complain about lack of tags (fetching them is slow)
+export QCCFLAGS_WATERMARK=gitlab_pipeline
+# Makefile: don't compress anything or complain about lack of zip program
+export ZIP=true
+
+
+if [ "$(uname):$(uname -m)" = "Linux:x86_64" ] && [ -x "$TMPDIR/xonotic-linux64-dedicated" ] && createdtoday "$TMPDIR/xonotic-linux64-dedicated"
+then # precompiled binary is executable and its creation date is today
+ export ENGINE="$TMPDIR/xonotic-linux64-dedicated"
+else
+ if [ -x "$TMPDIR/darkplaces/darkplaces-dedicated" ] && createdtoday "$TMPDIR/darkplaces/darkplaces-dedicated"
+ then # previously compiled is executable and its creation date is today
+ export ENGINE="$TMPDIR/darkplaces/darkplaces-dedicated -xonotic"
+ else # nothing reusable exists
+ # prefer a precompiled binary
+ if [ "$(uname):$(uname -m)" = "Linux:x86_64" ] && wget -nv https://beta.xonotic.org/pipeline-bin/xonotic-linux64-dedicated -O "$TMPDIR/xonotic-linux64-dedicated"
+ then
+ export ENGINE="$TMPDIR/xonotic-linux64-dedicated"
+ chmod +x "$ENGINE"
+ else
+ if [ -d "$TMPDIR/darkplaces" ]
+ then
+ cd "$TMPDIR/darkplaces"
+ #git checkout master
+ git pull --autostash
+ cd "$WORKINGDIR"
+ else
+ git clone --depth=1 https://gitlab.com/xonotic/darkplaces.git "$TMPDIR/darkplaces"
+ fi
+ make -C "$TMPDIR/darkplaces" sv-release || exit 1
+ export ENGINE="$TMPDIR/darkplaces/darkplaces-dedicated -xonotic"
+ fi
+ fi
+fi
+export ENGINE="$ENGINE -noconfig -nohome"
+
+make qc || exit 1
+
+mkdir -p data/maps
+
+createdtoday "data/maps/_init.bsp" \
+ || wget -nv -O data/maps/_init.bsp https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/_init/_init.bsp
+
+while read -r LINE
+do
+ printf "%s\n" "$LINE"
+ [ "$LINE" = "All tests OK" ] && PASS=1
+done < <(${ENGINE} +developer 1 +map _init +sv_cmd runtest +wait +quit)
+test "$PASS" = "1" || { printf 'sv_cmd runtest failed!'; exit 1; }
+
+${ENGINE} +map _init +sv_cmd dumpnotifs +wait +quit
+diff notifications.cfg data/data/notifications_dump.cfg ||
+ { printf "Please update notifications.cfg using \`dumpnotifs\`!"; exit 1; }
+
+createdtoday "data/stormkeep.pk3" \
+ || wget -nv -O data/stormkeep.pk3 https://beta.xonotic.org/pipeline-bin/stormkeep.pk3
+createdtoday "data/maps/stormkeep.mapinfo" \
+ || wget -nv -O data/maps/stormkeep.mapinfo https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/stormkeep.mapinfo
+createdtoday "data/maps/stormkeep.waypoints" \
+ || wget -nv -O data/maps/stormkeep.waypoints https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/stormkeep.waypoints
+createdtoday "data/maps/stormkeep.waypoints.cache" \
+ || wget -nv -O data/maps/stormkeep.waypoints.cache https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/stormkeep.waypoints.cache
+
+set +u
+if [ -z "$EXPECT" ]
+then
+ # find the line with expected hash from .gitlab-ci.yml, extract the hash and remove carriage return
+ EXPECT="$(grep 'EXPECT=' './.gitlab-ci.yml' | cut -d '=' -f 2 | tr -d $'\r')"
+fi
+set -u
+HASH=$(${ENGINE} +exec serverbench.cfg \
+ | tee /dev/stderr \
+ | grep '^:' \
+ | grep -v '^:gamestart:' \
+ | grep -v '^:anticheat:' \
+ | md5sum | awk '{ print $1 }')
+
+hashtestcleanup
+
+if [ "$HASH" = "$EXPECT" ]
+then # green ok print
+ printf "\033[32m%s\033[0m\n" "expected: $EXPECT"
+ printf "\033[32m%s\033[0m\n" " actual: $HASH"
+ printf "\033[32m%s\033[0m\n" "hashes match"
+ exit 0
+else # red error print
+ printf "\033[32m%s\033[0m\n" "expected: $EXPECT"
+ printf "\033[32m%s\033[0m\n" " actual: $HASH"
+ printf "\033[31m%s\033[0m\n" "!!! ERROR: HASHES DO NOT MATCH !!!"
+ exit 1
+fi
seta cl_damagetext_size_max_damage 140 "How much damage is considered large"
seta cl_damagetext_alpha_start "1" "Damage text initial alpha"
seta cl_damagetext_alpha_lifetime "3" "Damage text lifetime in seconds"
+seta cl_damagetext_lifetime "-1" "Damage text lifetime, edit this if you wish for damage text to disappear before it fades out"
seta cl_damagetext_velocity_screen "0 0 0" "Damage text move direction (screen coordinates)"
seta cl_damagetext_velocity_world "0 0 20" "Damage text move direction (world coordinates relative to player's view)"
seta cl_damagetext_offset_screen "0 -45 0" "Damage text offset (screen coordinates)"
-seta cl_damagetext_offset_world "0 0 0" "Damage text offset (world coordinates relative to player's view)"
-seta cl_damagetext_accumulate_range "30" "Damage text spawned within this range is accumulated"
+seta cl_damagetext_offset_world "0 25 0" "Damage text offset (world coordinates relative to player's view)"
seta cl_damagetext_accumulate_alpha_rel "0.65" "Only update existing damage text when it's above this much percentage (0 to 1) of the starting alpha"
+seta cl_damagetext_accumulate_lifetime "-1" "Only update existing damage text when it is younger than this many seconds, negative always updates"
seta cl_damagetext_friendlyfire "1" "0: never show for friendly fire, 1: when more than 0 damage, 2: always"
seta cl_damagetext_friendlyfire_color "1 0 0" "Damage text color for friendlyfire"
set g_player_alpha 1 "default opacity of players"
set g_player_brightness 0 "set to 2 for brighter players"
+
set g_player_damageforcescale 2 "push multiplier of attacks against players"
+set g_player_damageplayercenter 0 "0: always calculate knockback force direction from player's eyes instead of bbox center. 1: use bbox center point for others, shot origin for attacker's self-damage"
+
set g_playerclip_collisions 1 "0 = disable collision testing against playerclips, might be useful on some defrag maps"
set g_botclip_collisions 1 "0 = disable collision testing against botclips, might be useful on some defrag maps"
// otherwise, antilag breaks
sv_gameplayfix_consistentplayerprethink 1
+// Xonotic's QC physics still depend on this cvar (feature deprecated in DP master)
+sv_gameplayfix_unstickplayers 1
+
// improve some minor details
sv_gameplayfix_gravityunaffectedbyticrate 1
sv_gameplayfix_nogravityonground 1