From: bones_was_here Date: Sat, 4 Jun 2022 12:43:50 +0000 (+0000) Subject: Merge branch 'Mario/monsters' into 'develop' X-Git-Tag: xonotic-v0.8.5~7^2~1 X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=561489d21c9053b7103c6604c362aa24ee5c7916;hp=9f05324845e464bab02e79a7a8ad3fb74bb3c8f3 Merge branch 'Mario/monsters' into 'develop' Merge branch Mario/monsters (L merge request) See merge request xonotic/xonotic-data.pk3dir!1017 --- diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index caf20d1252..8b56b81ff3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -55,7 +55,7 @@ test_sv_game: - wget -O data/maps/stormkeep.waypoints https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/stormkeep.waypoints - wget -O data/maps/stormkeep.waypoints.cache https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/stormkeep.waypoints.cache - - EXPECT=a728d38448ae86459582804aa10320c0 + - EXPECT=8e36763a3b4590356bcc449b2452d0ea - HASH=$(${ENGINE} +timestamps 1 +exec serverbench.cfg | tee /dev/stderr | sed -e 's,^\[[^]]*\] ,,' diff --git a/.tx/merge-base b/.tx/merge-base index 5ef01d8a33..41063ec71c 100644 --- a/.tx/merge-base +++ b/.tx/merge-base @@ -1 +1 @@ -Tue Apr 26 07:23:12 CEST 2022 +Sat May 28 07:23:08 CEST 2022 diff --git a/common.cs.po b/common.cs.po index f3b1672ff3..ad3aef2178 100644 --- a/common.cs.po +++ b/common.cs.po @@ -7,8 +7,8 @@ # Adam Říha, 2021 # Adam Říha, 2021 # fasdasd sdasd , 2021 -# gamingforyou875 , 2019 -# gamingforyou875 , 2019 +# GamingasCZ , 2019 +# GamingasCZ , 2019 # Jan Kocka , 2019 # Jiří Vrána , 2020-2021 # Martin Taibr , 2017 diff --git a/common.es.po b/common.es.po index 37c0666223..bc5b944904 100644 --- a/common.es.po +++ b/common.es.po @@ -40,7 +40,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " +"1 : 2;\n" #: qcsrc/client/announcer.qc:45 msgid "vs" diff --git a/common.es_MX.po b/common.es_MX.po index 5254cde9ec..1b96f5e140 100644 --- a/common.es_MX.po +++ b/common.es_MX.po @@ -16,7 +16,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " +"1 : 2;\n" #: qcsrc/client/announcer.qc:45 msgid "vs" diff --git a/common.fr.po b/common.fr.po index 5c1fce96b5..a291ce9c8d 100644 --- a/common.fr.po +++ b/common.fr.po @@ -30,7 +30,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % " +"1000000 == 0 ? 1 : 2;\n" #: qcsrc/client/announcer.qc:45 msgid "vs" @@ -1227,7 +1228,7 @@ msgstr "Ceci est %s" #: qcsrc/client/main.qc:1358 msgid "Your client version is outdated." -msgstr "Votre version de client est obsolète." +msgstr "La version de votre client est obsolète." #: qcsrc/client/main.qc:1359 msgid "### YOU WON'T BE ABLE TO PLAY ON THIS SERVER ###" @@ -9674,7 +9675,7 @@ msgid "" "help slow GPUs" msgstr "" "Multiplicateur de taille d'écran ou de fenêtre, permet l'anticrénelage au-" -"dessus de 1x, peut aider à ralentir les GPUs en-dessous de 1x" +"dessus de 1x, en-dessous de 1x cela peut aider les petits GPUs" #: qcsrc/menu/xonotic/dialog_settings_video.qc:90 msgid "Anisotropy:" diff --git a/common.it.po b/common.it.po index e9cb1afa4a..962f1a75b5 100644 --- a/common.it.po +++ b/common.it.po @@ -23,7 +23,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " +"1 : 2;\n" #: qcsrc/client/announcer.qc:45 msgid "vs" diff --git a/common.kw.po b/common.kw.po index dc32fd24b6..679a6c1db4 100644 --- a/common.kw.po +++ b/common.kw.po @@ -19,7 +19,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n == 1 ? 0 : n == 2 ? 1 : 2);\n" +"Plural-Forms: nplurals=6; plural=n == 0 ? 0 : n == 1 ? 1 : (n % 100 == 2 || " +"n % 100 == 22 || n % 100 == 42 || n % 100 == 62 || n % 100 == 82) || n % " +"1000 == 0 && (n % 100000 >= 1000 && n % 100000 <= 20000 || n % 100000 == " +"40000 || n % 100000 == 60000 || n % 100000 == 80000) || n != 0 && n % " +"1000000 == 100000 ? 2 : (n % 100 == 3 || n % 100 == 23 || n % 100 == 43 || n " +"% 100 == 63 || n % 100 == 83) ? 3 : n != 1 && (n % 100 == 1 || n % 100 == 21 " +"|| n % 100 == 41 || n % 100 == 61 || n % 100 == 81) ? 4 : 5;\n" #: qcsrc/client/announcer.qc:45 msgid "vs" diff --git a/common.pt.po b/common.pt.po index e3c8ef1064..83aaff5e84 100644 --- a/common.pt.po +++ b/common.pt.po @@ -24,7 +24,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % " +"1000000 == 0 ? 1 : 2;\n" #: qcsrc/client/announcer.qc:45 msgid "vs" diff --git a/common.pt_BR.po b/common.pt_BR.po index f99dbd8b78..65f14f8d39 100644 --- a/common.pt_BR.po +++ b/common.pt_BR.po @@ -25,7 +25,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % " +"1000000 == 0 ? 1 : 2;\n" #: qcsrc/client/announcer.qc:45 msgid "vs" @@ -4356,7 +4357,7 @@ msgid "" "^F2^COUNT^BG until weapon change...\n" "Next weapon: ^F1%s" msgstr "" -"^F2^CONTAGEM^BG até a mudança de arma...\n" +"^F2^COUNT^BG até a mudança de arma...\n" "Próxima arma: ^F1%s" #: qcsrc/common/notifications/all.inc:719 diff --git a/common.tr.po b/common.tr.po index 187b3ea3de..2f8e2c97b4 100644 --- a/common.tr.po +++ b/common.tr.po @@ -6,21 +6,21 @@ # Abdurrahman AKKUŞ , 2019 # Ahmet, 2022 # Ahmet, 2022 -# Big Brother , 2021 +# Tan Siret Akıncı , 2021 # Çağlar Turalı , 2018 # Demiray Muhterem , 2018 -# Big Brother , 2021 +# Tan Siret Akıncı , 2021 # Gokdeniz.Kucukali, 2021 # Gokdeniz.Kucukali, 2021 # ibra kap , 2019 -# Big Brother , 2021 +# Tan Siret Akıncı , 2021 msgid "" msgstr "" "Project-Id-Version: Xonotic\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-04-17 07:22+0200\n" "PO-Revision-Date: 2013-09-12 16:53+0000\n" -"Last-Translator: Big Brother , 2021\n" +"Last-Translator: Tan Siret Akıncı , 2021\n" "Language-Team: Turkish (http://www.transifex.com/team-xonotic/xonotic/" "language/tr/)\n" "Language: tr\n" diff --git a/gamemodes-client.cfg b/gamemodes-client.cfg index c43b9d1d3f..71d272a174 100644 --- a/gamemodes-client.cfg +++ b/gamemodes-client.cfg @@ -32,6 +32,6 @@ alias cl_hook_gamestart_ka alias cl_hook_gamestart_ft alias cl_hook_gamestart_inv alias cl_hook_gamestart_duel -alias cl_hook_gameend "rpn /cl_matchcount dup load 1 + =" // increase match count every time a game ends +alias cl_hook_gameend alias cl_hook_shutdown alias cl_hook_activeweapon diff --git a/gamemodes-server.cfg b/gamemodes-server.cfg index bdac1a2343..318749021f 100644 --- a/gamemodes-server.cfg +++ b/gamemodes-server.cfg @@ -322,7 +322,7 @@ exec ctfscoring-samual.cfg // ==================== set g_cts 0 "CTS: complete the stage" set g_cts_selfdamage 1 "0 = disable all selfdamage and falldamage in cts" -set g_cts_finish_kill_delay 10 "prevent cheating by running back to the start line, and starting out with more speed than otherwise possible" +set g_cts_finish_kill_delay 2 "kill player this many seconds after stage completion to prevent cheating by starting out with more speed than otherwise possible; set it to 0 to not kill or to -1 to kill instantly" set g_cts_send_rankings_cnt 15 "send this number of map records to clients" set g_cts_removeprojectiles 0 "remove projectiles when the player dies, to prevent using weapons earlier in the stage than intended" diff --git a/models/player/erebus.iqm_0.skin b/models/player/erebus.iqm_0.skin index 81c4f3bae7..9f5f7b7dc3 100644 --- a/models/player/erebus.iqm_0.skin +++ b/models/player/erebus.iqm_0.skin @@ -1,2 +1,2 @@ -erebus,erebus -erebus.001,shadowhead +erebus,erebusfullbright +erebus.001,shadowheadfb diff --git a/models/player/erebus.iqm_1.skin b/models/player/erebus.iqm_1.skin index 4597ceff1e..81c4f3bae7 100644 --- a/models/player/erebus.iqm_1.skin +++ b/models/player/erebus.iqm_1.skin @@ -1,2 +1,2 @@ -erebus,erebusfullbright +erebus,erebus erebus.001,shadowhead diff --git a/models/player/erebus_lod1.iqm_0.skin b/models/player/erebus_lod1.iqm_0.skin index 81c4f3bae7..9f5f7b7dc3 100644 --- a/models/player/erebus_lod1.iqm_0.skin +++ b/models/player/erebus_lod1.iqm_0.skin @@ -1,2 +1,2 @@ -erebus,erebus -erebus.001,shadowhead +erebus,erebusfullbright +erebus.001,shadowheadfb diff --git a/models/player/erebus_lod1.iqm_1.skin b/models/player/erebus_lod1.iqm_1.skin index 4597ceff1e..81c4f3bae7 100644 --- a/models/player/erebus_lod1.iqm_1.skin +++ b/models/player/erebus_lod1.iqm_1.skin @@ -1,2 +1,2 @@ -erebus,erebusfullbright +erebus,erebus erebus.001,shadowhead diff --git a/models/player/erebus_lod2.iqm_0.skin b/models/player/erebus_lod2.iqm_0.skin index 81c4f3bae7..9f5f7b7dc3 100644 --- a/models/player/erebus_lod2.iqm_0.skin +++ b/models/player/erebus_lod2.iqm_0.skin @@ -1,2 +1,2 @@ -erebus,erebus -erebus.001,shadowhead +erebus,erebusfullbright +erebus.001,shadowheadfb diff --git a/models/player/erebus_lod2.iqm_1.skin b/models/player/erebus_lod2.iqm_1.skin index 4597ceff1e..81c4f3bae7 100644 --- a/models/player/erebus_lod2.iqm_1.skin +++ b/models/player/erebus_lod2.iqm_1.skin @@ -1,2 +1,2 @@ -erebus,erebusfullbright +erebus,erebus erebus.001,shadowhead diff --git a/models/player/gak.iqm_0.skin b/models/player/gak.iqm_0.skin index f2da16714c..3844f6ceb7 100644 --- a/models/player/gak.iqm_0.skin +++ b/models/player/gak.iqm_0.skin @@ -1,2 +1,2 @@ -gak2.001,gakarmor -gak2,gak +gak2.001,gakarmorfb +gak2,gakfullbright diff --git a/models/player/gak.iqm_1.skin b/models/player/gak.iqm_1.skin index 3844f6ceb7..f2da16714c 100644 --- a/models/player/gak.iqm_1.skin +++ b/models/player/gak.iqm_1.skin @@ -1,2 +1,2 @@ -gak2.001,gakarmorfb -gak2,gakfullbright +gak2.001,gakarmor +gak2,gak diff --git a/models/player/gak_lod1.iqm_0.skin b/models/player/gak_lod1.iqm_0.skin index f2da16714c..3844f6ceb7 100644 --- a/models/player/gak_lod1.iqm_0.skin +++ b/models/player/gak_lod1.iqm_0.skin @@ -1,2 +1,2 @@ -gak2.001,gakarmor -gak2,gak +gak2.001,gakarmorfb +gak2,gakfullbright diff --git a/models/player/gak_lod1.iqm_1.skin b/models/player/gak_lod1.iqm_1.skin index 3844f6ceb7..f2da16714c 100644 --- a/models/player/gak_lod1.iqm_1.skin +++ b/models/player/gak_lod1.iqm_1.skin @@ -1,2 +1,2 @@ -gak2.001,gakarmorfb -gak2,gakfullbright +gak2.001,gakarmor +gak2,gak diff --git a/models/player/gak_lod2.iqm_0.skin b/models/player/gak_lod2.iqm_0.skin index f2da16714c..3844f6ceb7 100644 --- a/models/player/gak_lod2.iqm_0.skin +++ b/models/player/gak_lod2.iqm_0.skin @@ -1,2 +1,2 @@ -gak2.001,gakarmor -gak2,gak +gak2.001,gakarmorfb +gak2,gakfullbright diff --git a/models/player/gak_lod2.iqm_1.skin b/models/player/gak_lod2.iqm_1.skin index 3844f6ceb7..f2da16714c 100644 --- a/models/player/gak_lod2.iqm_1.skin +++ b/models/player/gak_lod2.iqm_1.skin @@ -1,2 +1,2 @@ -gak2.001,gakarmorfb -gak2,gakfullbright +gak2.001,gakarmor +gak2,gak diff --git a/models/player/gakmasked.iqm_0.skin b/models/player/gakmasked.iqm_0.skin index 2df68ec5aa..802db3e155 100644 --- a/models/player/gakmasked.iqm_0.skin +++ b/models/player/gakmasked.iqm_0.skin @@ -1,2 +1,2 @@ -gak3,gak -gak3.001,gakarmor +gak3,gakfullbright +gak3.001,gakarmorfb diff --git a/models/player/gakmasked.iqm_1.skin b/models/player/gakmasked.iqm_1.skin index 802db3e155..2df68ec5aa 100644 --- a/models/player/gakmasked.iqm_1.skin +++ b/models/player/gakmasked.iqm_1.skin @@ -1,2 +1,2 @@ -gak3,gakfullbright -gak3.001,gakarmorfb +gak3,gak +gak3.001,gakarmor diff --git a/models/player/gakmasked_lod1.iqm_0.skin b/models/player/gakmasked_lod1.iqm_0.skin index 2df68ec5aa..802db3e155 100644 --- a/models/player/gakmasked_lod1.iqm_0.skin +++ b/models/player/gakmasked_lod1.iqm_0.skin @@ -1,2 +1,2 @@ -gak3,gak -gak3.001,gakarmor +gak3,gakfullbright +gak3.001,gakarmorfb diff --git a/models/player/gakmasked_lod1.iqm_1.skin b/models/player/gakmasked_lod1.iqm_1.skin index 802db3e155..2df68ec5aa 100644 --- a/models/player/gakmasked_lod1.iqm_1.skin +++ b/models/player/gakmasked_lod1.iqm_1.skin @@ -1,2 +1,2 @@ -gak3,gakfullbright -gak3.001,gakarmorfb +gak3,gak +gak3.001,gakarmor diff --git a/models/player/gakmasked_lod2.iqm_0.skin b/models/player/gakmasked_lod2.iqm_0.skin index 2df68ec5aa..802db3e155 100644 --- a/models/player/gakmasked_lod2.iqm_0.skin +++ b/models/player/gakmasked_lod2.iqm_0.skin @@ -1,2 +1,2 @@ -gak3,gak -gak3.001,gakarmor +gak3,gakfullbright +gak3.001,gakarmorfb diff --git a/models/player/gakmasked_lod2.iqm_1.skin b/models/player/gakmasked_lod2.iqm_1.skin index 802db3e155..2df68ec5aa 100644 --- a/models/player/gakmasked_lod2.iqm_1.skin +++ b/models/player/gakmasked_lod2.iqm_1.skin @@ -1,2 +1,2 @@ -gak3,gakfullbright -gak3.001,gakarmorfb +gak3,gak +gak3.001,gakarmor diff --git a/models/player/ignis.iqm_0.skin b/models/player/ignis.iqm_0.skin index a0e69e9fc7..f31cd8df5c 100644 --- a/models/player/ignis.iqm_0.skin +++ b/models/player/ignis.iqm_0.skin @@ -1,2 +1,2 @@ -ignis1,ignis -ignis1.001,ignishead +ignis1,ignisfullbright +ignis1.001,ignisheadfb diff --git a/models/player/ignis.iqm_1.skin b/models/player/ignis.iqm_1.skin index 2c93e982f5..a0e69e9fc7 100644 --- a/models/player/ignis.iqm_1.skin +++ b/models/player/ignis.iqm_1.skin @@ -1,2 +1,2 @@ -ignis1,ignisfullbright +ignis1,ignis ignis1.001,ignishead diff --git a/models/player/ignis_lod1.iqm_0.skin b/models/player/ignis_lod1.iqm_0.skin index a0e69e9fc7..f31cd8df5c 100644 --- a/models/player/ignis_lod1.iqm_0.skin +++ b/models/player/ignis_lod1.iqm_0.skin @@ -1,2 +1,2 @@ -ignis1,ignis -ignis1.001,ignishead +ignis1,ignisfullbright +ignis1.001,ignisheadfb diff --git a/models/player/ignis_lod1.iqm_1.skin b/models/player/ignis_lod1.iqm_1.skin index 2c93e982f5..a0e69e9fc7 100644 --- a/models/player/ignis_lod1.iqm_1.skin +++ b/models/player/ignis_lod1.iqm_1.skin @@ -1,2 +1,2 @@ -ignis1,ignisfullbright +ignis1,ignis ignis1.001,ignishead diff --git a/models/player/ignis_lod2.iqm_0.skin b/models/player/ignis_lod2.iqm_0.skin index a0e69e9fc7..f31cd8df5c 100644 --- a/models/player/ignis_lod2.iqm_0.skin +++ b/models/player/ignis_lod2.iqm_0.skin @@ -1,2 +1,2 @@ -ignis1,ignis -ignis1.001,ignishead +ignis1,ignisfullbright +ignis1.001,ignisheadfb diff --git a/models/player/ignis_lod2.iqm_1.skin b/models/player/ignis_lod2.iqm_1.skin index 2c93e982f5..a0e69e9fc7 100644 --- a/models/player/ignis_lod2.iqm_1.skin +++ b/models/player/ignis_lod2.iqm_1.skin @@ -1,2 +1,2 @@ -ignis1,ignisfullbright +ignis1,ignis ignis1.001,ignishead diff --git a/models/player/ignismasked.iqm_0.skin b/models/player/ignismasked.iqm_0.skin index d46d1576ac..a021961610 100644 --- a/models/player/ignismasked.iqm_0.skin +++ b/models/player/ignismasked.iqm_0.skin @@ -1,2 +1,2 @@ -ignis1,ignis -ignis3,ignishead +ignis1,ignisfullbright +ignis3,ignisheadfb diff --git a/models/player/ignismasked.iqm_1.skin b/models/player/ignismasked.iqm_1.skin index eb257cc1d6..d46d1576ac 100644 --- a/models/player/ignismasked.iqm_1.skin +++ b/models/player/ignismasked.iqm_1.skin @@ -1,2 +1,2 @@ -ignis1,ignisfullbright +ignis1,ignis ignis3,ignishead diff --git a/models/player/ignismasked_lod1.iqm_0.skin b/models/player/ignismasked_lod1.iqm_0.skin index d46d1576ac..a021961610 100644 --- a/models/player/ignismasked_lod1.iqm_0.skin +++ b/models/player/ignismasked_lod1.iqm_0.skin @@ -1,2 +1,2 @@ -ignis1,ignis -ignis3,ignishead +ignis1,ignisfullbright +ignis3,ignisheadfb diff --git a/models/player/ignismasked_lod1.iqm_1.skin b/models/player/ignismasked_lod1.iqm_1.skin index eb257cc1d6..d46d1576ac 100644 --- a/models/player/ignismasked_lod1.iqm_1.skin +++ b/models/player/ignismasked_lod1.iqm_1.skin @@ -1,2 +1,2 @@ -ignis1,ignisfullbright +ignis1,ignis ignis3,ignishead diff --git a/models/player/ignismasked_lod2.iqm_0.skin b/models/player/ignismasked_lod2.iqm_0.skin index d46d1576ac..a021961610 100644 --- a/models/player/ignismasked_lod2.iqm_0.skin +++ b/models/player/ignismasked_lod2.iqm_0.skin @@ -1,2 +1,2 @@ -ignis1,ignis -ignis3,ignishead +ignis1,ignisfullbright +ignis3,ignisheadfb diff --git a/models/player/ignismasked_lod2.iqm_1.skin b/models/player/ignismasked_lod2.iqm_1.skin index eb257cc1d6..d46d1576ac 100644 --- a/models/player/ignismasked_lod2.iqm_1.skin +++ b/models/player/ignismasked_lod2.iqm_1.skin @@ -1,2 +1,2 @@ -ignis1,ignisfullbright +ignis1,ignis ignis3,ignishead diff --git a/models/player/megaerebus.iqm_0.skin b/models/player/megaerebus.iqm_0.skin index 4597ceff1e..977140f6bd 100644 --- a/models/player/megaerebus.iqm_0.skin +++ b/models/player/megaerebus.iqm_0.skin @@ -1,2 +1,2 @@ -erebus,erebusfullbright -erebus.001,shadowhead +erebus,megaerebus +erebus.001,shadowheadfb diff --git a/models/player/megaerebus_lod1.iqm_0.skin b/models/player/megaerebus_lod1.iqm_0.skin index 4597ceff1e..977140f6bd 100644 --- a/models/player/megaerebus_lod1.iqm_0.skin +++ b/models/player/megaerebus_lod1.iqm_0.skin @@ -1,2 +1,2 @@ -erebus,erebusfullbright -erebus.001,shadowhead +erebus,megaerebus +erebus.001,shadowheadfb diff --git a/models/player/megaerebus_lod2.iqm_0.skin b/models/player/megaerebus_lod2.iqm_0.skin index 4597ceff1e..977140f6bd 100644 --- a/models/player/megaerebus_lod2.iqm_0.skin +++ b/models/player/megaerebus_lod2.iqm_0.skin @@ -1,2 +1,2 @@ -erebus,erebusfullbright -erebus.001,shadowhead +erebus,megaerebus +erebus.001,shadowheadfb diff --git a/models/player/nyx.iqm_0.skin b/models/player/nyx.iqm_0.skin index 383252cb85..2d1096323d 100644 --- a/models/player/nyx.iqm_0.skin +++ b/models/player/nyx.iqm_0.skin @@ -1,2 +1,2 @@ -nyx,nyx -nyx.001,shadowhead +nyx,nyxfullbright +nyx.001,shadowheadfb diff --git a/models/player/nyx.iqm_1.skin b/models/player/nyx.iqm_1.skin index 19b5fd59b1..383252cb85 100644 --- a/models/player/nyx.iqm_1.skin +++ b/models/player/nyx.iqm_1.skin @@ -1,2 +1,2 @@ -nyx,nyxfullbright +nyx,nyx nyx.001,shadowhead diff --git a/models/player/nyx_lod1.iqm_0.skin b/models/player/nyx_lod1.iqm_0.skin index 383252cb85..2d1096323d 100644 --- a/models/player/nyx_lod1.iqm_0.skin +++ b/models/player/nyx_lod1.iqm_0.skin @@ -1,2 +1,2 @@ -nyx,nyx -nyx.001,shadowhead +nyx,nyxfullbright +nyx.001,shadowheadfb diff --git a/models/player/nyx_lod1.iqm_1.skin b/models/player/nyx_lod1.iqm_1.skin index 19b5fd59b1..383252cb85 100644 --- a/models/player/nyx_lod1.iqm_1.skin +++ b/models/player/nyx_lod1.iqm_1.skin @@ -1,2 +1,2 @@ -nyx,nyxfullbright +nyx,nyx nyx.001,shadowhead diff --git a/models/player/nyx_lod2.iqm_0.skin b/models/player/nyx_lod2.iqm_0.skin index 383252cb85..2d1096323d 100644 --- a/models/player/nyx_lod2.iqm_0.skin +++ b/models/player/nyx_lod2.iqm_0.skin @@ -1,2 +1,2 @@ -nyx,nyx -nyx.001,shadowhead +nyx,nyxfullbright +nyx.001,shadowheadfb diff --git a/models/player/nyx_lod2.iqm_1.skin b/models/player/nyx_lod2.iqm_1.skin index 19b5fd59b1..383252cb85 100644 --- a/models/player/nyx_lod2.iqm_1.skin +++ b/models/player/nyx_lod2.iqm_1.skin @@ -1,2 +1,2 @@ -nyx,nyxfullbright +nyx,nyx nyx.001,shadowhead diff --git a/models/player/pyria.iqm_0.skin b/models/player/pyria.iqm_0.skin index 7533a4c53a..1932354e80 100644 --- a/models/player/pyria.iqm_0.skin +++ b/models/player/pyria.iqm_0.skin @@ -1,2 +1,2 @@ pyria_obj.001,pyriahair -pyria_obj,pyria +pyria_obj,pyriafullbright diff --git a/models/player/pyria.iqm_1.skin b/models/player/pyria.iqm_1.skin index 1932354e80..7533a4c53a 100644 --- a/models/player/pyria.iqm_1.skin +++ b/models/player/pyria.iqm_1.skin @@ -1,2 +1,2 @@ pyria_obj.001,pyriahair -pyria_obj,pyriafullbright +pyria_obj,pyria diff --git a/models/player/pyria_lod1.iqm_0.skin b/models/player/pyria_lod1.iqm_0.skin index 7533a4c53a..1932354e80 100644 --- a/models/player/pyria_lod1.iqm_0.skin +++ b/models/player/pyria_lod1.iqm_0.skin @@ -1,2 +1,2 @@ pyria_obj.001,pyriahair -pyria_obj,pyria +pyria_obj,pyriafullbright diff --git a/models/player/pyria_lod1.iqm_1.skin b/models/player/pyria_lod1.iqm_1.skin index 1932354e80..7533a4c53a 100644 --- a/models/player/pyria_lod1.iqm_1.skin +++ b/models/player/pyria_lod1.iqm_1.skin @@ -1,2 +1,2 @@ pyria_obj.001,pyriahair -pyria_obj,pyriafullbright +pyria_obj,pyria diff --git a/models/player/pyria_lod2.iqm_0.skin b/models/player/pyria_lod2.iqm_0.skin index 7533a4c53a..1932354e80 100644 --- a/models/player/pyria_lod2.iqm_0.skin +++ b/models/player/pyria_lod2.iqm_0.skin @@ -1,2 +1,2 @@ pyria_obj.001,pyriahair -pyria_obj,pyria +pyria_obj,pyriafullbright diff --git a/models/player/pyria_lod2.iqm_1.skin b/models/player/pyria_lod2.iqm_1.skin index 1932354e80..7533a4c53a 100644 --- a/models/player/pyria_lod2.iqm_1.skin +++ b/models/player/pyria_lod2.iqm_1.skin @@ -1,2 +1,2 @@ pyria_obj.001,pyriahair -pyria_obj,pyriafullbright +pyria_obj,pyria diff --git a/models/player/seraphina.iqm_0.skin b/models/player/seraphina.iqm_0.skin index a8ea4ee627..cf702a3c2a 100644 --- a/models/player/seraphina.iqm_0.skin +++ b/models/player/seraphina.iqm_0.skin @@ -1,2 +1,2 @@ ignis42.001,seraphina -ignis42,ignis +ignis42,ignisfullbright diff --git a/models/player/seraphina.iqm_1.skin b/models/player/seraphina.iqm_1.skin index cf702a3c2a..a8ea4ee627 100644 --- a/models/player/seraphina.iqm_1.skin +++ b/models/player/seraphina.iqm_1.skin @@ -1,2 +1,2 @@ ignis42.001,seraphina -ignis42,ignisfullbright +ignis42,ignis diff --git a/models/player/seraphina_lod1.iqm_0.skin b/models/player/seraphina_lod1.iqm_0.skin index a8ea4ee627..cf702a3c2a 100644 --- a/models/player/seraphina_lod1.iqm_0.skin +++ b/models/player/seraphina_lod1.iqm_0.skin @@ -1,2 +1,2 @@ ignis42.001,seraphina -ignis42,ignis +ignis42,ignisfullbright diff --git a/models/player/seraphina_lod1.iqm_1.skin b/models/player/seraphina_lod1.iqm_1.skin index cf702a3c2a..a8ea4ee627 100644 --- a/models/player/seraphina_lod1.iqm_1.skin +++ b/models/player/seraphina_lod1.iqm_1.skin @@ -1,2 +1,2 @@ ignis42.001,seraphina -ignis42,ignisfullbright +ignis42,ignis diff --git a/models/player/seraphina_lod2.iqm_0.skin b/models/player/seraphina_lod2.iqm_0.skin index a8ea4ee627..cf702a3c2a 100644 --- a/models/player/seraphina_lod2.iqm_0.skin +++ b/models/player/seraphina_lod2.iqm_0.skin @@ -1,2 +1,2 @@ ignis42.001,seraphina -ignis42,ignis +ignis42,ignisfullbright diff --git a/models/player/seraphina_lod2.iqm_1.skin b/models/player/seraphina_lod2.iqm_1.skin index cf702a3c2a..a8ea4ee627 100644 --- a/models/player/seraphina_lod2.iqm_1.skin +++ b/models/player/seraphina_lod2.iqm_1.skin @@ -1,2 +1,2 @@ ignis42.001,seraphina -ignis42,ignisfullbright +ignis42,ignis diff --git a/models/player/seraphinamasked.iqm_0.skin b/models/player/seraphinamasked.iqm_0.skin index 7138ad587e..1e69498f9f 100644 --- a/models/player/seraphinamasked.iqm_0.skin +++ b/models/player/seraphinamasked.iqm_0.skin @@ -1,2 +1,2 @@ -ignis42,ignis -ignis42.002,ignishead +ignis42,ignisfullbright +ignis42.002,ignisheadfb diff --git a/models/player/seraphinamasked.iqm_1.skin b/models/player/seraphinamasked.iqm_1.skin index 7b94ebe4a4..7138ad587e 100644 --- a/models/player/seraphinamasked.iqm_1.skin +++ b/models/player/seraphinamasked.iqm_1.skin @@ -1,2 +1,2 @@ -ignis42,ignisfullbright +ignis42,ignis ignis42.002,ignishead diff --git a/models/player/seraphinamasked_lod1.iqm_0.skin b/models/player/seraphinamasked_lod1.iqm_0.skin index 7138ad587e..1e69498f9f 100644 --- a/models/player/seraphinamasked_lod1.iqm_0.skin +++ b/models/player/seraphinamasked_lod1.iqm_0.skin @@ -1,2 +1,2 @@ -ignis42,ignis -ignis42.002,ignishead +ignis42,ignisfullbright +ignis42.002,ignisheadfb diff --git a/models/player/seraphinamasked_lod1.iqm_1.skin b/models/player/seraphinamasked_lod1.iqm_1.skin index 7b94ebe4a4..7138ad587e 100644 --- a/models/player/seraphinamasked_lod1.iqm_1.skin +++ b/models/player/seraphinamasked_lod1.iqm_1.skin @@ -1,2 +1,2 @@ -ignis42,ignisfullbright +ignis42,ignis ignis42.002,ignishead diff --git a/models/player/seraphinamasked_lod2.iqm_0.skin b/models/player/seraphinamasked_lod2.iqm_0.skin index 7138ad587e..1e69498f9f 100644 --- a/models/player/seraphinamasked_lod2.iqm_0.skin +++ b/models/player/seraphinamasked_lod2.iqm_0.skin @@ -1,2 +1,2 @@ -ignis42,ignis -ignis42.002,ignishead +ignis42,ignisfullbright +ignis42.002,ignisheadfb diff --git a/models/player/seraphinamasked_lod2.iqm_1.skin b/models/player/seraphinamasked_lod2.iqm_1.skin index 7b94ebe4a4..7138ad587e 100644 --- a/models/player/seraphinamasked_lod2.iqm_1.skin +++ b/models/player/seraphinamasked_lod2.iqm_1.skin @@ -1,2 +1,2 @@ -ignis42,ignisfullbright +ignis42,ignis ignis42.002,ignishead diff --git a/models/player/umbra.iqm_0.skin b/models/player/umbra.iqm_0.skin index 447eeadfc4..cb9c3d0517 100644 --- a/models/player/umbra.iqm_0.skin +++ b/models/player/umbra.iqm_0.skin @@ -1 +1 @@ -umbra,umbra +umbra,umbrafullbright diff --git a/models/player/umbra.iqm_1.skin b/models/player/umbra.iqm_1.skin index cb9c3d0517..447eeadfc4 100644 --- a/models/player/umbra.iqm_1.skin +++ b/models/player/umbra.iqm_1.skin @@ -1 +1 @@ -umbra,umbrafullbright +umbra,umbra diff --git a/models/player/umbra_lod1.iqm_0.skin b/models/player/umbra_lod1.iqm_0.skin index 447eeadfc4..cb9c3d0517 100644 --- a/models/player/umbra_lod1.iqm_0.skin +++ b/models/player/umbra_lod1.iqm_0.skin @@ -1 +1 @@ -umbra,umbra +umbra,umbrafullbright diff --git a/models/player/umbra_lod1.iqm_1.skin b/models/player/umbra_lod1.iqm_1.skin index cb9c3d0517..447eeadfc4 100644 --- a/models/player/umbra_lod1.iqm_1.skin +++ b/models/player/umbra_lod1.iqm_1.skin @@ -1 +1 @@ -umbra,umbrafullbright +umbra,umbra diff --git a/models/player/umbra_lod2.iqm_0.skin b/models/player/umbra_lod2.iqm_0.skin index 447eeadfc4..cb9c3d0517 100644 --- a/models/player/umbra_lod2.iqm_0.skin +++ b/models/player/umbra_lod2.iqm_0.skin @@ -1 +1 @@ -umbra,umbra +umbra,umbrafullbright diff --git a/models/player/umbra_lod2.iqm_1.skin b/models/player/umbra_lod2.iqm_1.skin index cb9c3d0517..447eeadfc4 100644 --- a/models/player/umbra_lod2.iqm_1.skin +++ b/models/player/umbra_lod2.iqm_1.skin @@ -1 +1 @@ -umbra,umbrafullbright +umbra,umbra diff --git a/qcsrc/client/announcer.qc b/qcsrc/client/announcer.qc index e86702afa0..d46595e871 100644 --- a/qcsrc/client/announcer.qc +++ b/qcsrc/client/announcer.qc @@ -53,6 +53,8 @@ void Announcer_ClearTitle() } bool prev_inround; +float prev_starttime; +float prev_roundstarttime; void Announcer_Countdown(entity this) { float starttime = STAT(GAMESTARTTIME); @@ -70,6 +72,9 @@ void Announcer_Countdown(entity this) float countdown = (inround ? roundstarttime - time : starttime - time); float countdown_rounded = floor(0.5 + countdown); + if (starttime != prev_starttime || roundstarttime != prev_roundstarttime || prev_inround != inround) + this.skin = 0; // restart centerprint countdown + if(countdown <= 0) // countdown has finished, starttime is now { Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_BEGIN); @@ -84,7 +89,8 @@ void Announcer_Countdown(entity this) if(inround) { if(!prev_inround) Announcer_ClearTitle(); // clear title if we just started the match - Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_ROUNDSTART, STAT(ROUNDS_PLAYED) + 1, countdown_rounded); + if (!this.skin) // first tic + Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_ROUNDSTART, STAT(ROUNDS_PLAYED) + 1, countdown_rounded); Notification annce_num = Announcer_PickNumber(CNT_ROUNDSTART, countdown_rounded); if(annce_num != NULL) Local_Notification(MSG_ANNCE, annce_num); @@ -92,15 +98,22 @@ void Announcer_Countdown(entity this) } else { - Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_GAMESTART, countdown_rounded); + if (!this.skin) // first tic + Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_GAMESTART, countdown_rounded); Notification annce_num = Announcer_PickNumber(CNT_GAMESTART, countdown_rounded); if(!roundstarttime && annce_num != NULL) // Don't announce game start in round based modes Local_Notification(MSG_ANNCE, annce_num); this.nextthink = (starttime - (countdown - 1)); } + // Don't call centerprint countdown in the remaining tics, it will continue automatically. + // It's an optimization but also fixes ^COUNT shown in the last tic because of high slowmo values (15+). + // Hopefully it fixes ^COUNT occasionally shown in online servers, probably due to lags. + this.skin = 1; // recycled field } prev_inround = inround; + prev_starttime = starttime; + prev_roundstarttime = roundstarttime; } /** @@ -119,6 +132,7 @@ void Announcer_Gamestart() startTime = roundstarttime; if(intermission) { + Announcer_ClearTitle(); if(announcer_countdown) { centerprint_Kill(ORDINAL(CPID_ROUND)); @@ -216,6 +230,9 @@ void Announcer_Time() void Announcer() { + // announcer code sets gametype name as centerprint title + if(!gametype) + return; Announcer_Gamestart(); Announcer_Time(); } diff --git a/qcsrc/client/csqcmodel_hooks.qc b/qcsrc/client/csqcmodel_hooks.qc index 06cf44bdbd..121af1947a 100644 --- a/qcsrc/client/csqcmodel_hooks.qc +++ b/qcsrc/client/csqcmodel_hooks.qc @@ -330,7 +330,7 @@ void CSQCPlayer_ModelAppearance_Apply(entity this, bool islocalplayer) // GLOWMOD AND DEATH FADING if(this.colormap > 0) - this.glowmod = colormapPaletteColor(((this.colormap >= 1024) ? this.colormap : entcs_GetClientColors(this.colormap - 1)) & 0x0F, true) * 2; + this.glowmod = colormapPaletteColor(((this.colormap >= 1024) ? this.colormap : entcs_GetClientColors(this.colormap - 1)) & 0x0F, true); else this.glowmod = '1 1 1'; @@ -348,6 +348,10 @@ void CSQCPlayer_ModelAppearance_Apply(entity this, bool islocalplayer) } } + // don't let the engine increase player's glowmod + if (autocvar_r_hdr_glowintensity > 1) + this.glowmod /= autocvar_r_hdr_glowintensity; + //printf("CSQCPlayer_ModelAppearance_Apply(): state = %s, colormap = %f, glowmod = %s\n", (this.csqcmodel_isdead ? "DEAD" : "ALIVE"), this.colormap, vtos(this.glowmod)); } diff --git a/qcsrc/client/csqcmodel_hooks.qh b/qcsrc/client/csqcmodel_hooks.qh index 16cc29a0b0..165008ee94 100644 --- a/qcsrc/client/csqcmodel_hooks.qh +++ b/qcsrc/client/csqcmodel_hooks.qh @@ -17,6 +17,7 @@ string autocvar__cl_playermodel; float autocvar_cl_deathglow; float autocvar_cl_deathglow_min = 0.5; float autocvar_cl_jetpack_attenuation = 2; +float autocvar_r_hdr_glowintensity; // FEATURE: EF_NODRAW workalike const int EF_BRIGHTFIELD = BIT(0); diff --git a/qcsrc/client/hud/crosshair.qc b/qcsrc/client/hud/crosshair.qc index cf2c01d971..229a602408 100644 --- a/qcsrc/client/hud/crosshair.qc +++ b/qcsrc/client/hud/crosshair.qc @@ -63,9 +63,8 @@ float EnemyHitCheck() if(n > maxclients) return SHOTTYPE_HITWORLD; t = entcs_GetTeam(n - 1); - if(teamplay) - if(t == myteam) - return SHOTTYPE_HITTEAM; + if(teamplay && t == myteam) + return SHOTTYPE_HITTEAM; if(t == NUM_SPECTATOR) return SHOTTYPE_HITWORLD; return SHOTTYPE_HITENEMY; diff --git a/qcsrc/client/hud/panel/centerprint.qc b/qcsrc/client/hud/panel/centerprint.qc index 1436f2ef6a..1af0e33014 100644 --- a/qcsrc/client/hud/panel/centerprint.qc +++ b/qcsrc/client/hud/panel/centerprint.qc @@ -278,14 +278,14 @@ void HUD_CenterPrint() if (centerprint_title_left != "" && align == 0.5) // Center line at the main word (for duels) pos.x += (stringwidth(centerprint_title_right, true, fontsize) - stringwidth(centerprint_title_left, true, fontsize)) / 2; - drawcolorcodedstring(pos, centerprint_title, fontsize, 1, DRAWFLAG_NORMAL); + drawcolorcodedstring(pos, centerprint_title, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL); if (autocvar_hud_panel_centerprint_flip) pos.y -= cp_fontsize.y * CENTERPRINT_TITLE_SPACING; else pos.y += fontsize.y + (hud_fontsize.y * CENTERPRINT_TITLE_SPACING); - drawfill(pos, vec2(width, 1), '1 1 1', 1, DRAWFLAG_NORMAL); + drawfill(pos, vec2(width, 1), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); if (autocvar_hud_panel_centerprint_flip) pos.y -= cp_fontsize.y * CENTERPRINT_TITLE_SPACING; diff --git a/qcsrc/client/hud/panel/scoreboard.qc b/qcsrc/client/hud/panel/scoreboard.qc index ed8715e022..0d0a44b6a2 100644 --- a/qcsrc/client/hud/panel/scoreboard.qc +++ b/qcsrc/client/hud/panel/scoreboard.qc @@ -2110,8 +2110,7 @@ void Scoreboard_Draw() // print information about respawn status float respawn_time = STAT(RESPAWN_TIME); - if(!intermission) - if(respawn_time) + if(!intermission && respawn_time) { if(respawn_time < 0) { diff --git a/qcsrc/client/main.qc b/qcsrc/client/main.qc index 8bd5d78638..40d6cbbc2b 100644 --- a/qcsrc/client/main.qc +++ b/qcsrc/client/main.qc @@ -178,7 +178,14 @@ void Shutdown() if (!(calledhooks & HOOK_START)) localcmd("\n_cl_hook_gamestart nop\n"); if (!(calledhooks & HOOK_END)) + { + int gamecount = cvar("cl_matchcount"); localcmd("\ncl_hook_gameend\n"); + // NOTE: using localcmd here to ensure it's executed AFTER cl_hook_gameend + // earlier versions of the game abuse the hook to set this cvar + localcmd(strcat("cl_matchcount ", itos(gamecount + 1), "\n")); + //cvar_set("cl_matchcount", itos(gamecount + 1)); + } } localcmd("\ncl_hook_shutdown\n"); @@ -1438,6 +1445,8 @@ void Welcome_Message_Show_Try() string msg = MakeConsoleSafe(strreplace("\n", "\\n", welcome_msg)); welcomedialog_args = strcat(welcomedialog_args, " WELCOME \"", msg, "\""); localcmd("\nmenu_cmd directmenu Welcome ", welcomedialog_args, "\n"); + if (intermission) // close it after it's been initialized so it can still be opened manually + localcmd("\ntogglemenu 0\n"); } else centerprint_Add(ORDINAL(CPID_MOTD), strcat(hostname, "\n\n\n", welcome_msg), -1, 0); diff --git a/qcsrc/client/view.qc b/qcsrc/client/view.qc index 855d20f818..5303246563 100644 --- a/qcsrc/client/view.qc +++ b/qcsrc/client/view.qc @@ -868,41 +868,46 @@ void HUD_Draw(entity this) Hud_Dynamic_Frame(); if(!intermission) - if (MUTATOR_CALLHOOK(HUD_Draw_overlay)) { - drawfill('0 0 0', vec2(vid_conwidth, vid_conheight), M_ARGV(0, vector), autocvar_hud_colorflash_alpha * M_ARGV(1, float), DRAWFLAG_ADDITIVE); - } - else if(STAT(FROZEN)) - { - vector col = '0.25 0.90 1'; - float col_fade = max(0, STAT(REVIVE_PROGRESS) * 2 - 1); - float alpha_fade = 0.3 + 0.7 * (1 - max(0, STAT(REVIVE_PROGRESS) * 4 - 3)); - if(col_fade) - col += vec3(col_fade, -col_fade, -col_fade); - drawfill('0 0 0', vec2(vid_conwidth, vid_conheight), col, autocvar_hud_colorflash_alpha * alpha_fade, DRAWFLAG_ADDITIVE); + if (MUTATOR_CALLHOOK(HUD_Draw_overlay)) + { + drawfill('0 0 0', vec2(vid_conwidth, vid_conheight), M_ARGV(0, vector), autocvar_hud_colorflash_alpha * M_ARGV(1, float), DRAWFLAG_ADDITIVE); + } + else if(STAT(FROZEN)) + { + vector col = '0.25 0.90 1'; + float col_fade = max(0, STAT(REVIVE_PROGRESS) * 2 - 1); + float alpha_fade = 0.3 + 0.7 * (1 - max(0, STAT(REVIVE_PROGRESS) * 4 - 3)); + if(col_fade) + col += vec3(col_fade, -col_fade, -col_fade); + drawfill('0 0 0', vec2(vid_conwidth, vid_conheight), col, autocvar_hud_colorflash_alpha * alpha_fade, DRAWFLAG_ADDITIVE); + } } HUD_Scale_Enable(); if(!intermission) - if(STAT(NADE_TIMER) && autocvar_cl_nade_timer) // give nade top priority, as it's a matter of life and death - { - vector col = '0.25 0.90 1' + vec3(STAT(NADE_TIMER), -STAT(NADE_TIMER), -STAT(NADE_TIMER)); - DrawCircleClippedPic(vec2(0.5 * vid_conwidth, 0.6 * vid_conheight), 0.1 * vid_conheight, "gfx/crosshair_ring", STAT(NADE_TIMER), col, autocvar_hud_colorflash_alpha, DRAWFLAG_ADDITIVE); - drawstring_aspect(eY * 0.64 * vid_conheight, ((autocvar_cl_nade_timer == 2) ? _("Nade timer") : ""), vec2(vid_conwidth, 0.025 * vid_conheight), '1 1 1', 1, DRAWFLAG_NORMAL); - } - else if(STAT(CAPTURE_PROGRESS)) - { - DrawCircleClippedPic(vec2(0.5 * vid_conwidth, 0.6 * vid_conheight), 0.1 * vid_conheight, "gfx/crosshair_ring", STAT(CAPTURE_PROGRESS), '0.25 0.90 1', autocvar_hud_colorflash_alpha, DRAWFLAG_ADDITIVE); - drawstring_aspect(eY * 0.64 * vid_conheight, _("Capture progress"), vec2(vid_conwidth, 0.025 * vid_conheight), '1 1 1', 1, DRAWFLAG_NORMAL); - } - else if(STAT(REVIVE_PROGRESS)) { - DrawCircleClippedPic(vec2(0.5 * vid_conwidth, 0.6 * vid_conheight), 0.1 * vid_conheight, "gfx/crosshair_ring", STAT(REVIVE_PROGRESS), '0.25 0.90 1', autocvar_hud_colorflash_alpha, DRAWFLAG_ADDITIVE); - drawstring_aspect(eY * 0.64 * vid_conheight, _("Revival progress"), vec2(vid_conwidth, 0.025 * vid_conheight), '1 1 1', 1, DRAWFLAG_NORMAL); + if(STAT(NADE_TIMER) && autocvar_cl_nade_timer) // give nade top priority, as it's a matter of life and death + { + vector col = '0.25 0.90 1' + vec3(STAT(NADE_TIMER), -STAT(NADE_TIMER), -STAT(NADE_TIMER)); + DrawCircleClippedPic(vec2(0.5 * vid_conwidth, 0.6 * vid_conheight), 0.1 * vid_conheight, "gfx/crosshair_ring", STAT(NADE_TIMER), col, autocvar_hud_colorflash_alpha, DRAWFLAG_ADDITIVE); + drawstring_aspect(eY * 0.64 * vid_conheight, ((autocvar_cl_nade_timer == 2) ? _("Nade timer") : ""), vec2(vid_conwidth, 0.025 * vid_conheight), '1 1 1', 1, DRAWFLAG_NORMAL); + } + else if(STAT(CAPTURE_PROGRESS)) + { + DrawCircleClippedPic(vec2(0.5 * vid_conwidth, 0.6 * vid_conheight), 0.1 * vid_conheight, "gfx/crosshair_ring", STAT(CAPTURE_PROGRESS), '0.25 0.90 1', autocvar_hud_colorflash_alpha, DRAWFLAG_ADDITIVE); + drawstring_aspect(eY * 0.64 * vid_conheight, _("Capture progress"), vec2(vid_conwidth, 0.025 * vid_conheight), '1 1 1', 1, DRAWFLAG_NORMAL); + } + else if(STAT(REVIVE_PROGRESS)) + { + DrawCircleClippedPic(vec2(0.5 * vid_conwidth, 0.6 * vid_conheight), 0.1 * vid_conheight, "gfx/crosshair_ring", STAT(REVIVE_PROGRESS), '0.25 0.90 1', autocvar_hud_colorflash_alpha, DRAWFLAG_ADDITIVE); + drawstring_aspect(eY * 0.64 * vid_conheight, _("Revival progress"), vec2(vid_conwidth, 0.025 * vid_conheight), '1 1 1', 1, DRAWFLAG_NORMAL); + } } HUD_Scale_Disable(); if(autocvar_r_letterbox == 0) + { if(autocvar_viewsize < 120) { if(!MUTATOR_CALLHOOK(DrawScoreboardAccuracy)) @@ -911,6 +916,7 @@ void HUD_Draw(entity this) HUD_Main(); HUD_Scale_Disable(); } + } // crosshair goes VERY LAST UpdateDamage(); @@ -1647,7 +1653,12 @@ void CSQC_UpdateView(entity this, float w, float h) { if(calledhooks & HOOK_START) { + int gamecount = cvar("cl_matchcount"); localcmd("\ncl_hook_gameend\n"); + // NOTE: using localcmd here to ensure it's executed AFTER cl_hook_gameend + // earlier versions of the game abuse the hook to set this cvar + localcmd(strcat("cl_matchcount ", itos(gamecount + 1), "\n")); + //cvar_set("cl_matchcount", itos(gamecount + 1)); calledhooks |= HOOK_END; } } diff --git a/qcsrc/client/weapons/projectile.qc b/qcsrc/client/weapons/projectile.qc index b4c9f86b2c..1df65036ec 100644 --- a/qcsrc/client/weapons/projectile.qc +++ b/qcsrc/client/weapons/projectile.qc @@ -276,7 +276,7 @@ NET_HANDLE(ENT_CLIENT_PROJECTILE, bool isnew) // TODO: projectiles use glowmaps for their color, not teams #if 0 if(this.colormap > 0) - this.glowmod = colormapPaletteColor(this.colormap & 0x0F, true) * 2; + this.glowmod = colormapPaletteColor(this.colormap & 0x0F, true); else this.glowmod = '1 1 1'; #endif diff --git a/qcsrc/common/gamemodes/gamemode/assault/sv_assault.qc b/qcsrc/common/gamemodes/gamemode/assault/sv_assault.qc index 5edfd5ff18..e9fb0a48de 100644 --- a/qcsrc/common/gamemodes/gamemode/assault/sv_assault.qc +++ b/qcsrc/common/gamemodes/gamemode/assault/sv_assault.qc @@ -255,7 +255,7 @@ int WinningCondition_Assault() TeamScore_AddToTeam(assault_attacker_team, ST_ASSAULT_OBJECTIVES, 666 - TeamScore_AddToTeam(assault_attacker_team, ST_ASSAULT_OBJECTIVES, 0)); - if(ent.cnt == 1 || autocvar_g_campaign) // this was the second round + if(ent.cnt == 1 || autocvar_g_campaign) // this was the second round or the only round in campaign { status = WINNING_YES; } @@ -630,5 +630,8 @@ MUTATOR_HOOKFUNCTION(as, OnEntityPreSpawn) MUTATOR_HOOKFUNCTION(as, ReadyRestart_Deny) { // readyrestart not supported (yet) + // it's supported only in campaign mode (single round mode), since campaign requires it + if (autocvar_g_campaign) + return false; return true; } diff --git a/qcsrc/common/gamemodes/gamemode/clanarena/sv_clanarena.qc b/qcsrc/common/gamemodes/gamemode/clanarena/sv_clanarena.qc index 3b823dfdf1..7803108c6c 100644 --- a/qcsrc/common/gamemodes/gamemode/clanarena/sv_clanarena.qc +++ b/qcsrc/common/gamemodes/gamemode/clanarena/sv_clanarena.qc @@ -194,12 +194,7 @@ MUTATOR_HOOKFUNCTION(ca, reset_map_players) { FOREACH_CLIENT(true, { CS(it).killcount = 0; - if (!INGAME(it) && IS_BOT_CLIENT(it)) - { - it.team = -1; - INGAME_STATUS_SET(it, INGAME_STATUS_JOINED); - } - if (INGAME(it)) + if (INGAME(it) || IS_BOT_CLIENT(it)) { TRANSMUTE(Player, it); INGAME_STATUS_SET(it, INGAME_STATUS_JOINED); diff --git a/qcsrc/common/playerstats.qc b/qcsrc/common/playerstats.qc index 3e1444a35f..e83305886c 100644 --- a/qcsrc/common/playerstats.qc +++ b/qcsrc/common/playerstats.qc @@ -207,7 +207,13 @@ void PlayerStats_GameReport_FinalizePlayer(entity p) { float latency = max(0, CS(p).latency_sum / CS(p).latency_cnt); if(latency) - PlayerStats_GameReport_Event_Player(p, PLAYERSTATS_AVGLATENCY, latency); + { + // if previous average latency exists (player disconnected and reconnected) + // make the average of previous and current average latency + float prev_latency = PlayerStats_GameReport_Event_Player(p, PLAYERSTATS_AVGLATENCY, 0); + float new_latency = !prev_latency ? latency : (prev_latency + latency) / 2; + PlayerStats_GameReport_Event_Player(p, PLAYERSTATS_AVGLATENCY, -prev_latency + new_latency); + } } db_put(PS_GR_OUT_DB, sprintf("%s:_ranked", p.playerstats_id), ftos(CS_CVAR(p).cvar_cl_allow_uidranking)); @@ -366,6 +372,7 @@ void PlayerStats_GameReport_Handler(entity fh, entity pass, float status) * i: player index * n: nickname of the player (optional) * t: team ID + * r: player ranking enabled / disabled * e: followed by an event name, a space, and the event count/score * event names can be: * alivetime: total playing time of the player diff --git a/qcsrc/common/turrets/cl_turrets.qc b/qcsrc/common/turrets/cl_turrets.qc index 2157062b2a..aff0f764c7 100644 --- a/qcsrc/common/turrets/cl_turrets.qc +++ b/qcsrc/common/turrets/cl_turrets.qc @@ -10,7 +10,7 @@ void turret_remove(entity this) .vector glowmod; void turret_changeteam(entity this) { - this.glowmod = Team_ColorRGB(this.team - 1) * 2; + this.glowmod = Team_ColorRGB(this.team - 1); this.teamradar_color = Team_ColorRGB(this.team - 1); if(this.team) diff --git a/qcsrc/common/weapons/all.qh b/qcsrc/common/weapons/all.qh index 6824680436..356c3882a9 100644 --- a/qcsrc/common/weapons/all.qh +++ b/qcsrc/common/weapons/all.qh @@ -308,14 +308,11 @@ WepSet WEPSET_SUPERWEAPONS; #include "all.inc" -// TODO: remove after 0.8.2. Retains impulse number compatibility because 0.8.1 clients don't reload the weapons.cfg -#define WEP_HARDCODED_IMPULSES 20 - // TODO: invert after 0.8.2. Will require moving 'best weapon' impulses #define WEP_IMPULSE_BEGIN 230 #define WEP_IMPULSE_END bound(WEP_IMPULSE_BEGIN, WEP_IMPULSE_BEGIN + (REGISTRY_COUNT(Weapons) - 1) - 1, 253) -REGISTRY_SORT(Weapons, WEP_HARDCODED_IMPULSES + 1) +REGISTRY_SORT(Weapons, 1) REGISTRY_CHECK(Weapons) STATIC_INIT(register_weapons_done) @@ -350,7 +347,7 @@ STATIC_INIT(register_weapons_done) vector weaponentity_glowmod(Weapon wep, entity actor, int c, entity wepent) { vector g; - if (!(g = wep.wr_glow(wep, actor, wepent))) g = colormapPaletteColor(c & 0x0F, true) * 2; + if (!(g = wep.wr_glow(wep, actor, wepent))) g = colormapPaletteColor(c & 0x0F, true); return g; } diff --git a/qcsrc/common/weapons/weapon/minelayer.qc b/qcsrc/common/weapons/weapon/minelayer.qc index f25859e053..8a8d4839cd 100644 --- a/qcsrc/common/weapons/weapon/minelayer.qc +++ b/qcsrc/common/weapons/weapon/minelayer.qc @@ -192,7 +192,7 @@ void W_MineLayer_Think(entity this) head = findradius(this.origin, WEP_CVAR(minelayer, proximityradius)); while(head) { - if(IS_PLAYER(head) && !IS_DEAD(head) && !STAT(FROZEN, head)) + if(IS_PLAYER(head) && !IS_DEAD(head) && !STAT(FROZEN, head) && !IS_INDEPENDENT_PLAYER(head)) if(head != this.realowner && DIFF_TEAM(head, this.realowner)) // don't trigger for team mates if(!this.mine_time) { diff --git a/qcsrc/menu/xonotic/dialog_welcome.qc b/qcsrc/menu/xonotic/dialog_welcome.qc index ca80ef4dd7..5da6f8b1ea 100644 --- a/qcsrc/menu/xonotic/dialog_welcome.qc +++ b/qcsrc/menu/xonotic/dialog_welcome.qc @@ -71,6 +71,10 @@ void XonoticWelcomeDialog_readInputArgs(entity me, int argsbuf) void XonoticWelcomeDialog_draw(entity me) { SUPER(XonoticWelcomeDialog).draw(me); + + if (!(gamestatus & (GAME_ISSERVER | GAME_CONNECTED))) + me.close(me); + if(me.serverinfo_MOTD == "" && gamestatus & (GAME_CONNECTED | GAME_ISSERVER)) { // if serverinfo_MOTD is empty while connected it means we are connected to an old server diff --git a/qcsrc/server/bot/default/bot.qc b/qcsrc/server/bot/default/bot.qc index d9585768d9..79b3a96924 100644 --- a/qcsrc/server/bot/default/bot.qc +++ b/qcsrc/server/bot/default/bot.qc @@ -243,7 +243,11 @@ void bot_setnameandstuff(entity this) else bot_pants = ftos(floor(random() * 15)); if (teamplay && !(autocvar_bot_vs_human && AvailableTeams() == 2)) + { this.bot_forced_team = stof(argv(5)); + if (!Team_IsValidIndex(this.bot_forced_team)) + this.bot_forced_team = 0; + } else this.bot_forced_team = 0; @@ -448,16 +452,6 @@ void bot_clientconnect(entity this) bot_setclientfields(this); } - if (teamplay && Team_IsValidIndex(this.bot_forced_team)) - { - SetPlayerTeam(this, this.bot_forced_team, TEAM_CHANGE_MANUAL); - } - else - { - this.bot_forced_team = 0; - TeamBalance_JoinBestTeam(this); - } - havocbot_setupbot(this); } @@ -687,6 +681,7 @@ void bot_serverframe() // spectators in the scoreboard and never go away. This issue happens at time 2 if map is changed // with the gotomap command, minplayers is > 1 and human clients join as players very soon // either intentionally or automatically (sv_spectate 0) + // A working workaround for this bug was implemented in commit fbd145044, see entcs_attach if (time < 2.5) { currentbots = -1; diff --git a/qcsrc/server/client.qc b/qcsrc/server/client.qc index cab642e67f..2e6e9e6b85 100644 --- a/qcsrc/server/client.qc +++ b/qcsrc/server/client.qc @@ -540,6 +540,9 @@ void PutPlayerInServer(entity this) PlayerState_attach(this); accuracy_resend(this); + if (teamplay && this.bot_forced_team) + SetPlayerTeam(this, this.bot_forced_team, TEAM_CHANGE_MANUAL); + if (this.team < 0) TeamBalance_JoinBestTeam(this); @@ -810,9 +813,7 @@ void PutPlayerInServer(entity this) /** Called when a client spawns in the server */ void PutClientInServer(entity this) { - if (IS_BOT_CLIENT(this)) { - TRANSMUTE(Player, this); - } else if (IS_REAL_CLIENT(this)) { + if (IS_REAL_CLIENT(this)) { msg_entity = this; WriteByte(MSG_ONE, SVC_SETVIEW); WriteEntity(MSG_ONE, this); @@ -2269,6 +2270,14 @@ void ObserverOrSpectatorThink(entity this) } } + if (IS_BOT_CLIENT(this) && !CS(this).autojoin_checked) + { + CS(this).autojoin_checked = true; + TRANSMUTE(Player, this); + PutClientInServer(this); + return; + } + if (this.flags & FL_JUMPRELEASED) { if (PHYS_INPUT_BUTTON_JUMP(this) && (joinAllowed(this) || time < CS(this).jointime + MIN_SPEC_TIME)) { this.flags &= ~FL_JUMPRELEASED; diff --git a/qcsrc/server/command/vote.qc b/qcsrc/server/command/vote.qc index 01758efe5e..12e130c9e8 100644 --- a/qcsrc/server/command/vote.qc +++ b/qcsrc/server/command/vote.qc @@ -486,7 +486,13 @@ void ReadyRestart_force(bool is_fake_round_start) void ReadyRestart(bool forceWarmupEnd) { - if (MUTATOR_CALLHOOK(ReadyRestart_Deny) || intermission_running || race_completing) localcmd("restart\n"); + if (MUTATOR_CALLHOOK(ReadyRestart_Deny) || intermission_running || race_completing) + { + // NOTE: ReadyRestart support is mandatory in campaign + if (autocvar_g_campaign) + error("ReadyRestart must be supported in campaign mode!"); + localcmd("restart\n"); // if ReadyRestart is denied, restart the server + } else localcmd("\nsv_hook_readyrestart\n"); if(forceWarmupEnd || autocvar_g_campaign) diff --git a/qcsrc/server/gamelog.qc b/qcsrc/server/gamelog.qc index f89cf18a03..1b308d0940 100644 --- a/qcsrc/server/gamelog.qc +++ b/qcsrc/server/gamelog.qc @@ -1,5 +1,7 @@ #include "gamelog.qh" - +#include // GetGametype(), GetMapname() +#include // autocvar_g_norecoil +#include // matchid #include string GameLog_ProcessIP(string s) @@ -41,8 +43,32 @@ void GameLogEcho(string s) void GameLogInit() { - logfile_open = false; - // will be opened later + GameLogEcho(strcat(":gamestart:", GetGametype(), "_", GetMapname(), ":", matchid)); + string s = ":gameinfo:mutators:LIST"; + + MUTATOR_CALLHOOK(BuildMutatorsString, s); + s = M_ARGV(0, string); + + // initialiation stuff, not good in the mutator system + if(!autocvar_g_use_ammunition) + s = strcat(s, ":no_use_ammunition"); + + // initialiation stuff, not good in the mutator system + if(autocvar_g_pickup_items == 0) + s = strcat(s, ":no_pickup_items"); + if(autocvar_g_pickup_items > 0) + s = strcat(s, ":pickup_items"); + + // initialiation stuff, not good in the mutator system + if(autocvar_g_weaponarena != "0") + s = strcat(s, ":", autocvar_g_weaponarena, " arena"); + + // TODO to mutator system + if(autocvar_g_norecoil) + s = strcat(s, ":norecoil"); + + GameLogEcho(s); + GameLogEcho(":gameinfo:end"); } void GameLogClose() diff --git a/qcsrc/server/gamelog.qh b/qcsrc/server/gamelog.qh index f96679b819..99ac37c3c7 100644 --- a/qcsrc/server/gamelog.qh +++ b/qcsrc/server/gamelog.qh @@ -9,7 +9,7 @@ string autocvar_sv_eventlog_files_namesuffix; bool autocvar_sv_eventlog_files_timestamps; bool autocvar_sv_eventlog_ipv6_delimiter = false; -bool logfile_open; +bool logfile_open = false; float logfile; string GameLog_ProcessIP(string s); diff --git a/qcsrc/server/items/items.qc b/qcsrc/server/items/items.qc index ed39c7bca9..99c0165fd3 100644 --- a/qcsrc/server/items/items.qc +++ b/qcsrc/server/items/items.qc @@ -1094,7 +1094,6 @@ void _StartItem(entity this, entity def, float defaultrespawntime, float default // 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); @@ -1110,6 +1109,8 @@ void _StartItem(entity this, entity def, float defaultrespawntime, float default if(Item_IsLoot(this)) this.gravity = 1; + else + this.glowmod = def.m_color; if(def.instanceOfWeaponPickup) { diff --git a/qcsrc/server/mutators/events.qh b/qcsrc/server/mutators/events.qh index 6feb811323..e7f9f897b0 100644 --- a/qcsrc/server/mutators/events.qh +++ b/qcsrc/server/mutators/events.qh @@ -1153,7 +1153,10 @@ MUTATOR_HOOKABLE(ChatMessage, EV_ChatMessage); /**/ MUTATOR_HOOKABLE(ChatMessageTo, EV_ChatMessageTo); -/** return true to just restart the match, for modes that don't support readyrestart */ +/** + * return true to restart the server instead of restarting the match, for modes that don't support readyrestart. + * NOTE: ReadyRestart support is mandatory in campaign + */ MUTATOR_HOOKABLE(ReadyRestart_Deny, EV_NO_ARGS); /** called when a fusion reactor is validating its target */ diff --git a/qcsrc/server/race.qc b/qcsrc/server/race.qc index 4ecda0a9a0..545bdad27b 100644 --- a/qcsrc/server/race.qc +++ b/qcsrc/server/race.qc @@ -502,6 +502,9 @@ void race_SendTime(entity e, float cp, float t, float tvalid) { CS(e).race_completed = 1; MAKE_INDEPENDENT_PLAYER(e); + if(e.bot_attack) + IL_REMOVE(g_bot_targets, e); + e.bot_attack = false; Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_RACE_FINISHED, e.netname); ClientData_Touch(e); } diff --git a/qcsrc/server/scores.qh b/qcsrc/server/scores.qh index 178181cbad..2b6ea48810 100644 --- a/qcsrc/server/scores.qh +++ b/qcsrc/server/scores.qh @@ -88,7 +88,7 @@ void ScoreInfo_SetLabel_PlayerScore(PlayerScoreField i, string label, float scor * Initialize the scores info for the given number of teams. * Set all labels right before this call. */ -void ScoreInfo_Init(float teams); +void ScoreInfo_Init(int teams); /** * Clear ALL scores (for ready-restart). diff --git a/qcsrc/server/weapons/spawning.qc b/qcsrc/server/weapons/spawning.qc index 30a2869f39..6a2d65db20 100644 --- a/qcsrc/server/weapons/spawning.qc +++ b/qcsrc/server/weapons/spawning.qc @@ -152,6 +152,8 @@ void weapon_defaultspawnfunc(entity this, Weapon wpn) if(!this.owner) this.glowmod = wpn.wpcolor; + else + this.glowmod = colormapPaletteColor(this.owner.clientcolors & 0x0F, true) * 2; GameItem def = wpn.m_pickup; _StartItem( diff --git a/qcsrc/server/weapons/throwing.qc b/qcsrc/server/weapons/throwing.qc index 719b599359..01c6ac0d20 100644 --- a/qcsrc/server/weapons/throwing.qc +++ b/qcsrc/server/weapons/throwing.qc @@ -49,7 +49,7 @@ float W_ThrowNewWeapon(entity own, float wpn, float doreduce, vector org, vector wep.owner = wep.enemy = own; wep.flags |= FL_TOSSED; wep.colormap = own.colormap; - wep.glowmod = weaponentity_glowmod(info, own, own.clientcolors, own.(weaponentity)); + // wep.glowmod will be set in weapon_defaultspawnfunc navigation_dynamicgoal_init(wep, false); W_DropEvent(wr_drop,own,wpn,wep,weaponentity); diff --git a/qcsrc/server/world.qc b/qcsrc/server/world.qc index 7e1333eb87..5519521725 100644 --- a/qcsrc/server/world.qc +++ b/qcsrc/server/world.qc @@ -35,7 +35,6 @@ #include #include #include -#include #include #include #include @@ -46,7 +45,6 @@ #include #include #include -#include #include const float LATENCY_THINKRATE = 10; @@ -843,46 +841,15 @@ spawnfunc(worldspawn) WaypointSprite_Init(); - GameLogInit(); // prepare everything // NOTE for matchid: // changing the logic generating it is okay. But: // it HAS to stay <= 64 chars // character set: ASCII 33-126 without the following characters: : ; ' " \ $ - if(autocvar_sv_eventlog) - { - string num = strftime_s(); // strftime(false, "%s") isn't reliable, see strftime_s description - string s = sprintf("%s.%s.%06d", itos(autocvar_sv_eventlog_files_counter), num, floor(random() * 1000000)); - matchid = strzone(s); - - GameLogEcho(strcat(":gamestart:", GetGametype(), "_", GetMapname(), ":", s)); - s = ":gameinfo:mutators:LIST"; - - MUTATOR_CALLHOOK(BuildMutatorsString, s); - s = M_ARGV(0, string); - - // initialiation stuff, not good in the mutator system - if(!autocvar_g_use_ammunition) - s = strcat(s, ":no_use_ammunition"); - - // initialiation stuff, not good in the mutator system - if(autocvar_g_pickup_items == 0) - s = strcat(s, ":no_pickup_items"); - if(autocvar_g_pickup_items > 0) - s = strcat(s, ":pickup_items"); + // strftime(false, "%s") isn't reliable, see strftime_s description + matchid = strzone(sprintf("%d.%s.%06d", autocvar_sv_eventlog_files_counter, strftime_s(), random() * 1000000)); - // initialiation stuff, not good in the mutator system - if(autocvar_g_weaponarena != "0") - s = strcat(s, ":", autocvar_g_weaponarena, " arena"); - - // TODO to mutator system - if(autocvar_g_norecoil) - s = strcat(s, ":norecoil"); - - GameLogEcho(s); - GameLogEcho(":gameinfo:end"); - } - else - matchid = strzone(ftos(random())); + if(autocvar_sv_eventlog) + GameLogInit(); // requires matchid to be set cvar_set("nextmap", ""); diff --git a/scripts/player_erebus.shader b/scripts/player_erebus.shader index 01c3e7450a..086d9c449f 100644 --- a/scripts/player_erebus.shader +++ b/scripts/player_erebus.shader @@ -16,6 +16,15 @@ erebusfullbright } } +megaerebus +{ + dpreflectcube cubemaps/default/sky + { + map textures/megaerebus.tga + rgbgen lightingDiffuse + } +} + shadowhead { dpreflectcube cubemaps/default/sky @@ -24,3 +33,12 @@ shadowhead rgbgen lightingDiffuse } } + +shadowheadfb +{ + dpreflectcube cubemaps/default/sky + { + map textures/shadowheadfb.tga + rgbgen lightingDiffuse + } +} diff --git a/scripts/player_ignis.shader b/scripts/player_ignis.shader index 81fc6fc58a..322463a2d6 100644 --- a/scripts/player_ignis.shader +++ b/scripts/player_ignis.shader @@ -6,6 +6,7 @@ ignis rgbgen lightingDiffuse } } + ignisfullbright { dpreflectcube cubemaps/default/sky @@ -23,3 +24,12 @@ ignishead rgbgen lightingDiffuse } } + +ignisheadfb +{ + dpreflectcube cubemaps/default/sky + { + map textures/ignisheadfb.tga + rgbgen lightingDiffuse + } +} diff --git a/textures/erebusfullbright_glow.tga b/textures/erebusfullbright_glow.tga index a91959d366..f4f00c6f97 100644 Binary files a/textures/erebusfullbright_glow.tga and b/textures/erebusfullbright_glow.tga differ diff --git a/textures/erebusfullbright_shirt.tga b/textures/erebusfullbright_shirt.tga index 9aee3c18ac..2c54e97831 100644 Binary files a/textures/erebusfullbright_shirt.tga and b/textures/erebusfullbright_shirt.tga differ diff --git a/textures/gakarmor_glow.tga b/textures/gakarmor_glow.tga index 946e6b5557..c956996a8a 100644 Binary files a/textures/gakarmor_glow.tga and b/textures/gakarmor_glow.tga differ diff --git a/textures/gakarmor_shirt.tga b/textures/gakarmor_shirt.tga deleted file mode 100644 index ce4b6d6d3f..0000000000 Binary files a/textures/gakarmor_shirt.tga and /dev/null differ diff --git a/textures/gakarmorfb_glow.tga b/textures/gakarmorfb_glow.tga index e506ce05fd..3e51900230 100644 Binary files a/textures/gakarmorfb_glow.tga and b/textures/gakarmorfb_glow.tga differ diff --git a/textures/gakarmorfb_shirt.tga b/textures/gakarmorfb_shirt.tga deleted file mode 100644 index ce4b6d6d3f..0000000000 Binary files a/textures/gakarmorfb_shirt.tga and /dev/null differ diff --git a/textures/gakfullbright_glow.tga b/textures/gakfullbright_glow.tga index edd50b1be4..9aee3c18ac 100644 Binary files a/textures/gakfullbright_glow.tga and b/textures/gakfullbright_glow.tga differ diff --git a/textures/gakfullbright_shirt.tga b/textures/gakfullbright_shirt.tga index 4f9d05336f..71b570f168 100644 Binary files a/textures/gakfullbright_shirt.tga and b/textures/gakfullbright_shirt.tga differ diff --git a/textures/ignis.tga b/textures/ignis.tga index 768ac88967..bcd9f66eb9 100644 Binary files a/textures/ignis.tga and b/textures/ignis.tga differ diff --git a/textures/ignis_glow.tga b/textures/ignis_glow.tga index c9eee49600..7bcace5b80 100644 Binary files a/textures/ignis_glow.tga and b/textures/ignis_glow.tga differ diff --git a/textures/ignisfullbright.tga b/textures/ignisfullbright.tga index 768ac88967..bcd9f66eb9 100644 Binary files a/textures/ignisfullbright.tga and b/textures/ignisfullbright.tga differ diff --git a/textures/ignisfullbright_glow.tga b/textures/ignisfullbright_glow.tga index a010bdf3e9..7bcace5b80 100644 Binary files a/textures/ignisfullbright_glow.tga and b/textures/ignisfullbright_glow.tga differ diff --git a/textures/ignisfullbright_shirt.tga b/textures/ignisfullbright_shirt.tga index 0a2f7fac55..f7fbf00817 100644 Binary files a/textures/ignisfullbright_shirt.tga and b/textures/ignisfullbright_shirt.tga differ diff --git a/textures/ignishead.tga b/textures/ignishead.tga index 096b943f39..c95d1635a2 100644 Binary files a/textures/ignishead.tga and b/textures/ignishead.tga differ diff --git a/textures/ignishead_glow.tga b/textures/ignishead_glow.tga index d23f7315bb..27aec27140 100644 Binary files a/textures/ignishead_glow.tga and b/textures/ignishead_glow.tga differ diff --git a/textures/ignisheadfb.tga b/textures/ignisheadfb.tga new file mode 100644 index 0000000000..5cb7c56e82 Binary files /dev/null and b/textures/ignisheadfb.tga differ diff --git a/textures/ignisheadfb_gloss.tga b/textures/ignisheadfb_gloss.tga new file mode 100644 index 0000000000..37bf376b67 Binary files /dev/null and b/textures/ignisheadfb_gloss.tga differ diff --git a/textures/ignisheadfb_glow.tga b/textures/ignisheadfb_glow.tga new file mode 100644 index 0000000000..27aec27140 Binary files /dev/null and b/textures/ignisheadfb_glow.tga differ diff --git a/textures/ignisheadfb_norm.tga b/textures/ignisheadfb_norm.tga new file mode 100644 index 0000000000..ec4b09519c Binary files /dev/null and b/textures/ignisheadfb_norm.tga differ diff --git a/textures/ignisheadfb_reflect.tga b/textures/ignisheadfb_reflect.tga new file mode 100644 index 0000000000..2f3fa9465c Binary files /dev/null and b/textures/ignisheadfb_reflect.tga differ diff --git a/textures/ignisheadfb_shirt.tga b/textures/ignisheadfb_shirt.tga new file mode 100644 index 0000000000..de4034f7b7 Binary files /dev/null and b/textures/ignisheadfb_shirt.tga differ diff --git a/textures/megaerebus.tga b/textures/megaerebus.tga new file mode 100644 index 0000000000..2ef83416e3 Binary files /dev/null and b/textures/megaerebus.tga differ diff --git a/textures/megaerebus_gloss.tga b/textures/megaerebus_gloss.tga new file mode 100644 index 0000000000..5004a75509 Binary files /dev/null and b/textures/megaerebus_gloss.tga differ diff --git a/textures/megaerebus_glow.tga b/textures/megaerebus_glow.tga new file mode 100644 index 0000000000..a91959d366 Binary files /dev/null and b/textures/megaerebus_glow.tga differ diff --git a/textures/megaerebus_norm.tga b/textures/megaerebus_norm.tga new file mode 100644 index 0000000000..007228b7e9 Binary files /dev/null and b/textures/megaerebus_norm.tga differ diff --git a/textures/megaerebus_reflect.tga b/textures/megaerebus_reflect.tga new file mode 100644 index 0000000000..a99f2d6721 Binary files /dev/null and b/textures/megaerebus_reflect.tga differ diff --git a/textures/nyxfullbright_glow.tga b/textures/nyxfullbright_glow.tga index ec01e22847..f4f00c6f97 100644 Binary files a/textures/nyxfullbright_glow.tga and b/textures/nyxfullbright_glow.tga differ diff --git a/textures/nyxfullbright_shirt.tga b/textures/nyxfullbright_shirt.tga index 9aee3c18ac..2c54e97831 100644 Binary files a/textures/nyxfullbright_shirt.tga and b/textures/nyxfullbright_shirt.tga differ diff --git a/textures/pyria_glow.tga b/textures/pyria_glow.tga index 53a46f3a80..d107395027 100644 Binary files a/textures/pyria_glow.tga and b/textures/pyria_glow.tga differ diff --git a/textures/pyria_shirt.tga b/textures/pyria_shirt.tga index 62ca44604f..e8e6a47acc 100644 Binary files a/textures/pyria_shirt.tga and b/textures/pyria_shirt.tga differ diff --git a/textures/pyriafullbright_glow.tga b/textures/pyriafullbright_glow.tga index ef6f686c6c..a4611f2859 100644 Binary files a/textures/pyriafullbright_glow.tga and b/textures/pyriafullbright_glow.tga differ diff --git a/textures/pyriafullbright_shirt.tga b/textures/pyriafullbright_shirt.tga index 62ca44604f..0e934d6464 100644 Binary files a/textures/pyriafullbright_shirt.tga and b/textures/pyriafullbright_shirt.tga differ diff --git a/textures/shadowhead_shirt.tga b/textures/shadowhead_shirt.tga index aa1f645787..648d900764 100644 Binary files a/textures/shadowhead_shirt.tga and b/textures/shadowhead_shirt.tga differ diff --git a/textures/shadowheadfb.tga b/textures/shadowheadfb.tga new file mode 100644 index 0000000000..29893e28eb Binary files /dev/null and b/textures/shadowheadfb.tga differ diff --git a/textures/shadowheadfb_gloss.tga b/textures/shadowheadfb_gloss.tga new file mode 100644 index 0000000000..2abb3f0bca Binary files /dev/null and b/textures/shadowheadfb_gloss.tga differ diff --git a/textures/shadowheadfb_glow.tga b/textures/shadowheadfb_glow.tga new file mode 100644 index 0000000000..1e69d82e7b Binary files /dev/null and b/textures/shadowheadfb_glow.tga differ diff --git a/textures/shadowheadfb_norm.tga b/textures/shadowheadfb_norm.tga new file mode 100644 index 0000000000..19dd82c13c Binary files /dev/null and b/textures/shadowheadfb_norm.tga differ diff --git a/textures/shadowheadfb_reflect.tga b/textures/shadowheadfb_reflect.tga new file mode 100644 index 0000000000..f22a578ffe Binary files /dev/null and b/textures/shadowheadfb_reflect.tga differ diff --git a/textures/shadowheadfb_shirt.tga b/textures/shadowheadfb_shirt.tga new file mode 100644 index 0000000000..f49ef02094 Binary files /dev/null and b/textures/shadowheadfb_shirt.tga differ diff --git a/textures/umbra_glow.tga b/textures/umbra_glow.tga index ee222f67a0..aeef8deaf4 100644 Binary files a/textures/umbra_glow.tga and b/textures/umbra_glow.tga differ diff --git a/textures/umbra_shirt.tga b/textures/umbra_shirt.tga index 8d04c364cc..2898c6917e 100644 Binary files a/textures/umbra_shirt.tga and b/textures/umbra_shirt.tga differ diff --git a/textures/umbrafullbright_glow.tga b/textures/umbrafullbright_glow.tga index 4924c2a988..1d32c01e51 100644 Binary files a/textures/umbrafullbright_glow.tga and b/textures/umbrafullbright_glow.tga differ diff --git a/textures/umbrafullbright_shirt.tga b/textures/umbrafullbright_shirt.tga index 8d04c364cc..7555385145 100644 Binary files a/textures/umbrafullbright_shirt.tga and b/textures/umbrafullbright_shirt.tga differ diff --git a/weapons.cfg b/weapons.cfg deleted file mode 100644 index 760337d53a..0000000000 --- a/weapons.cfg +++ /dev/null @@ -1,21 +0,0 @@ -// TODO: remove after 0.8.2. Default impulse commands for 0.8.1 servers -alias weapon_blaster "impulse 230" -alias weapon_shotgun "impulse 231" -alias weapon_machinegun "impulse 232" -alias weapon_mortar "impulse 233" -alias weapon_minelayer "impulse 234" -alias weapon_electro "impulse 235" -alias weapon_crylink "impulse 236" -alias weapon_vortex "impulse 237" -alias weapon_hagar "impulse 238" -alias weapon_devastator "impulse 239" -alias weapon_porto "impulse 240" -alias weapon_vaporizer "impulse 241" -alias weapon_hook "impulse 242" -alias weapon_hlac "impulse 243" -alias weapon_tuba "impulse 244" -alias weapon_rifle "impulse 245" -alias weapon_fireball "impulse 246" -alias weapon_seeker "impulse 247" -alias weapon_shockwave "impulse 248" -alias weapon_arc "impulse 249" diff --git a/weapons.cfg.sh b/weapons.cfg.sh deleted file mode 100755 index f02d43cf10..0000000000 --- a/weapons.cfg.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -