]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'bones_was_here/pipeline' into 'master'
authorterencehill <piuntn@gmail.com>
Sat, 26 Mar 2022 15:37:19 +0000 (15:37 +0000)
committerterencehill <piuntn@gmail.com>
Sat, 26 Mar 2022 15:37:19 +0000 (15:37 +0000)
gitlab CI pipeline optimisations

See merge request xonotic/xonotic-data.pk3dir!988

13 files changed:
.tx/merge-base
common.es.po
common.fi.po
common.fr.po
common.ja_JP.po
common.sv.po
demoseeking.cfg [new file with mode: 0644]
input-demoseeking.cfg
languages.txt
notifications.cfg
qcsrc/client/hud/panel/timer.qc
qcsrc/common/gamemodes/gamemode/lms/sv_lms.qc
qcsrc/common/notifications/all.inc

index fe27671c6f73c6b68f68e99d4f727ed64ca0dac3..85098d590d029a6f8f757ada74068cbb449ab3d0 100644 (file)
@@ -1 +1 @@
-Mon Mar 21 07:23:12 CET 2022
+Sat Mar 26 07:23:05 CET 2022
index aa101fefbd3dd550c564a60923320d91ee6e8dd2..0f37a9f3e92903b81fd8b323e972ca86b7cb7385 100644 (file)
@@ -14,7 +14,7 @@
 # kammy smb <kammysmb@gmail.com>, 2013
 # kammy smb <kammysmb@gmail.com>, 2013
 # LegendGuard, 2020
-# LegendGuard, 2020-2021
+# LegendGuard, 2020-2022
 # LegendGuard, 2020
 # roader_gentoo <ivanviso123@gmail.com>, 2014
 # Rodrigo Mouton Laudin <ratogenesis@gmail.com>, 2011
@@ -33,7 +33,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-03-06 07:22+0100\n"
 "PO-Revision-Date: 2013-09-12 16:53+0000\n"
-"Last-Translator: z 411 <winrar.hurr@gmail.com>, 2021\n"
+"Last-Translator: LegendGuard, 2020-2022\n"
 "Language-Team: Spanish (http://www.transifex.com/team-xonotic/xonotic/"
 "language/es/)\n"
 "Language: es\n"
@@ -1088,24 +1088,24 @@ msgstr "nmi"
 
 #: qcsrc/client/hud/panel/timer.qc:132
 msgid "Warmup"
-msgstr ""
+msgstr "Calentamiento"
 
 #: qcsrc/client/hud/panel/timer.qc:134
 msgid "Timeout"
-msgstr ""
+msgstr "Tiempo muerto"
 
 #: qcsrc/client/hud/panel/timer.qc:136
 msgid "Sudden Death"
-msgstr ""
+msgstr "Muerte súbita"
 
 #: qcsrc/client/hud/panel/timer.qc:138
 msgid "Overtime"
-msgstr ""
+msgstr "Tiempo extra"
 
 #: qcsrc/client/hud/panel/timer.qc:140
 #, c-format
 msgid "Overtime #%d"
-msgstr ""
+msgstr "Tiempo extra #%d"
 
 #: qcsrc/client/hud/panel/vote.qc:30
 msgid "^1You must answer before entering hud configure mode"
@@ -4455,11 +4455,11 @@ msgstr "^K1Suicidio en ^COUNT"
 
 #: qcsrc/common/notifications/all.inc:767
 msgid "^F4Timeout begins in ^COUNT"
-msgstr "^F4Tiempo fuera comienza en ^COUNT"
+msgstr "^F4Tiempo muerto comienza en ^COUNT"
 
 #: qcsrc/common/notifications/all.inc:768
 msgid "^F4Timeout ends in ^COUNT"
-msgstr "^F4Tiempo fuera se acaba en ^COUNT"
+msgstr "^F4Tiempo muerto en ^COUNT"
 
 #: qcsrc/common/notifications/all.inc:770
 msgid "^K1Cannot join given minigame session!"
@@ -6458,11 +6458,11 @@ msgstr "Mostrar el tiempo transcurrido"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:23
 msgid "Secondary timer:"
-msgstr ""
+msgstr "Reloj secundario:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:27
 msgid "Swapped"
-msgstr ""
+msgstr "Intercambiado"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_timer.qh:6
 msgid "Timer Panel"
@@ -7305,7 +7305,7 @@ msgstr "¡Unirse!"
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:93
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:105
 msgid "No Terms of Service specified"
-msgstr ""
+msgstr "No se han especificado los Términos del Servicio"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:144
 #: qcsrc/menu/xonotic/serverlist.qc:1052
@@ -7368,7 +7368,7 @@ msgstr "Usa la cvar `crypto_aeslevel` para cambiar tus preferencias"
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:203
 #: qcsrc/menu/xonotic/serverlist.qc:1056
 msgid "custom stats server"
-msgstr ""
+msgstr "estadísticas personalizadas del servidor"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:203
 #: qcsrc/menu/xonotic/serverlist.qc:1056
@@ -7382,17 +7382,17 @@ msgstr "estadísticas habilitadas"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:213
 msgid "Status"
-msgstr ""
+msgstr "Estado"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:214
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_termsofservice.qh:7
 #: qcsrc/menu/xonotic/dialog_termsofservice.qh:11
 msgid "Terms of Service"
-msgstr ""
+msgstr "Términos del Servicio"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qh:7
 msgid "Server Info"
-msgstr ""
+msgstr "Información del servidor"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:24
 msgid "Hostname:"
@@ -7445,7 +7445,7 @@ msgstr "Llave:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:96
 msgid "Stats:"
-msgstr ""
+msgstr "Estadísticas:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qh:6
 msgid "Server Information"
@@ -9801,18 +9801,20 @@ msgstr "Selección de equipo"
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:78
 msgid "Terms of Service have been updated. Please read them before continuing:"
 msgstr ""
+"Los Términos del Servicio han sido actualizados. Por favor, lea antes de "
+"continuar:"
 
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:80
 msgid "Welcome to Xonotic! Please read the following Terms of Service:"
-msgstr ""
+msgstr "¡Bienvenido a Xonotic! Por favor, lea los Términos del Servicio:"
 
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:93
 msgid "Accept"
-msgstr ""
+msgstr "Acepto"
 
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:97
 msgid "Don't accept (quit the game)"
-msgstr ""
+msgstr "No acepto (salir del juego)"
 
 #: qcsrc/menu/xonotic/dialog_uid2name.qc:10
 msgid "Allow player statistics to use your nickname?"
index d1fbc9775e56b95329e55b7545d01a357463d73d..17f01e62626366b10dc3ad0e886a76ed4199be0b 100644 (file)
@@ -6,6 +6,7 @@
 # Dr. Jaska <drjaska83@gmail.com>, 2020
 # Dr. Jaska <drjaska83@gmail.com>, 2020
 # Henry 'Exitium' Sanmark <henry.sanmark@gmail.com>, 2011
+# Jaakko Saarikko <jaakko.saarikko@protonmail.com>, 2022
 # Jonas Sahlberg <fragthelion@gmail.com>, 2015
 # Oi Suomi On! <oisuomion@protonmail.com>, 2020,2022
 msgid ""
@@ -1067,7 +1068,7 @@ msgstr "mpk"
 
 #: qcsrc/client/hud/panel/timer.qc:132
 msgid "Warmup"
-msgstr ""
+msgstr "Lämmittely"
 
 #: qcsrc/client/hud/panel/timer.qc:134
 msgid "Timeout"
@@ -1075,16 +1076,16 @@ msgstr ""
 
 #: qcsrc/client/hud/panel/timer.qc:136
 msgid "Sudden Death"
-msgstr ""
+msgstr "Äkkikuolema"
 
 #: qcsrc/client/hud/panel/timer.qc:138
 msgid "Overtime"
-msgstr ""
+msgstr "Yliaika"
 
 #: qcsrc/client/hud/panel/timer.qc:140
 #, c-format
 msgid "Overtime #%d"
-msgstr ""
+msgstr "Yliaika #%d"
 
 #: qcsrc/client/hud/panel/vote.qc:30
 msgid "^1You must answer before entering hud configure mode"
@@ -7275,7 +7276,7 @@ msgstr "Liity!"
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:93
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:105
 msgid "No Terms of Service specified"
-msgstr ""
+msgstr "Käyttöehtoja ei ole määritelty"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:144
 #: qcsrc/menu/xonotic/serverlist.qc:1052
@@ -7358,11 +7359,11 @@ msgstr ""
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_termsofservice.qh:7
 #: qcsrc/menu/xonotic/dialog_termsofservice.qh:11
 msgid "Terms of Service"
-msgstr ""
+msgstr "Käyttöehdot"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qh:7
 msgid "Server Info"
-msgstr ""
+msgstr "Palvelimen tiedot"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:24
 msgid "Hostname:"
@@ -9781,7 +9782,7 @@ msgstr ""
 
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:93
 msgid "Accept"
-msgstr ""
+msgstr "Hyväksy"
 
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:97
 msgid "Don't accept (quit the game)"
index 322baed133ab7461942197ec1522e854938e2785..d047059cc98c8e1fdc17cf9f8b7d8733651b9576 100644 (file)
@@ -505,12 +505,12 @@ msgstr "Regarder un joueur"
 #: qcsrc/client/hud/panel/racetimer.qc:56
 #, c-format
 msgid " (-%dL)"
-msgstr " (-%dL)"
+msgstr " (-%dT)"
 
 #: qcsrc/client/hud/panel/racetimer.qc:61
 #, c-format
 msgid " (+%dL)"
-msgstr " (+%dL)"
+msgstr " (+%dT)"
 
 #: qcsrc/client/hud/panel/racetimer.qc:80
 msgid "Start line"
index 6bfb17d0894d86ccb042a2b9689aa6d64c656f0a..46de6d94d6d82a1722049b043c77546faf85828c 100644 (file)
@@ -6,7 +6,7 @@
 # 8fb942b4466cdbffede843a6379dce7e_4dc4284 <cbc8558ff26f685f62baa2a2eaee30b3_1013263>, 2021
 # Antoni Das <Antonidas159@gmail.com>, 2017
 # LegendGuard, 2020
-# LegendGuard, 2020-2021
+# LegendGuard, 2020-2022
 # Lento <securemailfor28-xonotic@yahoo.co.jp>, 2015
 # RYU N. <ryusho2523@yahoo.co.jp>, 2021
 # z 411 <winrar.hurr@gmail.com>, 2021
@@ -1062,24 +1062,24 @@ msgstr "nmi"
 
 #: qcsrc/client/hud/panel/timer.qc:132
 msgid "Warmup"
-msgstr ""
+msgstr "ウォームアップ"
 
 #: qcsrc/client/hud/panel/timer.qc:134
 msgid "Timeout"
-msgstr ""
+msgstr "タイムアウト"
 
 #: qcsrc/client/hud/panel/timer.qc:136
 msgid "Sudden Death"
-msgstr ""
+msgstr "突然死"
 
 #: qcsrc/client/hud/panel/timer.qc:138
 msgid "Overtime"
-msgstr ""
+msgstr "残業"
 
 #: qcsrc/client/hud/panel/timer.qc:140
 #, c-format
 msgid "Overtime #%d"
-msgstr ""
+msgstr "残業 #%d"
 
 #: qcsrc/client/hud/panel/vote.qc:30
 msgid "^1You must answer before entering hud configure mode"
@@ -4244,16 +4244,16 @@ msgid ""
 "^F2Now playing ^F4OVERTIME^F2!\n"
 "Keep fragging until we have a winner!"
 msgstr ""
-"^F2残業中!\n"
-"勝者が出るまで削除を立て続けて!"
+"^F4残業中^F2!\n"
+"^F2勝者が出るまで削除を立て続けて!"
 
 #: qcsrc/common/notifications/all.inc:732
 msgid ""
 "^F2Now playing ^F4OVERTIME^F2!\n"
 "Keep scoring until we have a winner!"
 msgstr ""
-"^F2残業中!\n"
-"勝者が出るまで得点を立て続けて!"
+"^F4残業中^F2!\n"
+"^F2勝者が出るまで得点を立て続けて!"
 
 #: qcsrc/common/notifications/all.inc:733
 msgid ""
@@ -6372,11 +6372,11 @@ msgstr "経過時間を表示する:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:23
 msgid "Secondary timer:"
-msgstr ""
+msgstr "二次タイマー:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:27
 msgid "Swapped"
-msgstr ""
+msgstr "交換された"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_timer.qh:6
 msgid "Timer Panel"
@@ -7207,7 +7207,7 @@ msgstr "参加!"
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:93
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:105
 msgid "No Terms of Service specified"
-msgstr ""
+msgstr "利用規約は指定されていません"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:144
 #: qcsrc/menu/xonotic/serverlist.qc:1052
@@ -7270,7 +7270,7 @@ msgstr "設定を変更するには `crypto_aeslevel` cvarを使用します"
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:203
 #: qcsrc/menu/xonotic/serverlist.qc:1056
 msgid "custom stats server"
