]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into Mario/damagetext_reliable
authorMario <zacjardine@y7mail.com>
Sun, 20 Dec 2020 03:19:48 +0000 (13:19 +1000)
committerMario <zacjardine@y7mail.com>
Sun, 20 Dec 2020 03:19:48 +0000 (13:19 +1000)
.tx/merge-base
common.cs.po
qcsrc/client/hud/hud.qc
qcsrc/client/hud/panel/physics.qc
qcsrc/client/hud/panel/radar.qc
qcsrc/client/teamradar.qh
qcsrc/client/view.qc
qcsrc/common/physics/movetypes/follow.qc
qcsrc/common/teams.qh
qcsrc/menu/xonotic/dialog_firstrun.qc
qcsrc/menu/xonotic/dialog_settings_audio.qc

index e43a3376bd7c9ce501c55180aba6ee526dcae448..047efc1b98f0b50eddd0272519d04e92764b482e 100644 (file)
@@ -1 +1 @@
-Thu Dec 10 07:23:45 CET 2020
+Sat Dec 19 07:23:35 CET 2020
index 5e05757262ad9f1e75191cd463790915fa1df015..69e02e87cf980278a421c90ae6cba2bcc3f98861 100644 (file)
@@ -6,6 +6,7 @@
 # Martin Taibr <taibr.martin@gmail.com>, 2017
 # GamingasCZ <gamingforyou875@gmail.com>, 2019
 # Jan Kocka <kockahonza@gmail.com>, 2019
+# Jiří Vrána <jirkacz199@gmail.com>, 2020
 # Martin Taibr <taibr.martin@gmail.com>, 2017
 # NONE <nechtom@gmail.com>, 2015
 # Tomáš Volavka <czheron@gmail.com>, 2015,2018
@@ -15,8 +16,8 @@ msgstr ""
 "Project-Id-Version: Xonotic\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-22 07:23+0100\n"
-"PO-Revision-Date: 2020-11-22 06:23+0000\n"
-"Last-Translator: divVerent <divVerent@xonotic.org>\n"
+"PO-Revision-Date: 2020-12-18 20:00+0000\n"
+"Last-Translator: Jiří Vrána <jirkacz199@gmail.com>\n"
 "Language-Team: Czech (http://www.transifex.com/team-xonotic/xonotic/language/"
 "cs/)\n"
 "Language: cs\n"
@@ -229,7 +230,7 @@ msgstr "Hráč %d"
 #: qcsrc/client/hud/panel/quickmenu.qc:597
 #, c-format
 msgid "Submenu%d"
-msgstr ""
+msgstr "Podmenu%d"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:602
 #, c-format
@@ -288,7 +289,7 @@ msgstr ""
 
 #: qcsrc/client/hud/panel/quickmenu.qc:798
 msgid "QMCMD^free item, icon"
-msgstr ""
+msgstr "QMCMD^předmět zdarma, ikona"
 
 #: qcsrc/client/hud/panel/quickmenu.qc:799
 msgid "QMCMD^took item (l:%l^7)"
@@ -622,7 +623,7 @@ msgstr "SCO^nejrychlejší"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:113
 msgid "Time of fastest lap (Race/CTS)"
-msgstr ""
+msgstr "Čas nejrychlejšího kola (Race/CTS)"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:114
 msgid "Number of faults committed"
@@ -634,7 +635,7 @@ msgstr ""
 
 #: qcsrc/client/hud/panel/scoreboard.qc:115
 msgid "Number of flag carrier kills"
-msgstr ""
+msgstr "Počet zabitých vlajkonošů"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:115
 msgid "SCO^fckills"
@@ -650,7 +651,7 @@ msgstr "SCO^fps"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:117
 msgid "Number of kills minus suicides"
-msgstr ""
+msgstr "Počet zabití mínus sebevraždy"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:117
 msgid "SCO^frags"
