]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'terencehill/notification_cvars'
authorMario <zacjardine@y7mail.com>
Fri, 28 Nov 2014 00:33:53 +0000 (11:33 +1100)
committerMario <zacjardine@y7mail.com>
Fri, 28 Nov 2014 00:33:53 +0000 (11:33 +1100)
Conflicts:
notifications.cfg

182 files changed:
common.ast.po
common.be.po
common.bg.po
common.ca.po
common.cs.po
common.de.po
common.el.po
common.es.po
common.fi.po
common.fr.po
common.hu.po
common.it.po
common.mk.po
common.nl.po
common.pl.po
common.pot
common.pt.po
common.ro.po
common.ru.po
common.sr.po
common.sv.po
common.uk.po
common.zh_CN.po
common.zh_TW.po
defaultXonotic.cfg
effects-high.cfg
effects-low.cfg
effects-med.cfg
effects-normal.cfg
effects-omg.cfg
effects-ultimate.cfg
effects-ultra.cfg
hook-firing_swap.cfg
models/player/erebus.iqm_0.txt
models/player/gak.iqm_0.txt
models/player/gakarmored.iqm_0.txt
models/player/gakmasked.iqm_0.txt
models/player/ignis.iqm_0.txt
models/player/ignishalfmasked.iqm_0.txt
models/player/ignismasked.iqm_0.txt
models/player/megaerebus.iqm_0.txt
models/player/nyx.iqm_0.txt
models/player/pyria.iqm_0.txt
models/player/seraphina.iqm_0.txt
models/player/seraphinamasked.iqm_0.txt
models/player/umbra.iqm_0.txt
models/weapons/g_arc_simple.iqm [new file with mode: 0644]
models/weapons/g_arc_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_arc_simple.tga [new file with mode: 0644]
models/weapons/g_campingrifle_simple.iqm [new file with mode: 0644]
models/weapons/g_campingrifle_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_campingrifle_simple.tga [new file with mode: 0644]
models/weapons/g_crylink_simple.tga
models/weapons/g_electro_simple.tga
models/weapons/g_fireball_simple.iqm [new file with mode: 0644]
models/weapons/g_fireball_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_fireball_simple.tga [new file with mode: 0644]
models/weapons/g_gl_simple.tga
models/weapons/g_hagar_simple.tga
models/weapons/g_hlac_simple.iqm [new file with mode: 0644]
models/weapons/g_hlac_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_hlac_simple.tga [new file with mode: 0644]
models/weapons/g_hookgun_simple.iqm [new file with mode: 0644]
models/weapons/g_hookgun_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_hookgun_simple.tga [new file with mode: 0644]
models/weapons/g_laser_simple.iqm [new file with mode: 0644]
models/weapons/g_laser_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_laser_simple.tga [new file with mode: 0644]
models/weapons/g_minelayer_simple.iqm [new file with mode: 0644]
models/weapons/g_minelayer_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_minelayer_simple.tga [new file with mode: 0644]
models/weapons/g_minstanex_simple.iqm [new file with mode: 0644]
models/weapons/g_minstanex_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_minstanex_simple.tga [new file with mode: 0644]
models/weapons/g_nex_simple.tga
models/weapons/g_porto_simple.iqm [new file with mode: 0644]
models/weapons/g_porto_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_porto_simple.tga [new file with mode: 0644]
models/weapons/g_rl_simple.tga
models/weapons/g_seeker_simple.iqm [new file with mode: 0644]
models/weapons/g_seeker_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_seeker_simple.tga [new file with mode: 0644]
models/weapons/g_shotgun_simple.tga
models/weapons/g_tuba_simple.iqm [new file with mode: 0644]
models/weapons/g_tuba_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_tuba_simple.tga [new file with mode: 0644]
models/weapons/g_uzi_simple.tga
models/weapons/make-sprites.sh [new file with mode: 0755]
mutators.cfg
qcsrc/client/View.qc
qcsrc/client/autocvars.qh
qcsrc/client/scoreboard.qc
qcsrc/common/mapinfo.qc
qcsrc/common/mapinfo.qh
qcsrc/common/notifications.qc
qcsrc/common/notifications.qh
qcsrc/common/stats.qh
qcsrc/common/util.qc
qcsrc/common/util.qh
qcsrc/menu/classes.c
qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c
qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c
qcsrc/menu/xonotic/dialog_settings_effects.c
qcsrc/menu/xonotic/playermodel.c
qcsrc/menu/xonotic/serverlist.c
qcsrc/menu/xonotic/slider_particles.c [new file with mode: 0644]
qcsrc/server/autocvars.qh
qcsrc/server/cl_client.qc
qcsrc/server/cl_player.qc
qcsrc/server/defs.qh
qcsrc/server/g_damage.qc
qcsrc/server/g_world.qc
qcsrc/server/miscfunctions.qc
qcsrc/server/mutators/mutator_buffs.qc
qcsrc/server/mutators/mutator_instagib.qc [new file with mode: 0644]
qcsrc/server/mutators/mutator_minstagib.qc [deleted file]
qcsrc/server/mutators/mutators.qc
qcsrc/server/mutators/mutators.qh
qcsrc/server/mutators/mutators_include.qc
qcsrc/server/t_plats.qc
qcsrc/server/tturrets/units/unit_plasma.qc
qcsrc/server/w_minstanex.qc
scripts/simpleitems.shader
sound/tutorial/1-welcome.ogg [deleted file]
sound/tutorial/10-at_corp_switch.ogg [deleted file]
sound/tutorial/11-behind_glass.ogg [deleted file]
sound/tutorial/12-crylink.ogg [deleted file]
sound/tutorial/13-no_imitations.ogg [deleted file]
sound/tutorial/14-room_with_switch.ogg [deleted file]
sound/tutorial/15-x_marks_the_spot.ogg [deleted file]
sound/tutorial/16-shoot_with_electro.ogg [deleted file]
sound/tutorial/17-deeper.ogg [deleted file]
sound/tutorial/18-fire_then_fire.ogg [deleted file]
sound/tutorial/19-activates_the_buried_switch.ogg [deleted file]
sound/tutorial/2-jumppad.ogg [deleted file]
sound/tutorial/20-at_corp_says_you_are_smart.ogg [deleted file]
sound/tutorial/21-rocket_launcher.ogg [deleted file]
sound/tutorial/22-as_a_special_feature.ogg [deleted file]
sound/tutorial/23-hold_the_fire_button.ogg [deleted file]
sound/tutorial/24-guide_the_rocket.ogg [deleted file]
sound/tutorial/25-omg_laser.ogg [deleted file]
sound/tutorial/26-the_red_platform.ogg [deleted file]
sound/tutorial/27-wga.ogg [deleted file]
sound/tutorial/28-grappling_hook.ogg [deleted file]
sound/tutorial/29-hooker.ogg [deleted file]
sound/tutorial/3-death.ogg [deleted file]
sound/tutorial/30-destination_of_the_hook.ogg [deleted file]
sound/tutorial/31-pogo_stick.ogg [deleted file]
sound/tutorial/32-way_to_go_champ.ogg [deleted file]
sound/tutorial/33-cr-vi.ogg [deleted file]
sound/tutorial/34-pierce_walls.ogg [deleted file]
sound/tutorial/35-shoot_your_instructor.ogg [deleted file]
sound/tutorial/36-hit_me.ogg [deleted file]
sound/tutorial/36-just_shoot_it.ogg [deleted file]
sound/tutorial/37-I_am_waiting.ogg [deleted file]
sound/tutorial/38-impatient.ogg [deleted file]
sound/tutorial/39-srs_trouble.ogg [deleted file]
sound/tutorial/4-big_jump.ogg [deleted file]
sound/tutorial/5-to_the_left_to_the_left.ogg [deleted file]
sound/tutorial/6-air_friction.ogg [deleted file]
sound/tutorial/7-rocket_at_you.ogg [deleted file]
sound/tutorial/8-shoot-switch.ogg [deleted file]
sound/tutorial/9-unbreakable.ogg [deleted file]
sound/tutorial/frag_on.ogg [deleted file]
sound/tutorial/misc-at_corp_rap.ogg [deleted file]
sound/tutorial/misc-detonate.ogg [deleted file]
sound/tutorial/misc-did_yoda_show_you_that.ogg [deleted file]
sound/tutorial/misc-door.ogg [deleted file]
sound/tutorial/misc-emergency_tele.ogg [deleted file]
sound/tutorial/misc-excellent.ogg [deleted file]
sound/tutorial/misc-good_work.ogg [deleted file]
sound/tutorial/misc-nice.ogg [deleted file]
sound/tutorial/misc-very_impressive.ogg [deleted file]
tooltips.db
tooltips.db.de
tooltips.db.es
tooltips.db.fr
tooltips.db.hu
tooltips.db.it
tooltips.db.ru
tooltips.db.uk
weapons.cfg

index 89e4680d301a3183718c37d98d3214d120a710f0..bc99aa60a3603a05263bab7e195ac267726d446d 100644 (file)
@@ -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
index afe2a535c7e46608877ac249a46e2289a6b63f73..7f97286bf30eb19c17cbe52460690c45bea429e5 100644 (file)
@@ -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
index 34978b5fb2fed5058b573585efe1c988bb4c5648..d363d0d4da59bdcdd006274ad0bf736866ce4caf 100644 (file)
@@ -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
index b47984f4493aa84959ca791360f5378039142df2..6297eaebd96e8dab6064898ef467b7286ca60d58 100644 (file)
@@ -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
index 639a44085568c121c43656718aed0014fea5abaf..f153765e6046d269b7c833d068c6d6e50b07c7f2 100644 (file)
@@ -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
index b51d4170e98ead256944ee64f596cf60da700fc0..cb5a224fb0561be759a20652a104fd3ca7ba38a7 100644 (file)
@@ -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"
index 6b830eab9312c95fb4f0fb427a2546e2d4f97f95..212df32acd993872c216c319a3beae8f4afe36a1 100644 (file)
@@ -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
index a3953b4a718a349cfb0d7b934a3224bb8b16cae1..ac4675db8918568466a1977eef5f10604188cf81 100644 (file)
@@ -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
index 17fb34727deceeeb931a487c704b1dc28d00273b..70797fa56e31541380901bf92e9b5e9a7d35a351 100644 (file)
@@ -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
index a8909ffab136879ba8fb58c29ce38e2efd0dbe3a..58ebba378825d4571d4b1a70dab36f49ca93ff1d 100644 (file)
@@ -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"
index 14ab01f958711a028a4d3e14e1bc96c17b298219..7ec54de9c195583c59c0742eb7a5f45a70db479f 100644 (file)
@@ -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
index eba61119ad466c9fa0d6564c44e9f989ff625259..307211b42ab7cfe19d59bab4565b5a4f6a8de611 100644 (file)
@@ -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"
index 75c6ecde79af737251e036724efe57de9a81d7fc..982a31699d67c70b92f28cea9724e5f48f216773 100644 (file)
@@ -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
index 1ebad855bdcd272c29580db615f1fae2c6299cee..050613e742675ff767e378a08e93e56ecd871d84 100644 (file)
@@ -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
index 17e9eac9857f70952601d33d88fbab0d9baeaeea..21372925c5ed1cb38c627eacd904a438a6f0d14b 100644 (file)
@@ -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
index e2c6d70ac4698c5077bc449eb194bb7b9a0b0279..426fb1f322da4bcbfb543d6c87a4722eb2c61b1a 100644 (file)
@@ -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
index 94d564e464d2300d7eff070be466d604313cbecc..6e3bbdbf19b3d6fa04be27d8bd5c7608f40f83ef 100644 (file)
@@ -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
index 3611887733625dcb5756d6dea1438980c276065d..b87bc637848276e82627460db68b535befd8c9e4 100644 (file)
@@ -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
index 171d2db281f1e19a6d514150a65586c10f2219fd..dfb8e7672eb0ff9b790e93fbc93de64275be816f 100644 (file)
@@ -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"
index 1e9faed0c2565d518d3c6380ac8b55f1ffd428a9..9a022e15ef3f48c387d1bd3eee43389ac2848df3 100644 (file)
@@ -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
index 677f55f77dbad2ac6f3aa6172c9be9b89511a2e0..1e45ea85a0e97655f076699b6567502f06e4abf3 100644 (file)
@@ -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
index db7e4dfed8fdd2123a8b581272623e8562a5e3b5..1b26d19a90333a05ebfafff1ec47a70dbf421c23 100644 (file)
@@ -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
index dd2ecb619e2ff5e62592b01a0726f50d229080b8..63a5a61db7067f911dcfdeaf18cf4aba918ed2c6 100644 (file)
@@ -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
index 079411cc6226d5b212cc1a0d61e460507cd6bf0b..befc34c493084d620ca5aaadeb86f3fe584091fd 100644 (file)
@@ -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
index 18af3e8951af7491b789083dc8c097f249327cc2..7b66c50155a8432dd22a994bbbe1fcbe9c447124 100644 (file)
@@ -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 ""
index 456061536d6986d9973275bfc62067906a81aa4d..a514ce5cb67d9f2eb563ff8d4220d3a510ee61f7 100644 (file)
@@ -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
index d98ba526d8e4f97f4a441def438be5bad3bc08f8..b7e9a98a3a7a78fa396023d1f3fe615cd4cb4c4a 100644 (file)
@@ -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
index 58191f266e907d85f9adf26ccad59d440fc62b49..66eed5aa5d55dc897c6cd748848cd5ed82cb3efe 100644 (file)
@@ -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
index dd8cce9a787ed27958b26190c69b2ec86ce6519e..63dcd134a066f0c4255c4ad380f085249e177d0a 100644 (file)
@@ -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
index 7c39fbbef6335d8467d2747f119c9b96ab4421cd..9018ee2c94375ba8740fa35f3357f55ff1d3cf15 100644 (file)
@@ -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
index 6897ccc16fa9cfdd6e44e504e18b495570ba5054..0cf3a899cbcebf5fa385a66ffd3fc07f326ca3c0 100644 (file)
@@ -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
index d530f03b8b7ff004af587d317a6d2ae5f0c23b89..5909f3b83dc956b18141d4c0111b251c60080813 100644 (file)
@@ -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
index 4ed1381201a350b10cc7a0442120af1687d892eb..919d2ead2c70caaaf702f06314fe44b66732dd0c 100644 (file)
@@ -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
index 3b8198a6d30b4f308a84f7f4aa6df8b061b0fe70..103276d0be776e382b738f48d2b264912eea07f0 100644 (file)
@@ -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
index 2f864a686e7887ae788d7718d742a3df7b4528e8..27b579027f93063f207b8fbf849e538a7ea4dff3 100644 (file)
@@ -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
index d561d64800c737dbd56f117de3fcee61d8a7db69..46977b885488e8214865814686a7293dca180f15 100644 (file)
@@ -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
index 10aeee8e16808386ba2318d3e446d07cee30e92b..44843b7058baf5ccd13a0e37c88694b99620f9a1 100644 (file)
@@ -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
index 6744e652a56af85d517bfb2ef39a77a7b0dabb28..981562cfcf28bbcb5784ed3a4a3c9f31c5eaf794 100644 (file)
@@ -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
index c956630f33bb961f2f237497e9700c3f4ac7fbaf..01c99adf0b7dacce11a5f34b67f52b6c5fb23b12 100644 (file)
@@ -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
index e89ead1dab4bdaa4d725868d4180b4c44971aab7..2610d2b92db356797a22a0b52605efc304c05f41 100644 (file)
@@ -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
index c2d811779c83544114b45874844d3698edbb0898..f75a15fb8ef55b3cf7b06abeaec7ba451ae9ab9f 100644 (file)
@@ -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
index 50f41f35e5dbe3344d6d2a9645903e9fd8cf6c9e..ba14c232a63c85f3cf6071d35ce218884dadf33f 100644 (file)
@@ -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
index 489571a91a51998e0519c863be828442d82283cb..e8a6c90446eb9192a7c7ce5ae58e5c622896ae22 100644 (file)
@@ -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
index fc5a62b248af63bbd1884718cff76a5e94d66db7..f7b07b0e67cca74072b7d92eadf8b525348c628c 100644 (file)
@@ -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
index 2a48e8d4e552144d7a9a65ee4ddb3f21dc2f9d69..c997d01f36488d7771766fe38956f883b8bcc9bc 100644 (file)
@@ -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
index c5933c1ab601576e6929efbac9ed42a70cbc72ee..25ce2d07c6698f856bd2a79c891645df8ccae3a9 100644 (file)
@@ -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 (file)
index 0000000..a5cc3e6
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 (file)
index 0000000..df43c61
--- /dev/null
@@ -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 (file)
index 0000000..2e94008
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 (file)
index 0000000..a5cc3e6
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 (file)
index 0000000..6b2726f
--- /dev/null
@@ -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 (file)
index 0000000..2a9c449
Binary files /dev/null and b/models/weapons/g_campingrifle_simple.tga differ
index f4054b7beca99c12d8bce595362efa95b4a05a5d..0bbdbc7bfa892c8a2ad2aa53facb44f06d4e3949 100644 (file)
Binary files a/models/weapons/g_crylink_simple.tga and b/models/weapons/g_crylink_simple.tga differ
index b523c722e32a60c0df4d60f82c1d5c13bfddce07..02c67de755bd6d3b443b798697ac8f4d68605ed7 100644 (file)
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 (file)
index 0000000..a5cc3e6
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 (file)
index 0000000..cceb6a6
--- /dev/null
@@ -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 (file)
index 0000000..2632b76
Binary files /dev/null and b/models/weapons/g_fireball_simple.tga differ
index e138aa42e71c1776426d63f632882f9fcf46c168..114c6f25f5431c8a2649161b2e1d220c1570075d 100644 (file)
Binary files a/models/weapons/g_gl_simple.tga and b/models/weapons/g_gl_simple.tga differ
index 4c82e4beee45ac267cf24ecfb47b70274e4183df..fb99dea73952998b8e23e578b6c1d554ffb3e9e4 100644 (file)
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 (file)
index 0000000..a5cc3e6
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 (file)
index 0000000..020dcc1
--- /dev/null
@@ -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 (file)
index 0000000..6d2302c
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 (file)
index 0000000..a5cc3e6
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 (file)
index 0000000..2c8bd5f
--- /dev/null
@@ -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 (file)
index 0000000..be44b81
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 (file)
index 0000000..a5cc3e6
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 (file)
index 0000000..02e24bc
--- /dev/null
@@ -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 (file)
index 0000000..66223a3
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 (file)
index 0000000..a5cc3e6
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 (file)
index 0000000..f9d4b61
--- /dev/null
@@ -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 (file)
index 0000000..dfba264
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 (file)
index 0000000..a5cc3e6
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 (file)
index 0000000..3a255b4
--- /dev/null
@@ -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 (file)
index 0000000..68bf311
Binary files /dev/null and b/models/weapons/g_minstanex_simple.tga differ
index 27c984f8a19a03899373e464c8941f9003709e4f..a254e962d8489f251301b43a9e00ecd22b632b40 100644 (file)
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 (file)
index 0000000..a5cc3e6
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 (file)
index 0000000..944e14a
--- /dev/null
@@ -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 (file)
index 0000000..aa6f6cd
Binary files /dev/null and b/models/weapons/g_porto_simple.tga differ
index d65fa8788b4030e21160c61fb0ef91dd971a0745..2ac19c8f53a2a9d5763fbc87a1699fb69f9a90e3 100644 (file)
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 (file)
index 0000000..a5cc3e6
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 (file)
index 0000000..5123515
--- /dev/null
@@ -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 (file)
index 0000000..322ee53
Binary files /dev/null and b/models/weapons/g_seeker_simple.tga differ
index 37da2f8629232c453e012071ff6bd1b27b76b78e..3c120c89ae6625827d3eb4e5fe2a8a25cea83888 100644 (file)
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 (file)
index 0000000..a5cc3e6
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 (file)
index 0000000..3fd8bd8
--- /dev/null
@@ -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 (file)
index 0000000..8af65e0
Binary files /dev/null and b/models/weapons/g_tuba_simple.tga differ
index d9b5df404a54bc6ec61a93aa41acd13c037ec319..55d68cd930f2e2dfb60bba49ade7772181dd12b6 100644 (file)
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 (executable)
index 0000000..50f3fc6
--- /dev/null
@@ -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
index 4b79048677499c02e4af4a2ff9071b05702d72c7..63a4356b82e1a686cee946135e3d3e8b61849837 100644 (file)
@@ -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"
 
 
 // =========
index a069faa46578dd07f5aa3600220bd233400185b6..166ea07f0903e287d9785c21fe3a443d0087f03e 100644 (file)
@@ -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)
index 28ef157e50d74bfde213a46b1c62d47b24adc0db..55fbebd7f30cf738fff06d0710ce0901eb2db025 100644 (file)
@@ -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;
index 52bf9190b5e0edb2c8aa26cc156d11a601295a2f..6db31ffed1317f4a4b318218c9e496371c577480 100644 (file)
@@ -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];
 
index 1c7f7163ce8ec4c33383bc69ce961cb295d0c6ee..84df17516d09f7c1a7873618eaa0874ccb27d660 100644 (file)
@@ -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;
 }
index aa1d8fd5e7fbd3c05756aed46131fb0bcd2cdd61..a933a6db50a5a4f93e4cc15231f8ef5642b56584 100644 (file)
@@ -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;
index e2a74bded137fa17e02df2ceecc4b7e017cf8a06..a5a2ff445e60d376463d1265af9ba19657cd5575 100644 (file)
@@ -2029,7 +2029,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; \
index 2afd2987c959178875fc8f2f9cbf7f789a158696..b45c648f7fa8839242533ffb71330756fe489266 100644 (file)
@@ -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) \
index 793582e1264b092483e2b7e9839dd27e847b61a1..f358069e21c2c4bd2fc03dddb3ea7b1acc9f97e0 100644 (file)
@@ -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;
index c50a3ba5350d3b1fd1bdb394bc0b3ca5852026dd..2c6636a3b9a8bd8169ba0cacbc3c9b47cf9d6b92 100644 (file)
@@ -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")
index 9b969134a56ef21ed1968505b3008aae94bd37ac..9ddc925795b8add1c3fef863aff21c2f8a37b8c7 100644 (file)
@@ -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
index ee1ce5d31e025d709b9b3f983b3c420f7a0cc429..46d0c0269e01d8a3532941343457e1cb39fe346b 100644 (file)
 #include "xonotic/dialog_hudpanel_centerprint.c"
 #include "xonotic/dialog_hudpanel_buffs.c"
 #include "xonotic/slider_picmip.c"