-msgstr ""
+msgstr "カスタムサーバー状態"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:203
 #: qcsrc/menu/xonotic/serverlist.qc:1056
@@ -7284,17 +7284,17 @@ msgstr "有効な状態"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:213
 msgid "Status"
-msgstr ""
+msgstr "ステータス"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:214
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_termsofservice.qh:7
 #: qcsrc/menu/xonotic/dialog_termsofservice.qh:11
 msgid "Terms of Service"
-msgstr ""
+msgstr "利用規約"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qh:7
 msgid "Server Info"
-msgstr ""
+msgstr "サーバー情報"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:24
 msgid "Hostname:"
@@ -7347,7 +7347,7 @@ msgstr "キー:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:96
 msgid "Stats:"
-msgstr ""
+msgstr "状態:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qh:6
 msgid "Server Information"
@@ -9674,19 +9674,19 @@ msgstr "チームの選択"
 
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:78
 msgid "Terms of Service have been updated. Please read them before continuing:"
-msgstr ""
+msgstr "利用規約を更新されました。続行する前にそれらをお読みください:"
 
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:80
 msgid "Welcome to Xonotic! Please read the following Terms of Service:"
-msgstr ""
+msgstr "XONOTICへようこそ! 利用規約をお読みください:"
 
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:93
 msgid "Accept"
-msgstr ""
+msgstr "同意する"
 
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:97
 msgid "Don't accept (quit the game)"
-msgstr ""
+msgstr "同意しない(ゲームを終了する)"
 
 #: qcsrc/menu/xonotic/dialog_uid2name.qc:10
 msgid "Allow player statistics to use your nickname?"
index e3c004052cd99195c05ef033ae40747c4ccf4e76..f1b2991dbf7ae970da55ffec52b200616e77d5da 100644 (file)
@@ -3,6 +3,8 @@
 # This file is distributed under the same license as the PACKAGE package.
 #
 # Translators:
+# Gustaf Alhäll, 2022
+# Gustaf Alhäll, 2022
 # Hanicef <gustaf@hanicef.me>, 2021
 msgid ""
 msgstr ""
@@ -488,12 +490,12 @@ msgstr "Åskåda spelare"
 #: qcsrc/client/hud/panel/racetimer.qc:56
 #, c-format
 msgid " (-%dL)"
-msgstr ""
+msgstr " (-%dV)"
 
 #: qcsrc/client/hud/panel/racetimer.qc:61
 #, c-format
 msgid " (+%dL)"
-msgstr ""
+msgstr " (+%dV)"
 
 #: qcsrc/client/hud/panel/racetimer.qc:80
 msgid "Start line"
@@ -1063,24 +1065,24 @@ msgstr "nmi"
 
 #: qcsrc/client/hud/panel/timer.qc:132
 msgid "Warmup"
-msgstr ""
+msgstr "Uppvärmning"
 
 #: qcsrc/client/hud/panel/timer.qc:134
 msgid "Timeout"
-msgstr ""
+msgstr "Timeout"
 
 #: qcsrc/client/hud/panel/timer.qc:136
 msgid "Sudden Death"
-msgstr ""
+msgstr "Plötslig Död"
 
 #: qcsrc/client/hud/panel/timer.qc:138
 msgid "Overtime"
-msgstr ""
+msgstr "Övertid"
 
 #: qcsrc/client/hud/panel/timer.qc:140
 #, c-format
 msgid "Overtime #%d"
-msgstr ""
+msgstr "Övertid #%d"
 
 #: qcsrc/client/hud/panel/vote.qc:30
 msgid "^1You must answer before entering hud configure mode"
@@ -1655,7 +1657,7 @@ msgstr "Du vann!"
 #: qcsrc/common/minigames/minigame/pp.qc:468
 #: qcsrc/common/minigames/minigame/ttt.qc:351
 msgid "Wait for your opponent to make their move"
-msgstr "Väntar på din motståndare att göra sin flytt"
+msgstr "Vänta på din motståndare att göra sin flytt"
 
 #: qcsrc/common/minigames/minigame/c4.qc:397
 #: qcsrc/common/minigames/minigame/nmm.qc:617
@@ -3815,7 +3817,7 @@ msgstr "^K1Du orättvist eliminerade dig själv!"
 #: qcsrc/common/notifications/all.inc:619
 #, c-format
 msgid "^K1You were %s"
-msgstr "^K1Du var %s"
+msgstr "^K1Du blev %s"
 
 #: qcsrc/common/notifications/all.inc:620
 msgid "^K1You couldn't catch your breath!"
@@ -3899,7 +3901,7 @@ msgstr "^K1Du blev ett stjärnskott!"
 
 #: qcsrc/common/notifications/all.inc:633
 msgid "^K1You melted away in slime!"
-msgstr "^K1Du smält ner i slem!"
+msgstr "^K1Du smälte bort i slem!"
 
 #: qcsrc/common/notifications/all.inc:634
 msgid "^K1You committed suicide!"
@@ -4000,7 +4002,7 @@ msgstr "^K1Du blev bedragen av lagkamraten ^BG%s"
 #: qcsrc/common/notifications/all.inc:652
 #, c-format
 msgid "^K1You were team killed by ^BG%s"
-msgstr "^K1Du var lagdödad av ^BG%s"
+msgstr "^K1Du blev lagdödad av ^BG%s"
 
 #: qcsrc/common/notifications/all.inc:654
 msgid ""
@@ -5007,7 +5009,7 @@ msgstr "SNEDSTRECK"
 #: qcsrc/common/util.qc:1457
 #, c-format
 msgid "MULTIPLY"
-msgstr "MULTIPLICERA"
+msgstr "GÅNGER"
 
 #: qcsrc/common/util.qc:1458
 #, c-format
@@ -5044,12 +5046,12 @@ msgstr "MHJULNER"
 #: qcsrc/common/util.qc:1475
 #, c-format
 msgid "JOY%d"
-msgstr "JOY%d"
+msgstr "SPAK%d"
 
 #: qcsrc/common/util.qc:1478
 #, c-format
 msgid "AUX%d"
-msgstr ""
+msgstr "AUX%d"
 
 #: qcsrc/common/util.qc:1485
 #, c-format
@@ -5169,7 +5171,7 @@ msgstr "HÖGER_THUMB_HÖGER"
 #: qcsrc/common/util.qc:1516 qcsrc/common/util.qc:1517
 #, c-format
 msgid "JOY_%s"
-msgstr "JOY_%s"
+msgstr "SPAK_%s"
 
 #: qcsrc/common/util.qc:1514
 #, c-format
@@ -5194,7 +5196,7 @@ msgstr "HÖGER"
 #: qcsrc/common/util.qc:1523
 #, c-format
 msgid "MIDINOTE%d"
-msgstr ""
+msgstr "MIDINOT%d"
 
 #: qcsrc/common/vehicles/cl_vehicles.qc:171
 #, c-format
@@ -5506,22 +5508,22 @@ msgstr "%d sekunder"
 #: qcsrc/lib/counting.qh:79
 #, c-format
 msgid "%dst"
-msgstr ""
+msgstr "%d:a"
 
 #: qcsrc/lib/counting.qh:80
 #, c-format
 msgid "%dnd"
-msgstr ""
+msgstr "%d:a"
 
 #: qcsrc/lib/counting.qh:81
 #, c-format
 msgid "%drd"
-msgstr ""
+msgstr "%d:e"
 
 #: qcsrc/lib/counting.qh:85
 #, c-format
 msgid "%dth"
-msgstr ""
+msgstr "%d:e"
 
 #: qcsrc/lib/oo.qh:324
 msgid "No description"
@@ -5608,7 +5610,7 @@ msgstr "Spelmotor"
 
 #: qcsrc/menu/xonotic/credits.qc:121
 msgid "Engine Additions"
-msgstr "Motoradditioner"
+msgstr "Motortillägg"
 
 #: qcsrc/menu/xonotic/credits.qc:127
 msgid "Compiler"
@@ -5777,7 +5779,7 @@ msgstr "Tack till"
 
 #: qcsrc/menu/xonotic/dialog_credits.qh:8
 msgid "The Xonotic credits"
-msgstr ""
+msgstr "Xonotic tack till"
 
 #: qcsrc/menu/xonotic/dialog_disconnect.qc:16
 msgid "Are you sure to disconnect from server?"
@@ -6317,7 +6319,7 @@ msgstr "ingen stil"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:58
 msgid "progress bar"
-msgstr "framstegsbar"
+msgstr "förloppsindikator"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:59
 msgid "gradient"
@@ -6368,7 +6370,7 @@ msgstr "Växelindikatorer:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:128
 msgid "Direction caps:"
-msgstr ""
+msgstr "Riktningskanter:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_strafehud.qc:130
 msgid "Active:"
@@ -6392,11 +6394,11 @@ msgstr "Visa förfluten tid"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:23
 msgid "Secondary timer:"
-msgstr ""
+msgstr "Sekundär tidtagare:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_timer.qc:27
 msgid "Swapped"
-msgstr ""
+msgstr "Växlad"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_timer.qh:6
 msgid "Timer Panel"
@@ -6979,7 +6981,7 @@ msgstr "Blodförlust"
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:93
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:175
 msgid "Buffs"
-msgstr ""
+msgstr "Buffar"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:95
 msgid "Overkill"
@@ -7031,6 +7033,8 @@ msgid ""
 "Enable buff pickups (random bonuses like Medic, Invisible, etc.) on the maps "
 "that support it"
 msgstr ""
+"Slå på buffupplock (slumpmässiga bonusar som Läkare, Osynlighet, osv.) på "
+"kartor som stödjer det"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:181
 msgid "Only possible to inflict damage on your enemy while they're airborne"
@@ -7235,7 +7239,7 @@ msgstr "Anslut!"
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:93
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:105
 msgid "No Terms of Service specified"
-msgstr ""
+msgstr "Inga villkor för tjänsten specifierade"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:144
 #: qcsrc/menu/xonotic/serverlist.qc:1052
@@ -7298,7 +7302,7 @@ msgstr "Använd `crypto_aeslevel` cvaren för att ändra dina preferenser"
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:203
 #: qcsrc/menu/xonotic/serverlist.qc:1056
 msgid "custom stats server"
-msgstr ""
+msgstr "egen statistikserver"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:203
 #: qcsrc/menu/xonotic/serverlist.qc:1056
@@ -7312,17 +7316,17 @@ msgstr "statistik påslagen"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:213
 msgid "Status"
-msgstr ""
+msgstr "Status"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:214
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_termsofservice.qh:7
 #: qcsrc/menu/xonotic/dialog_termsofservice.qh:11
 msgid "Terms of Service"
-msgstr ""
+msgstr "Villkor för Tjänst"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qh:7
 msgid "Server Info"
-msgstr ""
+msgstr "Serverinfo"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:24
 msgid "Hostname:"
@@ -7375,7 +7379,7 @@ msgstr "Nyckel:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qc:96
 msgid "Stats:"
-msgstr ""
+msgstr "Statistik:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfotab.qh:6
 msgid "Server Information"
@@ -7657,7 +7661,7 @@ msgstr "Sätt kraft:"
 
 #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:76
 msgid "Claim *"
-msgstr ""
+msgstr "Ta förfodran över *"
 
 #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:78
 msgid "* object info"
@@ -7665,11 +7669,11 @@ msgstr "* objektinfo"
 
 #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:79
 msgid "* mesh info"
-msgstr ""
+msgstr "* nätinfo"
 
 #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:80
 msgid "* attachment info"
-msgstr ""
+msgstr "* fästningsinfo"
 
 #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:81
 msgid "Show help"
@@ -7762,7 +7766,7 @@ msgstr "Vapen:"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.qc:100
 msgid "New style sound attenuation"
-msgstr ""
+msgstr "Ny ljuddämpningsstil"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.qc:103
 msgid "Mute sounds when not active"
@@ -9426,7 +9430,7 @@ msgid ""
 "Enable vertical synchronization to prevent tearing, will cap your fps to the "
 "screen refresh rate"
 msgstr ""
-"Slå på vertikal synkronisering för att undvika rivning, kommet att låsa din "
+"Slå på vertikal synkronisering för att undvika rivning, kommer att låsa din "
 "fps till skärmens uppdateringsfrekvens"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:67
@@ -9497,7 +9501,7 @@ msgid ""
 "normal rendering starts"
 msgstr ""
 "Eliminera överritning genom att rita en bara-djup-version av scenen innan "
-"normala rendering börjar"
+"den normala renderingen börjar"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:100
 msgid "DF^Disabled"
@@ -9513,7 +9517,7 @@ msgstr "Allt"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:107
 msgid "Vertex Buffer Objects (VBOs)"
-msgstr ""
+msgstr "Vertex Buffer Objects (VBOs)"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:110
 msgid "VBO^Off"
@@ -9530,6 +9534,8 @@ msgid ""
 "Make use of Vertex Buffer Objects to store static geometry in video memory "
 "for faster rendering"
 msgstr ""
+"Ta användning av Vertex Buffer Objects för att lagra statisk geometri i "
+"bildminne för snabbare rendering"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:115
 msgid "Vertices"
@@ -9596,7 +9602,7 @@ msgid ""
 "Ambient lighting, if set too high it tends to make light on maps look dull "
 "and flat"
 msgstr ""
-"Omgivet belysning, om satt för högt så brukar den göra att ljus på kartor "
+"Omgiven belysning, om satt för högt så brukar den göra att ljus på kartor "
 "ser tråkiga och platta ut"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:153
@@ -9633,7 +9639,7 @@ msgstr "Trippiga kanter (påskegg)"
 
 #: qcsrc/menu/xonotic/dialog_singleplayer.qc:145
 msgid "Instant action! (random map with bots)"
-msgstr ""
+msgstr "Omedelbar action! (slumpmässig bana med bottar)"
 
 #: qcsrc/menu/xonotic/dialog_singleplayer.qc:152
 msgid "???"
@@ -9665,7 +9671,7 @@ msgstr "Enspelarläge"
 
 #: qcsrc/menu/xonotic/dialog_singleplayer.qh:7
 msgid "Play the singleplayer campaign or instant action matches against bots"
-msgstr ""
+msgstr "Spela enspelarkampanj eller matcher med omedelbar action mot bottar"
 
 #: qcsrc/menu/xonotic/dialog_singleplayer_winner.qh:7
 msgid "Winner"
@@ -9707,18 +9713,21 @@ msgstr "Lagval"
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:78
 msgid "Terms of Service have been updated. Please read them before continuing:"
 msgstr ""
+"Villkoren för tjänsten har blivit uppdaterats. Vänligen läs den innan du "
+"fortsätter:"
 
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:80
 msgid "Welcome to Xonotic! Please read the following Terms of Service:"
 msgstr ""
+"Välkommen till Xonotic! Vänligen läs de följande villkoren för tjänsten:"
 
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:93
 msgid "Accept"
-msgstr ""
+msgstr "Acceptera"
 
 #: qcsrc/menu/xonotic/dialog_termsofservice.qc:97
 msgid "Don't accept (quit the game)"
-msgstr ""
+msgstr "Acceptera inte (avsluta spelet)"
 
 #: qcsrc/menu/xonotic/dialog_uid2name.qc:10
 msgid "Allow player statistics to use your nickname?"
@@ -9767,7 +9776,7 @@ msgstr "ducka / sjunk"
 
 #: qcsrc/menu/xonotic/keybinder.qc:42
 msgid "off-hand hook"
-msgstr ""
+msgstr "av-handskrok"
 
 #: qcsrc/menu/xonotic/keybinder.qc:43
 msgid "jetpack"
@@ -9823,7 +9832,7 @@ msgstr "maximera radar"
 
 #: qcsrc/menu/xonotic/keybinder.qc:89
 msgid "3rd person view"
-msgstr "tredje-personsvy"
+msgstr "Tredje-personsvy"
 
 #: qcsrc/menu/xonotic/keybinder.qc:90
 msgid "enter spectator mode"
@@ -9871,7 +9880,7 @@ msgstr "avsluta"
 
 #: qcsrc/menu/xonotic/keybinder.qc:114
 msgid "auto-join team"
-msgstr ""
+msgstr "gå med lag automatiskt"
 
 #: qcsrc/menu/xonotic/keybinder.qc:120
 msgid "drop key/flag, exit vehicle"