@@ -674,13 +675,13 @@ msgstr ""
 
 #: qcsrc/client/hud/panel/scoreboard.qc:120
 msgid "SCO^k/d"
-msgstr ""
+msgstr "SCO^z/s"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:120
 #: qcsrc/client/hud/panel/scoreboard.qc:121
 #: qcsrc/client/hud/panel/scoreboard.qc:122
 msgid "The kill-death ratio"
-msgstr ""
+msgstr "Poměr zabití ku smrtem"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:121
 msgid "SCO^kdr"
@@ -692,15 +693,15 @@ msgstr ""
 
 #: qcsrc/client/hud/panel/scoreboard.qc:123
 msgid "Number of kills"
-msgstr ""
+msgstr "Počet zabití"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:123
 msgid "SCO^kills"
-msgstr ""
+msgstr "SCO^zabití"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:124
 msgid "Number of laps finished (Race/CTS)"
-msgstr ""
+msgstr "Počet dokončených kol (Race/CTS)"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:124
 msgid "SCO^laps"
@@ -770,7 +771,7 @@ msgstr ""
 
 #: qcsrc/client/hud/panel/scoreboard.qc:133
 msgid "Number of players pushed into void"
-msgstr ""
+msgstr "Počet hráčů žďuchnutých do temnoty"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:133
 msgid "SCO^pushes"
@@ -786,7 +787,7 @@ msgstr ""
 
 #: qcsrc/client/hud/panel/scoreboard.qc:135
 msgid "Number of flag returns"
-msgstr ""
+msgstr "Počet vrácených vlajek"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:135
 msgid "SCO^returns"
@@ -794,11 +795,11 @@ msgstr ""
 
 #: qcsrc/client/hud/panel/scoreboard.qc:136
 msgid "Number of revivals"
-msgstr ""
+msgstr "Počet oživení"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:136
 msgid "SCO^revivals"
-msgstr ""
+msgstr "SCO^oživení"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:137
 msgid "Number of rounds won"
@@ -826,7 +827,7 @@ msgstr "SCO^sebevraždy"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:140
 msgid "Number of kills minus deaths"
-msgstr ""
+msgstr "Počet zabití mínus smrti"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:140
 msgid "SCO^sum"
@@ -846,7 +847,7 @@ msgstr ""
 
 #: qcsrc/client/hud/panel/scoreboard.qc:142
 msgid "SCO^teamkills"
-msgstr ""
+msgstr "SCO^teamkilly"
 
 #: qcsrc/client/hud/panel/scoreboard.qc:143
 msgid "Number of ticks (Domination)"
index 9bbee3cd30b9d860520be4eacb50194c4aa51677..9593e193652a6843a290fe7b47f55c22c52907c1 100644 (file)
@@ -293,11 +293,11 @@ void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, flo
                        pic = "gfx/hud/default/progressbar_vertical";
                }
 
-        if (baralign == 1) // bottom align
+               if (baralign == 1) // bottom align
                        theOrigin.y += (1 - length_ratio) * theSize.y;