+#include "xonotic/slider_particles.c"
index 8e4bc5a23cb153c815da6a06a48477b154229a06..e5dec8fff5478e8948d14539f259cfec3026cd35 100644 (file)
@@ -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);
index 055f5449f302319ed6c230e017f306345e95dc58..3bac353053bc9a69e5213a3190efa4acbbf05046 100644 (file)
@@ -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);
index e3b562ee3bb0459385968fa0a99e16f38bd63151..c56d972d9da92eac957a6a3888709eef3a444456 100644 (file)
@@ -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));
index a09d85e0d14f5602c2063b49488353fd0f6827de..652c581c00f6110e3cc66785d009adcb6cb89319 100644 (file)
@@ -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();
 
index 7537027512bfee66d7f5ad43c7bca65f9864aaca..ed68acd713ed1861de710deb46c1fdbe449ba81b 100644 (file)
@@ -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 (file)
index 0000000..db29f55
--- /dev/null
@@ -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
index 11cf993df22915f8a8892d81bb192b6186e34144..4d207955ca610ba2feb29c0d8156d4bfe9092871 100644 (file)
@@ -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")
 
index 84657d6f6edba2fa1b6411420e400fa496954de3..f55c2658b77ff057a7573c1d098c8880313d31af 100644 (file)
@@ -503,6 +503,8 @@ void PutClientInServer (void)
                self.angles = spot.angles;
 
                self.angles_z = 0; // never spawn tilted even if the spot says to