diff --git a/demoseeking.cfg b/demoseeking.cfg
new file mode 100644 (file)
index 0000000..5dbaf86
--- /dev/null
@@ -0,0 +1,192 @@
+// Provides a seekdemo alias that allows fast-forwarding demo playback by a
+// given time.
+//
+// Setup:
+//
+// Add "exec input-demoseeking.cfg" and the following cl_hook_gamestart_all
+// hook to autoexec.cfg. If you already have a cl_hook_gamestart_all hook, add
+// the quoted command to your hook, separated with a semicolon:
+//
+//     exec demoseeking.cfg
+//     alias cl_hook_gamestart_all "demoseeking_game_started"
+//
+// Usage:
+//     1. start a demo (ply/playdemo command or menu), and
+//     2. while in a demo, use the "seekdemo <seconds>" command
+//
+// Alternatively, use input-demoseeking.cfg instead to restore the default
+// bindings:
+//
+//     * use ,. (comma and dot) keys to seek -5/+5 seconds
+//     * use m/ (m and slash) keys to seek -30/+30 seconds
+//     * - (minus) also works instead of slash
+//
+// Options:
+//
+// These options can be customized after "exec demoseeking.cfg".
+//
+// _demoseeking_min_speed
+//     Minimum seek speed. Default 1.5.
+// _demoseeking_max_speed
+//     Maximum seek speed. Default 200. Reduce this if the client freezes too
+//     much while seeking. If the framerate is still high while seeking, you
+//     may increase this, but increasing this with low framerate is unlikely to
+//     improve seek performance.
+// _demoseeking_speed_factor
+//     Factor of remaining time to seek speed. Default 10.
+//     The seek speed is defined by the formula
+//
+//       1.0 + [remaining seek seconds] * _demoseeking_speed_factor
+//
+//     bound by _demoseeking_min_speed and _demoseeking_max_speed.
+// _demoseeking_fast_speed
+//     Seek speed above which rendering is disabled. Default 80.
+//
+// Variables:
+//
+// _demo_is_playing
+//     Indicates whether a demo is currently playing. Set to 1 when playdemo
+//     starts a demo.
+//     Note: the setup above is needed to reset this reliably.
+// _current_demo_name
+//     The name of the latest played demo. Same as the argument passed to the
+//     last playdemo command. If playdemo fails to start the demo (e.g. when
+//     the file does not exist) this variable is not updated.
+//     Note: the setup above is needed to reset this reliably.
+// _demoseeking_is_seeking
+//     1 while a seek is in progress, 0 otherwise.
+//
+// Extras:
+//
+// - The alias playdemo_hook is run when demo playback is started.
+// - The alias seekdemo_hook_seek_end is run after a seek completed successfully.
+// - The alias seekdemo_getseektime can be used by scripts to get the current
+//   playback time or seek target time. See its usage below.
+
+// option initialization
+set _demoseeking_options_loaded 1
+set _demoseeking_min_speed 1.5
+set _demoseeking_max_speed 200
+set _demoseeking_fast_speed 80
+set _demoseeking_speed_factor 10
+
+// state initialization
+alias _demoseeking_init_vars "set _demoseeking_vars_loaded 1; set _demo_is_playing 0; set _current_demo_name \"\"; set _demoseeking_is_seeking 0; set _seekdemo_state idle; set _seekdemo_target 0; alias playdemo_hook \"\"; alias seekdemo_hook_seek_end"
+alias _demoseeking_init_vars1 ""
+_demoseeking_init_vars${_demoseeking_vars_loaded ?}
+
+// Hook into game start to reset seekdemo state. This prevents reloading the
+// last demo when seekdemo is accidentally called during an actual game.
+alias demoseeking_game_started "set _demo_is_playing 0; set _current_demo_name \"\""
+
+// usage: seekdemo_getseektime <varname>
+// Populates <varname> with the current seek target time, if seeking. If not
+// seeking, populate it with the current playback time.
+alias seekdemo_getseektime "_seekdemo_getseektime_get \"$1\" _seekdemo_getseektime_rpn_$_seekdemo_state"
+alias _seekdemo_getseektime_get "cl_cmd rpn \"/$1\" ${$2} def"
+set _seekdemo_getseektime_rpn_idle time
+set _seekdemo_getseektime_rpn_starting _seekdemo_target
+set _seekdemo_getseektime_rpn_seeking _seekdemo_target
+
+// Hook into "playdemo" command. This alias runs immediately after the actual
+// "playdemo" command runs. Needed for seekdemo to restart the demo when
+// seeking backwards. Runs the playdemo_hook alias when a demo file is being
+// loaded.
+// ---
+// "cl_cmd rpn" fails while a map is loading, leaving the value of
+// _demoseeking_playdemo_success untouched, which means the playdemo command
+// succeeded.
+alias playdemo "set _demoseeking_playdemo_success 1; cl_cmd rpn /_demoseeking_playdemo_success 0 def; _demoseeking_playdemo_check \"$1\""
+alias _demoseeking_playdemo_check "_demoseeking_playdemo_check_$_demoseeking_playdemo_success \"$1\""
+alias _demoseeking_playdemo_check_0 "echo \"playdemo failed\""
+alias _demoseeking_playdemo_check_1 "set _demo_is_playing 1; set _current_demo_name \"$1\"; playdemo_hook"
+
+// Hook into the "defer" command to restore state when "defer clear" is run
+// while seeking. "defer clear" seems to be run by some csprogs.
+// ---
+// compare the first argument. when it's "clear", run _demoseeking_restore
+alias defer "alias _demoseeking_deftmp_$1 \"\"; alias _demoseeking_deftmp_clear _demoseeking_restore; _demoseeking_deftmp_$1; unalias _demoseeking_deftmp_$1"
+alias _demoseeking_restore "_demoseeking_restore_$_seekdemo_state"
+// idle - no seek, no state to restore
+alias _demoseeking_restore_idle ""
+// startseek - special state where this script calls defer clear before
+// starting the seek loop
+alias _demoseeking_restore_startseek ""
+// starting - unexpected defer clear before seek started. Restore state by
+// running check for forward/backward seek.
+alias _demoseeking_restore_starting "_seekdemo_start_seek"
+// seeking - unexpected defer clear while seeking. Restart the loop.
+alias _demoseeking_restore_seeking "_seekdemo_check_time"
+
+// usage: seekdemo <seconds>
+// Seek the playing demo by the number of seconds. May be a floating point
+// number. The seek is asynchronous. When a seek is already in action, the
+// target time is adjusted by the specified amount.
+// When starting a seek backwards, the demo is restarted before forwarding to
+// the earlier time. Does nothing when no demo is playing (_demo_is_playing).
+// ---
+// check if seek should start or if target time should be adjusted instead
+alias seekdemo "_seekdemo_checkstate_$_seekdemo_state ${* q}"
+// before starting seek, verify demo is playing first
+alias _seekdemo_checkstate_idle "set _seekdemo_demo_is_playing 0; cl_cmd rpn /_seekdemo_demo_is_playing _demo_is_playing 0 != def; _seekdemo_checkstart ${* q}"
+// when already seeking, only update the variable holding the target time
+alias _seekdemo_checkstate_starting "_seekdemo_checkstate_seeking ${* q}"
+alias _seekdemo_checkstate_seeking "rpn /_seekdemo_target _seekdemo_target \"$1\" add def"
+
+alias _seekdemo_checkstart "_seekdemo_checkstart_$_seekdemo_demo_is_playing ${* q}"
+alias _seekdemo_checkstart_0 "echo \"no demo currently playing\""
+// start new seek
+alias _seekdemo_checkstart_1 "cl_cmd rpn /_seekdemo_target time \"$1\" add def; set _demoseeking_is_seeking 1; set _seekdemo_state starting; _seekdemo_save_options; _seekdemo_start_seek"
+
+// check if seeking forwards or backwards
+alias _seekdemo_start_seek "set _seekdemo_time_increasing err; cl_cmd rpn /_seekdemo_time_increasing _seekdemo_target time ge def; _seekdemo_check_increasing"
+alias _seekdemo_check_increasing "_seekdemo_check_increasing_$_seekdemo_time_increasing"
+// when seeking backwards, restart the demo and start the reload wait loop
+alias _seekdemo_check_increasing_0 "playdemo \"$_current_demo_name\"; set _seekdemo_reload_success 1; cl_cmd rpn _seekdemo_reload_success 0 def; _seekdemo_check_reloading"
+alias _seekdemo_check_increasing_1 "_seekdemo_check_time"
+alias _seekdemo_check_increasing_err "_seekdemo_failed \"(demo not loaded?)\""
+alias _seekdemo_check_reloading "_seekdemo_check_reloading_$_seekdemo_reload_success"
+alias _seekdemo_check_reloading_0 "_seekdemo_failed (playdemo)"
+// launch the "defer 10" command as a fallback to stop waiting in case demo reload fails
+alias _seekdemo_check_reloading_1 "defer 10 \"_seekdemo_failed (reload)\"; _seekdemo_wait_reload"
+
+// demo reload wait loop. "cl_cmd rpn" fails to execute until demo finished loading, leaving _demo_loaded 0
+alias _seekdemo_wait_reload "set _demo_loaded 0; cl_cmd rpn /_demo_loaded 1 def; _seekdemo_check_loaded"
+alias _seekdemo_check_loaded "_seekdemo_check_loaded_$_demo_loaded"
+alias _seekdemo_check_loaded_0 "defer 0.02 _seekdemo_wait_reload"
+// defer clear kills the fallback "defer 10" above
+alias _seekdemo_check_loaded_1 "set _seekdemo_state startseek; defer clear; set _seekdemo_state seeking; _seekdemo_check_time"
+
+// start of main seek loop, check if target time is reached
+alias _seekdemo_check_time "set _seekdemo_seek_state failed; cl_cmd rpn _seekdemo_target time dup /_seekdemo_current_time exch def gt /_seekdemo_seek_state exch def; _seekdemo_check_continue"
+alias _seekdemo_check_continue "_seekdemo_check_continue_$_seekdemo_seek_state"
+alias _seekdemo_check_continue_0 "_seekdemo_leave_seek; seekdemo_hook_seek_end"
+// Update options while seeking.
+// - Adjust the playback speed by setting the slowmo cvar. The further the seek, the faster the playback speed.
+// - Compare the speed to different speed levels to maximize performance for long seeks while reducing screen flashes for short ones.
+// Then continue the loop with "defer 0", so the check is run on every rendered frame.
+alias _seekdemo_check_continue_1 "set _seekdemo_speed_level failed; cl_cmd rpn _seekdemo_target time sub _demoseeking_speed_factor 0.01 max mul 1 add _demoseeking_min_speed max _demoseeking_max_speed min dup /slowmo exch def dup _demoseeking_fast_speed gt exch 2 gt add /_seekdemo_speed_level exch def; _seekdemo_set_options; defer 0 _seekdemo_check_time"
+alias _seekdemo_check_continue_failed "_seekdemo_failed \"(demo ended?)\""
+
+alias _seekdemo_failed "_seekdemo_leave_seek; echo SEEK FAILED ${1 ?}"
+
+// Update options while and after seeking and for different levels of seek speed.
+// - Disable r_render only at high seek speed to maximize performance, but keep
+//   it enabled otherwise to avoid jarring black screens for short seeks.
+// - snd_startnonloopingsounds disables all sounds that can safely be disabled,
+//   avoiding lots of sounds playing at the same time.
+// - Other disabled options prevent side effects from fast seeking at low
+//   framerate, where particles and other effects accumulate and appear at the
+//   same time when the target has been reached.
+alias _seekdemo_leave_seek "_seekdemo_restore_options; set _demoseeking_is_seeking 0; set _seekdemo_state idle; r_render 1; snd_startnonloopingsounds 1; slowmo \"$_seekdemo_sav_slowmo\""
+alias _seekdemo_set_options "_seekdemo_set_options_$_seekdemo_speed_level"
+// speed level 0: below 2x playback speed, target almost reached, all options restored
+alias _seekdemo_set_options_0 "r_render 1; snd_startnonloopingsounds 1; _seekdemo_restore_options"
+// speed level 1: between 2x and 80x playback speed, sounds disabled, game rendered with reduced graphics
+alias _seekdemo_set_options_1 "r_render 1; snd_startnonloopingsounds 0; _seekdemo_settemp_options"
+// speed level 2: above 80x playback speed, sounds disabled, game not rendered to maximize performance
+alias _seekdemo_set_options_2 "r_render 0; snd_startnonloopingsounds 0; _seekdemo_settemp_options"
+// save/restore options for reduced settings
+alias _seekdemo_save_options "set _seekdemo_sav_cl_decals \"$cl_decals\"; set _seekdemo_sav_cl_damagetext \"$cl_damagetext\"; set _seekdemo_sav_cl_particles \"$cl_particles\"; set _seekdemo_sav_cl_casings \"$cl_casings\"; set _seekdemo_sav_slowmo \"$slowmo\""
+alias _seekdemo_settemp_options "settemp cl_decals 0; settemp cl_damagetext 0; settemp cl_particles 0; settemp cl_casings 0"
+alias _seekdemo_restore_options "settemp cl_decals \"$_seekdemo_sav_cl_decals\"; settemp cl_damagetext \"$_seekdemo_sav_cl_damagetext\"; settemp cl_particles \"$_seekdemo_sav_cl_particles\"; settemp cl_casings \"$_seekdemo_sav_cl_casings\""
index e069ad94add8fd64353b0f3e185a4e62f819f7da..b4250f06e6f9cdceadcde2acda8f51701c1259cf 100644 (file)
@@ -1,32 +1,19 @@
-alias playdemo "set _demo_name \"$1\""
-set _demo_name ""
-set _demo_seeking 0
-set _demo_good 0
-set _demo_time_increasing 0
-set _demo_time 0
-set _demo_time_step 0
-alias seekdemo "_seekdemo_1_$_demo_seeking $1"
-alias _seekdemo_1_0 "cl_cmd rpn time dup        \"$1\" add dup /_demo_time exch def le /_demo_time_increasing exch def; _seekdemo_2"
-alias _seekdemo_1_1 "cl_cmd rpn time _demo_time \"$1\" add dup /_demo_time exch def le /_demo_time_increasing exch def; _seekdemo_2"
-alias _seekdemo_2 "_demo_seeking 1; r_render 0; snd_startnonloopingsounds 0; _seekdemo_3_$_demo_time_increasing"
-alias _seekdemo_3_0 "playdemo \"$_demo_name\"; _seekdemo_4; defer 10 _seekdemo_9_2"
-alias _seekdemo_3_1 "_seekdemo_7"
-alias _seekdemo_4 "set _demo_good 0; cl_cmd rpn /_demo_good 1 def; _seekdemo_5"
-alias _seekdemo_5 "_seekdemo_6_$_demo_good"
-alias _seekdemo_6_0 "defer 0.02 _seekdemo_4"
-alias _seekdemo_6_1 "defer clear; _seekdemo_7"
-alias _seekdemo_7 "set _demo_time_step 2; cl_cmd rpn _demo_time time gt /_demo_time_step exch def; _seekdemo_8"
-alias _seekdemo_8 "_seekdemo_9_$_demo_time_step"
-alias _seekdemo_9_0 "slowmo 1; set _demo_seeking 0; r_render 1; snd_startnonloopingsounds 1"
-alias _seekdemo_9_1 "cl_cmd rpn _demo_time time sub 10 mul 1 add /slowmo exch def; defer 0.001 _seekdemo_7"
-alias _seekdemo_9_2 "slowmo 1; set _demo_seeking 0; r_render 1; snd_startnonloopingsounds 1; echo SEEK FAILED"
+//
+// Make sure to follow the setup in demoseeking.cfg.
+//
+// This script loads demoseeking.cfg with the original bindings:
+//
+//     * ,. (comma and dot) keys to seek -5/+5 seconds
+//     * m/ (m and slash) keys to seek -30/+30 seconds
+//     * - (minus) also works instead of slash
+//
+// To use demoseeking without these bindings, do `exec demoseeking.cfg`
+// instead.
+
+exec demoseeking.cfg
+
 bind , "seekdemo -5"
 bind . "seekdemo +5"
 bind m "seekdemo -30"
 bind - "seekdemo +30"
 bind / "seekdemo +30"
