]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into terencehill/scoreboard_ui
authorterencehill <piuntn@gmail.com>
Sun, 8 Aug 2021 18:00:50 +0000 (20:00 +0200)
committerterencehill <piuntn@gmail.com>
Sun, 8 Aug 2021 18:00:50 +0000 (20:00 +0200)
24 files changed:
.tx/merge-base
common.es.po
common.ja_JP.po
common.pt_BR.po
common.zh_CN.po
gfx/menu/luma/icon_mod_jeff.tga [deleted file]
gfx/menu/luminos/icon_mod_jeff.tga [deleted file]
gfx/menu/wickedx/icon_mod_jeff.tga [deleted file]
gfx/menu/xaw/icon_mod_jeff.tga [deleted file]
languages.txt
qcsrc/client/items/items.qc
qcsrc/common/items/item/pickup.qh
qcsrc/common/mutators/mutator/powerups/powerup/invisibility.qh
qcsrc/common/mutators/mutator/powerups/powerup/shield.qh
qcsrc/common/mutators/mutator/powerups/powerup/speed.qh
qcsrc/common/mutators/mutator/powerups/powerup/strength.qh
qcsrc/common/mutators/mutator/powerups/sv_powerups.qh
qcsrc/common/notifications/all.inc
qcsrc/common/physics/movetypes/movetypes.qc
qcsrc/common/physics/movetypes/toss.qc
qcsrc/common/weapons/weapon/electro.qc
qcsrc/server/items/items.qc
ruleset-XDF.cfg
xonotic-server.cfg

index 426ef8f0bd5439d543ff2aa0a0154cd72151f3db..13add5705d368fd5539cbea6ca3fbd43cdf2a45c 100644 (file)
@@ -1 +1 @@
-Mon Jul 12 07:23:31 CEST 2021
+Sun Aug  1 07:24:34 CEST 2021
index 371689cba586c310cbfe79110ba3c6dc441c24b4..ba6b8e1d30c0e739b47d613506422004d426a36d 100644 (file)
@@ -31,8 +31,8 @@ msgstr ""
 "Project-Id-Version: Xonotic\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-06-27 07:23+0200\n"
-"PO-Revision-Date: 2021-06-27 05:24+0000\n"
-"Last-Translator: Alan García <bearz_x@hotmail.com>\n"
+"PO-Revision-Date: 2021-07-23 11:37+0000\n"
+"Last-Translator: LegendGuard\n"
 "Language-Team: Spanish (http://www.transifex.com/team-xonotic/xonotic/"
 "language/es/)\n"
 "Language: es\n"
@@ -1807,7 +1807,7 @@ msgstr "Ataque arácnido"
 
 #: qcsrc/common/monsters/monster/spider.qh:39
 msgid "Webbed"
-msgstr ""
+msgstr "Telaraña"
 
 #: qcsrc/common/monsters/monster/wyvern.qh:17
 #: qcsrc/menu/xonotic/dialog_monstertools.qc:19
@@ -2009,7 +2009,7 @@ msgstr "Ardor"
 
 #: qcsrc/common/mutators/mutator/status_effects/status_effect/spawnshield.qh:10
 msgid "Spawn Shield"
-msgstr ""
+msgstr "Reaparición del Escudo"
 
 #: qcsrc/common/mutators/mutator/status_effects/status_effect/superweapons.qh:7
 msgid "Superweapons"
index 5e36173f8c0bf334633d9c628008d3e9ac49fb8b..109b6ea8eb23b346d579ce9d8cd0906fd48dcf8f 100644 (file)
@@ -3,17 +3,19 @@
 # This file is distributed under the same license as the PACKAGE package.
 #
 # Translators:
+# 8fb942b4466cdbffede843a6379dce7e_4dc4284 <cbc8558ff26f685f62baa2a2eaee30b3_1013263>, 2021
 # Antoni Das <Antonidas159@gmail.com>, 2017
 # LegendGuard, 2020
 # LegendGuard, 2020-2021
 # Lento <securemailfor28-xonotic@yahoo.co.jp>, 2015
+# RYU N. <ryusho2523@yahoo.co.jp>, 2021
 msgid ""
 msgstr ""
 "Project-Id-Version: Xonotic\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-06-27 07:23+0200\n"
-"PO-Revision-Date: 2021-06-27 05:23+0000\n"
-"Last-Translator: divVerent <divVerent@xonotic.org>\n"
+"PO-Revision-Date: 2021-07-24 01:09+0000\n"
+"Last-Translator: RYU N. <ryusho2523@yahoo.co.jp>\n"
 "Language-Team: Japanese (Japan) (http://www.transifex.com/team-xonotic/"
 "xonotic/language/ja_JP/)\n"
 "Language: ja_JP\n"
@@ -30,7 +32,7 @@ msgstr "^2%s への書き出すに成功! (註: data/data/ に保存されまし
 #: qcsrc/client/hud/hud_config.qc:84
 #, c-format
 msgid "^1Couldn't write to %s"
-msgstr "^1%sã\81¸æ\9b¸ã\81\8bã\81ªã\81\8bã\81£た"
+msgstr "^1%sã\81¸æ\9b¸ã\81\91ã\81¾ã\81\9bã\82\93ã\81§ã\81\97た"
 
 #: qcsrc/client/hud/panel/centerprint.qc:173
 #, c-format
@@ -57,7 +59,7 @@ msgstr "一般的なメッセージ"
 
 #: qcsrc/client/hud/panel/chat.qc:95
 msgid "^3Player^7: This is the chat area."
-msgstr "^3選手^7: ここがチャット面積."
+msgstr "^3プレイヤー^7: ここがチャットエリアです。"
 
 #: qcsrc/client/hud/panel/engineinfo.qc:75
 #, c-format
@@ -81,12 +83,12 @@ msgstr "観戦するために ^3%s ^1を押して"
 #: qcsrc/client/hud/panel/infomessages.qc:105
 #: qcsrc/menu/xonotic/keybinder.qc:47
 msgid "primary fire"
-msgstr "一次射撃"
+msgstr "メイン射撃"
 
 #: qcsrc/client/hud/panel/infomessages.qc:107
 #, c-format
 msgid "^1Press ^3%s^1 or ^3%s^1 for next or previous player"
-msgstr "^1次または前の選手を表示されるために ^3%s ^1または ^3%s ^1を押して"
+msgstr "^3%s^1または^3%s^1を押すと次または前のプレイヤーが表示されます"
 
 #: qcsrc/client/hud/panel/infomessages.qc:107
 #: qcsrc/client/hud/panel/infomessages.qc:111
@@ -101,14 +103,12 @@ msgstr "前の武器"
 #: qcsrc/client/hud/panel/infomessages.qc:111
 #, c-format
 msgid "^1Use ^3%s^1 or ^3%s^1 to change the speed"
-msgstr "^3%s ^1または ^3%s ^1を使用して速度を変更する"
+msgstr "^3%s ^1または ^3%s ^1を使用してスピードを変更します"
 
 #: qcsrc/client/hud/panel/infomessages.qc:113
 #, c-format
 msgid "^1Press ^3%s^1 to observe, ^3%s^1 to change camera mode"
-msgstr ""
-"^1観戦するために ^3%s ^1を押して、カメラモードを変更するために ^3%s ^1を押し"
-"て"
+msgstr "^1^3%s^1で観戦、^3%s^1でカメラモードを変更"
 
 #: qcsrc/client/hud/panel/infomessages.qc:113
 #: qcsrc/common/vehicles/cl_vehicles.qc:171
@@ -118,7 +118,7 @@ msgstr "武器を落とす"
 #: qcsrc/client/hud/panel/infomessages.qc:113
 #: qcsrc/menu/xonotic/keybinder.qc:48
 msgid "secondary fire"
-msgstr "二次射撃"
+msgstr "サブ射撃"
 
 #: qcsrc/client/hud/panel/infomessages.qc:116
 #, c-format
@@ -147,12 +147,12 @@ msgstr "^1ゲームは ^3%d ^1秒で始まります"
 
 #: qcsrc/client/hud/panel/infomessages.qc:143
 msgid "^2Currently in ^1warmup^2 stage!"
-msgstr "^2現在、^1準備運動 ^2の段階に入っています!"
+msgstr "^2現在、^1ウォームアップ^2の段階に入っています!"
 
 #: qcsrc/client/hud/panel/infomessages.qc:158
 #, c-format
 msgid "%sPress ^3%s%s to end warmup"
-msgstr "%s準備運動を終了するために ^3%s%s を押して"
+msgstr "%s^3%s%sを押すとウォームアップを終了します"
 
 #: qcsrc/client/hud/panel/infomessages.qc:158
 #: qcsrc/client/hud/panel/infomessages.qc:160
@@ -164,7 +164,7 @@ msgstr "準備"
 #: qcsrc/client/hud/panel/infomessages.qc:160
 #, c-format
 msgid "%sPress ^3%s%s once you are ready"
-msgstr "%s準備ができたら ^3%s%s を押して"
+msgstr "%s準備ができたら ^3%s%sを押してください"
 
 #: qcsrc/client/hud/panel/infomessages.qc:165
 msgid "^2Waiting for others to ready up to end warmup..."
@@ -177,7 +177,7 @@ msgstr "^2全員の準備ができるまで待ち中..."
 #: qcsrc/client/hud/panel/infomessages.qc:173
 #, c-format
 msgid "^2Press ^3%s^2 to end warmup"
-msgstr "^2準備運動を終了するために ^2^3%s ^2を押して"
+msgstr "^3%s ^2を押すとウォームアップを終了します"
 
 #: qcsrc/client/hud/panel/infomessages.qc:194
 msgid "Teamnumbers are unbalanced!"
@@ -249,7 +249,7 @@ msgstr "QMCMD^公開メッセージを送信する:"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:803
 msgid "QMCMD^:-) / nice one"