-        else if (baralign == 2) // center align
-            theOrigin.y += 0.5 * (1 - length_ratio) * theSize.y;
-        else if (baralign == 3) // center align, positive values down, negative up
+               else if (baralign == 2) // center align
+                       theOrigin.y += 0.5 * (1 - length_ratio) * theSize.y;
+               else if (baralign == 3) // center align, positive values down, negative up
                {
                        theSize.y *= 0.5;
                        if (length_ratio > 0)
@@ -337,9 +337,9 @@ void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, flo
 
                if (baralign == 1) // right align
                        theOrigin.x += (1 - length_ratio) * theSize.x;
-        else if (baralign == 2) // center align
-            theOrigin.x += 0.5 * (1 - length_ratio) * theSize.x;
-        else if (baralign == 3) // center align, positive values on the right, negative on the left
+               else if (baralign == 2) // center align
+                       theOrigin.x += 0.5 * (1 - length_ratio) * theSize.x;
+               else if (baralign == 3) // center align, positive values on the right, negative on the left
                {
                        theSize.x *= 0.5;
                        if (length_ratio > 0)
index 977dc797e2247fba66d4f7784ec6cefe5eca1f94..6a0baed31bc124f644e07985d8a65fc33d32a18b 100644 (file)
@@ -136,7 +136,7 @@ void HUD_Physics()
        int speed_baralign, acceleration_baralign;
        if (autocvar_hud_panel_physics_baralign == 1)
                acceleration_baralign = speed_baralign = 1;
-    else if(autocvar_hud_panel_physics_baralign == 4)
+       else if(autocvar_hud_panel_physics_baralign == 4)
                acceleration_baralign = speed_baralign = 2;
        else if (autocvar_hud_panel_physics_flip)
        {
@@ -204,7 +204,7 @@ void HUD_Physics()
                                // divide by f to make it start from 1
                                f = cos( ((time - top_speed_time) / f) * PI/2 );
                        }
-            else //hide top speed 0, it would be stupid
+                       else // hide top speed 0
                                f = 0;
                }
                if (f > 0)
@@ -217,19 +217,19 @@ void HUD_Physics()
                                vector peak_size = '0 0 0';
                                if (speed_baralign == 0)
                                        peak_offsetX = min(top_speed, max_speed)/max_speed * panel_size.x;
-                else if (speed_baralign == 1)
+                               else if (speed_baralign == 1)
                                        peak_offsetX = (1 - min(top_speed, max_speed)/max_speed) * panel_size.x;
-                else // if (speed_baralign == 2)
-                    peak_offsetX = min(top_speed, max_speed)/max_speed * panel_size.x * 0.5;
+                               else // if (speed_baralign == 2)
+                                       peak_offsetX = min(top_speed, max_speed)/max_speed * panel_size.x * 0.5;
                                peak_size.x = floor(panel_size.x * 0.01 + 1.5);
-                peak_size.y = panel_size.y;
-                if (speed_baralign == 2) // draw two peaks, on both sides
-                {
-                    drawfill(panel_pos + speed_offset + eX * (0.5 * panel_size.x + peak_offsetX - peak_size.x), peak_size, autocvar_hud_progressbar_speed_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
-                    drawfill(panel_pos + speed_offset + eX * (0.5 * panel_size.x - peak_offsetX + peak_size.x), peak_size, autocvar_hud_progressbar_speed_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
-                }
-                else
-                    drawfill(panel_pos + speed_offset + eX * (peak_offsetX - peak_size.x), peak_size, autocvar_hud_progressbar_speed_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                               peak_size.y = panel_size.y;
+                               if (speed_baralign == 2) // draw two peaks, on both sides
+                               {
+                                       drawfill(panel_pos + speed_offset + eX * (0.5 * panel_size.x + peak_offsetX - peak_size.x), peak_size, autocvar_hud_progressbar_speed_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                                       drawfill(panel_pos + speed_offset + eX * (0.5 * panel_size.x - peak_offsetX + peak_size.x), peak_size, autocvar_hud_progressbar_speed_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                               }
+                               else
+                                       drawfill(panel_pos + speed_offset + eX * (peak_offsetX - peak_size.x), peak_size, autocvar_hud_progressbar_speed_color, f * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
                        }
 
                        //top speed
index b87ab97762f1cf15cf103bf9e8bc2c382d60a400..f73d5fa239c4b3ff972a61456c91c1ad6368e390 100644 (file)
@@ -173,6 +173,24 @@ void HUD_Radar_Mouse()
        }
 }
 
+float HUD_Radar_GetZoomFactor(int zoommode)
+{
+       switch(zoommode)
+       {
+               case 1: return 1 - current_zoomfraction;
+               case 2: return 0;
+               case 3: return 1;
+       }
+       return current_zoomfraction;
+}
+
+float HUD_Radar_GetAngle(int rotation)
+{
+       if (rotation)
+               return 90 * rotation;
+       return view_angles.y - 90;
+}
+
 void HUD_Radar()
 {
        if (!autocvar__hud_configure)
@@ -198,7 +216,7 @@ void HUD_Radar()
 
        HUD_Panel_LoadCvars();
 
-       float f = 0;
+       float zoom_factor = 0;
 
        if (hud_panel_radar_maximized && !autocvar__hud_configure)
        {
@@ -216,61 +234,14 @@ void HUD_Radar()
                        radar_panel_modified = true;
                strcpy(panel.current_panel_bg, panel_bg);
 
-               switch(hud_panel_radar_maximized_zoommode)
-               {
-                       default:
-                       case 0:
-                               f = current_zoomfraction;
-                               break;
-                       case 1:
-                               f = 1 - current_zoomfraction;
-                               break;
-                       case 2:
-                               f = 0;
-                               break;
-                       case 3:
-                               f = 1;
-                               break;
-               }
-
-               switch(hud_panel_radar_maximized_rotation)
-               {
-                       case 0:
-                               teamradar_angle = view_angles.y - 90;
-                               break;
-                       default:
-                               teamradar_angle = 90 * hud_panel_radar_maximized_rotation;
-                               break;
-               }
+               zoom_factor = HUD_Radar_GetZoomFactor(hud_panel_radar_maximized_zoommode);
+               teamradar_angle = HUD_Radar_GetAngle(hud_panel_radar_maximized_rotation);
        }
+
        if (!hud_panel_radar_maximized && !autocvar__hud_configure)
        {
-               switch(hud_panel_radar_zoommode)
-               {
-                       default:
-                       case 0:
-                               f = current_zoomfraction;
-                               break;
-                       case 1:
-                               f = 1 - current_zoomfraction;
-                               break;
-                       case 2:
-                               f = 0;
-                               break;
-                       case 3:
-                               f = 1;
-                               break;
-               }
-
-               switch(hud_panel_radar_rotation)
-               {
-                       case 0:
-                               teamradar_angle = view_angles.y - 90;
-                               break;
-                       default:
-                               teamradar_angle = 90 * hud_panel_radar_rotation;
-                               break;
-               }
+               zoom_factor = HUD_Radar_GetZoomFactor(hud_panel_radar_zoommode);
+               teamradar_angle = HUD_Radar_GetAngle(hud_panel_radar_rotation);
        }
 
        vector pos, mySize;
@@ -332,19 +303,10 @@ void HUD_Radar()
        if(bigsize > normalsize)
                normalsize = bigsize;
 
-       teamradar_size =
-                 f * bigsize
-               + (1 - f) * normalsize;
-       teamradar_origin3d_in_texcoord = teamradar_3dcoord_to_texcoord(
-                 f * mi_center
-               + (1 - f) * view_origin);
-
-       drawsetcliparea(
-               pos.x,
-               pos.y,
-               mySize.x,
-               mySize.y
-       );
+       teamradar_size = zoom_factor * bigsize + (1 - zoom_factor) * normalsize;
+       teamradar_origin3d_in_texcoord = teamradar_3dcoord_to_texcoord(zoom_factor * mi_center + (1 - zoom_factor) * view_origin);
+
+       drawsetcliparea(pos.x, pos.y, mySize.x, mySize.y);
 
        draw_teamradar_background(hud_panel_radar_foreground_alpha);
 
index 41c7d46c564465924e272e585f249db640639b23..8bf54db1bd1f0a92e0a565912c6ae4d5633e5d40 100644 (file)
@@ -19,11 +19,11 @@ float v_flipped;
 
 float hud_panel_radar_scale; // window size = ...qu
 float hud_panel_radar_foreground_alpha;
-float hud_panel_radar_rotation;
+int hud_panel_radar_rotation;
 vector hud_panel_radar_size;
-float hud_panel_radar_zoommode;
-float hud_panel_radar_maximized_zoommode;
-float hud_panel_radar_maximized_rotation;
+int hud_panel_radar_zoommode;
+int hud_panel_radar_maximized_zoommode;
+int hud_panel_radar_maximized_rotation;
 
 
 vector teamradar_2dcoord_to_texcoord(vector in);
index f39dbbefc5dc77b1f716016b60bbfeca8c4aaf32..8b13146633c81e10c3b42712f0ecf3cb13eb22b3 100644 (file)
@@ -809,22 +809,22 @@ void HitSound()
        {
                if (autocvar_cl_hitsound && unaccounted_damage)
                {
-                       // customizable gradient function that crosses (0,a), (c,1) and asymptotically approaches b
-                       float a = autocvar_cl_hitsound_max_pitch;
-                       float b = autocvar_cl_hitsound_min_pitch;
-                       float c = autocvar_cl_hitsound_nom_damage;
-                       float d = unaccounted_damage;
-                       float pitch_shift = (b*d*(a-1) + a*c*(1-b)) / (d*(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 pitch_shift = 1;
+                       if (autocvar_cl_hitsound == 2 || autocvar_cl_hitsound == 3)
                        {
-                               float mirror_value = (a-b)/2 + b;
-                               pitch_shift = mirror_value + (mirror_value - pitch_shift);
+                               // customizable gradient function that crosses (0,a), (c,1) and asymptotically approaches b
+                               float a = autocvar_cl_hitsound_max_pitch;
+                               float b = autocvar_cl_hitsound_min_pitch;
+                               float c = autocvar_cl_hitsound_nom_damage;
+                               float d = unaccounted_damage;
+                               pitch_shift = (b*d*(a-1) + a*c*(1-b)) / (d*(a-1) + c*(1-b));
+
+                               // 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);
+                               }
                        }
 
                        //LOG_TRACE("dmg total (dmg): ", ftos(unaccounted_damage), " , pitch shift: ", ftos(pitch_shift));
index ba33be9861dcd61e346126ce4bf22ada2e0fbab0..9c5468fa11e05a22f7f49c2f6c805d28da7c7d42 100644 (file)
@@ -22,8 +22,8 @@ void _Movetype_Physics_Follow(entity this) // SV_Physics_Follow
                ang_x = -e.angles_x;
                makevectors(ang);
                this.origin_x = v_x * v_forward_x + v_y * v_forward_y + v_z * v_forward_z + e.origin_x;
-               this.origin_x = v_x * v_right_x + v_y * v_right_y + v_z * v_right_z + e.origin_y;
-               this.origin_x = v_x * v_up_x + v_y * v_up_y + v_z * v_up_z + e.origin_z;
+               this.origin_y = v_x * v_right_x + v_y * v_right_y + v_z * v_right_z + e.origin_y;
+               this.origin_z = v_x * v_up_x + v_y * v_up_y + v_z * v_up_z + e.origin_z;
        }
 
        this.angles = e.angles + this.v_angle;
index 62bb2db7cdda28a8e6e63da5cf6024e59f570a3e..62c3e7b162b2aa11e27962da6e49b218889cbc91 100644 (file)
@@ -3,19 +3,19 @@
 const int NUM_TEAMS = 4; ///< Number of teams in the game.
 
 #ifdef TEAMNUMBERS_THAT_ARENT_STUPID
-const int NUM_TEAM_1 = 1;  // red
+const int NUM_TEAM_1 = 1; // red
 const int NUM_TEAM_2 = 2; // blue
 const int NUM_TEAM_3 = 3; // yellow
 const int NUM_TEAM_4 = 4; // pink
 const int NUM_SPECTATOR = 5;
 #else
 #ifdef CSQC
-const int NUM_TEAM_1 = 4;  // red
+const int NUM_TEAM_1 = 4; // red
 const int NUM_TEAM_2 = 13; // blue
 const int NUM_TEAM_3 = 12; // yellow
 const int NUM_TEAM_4 = 9; // pink
 #else
-const int NUM_TEAM_1 = 5;  // red
+const int NUM_TEAM_1 = 5; // red
 const int NUM_TEAM_2 = 14; // blue
 const int NUM_TEAM_3 = 13; // yellow
 const int NUM_TEAM_4 = 10; // pink
@@ -83,7 +83,7 @@ vector Team_ColorRGB(int teamid)
                case NUM_TEAM_4: return '1 0.0625 1'; // 0xFF0FFF
        }
 
-    return '0 0 0';
+       return '0 0 0';
 }
 
 string Team_ColorName(int teamid)
@@ -96,7 +96,7 @@ string Team_ColorName(int teamid)
                case NUM_TEAM_4: return NAME_TEAM_4;
        }
 
-    return NAME_NEUTRAL;
+       return NAME_NEUTRAL;
 }
 
 // used for replacement in filenames or such where the name CANNOT be allowed to be translated
@@ -110,7 +110,7 @@ string Static_Team_ColorName(int teamid)
                case NUM_TEAM_4: return STATIC_NAME_TEAM_4;
        }
 
-    return NAME_NEUTRAL;
+       return NAME_NEUTRAL;
 }
 
 float Team_ColorToTeam(string team_color)
index 0d3b5c97512ef212be117cebc8f90ae6424be842..6dc1cfcc09c0415baaaefc702e5e65cbf24ad4b2 100644 (file)
@@ -82,6 +82,8 @@ void XonoticFirstRunDialog_fill(entity me)
        me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_allow_uid2name", "1", _("Yes")));
        me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_allow_uid2name", "0", _("No")));
        me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_allow_uid2name", "-1", _("Undecided")));
+       me.TR(me);
+       me.TD(me, 1, me.columns, e = makeXonoticTextLabel(0.5, _("Player statistics are enabled by default, you can change this in the Profile menu")));
 
        // because of the language selector, this is a menu_restart!
        me.gotoRC(me, me.rows - 1, 0);
index 1f8c6d81cffc6cb9f8460358a67a2b2f35075412..c2e3482f57a8bd6d6aee6fff36c972dcd13a20ef 100644 (file)
@@ -4,6 +4,7 @@
 #include "commandbutton.qh"
 #include "textlabel.qh"
 #include "checkbox.qh"
+#include "radiobutton.qh"
 #include "textslider.qh"
 #include "checkbox_slider_invalid.qh"
 
@@ -143,6 +144,17 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TD(me, 1, 3, e = makeXonoticCheckBox_T(0, "cl_hitsound", _("Hit indication sound"),
                        _("Play a hit indicator sound when your shot hits an enemy")));
                e.sendCvars = true;
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8 / 3, e = makeXonoticRadioButton_T(3, "cl_hitsound", "1", ZCTX(_("SND^Fixed")), "-"));
+               e.sendCvars = true;
+               setDependent(e, "cl_hitsound", 1, 3);
+               me.TD(me, 1, 2.8 / 3, e = makeXonoticRadioButton_T(3, "cl_hitsound", "2", _("Decreasing"), _("Decrease pitch with more damage")));
+               e.sendCvars = true;
+               setDependent(e, "cl_hitsound", 1, 3);
+               me.TD(me, 1, 2.8 / 3, e = makeXonoticRadioButton_T(3, "cl_hitsound", "3", _("Increasing"), _("Increase pitch with more damage")));
+               e.sendCvars = true;
+               setDependent(e, "cl_hitsound", 1, 3);
        me.TR(me);
                me.TD(me, 1, 3, makeXonoticCheckBox(0, "con_chatsound", _("Chat message sound")));
        me.TR(me);