From: Mario Date: Thu, 27 Nov 2014 09:15:15 +0000 (+1100) Subject: Merge branch 'master' into sev/luma X-Git-Tag: xonotic-v0.8.1~144^2~19 X-Git-Url: https://git.xonotic.org/?a=commitdiff_plain;h=170df65904f147f37fae1c1f64aaad2c230854d2;hp=d33628152ed7369d8dd535dda2eb995e2f2447fe;p=xonotic%2Fxonotic-data.pk3dir.git Merge branch 'master' into sev/luma --- diff --git a/common.ast.po b/common.ast.po index 89e4680d3..bc99aa60a 100644 --- a/common.ast.po +++ b/common.ast.po @@ -4196,7 +4196,7 @@ msgid "Full item placement" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" +msgid "InstaGib only" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 @@ -4248,7 +4248,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" +msgid "InstaGib" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 @@ -6128,7 +6128,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.be.po b/common.be.po index afe2a535c..7f97286bf 100644 --- a/common.be.po +++ b/common.be.po @@ -4212,8 +4212,8 @@ msgid "Full item placement" msgstr "Са зброяй" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" -msgstr "Толькі MinstaGib" +msgid "InstaGib only" +msgstr "Толькі InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 msgid "Title:" @@ -4264,8 +4264,8 @@ msgstr "Ухіленне" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" -msgstr "MinstaGib" +msgid "InstaGib" +msgstr "InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 @@ -6147,7 +6147,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.bg.po b/common.bg.po index 34978b5fb..d363d0d4d 100644 --- a/common.bg.po +++ b/common.bg.po @@ -4196,7 +4196,7 @@ msgid "Full item placement" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" +msgid "InstaGib only" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 @@ -4248,7 +4248,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" +msgid "InstaGib" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 @@ -6128,7 +6128,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.ca.po b/common.ca.po index b47984f44..6297eaebd 100644 --- a/common.ca.po +++ b/common.ca.po @@ -4196,7 +4196,7 @@ msgid "Full item placement" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" +msgid "InstaGib only" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 @@ -4248,7 +4248,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" +msgid "InstaGib" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 @@ -6128,7 +6128,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.cs.po b/common.cs.po index 639a44085..f153765e6 100644 --- a/common.cs.po +++ b/common.cs.po @@ -4196,7 +4196,7 @@ msgid "Full item placement" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" +msgid "InstaGib only" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 @@ -4248,7 +4248,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" +msgid "InstaGib" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 @@ -6128,7 +6128,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.de.po b/common.de.po index b51d4170e..cb5a224fb 100644 --- a/common.de.po +++ b/common.de.po @@ -4332,8 +4332,8 @@ msgid "Full item placement" msgstr "Mit allen Items" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" -msgstr "Nur MinstaGib" +msgid "InstaGib only" +msgstr "Nur InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 msgid "Title:" @@ -4384,8 +4384,8 @@ msgstr "Ausweichen" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" -msgstr "MinstaGib" +msgid "InstaGib" +msgstr "InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 @@ -6268,8 +6268,8 @@ msgid "SLCAT^Overkill Mode" msgstr "SLCAT^Overkill Modus" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" -msgstr "SLCAT^MinstaGib Modus" +msgid "SLCAT^InstaGib Mode" +msgstr "SLCAT^InstaGib Modus" #: qcsrc/menu/xonotic/serverlist.c:156 msgid "SLCAT^Defrag Mode" diff --git a/common.el.po b/common.el.po index 6b830eab9..212df32ac 100644 --- a/common.el.po +++ b/common.el.po @@ -4202,7 +4202,7 @@ msgid "Full item placement" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" +msgid "InstaGib only" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 @@ -4254,7 +4254,7 @@ msgstr "Υπεκφυγή" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" +msgid "InstaGib" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 @@ -6134,7 +6134,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.es.po b/common.es.po index a3953b4a7..ac4675db8 100644 --- a/common.es.po +++ b/common.es.po @@ -4248,8 +4248,8 @@ msgid "Full item placement" msgstr "Con objetos" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" -msgstr "Sólo MinstaGib" +msgid "InstaGib only" +msgstr "Sólo InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 msgid "Title:" @@ -4300,8 +4300,8 @@ msgstr "Esquivar" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" -msgstr "MinstaGib" +msgid "InstaGib" +msgstr "InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 @@ -6185,7 +6185,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.fi.po b/common.fi.po index 17fb34727..70797fa56 100644 --- a/common.fi.po +++ b/common.fi.po @@ -4202,8 +4202,8 @@ msgid "Full item placement" msgstr "Esineiden täysi sijoittaminen" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" -msgstr "Vain MinstaGib" +msgid "InstaGib only" +msgstr "Vain InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 msgid "Title:" @@ -4254,8 +4254,8 @@ msgstr "Väistely" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" -msgstr "MinstaGib" +msgid "InstaGib" +msgstr "InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 @@ -6139,7 +6139,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.fr.po b/common.fr.po index a8909ffab..58ebba378 100644 --- a/common.fr.po +++ b/common.fr.po @@ -4362,8 +4362,8 @@ msgid "Full item placement" msgstr "Placement complet des objets" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" -msgstr "MinstaGib uniquement" +msgid "InstaGib only" +msgstr "InstaGib uniquement" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 msgid "Title:" @@ -4414,8 +4414,8 @@ msgstr "Esquives" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" -msgstr "MinstaGib" +msgid "InstaGib" +msgstr "InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 @@ -6300,8 +6300,8 @@ msgid "SLCAT^Overkill Mode" msgstr "Mode Overkill" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" -msgstr "Mode MinstaGib" +msgid "SLCAT^InstaGib Mode" +msgstr "Mode InstaGib" #: qcsrc/menu/xonotic/serverlist.c:156 msgid "SLCAT^Defrag Mode" diff --git a/common.hu.po b/common.hu.po index 14ab01f95..7ec54de9c 100644 --- a/common.hu.po +++ b/common.hu.po @@ -4244,8 +4244,8 @@ msgid "Full item placement" msgstr "Minden tárgy elhelyezése" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" -msgstr "Csak MinstaGib" +msgid "InstaGib only" +msgstr "Csak InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 msgid "Title:" @@ -4296,8 +4296,8 @@ msgstr "Félreugrás" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" -msgstr "MinstaGib" +msgid "InstaGib" +msgstr "InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 @@ -6180,7 +6180,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.it.po b/common.it.po index eba61119a..307211b42 100644 --- a/common.it.po +++ b/common.it.po @@ -4358,8 +4358,8 @@ msgid "Full item placement" msgstr "Posizionamento oggetti completo" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" -msgstr "Solo MinstaGib" +msgid "InstaGib only" +msgstr "Solo InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 msgid "Title:" @@ -4410,8 +4410,8 @@ msgstr "Schivamento" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" -msgstr "MinstaGib" +msgid "InstaGib" +msgstr "InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 @@ -6293,8 +6293,8 @@ msgid "SLCAT^Overkill Mode" msgstr "Modo Overkill" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" -msgstr "Modo Minstagib" +msgid "SLCAT^InstaGib Mode" +msgstr "Modo InstaGib" #: qcsrc/menu/xonotic/serverlist.c:156 msgid "SLCAT^Defrag Mode" diff --git a/common.mk.po b/common.mk.po index 75c6ecde7..982a31699 100644 --- a/common.mk.po +++ b/common.mk.po @@ -4196,7 +4196,7 @@ msgid "Full item placement" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" +msgid "InstaGib only" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 @@ -4248,7 +4248,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" +msgid "InstaGib" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 @@ -6128,7 +6128,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.nl.po b/common.nl.po index 1ebad855b..050613e74 100644 --- a/common.nl.po +++ b/common.nl.po @@ -4241,8 +4241,8 @@ msgid "Full item placement" msgstr "Volledige item distributie" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" -msgstr "Alleen MinstaGib" +msgid "InstaGib only" +msgstr "Alleen InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 msgid "Title:" @@ -4293,8 +4293,8 @@ msgstr "Ontwijken" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" -msgstr "MinstaGib" +msgid "InstaGib" +msgstr "InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 @@ -6177,7 +6177,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.pl.po b/common.pl.po index 17e9eac98..21372925c 100644 --- a/common.pl.po +++ b/common.pl.po @@ -4198,7 +4198,7 @@ msgid "Full item placement" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" +msgid "InstaGib only" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 @@ -4250,7 +4250,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" +msgid "InstaGib" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 @@ -6130,7 +6130,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.pot b/common.pot index e2c6d70ac..426fb1f32 100644 --- a/common.pot +++ b/common.pot @@ -4195,7 +4195,7 @@ msgid "Full item placement" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" +msgid "InstaGib only" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 @@ -4247,7 +4247,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" +msgid "InstaGib" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 @@ -6127,7 +6127,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.pt.po b/common.pt.po index 94d564e46..6e3bbdbf1 100644 --- a/common.pt.po +++ b/common.pt.po @@ -4202,8 +4202,8 @@ msgid "Full item placement" msgstr "Colocação total dos items" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" -msgstr "Apenas MinstaGib" +msgid "InstaGib only" +msgstr "Apenas InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 msgid "Title:" @@ -4254,8 +4254,8 @@ msgstr "Desvio" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" -msgstr "MinstaGib" +msgid "InstaGib" +msgstr "InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 @@ -6138,7 +6138,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.ro.po b/common.ro.po index 361188773..b87bc6378 100644 --- a/common.ro.po +++ b/common.ro.po @@ -4206,8 +4206,8 @@ msgid "Full item placement" msgstr "Plasare obiecte" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" -msgstr "Numai MinstaGib" +msgid "InstaGib only" +msgstr "Numai InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 msgid "Title:" @@ -4258,8 +4258,8 @@ msgstr "Satiruta laterala" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" -msgstr "MinstaGib" +msgid "InstaGib" +msgstr "InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 @@ -6142,7 +6142,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.ru.po b/common.ru.po index 171d2db28..dfb8e7672 100644 --- a/common.ru.po +++ b/common.ru.po @@ -4304,8 +4304,8 @@ msgid "Full item placement" msgstr "С оружием" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" -msgstr "Только MinstaGib" +msgid "InstaGib only" +msgstr "Только InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 msgid "Title:" @@ -4356,8 +4356,8 @@ msgstr "Уклонение" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" -msgstr "MinstaGib" +msgid "InstaGib" +msgstr "InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 @@ -6240,8 +6240,8 @@ msgid "SLCAT^Overkill Mode" msgstr "Режим Overkill" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" -msgstr "Режим MinstaGib" +msgid "SLCAT^InstaGib Mode" +msgstr "Режим InstaGib" #: qcsrc/menu/xonotic/serverlist.c:156 msgid "SLCAT^Defrag Mode" diff --git a/common.sr.po b/common.sr.po index 1e9faed0c..9a022e15e 100644 --- a/common.sr.po +++ b/common.sr.po @@ -4213,7 +4213,7 @@ msgid "Full item placement" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" +msgid "InstaGib only" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 @@ -4265,7 +4265,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" +msgid "InstaGib" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 @@ -6145,7 +6145,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.sv.po b/common.sv.po index 677f55f77..1e45ea85a 100644 --- a/common.sv.po +++ b/common.sv.po @@ -4204,8 +4204,8 @@ msgid "Full item placement" msgstr "Fullständing sakplacering" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" -msgstr "Endast MinstaGib" +msgid "InstaGib only" +msgstr "Endast InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 msgid "Title:" @@ -4256,8 +4256,8 @@ msgstr "Undvika" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" -msgstr "MinstaGib" +msgid "InstaGib" +msgstr "InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 @@ -6136,7 +6136,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.uk.po b/common.uk.po index db7e4dfed..1b26d19a9 100644 --- a/common.uk.po +++ b/common.uk.po @@ -4261,8 +4261,8 @@ msgid "Full item placement" msgstr "Вся зброя" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" -msgstr "Тільки MinstaGib" +msgid "InstaGib only" +msgstr "Тільки InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 msgid "Title:" @@ -4313,8 +4313,8 @@ msgstr "Ухилення" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" -msgstr "MinstaGib" +msgid "InstaGib" +msgstr "InstaGib" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:208 @@ -6197,7 +6197,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.zh_CN.po b/common.zh_CN.po index dd2ecb619..63a5a61db 100644 --- a/common.zh_CN.po +++ b/common.zh_CN.po @@ -4198,7 +4198,7 @@ msgid "Full item placement" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" +msgid "InstaGib only" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 @@ -4250,7 +4250,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" +msgid "InstaGib" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 @@ -6130,7 +6130,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/common.zh_TW.po b/common.zh_TW.po index 079411cc6..befc34c49 100644 --- a/common.zh_TW.po +++ b/common.zh_TW.po @@ -4196,7 +4196,7 @@ msgid "Full item placement" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:49 -msgid "MinstaGib only" +msgid "InstaGib only" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c:81 @@ -4248,7 +4248,7 @@ msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:70 #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:254 -msgid "MinstaGib" +msgid "InstaGib" msgstr "" #: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c:72 @@ -6128,7 +6128,7 @@ msgid "SLCAT^Overkill Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:155 -msgid "SLCAT^MinstaGib Mode" +msgid "SLCAT^InstaGib Mode" msgstr "" #: qcsrc/menu/xonotic/serverlist.c:156 diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 18af3e895..7b66c5015 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -220,8 +220,11 @@ set sv_ready_restart 0 "if set to 1 allow a map to be restarted once all players set sv_ready_restart_after_countdown 0 "if set to 1 the players and map items are reset after the countdown ended, otherwise they're reset already at the beginning of the countdown" set sv_ready_restart_repeatable 0 "allows the players to restart the game as often as needed" -seta cl_hitsound 1 "play a hit notifier sound when you have hit an enemy" +seta cl_hitsound 1 "play a hit notifier sound when you have hit an enemy, 1: same pitch 2: increase pitch with more damage 3: decrease pitch with more damage" set cl_hitsound_antispam_time 0.05 "don't play the hitsound more often than this" +seta cl_hitsound_min_pitch 0.75 "minimum pitch of hit sound" +seta cl_hitsound_max_pitch 1.5 "maximum pitch of hit sound" +seta cl_hitsound_nom_damage 25 "damage amount at which hitsound bases pitch off" seta cl_eventchase_death 1 "camera goes into 3rd person mode when the player is dead" seta cl_eventchase_nexball 1 "camera goes into 3rd person mode when in nexball game-mode" @@ -1014,7 +1017,7 @@ seta menu_slist_categories_CAT_SERVERS_override "CAT_NORMAL" seta menu_slist_categories_CAT_XPM_override "CAT_NORMAL" seta menu_slist_categories_CAT_MODIFIED_override "" seta menu_slist_categories_CAT_OVERKILL_override "" -seta menu_slist_categories_CAT_MINSTAGIB_override "" +seta menu_slist_categories_CAT_INSTAGIB_override "" seta menu_slist_categories_CAT_DEFRAG_override "" seta menu_weaponarena "" diff --git a/effects-high.cfg b/effects-high.cfg index 456061536..a514ce5cb 100644 --- a/effects-high.cfg +++ b/effects-high.cfg @@ -1,10 +1,11 @@ cl_decals 1 cl_decals_models 0 cl_decals_fadetime 4 -cl_particles_quality 1 +cl_particles 1 +cl_particles_quality 1.0 cl_damageeffect 1 cl_spawn_point_particles 1 -cl_playerdetailreduction 4 +cl_playerdetailreduction 4.0 gl_flashblend 0 gl_picmip -1 mod_q3bsp_nolightmaps 0 @@ -15,7 +16,7 @@ hud_postprocessing_maxbluralpha 0.5 hud_powerup 0 r_depthfirst 2 r_drawdecals_drawdistance 500 -r_drawparticles_drawdistance 2000 +r_drawparticles_drawdistance 1500 r_glsl_deluxemapping 1 r_glsl_offsetmapping 0 r_glsl_offsetmapping_reliefmapping 0 diff --git a/effects-low.cfg b/effects-low.cfg index d98ba526d..b7e9a98a3 100644 --- a/effects-low.cfg +++ b/effects-low.cfg @@ -1,6 +1,7 @@ cl_decals 1 cl_decals_models 0 cl_decals_fadetime 2 +cl_particles 1 cl_particles_quality 0.4 cl_damageeffect 0 cl_spawn_point_particles 0 diff --git a/effects-med.cfg b/effects-med.cfg index 58191f266..66eed5aa5 100644 --- a/effects-med.cfg +++ b/effects-med.cfg @@ -1,7 +1,8 @@ cl_decals 1 cl_decals_models 0 cl_decals_fadetime 2 -cl_particles_quality 1 +cl_particles 1 +cl_particles_quality 0.8 cl_damageeffect 0 cl_spawn_point_particles 0 cl_playerdetailreduction 4 @@ -15,7 +16,7 @@ hud_postprocessing_maxbluralpha 0 hud_powerup 0 r_depthfirst 0 r_drawdecals_drawdistance 300 -r_drawparticles_drawdistance 1000 +r_drawparticles_drawdistance 750 r_glsl_deluxemapping 0 r_glsl_offsetmapping 0 r_glsl_offsetmapping_reliefmapping 0 diff --git a/effects-normal.cfg b/effects-normal.cfg index dd8cce9a7..63dcd134a 100644 --- a/effects-normal.cfg +++ b/effects-normal.cfg @@ -1,7 +1,8 @@ cl_decals 1 cl_decals_models 0 cl_decals_fadetime 2 -cl_particles_quality 1 +cl_particles 1 +cl_particles_quality 1.0 cl_damageeffect 1 cl_spawn_point_particles 1 cl_playerdetailreduction 4 diff --git a/effects-omg.cfg b/effects-omg.cfg index 7c39fbbef..9018ee2c9 100644 --- a/effects-omg.cfg +++ b/effects-omg.cfg @@ -1,6 +1,7 @@ cl_decals 0 cl_decals_models 0 cl_decals_fadetime 2 +cl_particles 1 cl_particles_quality 0.4 cl_damageeffect 0 cl_spawn_point_particles 0 diff --git a/effects-ultimate.cfg b/effects-ultimate.cfg index 6897ccc16..0cf3a899c 100644 --- a/effects-ultimate.cfg +++ b/effects-ultimate.cfg @@ -1,7 +1,8 @@ cl_decals 1 cl_decals_models 1 cl_decals_fadetime 10 -cl_particles_quality 1 +cl_particles 1 +cl_particles_quality 1.0 cl_damageeffect 2 cl_spawn_point_particles 1 cl_playerdetailreduction 0 @@ -15,7 +16,7 @@ hud_postprocessing_maxbluralpha 0.5 hud_powerup 0.5 r_depthfirst 2 r_drawdecals_drawdistance 500 -r_drawparticles_drawdistance 2000 +r_drawparticles_drawdistance 3000 r_glsl_deluxemapping 1 r_glsl_offsetmapping 1 r_glsl_offsetmapping_reliefmapping 1 diff --git a/effects-ultra.cfg b/effects-ultra.cfg index d530f03b8..5909f3b83 100644 --- a/effects-ultra.cfg +++ b/effects-ultra.cfg @@ -1,10 +1,11 @@ cl_decals 1 cl_decals_models 0 cl_decals_fadetime 10 -cl_particles_quality 1 -cl_damageeffect 1 +cl_particles 1 +cl_particles_quality 1.0 +cl_damageeffect 2 cl_spawn_point_particles 1 -cl_playerdetailreduction 2 +cl_playerdetailreduction 0 gl_flashblend 0 gl_picmip -1 mod_q3bsp_nolightmaps 0 diff --git a/hook-firing_swap.cfg b/hook-firing_swap.cfg index 4ed138120..919d2ead2 100644 --- a/hook-firing_swap.cfg +++ b/hook-firing_swap.cfg @@ -9,18 +9,18 @@ // after exec'ing them all from your autoexec.cfg // Set the cvars for each gun -seta cl_swapattacks_laser 0 +seta cl_swapattacks_blaster 0 seta cl_swapattacks_shotgun 0 -seta cl_swapattacks_uzi 0 -seta cl_swapattacks_grenadelauncher 0 +seta cl_swapattacks_machinegun 0 +seta cl_swapattacks_mortar 0 seta cl_swapattacks_minelayer 0 seta cl_swapattacks_electro 0 seta cl_swapattacks_crylink 0 -seta cl_swapattacks_nex 0 +seta cl_swapattacks_vortex 0 seta cl_swapattacks_hagar 0 -seta cl_swapattacks_rocketlauncher 0 +seta cl_swapattacks_devastator 0 seta cl_swapattacks_porto 0 -seta cl_swapattacks_minstanex 0 +seta cl_swapattacks_vaporizer 0 seta cl_swapattacks_hook 0 seta cl_swapattacks_hlac 0 seta cl_swapattacks_tuba 0 @@ -28,6 +28,14 @@ seta cl_swapattacks_rifle 0 seta cl_swapattacks_fireball 0 seta cl_swapattacks_seeker 0 +// Backwards compatibility with 0.7.0 +alias cl_swapattacks_laser $cl_swapattacks_blaster +alias cl_swapattacks_rocketlauncher $cl_swapattacks_devastator +alias cl_swapattacks_uzi $cl_swapattacks_machinegun +alias cl_swapattacks_grenadelauncher $cl_swapattacks_mortar +alias cl_swapattacks_minstanex $cl_swapattacks_vaporizer +alias cl_swapattacks_nex $cl_swapattacks_vortex + // This part of the code is necessary to keep us firing when we switch weapons while holding a fire button pressed // Also updates the keys before firing, so we don't have to switch to another weapon and back to apply the changes set fire_last 0 @@ -48,7 +56,7 @@ alias firing_decision_1 "alias +checkattack +attack2; alias -checkattack -attack alias firing_swap_apply "firing_decision_${$1}" alias firing_swap "firing_swap_apply cl_swapattacks_$1; set firing_lastweapon cl_swapattacks_$1; firing_switch" -// Not correct, but prevents firing from braking after executing the script until switching weapons +// Not correct, but prevents firing from breaking after executing the script until switching weapons alias +fire +attack alias -fire -attack alias +fire2 +attack2 diff --git a/models/player/erebus.iqm_0.txt b/models/player/erebus.iqm_0.txt index 3b8198a6d..103276d0b 100644 --- a/models/player/erebus.iqm_0.txt +++ b/models/player/erebus.iqm_0.txt @@ -3,6 +3,7 @@ species human sex Male weight 105 age 26 +description Heavyweight Xonotic Soldier bone_upperbody spine2 bone_aim0 0.25 spine2 bone_aim1 0.4 spine4 @@ -10,5 +11,3 @@ bone_aim2 0.2 upperarm_L bone_aim3 0.35 bip01 r hand bone_weapon bip01 r hand fixbone 1 - -Heavyweight Xonotic Solider diff --git a/models/player/gak.iqm_0.txt b/models/player/gak.iqm_0.txt index 2f864a686..27b579027 100644 --- a/models/player/gak.iqm_0.txt +++ b/models/player/gak.iqm_0.txt @@ -3,11 +3,10 @@ species alien sex Male weight 85 age 16 +description Lightweight Xonotic Soldier bone_upperbody spine2 bone_aim0 0.25 spine2 bone_aim1 0.4 spine4 bone_aim2 0.35 bip01 r hand bone_weapon bip01 r hand fixbone 1 - -Lightweight Xonotic Solider diff --git a/models/player/gakarmored.iqm_0.txt b/models/player/gakarmored.iqm_0.txt index d561d6480..46977b885 100644 --- a/models/player/gakarmored.iqm_0.txt +++ b/models/player/gakarmored.iqm_0.txt @@ -3,11 +3,10 @@ species alien sex Male weight 90 age 20 +description Heavyweight Xonotic Soldier bone_upperbody spine2 bone_aim0 0.25 spine2 bone_aim1 0.4 spine4 bone_aim2 0.35 bip01 r hand bone_weapon bip01 r hand fixbone 1 - -Heavyweight Xonotic Solider diff --git a/models/player/gakmasked.iqm_0.txt b/models/player/gakmasked.iqm_0.txt index 10aeee8e1..44843b705 100644 --- a/models/player/gakmasked.iqm_0.txt +++ b/models/player/gakmasked.iqm_0.txt @@ -3,11 +3,10 @@ species alien sex Male weight 87 age 18 +description Mediumweight Xonotic Soldier bone_upperbody spine2 bone_aim0 0.25 spine2 bone_aim1 0.4 spine4 bone_aim2 0.35 bip01 r hand bone_weapon bip01 r hand fixbone 1 - -Mediumweight Xonotic Solider diff --git a/models/player/ignis.iqm_0.txt b/models/player/ignis.iqm_0.txt index 6744e652a..981562cfc 100644 --- a/models/player/ignis.iqm_0.txt +++ b/models/player/ignis.iqm_0.txt @@ -3,6 +3,7 @@ species human sex Male weight 88 age 31 +description Heavyweight Xonotic Soldier bone_upperbody spine2 bone_aim0 0.25 spine2 bone_aim1 0.4 spine4 @@ -10,5 +11,3 @@ bone_aim2 0.2 upperarm_L bone_aim3 0.35 bip01 r hand bone_weapon bip01 r hand fixbone 1 - -Heavyweight Xonotic Solider diff --git a/models/player/ignishalfmasked.iqm_0.txt b/models/player/ignishalfmasked.iqm_0.txt index c956630f3..01c99adf0 100644 --- a/models/player/ignishalfmasked.iqm_0.txt +++ b/models/player/ignishalfmasked.iqm_0.txt @@ -3,6 +3,7 @@ species human sex Male weight 90 age 31 +description Heavyweight Xonotic Soldier bone_upperbody spine2 bone_aim0 0.25 spine2 bone_aim1 0.4 spine4 @@ -10,5 +11,3 @@ bone_aim2 0.2 upperarm_L bone_aim3 0.35 bip01 r hand bone_weapon bip01 r hand fixbone 1 - -Heavyweight Xonotic Solider diff --git a/models/player/ignismasked.iqm_0.txt b/models/player/ignismasked.iqm_0.txt index e89ead1da..2610d2b92 100644 --- a/models/player/ignismasked.iqm_0.txt +++ b/models/player/ignismasked.iqm_0.txt @@ -3,6 +3,7 @@ species human sex Male weight 92 age 31 +description Heavyweight Xonotic Soldier bone_upperbody spine2 bone_aim0 0.25 spine2 bone_aim1 0.4 spine4 @@ -10,5 +11,3 @@ bone_aim2 0.2 upperarm_L bone_aim3 0.35 bip01 r hand bone_weapon bip01 r hand fixbone 1 - -Heavyweight Xonotic Solider diff --git a/models/player/megaerebus.iqm_0.txt b/models/player/megaerebus.iqm_0.txt index c2d811779..f75a15fb8 100644 --- a/models/player/megaerebus.iqm_0.txt +++ b/models/player/megaerebus.iqm_0.txt @@ -3,6 +3,7 @@ species human sex Male weight 210 age 26 +description Heavyweight Xonotic Soldier bone_upperbody spine2 bone_aim0 0.25 spine2 bone_aim1 0.4 spine4 @@ -10,5 +11,3 @@ bone_aim2 0.2 upperarm_L bone_aim3 0.35 bip01 r hand bone_weapon bip01 r hand fixbone 1 - -Heavyweight Xonotic Solider diff --git a/models/player/nyx.iqm_0.txt b/models/player/nyx.iqm_0.txt index 50f41f35e..ba14c232a 100644 --- a/models/player/nyx.iqm_0.txt +++ b/models/player/nyx.iqm_0.txt @@ -3,11 +3,10 @@ species human sex Female weight 100 age 24 +description Heavyweight Xonotic Soldier bone_upperbody spine2 bone_aim0 0.25 spine2 bone_aim1 0.4 spine4 bone_aim2 0.35 bip01 r hand bone_weapon bip01 r hand fixbone 1 - -Heavyweight Xonotic Soldier diff --git a/models/player/pyria.iqm_0.txt b/models/player/pyria.iqm_0.txt index 489571a91..e8a6c9044 100644 --- a/models/player/pyria.iqm_0.txt +++ b/models/player/pyria.iqm_0.txt @@ -3,11 +3,10 @@ species human sex Female weight 57 age 53 +description Necro Warrior bone_upperbody spine2 bone_aim0 0.25 spine2 bone_aim1 0.4 spine4 bone_aim2 0.35 bip01 r hand bone_weapon bip01 r hand fixbone 1 - -Necro Warrior diff --git a/models/player/seraphina.iqm_0.txt b/models/player/seraphina.iqm_0.txt index fc5a62b24..f7b07b0e6 100644 --- a/models/player/seraphina.iqm_0.txt +++ b/models/player/seraphina.iqm_0.txt @@ -3,11 +3,10 @@ species human sex Female weight 89 age 31 +description Heavyweight Xonotic Soldier bone_upperbody spine2 bone_aim0 0.25 spine2 bone_aim1 0.4 spine4 bone_aim2 0.35 bip01 r hand bone_weapon bip01 r hand fixbone 1 - -Heavyweight Xonotic Solider diff --git a/models/player/seraphinamasked.iqm_0.txt b/models/player/seraphinamasked.iqm_0.txt index 2a48e8d4e..c997d01f3 100644 --- a/models/player/seraphinamasked.iqm_0.txt +++ b/models/player/seraphinamasked.iqm_0.txt @@ -3,11 +3,10 @@ species human sex Female weight 90 age 31 +description Heavyweight Xonotic Soldier bone_upperbody spine2 bone_aim0 0.25 spine2 bone_aim1 0.4 spine4 bone_aim2 0.35 bip01 r hand bone_weapon bip01 r hand fixbone 1 - -Heavyweight Xonotic Solider diff --git a/models/player/umbra.iqm_0.txt b/models/player/umbra.iqm_0.txt index c5933c1ab..25ce2d07c 100644 --- a/models/player/umbra.iqm_0.txt +++ b/models/player/umbra.iqm_0.txt @@ -3,11 +3,10 @@ species human sex Female weight 61 age 25 +description Lightweight Xonotic Soldier bone_upperbody spine2 bone_aim0 0.25 spine2 bone_aim1 0.4 spine4 bone_aim2 0.35 bip01 r hand bone_weapon bip01 r hand fixbone 1 - -Lightweight Xonotic Solider diff --git a/models/weapons/g_arc_simple.iqm b/models/weapons/g_arc_simple.iqm new file mode 100644 index 000000000..a5cc3e602 Binary files /dev/null and b/models/weapons/g_arc_simple.iqm differ diff --git a/models/weapons/g_arc_simple.iqm_0.skin b/models/weapons/g_arc_simple.iqm_0.skin new file mode 100644 index 000000000..df43c619f --- /dev/null +++ b/models/weapons/g_arc_simple.iqm_0.skin @@ -0,0 +1 @@ +Plane,g_arc_simple \ No newline at end of file diff --git a/models/weapons/g_arc_simple.tga b/models/weapons/g_arc_simple.tga new file mode 100644 index 000000000..2e9400803 Binary files /dev/null and b/models/weapons/g_arc_simple.tga differ diff --git a/models/weapons/g_campingrifle_simple.iqm b/models/weapons/g_campingrifle_simple.iqm new file mode 100644 index 000000000..a5cc3e602 Binary files /dev/null and b/models/weapons/g_campingrifle_simple.iqm differ diff --git a/models/weapons/g_campingrifle_simple.iqm_0.skin b/models/weapons/g_campingrifle_simple.iqm_0.skin new file mode 100644 index 000000000..6b2726f49 --- /dev/null +++ b/models/weapons/g_campingrifle_simple.iqm_0.skin @@ -0,0 +1 @@ +Plane,g_campingrifle_simple \ No newline at end of file diff --git a/models/weapons/g_campingrifle_simple.tga b/models/weapons/g_campingrifle_simple.tga new file mode 100644 index 000000000..2a9c44969 Binary files /dev/null and b/models/weapons/g_campingrifle_simple.tga differ diff --git a/models/weapons/g_crylink_simple.tga b/models/weapons/g_crylink_simple.tga index f4054b7be..0bbdbc7bf 100644 Binary files a/models/weapons/g_crylink_simple.tga and b/models/weapons/g_crylink_simple.tga differ diff --git a/models/weapons/g_electro_simple.tga b/models/weapons/g_electro_simple.tga index b523c722e..02c67de75 100644 Binary files a/models/weapons/g_electro_simple.tga and b/models/weapons/g_electro_simple.tga differ diff --git a/models/weapons/g_fireball_simple.iqm b/models/weapons/g_fireball_simple.iqm new file mode 100644 index 000000000..a5cc3e602 Binary files /dev/null and b/models/weapons/g_fireball_simple.iqm differ diff --git a/models/weapons/g_fireball_simple.iqm_0.skin b/models/weapons/g_fireball_simple.iqm_0.skin new file mode 100644 index 000000000..cceb6a697 --- /dev/null +++ b/models/weapons/g_fireball_simple.iqm_0.skin @@ -0,0 +1 @@ +Plane,g_fireball_simple \ No newline at end of file diff --git a/models/weapons/g_fireball_simple.tga b/models/weapons/g_fireball_simple.tga new file mode 100644 index 000000000..2632b7640 Binary files /dev/null and b/models/weapons/g_fireball_simple.tga differ diff --git a/models/weapons/g_gl_simple.tga b/models/weapons/g_gl_simple.tga index e138aa42e..114c6f25f 100644 Binary files a/models/weapons/g_gl_simple.tga and b/models/weapons/g_gl_simple.tga differ diff --git a/models/weapons/g_hagar_simple.tga b/models/weapons/g_hagar_simple.tga index 4c82e4bee..fb99dea73 100644 Binary files a/models/weapons/g_hagar_simple.tga and b/models/weapons/g_hagar_simple.tga differ diff --git a/models/weapons/g_hlac_simple.iqm b/models/weapons/g_hlac_simple.iqm new file mode 100644 index 000000000..a5cc3e602 Binary files /dev/null and b/models/weapons/g_hlac_simple.iqm differ diff --git a/models/weapons/g_hlac_simple.iqm_0.skin b/models/weapons/g_hlac_simple.iqm_0.skin new file mode 100644 index 000000000..020dcc12a --- /dev/null +++ b/models/weapons/g_hlac_simple.iqm_0.skin @@ -0,0 +1 @@ +Plane,g_hlac_simple \ No newline at end of file diff --git a/models/weapons/g_hlac_simple.tga b/models/weapons/g_hlac_simple.tga new file mode 100644 index 000000000..6d2302c21 Binary files /dev/null and b/models/weapons/g_hlac_simple.tga differ diff --git a/models/weapons/g_hookgun_simple.iqm b/models/weapons/g_hookgun_simple.iqm new file mode 100644 index 000000000..a5cc3e602 Binary files /dev/null and b/models/weapons/g_hookgun_simple.iqm differ diff --git a/models/weapons/g_hookgun_simple.iqm_0.skin b/models/weapons/g_hookgun_simple.iqm_0.skin new file mode 100644 index 000000000..2c8bd5fff --- /dev/null +++ b/models/weapons/g_hookgun_simple.iqm_0.skin @@ -0,0 +1 @@ +Plane,g_hookgun_simple \ No newline at end of file diff --git a/models/weapons/g_hookgun_simple.tga b/models/weapons/g_hookgun_simple.tga new file mode 100644 index 000000000..be44b817f Binary files /dev/null and b/models/weapons/g_hookgun_simple.tga differ diff --git a/models/weapons/g_laser_simple.iqm b/models/weapons/g_laser_simple.iqm new file mode 100644 index 000000000..a5cc3e602 Binary files /dev/null and b/models/weapons/g_laser_simple.iqm differ diff --git a/models/weapons/g_laser_simple.iqm_0.skin b/models/weapons/g_laser_simple.iqm_0.skin new file mode 100644 index 000000000..02e24bc1e --- /dev/null +++ b/models/weapons/g_laser_simple.iqm_0.skin @@ -0,0 +1 @@ +Plane,g_laser_simple \ No newline at end of file diff --git a/models/weapons/g_laser_simple.tga b/models/weapons/g_laser_simple.tga new file mode 100644 index 000000000..66223a342 Binary files /dev/null and b/models/weapons/g_laser_simple.tga differ diff --git a/models/weapons/g_minelayer_simple.iqm b/models/weapons/g_minelayer_simple.iqm new file mode 100644 index 000000000..a5cc3e602 Binary files /dev/null and b/models/weapons/g_minelayer_simple.iqm differ diff --git a/models/weapons/g_minelayer_simple.iqm_0.skin b/models/weapons/g_minelayer_simple.iqm_0.skin new file mode 100644 index 000000000..f9d4b61a7 --- /dev/null +++ b/models/weapons/g_minelayer_simple.iqm_0.skin @@ -0,0 +1 @@ +Plane,g_minelayer_simple \ No newline at end of file diff --git a/models/weapons/g_minelayer_simple.tga b/models/weapons/g_minelayer_simple.tga new file mode 100644 index 000000000..dfba264e4 Binary files /dev/null and b/models/weapons/g_minelayer_simple.tga differ diff --git a/models/weapons/g_minstanex_simple.iqm b/models/weapons/g_minstanex_simple.iqm new file mode 100644 index 000000000..a5cc3e602 Binary files /dev/null and b/models/weapons/g_minstanex_simple.iqm differ diff --git a/models/weapons/g_minstanex_simple.iqm_0.skin b/models/weapons/g_minstanex_simple.iqm_0.skin new file mode 100644 index 000000000..3a255b4aa --- /dev/null +++ b/models/weapons/g_minstanex_simple.iqm_0.skin @@ -0,0 +1 @@ +Plane,g_minstanex_simple \ No newline at end of file diff --git a/models/weapons/g_minstanex_simple.tga b/models/weapons/g_minstanex_simple.tga new file mode 100644 index 000000000..68bf31157 Binary files /dev/null and b/models/weapons/g_minstanex_simple.tga differ diff --git a/models/weapons/g_nex_simple.tga b/models/weapons/g_nex_simple.tga index 27c984f8a..a254e962d 100644 Binary files a/models/weapons/g_nex_simple.tga and b/models/weapons/g_nex_simple.tga differ diff --git a/models/weapons/g_porto_simple.iqm b/models/weapons/g_porto_simple.iqm new file mode 100644 index 000000000..a5cc3e602 Binary files /dev/null and b/models/weapons/g_porto_simple.iqm differ diff --git a/models/weapons/g_porto_simple.iqm_0.skin b/models/weapons/g_porto_simple.iqm_0.skin new file mode 100644 index 000000000..944e14a95 --- /dev/null +++ b/models/weapons/g_porto_simple.iqm_0.skin @@ -0,0 +1 @@ +Plane,g_porto_simple \ No newline at end of file diff --git a/models/weapons/g_porto_simple.tga b/models/weapons/g_porto_simple.tga new file mode 100644 index 000000000..aa6f6cd9b Binary files /dev/null and b/models/weapons/g_porto_simple.tga differ diff --git a/models/weapons/g_rl_simple.tga b/models/weapons/g_rl_simple.tga index d65fa8788..2ac19c8f5 100644 Binary files a/models/weapons/g_rl_simple.tga and b/models/weapons/g_rl_simple.tga differ diff --git a/models/weapons/g_seeker_simple.iqm b/models/weapons/g_seeker_simple.iqm new file mode 100644 index 000000000..a5cc3e602 Binary files /dev/null and b/models/weapons/g_seeker_simple.iqm differ diff --git a/models/weapons/g_seeker_simple.iqm_0.skin b/models/weapons/g_seeker_simple.iqm_0.skin new file mode 100644 index 000000000..5123515ae --- /dev/null +++ b/models/weapons/g_seeker_simple.iqm_0.skin @@ -0,0 +1 @@ +Plane,g_seeker_simple \ No newline at end of file diff --git a/models/weapons/g_seeker_simple.tga b/models/weapons/g_seeker_simple.tga new file mode 100644 index 000000000..322ee53fe Binary files /dev/null and b/models/weapons/g_seeker_simple.tga differ diff --git a/models/weapons/g_shotgun_simple.tga b/models/weapons/g_shotgun_simple.tga index 37da2f862..3c120c89a 100644 Binary files a/models/weapons/g_shotgun_simple.tga and b/models/weapons/g_shotgun_simple.tga differ diff --git a/models/weapons/g_tuba_simple.iqm b/models/weapons/g_tuba_simple.iqm new file mode 100644 index 000000000..a5cc3e602 Binary files /dev/null and b/models/weapons/g_tuba_simple.iqm differ diff --git a/models/weapons/g_tuba_simple.iqm_0.skin b/models/weapons/g_tuba_simple.iqm_0.skin new file mode 100644 index 000000000..3fd8bd8de --- /dev/null +++ b/models/weapons/g_tuba_simple.iqm_0.skin @@ -0,0 +1 @@ +Plane,g_tuba_simple \ No newline at end of file diff --git a/models/weapons/g_tuba_simple.tga b/models/weapons/g_tuba_simple.tga new file mode 100644 index 000000000..8af65e06f Binary files /dev/null and b/models/weapons/g_tuba_simple.tga differ diff --git a/models/weapons/g_uzi_simple.tga b/models/weapons/g_uzi_simple.tga index d9b5df404..55d68cd93 100644 Binary files a/models/weapons/g_uzi_simple.tga and b/models/weapons/g_uzi_simple.tga differ diff --git a/models/weapons/make-sprites.sh b/models/weapons/make-sprites.sh new file mode 100755 index 000000000..50f3fc672 --- /dev/null +++ b/models/weapons/make-sprites.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +baseline=20 + +sprite() +{ + name=$1 + text=$(echo $2) # Handle newlines + color=$3 + + echo $name + + # Text + exec {FD}< <(convert \ + -size 185x120 \ + -background transparent \ + -fill "#$color" \ + -font BigNoodleTitling \ + -interline-spacing -15 \ + -gravity south \ + label:"$text" \ + -trim \ + png:-) + itext=$FD + + # Rectangles + + # Thick + xa1=34 + xa2=$((xa1+185-1)) + ya1=174 + ya2=$((ya1+37-1)) + + # Thin + xb1=34 + xb2=$((xb1+185-1)) + yb1=224 + yb2=$((yb1+15-1)) + + exec {FD}< <(convert \ + -size 256x256 \ + -background transparent \ + -fill "#$color" \ + xc:none \ + -draw "rectangle $xa1,$ya1 $xa2,$ya2" \ + -draw "rectangle $xb1,$yb1 $xb2,$yb2" \ + png:-) + irects=$FD + + # Join + + composite \ + -gravity south \ + -geometry -2+$((82+$baseline)) \ + -compress RLE \ + png:fd:$itext png:fd:$irects g_${name}_simple.tga +} + +# grep '* color' ../../qcsrc/common/weapons/w_*.qc | awk '{ print $1 " \t" $4 " " $5 " " $6 }' +# def h(r,g,b): return '#{:02x}{:02x}{:02x}'.format(int(round(r*255)),int(round(g*255)),int(round(b*255))) +sprite arc "Arc" ffffff # White +sprite laser "Blaster" ff8080 # Vivid Tangerine +sprite crylink "Crylink" ff80ff # Blush Pink +sprite rl "Devastator" ffff00 # Yellow +sprite electro "Electro" 0080ff # Azure Radiance +sprite fireball "Fireball" ff8000 # Flush Orange +sprite hagar "Hagar" ffff80 # Dolly +sprite hlac "HLAC" 00ff00 # Green +sprite hookgun "Grappling\nHook" 008000 # Japanese Laurel +sprite uzi "Machine\nGun" ffff00 # Yellow +sprite minelayer "Mine\nLayer" bfff00 # Lime +sprite gl "Mortar" ff0000 # Red +sprite porto "Port-O-Launch" 808080 # Gray +sprite campingrifle "Rifle" 80ff00 # Chartreuse +sprite seeker "T.A.G.\nSeeker" 80ff00 # Chartreuse +#sprite shockwave "Shockwave" 804000 # Cinnamon +sprite shotgun "Shotgun" 804000 # Cinnamon +sprite tuba "Tuba" 00ff00 # Green +sprite minstanex "Vaporizer" 80ffff # Anakiwa +sprite nex "Vortex" 80ffff # Anakiwa diff --git a/mutators.cfg b/mutators.cfg index 4b7904867..63a4356b8 100644 --- a/mutators.cfg +++ b/mutators.cfg @@ -23,14 +23,14 @@ set sv_dodging_frozen 0 "allow dodging while frozen" // =========== -// minstagib +// instagib // =========== -set g_minstagib 0 "enable minstagib" -set g_minstagib_extralives 1 "how many extra lives you will get per powerup" -set g_minstagib_ammo_start 10 "starting ammo" -set g_minstagib_ammo_drop 5 "how much ammo you'll get for weapons or cells" -set g_minstagib_invis_alpha 0.15 -set g_minstagib_speed_highspeed 1.5 "speed-multiplier that applies while you carry the invincibility powerup" +set g_instagib 0 "enable instagib" +set g_instagib_extralives 1 "how many extra lives you will get per powerup" +set g_instagib_ammo_start 10 "starting ammo" +set g_instagib_ammo_drop 5 "how much ammo you'll get for weapons or cells" +set g_instagib_invis_alpha 0.15 +set g_instagib_speed_highspeed 1.5 "speed-multiplier that applies while you carry the invincibility powerup" // ========= diff --git a/notifications.cfg b/notifications.cfg index f0650653d..7454f8641 100644 --- a/notifications.cfg +++ b/notifications.cfg @@ -27,9 +27,9 @@ seta notification_ANNCE_KILLSTREAK_15 "1" "Notification control cvar: 0 = disabl seta notification_ANNCE_KILLSTREAK_20 "1" "Notification control cvar: 0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled)" seta notification_ANNCE_KILLSTREAK_25 "1" "Notification control cvar: 0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled)" seta notification_ANNCE_KILLSTREAK_30 "1" "Notification control cvar: 0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled)" -seta notification_ANNCE_MINSTAGIB_LASTSECOND "1" "Notification control cvar: 0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled)" -seta notification_ANNCE_MINSTAGIB_NARROWLY "1" "Notification control cvar: 0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled)" -seta notification_ANNCE_MINSTAGIB_TERMINATED "1" "Notification control cvar: 0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled)" +seta notification_ANNCE_INSTAGIB_LASTSECOND "1" "Notification control cvar: 0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled)" +seta notification_ANNCE_INSTAGIB_NARROWLY "1" "Notification control cvar: 0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled)" +seta notification_ANNCE_INSTAGIB_TERMINATED "1" "Notification control cvar: 0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled)" seta notification_ANNCE_MULTIFRAG "0" "Notification control cvar: 0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled)" seta notification_ANNCE_NUM_1 "2" "Notification control cvar: 0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled)" seta notification_ANNCE_NUM_2 "2" "Notification control cvar: 0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled)" diff --git a/qcsrc/client/View.qc b/qcsrc/client/View.qc index a069faa46..166ea07f0 100644 --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@ -374,9 +374,11 @@ entity nightvision_noise, nightvision_noise2; #define MAX_TIME_DIFF 5 float pickup_crosshair_time, pickup_crosshair_size; -float hit_time, typehit_time; -float nextsound_hit_time, nextsound_typehit_time; -float hitindication_crosshair_time, hitindication_crosshair_size; +float hitsound_time_prev; +float spectatee_status_prev; // for preventing hitsound when switching spectatee +float damage_dealt_total, damage_dealt_total_prev; +float typehit_time, typehit_time_prev; +float hitindication_crosshair_size; float use_nex_chargepool; float myhealth, myhealth_prev; @@ -1136,21 +1138,87 @@ void CSQC_UpdateView(float w, float h) scoreboard_active = HUD_WouldDrawScoreboard(); - hit_time = getstatf(STAT_HIT_TIME); - if(hit_time > nextsound_hit_time && autocvar_cl_hitsound) + // varying sound pitch + damage_dealt_total = getstati(STAT_DAMAGE_DEALT_TOTAL); + + // detect overflow on server side + if (damage_dealt_total < damage_dealt_total_prev) { - if(time - hit_time < MAX_TIME_DIFF) // don't play the sound if it's too old. - sound(world, CH_INFO, "misc/hit.wav", VOL_BASE, ATTEN_NONE); + dprint("resetting dmg total: ", ftos(damage_dealt_total), " prev: ", ftos(damage_dealt_total_prev), "\n"); + damage_dealt_total_prev = 0; + } + + // prevent hitsound when switching spectatee + if (spectatee_status != spectatee_status_prev) + { + damage_dealt_total_prev = damage_dealt_total; + } + spectatee_status_prev = spectatee_status; - nextsound_hit_time = time + autocvar_cl_hitsound_antispam_time; + // amount of damage since last hit sound + float unaccounted_damage = damage_dealt_total - damage_dealt_total_prev; + + + if (autocvar_cl_hitsound == 1) + { + if ( time - hitsound_time_prev > autocvar_cl_hitsound_antispam_time ) + if ( damage_dealt_total > 0 ) + { + sound(world, CH_INFO, "misc/hit.wav", VOL_BASE, ATTEN_NONE); + hitsound_time_prev = time; + } } + else if (unaccounted_damage > 0 && autocvar_cl_hitsound > 0 && time - hitsound_time_prev > autocvar_cl_hitsound_antispam_time) + { + // customizable gradient function that crosses (0,a), (c,1) and asymptotically approaches b + float a, b, c, x; + a = autocvar_cl_hitsound_max_pitch; + b = autocvar_cl_hitsound_min_pitch; + c = autocvar_cl_hitsound_nom_damage; + x = unaccounted_damage; + float pitch_shift = (b*x*(a-1) + a*c*(1-b)) / (x*(a-1) + c*(1-b)); + + // if sound variation is disabled, set pitch_shift to 1 + if (autocvar_cl_hitsound == 1) + { + pitch_shift = 1; + } + + // if pitch shift is reversed, mirror in (max-min)/2 + min + if (autocvar_cl_hitsound == 3) + { + float mirror_value = (a-b)/2 + b; + pitch_shift = mirror_value + (mirror_value - pitch_shift); + } + + dprint("dmg total (dmg): ", ftos(damage_dealt_total), " (+", ftos(unaccounted_damage), "), pitch shift: ", ftos(pitch_shift), "\n"); + + // todo: avoid very long and very short sounds from wave stretching using different sound files? seems unnecessary + // todo: normalize sound pressure levels? seems unnecessary + + // scale to fit function interface + float param_pitch_shift = pitch_shift * 100; + + // play sound + sound7(world, CH_INFO, "misc/hit.wav", VOL_BASE, ATTN_NONE, param_pitch_shift, 0); + + // track damage accounted for + damage_dealt_total_prev = damage_dealt_total; + + // remember when this sound was played to prevent sound spam + hitsound_time_prev = time; + } + else if (autocvar_cl_hitsound == 0) + { + // forget the damage to prevent hitsound when enabling it + damage_dealt_total_prev = damage_dealt_total; + } + typehit_time = getstatf(STAT_TYPEHIT_TIME); - if(typehit_time > nextsound_typehit_time) + if(typehit_time - typehit_time_prev > autocvar_cl_hitsound_antispam_time) { - if(time - typehit_time < MAX_TIME_DIFF) // don't play the sound if it's too old. - sound(world, CH_INFO, "misc/typehit.wav", VOL_BASE, ATTEN_NONE); - - nextsound_typehit_time = time + autocvar_cl_hitsound_antispam_time; + sound(world, CH_INFO, "misc/typehit.wav", VOL_BASE, ATTN_NONE); + typehit_time_prev = typehit_time; } //else @@ -1350,16 +1418,14 @@ void CSQC_UpdateView(float w, float h) wcross_scale += sin(pickup_crosshair_size) * autocvar_crosshair_pickup; } + // todo: make crosshair hit indication dependent on damage dealt if(autocvar_crosshair_hitindication) { vector hitindication_color = ((autocvar_crosshair_color_special == 1) ? stov(autocvar_crosshair_hitindication_per_weapon_color) : stov(autocvar_crosshair_hitindication_color)); - if(hitindication_crosshair_time < hit_time) + if(unaccounted_damage) { - if(time - hit_time < MAX_TIME_DIFF) // don't trigger the animation if it's too old - hitindication_crosshair_size = 1; - - hitindication_crosshair_time = hit_time; + hitindication_crosshair_size = 1; } if(hitindication_crosshair_size > 0) diff --git a/qcsrc/client/autocvars.qh b/qcsrc/client/autocvars.qh index 28ef157e5..55fbebd7f 100644 --- a/qcsrc/client/autocvars.qh +++ b/qcsrc/client/autocvars.qh @@ -411,6 +411,9 @@ float autocvar_vid_conwidth; float autocvar_vid_pixelheight; float autocvar_viewsize; float autocvar_cl_hitsound; +var float autocvar_cl_hitsound_min_pitch = 0.75; // minimal difference in minsta +var float autocvar_cl_hitsound_max_pitch = 1.5; +var float autocvar_cl_hitsound_nom_damage = 25; float autocvar_cl_hitsound_antispam_time; var float autocvar_cl_eventchase_death = 1; var float autocvar_cl_eventchase_nexball = 1; diff --git a/qcsrc/client/scoreboard.qc b/qcsrc/client/scoreboard.qc index 52bf9190b..6db31ffed 100644 --- a/qcsrc/client/scoreboard.qc +++ b/qcsrc/client/scoreboard.qc @@ -965,7 +965,7 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size) float fontsize = height * 1/3; float weapon_height = height * 2/3; float weapon_width = sbwidth / weapon_cnt; - float g_minstagib = 0; + float g_instagib = 0; drawstring(pos, sprintf(_("Accuracy stats (average %d%%)"), average_accuracy), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL); pos_y += 1.25 * hud_fontsize_y + autocvar_scoreboard_border_thickness; @@ -999,7 +999,7 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size) pos_x += weapon_width / 2; if(switchweapon == WEP_MINSTANEX) - g_minstagib = 1; // TODO: real detection for minstagib? + g_instagib = 1; // TODO: real detection for instagib? float weapon_stats; if(autocvar_scoreboard_accuracy_nocolors) @@ -1012,7 +1012,7 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size) self = get_weaponinfo(i); if (!self.weapon) continue; - if ((i == WEP_NEX && g_minstagib) || i == WEP_PORTO || (i == WEP_MINSTANEX && !g_minstagib) || i == WEP_TUBA) // skip port-o-launch, nex || minstanex and tuba + if ((i == WEP_NEX && g_instagib) || i == WEP_PORTO || (i == WEP_MINSTANEX && !g_instagib) || i == WEP_TUBA) // skip port-o-launch, vortex || vaporizer and tuba continue; weapon_stats = weapon_accuracy[i-WEP_FIRST]; diff --git a/qcsrc/common/mapinfo.qc b/qcsrc/common/mapinfo.qc index 1c7f7163c..84df17516 100644 --- a/qcsrc/common/mapinfo.qc +++ b/qcsrc/common/mapinfo.qc @@ -1224,7 +1224,7 @@ float MapInfo_CurrentFeatures() { float req; req = 0; - if(!(cvar("g_lms") || cvar("g_minstagib") || cvar("g_nix") || cvar("g_weaponarena") || !cvar("g_pickup_items") || cvar("g_race") || cvar("g_cts") || cvar("g_nexball"))) + if(!(cvar("g_lms") || cvar("g_instagib") || cvar("g_nix") || cvar("g_weaponarena") || !cvar("g_pickup_items") || cvar("g_race") || cvar("g_cts") || cvar("g_nexball"))) req |= MAPINFO_FEATURE_WEAPONS; return req; } diff --git a/qcsrc/common/mapinfo.qh b/qcsrc/common/mapinfo.qh index aa1d8fd5e..a933a6db5 100644 --- a/qcsrc/common/mapinfo.qh +++ b/qcsrc/common/mapinfo.qh @@ -80,7 +80,7 @@ REGISTER_GAMETYPE(_("Keepaway"),ka,g_keepaway,KEEPAWAY,"timelimit=20 pointlimit= REGISTER_GAMETYPE(_("Invasion"),inv,g_invasion,INVASION,"pointlimit=50 teams=0",_("Survive against waves of monsters")); #define g_invasion IS_GAMETYPE(INVASION) -const float MAPINFO_FEATURE_WEAPONS = 1; // not defined for minstagib-only maps +const float MAPINFO_FEATURE_WEAPONS = 1; // not defined for instagib-only maps const float MAPINFO_FEATURE_VEHICLES = 2; const float MAPINFO_FEATURE_TURRETS = 4; const float MAPINFO_FEATURE_MONSTERS = 8; diff --git a/qcsrc/common/notifications.qc b/qcsrc/common/notifications.qc index 4fd6e1f25..8f21db76c 100644 --- a/qcsrc/common/notifications.qc +++ b/qcsrc/common/notifications.qc @@ -2027,7 +2027,7 @@ void Send_Notification( #define RECURSE_FROM_CHOICE(ent,action) \ if(notif.nent_challow_var && (warmup_stage || (notif.nent_challow_var == 2))) \ { \ - switch(ent.msg_choice_choices[net_name]) \ + switch(ent.msg_choice_choices[net_name - 1]) \ { \ case 1: found_choice = notif.nent_optiona; break; \ case 2: found_choice = notif.nent_optionb; break; \ diff --git a/qcsrc/common/notifications.qh b/qcsrc/common/notifications.qh index 2afd2987c..b45c648f7 100644 --- a/qcsrc/common/notifications.qh +++ b/qcsrc/common/notifications.qh @@ -248,9 +248,9 @@ void Send_Notification_WOCOVA( MSG_ANNCE_NOTIF(1, ANNCE_KILLSTREAK_20, CH_INFO, "20kills", VOL_BASEVOICE, ATTEN_NONE) \ MSG_ANNCE_NOTIF(1, ANNCE_KILLSTREAK_25, CH_INFO, "25kills", VOL_BASEVOICE, ATTEN_NONE) \ MSG_ANNCE_NOTIF(1, ANNCE_KILLSTREAK_30, CH_INFO, "30kills", VOL_BASEVOICE, ATTEN_NONE) \ - MSG_ANNCE_NOTIF(1, ANNCE_MINSTAGIB_LASTSECOND, CH_INFO, "lastsecond", VOL_BASEVOICE, ATTEN_NONE) \ - MSG_ANNCE_NOTIF(1, ANNCE_MINSTAGIB_NARROWLY, CH_INFO, "narrowly", VOL_BASEVOICE, ATTEN_NONE) \ - MSG_ANNCE_NOTIF(1, ANNCE_MINSTAGIB_TERMINATED, CH_INFO, "terminated", VOL_BASEVOICE, ATTEN_NONE) \ + MSG_ANNCE_NOTIF(1, ANNCE_INSTAGIB_LASTSECOND, CH_INFO, "lastsecond", VOL_BASEVOICE, ATTEN_NONE) \ + MSG_ANNCE_NOTIF(1, ANNCE_INSTAGIB_NARROWLY, CH_INFO, "narrowly", VOL_BASEVOICE, ATTEN_NONE) \ + MSG_ANNCE_NOTIF(1, ANNCE_INSTAGIB_TERMINATED, CH_INFO, "terminated", VOL_BASEVOICE, ATTEN_NONE) \ MSG_ANNCE_NOTIF(0, ANNCE_MULTIFRAG, CH_INFO, "multifrag", VOL_BASEVOICE, ATTEN_NONE) \ MSG_ANNCE_NOTIF(2, ANNCE_NUM_1, CH_INFO, "1", VOL_BASEVOICE, ATTEN_NONE) \ MSG_ANNCE_NOTIF(2, ANNCE_NUM_2, CH_INFO, "2", VOL_BASEVOICE, ATTEN_NONE) \ diff --git a/qcsrc/common/stats.qh b/qcsrc/common/stats.qh index 793582e12..f358069e2 100644 --- a/qcsrc/common/stats.qh +++ b/qcsrc/common/stats.qh @@ -56,7 +56,7 @@ const float STAT_NEX_CHARGE = 50; const float STAT_LAST_PICKUP = 51; const float STAT_HUD = 52; const float STAT_NEX_CHARGEPOOL = 53; -const float STAT_HIT_TIME = 54; +const float STAT_DAMAGE_DEALT_TOTAL = 54; const float STAT_TYPEHIT_TIME = 55; const float STAT_LAYED_MINES = 56; const float STAT_HAGAR_LOAD = 57; diff --git a/qcsrc/common/util.qc b/qcsrc/common/util.qc index c50a3ba53..2c6636a3b 100644 --- a/qcsrc/common/util.qc +++ b/qcsrc/common/util.qc @@ -2106,6 +2106,8 @@ float get_model_parameters(string m, float sk) get_model_parameters_weight = stof(s); if(c == "age") get_model_parameters_age = stof(s); + if(c == "description") + get_model_parameters_description = s; if(c == "bone_upperbody") get_model_parameters_bone_upperbody = s; if(c == "bone_weapon") diff --git a/qcsrc/common/util.qh b/qcsrc/common/util.qh index 9b969134a..9ddc92579 100644 --- a/qcsrc/common/util.qh +++ b/qcsrc/common/util.qh @@ -273,6 +273,7 @@ float get_model_parameters_species; string get_model_parameters_sex; float get_model_parameters_weight; float get_model_parameters_age; +string get_model_parameters_description; string get_model_parameters_bone_upperbody; string get_model_parameters_bone_weapon; #define MAX_AIM_BONES 4 diff --git a/qcsrc/menu/classes.c b/qcsrc/menu/classes.c index ee1ce5d31..46d0c0269 100644 --- a/qcsrc/menu/classes.c +++ b/qcsrc/menu/classes.c @@ -113,3 +113,4 @@ #include "xonotic/dialog_hudpanel_centerprint.c" #include "xonotic/dialog_hudpanel_buffs.c" #include "xonotic/slider_picmip.c" +#include "xonotic/slider_particles.c" diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c b/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c index 8e4bc5a23..e5dec8fff 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c @@ -46,7 +46,7 @@ void XonoticMapInfoDialog_loadMapInfo(entity me, float i, entity mlb) me.currentMapTitle = strzone(strdecolorize(MapInfo_Map_title)); me.currentMapAuthor = strzone(strdecolorize(MapInfo_Map_author)); me.currentMapDescription = strzone(MapInfo_Map_description); - me.currentMapFeaturesText = strzone((MapInfo_Map_supportedFeatures & MAPINFO_FEATURE_WEAPONS) ? _("Full item placement") : _("MinstaGib only")); + me.currentMapFeaturesText = strzone((MapInfo_Map_supportedFeatures & MAPINFO_FEATURE_WEAPONS) ? _("Full item placement") : _("InstaGib only")); me.currentMapPreviewImage = strzone(strcat("/maps/", MapInfo_Map_bspname)); me.frame.setText(me.frame, me.currentMapBSPName); diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c b/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c index 055f5449f..3bac35305 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c @@ -66,8 +66,8 @@ string XonoticMutatorsDialog_toString(entity me) s = ""; if(cvar("g_dodging")) s = strcat(s, ", ", _("Dodging")); - if(cvar("g_minstagib")) - s = strcat(s, ", ", _("MinstaGib")); + if(cvar("g_instagib")) + s = strcat(s, ", ", _("InstaGib")); if(cvar("g_new_toys")) s = strcat(s, ", ", _("New Toys")); if(cvar("g_nix")) @@ -112,7 +112,7 @@ string XonoticMutatorsDialog_toString(entity me) float checkCompatibility_pinata(entity me) { - if(cvar("g_minstagib")) + if(cvar("g_instagib")) return 0; if(cvar("g_nix")) return 0; @@ -126,7 +126,7 @@ float checkCompatibility_weaponstay(entity me) } float checkCompatibility_newtoys(entity me) { - if(cvar("g_minstagib")) + if(cvar("g_instagib")) return 0; if(cvar_string("g_weaponarena") == "most") return 1; @@ -138,7 +138,7 @@ float checkCompatibility_newtoys(entity me) } float checkCompatibility_weaponarena_weapon(entity me) { - if(cvar("g_minstagib")) + if(cvar("g_instagib")) return 0; if(cvar_string("g_weaponarena") == "most") return 0; @@ -172,12 +172,12 @@ void XonoticMutatorsDialog_fill(entity me) me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "g_vampire", _("Vampire"))); - setDependent(e, "g_minstagib", 0, 0); + setDependent(e, "g_instagib", 0, 0); me.TR(me); me.TDempty(me, 0.2); s = makeXonoticSlider(10, 50, 1, "g_bloodloss"); me.TD(me, 1, 1.8, e = makeXonoticSliderCheckBox(0, 1, s, _("Blood loss"))); - setDependent(e, "g_minstagib", 0, 0); + setDependent(e, "g_instagib", 0, 0); me.TR(me); me.TDempty(me, 0.4); me.TD(me, 1, 1.6, s); @@ -202,7 +202,7 @@ void XonoticMutatorsDialog_fill(entity me) me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "g_invincible_projectiles", _("Invincible Projectiles"))); - setDependent(e, "g_minstagib", 0, 0); + setDependent(e, "g_instagib", 0, 0); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "g_new_toys", _("New Toys"))); @@ -210,7 +210,7 @@ void XonoticMutatorsDialog_fill(entity me) me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "g_rocket_flying", _("Rocket Flying"))); - setDependent(e, "g_minstagib", 0, 0); + setDependent(e, "g_instagib", 0, 0); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "g_pinata", _("Piñata"))); @@ -251,7 +251,7 @@ void XonoticMutatorsDialog_fill(entity me) me.TD(me, 1, 4, makeXonoticTextLabel(0, _("Special arenas:"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.8, e = makeXonoticRadioButton(1, "g_minstagib", "1", _("MinstaGib"))); + me.TD(me, 1, 1.8, e = makeXonoticRadioButton(1, "g_instagib", "1", _("InstaGib"))); e.cvarOffValue = "0"; me.TR(me); me.TDempty(me, 0.2); diff --git a/qcsrc/menu/xonotic/dialog_settings_effects.c b/qcsrc/menu/xonotic/dialog_settings_effects.c index e3b562ee3..c56d972d9 100644 --- a/qcsrc/menu/xonotic/dialog_settings_effects.c +++ b/qcsrc/menu/xonotic/dialog_settings_effects.c @@ -47,8 +47,7 @@ void XonoticEffectsSettingsTab_fill(entity me) if(cvar("developer")) me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Ultimate")), '0.5 0 0', "exec effects-ultimate.cfg", 0)); - me.TR(me); - me.TR(me); + me.gotoRC(me, 1.25, 0); me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Geometry detail:"))); me.TD(me, 1, 2, e = makeXonoticTextSlider("r_subdivisions_tolerance")); e.addValue(e, ZCTX(_("DET^Lowest")), "16"); @@ -60,7 +59,13 @@ void XonoticEffectsSettingsTab_fill(entity me) e.configureXonoticTextSliderValues(e); me.TR(me); me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Player detail:"))); - me.TD(me, 1, 2, e = makeXonoticSlider(4, 0, -0.1, "cl_playerdetailreduction")); + me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_playerdetailreduction")); + e.addValue(e, ZCTX(_("PDET^Low")), "4"); + e.addValue(e, ZCTX(_("PDET^Medium")), "3"); + e.addValue(e, ZCTX(_("PDET^Normal")), "2"); + e.addValue(e, ZCTX(_("PDET^Good")), "1"); + e.addValue(e, ZCTX(_("PDET^Best")), "0"); + e.configureXonoticTextSliderValues(e); me.TR(me); me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Texture resolution:"))); setDependent(e, "r_showsurfaces", 0, 0); @@ -126,23 +131,23 @@ void XonoticEffectsSettingsTab_fill(entity me) setDependentAND(e, "vid_gl20", 1, 1, "r_water", 1, 1); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Particles quality:"))); - me.TD(me, 1, 2, e = makeXonoticSlider(0.2, 1.0, 0.1, "cl_particles_quality")); - me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Particles distance:"))); - me.TD(me, 1, 2, e = makeXonoticSlider(500, 2000, 100, "r_drawparticles_drawdistance")); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "cl_decals", _("Decals"))); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "cl_decals_models", _("Decals on models"))); + setDependent(e, "cl_decals", 1, 1); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Damage effects:"))); - me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_damageeffect")); - e.addValue(e, ZCTX(_("DMGPRTCLS^Disabled")), "0"); - e.addValue(e, ZCTX(_("DMGPRTCLS^Skeletal")), "1"); - e.addValue(e, ZCTX(_("DMGPRTCLS^All")), "2"); - e.configureXonoticTextSliderValues(e); + me.TDempty(me, 0.2); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Distance:"))); + setDependent(e, "cl_decals", 1, 1); + me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance")); + setDependent(e, "cl_decals", 1, 1); me.TR(me); - me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_spawn_point_particles", _("Particle effects for spawnpoints"))); - makeMulti(e, "cl_spawn_event_particles"); + me.TDempty(me, 0.2); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Time:"))); + setDependent(e, "cl_decals", 1, 1); + me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_fadetime")); + setDependent(e, "cl_decals", 1, 1); - me.gotoRC(me, 2, 3.2); me.setFirstColumn(me, me.currentColumn); + me.gotoRC(me, 1.25, 3.2); me.setFirstColumn(me, me.currentColumn); me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "r_coronas", "0", _("No dynamic lighting"))); me.TR(me); me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "gl_flashblend", string_null, _("Fake corona lighting"))); @@ -180,21 +185,28 @@ void XonoticEffectsSettingsTab_fill(entity me) me.TD(me, 1, 2, s); me.TR(me); me.TR(me); - me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "cl_decals", _("Decals"))); - me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "cl_decals_models", _("Decals on models"))); - setDependent(e, "cl_decals", 1, 1); + me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "cl_particles", _("Particles"))); + me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "cl_spawn_point_particles", _("Spawnpoint effects"))); + makeMulti(e, "cl_spawn_event_particles"); + setDependent(e, "cl_particles", 1, 1); me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Quality:"))); + setDependent(e, "cl_particles", 1, 1); + me.TD(me, 1, 2, e = makeXonoticParticlesSlider()); + setDependent(e, "cl_particles", 1, 1); + me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Distance:"))); setDependent(e, "cl_decals", 1, 1); me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance")); setDependent(e, "cl_decals", 1, 1); - me.TR(me); + me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Time:"))); - setDependent(e, "cl_decals", 1, 1); - me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_fadetime")); - setDependent(e, "cl_decals", 1, 1); + me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Time:"))); + setDependent(e, "cl_decals", 1, 1); + me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_fadetime")); + setDependent(e, "cl_decals", 1, 1); me.gotoRC(me, me.rows - 1, 0); me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "vid_restart", COMMANDBUTTON_APPLY)); diff --git a/qcsrc/menu/xonotic/playermodel.c b/qcsrc/menu/xonotic/playermodel.c index a09d85e0d..652c581c0 100644 --- a/qcsrc/menu/xonotic/playermodel.c +++ b/qcsrc/menu/xonotic/playermodel.c @@ -43,6 +43,8 @@ entity makeXonoticPlayerModelSelector() #define BUFMODELS_DESC 4 #define BUFMODELS_COUNT 5 +#define XONVOTE186 1 // (nyov) removal of model text description + void XonoticPlayerModelSelector_configureXonoticPlayerModelSelector(entity me) { float sortbuf, glob, i; @@ -77,9 +79,14 @@ void XonoticPlayerModelSelector_configureXonoticPlayerModelSelector(entity me) bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_MODEL, get_model_parameters_modelname); bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_SKIN, ftos(get_model_parameters_modelskin)); get_model_parameters_desc = strcat(get_model_parameters_desc, "\n"); +#if XONVOTE186 + if(get_model_parameters_sex) + get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\n%s", get_model_parameters_sex)); +#else + if(get_model_parameters_description) + get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\n%s\n", get_model_parameters_description)); if(get_model_parameters_sex) get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\nSex: %s", get_model_parameters_sex)); -#if 0 // (nyov) disabling the display of these has been voted on if(get_model_parameters_weight) get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\nWeight: %g kg", get_model_parameters_weight)); if(get_model_parameters_age) @@ -186,7 +193,11 @@ void XonoticPlayerModelSelector_draw(entity me) draw_beginBoldFont(); +#if XONVOTE186 // (nyov) lower name display looks better when there is no description text + draw_CenterText('0.5 0.8 0', me.currentModelTitle, me.realFontSize * (me.titleFontSize / me.fontSize), SKINCOLOR_MODELTITLE, SKINALPHA_MODELTITLE, FALSE); +#else draw_CenterText('0.5 0 0', me.currentModelTitle, me.realFontSize * (me.titleFontSize / me.fontSize), SKINCOLOR_MODELTITLE, SKINALPHA_MODELTITLE, FALSE); +#endif draw_endBoldFont(); diff --git a/qcsrc/menu/xonotic/serverlist.c b/qcsrc/menu/xonotic/serverlist.c index 753702751..ed68acd71 100644 --- a/qcsrc/menu/xonotic/serverlist.c +++ b/qcsrc/menu/xonotic/serverlist.c @@ -152,7 +152,7 @@ float category_draw_count; SLIST_CATEGORY(CAT_XPM, "CAT_NORMAL", "CAT_SERVERS", ZCTX(_("SLCAT^Competitive Mode"))) \ SLIST_CATEGORY(CAT_MODIFIED, "", "CAT_SERVERS", ZCTX(_("SLCAT^Modified Servers"))) \ SLIST_CATEGORY(CAT_OVERKILL, "", "CAT_SERVERS", ZCTX(_("SLCAT^Overkill Mode"))) \ - SLIST_CATEGORY(CAT_MINSTAGIB, "", "CAT_SERVERS", ZCTX(_("SLCAT^MinstaGib Mode"))) \ + SLIST_CATEGORY(CAT_INSTAGIB, "", "CAT_SERVERS", ZCTX(_("SLCAT^InstaGib Mode"))) \ SLIST_CATEGORY(CAT_DEFRAG, "", "CAT_SERVERS", ZCTX(_("SLCAT^Defrag Mode"))) #define SLIST_CATEGORY_AUTOCVAR(name) autocvar_menu_slist_categories_##name##_override @@ -361,8 +361,9 @@ float CheckCategoryForEntry(float entry) // old servers which don't report their mod name are considered modified now case "": { return CAT_MODIFIED; } - case "xpm": { return CAT_XPM; } - case "minstagib": { return CAT_MINSTAGIB; } + case "xpm": { return CAT_XPM; } + case "minstagib": + case "instagib": { return CAT_INSTAGIB; } case "overkill": { return CAT_OVERKILL; } //case "nix": { return CAT_NIX; } //case "newtoys": { return CAT_NEWTOYS; } @@ -1067,7 +1068,7 @@ void XonoticServerList_drawListBoxItem(entity me, float i, vector absSize, float // list the mods here on which the pure server check actually works if(modname != "Xonotic") - if(modname != "MinstaGib") + if(modname != "InstaGib" || modname != "MinstaGib") if(modname != "CTS") if(modname != "NIX") if(modname != "NewToys") diff --git a/qcsrc/menu/xonotic/slider_particles.c b/qcsrc/menu/xonotic/slider_particles.c new file mode 100644 index 000000000..db29f556d --- /dev/null +++ b/qcsrc/menu/xonotic/slider_particles.c @@ -0,0 +1,48 @@ +#ifdef INTERFACE +CLASS(XonoticParticlesSlider) EXTENDS(XonoticTextSlider) + METHOD(XonoticParticlesSlider, configureXonoticParticlesSlider, void(entity)) + METHOD(XonoticParticlesSlider, loadCvars, void(entity)) + METHOD(XonoticParticlesSlider, saveCvars, void(entity)) +ENDCLASS(XonoticParticlesSlider) +entity makeXonoticParticlesSlider(); +#endif + +#ifdef IMPLEMENTATION +entity makeXonoticParticlesSlider() +{ + entity me; + me = spawnXonoticParticlesSlider(); + me.configureXonoticParticlesSlider(me); + return me; +} +void XonoticParticlesSlider_configureXonoticParticlesSlider(entity me) +{ + me.configureXonoticTextSlider(me, "cl_particles_quality"); + if(cvar("developer")) { me.addValue(me, ZCTX(_("PART^OMG")), "0.4 250 0"); } + me.addValue(me, ZCTX(_("PART^Low")), "0.4 500 0"); + me.addValue(me, ZCTX(_("PART^Medium")), "0.8 750 0"); + me.addValue(me, ZCTX(_("PART^Normal")), "1.0 1000 1"); + me.addValue(me, ZCTX(_("PART^High")), "1.0 1500 1"); + me.addValue(me, ZCTX(_("PART^Ultra")), "1.0 2000 2"); + if(cvar("developer")) { me.addValue(me, ZCTX(_("PART^Ultimate")), "1.0 3000 2"); } + me.configureXonoticTextSliderValues(me); +} +void XonoticParticlesSlider_loadCvars(entity me) +{ + me.setValueFromIdentifier(me, sprintf("%s %s %s", + cvar_string("cl_particles_quality"), + cvar_string("r_drawparticles_drawdistance"), + cvar_string("cl_damageeffect") + )); +} +void XonoticParticlesSlider_saveCvars(entity me) +{ + if(me.value >= 0 || me.value < me.nValues) + { + tokenize_console(me.getIdentifier(me)); + cvar_set("cl_particles_quality", argv(0)); + cvar_set("r_drawparticles_drawdistance", argv(1)); + cvar_set("cl_damageeffect", argv(2)); + } +} +#endif diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 11cf993df..4d207955c 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -886,11 +886,11 @@ float autocvar_g_maxplayers_spectator_blocktime; float autocvar_g_maxpushtime; float autocvar_g_maxspeed; float autocvar_g_midair_shieldtime; -#define autocvar_g_minstagib cvar("g_minstagib") -float autocvar_g_minstagib_ammo_drop; -float autocvar_g_minstagib_extralives; -float autocvar_g_minstagib_speed_highspeed; -float autocvar_g_minstagib_invis_alpha; +#define autocvar_g_instagib cvar("g_instagib") +float autocvar_g_instagib_ammo_drop; +float autocvar_g_instagib_extralives; +float autocvar_g_instagib_speed_highspeed; +float autocvar_g_instagib_invis_alpha; #define autocvar_g_mirrordamage cvar("g_mirrordamage") #define autocvar_g_mirrordamage_virtual cvar("g_mirrordamage_virtual") diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 84657d6f6..185c354c4 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -1415,7 +1415,7 @@ void player_powerups (void) Fire_ApplyDamage(self); Fire_ApplyEffect(self); - if (!g_minstagib) + if (!g_instagib) { if (self.items & IT_STRENGTH) { diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index c11e92051..22419da95 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -240,11 +240,18 @@ void player_setupanimsformodel() void player_anim (void) { float deadbits = (self.anim_state & (ANIMSTATE_DEAD1 | ANIMSTATE_DEAD2)); - if(self.deadflag && !deadbits) - if(random() < 0.5) - deadbits = ANIMSTATE_DEAD1; - else - deadbits = ANIMSTATE_DEAD2; + if(self.deadflag) { + if (!deadbits) { + // Decide on which death animation to use. + if(random() < 0.5) + deadbits = ANIMSTATE_DEAD1; + else + deadbits = ANIMSTATE_DEAD2; + } + } else { + // Clear a previous death animation. + deadbits = 0; + } float animbits = deadbits; if(self.frozen) animbits |= ANIMSTATE_FROZEN; diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index dd0b5c22b..b892e24f2 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -16,7 +16,7 @@ noref float require_spawnfunc_prefix; // if this float exists, only functions wi // Globals -float g_cloaked, g_footsteps, g_grappling_hook, g_minstagib; +float g_cloaked, g_footsteps, g_grappling_hook, g_instagib; float g_warmup_limit; float g_warmup_allguns; float g_warmup_allow_timeout; @@ -155,7 +155,7 @@ void setanim(entity e, vector anim, float looping, float override, float restart .float dmgtime; .float killcount; -.float hitsound, typehitsound; +.float damage_dealt, typehitsound; .float watersound_finished; .float iscreature; @@ -519,6 +519,8 @@ string matchid; .float hit_time; .float typehit_time; +.float damage_dealt_total; + .float stat_leadlimit; float radar_showennemies; diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index 47443e6d7..02488b8b1 100644 --- a/qcsrc/server/g_damage.qc +++ b/qcsrc/server/g_damage.qc @@ -826,7 +826,7 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float self = oldself; } - if(!g_minstagib) + if(!g_instagib) { // apply strength multiplier if (attacker.items & IT_STRENGTH) @@ -874,7 +874,7 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float if(victim.BUTTON_CHAT) attacker.typehitsound += 1; else - attacker.hitsound += 1; + attacker.damage_dealt += damage; } damage_goodhits += 1; @@ -1337,12 +1337,12 @@ void Fire_ApplyDamage(entity e) t = min(frametime, e.fire_endtime - time); d = e.fire_damagepersec * t; - hi = e.fire_owner.hitsound; + hi = e.fire_owner.damage_dealt; ty = e.fire_owner.typehitsound; Damage(e, e, e.fire_owner, d, e.fire_deathtype, e.origin, '0 0 0'); if(e.fire_hitsound && e.fire_owner) { - e.fire_owner.hitsound = hi; + e.fire_owner.damage_dealt = hi; e.fire_owner.typehitsound = ty; } e.fire_hitsound = TRUE; diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index a1460ded8..7eda0103c 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -420,7 +420,7 @@ void cvar_changes_init() BADPREFIX("sv_ready_restart_"); // mutators that announce themselves properly to the server browser - BADCVAR("g_minstagib"); + BADCVAR("g_instagib"); BADCVAR("g_new_toys"); BADCVAR("g_nix"); BADCVAR("g_grappling_hook"); @@ -786,7 +786,7 @@ void spawnfunc_worldspawn (void) addstat(STAT_WEAPON_CLIPLOAD, AS_INT, clip_load); addstat(STAT_WEAPON_CLIPSIZE, AS_INT, clip_size); addstat(STAT_LAST_PICKUP, AS_FLOAT, last_pickup); - addstat(STAT_HIT_TIME, AS_FLOAT, hit_time); + addstat(STAT_DAMAGE_DEALT_TOTAL, AS_INT, damage_dealt_total); addstat(STAT_TYPEHIT_TIME, AS_FLOAT, typehit_time); addstat(STAT_LAYED_MINES, AS_INT, minelayer_mines); @@ -2236,19 +2236,21 @@ void EndFrame() float altime; FOR_EACH_REALCLIENT(self) { + self.damage_dealt_total = 0; + if(IS_SPEC(self)) { if(self.enemy.typehitsound) self.typehit_time = time; - else if(self.enemy.hitsound) - self.hit_time = time; + else if(self.enemy.damage_dealt) + self.damage_dealt_total = ceil(self.enemy.damage_dealt); } else { if(self.typehitsound) self.typehit_time = time; - else if(self.hitsound) - self.hit_time = time; + else if(self.damage_dealt) + self.damage_dealt_total = ceil(self.damage_dealt); } } altime = time + frametime * (1 + autocvar_g_antilag_nudge); @@ -2259,10 +2261,12 @@ void EndFrame() // needed! FOR_EACH_CLIENT(self) { - self.hitsound = FALSE; self.typehitsound = FALSE; + self.damage_dealt = 0; antilag_record(self, altime); } + FOR_EACH_MONSTER(self) + antilag_record(self, altime); } diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index 40421bbc0..fc9e84e58 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -929,7 +929,7 @@ void readlevelcvars(void) g_bugrigs_speed_pow = cvar("g_bugrigs_speed_pow"); g_bugrigs_steer = cvar("g_bugrigs_steer"); - g_minstagib = cvar("g_minstagib"); + g_instagib = cvar("g_instagib"); sv_clones = cvar("sv_clones"); sv_foginterval = cvar("sv_foginterval"); diff --git a/qcsrc/server/mutators/mutator_buffs.qc b/qcsrc/server/mutators/mutator_buffs.qc index 5aa534c33..765619df7 100644 --- a/qcsrc/server/mutators/mutator_buffs.qc +++ b/qcsrc/server/mutators/mutator_buffs.qc @@ -605,14 +605,14 @@ MUTATOR_HOOKFUNCTION(buffs_PlayerThink) if(self.oldbuffs & BUFF_INVISIBLE) { - if(time < self.strength_finished && g_minstagib) - self.alpha = autocvar_g_minstagib_invis_alpha; + if(time < self.strength_finished && g_instagib) + self.alpha = autocvar_g_instagib_invis_alpha; else self.alpha = self.buff_invisible_prev_alpha; } else if(self.buffs & BUFF_INVISIBLE) { - if(time < self.strength_finished && g_minstagib) + if(time < self.strength_finished && g_instagib) self.buff_invisible_prev_alpha = default_player_alpha; else self.buff_invisible_prev_alpha = self.alpha; diff --git a/qcsrc/server/mutators/mutator_instagib.qc b/qcsrc/server/mutators/mutator_instagib.qc new file mode 100644 index 000000000..bd61023a1 --- /dev/null +++ b/qcsrc/server/mutators/mutator_instagib.qc @@ -0,0 +1,461 @@ +void spawnfunc_item_minst_cells (void) +{ + if (!g_instagib) { remove(self); return; } + if (!self.ammo_cells) + self.ammo_cells = autocvar_g_instagib_ammo_drop; + + StartItem ("models/items/a_cells.md3", + "misc/itempickup.wav", 45, 0, + "MinstaNex Ammo", IT_CELLS, 0, 0, generic_pickupevalfunc, 100); +} + +void instagib_health_mega() +{ + self.max_health = 1; + StartItem ("models/items/g_h100.md3", + "misc/megahealth.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup, + "Extralife", IT_NAILS, 0, FL_POWERUP, generic_pickupevalfunc, BOT_PICKUP_RATING_HIGH); +} + +.float instagib_nextthink; +.float instagib_needammo; +void instagib_stop_countdown(entity e) +{ + if (!e.instagib_needammo) + return; + Kill_Notification(NOTIF_ONE_ONLY, e, MSG_CENTER_CPID, CPID_MINSTA_FINDAMMO); + e.instagib_needammo = FALSE; +} +void instagib_ammocheck() +{ + if (!IS_PLAYER(self)) + return; // not a player + if (time < self.instagib_nextthink) + return; + + if (self.deadflag || gameover) + instagib_stop_countdown(self); + else if (self.ammo_cells > 0 || (self.items & IT_UNLIMITED_WEAPON_AMMO)) + instagib_stop_countdown(self); + else + { + self.instagib_needammo = TRUE; + if (self.health == 5) + { + Damage(self, self, self, 5, DEATH_NOAMMO, self.origin, '0 0 0'); + Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_INSTAGIB_TERMINATED); + } + else if (self.health == 10) + { + Damage(self, self, self, 5, DEATH_NOAMMO, self.origin, '0 0 0'); + Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_1); + } + else if (self.health == 20) + { + Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); + Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_2); + } + else if (self.health == 30) + { + Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); + Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_3); + } + else if (self.health == 40) + { + Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); + Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_4); + } + else if (self.health == 50) + { + Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); + Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_5); + } + else if (self.health == 60) + { + Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); + Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_6); + } + else if (self.health == 70) + { + Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); + Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_7); + } + else if (self.health == 80) + { + Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); + Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_8); + } + else if (self.health == 90) + { + Send_Notification(NOTIF_ONE_ONLY, self, MSG_CENTER, CENTER_MINSTA_FINDAMMO); + Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); + Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_9); + } + else if (self.health == 100) + { + Send_Notification(NOTIF_ONE_ONLY, self, MSG_MULTI, MULTI_MINSTA_FINDAMMO); + Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); + } + } + self.instagib_nextthink = time + 1; +} + +MUTATOR_HOOKFUNCTION(instagib_MatchEnd) +{ + entity head; + FOR_EACH_PLAYER(head) + instagib_stop_countdown(head); + + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_MonsterLoot) +{ + other.monster_loot = spawnfunc_item_minst_cells; + + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_MonsterSpawn) +{ + // always refill ammo + if(self.monsterid == MON_MAGE) + self.skin = 1; + + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_BotShouldAttack) +{ + if(checkentity.items & IT_STRENGTH) + return TRUE; + + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_MakePlayerObserver) +{ + instagib_stop_countdown(self); + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_PlayerSpawn) +{ + self.effects |= EF_FULLBRIGHT; + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_PlayerPreThink) +{ + instagib_ammocheck(); + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_PlayerRegen) +{ + // no regeneration in instagib + return TRUE; +} + +MUTATOR_HOOKFUNCTION(instagib_PlayerPowerups) +{ + if (!(self.effects & EF_FULLBRIGHT)) + self.effects |= EF_FULLBRIGHT; + + if (self.items & IT_STRENGTH) + { + play_countdown(self.strength_finished, "misc/poweroff.wav"); + if (time > self.strength_finished) + { + self.alpha = default_player_alpha; + self.exteriorweaponentity.alpha = default_weapon_alpha; + self.items &= ~IT_STRENGTH; + Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_POWERDOWN_INVISIBILITY); + } + } + else + { + if (time < self.strength_finished) + { + self.alpha = autocvar_g_instagib_invis_alpha; + self.exteriorweaponentity.alpha = autocvar_g_instagib_invis_alpha; + self.items |= IT_STRENGTH; + Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_POWERUP_INVISIBILITY, self.netname); + Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_POWERUP_INVISIBILITY); + } + } + + if (self.items & IT_INVINCIBLE) + { + play_countdown(self.invincible_finished, "misc/poweroff.wav"); + if (time > self.invincible_finished) + { + self.items &= ~IT_INVINCIBLE; + Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_POWERDOWN_SPEED); + } + } + else + { + if (time < self.invincible_finished) + { + self.items |= IT_INVINCIBLE; + Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_POWERUP_SPEED, self.netname); + Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_POWERUP_SPEED); + } + } + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_PlayerPhysics) +{ + if(self.items & IT_INVINCIBLE) + self.stat_sv_maxspeed = self.stat_sv_maxspeed * autocvar_g_instagib_speed_highspeed; + + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_SplitHealthArmor) +{ + damage_save = 0; + damage_take = frag_damage; + + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_ForbidThrowing) +{ + // weapon dropping on death handled by FilterItem + + return TRUE; +} + +MUTATOR_HOOKFUNCTION(instagib_PlayerDamage) +{ + if(autocvar_g_friendlyfire == 0 && SAME_TEAM(frag_target, frag_attacker) && IS_PLAYER(frag_target) && IS_PLAYER(frag_attacker)) + frag_damage = 0; + + if(IS_PLAYER(frag_target)) + { + if ((frag_deathtype == DEATH_FALL) || + (frag_deathtype == DEATH_DROWN) || + (frag_deathtype == DEATH_SLIME) || + (frag_deathtype == DEATH_LAVA)) + { + frag_damage = 0; + } + + if(IS_PLAYER(frag_attacker)) + if(DEATH_ISWEAPON(frag_deathtype, WEP_MINSTANEX)) + if(frag_target.armorvalue) + { + frag_target.armorvalue -= 1; + Send_Notification(NOTIF_ONE, frag_target, MSG_CENTER, CENTER_MINSTA_LIVES_REMAINING, frag_target.armorvalue); + frag_damage = 0; + frag_target.damage_dealt += 1; + frag_attacker.damage_dealt += 1; // TODO change this to a future specific hitsound for armor hit + } + + if(IS_PLAYER(frag_attacker)) + if (DEATH_ISWEAPON(frag_deathtype, WEP_LASER)) + { + frag_damage = 0; + frag_mirrordamage = 0; + if (frag_target != frag_attacker) + { + if (frag_target.health >= 1) + Send_Notification(NOTIF_ONE, frag_attacker, MSG_CENTER, CENTER_MINSTA_SECONDARY); + frag_force = '0 0 0'; + // keep mirrorfrag_force + //frag_attacker = frag_target; + } + } + } + + if(IS_PLAYER(frag_attacker)) + if(frag_mirrordamage > 0) + { + // just lose extra LIVES, don't kill the player for mirror damage + if(frag_attacker.armorvalue > 0) + { + frag_attacker.armorvalue -= 1; + Send_Notification(NOTIF_ONE, frag_attacker, MSG_CENTER, CENTER_MINSTA_LIVES_REMAINING, frag_attacker.armorvalue); + frag_attacker.damage_dealt += 1; + } + frag_mirrordamage = 0; + } + + if(frag_target.items & IT_STRENGTH) + yoda = 1; + + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_SetStartItems) +{ + start_ammo_cells = cvar("g_instagib_ammo_start"); + + start_health = 100; + start_armorvalue = 0; + start_weapons = WEPSET_MINSTANEX; + warmup_start_weapons = WEPSET_MINSTANEX; + start_items |= IT_UNLIMITED_SUPERWEAPONS; + + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_FilterItem) +{ + if(self.classname == "item_cells") + return TRUE; // no normal cells? + + if(self.weapon == WEP_MINSTANEX && self.classname == "droppedweapon") + { + self.ammo_cells = autocvar_g_instagib_ammo_drop; + return FALSE; + } + + if(self.weapon == WEP_ROCKET_LAUNCHER || self.weapon == WEP_NEX) + { + entity e = spawn(); + setorigin(e, self.origin); + entity oldself; + oldself = self; + self = e; + spawnfunc_item_minst_cells(); + self = oldself; + return TRUE; + } + + if(self.flags & FL_POWERUP) + return FALSE; + + if(self.ammo_cells > autocvar_g_instagib_ammo_drop && self.classname != "item_minst_cells") + self.ammo_cells = autocvar_g_instagib_ammo_drop; + + if(self.ammo_cells && !self.weapon) + return FALSE; + + return TRUE; +} + +MUTATOR_HOOKFUNCTION(instagib_CustomizeWaypoint) +{ + entity e = WaypointSprite_getviewentity(other); + + // if you have the invisibility powerup, sprites ALWAYS are restricted to your team + // but only apply this to real players, not to spectators + if((self.owner.flags & FL_CLIENT) && (self.owner.items & IT_STRENGTH) && (e == other)) + if(DIFF_TEAM(self.owner, e)) + return TRUE; + + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_ItemCountdown) +{ + switch(self.items) + { + case IT_STRENGTH: item_name = "item-invis"; item_color = '0 0 1'; break; + case IT_NAILS: item_name = "item-extralife"; item_color = '1 0 0'; break; + case IT_INVINCIBLE: item_name = "item-speed"; item_color = '1 0 1'; break; + } + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_ItemTouch) +{ + if(self.ammo_cells) + { + // play some cool sounds ;) + if (IS_CLIENT(other)) + { + if(other.health <= 5) + Send_Notification(NOTIF_ONE, other, MSG_ANNCE, ANNCE_INSTAGIB_LASTSECOND); + else if(other.health < 50) + Send_Notification(NOTIF_ONE, other, MSG_ANNCE, ANNCE_INSTAGIB_NARROWLY); + } + + if(other.health < 100) + other.health = 100; + + return MUT_ITEMTOUCH_CONTINUE; + } + + if(self.max_health) + { + other.armorvalue = bound(other.armorvalue, 999, other.armorvalue + autocvar_g_instagib_extralives); + Send_Notification(NOTIF_ONE, other, MSG_CENTER, CENTER_EXTRALIVES); + return MUT_ITEMTOUCH_PICKUP; + } + + return MUT_ITEMTOUCH_CONTINUE; +} + +MUTATOR_HOOKFUNCTION(instagib_OnEntityPreSpawn) +{ + if (!autocvar_g_powerups) { return FALSE; } + if (!(self.classname == "item_strength" || self.classname == "item_invincible" || self.classname == "item_health_mega")) + return FALSE; + + entity e = spawn(); + + if(random() < 0.3) + e.think = spawnfunc_item_strength; + else if(random() < 0.6) + e.think = instagib_health_mega; + else + e.think = spawnfunc_item_invincible; + + e.nextthink = time + 0.1; + e.spawnflags = self.spawnflags; + e.noalign = self.noalign; + setorigin(e, self.origin); + + return TRUE; +} + +MUTATOR_HOOKFUNCTION(instagib_BuildMutatorsString) +{ + ret_string = strcat(ret_string, ":instagib"); + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_BuildMutatorsPrettyString) +{ + ret_string = strcat(ret_string, ", instagib"); + return FALSE; +} + +MUTATOR_HOOKFUNCTION(instagib_SetModname) +{ + modname = "instagib"; + return TRUE; +} + +MUTATOR_DEFINITION(mutator_instagib) +{ + MUTATOR_HOOK(MatchEnd, instagib_MatchEnd, CBC_ORDER_ANY); + MUTATOR_HOOK(MonsterDropItem, instagib_MonsterLoot, CBC_ORDER_ANY); + MUTATOR_HOOK(MonsterSpawn, instagib_MonsterSpawn, CBC_ORDER_ANY); + MUTATOR_HOOK(BotShouldAttack, instagib_BotShouldAttack, CBC_ORDER_ANY); + MUTATOR_HOOK(PlayerPhysics, instagib_PlayerPhysics, CBC_ORDER_ANY); + MUTATOR_HOOK(PlayerSpawn, instagib_PlayerSpawn, CBC_ORDER_ANY); + MUTATOR_HOOK(PlayerDamage_Calculate, instagib_PlayerDamage, CBC_ORDER_ANY); + MUTATOR_HOOK(MakePlayerObserver, instagib_MakePlayerObserver, CBC_ORDER_ANY); + MUTATOR_HOOK(SetStartItems, instagib_SetStartItems, CBC_ORDER_ANY); + MUTATOR_HOOK(ItemTouch, instagib_ItemTouch, CBC_ORDER_ANY); + MUTATOR_HOOK(FilterItem, instagib_FilterItem, CBC_ORDER_ANY); + MUTATOR_HOOK(CustomizeWaypoint, instagib_CustomizeWaypoint, CBC_ORDER_ANY); + MUTATOR_HOOK(Item_RespawnCountdown, instagib_ItemCountdown, CBC_ORDER_ANY); + MUTATOR_HOOK(PlayerDamage_SplitHealthArmor, instagib_SplitHealthArmor, CBC_ORDER_ANY); + MUTATOR_HOOK(PlayerPowerups, instagib_PlayerPowerups, CBC_ORDER_ANY); + MUTATOR_HOOK(ForbidThrowCurrentWeapon, instagib_ForbidThrowing, CBC_ORDER_ANY); + MUTATOR_HOOK(PlayerPreThink, instagib_PlayerPreThink, CBC_ORDER_ANY); + MUTATOR_HOOK(PlayerRegen, instagib_PlayerRegen, CBC_ORDER_ANY); + MUTATOR_HOOK(OnEntityPreSpawn, instagib_OnEntityPreSpawn, CBC_ORDER_ANY); + MUTATOR_HOOK(BuildMutatorsString, instagib_BuildMutatorsString, CBC_ORDER_ANY); + MUTATOR_HOOK(BuildMutatorsPrettyString, instagib_BuildMutatorsPrettyString, CBC_ORDER_ANY); + MUTATOR_HOOK(SetModname, instagib_SetModname, CBC_ORDER_ANY); + + return FALSE; +} diff --git a/qcsrc/server/mutators/mutator_minstagib.qc b/qcsrc/server/mutators/mutator_minstagib.qc deleted file mode 100644 index 20811ad50..000000000 --- a/qcsrc/server/mutators/mutator_minstagib.qc +++ /dev/null @@ -1,461 +0,0 @@ -void spawnfunc_item_minst_cells (void) -{ - if (!g_minstagib) { remove(self); return; } - if (!self.ammo_cells) - self.ammo_cells = autocvar_g_minstagib_ammo_drop; - - StartItem ("models/items/a_cells.md3", - "misc/itempickup.wav", 45, 0, - "MinstaNex Ammo", IT_CELLS, 0, 0, generic_pickupevalfunc, 100); -} - -void minstagib_health_mega() -{ - self.max_health = 1; - StartItem ("models/items/g_h100.md3", - "misc/megahealth.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup, - "Extralife", IT_NAILS, 0, FL_POWERUP, generic_pickupevalfunc, BOT_PICKUP_RATING_HIGH); -} - -.float minstagib_nextthink; -.float minstagib_needammo; -void minstagib_stop_countdown(entity e) -{ - if (!e.minstagib_needammo) - return; - Kill_Notification(NOTIF_ONE_ONLY, e, MSG_CENTER_CPID, CPID_MINSTA_FINDAMMO); - e.minstagib_needammo = FALSE; -} -void minstagib_ammocheck() -{ - if (!IS_PLAYER(self)) - return; // not a player - if (time < self.minstagib_nextthink) - return; - - if (self.deadflag || gameover) - minstagib_stop_countdown(self); - else if (self.ammo_cells > 0 || (self.items & IT_UNLIMITED_WEAPON_AMMO)) - minstagib_stop_countdown(self); - else - { - self.minstagib_needammo = TRUE; - if (self.health == 5) - { - Damage(self, self, self, 5, DEATH_NOAMMO, self.origin, '0 0 0'); - Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_MINSTAGIB_TERMINATED); - } - else if (self.health == 10) - { - Damage(self, self, self, 5, DEATH_NOAMMO, self.origin, '0 0 0'); - Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_1); - } - else if (self.health == 20) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_2); - } - else if (self.health == 30) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_3); - } - else if (self.health == 40) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_4); - } - else if (self.health == 50) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_5); - } - else if (self.health == 60) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_6); - } - else if (self.health == 70) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_7); - } - else if (self.health == 80) - { - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_8); - } - else if (self.health == 90) - { - Send_Notification(NOTIF_ONE_ONLY, self, MSG_CENTER, CENTER_MINSTA_FINDAMMO); - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - Send_Notification(NOTIF_ONE, self, MSG_ANNCE, ANNCE_NUM_9); - } - else if (self.health == 100) - { - Send_Notification(NOTIF_ONE_ONLY, self, MSG_MULTI, MULTI_MINSTA_FINDAMMO); - Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); - } - } - self.minstagib_nextthink = time + 1; -} - -MUTATOR_HOOKFUNCTION(minstagib_MatchEnd) -{ - entity head; - FOR_EACH_PLAYER(head) - minstagib_stop_countdown(head); - - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_MonsterLoot) -{ - other.monster_loot = spawnfunc_item_minst_cells; - - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_MonsterSpawn) -{ - // always refill ammo - if(self.monsterid == MON_MAGE) - self.skin = 1; - - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_BotShouldAttack) -{ - if(checkentity.items & IT_STRENGTH) - return TRUE; - - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_MakePlayerObserver) -{ - minstagib_stop_countdown(self); - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_PlayerSpawn) -{ - self.effects |= EF_FULLBRIGHT; - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_PlayerPreThink) -{ - minstagib_ammocheck(); - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_PlayerRegen) -{ - // no regeneration in minstagib - return TRUE; -} - -MUTATOR_HOOKFUNCTION(minstagib_PlayerPowerups) -{ - if (!(self.effects & EF_FULLBRIGHT)) - self.effects |= EF_FULLBRIGHT; - - if (self.items & IT_STRENGTH) - { - play_countdown(self.strength_finished, "misc/poweroff.wav"); - if (time > self.strength_finished) - { - self.alpha = default_player_alpha; - self.exteriorweaponentity.alpha = default_weapon_alpha; - self.items &= ~IT_STRENGTH; - Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_POWERDOWN_INVISIBILITY); - } - } - else - { - if (time < self.strength_finished) - { - self.alpha = autocvar_g_minstagib_invis_alpha; - self.exteriorweaponentity.alpha = autocvar_g_minstagib_invis_alpha; - self.items |= IT_STRENGTH; - Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_POWERUP_INVISIBILITY, self.netname); - Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_POWERUP_INVISIBILITY); - } - } - - if (self.items & IT_INVINCIBLE) - { - play_countdown(self.invincible_finished, "misc/poweroff.wav"); - if (time > self.invincible_finished) - { - self.items &= ~IT_INVINCIBLE; - Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_POWERDOWN_SPEED); - } - } - else - { - if (time < self.invincible_finished) - { - self.items |= IT_INVINCIBLE; - Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_POWERUP_SPEED, self.netname); - Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_POWERUP_SPEED); - } - } - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_PlayerPhysics) -{ - if(self.items & IT_INVINCIBLE) - self.stat_sv_maxspeed = self.stat_sv_maxspeed * autocvar_g_minstagib_speed_highspeed; - - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_SplitHealthArmor) -{ - damage_save = 0; - damage_take = frag_damage; - - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_ForbidThrowing) -{ - // weapon dropping on death handled by FilterItem - - return TRUE; -} - -MUTATOR_HOOKFUNCTION(minstagib_PlayerDamage) -{ - if(autocvar_g_friendlyfire == 0 && SAME_TEAM(frag_target, frag_attacker) && IS_PLAYER(frag_target) && IS_PLAYER(frag_attacker)) - frag_damage = 0; - - if(IS_PLAYER(frag_target)) - { - if ((frag_deathtype == DEATH_FALL) || - (frag_deathtype == DEATH_DROWN) || - (frag_deathtype == DEATH_SLIME) || - (frag_deathtype == DEATH_LAVA)) - { - frag_damage = 0; - } - - if(IS_PLAYER(frag_attacker)) - if(DEATH_ISWEAPON(frag_deathtype, WEP_MINSTANEX)) - if(frag_target.armorvalue) - { - frag_target.armorvalue -= 1; - Send_Notification(NOTIF_ONE, frag_target, MSG_CENTER, CENTER_MINSTA_LIVES_REMAINING, frag_target.armorvalue); - frag_damage = 0; - frag_target.hitsound += 1; - frag_attacker.hitsound += 1; // TODO change this to a future specific hitsound for armor hit - } - - if(IS_PLAYER(frag_attacker)) - if (DEATH_ISWEAPON(frag_deathtype, WEP_LASER)) - { - frag_damage = 0; - frag_mirrordamage = 0; - if (frag_target != frag_attacker) - { - if (frag_target.health >= 1) - Send_Notification(NOTIF_ONE, frag_attacker, MSG_CENTER, CENTER_MINSTA_SECONDARY); - frag_force = '0 0 0'; - // keep mirrorfrag_force - //frag_attacker = frag_target; - } - } - } - - if(IS_PLAYER(frag_attacker)) - if(frag_mirrordamage > 0) - { - // just lose extra LIVES, don't kill the player for mirror damage - if(frag_attacker.armorvalue > 0) - { - frag_attacker.armorvalue -= 1; - Send_Notification(NOTIF_ONE, frag_attacker, MSG_CENTER, CENTER_MINSTA_LIVES_REMAINING, frag_attacker.armorvalue); - frag_attacker.hitsound += 1; - } - frag_mirrordamage = 0; - } - - if(frag_target.items & IT_STRENGTH) - yoda = 1; - - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_SetStartItems) -{ - start_ammo_cells = cvar("g_minstagib_ammo_start"); - - start_health = 100; - start_armorvalue = 0; - start_weapons = WEPSET_MINSTANEX; - warmup_start_weapons = WEPSET_MINSTANEX; - start_items |= IT_UNLIMITED_SUPERWEAPONS; - - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_FilterItem) -{ - if(self.classname == "item_cells") - return TRUE; // no normal cells? - - if(self.weapon == WEP_MINSTANEX && self.classname == "droppedweapon") - { - self.ammo_cells = autocvar_g_minstagib_ammo_drop; - return FALSE; - } - - if(self.weapon == WEP_ROCKET_LAUNCHER || self.weapon == WEP_NEX) - { - entity e = spawn(); - setorigin(e, self.origin); - entity oldself; - oldself = self; - self = e; - spawnfunc_item_minst_cells(); - self = oldself; - return TRUE; - } - - if(self.flags & FL_POWERUP) - return FALSE; - - if(self.ammo_cells > autocvar_g_minstagib_ammo_drop && self.classname != "item_minst_cells") - self.ammo_cells = autocvar_g_minstagib_ammo_drop; - - if(self.ammo_cells && !self.weapon) - return FALSE; - - return TRUE; -} - -MUTATOR_HOOKFUNCTION(minstagib_CustomizeWaypoint) -{ - entity e = WaypointSprite_getviewentity(other); - - // if you have the invisibility powerup, sprites ALWAYS are restricted to your team - // but only apply this to real players, not to spectators - if((self.owner.flags & FL_CLIENT) && (self.owner.items & IT_STRENGTH) && (e == other)) - if(DIFF_TEAM(self.owner, e)) - return TRUE; - - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_ItemCountdown) -{ - switch(self.items) - { - case IT_STRENGTH: item_name = "item-invis"; item_color = '0 0 1'; break; - case IT_NAILS: item_name = "item-extralife"; item_color = '1 0 0'; break; - case IT_INVINCIBLE: item_name = "item-speed"; item_color = '1 0 1'; break; - } - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_ItemTouch) -{ - if(self.ammo_cells) - { - // play some cool sounds ;) - if (IS_CLIENT(other)) - { - if(other.health <= 5) - Send_Notification(NOTIF_ONE, other, MSG_ANNCE, ANNCE_MINSTAGIB_LASTSECOND); - else if(other.health < 50) - Send_Notification(NOTIF_ONE, other, MSG_ANNCE, ANNCE_MINSTAGIB_NARROWLY); - } - - if(other.health < 100) - other.health = 100; - - return MUT_ITEMTOUCH_CONTINUE; - } - - if(self.max_health) - { - other.armorvalue = bound(other.armorvalue, 999, other.armorvalue + autocvar_g_minstagib_extralives); - Send_Notification(NOTIF_ONE, other, MSG_CENTER, CENTER_EXTRALIVES); - return MUT_ITEMTOUCH_PICKUP; - } - - return MUT_ITEMTOUCH_CONTINUE; -} - -MUTATOR_HOOKFUNCTION(minstagib_OnEntityPreSpawn) -{ - if (!autocvar_g_powerups) { return FALSE; } - if (!(self.classname == "item_strength" || self.classname == "item_invincible" || self.classname == "item_health_mega")) - return FALSE; - - entity e = spawn(); - - if(random() < 0.3) - e.think = spawnfunc_item_strength; - else if(random() < 0.6) - e.think = minstagib_health_mega; - else - e.think = spawnfunc_item_invincible; - - e.nextthink = time + 0.1; - e.spawnflags = self.spawnflags; - e.noalign = self.noalign; - setorigin(e, self.origin); - - return TRUE; -} - -MUTATOR_HOOKFUNCTION(minstagib_BuildMutatorsString) -{ - ret_string = strcat(ret_string, ":MinstaGib"); - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_BuildMutatorsPrettyString) -{ - ret_string = strcat(ret_string, ", MinstaGib"); - return FALSE; -} - -MUTATOR_HOOKFUNCTION(minstagib_SetModname) -{ - modname = "MinstaGib"; - return TRUE; -} - -MUTATOR_DEFINITION(mutator_minstagib) -{ - MUTATOR_HOOK(MatchEnd, minstagib_MatchEnd, CBC_ORDER_ANY); - MUTATOR_HOOK(MonsterDropItem, minstagib_MonsterLoot, CBC_ORDER_ANY); - MUTATOR_HOOK(MonsterSpawn, minstagib_MonsterSpawn, CBC_ORDER_ANY); - MUTATOR_HOOK(BotShouldAttack, minstagib_BotShouldAttack, CBC_ORDER_ANY); - MUTATOR_HOOK(PlayerPhysics, minstagib_PlayerPhysics, CBC_ORDER_ANY); - MUTATOR_HOOK(PlayerSpawn, minstagib_PlayerSpawn, CBC_ORDER_ANY); - MUTATOR_HOOK(PlayerDamage_Calculate, minstagib_PlayerDamage, CBC_ORDER_ANY); - MUTATOR_HOOK(MakePlayerObserver, minstagib_MakePlayerObserver, CBC_ORDER_ANY); - MUTATOR_HOOK(SetStartItems, minstagib_SetStartItems, CBC_ORDER_ANY); - MUTATOR_HOOK(ItemTouch, minstagib_ItemTouch, CBC_ORDER_ANY); - MUTATOR_HOOK(FilterItem, minstagib_FilterItem, CBC_ORDER_ANY); - MUTATOR_HOOK(CustomizeWaypoint, minstagib_CustomizeWaypoint, CBC_ORDER_ANY); - MUTATOR_HOOK(Item_RespawnCountdown, minstagib_ItemCountdown, CBC_ORDER_ANY); - MUTATOR_HOOK(PlayerDamage_SplitHealthArmor, minstagib_SplitHealthArmor, CBC_ORDER_ANY); - MUTATOR_HOOK(PlayerPowerups, minstagib_PlayerPowerups, CBC_ORDER_ANY); - MUTATOR_HOOK(ForbidThrowCurrentWeapon, minstagib_ForbidThrowing, CBC_ORDER_ANY); - MUTATOR_HOOK(PlayerPreThink, minstagib_PlayerPreThink, CBC_ORDER_ANY); - MUTATOR_HOOK(PlayerRegen, minstagib_PlayerRegen, CBC_ORDER_ANY); - MUTATOR_HOOK(OnEntityPreSpawn, minstagib_OnEntityPreSpawn, CBC_ORDER_ANY); - MUTATOR_HOOK(BuildMutatorsString, minstagib_BuildMutatorsString, CBC_ORDER_ANY); - MUTATOR_HOOK(BuildMutatorsPrettyString, minstagib_BuildMutatorsPrettyString, CBC_ORDER_ANY); - MUTATOR_HOOK(SetModname, minstagib_SetModname, CBC_ORDER_ANY); - - return FALSE; -} diff --git a/qcsrc/server/mutators/mutators.qc b/qcsrc/server/mutators/mutators.qc index 71569b7f9..2f96e9e8a 100644 --- a/qcsrc/server/mutators/mutators.qc +++ b/qcsrc/server/mutators/mutators.qc @@ -7,19 +7,19 @@ void mutators_add() CHECK_MUTATOR_ADD("g_spawn_near_teammate", mutator_spawn_near_teammate, teamplay); CHECK_MUTATOR_ADD("g_physical_items", mutator_physical_items, 1); CHECK_MUTATOR_ADD("g_touchexplode", mutator_touchexplode, 1); - CHECK_MUTATOR_ADD("g_minstagib", mutator_minstagib, !g_nexball); - CHECK_MUTATOR_ADD("g_invincible_projectiles", mutator_invincibleprojectiles, !cvar("g_minstagib")); - CHECK_MUTATOR_ADD("g_new_toys", mutator_new_toys, !cvar("g_minstagib")); - CHECK_MUTATOR_ADD("g_nix", mutator_nix, !cvar("g_minstagib")); - CHECK_MUTATOR_ADD("g_rocket_flying", mutator_rocketflying, !cvar("g_minstagib")); - CHECK_MUTATOR_ADD("g_vampire", mutator_vampire, !cvar("g_minstagib")); + CHECK_MUTATOR_ADD("g_instagib", mutator_instagib, !g_nexball); + CHECK_MUTATOR_ADD("g_invincible_projectiles", mutator_invincibleprojectiles, !cvar("g_instagib")); + CHECK_MUTATOR_ADD("g_new_toys", mutator_new_toys, !cvar("g_instagib")); + CHECK_MUTATOR_ADD("g_nix", mutator_nix, !cvar("g_instagib")); + CHECK_MUTATOR_ADD("g_rocket_flying", mutator_rocketflying, !cvar("g_instagib")); + CHECK_MUTATOR_ADD("g_vampire", mutator_vampire, !cvar("g_instagib")); CHECK_MUTATOR_ADD("g_superspectate", mutator_superspec, 1); - CHECK_MUTATOR_ADD("g_pinata", mutator_pinata, !cvar("g_minstagib")); + CHECK_MUTATOR_ADD("g_pinata", mutator_pinata, !cvar("g_instagib")); CHECK_MUTATOR_ADD("g_midair", mutator_midair, 1); - CHECK_MUTATOR_ADD("g_bloodloss", mutator_bloodloss, !cvar("g_minstagib")); + CHECK_MUTATOR_ADD("g_bloodloss", mutator_bloodloss, !cvar("g_instagib")); CHECK_MUTATOR_ADD("g_random_gravity", mutator_random_gravity, 1); CHECK_MUTATOR_ADD("g_multijump", mutator_multijump, 1); - CHECK_MUTATOR_ADD("g_melee_only", mutator_melee_only, !cvar("g_minstagib") && !g_nexball); + CHECK_MUTATOR_ADD("g_melee_only", mutator_melee_only, !cvar("g_instagib") && !g_nexball); CHECK_MUTATOR_ADD("g_nades", mutator_nades, 1); CHECK_MUTATOR_ADD("g_sandbox", sandbox, 1); CHECK_MUTATOR_ADD("g_campcheck", mutator_campcheck, 1); diff --git a/qcsrc/server/mutators/mutators.qh b/qcsrc/server/mutators/mutators.qh index eff44c2e3..955ba1a52 100644 --- a/qcsrc/server/mutators/mutators.qh +++ b/qcsrc/server/mutators/mutators.qh @@ -22,7 +22,7 @@ MUTATOR_DECLARATION(mutator_spawn_near_teammate); MUTATOR_DECLARATION(mutator_physical_items); MUTATOR_DECLARATION(mutator_vampire); MUTATOR_DECLARATION(mutator_superspec); -MUTATOR_DECLARATION(mutator_minstagib); +MUTATOR_DECLARATION(mutator_instagib); MUTATOR_DECLARATION(mutator_touchexplode); MUTATOR_DECLARATION(mutator_pinata); MUTATOR_DECLARATION(mutator_midair); diff --git a/qcsrc/server/mutators/mutators_include.qc b/qcsrc/server/mutators/mutators_include.qc index c1932db9d..220bd0595 100644 --- a/qcsrc/server/mutators/mutators_include.qc +++ b/qcsrc/server/mutators/mutators_include.qc @@ -24,7 +24,7 @@ #include "mutator_physical_items.qc" #include "sandbox.qc" #include "mutator_superspec.qc" -#include "mutator_minstagib.qc" +#include "mutator_instagib.qc" #include "mutator_touchexplode.qc" #include "mutator_pinata.qc" #include "mutator_midair.qc" diff --git a/qcsrc/server/t_plats.qc b/qcsrc/server/t_plats.qc index d3f72b7eb..353e5e9fe 100644 --- a/qcsrc/server/t_plats.qc +++ b/qcsrc/server/t_plats.qc @@ -788,7 +788,7 @@ When a button is touched, it moves some distance in the direction of it's angle, "speed" override the default 40 speed "wait" override the default 1 second wait (-1 = never return) "lip" override the default 4 pixel lip remaining at end of move -"health" if set, the button must be killed instead of touched. If set to -1, the button will fire on ANY attack, even damageless ones like the MinstaGib laser +"health" if set, the button must be killed instead of touched. If set to -1, the button will fire on ANY attack, even damageless ones like the InstaGib laser "sounds" 0) steam metal 1) wooden clunk diff --git a/qcsrc/server/tturrets/units/unit_plasma.qc b/qcsrc/server/tturrets/units/unit_plasma.qc index 9fce826a2..26a3dc04e 100644 --- a/qcsrc/server/tturrets/units/unit_plasma.qc +++ b/qcsrc/server/tturrets/units/unit_plasma.qc @@ -102,7 +102,7 @@ void turret_plasma_std_init() self.firecheck_flags |= TFL_FIRECHECK_AFF; // Our fireing routine - if(g_minstagib) + if(g_instagib) self.turret_firefunc = turret_plasma_minsta_attack; else self.turret_firefunc = turret_plasma_attack; diff --git a/qcsrc/server/w_minstanex.qc b/qcsrc/server/w_minstanex.qc index 9fb80c6d5..becb2e8b7 100644 --- a/qcsrc/server/w_minstanex.qc +++ b/qcsrc/server/w_minstanex.qc @@ -75,7 +75,7 @@ void W_MinstaNex_Attack (void) break; } - W_DecreaseAmmo(ammo_cells, ((g_minstagib) ? 1 : autocvar_g_balance_minstanex_ammo), autocvar_g_balance_minstanex_reload_ammo); + W_DecreaseAmmo(ammo_cells, ((g_instagib) ? 1 : autocvar_g_balance_minstanex_ammo), autocvar_g_balance_minstanex_reload_ammo); } void spawnfunc_weapon_minstanex (void); // defined in t_items.qc @@ -86,7 +86,7 @@ float w_minstanex(float req) float minstanex_ammo; // now multiple WR_s use this - minstanex_ammo = ((g_minstagib) ? 1 : autocvar_g_balance_minstanex_ammo); + minstanex_ammo = ((g_instagib) ? 1 : autocvar_g_balance_minstanex_ammo); if (req == WR_AIM) { @@ -115,14 +115,14 @@ float w_minstanex(float req) if (self.jump_interval <= time) if (weapon_prepareattack(1, -1)) { - // handle refire manually, so that primary and secondary can be fired without conflictions (important for minstagib) + // handle refire manually, so that primary and secondary can be fired without conflictions (important for instagib) self.jump_interval = time + autocvar_g_balance_minstanex_laser_refire * W_WeaponRateFactor(); // decrease ammo for the laser? if(autocvar_g_balance_minstanex_laser_ammo) W_DecreaseAmmo(ammo_cells, autocvar_g_balance_minstanex_laser_ammo, autocvar_g_balance_minstanex_reload_ammo); - // ugly minstagib hack to reuse the fire mode of the laser + // ugly instagib hack to reuse the fire mode of the laser float w; w = self.weapon; self.weapon = WEP_LASER; diff --git a/scripts/simpleitems.shader b/scripts/simpleitems.shader index 69376e860..92e9e5aff 100644 --- a/scripts/simpleitems.shader +++ b/scripts/simpleitems.shader @@ -53,6 +53,19 @@ a_shells_simple // shells ////////// WEAPONS ////////// +g_arc_simple // arc +{ + deformVertexes autosprite + cull none + nopicmip + + { + map models/weapons/g_arc_simple + blendfunc blend + + } +} + g_crylink_simple // crylink { deformVertexes autosprite @@ -79,7 +92,7 @@ g_electro_simple // electro } } -g_nex_simple // nex +g_nex_simple // vortex { deformVertexes autosprite cull none @@ -118,7 +131,7 @@ g_gl_simple // mortar } } -g_rl_simple // rocket launcher +g_rl_simple // devastator { deformVertexes autosprite cull none @@ -157,19 +170,6 @@ g_uzi_simple // machine gun } } -g_uzi_simple // machine gun -{ - deformVertexes autosprite - cull none - nopicmip - - { - map models/weapons/g_uzi_simple - blendfunc blend - - } -} - g_campingrifle_simple // sniper rifle { deformVertexes autosprite @@ -222,7 +222,7 @@ g_hookgun_simple // hook gun } } -g_laser_simple // laser +g_laser_simple // blaster { deformVertexes autosprite cull none @@ -248,7 +248,7 @@ g_minelayer_simple // minelayer } } -g_minstanex_simple // minstanex +g_minstanex_simple // vaporizer { deformVertexes autosprite cull none @@ -475,4 +475,4 @@ g_fuelregen_simple // fuel regen powerup blendfunc blend } -} \ No newline at end of file +} diff --git a/sound/tutorial/1-welcome.ogg b/sound/tutorial/1-welcome.ogg deleted file mode 100644 index 05ff8ebac..000000000 Binary files a/sound/tutorial/1-welcome.ogg and /dev/null differ diff --git a/sound/tutorial/10-at_corp_switch.ogg b/sound/tutorial/10-at_corp_switch.ogg deleted file mode 100644 index d312e51e4..000000000 Binary files a/sound/tutorial/10-at_corp_switch.ogg and /dev/null differ diff --git a/sound/tutorial/11-behind_glass.ogg b/sound/tutorial/11-behind_glass.ogg deleted file mode 100644 index 89fadfcca..000000000 Binary files a/sound/tutorial/11-behind_glass.ogg and /dev/null differ diff --git a/sound/tutorial/12-crylink.ogg b/sound/tutorial/12-crylink.ogg deleted file mode 100644 index 1b69ddfd5..000000000 Binary files a/sound/tutorial/12-crylink.ogg and /dev/null differ diff --git a/sound/tutorial/13-no_imitations.ogg b/sound/tutorial/13-no_imitations.ogg deleted file mode 100644 index 2939a80a1..000000000 Binary files a/sound/tutorial/13-no_imitations.ogg and /dev/null differ diff --git a/sound/tutorial/14-room_with_switch.ogg b/sound/tutorial/14-room_with_switch.ogg deleted file mode 100644 index c311f4ef9..000000000 Binary files a/sound/tutorial/14-room_with_switch.ogg and /dev/null differ diff --git a/sound/tutorial/15-x_marks_the_spot.ogg b/sound/tutorial/15-x_marks_the_spot.ogg deleted file mode 100644 index b3781c6bd..000000000 Binary files a/sound/tutorial/15-x_marks_the_spot.ogg and /dev/null differ diff --git a/sound/tutorial/16-shoot_with_electro.ogg b/sound/tutorial/16-shoot_with_electro.ogg deleted file mode 100644 index 6a142d98d..000000000 Binary files a/sound/tutorial/16-shoot_with_electro.ogg and /dev/null differ diff --git a/sound/tutorial/17-deeper.ogg b/sound/tutorial/17-deeper.ogg deleted file mode 100644 index 7da896cd9..000000000 Binary files a/sound/tutorial/17-deeper.ogg and /dev/null differ diff --git a/sound/tutorial/18-fire_then_fire.ogg b/sound/tutorial/18-fire_then_fire.ogg deleted file mode 100644 index 2d5d38250..000000000 Binary files a/sound/tutorial/18-fire_then_fire.ogg and /dev/null differ diff --git a/sound/tutorial/19-activates_the_buried_switch.ogg b/sound/tutorial/19-activates_the_buried_switch.ogg deleted file mode 100644 index 76940bcef..000000000 Binary files a/sound/tutorial/19-activates_the_buried_switch.ogg and /dev/null differ diff --git a/sound/tutorial/2-jumppad.ogg b/sound/tutorial/2-jumppad.ogg deleted file mode 100644 index 964efa209..000000000 Binary files a/sound/tutorial/2-jumppad.ogg and /dev/null differ diff --git a/sound/tutorial/20-at_corp_says_you_are_smart.ogg b/sound/tutorial/20-at_corp_says_you_are_smart.ogg deleted file mode 100644 index fd5f9fd85..000000000 Binary files a/sound/tutorial/20-at_corp_says_you_are_smart.ogg and /dev/null differ diff --git a/sound/tutorial/21-rocket_launcher.ogg b/sound/tutorial/21-rocket_launcher.ogg deleted file mode 100644 index 31824d082..000000000 Binary files a/sound/tutorial/21-rocket_launcher.ogg and /dev/null differ diff --git a/sound/tutorial/22-as_a_special_feature.ogg b/sound/tutorial/22-as_a_special_feature.ogg deleted file mode 100644 index f2ccfdac8..000000000 Binary files a/sound/tutorial/22-as_a_special_feature.ogg and /dev/null differ diff --git a/sound/tutorial/23-hold_the_fire_button.ogg b/sound/tutorial/23-hold_the_fire_button.ogg deleted file mode 100644 index b5f43b2f0..000000000 Binary files a/sound/tutorial/23-hold_the_fire_button.ogg and /dev/null differ diff --git a/sound/tutorial/24-guide_the_rocket.ogg b/sound/tutorial/24-guide_the_rocket.ogg deleted file mode 100644 index 9271d614d..000000000 Binary files a/sound/tutorial/24-guide_the_rocket.ogg and /dev/null differ diff --git a/sound/tutorial/25-omg_laser.ogg b/sound/tutorial/25-omg_laser.ogg deleted file mode 100644 index ad53e9ad3..000000000 Binary files a/sound/tutorial/25-omg_laser.ogg and /dev/null differ diff --git a/sound/tutorial/26-the_red_platform.ogg b/sound/tutorial/26-the_red_platform.ogg deleted file mode 100644 index 48b6ced2b..000000000 Binary files a/sound/tutorial/26-the_red_platform.ogg and /dev/null differ diff --git a/sound/tutorial/27-wga.ogg b/sound/tutorial/27-wga.ogg deleted file mode 100644 index 306602414..000000000 Binary files a/sound/tutorial/27-wga.ogg and /dev/null differ diff --git a/sound/tutorial/28-grappling_hook.ogg b/sound/tutorial/28-grappling_hook.ogg deleted file mode 100644 index e46ea0291..000000000 Binary files a/sound/tutorial/28-grappling_hook.ogg and /dev/null differ diff --git a/sound/tutorial/29-hooker.ogg b/sound/tutorial/29-hooker.ogg deleted file mode 100644 index d297b4e75..000000000 Binary files a/sound/tutorial/29-hooker.ogg and /dev/null differ diff --git a/sound/tutorial/3-death.ogg b/sound/tutorial/3-death.ogg deleted file mode 100644 index 87d40d0a3..000000000 Binary files a/sound/tutorial/3-death.ogg and /dev/null differ diff --git a/sound/tutorial/30-destination_of_the_hook.ogg b/sound/tutorial/30-destination_of_the_hook.ogg deleted file mode 100644 index 5b17502bf..000000000 Binary files a/sound/tutorial/30-destination_of_the_hook.ogg and /dev/null differ diff --git a/sound/tutorial/31-pogo_stick.ogg b/sound/tutorial/31-pogo_stick.ogg deleted file mode 100644 index 19ef0a905..000000000 Binary files a/sound/tutorial/31-pogo_stick.ogg and /dev/null differ diff --git a/sound/tutorial/32-way_to_go_champ.ogg b/sound/tutorial/32-way_to_go_champ.ogg deleted file mode 100644 index aab3ce496..000000000 Binary files a/sound/tutorial/32-way_to_go_champ.ogg and /dev/null differ diff --git a/sound/tutorial/33-cr-vi.ogg b/sound/tutorial/33-cr-vi.ogg deleted file mode 100644 index 5d196197a..000000000 Binary files a/sound/tutorial/33-cr-vi.ogg and /dev/null differ diff --git a/sound/tutorial/34-pierce_walls.ogg b/sound/tutorial/34-pierce_walls.ogg deleted file mode 100644 index c50042df6..000000000 Binary files a/sound/tutorial/34-pierce_walls.ogg and /dev/null differ diff --git a/sound/tutorial/35-shoot_your_instructor.ogg b/sound/tutorial/35-shoot_your_instructor.ogg deleted file mode 100644 index 5c27ef826..000000000 Binary files a/sound/tutorial/35-shoot_your_instructor.ogg and /dev/null differ diff --git a/sound/tutorial/36-hit_me.ogg b/sound/tutorial/36-hit_me.ogg deleted file mode 100644 index eccbc9ab9..000000000 Binary files a/sound/tutorial/36-hit_me.ogg and /dev/null differ diff --git a/sound/tutorial/36-just_shoot_it.ogg b/sound/tutorial/36-just_shoot_it.ogg deleted file mode 100644 index 4b1c30a60..000000000 Binary files a/sound/tutorial/36-just_shoot_it.ogg and /dev/null differ diff --git a/sound/tutorial/37-I_am_waiting.ogg b/sound/tutorial/37-I_am_waiting.ogg deleted file mode 100644 index 78a6cfb89..000000000 Binary files a/sound/tutorial/37-I_am_waiting.ogg and /dev/null differ diff --git a/sound/tutorial/38-impatient.ogg b/sound/tutorial/38-impatient.ogg deleted file mode 100644 index 0b8d173b8..000000000 Binary files a/sound/tutorial/38-impatient.ogg and /dev/null differ diff --git a/sound/tutorial/39-srs_trouble.ogg b/sound/tutorial/39-srs_trouble.ogg deleted file mode 100644 index ae3bace6d..000000000 Binary files a/sound/tutorial/39-srs_trouble.ogg and /dev/null differ diff --git a/sound/tutorial/4-big_jump.ogg b/sound/tutorial/4-big_jump.ogg deleted file mode 100644 index 24d50329e..000000000 Binary files a/sound/tutorial/4-big_jump.ogg and /dev/null differ diff --git a/sound/tutorial/5-to_the_left_to_the_left.ogg b/sound/tutorial/5-to_the_left_to_the_left.ogg deleted file mode 100644 index 3a3830a56..000000000 Binary files a/sound/tutorial/5-to_the_left_to_the_left.ogg and /dev/null differ diff --git a/sound/tutorial/6-air_friction.ogg b/sound/tutorial/6-air_friction.ogg deleted file mode 100644 index 811fbe658..000000000 Binary files a/sound/tutorial/6-air_friction.ogg and /dev/null differ diff --git a/sound/tutorial/7-rocket_at_you.ogg b/sound/tutorial/7-rocket_at_you.ogg deleted file mode 100644 index 516348679..000000000 Binary files a/sound/tutorial/7-rocket_at_you.ogg and /dev/null differ diff --git a/sound/tutorial/8-shoot-switch.ogg b/sound/tutorial/8-shoot-switch.ogg deleted file mode 100644 index 5615297ba..000000000 Binary files a/sound/tutorial/8-shoot-switch.ogg and /dev/null differ diff --git a/sound/tutorial/9-unbreakable.ogg b/sound/tutorial/9-unbreakable.ogg deleted file mode 100644 index 852b53706..000000000 Binary files a/sound/tutorial/9-unbreakable.ogg and /dev/null differ diff --git a/sound/tutorial/frag_on.ogg b/sound/tutorial/frag_on.ogg deleted file mode 100644 index e8636cb8e..000000000 Binary files a/sound/tutorial/frag_on.ogg and /dev/null differ diff --git a/sound/tutorial/misc-at_corp_rap.ogg b/sound/tutorial/misc-at_corp_rap.ogg deleted file mode 100644 index 9ec4f4a6f..000000000 Binary files a/sound/tutorial/misc-at_corp_rap.ogg and /dev/null differ diff --git a/sound/tutorial/misc-detonate.ogg b/sound/tutorial/misc-detonate.ogg deleted file mode 100644 index 695c59290..000000000 Binary files a/sound/tutorial/misc-detonate.ogg and /dev/null differ diff --git a/sound/tutorial/misc-did_yoda_show_you_that.ogg b/sound/tutorial/misc-did_yoda_show_you_that.ogg deleted file mode 100644 index cec140a2f..000000000 Binary files a/sound/tutorial/misc-did_yoda_show_you_that.ogg and /dev/null differ diff --git a/sound/tutorial/misc-door.ogg b/sound/tutorial/misc-door.ogg deleted file mode 100644 index 93c953267..000000000 Binary files a/sound/tutorial/misc-door.ogg and /dev/null differ diff --git a/sound/tutorial/misc-emergency_tele.ogg b/sound/tutorial/misc-emergency_tele.ogg deleted file mode 100644 index efa552a6b..000000000 Binary files a/sound/tutorial/misc-emergency_tele.ogg and /dev/null differ diff --git a/sound/tutorial/misc-excellent.ogg b/sound/tutorial/misc-excellent.ogg deleted file mode 100644 index 76691ae85..000000000 Binary files a/sound/tutorial/misc-excellent.ogg and /dev/null differ diff --git a/sound/tutorial/misc-good_work.ogg b/sound/tutorial/misc-good_work.ogg deleted file mode 100644 index 0b90df030..000000000 Binary files a/sound/tutorial/misc-good_work.ogg and /dev/null differ diff --git a/sound/tutorial/misc-nice.ogg b/sound/tutorial/misc-nice.ogg deleted file mode 100644 index 06b711dea..000000000 Binary files a/sound/tutorial/misc-nice.ogg and /dev/null differ diff --git a/sound/tutorial/misc-very_impressive.ogg b/sound/tutorial/misc-very_impressive.ogg deleted file mode 100644 index 49082a558..000000000 Binary files a/sound/tutorial/misc-very_impressive.ogg and /dev/null differ diff --git a/tooltips.db b/tooltips.db index 9be879536..a0c06485b 100644 --- a/tooltips.db +++ b/tooltips.db @@ -40,7 +40,7 @@ \g_pinata\Players will drop all weapons they possessed when they are killed \g_weapon_stay\Weapons stay after they are picked up \g_weaponarena\Selecting a weapon arena will give all players that weapon at spawn as well as unlimited ammo, and disable all other weapon pickups. -\g_minstagib\Players will be given the Minstanex, which is a railgun with infinite damage. If the player runs out of ammo, he will have 10 seconds to find some or if he fails to do so, face death. The secondary fire mode is a laser which does not inflict any damage and is good for doing trickjumps. +\g_instagib\Players will be given the Minstanex, which is a railgun with infinite damage. If the player runs out of ammo, he will have 10 seconds to find some or if he fails to do so, face death. The secondary fire mode is a laser which does not inflict any damage and is good for doing trickjumps. \g_nix\No items Xonotic - instead of pickup items, everyone plays with the same weapon. After some time, a countdown will start, after which everyone will switch to another weapon. \g_nix_with_laser\Always carry the laser as an additional weapon in Nix \XonoticMultiplayerDialog/Select all\Select all maps diff --git a/tooltips.db.de b/tooltips.db.de index ed455da10..7ba71e274 100644 --- a/tooltips.db.de +++ b/tooltips.db.de @@ -42,7 +42,7 @@ \g_weapon_stay\Alle Waffen bleiben liegen, auch wenn sie aufgenommen wurden \g_weaponarena\Waffen-Arenen: Die Auswahl einer Waffen-Arena führt dazu, dass jeder Spieler mit der gewählten Waffe startet. Diese hat unendlich viel Munition, andere Waffen sind nicht vorhanden - Spezielle Waffen-Arenen: Spieler starten mit allen Waffen und unendlich viel Munition \menu_weaponarena_with_laser\Aktiviere auch den Laser in der Waffen-Arena -\g_minstagib\Alle Spieler starten mit der MinstaNex, eine elektromagnetische Schienenkanone mit unendlich viel Schaden. Wenn ein Spieler keine Munition mehr hat, bleiben ihm 10 Sekunden um neue zu finden, ansonsten stirbt er. Der 2. Feuermodus ist Laser, welcher keinen Schaden hinzufügen kann. Dieser eignet sich gut für Tricksprünge +\g_instagib\Alle Spieler starten mit der MinstaNex, eine elektromagnetische Schienenkanone mit unendlich viel Schaden. Wenn ein Spieler keine Munition mehr hat, bleiben ihm 10 Sekunden um neue zu finden, ansonsten stirbt er. Der 2. Feuermodus ist Laser, welcher keinen Schaden hinzufügen kann. Dieser eignet sich gut für Tricksprünge \g_nix\Es gibt keine aufzusammelnden Gegenstände in Xonotic - Anstelle der Möglichkeit Waffen aufzusammeln, spielen alle mit der gleichen Waffe. Nach einiger Zeit startet ein Countdown, danach wechseln alle Spieler zu einer neuen gleichen Waffe \g_nix_with_laser\In Nix ist als zweite Waffe der Laser vorhanden \XonoticMultiplayerDialog/Select all\Wähle alle Maps diff --git a/tooltips.db.es b/tooltips.db.es index 17c8939df..4cab5a638 100644 --- a/tooltips.db.es +++ b/tooltips.db.es @@ -41,7 +41,7 @@ \g_weapon_stay\Las armas quedan despues de que son tomadas \g_weaponarena\Seleccionando un arma, dara a todos los jugadores cual arma se eligió asi como infinita munición, y deshabilita cualquier otra toma de arma. \menu_weaponarena_with_laser\Tambien habilita el láser en la arena -\g_minstagib\Los jugadores tendran Minstanex, el cual es un railgun con daño infinito. Si el jugador queda sin munición, tendra 10 segundos para buscar mas o morira. El modo de disparo secundario es un laser que no inflige daño y es bueno para hacer bromas. +\g_instagib\Los jugadores tendran Minstanex, el cual es un railgun con daño infinito. Si el jugador queda sin munición, tendra 10 segundos para buscar mas o morira. El modo de disparo secundario es un laser que no inflige daño y es bueno para hacer bromas. \g_nix\Xonotic sin items - en vez de recoger items, todos juegan con la misma arma. Despues de algún tiempo, comienza una cuenta regresiva, despues del cual todos juegan con otra arma. \g_nix_with_laser\Siempre lleva el láser como arma adicional en Nix \XonoticMultiplayerDialog/Select all\Seleccionar todos los mapas diff --git a/tooltips.db.fr b/tooltips.db.fr index 2fc82b5b4..3f3819e49 100644 --- a/tooltips.db.fr +++ b/tooltips.db.fr @@ -40,7 +40,7 @@ \g_pinata\Les joueurs lâchent toutes leurs armes quand ils meurent \g_weapon_stay\Les armes restent où elles sont lorsqu'elles sont ramassées \g_weaponarena\Sélectionner une arène avec une seule arme fera apparaître les joueurs avec cette arme et des munitions illimitées, et désactive toutes les autres armes -\g_minstagib\Tous les joueurs reçoivent un Minstanex, qui est un fusil de précision d'une puissance infinie. Si vous êtes à court de munition, vous mourrez dans les 10 secondes à moins de parvenir à recharger votre arme. Le tir secondaire est un laser qui n'inflige aucun dégât et qui est utile pour sauter sur de longues distances. +\g_instagib\Tous les joueurs reçoivent un Minstanex, qui est un fusil de précision d'une puissance infinie. Si vous êtes à court de munition, vous mourrez dans les 10 secondes à moins de parvenir à recharger votre arme. Le tir secondaire est un laser qui n'inflige aucun dégât et qui est utile pour sauter sur de longues distances. \g_nix\No Items Xonotic - tous les joueurs jouent avec la même arme, et celle-ci change régulièrement. \g_nix_with_laser\Autoriser le laser en plus de l'arme courante dans le mode Nix \XonoticMultiplayerDialog/Select all\Sélectionner toutes les cartes diff --git a/tooltips.db.hu b/tooltips.db.hu index 81347c757..4080f0286 100644 --- a/tooltips.db.hu +++ b/tooltips.db.hu @@ -42,7 +42,7 @@ \g_weapon_stay\A fegyverek a helyükön maradnak, még azután is, hogy valaki felvette őket \g_weaponarena\A kiválasztott fegyver aréna minden játékosnak ugyanazt a fegyvert biztosítja korlátlan lőszerrel, és letiltja minden más fegyver felvételét \menu_weaponarena_with_laser\A lézer is engedélyezett a fegyver arénában -\g_minstagib\A játékosok egy Minstanex-et kapnak, ami egy azonnal ölő mesterlövész fegyver. Ha a játékos kifogy a lőszerből, 10 másodperce van muníciót találni, vagy meghal. A másodlagos tűz mód a lézer, amely nem okoz kárt, de jól jön trükkös ugrások végrehajtásánál +\g_instagib\A játékosok egy Minstanex-et kapnak, ami egy azonnal ölő mesterlövész fegyver. Ha a játékos kifogy a lőszerből, 10 másodperce van muníciót találni, vagy meghal. A másodlagos tűz mód a lézer, amely nem okoz kárt, de jól jön trükkös ugrások végrehajtásánál \g_nix\Xonotic felvehető fegyverek nélkül – Mindenki ugyanazzal a fegyverrel játszik. Kis idő után visszaszámlálás indul, amely végén mindenki fegyvert vált \g_nix_with_laser\Mindig legyen a lézer a Nix mellett kiegészítésül diff --git a/tooltips.db.it b/tooltips.db.it index e1d1825dd..03169993c 100644 --- a/tooltips.db.it +++ b/tooltips.db.it @@ -40,7 +40,7 @@ \g_pinata\I giocatori rilasceranno tutte le armi che possedevano appena vengono uccisi \g_weapon_stay\Le armi rimangono dopo che vengono raccolte \g_weaponarena\Selezionando un'arena dedicata ad un'arma si darà a tutti i giocatori quell'arma con munizioni infinite, e disabiliterà tutti gli altri raccoglimenti delle armi. -\g_minstagib\Ai giocatori sarà dato il Minstanex, che è un railgun con danni illimitati. Se il giocatore rimane senza munizioni, avrà 10 secondi per trovarne alcune, altrimenti morirà. Il fuoco secondario è un laser che non infligge nessun danno ed è buono per effettuare vari trickjump. +\g_instagib\Ai giocatori sarà dato il Minstanex, che è un railgun con danni illimitati. Se il giocatore rimane senza munizioni, avrà 10 secondi per trovarne alcune, altrimenti morirà. Il fuoco secondario è un laser che non infligge nessun danno ed è buono per effettuare vari trickjump. \g_nix\"No items Xonotic" - invece di raccogliere oggetti, ognuno giocherà con la stessa arma. Dopo un pò di tempo, un conto alla rovescia inizierà, dopo il quale ognuno passerà ad un'altra arma. \g_nix_with_laser\Porta sempre il laser come arma aggiuntiva nella modalità "No items Xonotic" \XonoticMultiplayerDialog/Seleziona tutto\Seleziona tutte le mappe diff --git a/tooltips.db.ru b/tooltips.db.ru index 9a6d72fbc..c5b5fccf5 100644 --- a/tooltips.db.ru +++ b/tooltips.db.ru @@ -41,7 +41,7 @@ \g_weapon_stay\Всё собранное оружие остаётся после возрождений \g_weaponarena\Selecting a weapon arena will give all players that weapon at spawn as well as unlimited ammo, and disable all other weapon pickups. \menu_weaponarena_with_laser\Also enable the laser in the weapon arena -\g_minstagib\Players will be given the Minstanex, which is a railgun with infinite damage. If the player runs out of ammo, he will have 10 seconds to find some or if he fails to do so, face death. The secondary fire mode is a laser which does not inflict any damage and is good for doing trickjumps. +\g_instagib\Players will be given the Minstanex, which is a railgun with infinite damage. If the player runs out of ammo, he will have 10 seconds to find some or if he fails to do so, face death. The secondary fire mode is a laser which does not inflict any damage and is good for doing trickjumps. \g_nix\No items Xonotic - instead of pickup items, everyone plays with the same weapon. After some time, a countdown will start, after which everyone will switch to another weapon. \g_nix_with_laser\Always carry the laser as an additional weapon in Nix \XonoticMultiplayerDialog/Select all\Выбрать все карты diff --git a/tooltips.db.uk b/tooltips.db.uk index 31695a631..bece5dc11 100644 --- a/tooltips.db.uk +++ b/tooltips.db.uk @@ -41,7 +41,7 @@ \g_weapon_stay\Зброя залишається після того, як була підібраною \g_weaponarena\Вибір арени з окремою зброєю дасть гравцям цю зброю і необмежену кількість боєприпасів до неї, і прибере з мапи всю іншу зброю \menu_weaponarena_with_laser\Зробити лазер доступним на аренах -\g_minstagib\Гравці отримують МінстаНекс, рейкову гармату яка вбиває одним пострілом. Якщо гравець витратить усі боєприпаси, у нього буде десять секунд щоб поновити його, інакше він загине. Альтернативний вогонь гармати це лазер який не наносить шкоди, корисний для трюків +\g_instagib\Гравці отримують МінстаНекс, рейкову гармату яка вбиває одним пострілом. Якщо гравець витратить усі боєприпаси, у нього буде десять секунд щоб поновити його, інакше він загине. Альтернативний вогонь гармати це лазер який не наносить шкоди, корисний для трюків \g_nix\Нікс (No items Xonotic) - замість того щоб підбирати предмети, всі гравці грають з однією зброєю. Через деякий час почнеться відлік, і зброя у всіх зміниться на іншу \g_nix_with_laser\Зробити лазер доступним у Нікс \XonoticMultiplayerDialog/Обрати все\Обрати всі мапи diff --git a/weapons.cfg b/weapons.cfg index 80305a5fe..eb768df23 100644 --- a/weapons.cfg +++ b/weapons.cfg @@ -1,18 +1,28 @@ -alias weapon_laser "impulse 230" +alias weapon_blaster "impulse 230" alias weapon_shotgun "impulse 231" -alias weapon_uzi "impulse 232" -alias weapon_grenadelauncher "impulse 233" +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_nex "impulse 237" +alias weapon_vortex "impulse 237" alias weapon_hagar "impulse 238" -alias weapon_rocketlauncher "impulse 239" +alias weapon_devastator "impulse 239" alias weapon_porto "impulse 240" -alias weapon_minstanex "impulse 241" +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" + +// Backwards compatibility with 0.7.0 +alias weapon_laser "weapon_blaster" +alias weapon_uzi "weapon_machinegun" +alias weapon_grenadelauncher "weapon_mortar" +alias weapon_nex "weapon_vortex" +alias weapon_rocketlauncher "weapon_devastator" +alias weapon_minstanex "weapon_vaporizer"