-
-// Usage:
-//   start a demo
-//   use ,. keys to seek -5/+5 seconds
-//   use m/ keys (left/right of ,.) to seek -30/+30 seconds
index 20b8df582d1dc419dfcac6363d00f14d3609d2a9..97663f9755a6529fc673ae1c1148cebac29d5a36 100644 (file)
@@ -3,7 +3,7 @@ de    "German" "Deutsch" 100%
 de_CH "German (Switzerland)" "Deutsch (Schweiz)" 100%
 en    "English" "English" 100%
 en_AU "English (Australia)" "English (Australia)" 72%
-es    "Spanish" "Español" 99%
+es    "Spanish" "Español" 100%
 fr    "French" "Français" 100%
 ga    "Irish" "Irish" 31%
 it    "Italian" "Italiano" 100%
@@ -14,7 +14,7 @@ pt    "Portuguese" "Português" 81%
 pt_BR "Portuguese (Brazil)" "Português (Brasil)" 100%
 ro    "Romanian" "Romana" 71%
 fi    "Finnish" "Suomi" 99%
-sv    "Swedish" "Svenska" 97%
+sv    "Swedish" "Svenska" 99%
 tr    "Turkish" "Türkçe" 52%
 cs    "Czech" "Čeština" 32%
 el    "Greek" "Ελληνική" 46%