-msgstr "QMCMD^ ^‿^ ) / ナイス"
+msgstr "QMCMD^ (^_^) / ナイス"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:803
 msgid "QMCMD^nice one"
@@ -261,11 +261,11 @@ msgstr "よくやった"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:805
 msgid "QMCMD^hi / good luck"
-msgstr "QMCMD^ã\82\88ã\83¼ / æ¥½ã\81\97ã\82\93ã\81§ã\81­"
+msgstr "QMCMD^ã\82\84ã\81\82 / ã\82°ã\83\83ã\83\89ã\83©ã\83\83ã\82¯"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:805
 msgid "QMCMD^hi / good luck and have fun"
-msgstr "QMCMD^ã\82\88ã\83¼ / é \91å¼µã\81£ã\81¦楽しんでね"
+msgstr "QMCMD^ã\82\84ã\81\82 / ã\82°ã\83\83ã\83\89ã\83©ã\83\83ã\82¯ã\80\81楽しんでね"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:807
 msgid "QMCMD^Send in English"
@@ -652,7 +652,7 @@ msgstr "キル数 - 自殺数 = "
 
 #: qcsrc/client/hud/panel/scoreboard.qc:133
 msgid "SCO^frags"
-msgstr "削除数"
+msgstr "FRAG数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:134
 msgid "Number of goals scored"
@@ -1553,11 +1553,11 @@ msgstr "よくやった! 「次のレベル」をクリックして続行する"
 
 #: qcsrc/common/minigames/minigame/bd.qc:1163
 msgid "Better luck next time!"
-msgstr "次回は頑張って!"
+msgstr "次回は頑張ってくれたまえ!"
 
 #: qcsrc/common/minigames/minigame/bd.qc:1168
 msgid "Tubular! Press \"Next Level\" to continue!"
-msgstr "管状! 「次のレベル」を押して続行して!"
+msgstr "管状! 「次のレベル」を押して次へ!"
 
 #: qcsrc/common/minigames/minigame/bd.qc:1170
 msgid "Wicked! Press \"Next Level\" to continue!"
@@ -1767,7 +1767,7 @@ msgstr "蜘蛛の攻撃"
 
 #: qcsrc/common/monsters/monster/spider.qh:39
 msgid "Webbed"
-msgstr ""
+msgstr ""
 
 #: qcsrc/common/monsters/monster/wyvern.qh:17
 #: qcsrc/menu/xonotic/dialog_monstertools.qc:19
@@ -1811,7 +1811,7 @@ msgstr "障害"
 
 #: qcsrc/common/mutators/mutator/buffs/all.inc:83
 msgid "Disabled"
-msgstr ""
+msgstr "無効"
 
 #: qcsrc/common/mutators/mutator/buffs/all.inc:94
 msgid "Vengeance"
@@ -1969,7 +1969,7 @@ msgstr "燃焼"
 
 #: qcsrc/common/mutators/mutator/status_effects/status_effect/spawnshield.qh:10
 msgid "Spawn Shield"
-msgstr ""
+msgstr "スポーンシールド"
 
 #: qcsrc/common/mutators/mutator/status_effects/status_effect/superweapons.qh:7
 msgid "Superweapons"
@@ -6202,19 +6202,19 @@ msgstr "ズームモード:"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:46
 msgid "Zoomed in"
-msgstr "ã\82ºã\83¼ã\83 ã\81\97ã\81\9få\86\85"
+msgstr "ã\82ºã\83¼ã\83 ã\82¤ã\83³"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:47
 msgid "Zoomed out"
-msgstr "ã\82ºã\83¼ã\83 ã\81\97ã\81\9få¤\96"
+msgstr "ã\82ºã\83¼ã\83 ã\82¢ã\82¦ã\83\88"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:48
 msgid "Always zoomed"
-msgstr "常にズームした"
+msgstr "常にズーム"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qc:49
 msgid "Never zoomed"
-msgstr "決してズームした"
+msgstr "ズームしない"
 
 #: qcsrc/menu/xonotic/dialog_hudpanel_radar.qh:6
 msgid "Radar Panel"
@@ -6549,7 +6549,7 @@ msgstr "モンスター:"
 #: qcsrc/menu/xonotic/dialog_monstertools.qc:22
 #: qcsrc/menu/xonotic/dialog_sandboxtools.qc:20
 msgid "Spawn"
-msgstr "現れる"
+msgstr "スポーン"
 
 #: qcsrc/menu/xonotic/dialog_monstertools.qc:23
 msgid "Remove"
@@ -6586,7 +6586,7 @@ msgstr "スキンを設定する:"
 
 #: qcsrc/menu/xonotic/dialog_monstertools.qh:6
 msgid "Monster Tools"
-msgstr "モンスター用具"
+msgstr "モンスターツール"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer.qc:14
 msgid "Servers"
@@ -6610,14 +6610,14 @@ msgstr "プロフィール"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer.qh:6
 msgid "Multiplayer"
-msgstr "マルチプレイヤー"
+msgstr "マルチプレイ"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer.qh:7
 msgid ""
 "Play online, against your friends in LAN, view demos or change player "
 "settings"
 msgstr ""
-"ã\82ªã\83³ã\83©ã\82¤ã\83³ã\81§é\81\8aã\81¶ã\80\81LANã\81®å\8f\8bé\81\94ã\81«å¯¾ã\81\97ã\81¦ã\80\81ã\83\87ã\83¢ã\82\92表示ã\81\99ã\82\8bã\81\8bã\80\81é\81¸æ\89\8b設å®\9aã\82\92å¤\89æ\9b´ã\81\99ã\82\8b"
+"ã\82ªã\83³ã\83©ã\82¤ã\83³ã\81§é\81\8aã\81¶ã\80\81LANã\81®å\8f\8bé\81\94ã\81¨å¯¾æ±ºã\80\81ã\83\87ã\83¢ã\82\92表示ã\81\99ã\82\8bã\81\8bã\80\81ã\83\97ã\83¬ã\82¤ã\83¤ã\83¼è¨­å®\9aã\82\92å¤\89æ\9b´"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:38
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:111
@@ -6710,15 +6710,15 @@ msgstr "ボット"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:130
 msgid "Beginner"
-msgstr "初心者"
+msgstr "ビギナー"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:131
 msgid "You will win"
-msgstr "勝つ"
+msgstr "å¿\85ã\81\9aå\8b\9dã\81¤"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:132
 msgid "You can win"
-msgstr "勝てる"
+msgstr "勝てるかも"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:133
 msgid "You might win"
@@ -6726,11 +6726,11 @@ msgstr "勝つかもしれない"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:134
 msgid "Advanced"
-msgstr "高度"
+msgstr "アドバンス"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:135
 msgid "Expert"
-msgstr "専門家"
+msgstr "エキスパート"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:136
 msgid "Pro"
@@ -6738,7 +6738,7 @@ msgstr "プロ"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:137
 msgid "Assassin"
-msgstr "暗殺者"
+msgstr "アサシン"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:138
 msgid "Unhuman"
@@ -6802,7 +6802,7 @@ msgstr "利用可能な全てのマップを選択から削除する"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create.qc:206
 msgid "Start Multiplayer!"
-msgstr "ã\83\9eã\83«ã\83\81ã\83\97ã\83¬ã\82¤ã\83¤ã\83¼ã\82\92é\96\8bå§\8b!"
+msgstr "ã\83\9eã\83«ã\83\81ã\83\97ã\83¬ã\82¤ã\82\92ã\82¹ã\82¿ã\83¼ã\83\88!"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.qc:50
 msgid "Title:"
@@ -6997,23 +6997,25 @@ msgstr "武器とアイテムのミューテーター:"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:212
 msgid "Players spawn with the grappling hook. Press the 'hook' key to use it"
-msgstr "選手はグラップリングフックで現れる。使用するには「フック」キーを押して"
+msgstr ""
+"プレイヤーはグラップリングフックでスポーンします。「フック」キーを押して使用"
+"してください"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:216
 msgid ""
 "Players spawn with the jetpack. Double-tap 'jump' or press the 'jetpack' key "
 "to use it"
 msgstr ""
-"選手はジェットパックでスポーンする。 「ジャンプ」をダブルタップするか、使用す"
-"ã\82\8bã\81\9fã\82\81ã\81«ã\80\8cã\82¸ã\82§ã\83\83ã\83\88ã\83\91ã\83\83ã\82¯ã\80\8dã\82­ã\83¼ã\82\92æ\8a¼ã\81\97ã\81¦"
+"プレイヤーはジェットパックでスポーンします。 「ジャンプ」をダブルタップする"
+"ã\81\8bã\80\81ã\80\8cã\82¸ã\82§ã\83\83ã\83\88ã\83\91ã\83\83ã\82¯ã\80\8dã\82­ã\83¼ã\82\92æ\8a¼ã\81\97ã\81¦ä½¿ç\94¨ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:220
 msgid ""
 "Projectiles can't be destroyed. However, you can still explode Electro orbs "
 "with the Electro primary fire"
 msgstr ""
-"å¼¾ã\81¯ç ´å£\8aã\81§ã\81\8dã\81ªã\81\84ã\80\82ã\81\9fã\81 ã\81\97ã\80\81ã\82¨ã\83¬ã\82¯ã\83\88ã\81®ä¸\80次å°\84æ\92\83ã\81§ã\82¨ã\83¬ã\82¯ã\83\88ã\82ªã\83¼ã\83\96ã\82\92ç\88\86ç\99ºã\81\95ã\81\9bã\82\8bã\81\93ã\81¨"
-"ã\81¯ã\81§ã\81\8dã\82\8b"
+"å¼¾ã\81¯ç ´å£\8aã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82ã\81\9fã\81 ã\81\97ã\80\81ã\82¨ã\83¬ã\82¯ã\83\88ã\81®ã\83¡ã\82¤ã\83³å°\84æ\92\83ã\81§ã\82¨ã\83¬ã\82¯ã\83\88ã\82ªã\83¼ã\83\96ã\82\92ç\88\86ç\99ºã\81\95ã\81\9bã\82\8b"
+"ã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:225
 msgid ""