+               if(IS_BOT_CLIENT(self))
+                       self.v_angle = self.angles;
                self.fixangle = TRUE; // turn this way immediately
                self.velocity = '0 0 0';
                self.avelocity = '0 0 0';
@@ -1415,7 +1417,7 @@ void player_powerups (void)
        Fire_ApplyDamage(self);
        Fire_ApplyEffect(self);
 
-       if (!g_minstagib)
+       if (!g_instagib)
        {
                if (self.items & IT_STRENGTH)
                {
index c11e92051074b7fcbf15b208b774f14d96c00d88..5aab58832053d745835460e21c310116f364e01a 100644 (file)
@@ -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;
@@ -535,7 +542,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht
                        self.health = self.health - take;
                        // pause regeneration for 5 seconds
                        if(take)
-                self.pauseregen_finished = max(self.pauseregen_finished, time + autocvar_g_balance_pause_health_regen);
+                               self.pauseregen_finished = max(self.pauseregen_finished, time + autocvar_g_balance_pause_health_regen);
 
                        if (time > self.pain_finished)          //Don't switch pain sequences like crazy
                        {
@@ -570,12 +577,16 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht
                                                        PlayerSound(playersound_pain25, CH_PAIN, VOICETYPE_PLAYERSOUND);
                                        }
                                }
+                       }
 