@@ -25,5 +25,5 @@ sr    "Serbian" "Српски" 61%
 uk    "Ukrainian" "Українська" 49%
 zh_CN "Chinese (China)" "中文" 59%
 zh_TW "Chinese (Taiwan)" "國語" 58%
-ja_JP "Japanese" "日本語" 99%
+ja_JP "Japanese" "日本語" 100%
 ko    "Korean" "한국의" 37%
index a23eb5539ae13833fdf6b94ee50762af6b30498e..9bfcb335ed2d52d40204aec58df3d04a42d3384b 100644 (file)
@@ -342,7 +342,7 @@ seta notification_INFO_WEAPON_TUBA_SUICIDE "1" "0 = off, 1 = print to console, 2
 seta notification_INFO_WEAPON_VAPORIZER_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_VORTEX_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 
-// MSG_CENTER notifications (count = 241):
+// MSG_CENTER notifications (count = 242):
 seta notification_CENTER_ALONE "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_ASSAULT_ATTACKING "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_ASSAULT_DEFENDING "1" "0 = off, 1 = centerprint"
@@ -480,6 +480,7 @@ seta notification_CENTER_KEYHUNT_ROUNDSTART "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_KEYHUNT_SCAN "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_KEYHUNT_START "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_LMS_NOLIVES "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_LMS_SPECWARN "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_MISSING_PLAYERS "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_MISSING_TEAMS "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_MOTD "1" "0 = off, 1 = centerprint"
@@ -746,4 +747,4 @@ seta notification_show_sprees_info "3" "Show spree information in MSG_INFO messa
 seta notification_show_sprees_info_newline "1" "Show attacker spree information for MSG_INFO messages on a separate line than the death notification itself"
 seta notification_show_sprees_info_specialonly "1" "Don't show attacker spree information in MSG_INFO messages if it isn't an achievement"
 
-// Notification counts (total = 839): MSG_ANNCE = 80, MSG_INFO = 334, MSG_CENTER = 241, MSG_MULTI = 156, MSG_CHOICE = 28
+// Notification counts (total = 840): MSG_ANNCE = 80, MSG_INFO = 334, MSG_CENTER = 242, MSG_MULTI = 156, MSG_CHOICE = 28
index cdf635f2273063bce61e865a5add4bec653ef33d..68e7312c7a5ba881ee1f45a000e91f64219ea7fb 100644 (file)
@@ -91,7 +91,7 @@ void HUD_Timer()
                timer_color = HUD_Timer_Color(timeleft);
 
        // Timer text
-       if (autocvar_hud_panel_timer_increment || timelimit == 0)
+       if (autocvar_hud_panel_timer_increment || timelimit <= 0)
                timer = seconds_tostring(HUD_Timer_TimeElapsed(curtime, STAT(GAMESTARTTIME)));
        else
                timer = seconds_tostring(timeleft);
index c965e7817dfbfab8fef417d38c3cdb41d73eb1e1..0357069988e54626982e46ab2556bde2e8633be8 100644 (file)
@@ -519,7 +519,8 @@ MUTATOR_HOOKFUNCTION(lms, ClientCommand_Spectate)
                if(player.frags != FRAGS_SPECTATOR && player.frags != FRAGS_PLAYER_OUT_OF_GAME)
                {
                        player.lms_spectate_warning = 1;
-                       sprint(player, "WARNING: you won't be able to enter the game again after spectating in LMS. Use the same command again to spectate anyway.\n");
+                       sprint(player, "^1WARNING:^7 you can't rejoin this match after spectating. Use the same command again to spectate anyway.\n");
+                       Send_Notification(NOTIF_ONE_ONLY, player, MSG_CENTER, CENTER_LMS_SPECWARN);
                }
                return MUT_SPECCMD_RETURN;
        }
index f1b2af8e600164799b48c0922cd20db778d36fcb..51902a5702b1c85e35382a98e4ee682c165482bb 100644 (file)
@@ -703,6 +703,7 @@ string multiteam_info_sprintf(string input, string teamname) { return ((input !=
     MULTITEAM_CENTER(KEYHUNT_START,                     N_ENABLE,    0, 0, "",               CPID_KEYHUNT,           "0 0",  _("^BGYou are starting with the ^TC^TT Key"), "", KEY)
 
     MSG_CENTER_NOTIF(LMS_NOLIVES,                       N_ENABLE,    0, 0, "",               CPID_LMS,               "0 0",  _("^BGYou have no lives left, you must wait until the next match"), "")
+    MSG_CENTER_NOTIF(LMS_SPECWARN,                      N_ENABLE,    0, 0, "",               CPID_LMS,               "0 0",  _("^F4WARNING:^BG you can't rejoin this match after spectating.\nUse the same command again to spectate anyway."), "")
 
     MSG_CENTER_NOTIF(MISSING_TEAMS,                     N_ENABLE,    0, 1, "missing_teams",  CPID_MISSING_TEAMS,     "-1 0", _("^BGWaiting for players to join...\nNeed active players for: %s"), "")
     MSG_CENTER_NOTIF(MISSING_PLAYERS,                   N_ENABLE,    0, 1, "f1",             CPID_MISSING_PLAYERS,   "-1 0", _("^BGWaiting for %s player(s) to join..."), "")