@@ -7081,7 +7083,7 @@ msgid ""
 msgstr ""
 "選手は武器を受け取り、一発で敵を即座に殺すことができます。選手が弾薬を使い果"
 "たした場合、弾薬を見つけるまで10秒かかりますが、弾薬を見つけられない場合は死"
-"にます。二次射撃モードはダメージを与えませんが、ジャンプに適しています。"
+"にます。サブ射撃モードはダメージを与えませんが、ジャンプに適しています。"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:289
 msgid ""
@@ -7220,7 +7222,7 @@ msgstr "必須 (暗号化します)"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:161
 msgid "Use the `crypto_aeslevel` cvar to change your preferences"
-msgstr "設å®\9aã\82\92å¤\89æ\9b´ã\81\99ã\82\8bã\81«ã\81¯ `crypto_aeslevel` cvarã\82\92使ç\94¨ã\81\99ã\82\8b"
+msgstr "設å®\9aã\82\92å¤\89æ\9b´ã\81\99ã\82\8bã\81«ã\81¯ `crypto_aeslevel` cvarã\82\92使ç\94¨ã\81\97ã\81¾ã\81\99"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_join_serverinfo.qc:178
 msgid "Hostname:"
@@ -7289,7 +7291,7 @@ msgstr "音楽プレーヤー"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:48
 msgid "Auto record demos"
-msgstr "自動録デモ"
+msgstr "自動録デモ"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:57
 msgid "Timedemo"
@@ -7298,7 +7300,8 @@ msgstr "最高速度でデモを再生する"
 #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:58
 msgid "Benchmark how fast your computer can run the highlighted demo"
 msgstr ""
-"お使いのコンピューターが強調表示されたデモを実行できる速度をベンチマークする"
+"お使いのコンピューターが強調表示されたデモを実行できる速度をベンチマークしま"
+"す"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo.qc:62
 msgid "DEMO^Play"
@@ -7306,7 +7309,7 @@ msgstr "再生する"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:13
 msgid "Playing a demo will disconnect you from the current match."
-msgstr "ã\83\87ã\83¢ã\82\92å\86\8dç\94\9fã\81\99ã\82\8bã\81¨ã\80\81ç\8f¾å\9c¨ã\81®è©¦å\90\88ã\81\8bã\82\89å\88\87æ\96­ã\81\95ã\82\8cã\82\8b。"
+msgstr "ã\83\87ã\83¢ã\82\92å\86\8dç\94\9fã\81\99ã\82\8bã\81¨ã\80\81ç\8f¾å\9c¨ã\81®è©¦å\90\88ã\81\8bã\82\89å\88\87æ\96­ã\81\95ã\82\8cã\81¾ã\81\99。"
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_startconfirm.qc:15
 #: qcsrc/menu/xonotic/dialog_multiplayer_media_demo_timeconfirm.qc:15
@@ -7435,7 +7438,7 @@ msgstr "選手の統計が得点表であなたをランク付けできるよう
 
 #: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:156
 msgid "Select language..."
-msgstr "言語を選択する..."
+msgstr "言語選択..."
 
 #: qcsrc/menu/xonotic/dialog_quit.qc:11
 msgid "Are you sure you want to quit?"
@@ -7660,7 +7663,7 @@ msgstr "新しいスタイルの音響減衰"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.qc:103
 msgid "Mute sounds when not active"
-msgstr "活発でないときに音を消す"
+msgstr "アクティブでないときに音を消す"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.qc:106
 msgid "Frequency:"
@@ -7828,7 +7831,7 @@ msgstr "両"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.qc:176
 msgid "Automatic taunts:"
-msgstr "自動からかう:"
+msgstr "自動挑発:"
 
 #: qcsrc/menu/xonotic/dialog_settings_audio.qc:178
 msgid "Automatically taunt enemies after fragging them"
@@ -8015,8 +8018,8 @@ msgid ""
 "Use high resolution lightmaps, which will look pretty but use up some extra "
 "video memory"
 msgstr ""
-"é«\98解å\83\8f度ã\81®ã\83©ã\82¤ã\83\88ã\83\9eã\83\83ã\83\97ã\82\92使ç\94¨ã\81\99ã\82\8bã\80\81è¦\8bã\81\9fç\9b®ã\81¯ã\81\8dã\82\8cã\81\84ã\81§ã\81\99ã\81\8cã\80\81追å\8a ã\81®ã\83\93ã\83\87ã\82ªã\83¡ã\83¢ã\83ªã\82\92"
-"使い果たします。"
+"é«\98解å\83\8f度ã\81®ã\83©ã\82¤ã\83\88ã\83\9eã\83\83ã\83\97ã\82\92使ç\94¨ã\81\97ã\81¾ã\81\99ã\80\81è¦\8bã\81\9fç\9b®ã\81¯ã\81\8dã\82\8cã\81\84ã\81§ã\81\99ã\81\8cã\80\81追å\8a ã\81®ã\83\93ã\83\87ã\82ªã\83¡ã\83¢ã\83ª"
+"使い果たします。"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.qc:139
 msgid "Deluxe mapping"
@@ -8227,7 +8230,7 @@ msgstr ""
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.qc:233
 msgid "Motion blur strength - 0.4 recommended"
-msgstr "ã\83¢ã\83¼ã\82·ã\83§ã\83³ã\83\96ã\83©ã\83¼ã\81®å¼·åº¦ - 0.4ã\82\92å\8b§ã\82\81ã\81\99"
+msgstr "ã\83¢ã\83¼ã\82·ã\83§ã\83³ã\83\96ã\83©ã\83¼ã\81®å¼·åº¦ - 0.4ã\81\8cã\82ªã\82¹ã\82¹ã\83¡"
 
 #: qcsrc/menu/xonotic/dialog_settings_effects.qc:234
 msgid "Motion blur:"
@@ -8286,7 +8289,7 @@ msgstr "サイズ:"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:64
 msgid "By health"
-msgstr "健康で"
+msgstr "ヘルスで"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_crosshair.qc:76
 msgid "Use rings to indicate weapon status"
@@ -8436,7 +8439,7 @@ msgstr "十字線に近い場合のみ"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:158
 msgid "Display health and armor"
-msgstr "健康と鎧を表示する"
+msgstr "ヘルスとアーマーを表示する"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:163
 msgid "Damage overlay:"
@@ -8448,11 +8451,11 @@ msgstr "ダイナミックHUD"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:167
 msgid "HUD moves around following player's movement"
-msgstr "HUDã\81¯é\81¸æ\89\8bの動きに従って動き回る"
+msgstr "HUDã\82\92ã\83\97ã\83¬ã\82¤ã\83¤ã\83¼の動きに従って動き回る"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:169
 msgid "Shake the HUD when hurt"
-msgstr "å\82·ã\81¤ã\81\84ã\81\9fã\81¨ã\81\8dã\81«HUDã\82\92æ\8c¯ã\82\8b"
+msgstr "å\82·ã\81¤ã\81\84ã\81\9fã\81¨ã\81\8dã\81«HUDã\82\92æ\8fºã\82\89ã\81\99"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:173
 #: qcsrc/menu/xonotic/dialog_settings_game_hudconfirm.qh:6
@@ -8473,11 +8476,11 @@ msgstr "HUDを構成するローカルゲームを開始しますか?"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:24
 msgid "Frag Information"
-msgstr "削除情報"
+msgstr "FRAG情報"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:26
 msgid "Display information about killing sprees"
-msgstr "殺害に関する情報を表示する"
+msgstr "連続キルに関する情報を表示する"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_messages.qc:29
 msgid "Only display sprees if they are achievements"
@@ -8656,7 +8659,7 @@ msgstr "体フェージング:"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_model.qc:65
 msgid "Gibs:"
-msgstr "å\86\85è\87\93:"
+msgstr "ã\83\90ã\83©ã\83\90ã\83©æ­»ä½\93:"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_model.qc:67
 msgid "GIBS^None"
@@ -8779,7 +8782,7 @@ msgstr "ズーム中にレチクル2Dオーバーレイを表示する"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:115
 msgid "Release zoom when you die or respawn"
-msgstr "死んだり再び現れたときにズームを解放する"
+msgstr "死んだりリスポーンしたときにズームを解放する"
 
 #: qcsrc/menu/xonotic/dialog_settings_game_view.qc:119
 msgid "Release zoom when you switch weapons"
@@ -8928,7 +8931,7 @@ msgstr "DGAマウス入力を利用する"
 
 #: qcsrc/menu/xonotic/dialog_settings_input.qc:94
 msgid "Pressing \"enter console\" key also closes it"
-msgstr "「コンソールを入力する」キーを押すと、それも閉じる"
+msgstr "「コンソール入力」キーを押すと、それも閉じる"
 
 #: qcsrc/menu/xonotic/dialog_settings_input.qc:95
 msgid "Allow the console toggling bind to also close the console"
@@ -9238,7 +9241,7 @@ msgstr "解像度:"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:37
 msgid "Font/UI size:"
-msgstr "フォント / UIサイズ:"
+msgstr "フォント/UIサイズ:"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:39
 msgid "SZ^Unreadable"
@@ -9246,7 +9249,7 @@ msgstr "読めない"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:40
 msgid "SZ^Tiny"
-msgstr "小っぽけ"
+msgstr "ちっこい"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:41
 msgid "SZ^Little"
@@ -9294,7 +9297,7 @@ msgstr "32bit"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:59
 msgid "Full screen"
-msgstr "フルスケ"
+msgstr "全画面"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:61
 msgid "Vertical Synchronization"
@@ -9306,7 +9309,7 @@ msgid ""
 "screen refresh rate"
 msgstr ""
 "垂直同期を有効にしてティアリングを防止し、fpsを画面のリフレッシュレートに制限"
-"ã\81\99ã\82\8b"
+"ã\81\97ã\81¾ã\81\99"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:67
 msgid "Flip view horizontally"
@@ -9376,7 +9379,7 @@ msgid ""
 "normal rendering starts"
 msgstr ""
 "通常のレンダリングが開始する前に、深度のみのバージョンのシーンをレンダリング"
-"ã\81\99ã\82\8bã\81\93ã\81¨ã\81«ã\82\88ã\82\8aã\80\81ã\82ªã\83¼ã\83\90ã\83¼ã\83\89ã\83­ã\83¼ã\82\92æ\8e\92é\99¤ã\81\99ã\82\8b"
+"ã\81\99ã\82\8bã\81\93ã\81¨ã\81«ã\82\88ã\82\8aã\80\81ã\82ªã\83¼ã\83\90ã\83¼ã\83\89ã\83­ã\83¼ã\82\92æ\8e\92é\99¤ã\81\97ã\81¾ã\81\99"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:100
 msgid "DF^Disabled"
@@ -9410,7 +9413,7 @@ msgid ""
 "for faster rendering"
 msgstr ""
 "頂点バッファオブジェクトを使用して、静的ジオメトリをビデオメモリに格納し、レ"
-"ã\83³ã\83\80ã\83ªã\83³ã\82°ã\82\92é«\98é\80\9få\8c\96ã\81\99ã\82\8b"
+"ã\83³ã\83\80ã\83ªã\83³ã\82°ã\82\92é«\98é\80\9få\8c\96ã\81\97ã\81¾ã\81\99"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:115
 msgid "Vertices"
@@ -9464,7 +9467,7 @@ msgid ""
 "requires GLSL color control"
 msgstr ""
 "彩度調整 (0 = グレースケール、1 = 通常、2 = 過飽和)、GLSLカラーコントロールが"
-"å¿\85è¦\81ã\81\99ã\82\8b"
+"å¿\85è¦\81ã\81§ã\81\99"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:149
 msgid "LIT^Ambient:"
@@ -9504,7 +9507,7 @@ msgstr "OpenGL 2.0 シェーダー(GLSL)を使う"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:169
 msgid "Psycho coloring (easter egg)"
-msgstr "サイコカラー (イースターエッグ)"
+msgstr "サイコカラー (イースターエッグ)"
 
 #: qcsrc/menu/xonotic/dialog_settings_video.qc:172
 msgid "Trippy vertices (easter egg)"
@@ -9520,7 +9523,7 @@ msgstr "???"
 
 #: qcsrc/menu/xonotic/dialog_singleplayer.qc:165
 msgid "Campaign Difficulty:"
-msgstr "キャンペーンの難しさ:"
+msgstr "キャンペーンの難易度:"
 
 #: qcsrc/menu/xonotic/dialog_singleplayer.qc:166
 msgid "CSKL^Easy"
@@ -9536,11 +9539,11 @@ msgstr "難い"
 
 #: qcsrc/menu/xonotic/dialog_singleplayer.qc:170
 msgid "Start Singleplayer!"
-msgstr "ã\82·ã\83³ã\82°ã\83«ã\83\97ã\83¬ã\82¤ã\83¤ã\83¼ã\82\92é\96\8bå§\8b!"
+msgstr "ã\82·ã\83³ã\82°ã\83«ã\83\97ã\83¬ã\82¤ã\82\92ã\82¹ã\82¿ã\83¼ã\83\88!"
 
 #: qcsrc/menu/xonotic/dialog_singleplayer.qh:6
 msgid "Singleplayer"
-msgstr "シングルプレイヤー"
+msgstr "シングルプレイ"
 
 #: qcsrc/menu/xonotic/dialog_singleplayer.qh:7
 msgid "Play the singleplayer campaign or instant action matches against bots"
@@ -9599,11 +9602,11 @@ msgstr "チームのトーナメント"
 
 #: qcsrc/menu/xonotic/gametypelist.qc:90
 msgid "free for all"
-msgstr "ã\82\84ã\82\8aã\81\9fã\81\84æ\94¾é¡\8c"
+msgstr "ã\83\95ã\83ªã\83¼ã\83»ã\83\95ã\82©ã\83¼ã\83»ã\82ªã\83¼ã\83«"
 
 #: qcsrc/menu/xonotic/keybinder.qc:35
 msgid "Moving"
-msgstr "動き中"
+msgstr "移動"
 
 #: qcsrc/menu/xonotic/keybinder.qc:36
 msgid "forward"
@@ -9615,11 +9618,11 @@ msgstr "後方"
 
 #: qcsrc/menu/xonotic/keybinder.qc:38
 msgid "strafe left"
-msgstr "左"
+msgstr "左へ水平移動"
 
 #: qcsrc/menu/xonotic/keybinder.qc:39
 msgid "strafe right"
-msgstr "右"
+msgstr "右へ水平移動"
 
 #: qcsrc/menu/xonotic/keybinder.qc:40
 msgid "jump / swim"
@@ -9743,7 +9746,7 @@ msgstr "鍵/旗を落とす / 乗り物から降りる"
 
 #: qcsrc/menu/xonotic/keybinder.qc:121
 msgid "suicide / respawn"
-msgstr "自殺する / 再び現れる"
+msgstr "自殺/リスポーン"
 
 #: qcsrc/menu/xonotic/keybinder.qc:122
 msgid "quick menu"
@@ -9777,21 +9780,21 @@ msgstr "もう一度このボタンを押さないでください!"
 msgid ""
 "Huh? Can't play this (m is NULL). Refiltering so this won't happen again."
 msgstr ""
-"ã\81\82ã\82\8c? ã\81\93ã\82\8cã\82\92é\81\8aã\81¹ã\81¾ã\81\9bã\82\93 (m is NULL)ã\80\82ã\81\93ã\82\8cã\81\8cå\86\8d度ç\99ºç\94\9fã\81\97ã\81ªã\81\84ã\82\88ã\81\86ã\81«å\86\8dã\83\95ã\82£ã\83«ã\82¿ã\83ªã\83³"
-"グします。"
+"ã\81\8aã\82\84? ã\81\93ã\82\8cã\82\92é\81\8aã\81¶ã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93 (m is NULL)ã\80\82ã\81\93ã\82\8cã\81\8cå\86\8d度ç\99ºç\94\9fã\81\97ã\81ªã\81\84ã\82\88ã\81\86ã\81«å\86\8d"
+"ã\83\95ã\82£ã\83«ã\82¿ã\83ªã\83³ã\82°ã\81\97ã\81¾ã\81\99ã\80\82"
 
 #: qcsrc/menu/xonotic/maplist.qc:296
 #, c-format
 msgid "%s's Xonotic Server"
-msgstr "%s XONOTICサーバー"
+msgstr "%sXONOTICサーバー"
 
 #: qcsrc/menu/xonotic/maplist.qc:301
 msgid ""
 "Huh? Can't play this (invalid game type). Refiltering so this won't happen "
 "again."
 msgstr ""
-"ã\81\82ã\82\8c? ã\81\93ã\82\8cã\82\92é\81\8aã\81¹ã\81¾ã\81\9bã\82\93 (invalid game type)ã\80\82ã\81\93ã\82\8cã\81\8cå\86\8d度ç\99ºç\94\9fã\81\97ã\81ªã\81\84ã\82\88ã\81\86ã\81«å\86\8dã\83\95ã\82£"
-"ルタリングします。"
+"ã\81\8aã\82\84? ã\81\93ã\82\8cã\82\92é\81\8aã\81¶ã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93 (invalid game type)ã\80\82ã\81\93ã\82\8cã\81\8cå\86\8d度ç\99ºç\94\9fã\81\97ã\81ªã\81\84ã\82\88"
+"ã\81\86ã\81«å\86\8dã\83\95ã\82£ã\83«ã\82¿ã\83ªã\83³ã\82°ã\81\97ã\81¾ã\81\99ã\80\82"
 
 #: qcsrc/menu/xonotic/playerlist.qc:102 qcsrc/menu/xonotic/playerlist.qc:112
 msgid "spectator"
@@ -9874,7 +9877,7 @@ msgstr "有効な状態"
 
 #: qcsrc/menu/xonotic/serverlist.qh:156
 msgid "SLCAT^Favorites"
-msgstr "好き"
+msgstr "お気に入り"
 
 #: qcsrc/menu/xonotic/serverlist.qh:157
 msgid "SLCAT^Recommended"
@@ -9902,11 +9905,11 @@ msgstr "オーバーキル"
 
 #: qcsrc/menu/xonotic/serverlist.qh:163
 msgid "SLCAT^InstaGib"
-msgstr "インスタギブ"
+msgstr "一触即発"
 
 #: qcsrc/menu/xonotic/serverlist.qh:164
 msgid "SLCAT^Defrag Mode"
-msgstr "デフラグモード"
+msgstr "DEFRAGモード"
 
 #: qcsrc/menu/xonotic/skinlist.qc:70
 msgid "<TITLE>"
index f102dd042feb44db23cf4a3890aab4e25e545cf0..348e5e9541139ae74dbcf3ce08507d424d0f95a3 100644 (file)
@@ -9,13 +9,14 @@
 # NotThatPrivate Yes <henriqueferreira2009@gmail.com>, 2015
 # Ricardo Manuel da Cruz Coelho da Silva <ricardo.mccs@gmail.com>, 2015
 # Rui <xymarior@yandex.com>, 2018
+# zerowhy . <anymailz@tutanota.com>, 2021
 msgid ""
 msgstr ""
 "Project-Id-Version: Xonotic\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-06-27 07:23+0200\n"