-                               // throw off bot aim temporarily
-                               float shake;
+                       // throw off bot aim temporarily
+                       float shake;
+                       if(IS_BOT_CLIENT(self) && self.health >= 1)
+                       {
                                shake = damage * 5 / (bound(0,skill,100) + 1);
                                self.v_angle_x = self.v_angle_x + (random() * 2 - 1) * shake;
                                self.v_angle_y = self.v_angle_y + (random() * 2 - 1) * shake;
+                               self.v_angle_x = bound(-90, self.v_angle_x, 90);
                        }
                }
                else
index dd0b5c22bb13792e6ffc89c4a98b302cbed6b02a..b892e24f2b2f063b363d35ce453e1dfdbc62c49c 100644 (file)
@@ -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;
index 47443e6d70f34acfdc175d3a16efb71a6823ef18..02488b8b11be4a517573f601ac439a01a25577ed 100644 (file)
@@ -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;
index a1460ded8aa0e5bf6f19952754ba83d3213ee5be..7eda0103c4c9583c6f39e2dd993d7a75cf5d8264 100644 (file)
@@ -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);
 }
 
 
index 40421bbc0fcd9345490cc5c63dcdac2ef368d481..fc9e84e586c2c1d63735016edd3e05e075e96692 100644 (file)
@@ -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");
index 5aa534c33367726ce895f99f114193087ac207da..765619df7e488305bc0222f0737d3bdb974c609f 100644 (file)
@@ -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 (file)
index 0000000..bd61023
--- /dev/null
@@ -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 (file)
index 20811ad..0000000
+++ /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;
-}
index 71569b7f9833f41c9a1323d4dc49b77e4c59875d..2f96e9e8a077f44aded1bc151c4978be54370aa9 100644 (file)
@@ -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);
index eff44c2e327093bfd1470db343f1f9a74d059f30..955ba1a526f24b5bd0f4d0d5d1e1eeefd29d6352 100644 (file)
@@ -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);
index c1932db9d615b4b2d1690d0d9d67013e412c1cf3..220bd059574058f7d6f4fb8e6f7efa7ac9eedec9 100644 (file)
@@ -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"
index d3f72b7ebc4bdad9355cf89b6462e6d10b93f2da..353e5e9feb4f4b64c146cb2f456c49181b13fa93 100644 (file)
@@ -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
index 9fce826a2df307d0c74c4658d4d745908182abc9..26a3dc04e42992eae003a698465b5659e525665e 100644 (file)
@@ -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;
index 9fb80c6d515d3a03bfee39e7efccea6f4fce6792..becb2e8b7cd7a15a71a14e8ea01d119558d3907f 100644 (file)
@@ -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;
index 69376e86091a684c6030bd717b500f57bdfac6cf..92e9e5affd847cbdc578d8d41239ff7d3ba9c4d0 100644 (file)
@@ -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 (file)
index 05ff8eb..0000000
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 (file)
index d312e51..0000000
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 (file)
index 89fadfc..0000000
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 (file)
index 1b69ddf..0000000
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 (file)
index 2939a80..0000000
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 (file)
index c311f4e..0000000
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 (file)
index b3781c6..0000000
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 (file)
index 6a142d9..0000000
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 (file)
index 7da896c..0000000
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 (file)
index 2d5d382..0000000
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 (file)
index 76940bc..0000000
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 (file)
index 964efa2..0000000
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 (file)
index fd5f9fd..0000000
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 (file)
index 31824d0..0000000
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 (file)
index f2ccfda..0000000
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 (file)
index b5f43b2..0000000
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 (file)
index 9271d61..0000000
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 (file)
index ad53e9a..0000000
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 (file)
index 48b6ced..0000000
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 (file)
index 3066024..0000000
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 (file)
index e46ea02..0000000
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 (file)
index d297b4e..0000000
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 (file)
index 87d40d0..0000000
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 (file)
index 5b17502..0000000
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 (file)
index 19ef0a9..0000000
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 (file)
index aab3ce4..0000000
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 (file)
index 5d19619..0000000
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 (file)
index c50042d..0000000
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 (file)
index 5c27ef8..0000000
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 (file)
index eccbc9a..0000000
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 (file)
index 4b1c30a..0000000
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 (file)
index 78a6cfb..0000000
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 (file)
index 0b8d173..0000000
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 (file)
index ae3bace..0000000
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 (file)
index 24d5032..0000000
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 (file)
index 3a3830a..0000000
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 (file)
index 811fbe6..0000000
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 (file)
index 5163486..0000000
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 (file)
index 5615297..0000000
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 (file)
index 852b537..0000000
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 (file)
index e8636cb..0000000
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 (file)
index 9ec4f4a..0000000
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 (file)
index 695c592..0000000
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 (file)
index cec140a..0000000
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 (file)
index 93c9532..0000000
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 (file)
index efa552a..0000000
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 (file)
index 76691ae..0000000
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 (file)
index 0b90df0..0000000
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 (file)
index 06b711d..0000000
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 (file)
index 49082a5..0000000
Binary files a/sound/tutorial/misc-very_impressive.ogg and /dev/null differ
index 9be8795362b66ed72e60102c6f90458ed6518ddc..a0c06485b20cb4b950049f05c5bc00ed9a5be66c 100644 (file)
@@ -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
index ed455da109ec80f9c511389eebea5c9f7267e1e9..7ba71e27452e14ebe90b663a431fe828f26060f4 100644 (file)
@@ -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
index 17c8939df8251912bc633e44e38003c1e81a18b1..4cab5a6383672ed299bb7e868953e5c07c4908f5 100644 (file)
@@ -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
index 2fc82b5b4f81df66eb678839955f4d32839ff23c..3f3819e496e38b0406b9b7c2cabd6013335c650d 100644 (file)
@@ -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
index 81347c7577f0af6e28da4d2329f728382fdc148d..4080f0286c2ed683a0a298ceb270c789143dab23 100644 (file)
@@ -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 
 
index e1d1825dddd850a4cea441ce6d7504793003b34f..03169993cc023099882a68965f0057061a4a695f 100644 (file)
@@ -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
index 9a6d72fbc51d9bb8801465d9840f1c25a150c63a..c5b5fccf599a858279aaf8752a3025428fe6c85a 100644 (file)
@@ -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\Выбрать все карты
index 31695a6315400860e849782bed2131e298ee2f4d..bece5dc112520f8eb3589302f707fc5d60e86407 100644 (file)
@@ -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/Обрати все\Обрати всі мапи
index 80305a5fe299f855717758a9b52fd6ba862951c9..eb768df231f9023827cbffe4b55c681c366cedbd 100644 (file)
@@ -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"