-"PO-Revision-Date: 2021-06-27 05:23+0000\n"
-"Last-Translator: divVerent <divVerent@xonotic.org>\n"
+"PO-Revision-Date: 2021-08-01 04:05+0000\n"
+"Last-Translator: zerowhy . <anymailz@tutanota.com>\n"
 "Language-Team: Portuguese (Brazil) (http://www.transifex.com/team-xonotic/"
 "xonotic/language/pt_BR/)\n"
 "Language: pt_BR\n"
@@ -1833,7 +1834,7 @@ msgstr "Incapacidade"
 
 #: qcsrc/common/mutators/mutator/buffs/all.inc:83
 msgid "Disabled"
-msgstr ""
+msgstr "Desabilitado"
 
 #: qcsrc/common/mutators/mutator/buffs/all.inc:94
 msgid "Vengeance"
@@ -1987,15 +1988,15 @@ msgstr "Força"
 
 #: qcsrc/common/mutators/mutator/status_effects/status_effect/burning.qh:16
 msgid "Burning"
-msgstr ""
+msgstr "Em chamas"
 
 #: qcsrc/common/mutators/mutator/status_effects/status_effect/spawnshield.qh:10
 msgid "Spawn Shield"
-msgstr ""
+msgstr "Surgir Escudo"
 
 #: qcsrc/common/mutators/mutator/status_effects/status_effect/superweapons.qh:7
 msgid "Superweapons"
-msgstr ""
+msgstr "Superarmas"
 
 #: qcsrc/common/mutators/mutator/waypoints/all.inc:3
 msgid "Waypoint"
index 790e04b81d52e8cffb1caa25695bebbf96f83947..7be908c8bd1bd7de8bea9466f0e5f21d3b3e259f 100644 (file)
@@ -21,8 +21,8 @@ msgstr ""
 "Project-Id-Version: Xonotic\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-06-27 07:23+0200\n"
-"PO-Revision-Date: 2021-07-11 13:34+0000\n"
-"Last-Translator: moetale <moetale@outlook.com>\n"
+"PO-Revision-Date: 2021-07-15 14:16+0000\n"
+"Last-Translator: gee Lar <hola0_o@qq.com>\n"
 "Language-Team: Chinese (China) (http://www.transifex.com/team-xonotic/"
 "xonotic/language/zh_CN/)\n"
 "Language: zh_CN\n"
@@ -285,7 +285,7 @@ msgstr "QMCMD^团队对话"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:813
 msgid "QMCMD^strength soon"
-msgstr ""
+msgstr "QMCMD^强壮敏捷"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:814
 msgid "QMCMD^free item %x^7 (l:%y^7)"
@@ -390,7 +390,7 @@ msgstr "QMCMD^掉落旗帜/钥匙, icon"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:827
 msgid "QMCMD^dropped flag/key %w^7 (l:%l^7)"
-msgstr ""
+msgstr "QMCMD^掉落旗子 / 钥匙 %w^7(l:%l^7)"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:831
 msgid "QMCMD^Send private message to"
@@ -412,7 +412,7 @@ msgstr "QMCMD^第三人称视角"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:836
 msgid "QMCMD^Player models like mine"
-msgstr ""
+msgstr "QMCMD^像我一样的玩家模型"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:837
 msgid "QMCMD^Names above players"
@@ -420,7 +420,7 @@ msgstr "QMCMD^名字显示在玩家上方"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:838
 msgid "QMCMD^Crosshair per weapon"
-msgstr ""
+msgstr "QMCMD^每个武器的十字准线"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:839
 msgid "QMCMD^FPS"
@@ -428,7 +428,7 @@ msgstr "QMCMD^FPS"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:840
 msgid "QMCMD^Net graph"
-msgstr ""
+msgstr "QMCMD^网络图"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:843
 #: qcsrc/client/hud/panel/quickmenu.qc:846
@@ -437,7 +437,7 @@ msgstr "QMCMD^音效设定"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:844
 msgid "QMCMD^Hit sound"
-msgstr ""
+msgstr "QMCMD^击打声"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:845
 msgid "QMCMD^Chat sound"
@@ -445,12 +445,12 @@ msgstr "QMCMD^对话音效"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:850
 msgid "QMCMD^Change spectator camera"
-msgstr ""
+msgstr "QMCMD^更改观察者视角"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:855
 #: qcsrc/client/hud/panel/quickmenu.qc:859
 msgid "QMCMD^Observer camera"
-msgstr ""
+msgstr "QMCMD^观察者视角"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:856
 msgid "QMCMD^Increase speed"
@@ -462,7 +462,7 @@ msgstr "QMCMD^减少速度"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:858
 msgid "QMCMD^Wall collision"
-msgstr ""
+msgstr "QMCMD^墙壁碰撞"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:862
 msgid "QMCMD^Fullscreen"
@@ -520,14 +520,14 @@ msgstr "终点线"
 #: qcsrc/client/hud/panel/racetimer.qc:153
 #, c-format
 msgid "Intermediate %d"
-msgstr ""
+msgstr "中间的 %d"
 
 #: qcsrc/client/hud/panel/racetimer.qc:156
 #: qcsrc/client/hud/panel/racetimer.qc:203
 #: qcsrc/client/hud/panel/racetimer.qc:264
 #, c-format
 msgid "PENALTY: %.1f (%s)"
-msgstr ""
+msgstr "惩罚:%.1f(%s)"
 
 #: qcsrc/client/hud/panel/racetimer.qc:156 qcsrc/client/main.qc:1174
 msgid "missing a checkpoint"
@@ -543,7 +543,7 @@ msgstr "点击选择出生点"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:119
 msgid "Number of ball carrier kills"
-msgstr ""
+msgstr "带球人击杀数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:119
 msgid "SCO^bckills"
@@ -559,7 +559,7 @@ msgstr "持球的总时间"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:121
 msgid "How often a flag (CTF) or a key (KeyHunt) was captured"
-msgstr ""
+msgstr "捕获旗帜 (CTF) 或钥匙 (KeyHunt) 的频率"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:121
 msgid "SCO^caps"
@@ -583,7 +583,7 @@ msgstr "SCO^死亡数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:124
 msgid "Number of keys destroyed by pushing them into void"
-msgstr ""
+msgstr "被推入虚空而销毁的钥匙数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:124
 msgid "SCO^destroyed"
@@ -591,7 +591,7 @@ msgstr "SCO^已破坏"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:125
 msgid "SCO^damage"
-msgstr ""
+msgstr "SCO^伤害"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:125
 msgid "The total damage done"
@@ -599,7 +599,7 @@ msgstr "造成的总伤害"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:126
 msgid "SCO^dmgtaken"
-msgstr ""
+msgstr "SCO^受到的傷害"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:126
 msgid "The total damage taken"
@@ -607,11 +607,11 @@ msgstr "受到的总伤害"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:127
 msgid "Number of flag drops"
-msgstr ""
+msgstr "掉落旗帜数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:127
 msgid "SCO^drops"
-msgstr ""
+msgstr "SCO^掉落"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:128
 msgid "Player ELO"
@@ -623,11 +623,11 @@ msgstr ""
 
 #: qcsrc/client/hud/panel/scoreboard.qc:129
 msgid "SCO^fastest"
-msgstr ""
+msgstr "SCO^最快"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:129
 msgid "Time of fastest lap (Race/CTS)"
-msgstr ""
+msgstr "最快跑圈时间(Race / CTS)"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:130
 msgid "Number of faults committed"
@@ -635,11 +635,11 @@ msgstr "提交的错误数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:130
 msgid "SCO^faults"
-msgstr ""
+msgstr "SCO^故障"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:131
 msgid "Number of flag carrier kills"
-msgstr ""
+msgstr "带旗人击杀数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:131
 msgid "SCO^fckills"
@@ -647,31 +647,31 @@ msgstr ""
 
 #: qcsrc/client/hud/panel/scoreboard.qc:132
 msgid "FPS"
-msgstr ""
+msgstr "FPS"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:132
 msgid "SCO^fps"
-msgstr ""
+msgstr "SCO^fps"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:133
 msgid "Number of kills minus suicides"
-msgstr ""
+msgstr "除自杀外击杀数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:133
 msgid "SCO^frags"
-msgstr ""
+msgstr "SCO^碎片"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:134
 msgid "Number of goals scored"
-msgstr ""
+msgstr "进球数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:134
 msgid "SCO^goals"
-msgstr ""
+msgstr "SCO^进球数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:135
 msgid "Number of keys carrier kills"
-msgstr ""
+msgstr "钥匙携带者击杀数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:135
 msgid "SCO^kckills"
@@ -685,7 +685,7 @@ msgstr "SCO^击杀/死亡"
 #: qcsrc/client/hud/panel/scoreboard.qc:137
 #: qcsrc/client/hud/panel/scoreboard.qc:138
 msgid "The kill-death ratio"
-msgstr ""
+msgstr "死亡人数比例"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:137
 msgid "SCO^kdr"
@@ -705,15 +705,15 @@ msgstr "SCO^击杀数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:140
 msgid "Number of laps finished (Race/CTS)"
-msgstr ""
+msgstr "完成圈数(Race / CTS)"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:140
 msgid "SCO^laps"
-msgstr ""
+msgstr "SCO^圈數"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:141
 msgid "Number of lives (LMS)"
-msgstr ""
+msgstr "存活人数(LMS)"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:141
 msgid "SCO^lives"
@@ -721,11 +721,11 @@ msgstr "SCO^生命数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:142
 msgid "Number of times a key was lost"
-msgstr ""
+msgstr "钥匙丢失次数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:142
 msgid "SCO^losses"
-msgstr ""
+msgstr "SCO^失败"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:143
 #: qcsrc/client/hud/panel/scoreboard.qc:144
@@ -742,7 +742,7 @@ msgstr "SCO^昵称"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:145
 msgid "Number of objectives destroyed"
-msgstr ""
+msgstr "摧毁的目标数量"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:145
 msgid "SCO^objectives"
@@ -751,7 +751,7 @@ msgstr "SCO^目标"
 #: qcsrc/client/hud/panel/scoreboard.qc:146
 msgid ""
 "How often a flag (CTF) or a key (KeyHunt) or a ball (Keepaway) was picked up"
-msgstr ""
+msgstr "旗子 (CTF) 或钥匙 (KeyHunt) 或球 (Keepaway) 被捡起的频率"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:146
 msgid "SCO^pickups"
@@ -759,7 +759,7 @@ msgstr "SCO^拾起"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:147
 msgid "Ping time"
-msgstr ""
+msgstr "Ping 时间"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:147
 msgid "SCO^ping"
@@ -767,7 +767,7 @@ msgstr "SCO^延迟"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:148
 msgid "Packet loss"
-msgstr ""
+msgstr "丢包"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:148
 msgid "SCO^pl"
@@ -775,11 +775,11 @@ msgstr ""
 
 #: qcsrc/client/hud/panel/scoreboard.qc:149
 msgid "Number of players pushed into void"
-msgstr ""
+msgstr "被推入虚空的玩家数量"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:149
 msgid "SCO^pushes"
-msgstr ""
+msgstr "SCO^推下人数"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:150
 msgid "Player rank"
diff --git a/gfx/menu/luma/icon_mod_jeff.tga b/gfx/menu/luma/icon_mod_jeff.tga
deleted file mode 100644 (file)
index 9fc2a9a..0000000
Binary files a/gfx/menu/luma/icon_mod_jeff.tga and /dev/null differ
diff --git a/gfx/menu/luminos/icon_mod_jeff.tga b/gfx/menu/luminos/icon_mod_jeff.tga
deleted file mode 100644 (file)
index 4bf904b..0000000
Binary files a/gfx/menu/luminos/icon_mod_jeff.tga and /dev/null differ
diff --git a/gfx/menu/wickedx/icon_mod_jeff.tga b/gfx/menu/wickedx/icon_mod_jeff.tga
deleted file mode 100644 (file)
index 4bf904b..0000000
Binary files a/gfx/menu/wickedx/icon_mod_jeff.tga and /dev/null differ
diff --git a/gfx/menu/xaw/icon_mod_jeff.tga b/gfx/menu/xaw/icon_mod_jeff.tga
deleted file mode 100644 (file)
index 4bf904b..0000000
Binary files a/gfx/menu/xaw/icon_mod_jeff.tga and /dev/null differ
index 12002dd2cb56d50f55ba23f4a3cfd7403f12e201..96d66d1f547a9ef04cf477dcce045ff8f79d2e29 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)" 74%
-es    "Spanish" "Español" 99%
+es    "Spanish" "Español" 100%
 fr    "French" "Français" 100%
 ga    "Irish" "Irish" 31%
 it    "Italian" "Italiano" 99%
@@ -22,7 +22,7 @@ bg    "Bulgarian" "Български" 62%
 ru    "Russian" "Русский" 100%
 sr    "Serbian" "Српски" 62%
 uk    "Ukrainian" "Українська" 49%
-zh_CN "Chinese (China)" "中文" 58%
+zh_CN "Chinese (China)" "中文" 60%
 zh_TW "Chinese (Taiwan)" "國語" 59%
-ja_JP "Japanese" "日本語" 99%
+ja_JP "Japanese" "日本語" 100%
 ko    "Korean" "한국의" 28%
index 064be587e78fc46087e2d4eabad563d84f25885c..f94d36cf6712f2b1022f1940de5ec41d6d60930f 100644 (file)
@@ -229,6 +229,8 @@ NET_HANDLE(ENT_CLIENT_ITEM, bool isnew)
         precache_model(this.mdl);
         _setmodel(this, this.mdl);
 
+       this.skin = ReadByte();
+
         setsize(this, '-16 -16 0', '16 16 48');
     }
 
index 7e31994075c244277201a4d02799825c89346f44..d21923e258dc196ef15e80209e3fbfb230b9de63 100644 (file)
@@ -22,6 +22,8 @@ PROPERTY(float, g_pickup_respawntimejitter_powerup)
 CLASS(Pickup, GameItem)
 #ifdef GAMEQC
     ATTRIB(Pickup, m_model, Model);
+    ATTRIB(Pickup, m_skin, int);
+    ATTRIB(Pickup, m_color, vector);
     ATTRIB(Pickup, m_sound, Sound, SND_ITEMPICKUP);
 #endif
     ATTRIB(Pickup, netname, string);
index 85ac8bd309f1dc4120589040922a9b3485502e2a..8120b25457aa643f876583d5b1bc32c5350a463a 100644 (file)
@@ -9,26 +9,36 @@
 #endif
 
 #ifdef GAMEQC
-MODEL(Invisibility_ITEM, Item_Model("g_strength.md3"));
+//MODEL(Invisibility_ITEM, Item_Model("g_strength.md3")); // TODO: new model required
 SOUND(Invisibility, Item_Sound("powerup"));
 #endif
 
 #ifdef SVQC
 .float invisibility_finished;
 
+bool autocvar_g_powerups_invisibility = 1;
 float autocvar_g_balance_powerup_invisibility_alpha = 0.15;
 float autocvar_g_balance_powerup_invisibility_time = 30;
 void powerup_invisibility_init(Pickup this, entity item)
 {
     if(!item.invisibility_finished)
-        item.invisibility_finished = autocvar_g_balance_powerup_invisibility_time;
+        item.invisibility_finished = (item.count) ? item.count : autocvar_g_balance_powerup_invisibility_time;
 }
 #endif
 REGISTER_ITEM(Invisibility, Powerup) {
     this.m_canonical_spawnfunc = "item_invisibility";
+#ifdef SVQC
+    if(autocvar_g_powerups_invisibility)
+        this.spawnflags = ITEM_FLAG_NORMAL;
+    else
+        this.spawnflags = ITEM_FLAG_MUTATORBLOCKED;
+
+    this.m_iteminit         =   powerup_invisibility_init;
+#endif
 #ifdef GAMEQC
-       this.spawnflags = ITEM_FLAG_MUTATORBLOCKED; // TODO: ITEM_FLAG_NORMAL (once it has a model!)
-    this.m_model            =   MDL_Invisibility_ITEM;
+    this.m_itemid           =   IT_INVISIBILITY;
+    this.m_model            =   MDL_BUFF; // TODO: MDL_Invisibility_ITEM when new model available
+    this.m_skin             =   12;
     this.m_sound            =   SND_Invisibility;
     this.m_glow             =   true;
     this.m_respawnsound     =   SND_STRENGTH_RESPAWN;
@@ -39,12 +49,6 @@ REGISTER_ITEM(Invisibility, Powerup) {
     this.m_color            =   '0.5 0.5 1';
     this.m_waypoint         =   _("Invisibility");
     this.m_waypointblink    =   2;
-#ifdef GAMEQC
-    this.m_itemid           =   IT_INVISIBILITY;
-#endif
-#ifdef SVQC
-    this.m_iteminit         =   powerup_invisibility_init;
-#endif
 }
 
 SPAWNFUNC_ITEM(item_invisibility, ITEM_Invisibility)
index 854c802769fb83f38c062759d024a738956a1b85..10900e86a89c7ec5f95dfb55693c24543b5cf6a6 100644 (file)
@@ -14,19 +14,28 @@ SOUND(Shield, Item_Sound("powerup_shield"));
 #endif
 
 #ifdef SVQC
+bool autocvar_g_powerups_shield = 1;
 float autocvar_g_balance_powerup_invincible_takedamage;
 float autocvar_g_balance_powerup_invincible_takeforce = 0.33;
 float autocvar_g_balance_powerup_invincible_time;
 void powerup_shield_init(Pickup this, entity item)
 {
     if(!item.invincible_finished)
-        item.invincible_finished = autocvar_g_balance_powerup_invincible_time;
+        item.invincible_finished = (item.count) ? item.count : autocvar_g_balance_powerup_invincible_time;
 }
 #endif
 REGISTER_ITEM(Shield, Powerup) {
     this.m_canonical_spawnfunc = "item_shield";
+#ifdef SVQC
+    if(autocvar_g_powerups_shield)
+        this.spawnflags = ITEM_FLAG_NORMAL;
+    else
+        this.spawnflags = ITEM_FLAG_MUTATORBLOCKED;
+
+    this.m_iteminit         =   powerup_shield_init;
+#endif
 #ifdef GAMEQC
-    this.spawnflags = ITEM_FLAG_NORMAL;
+    this.m_itemid           =   IT_INVINCIBLE;
     this.m_model            =   MDL_Shield_ITEM;
     this.m_sound            =   SND_Shield;
     this.m_glow             =   true;
@@ -38,12 +47,6 @@ REGISTER_ITEM(Shield, Powerup) {
     this.m_color            =   '1 0 1';
     this.m_waypoint         =   _("Shield");
     this.m_waypointblink    =   2;
-#ifdef GAMEQC
-    this.m_itemid           =   IT_INVINCIBLE;
-#endif
-#ifdef SVQC
-    this.m_iteminit         =   powerup_shield_init;
-#endif
 }
 
 SPAWNFUNC_ITEM(item_shield, ITEM_Shield)
index 3a55a787a33bf46fad10fb169c1187a83e7fcf74..1f56bd0ad8ea68e2b66c83335208bb6db35ff1f6 100644 (file)
@@ -9,27 +9,37 @@
 #endif
 
 #ifdef GAMEQC
-MODEL(Speed_ITEM, Item_Model("g_invincible.md3"));
+//MODEL(Speed_ITEM, Item_Model("g_invincible.md3")); // TODO: new model required
 SOUND(Speed, Item_Sound("powerup_shield"));
 #endif
 
 #ifdef SVQC
 .float speed_finished;
 
+bool autocvar_g_powerups_speed = 1;
 float autocvar_g_balance_powerup_speed_attackrate = 0.8;
 float autocvar_g_balance_powerup_speed_highspeed = 1.5;
 float autocvar_g_balance_powerup_speed_time = 30;
 void powerup_speed_init(Pickup this, entity item)
 {
     if(!item.speed_finished)
-        item.speed_finished = autocvar_g_balance_powerup_speed_time;
+        item.speed_finished = (item.count) ? item.count : autocvar_g_balance_powerup_speed_time;
 }
 #endif
 REGISTER_ITEM(Speed, Powerup) {
     this.m_canonical_spawnfunc = "item_speed";
+#ifdef SVQC
+    if(autocvar_g_powerups_speed)
+        this.spawnflags = ITEM_FLAG_NORMAL;
+    else
+        this.spawnflags = ITEM_FLAG_MUTATORBLOCKED;
+
+    this.m_iteminit         =   powerup_speed_init;
+#endif
 #ifdef GAMEQC
-       this.spawnflags = ITEM_FLAG_MUTATORBLOCKED; // TODO: ITEM_FLAG_NORMAL (once it has a model!)
-    this.m_model            =   MDL_Speed_ITEM;
+    this.m_itemid           =   IT_SPEED;
+    this.m_model            =   MDL_BUFF; // TODO: MDL_Speed_ITEM when new model available
+    this.m_skin             =   9;
     this.m_sound            =   SND_Speed;
     this.m_glow             =   true;
     this.m_respawnsound     =   SND_SHIELD_RESPAWN;
@@ -40,12 +50,6 @@ REGISTER_ITEM(Speed, Powerup) {
     this.m_color            =   '0.1 1 0.84';
     this.m_waypoint         =   _("Speed");
     this.m_waypointblink    =   2;
-#ifdef GAMEQC
-    this.m_itemid           =   IT_SPEED;
-#endif
-#ifdef SVQC
-    this.m_iteminit         =   powerup_speed_init;
-#endif
 }
 
 SPAWNFUNC_ITEM(item_speed, ITEM_Speed)
index ce1914966bd7f15ae0a2878301199a1abe22e314..9392a6a2d7c9755147633758befbe9252b5405f5 100644 (file)
@@ -14,6 +14,7 @@ SOUND(Strength, Item_Sound("powerup"));
 #endif
 
 #ifdef SVQC
+bool autocvar_g_powerups_strength = 1;
 float autocvar_g_balance_powerup_strength_damage;
 float autocvar_g_balance_powerup_strength_force;
 float autocvar_g_balance_powerup_strength_selfdamage;
@@ -22,13 +23,21 @@ float autocvar_g_balance_powerup_strength_time;
 void powerup_strength_init(Pickup this, entity item)
 {
     if(!item.strength_finished)
-        item.strength_finished = autocvar_g_balance_powerup_strength_time;
+        item.strength_finished = (item.count) ? item.count : autocvar_g_balance_powerup_strength_time;
 }
 #endif
 REGISTER_ITEM(Strength, Powerup) {
     this.m_canonical_spawnfunc = "item_strength";
+#ifdef SVQC
+    if(autocvar_g_powerups_strength)
+        this.spawnflags = ITEM_FLAG_NORMAL;
+    else
+        this.spawnflags = ITEM_FLAG_MUTATORBLOCKED;
+
+    this.m_iteminit         =   powerup_strength_init;
+#endif
 #ifdef GAMEQC
-       this.spawnflags = ITEM_FLAG_NORMAL;
+    this.m_itemid           =   IT_STRENGTH;
     this.m_model            =   MDL_Strength_ITEM;
     this.m_sound            =   SND_Strength;
     this.m_glow             =   true;
@@ -40,12 +49,6 @@ REGISTER_ITEM(Strength, Powerup) {
     this.m_color            =   '0 0 1';
     this.m_waypoint         =   _("Strength");
     this.m_waypointblink    =   2;
-#ifdef GAMEQC
-    this.m_itemid           =   IT_STRENGTH;
-#endif
-#ifdef SVQC
-    this.m_iteminit         =   powerup_strength_init;
-#endif
 }
 
 SPAWNFUNC_ITEM(item_strength, ITEM_Strength)
index f71025959c67d2c7eaa2a36708b2d6969d6f85b0..b514385381c8a8bfb38d274dcf1c6f9dc36596be 100644 (file)
@@ -5,8 +5,12 @@
 #include "powerups.qh"
 
 int autocvar_g_powerups;
+bool autocvar_g_powerups_stack;
 
 REGISTER_MUTATOR(powerups, true);
 
 .float prevstrengthsound;
 .float prevstrengthsoundattempt;
+
+// q3compat
+.float count;
index 514440dbbd356cd584603607ef934f9f14e8ada9..f1b2af8e600164799b48c0922cd20db778d36fcb 100644 (file)
@@ -402,10 +402,10 @@ string multiteam_info_sprintf(string input, string teamname) { return ((input !=
     MULTITEAM_INFO(ONSLAUGHT_GENDESTROYED,                  N_CONSOLE,  0, 0, "", "",           "",     _("^TC^TT^BG generator has been destroyed"), "", GENERATOR)
     MULTITEAM_INFO(ONSLAUGHT_GENDESTROYED_OVERTIME,         N_CONSOLE,  0, 0, "", "",           "",     _("^TC^TT^BG generator spontaneously combusted due to overtime!"), "", GENERATOR)
 
-    MSG_INFO_NOTIF(POWERUP_INVISIBILITY,                    N_CONSOLE,  1, 0, "s1", "s1",       "strength",     _("^BG%s^K1 picked up Invisibility"), "")
-    MSG_INFO_NOTIF(POWERUP_SHIELD,                          N_CONSOLE,  1, 0, "s1", "s1",       "shield",       _("^BG%s^K1 picked up Shield"), "")
-    MSG_INFO_NOTIF(POWERUP_SPEED,                           N_CONSOLE,  1, 0, "s1", "s1",       "shield",       _("^BG%s^K1 picked up Speed"), "")
-    MSG_INFO_NOTIF(POWERUP_STRENGTH,                        N_CONSOLE,  1, 0, "s1", "s1",       "strength",     _("^BG%s^K1 picked up Strength"), "")
+    MSG_INFO_NOTIF(POWERUP_INVISIBILITY,                    N_CONSOLE,  1, 0, "s1", "s1",       "buff_invisible", _("^BG%s^K1 picked up Invisibility"), "")
+    MSG_INFO_NOTIF(POWERUP_SHIELD,                          N_CONSOLE,  1, 0, "s1", "s1",       "shield",         _("^BG%s^K1 picked up Shield"), "")
+    MSG_INFO_NOTIF(POWERUP_SPEED,                           N_CONSOLE,  1, 0, "s1", "s1",       "buff_speed",     _("^BG%s^K1 picked up Speed"), "")
+    MSG_INFO_NOTIF(POWERUP_STRENGTH,                        N_CONSOLE,  1, 0, "s1", "s1",       "strength",       _("^BG%s^K1 picked up Strength"), "")
 
     MSG_INFO_NOTIF(QUIT_DISCONNECT,                         N_CHATCON,  1, 0, "s1", "",         "",             _("^BG%s^F3 disconnected"), "")
     MSG_INFO_NOTIF(QUIT_KICK_IDLING,                        N_CHATCON,  1, 1, "s1 f1", "",      "",             _("^BG%s^F3 was kicked after idling for %s seconds"), "")
index 48216f39297d7fd8178b41f3982f02f2d0cc291d..1bd0eb7aeb5bb54bc9ba30a69d3cb32b6ac12ad9 100644 (file)
@@ -414,11 +414,40 @@ void _Movetype_Impact(entity this, entity oth)  // SV_Impact
        if(!this && !oth)
                return;
 
+       // due to a lack of pointers in QC, we must save the trace values and restore them for other functions
+       bool save_trace_allsolid = trace_allsolid;
+       bool save_trace_startsolid = trace_startsolid;
+       float save_trace_fraction = trace_fraction;
+       bool save_trace_inwater = trace_inwater;
+       bool save_trace_inopen = trace_inopen;
+       vector save_trace_endpos = trace_endpos;
+       vector save_trace_plane_normal = trace_plane_normal;
+       float save_trace_plane_dist = trace_plane_dist;
+       entity save_trace_ent = trace_ent;
+       int save_trace_dpstartcontents = trace_dpstartcontents;
+       int save_trace_dphitcontents = trace_dphitcontents;
+       int save_trace_dphitq3surfaceflags = trace_dphitq3surfaceflags;
+       string save_trace_dphittexturename = trace_dphittexturename;
+
        if(this.solid != SOLID_NOT && gettouch(this))
                gettouch(this)(this, oth);
 
        if(oth.solid != SOLID_NOT && gettouch(oth))
                gettouch(oth)(oth, this);
+
+       trace_allsolid = save_trace_allsolid;
+       trace_startsolid = save_trace_startsolid;
+       trace_fraction = save_trace_fraction;
+       trace_inwater = save_trace_inwater;
+       trace_inopen = save_trace_inopen;
+       trace_endpos = save_trace_endpos;
+       trace_plane_normal = save_trace_plane_normal;
+       trace_plane_dist = save_trace_plane_dist;
+       trace_ent = save_trace_ent;
+       trace_dpstartcontents = save_trace_dpstartcontents;
+       trace_dphitcontents = save_trace_dphitcontents;
+       trace_dphitq3surfaceflags = save_trace_dphitq3surfaceflags;
+       trace_dphittexturename = save_trace_dphittexturename;
 }
 
 void _Movetype_LinkEdict_TouchAreaGrid(entity this)  // SV_LinkEdict_TouchAreaGrid
@@ -636,7 +665,7 @@ void _Movetype_CheckStuck(entity this)  // SV_CheckStuck
        }
 }
 
-vector _Movetype_ClipVelocity(vector vel, vector norm, float f)  // SV_ClipVelocity
+vector _Movetype_ClipVelocity(vector vel, vector norm, float f)  // ClipVelocity
 {
        vel -= ((vel * norm) * norm) * f;
 
@@ -725,9 +754,6 @@ void _Movetype_Physics_Frame(entity this, float movedt)
                case MOVETYPE_FLY:
                case MOVETYPE_FLY_WORLDONLY:
                        _Movetype_Physics_Toss(this, movedt);
-                       if(wasfreed(this))
-                               return;
-                       _Movetype_LinkEdict(this, true);
                        break;
                case MOVETYPE_PHYSICS:
                        break;
index 772eb1b070c59a2be0df4aa72df5bc904e115838..67405a636498d0f0aef004f2b5236750e42dda4d 100644 (file)
@@ -56,9 +56,17 @@ void _Movetype_Physics_Toss(entity this, float dt)  // SV_Physics_Toss
                if (wasfreed(this))
                        return;
 
-               if (trace_startsolid)
+               // NOTE: this is bmodelstartsolid in the engine
+               if (trace_startsolid && trace_ent.solid == SOLID_BSP)
                {
+                       // QC lacks pointers so we must save the old trace values
+                       float oldtrace_fraction = trace_fraction;
+                       vector oldtrace_plane_normal = trace_plane_normal;
+                       entity oldtrace_ent = trace_ent;
                        _Movetype_UnstickEntity(this);
+                       trace_fraction = oldtrace_fraction;
+                       trace_plane_normal = oldtrace_plane_normal;
+                       trace_ent = oldtrace_ent;
                        if(!_Movetype_PushEntity(this, move, true, true))
                                return;
                        if (wasfreed(this))
index 9409819e9c15b8569fa5623ede91e841984224dc..1142bff9d287bc0e864b203051a146227efbd0cf 100644 (file)
@@ -130,7 +130,7 @@ void W_Electro_TouchExplode(entity this, entity toucher)
 }
 
 
-void sys_phys_update_single(entity this);
+//void sys_phys_update_single(entity this);
 
 void W_Electro_Bolt_Think(entity this)
 {
index 610c864b121e30b52e449e99a4eb3ab4a1c90505..db9b3fece9609190313bf71a0693cf062ff8212d 100644 (file)
@@ -63,9 +63,9 @@ bool ItemSend(entity this, entity to, int sf)
                        LOG_TRACE("^1WARNING!^7 this.mdl is unset for item ", this.classname, "expect a crash just about now");
 
                WriteString(MSG_ENTITY, this.mdl);
+               WriteByte(MSG_ENTITY, bound(0, this.skin, 255));
        }
 
-
        if(sf & ISF_COLORMAP)
        {
                WriteShort(MSG_ENTITY, this.colormap);
@@ -551,22 +551,42 @@ bool Item_GiveTo(entity item, entity player)
        if (item.strength_finished)
        {
                pickedup = true;
-               StatusEffects_apply(STATUSEFFECT_Strength, player, max(StatusEffects_gettime(STATUSEFFECT_Strength, player), time) + item.strength_finished, 0);
+               float t = max(StatusEffects_gettime(STATUSEFFECT_Strength, player), time);
+               if (autocvar_g_powerups_stack)
+                       t += item.strength_finished;
+               else
+                       t = max(t, time + item.strength_finished);
+               StatusEffects_apply(STATUSEFFECT_Strength, player, t, 0);
        }
        if (item.invincible_finished)
        {
                pickedup = true;
-               StatusEffects_apply(STATUSEFFECT_Shield, player, max(StatusEffects_gettime(STATUSEFFECT_Shield, player), time) + item.invincible_finished, 0);
+               float t = max(StatusEffects_gettime(STATUSEFFECT_Shield, player), time);
+               if (autocvar_g_powerups_stack)
+                       t += item.invincible_finished;
+               else
+                       t = max(t, time + item.invincible_finished);
+               StatusEffects_apply(STATUSEFFECT_Shield, player, t, 0);
        }
        if (item.speed_finished)
        {
                pickedup = true;
-               StatusEffects_apply(STATUSEFFECT_Speed, player, max(StatusEffects_gettime(STATUSEFFECT_Speed, player), time) + item.speed_finished, 0);
+               float t = max(StatusEffects_gettime(STATUSEFFECT_Speed, player), time);
+               if (autocvar_g_powerups_stack)
+                       t += item.speed_finished;
+               else
+                       t = max(t, time + item.speed_finished);
+               StatusEffects_apply(STATUSEFFECT_Speed, player, t, 0);
        }
        if (item.invisibility_finished)
        {
                pickedup = true;
-               StatusEffects_apply(STATUSEFFECT_Invisibility, player, max(StatusEffects_gettime(STATUSEFFECT_Invisibility, player), time) + item.invisibility_finished, 0);
+               float t = max(StatusEffects_gettime(STATUSEFFECT_Invisibility, player), time);
+               if (autocvar_g_powerups_stack)
+                       t += item.invisibility_finished;
+               else
+                       t = max(t, time + item.invisibility_finished);
+               StatusEffects_apply(STATUSEFFECT_Invisibility, player, t, 0);
        }
        if (item.superweapons_finished)
        {
@@ -1071,6 +1091,10 @@ void _StartItem(entity this, entity def, float defaultrespawntime, float default
        setmodel(this, MDL_Null); // precision set below
        //this.effects |= EF_LOWPRECISION;
 
+       // support skinned models for powerups
+       this.skin = def.m_skin;
+       this.glowmod = def.m_color;
+
        setsize (this, this.pos1 =  def.m_mins, this.pos2 = def.m_maxs);
 
        this.SendFlags |= ISF_SIZE;
index fccb89576e053b5945ffbfbe0030980e902cca62..170c38d79a03e5c0cd06d639d5628ab424d341c9 100644 (file)
@@ -12,7 +12,11 @@ g_shootfromcenter 1 // hit where you point at with the crosshair (almost so, no
 g_balance_kill_antispam 0
 g_forced_respawn 1
 // g_playerclip_collisions 0 // do not check playerclips
-g_powerups 0 // no powerups until the speed powerup has its own model
+// Powerups including speed enabled by default.
+g_powerups_strength 0
+g_powerups_shield 0
+g_powerups_invisibility 0
+g_buffs 0
 g_start_delay 3
 g_use_ammunition 0
 g_weapon_stay 1
@@ -20,30 +24,10 @@ teamplay_mode 2 // friendly fire and self damage
 sv_vote_nospectators 1
 timelimit_override 20
 
-// general buff settings
-g_buffs_cooldown_activate 0
-g_buffs_cooldown_respawn 0
-g_buffs_randomize 0
-
-// disabled buffs
-g_buffs_ammo 0
-g_buffs_resistance 0
-g_buffs_medic 0
-g_buffs_vengeance 0
-g_buffs_bash 0
-g_buffs_disability 0
-g_buffs_vampire 0
-g_buffs_jump 0
-g_buffs_inferno 0
-g_buffs_swapper 0
-g_buffs_magnet 0
-g_buffs_luck 0
-g_buffs_flight 0
-
 // speed powerup (q3 haste replacement)
 g_movement_highspeed_q3_compat 1
-g_balance_powerup_speed_time 30
-g_balance_powerup_speed_highspeed 1.3  // q3 haste lasts 30 seconds
+g_balance_powerup_speed_time 30 // q3 haste lasts 30 seconds unless count field set otherwise
+g_balance_powerup_speed_highspeed 1.3
 g_balance_powerup_speed_attackrate 0.7692307692   // 1/1.3
 
 // game mode settings
index 09cb0e85672d579c1731b64f888628359ce471ee..39323f0dc6fba66ed95c10acde291b1e4c40db1c 100644 (file)
@@ -197,7 +197,12 @@ set g_shootfromcenter 0 "weapon gets moved to the center, shots still come from
 set g_shootfromfixedorigin "" "if set to a string like 0 y z, the gun is moved to the given y and z coordinates. If set to a string like x y z, the whole shot origin is used"
 set g_weapon_stay 0 "1: ghost weapons can be picked up but give no ammo, thrown guns have ammo 2: ghost weapons can be picked up and refill ammo to one pickup size, thrown guns have no ammo (to prevent infinite ammo abuse)"
 set g_weapon_throwable 1 "if set to 1, weapons can be dropped"
-set g_powerups -1 "if set to 0 the strength and shield (invincibility) will not spawn on the map, if 1 they will spawn in all game modes, -1 is game mode default"
+set g_powerups -1 "if set to 0 no powerups will spawn, if 1 they will spawn in all game modes, -1 is game mode default"
+set g_powerups_stack 0 "enables stacking of powerup timers when picking up a powerup you already have; otherwise timer is reset to the time granted by the item, if greater than the time you currently have"
+set g_powerups_strength 1 "allow strength powerups to spawn"
+set g_powerups_shield 1 "allow shield powerups to spawn"
+set g_powerups_speed 1 "allow speed powerups to spawn"
+set g_powerups_invisibility 1 "allow invisibility powerups to spawn"
 set g_use_ammunition 1 "if set to 0 all weapons have unlimited ammo"
 set g_pickup_items -1 "if set to 0 all items (health, armor, ammo, weapons...) are removed from the map, if 1 they are forced to spawn"
 set g_pickup_respawntime_scaling_reciprocal 0 "Multiply respawn time by `reciprocal / (p + offset) + linear` where `p` is the current number of players, takes effect with 2 or more players present, `reciprocal` (with `offset` and `linear` set to 0) can be used to achieve a constant number of items spawned *per player*"