]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into samual/keepaway
authorFruitieX <fruitiex@gmail.com>
Tue, 30 Nov 2010 14:43:29 +0000 (16:43 +0200)
committerFruitieX <fruitiex@gmail.com>
Tue, 30 Nov 2010 14:43:29 +0000 (16:43 +0200)
1  2 
defaultXonotic.cfg
qcsrc/client/hud.qc

diff --combined defaultXonotic.cfg
index c54b50353ff2e998a7b11fdbae5e3030bcf44b34,bf1d943dae64243d9463df29199f76f9a49d897e..cd16e4029841597fe4fa1e46a70555858e4ffaf3
@@@ -89,13 -89,14 +89,14 @@@ _cl_color 10
  _cl_name Player
  _cl_playermodel models/player/umbra.iqm
  _cl_playerskin 0
- seta crosshair 3
+ seta crosshair 16
  seta crosshair_color "0.6 0.8 1"
- seta crosshair_alpha 1
- seta crosshair_size 0.35
+ seta crosshair_alpha 0.3
+ seta crosshair_size 0.5
  seta crosshair_dot 1
  seta crosshair_dot_alpha 1
- seta crosshair_dot_size 1
+ seta crosshair_dot_size 0.6
+ seta crosshair_dot_color "1 0 0" "when != 0, use custom color for the crosshair dot"
  seta crosshair_pickup 0.25
  seta crosshair_pickup_speed 4
  seta crosshair_per_weapon 0   "when 1, each gun will display a different crosshair"
@@@ -606,8 -607,6 +607,8 @@@ set g_cts_respawn_waves 
  set g_cts_respawn_delay 0.25
  set g_cts_selfdamage 1 "0 = disable all selfdamage and falldamage in cts"
  set g_cts_finish_kill_delay 10 "prevent cheating by running back to the start line, and starting out with more speed than otherwise possible"
 +set g_ka_respawn_delay 0
 +set g_ka_respawn_waves 0
  
  // overtime
  seta timelimit_overtime 2 "duration in minutes of one added overtime, added to the timelimit"
@@@ -1245,28 -1244,6 +1246,28 @@@ set g_balance_keyhunt_damageforcescale 
  seta g_keyhunt_teams_override 0
  set g_keyhunt_teams 0
  
 +// keepaway
 +set g_keepaway 0 "game mode which focuses around a ball, look at g_keepaway_win_mode for further details"
 +set g_keepaway_bckillscore 1 "enable scoring points (y/n) for ball carrier kills"
 +set g_keepaway_pointlimit     -1      "total amount of points you can get, -1 for unlimited"
 +set g_keepaway_pointleadlimit -1      "mercy rule, -1 for unlimited"
 +set g_keepaway_ballcarrier_alpha 0.6 "alpha when the player is the ballcarrier"
 +set g_keepaway_ballcarrier_highspeed 1.5 "speed multiplier done to the person holding the ball"
 +set g_keepaway_ballcarrier_damage     1.5     "damage multiplier while having powerup"
 +set g_keepaway_ballcarrier_force      1.5     "force multiplier while having powerup"
 +set g_keepaway_ballcarrier_selfdamage 1       "self damage multiplier while having powerup"
 +set g_keepaway_ballcarrier_selfforce  1.5     "self force multiplier while having powerup"
 +set g_keepaway_noncarrier_warn        0       "warn players when they kill without holding the ball"
 +set g_keepaway_noncarrier_damage      0.5     "damage done to other players if both you and they don't have the ball"
 +set g_keepaway_noncarrier_force       0.5     "force done to other players if both you and they don't have the ball"
 +set g_keepaway_noncarrier_selfdamage  1       "self damage if you don't have the ball"
 +set g_keepaway_noncarrier_selfforce   1       "self force if you don't have the ball"
 +set g_keepawayball_trail_color        254     "particle trail color from player/ball"
 +set g_keepawayball_damageforcescale   2 "Scale of force which is applied to the ball by weapons/explosions/etc"
 +set g_keepawayball_respawntime        15      "if no one picks up the ball, how long to wait until the ball respawns"
 +seta g_keepaway_teams_override 0
 +set g_keepaway_teams 0
 +
  // so it can be stuffcmd-ed still
  set cl_gravity 800    "but ignored anyway"
  
@@@ -1372,6 -1349,11 +1373,11 @@@ seta hud_panel_weapons_ammo_full_fuel 1
  seta hud_panel_weapons_timeout "3" "panel disappears if you don't switch weapon for this amount of seconds"
  seta hud_panel_weapons_timeout_effect "1" "disappearance effect: 0) no effect; 1) panel moves out of screen; 2) panel fades out"
  
+ seta hud_panel_ammo_maxammo "40" "when you have this much ammo, the ammo status bar is full"
+ seta hud_panel_healtharmor_maxhealth "250" "when you have this much health, the health status bar is full"
+ seta hud_panel_healtharmor_maxarmor "150" "when you have this much armor, the armor status bar is full"
  seta hud_panel_notify_time 10 "time that a new entry stays until it fades out"
  seta hud_panel_notify_fadetime 3 "fade out time"
  
@@@ -1723,7 -1705,7 +1729,7 @@@ seta cl_showspeed_position 0.7 "Y-axis 
  seta cl_showacceleration 0 "show the XY acceleration of the player"
  seta cl_showacceleration_z 0 "include the speed on the Z-axis"
  seta cl_showacceleration_size 40 "height of the bar"
- seta cl_showacceleration_scale 5 "X-axis scale of the bar"
+ seta cl_showacceleration_scale 1 "X-axis scale of the bar"
  seta cl_showacceleration_alpha 0.5 "alpha of the bar"
  seta cl_showacceleration_color_custom 0 "0 = dynamic color depending on acceleration, 1 = use custom color"
  seta cl_showacceleration_color "1 0 0" "color of the bar, needs cl_showacceleration_color_custom to be 1"
@@@ -1785,7 -1767,6 +1791,7 @@@ alias cl_hook_gamestart_a
  alias cl_hook_gamestart_rc
  alias cl_hook_gamestart_nexball
  alias cl_hook_gamestart_cts
 +alias cl_hook_gamestart_ka
  alias cl_hook_gameend
  alias cl_hook_activeweapon
  
@@@ -1806,7 -1787,6 +1812,7 @@@ alias sv_hook_gamestart_a
  alias sv_hook_gamestart_rc
  alias sv_hook_gamestart_nexball
  alias sv_hook_gamestart_cts
 +alias sv_hook_gamestart_ka
  alias sv_hook_gamerestart
  alias sv_hook_gameend
  
diff --combined qcsrc/client/hud.qc
index cc8b21e74f4aac03b011fb014b18debc045d64ab,7ad148b0cb516edbfe844c2a34b8498bacf7950f..d518e75491774814356ce613f341145fc3b7750b
@@@ -14,7 -14,12 +14,12 @@@ Misc HUD function
  //   1/4 height: bottom part
  void draw_BorderPicture(vector theOrigin, string pic, vector theSize, vector theColor, float theAlpha, vector theBorderSize)
  {
-       if (theBorderSize_x <= 0 && theBorderSize_y <= 0) // no border
+     if (theBorderSize_x < 0 && theBorderSize_y < 0) // draw whole image as it is
+     {
+               drawpic(theOrigin, pic, theSize, theColor, theAlpha, 0);
+               return;
+     }
+       if (theBorderSize_x == 0 && theBorderSize_y == 0) // no border
        {
                // draw only the central part
                drawsubpic(theOrigin, theSize, pic, '0.25 0.25 0', '0.5 0.5 0', theColor, theAlpha, 0);
@@@ -491,18 -496,26 +496,26 @@@ void HUD_Panel_ExportCfg(string cfgname
                                case HUD_PANEL_AMMO:
                                        HUD_Write_PanelCvar_q("_onlycurrent");
                                        HUD_Write_PanelCvar_q("_iconalign");
+                                       HUD_Write_PanelCvar_q("_progressbar");
+                                       HUD_Write_PanelCvar_q("_progressbar_name");
+                                       HUD_Write_PanelCvar_q("_text");
                                        break;
                                case HUD_PANEL_POWERUPS:
                                        HUD_Write_PanelCvar_q("_flip");
                                        HUD_Write_PanelCvar_q("_iconalign");
                                        HUD_Write_PanelCvar_q("_baralign");
                                        HUD_Write_PanelCvar_q("_progressbar");
+                                       HUD_Write_PanelCvar_q("_progressbar_strength");
+                                       HUD_Write_PanelCvar_q("_progressbar_shield");
                                        break;
                                case HUD_PANEL_HEALTHARMOR:
                                        HUD_Write_PanelCvar_q("_flip");
                                        HUD_Write_PanelCvar_q("_iconalign");
                                        HUD_Write_PanelCvar_q("_baralign");
                                        HUD_Write_PanelCvar_q("_progressbar");
+                                       HUD_Write_PanelCvar_q("_progressbar_health");
+                                       HUD_Write_PanelCvar_q("_progressbar_armor");
+                                       HUD_Write_PanelCvar_q("_text");
                                        break;
                                case HUD_PANEL_NOTIFY:
                                        HUD_Write_PanelCvar_q("_flip");
@@@ -553,31 -566,37 +566,37 @@@ if(highlightedPanel_prev == active_pane
        HUD_Panel_HlBorder(panel_bg_border + 1.5 * hlBorderSize, '0 0.5 1', 0.25 * (1 - autocvar__menu_alpha) * alpha);\
  } ENDS_WITH_CURLY_BRACE
  
- void HUD_Panel_DrawProgressBar(vector pos, float vertical, vector mySize, vector color, float alpha, float drawflag)
+ void HUD_Panel_DrawProgressBar(vector pos, vector mySize, string pic, float vertical, float barflip, float x, vector color, float alpha, float drawflag)
  {
-       if(!alpha)
+       if(!alpha || x == 0)
                return;
  
-       string pic;
+     x = bound(0, x, 1);
        if(vertical) {
-               pic = strcat(hud_skin_path, "/statusbar_vertical");
+               pic = strcat(hud_skin_path, "/", pic, "_vertical");
                if(precache_pic(pic) == "") {
                        pic = "gfx/hud/default/statusbar_vertical";
                }
-               drawsubpic(pos, eY * min(mySize_y * 0.5, mySize_x) + eX * mySize_x, pic, '0 0 0', '1 0.25 0', color, alpha, drawflag);
-               if(mySize_y/mySize_x > 2)
-                       drawsubpic(pos + eY * mySize_x, eY * (mySize_y - 2 * mySize_x) + eX * mySize_x, pic, '0 0.25 0', '1 0.5 0', color, alpha, drawflag);
-               drawsubpic(pos + eY * mySize_y - eY * min(mySize_y * 0.5, mySize_x), eY * min(mySize_y * 0.5, mySize_x) + eX * mySize_x, pic, '0 0.75 0', '1 0.25 0', color, alpha, drawflag);
+         if(barflip)
+             drawsetcliparea(pos_x, pos_y + mySize_y * (1 - x), mySize_x, mySize_y * x);
+         else
+             drawsetcliparea(pos_x, pos_y, mySize_x, mySize_y * x);
        } else {
-               pic = strcat(hud_skin_path, "/statusbar");
+               pic = strcat(hud_skin_path, "/", pic);
                if(precache_pic(pic) == "") {
                        pic = "gfx/hud/default/statusbar";
                }
-               drawsubpic(pos, eX * min(mySize_x * 0.5, mySize_y) + eY * mySize_y, pic, '0 0 0', '0.25 1 0', color, alpha, drawflag);
-               if(mySize_x/mySize_y > 2)
-                       drawsubpic(pos + eX * mySize_y, eX * (mySize_x - 2 * mySize_y) + eY * mySize_y, pic, '0.25 0 0', '0.5 1 0', color, alpha, drawflag);
-               drawsubpic(pos + eX * mySize_x - eX * min(mySize_x * 0.5, mySize_y), eX * min(mySize_x * 0.5, mySize_y) + eY * mySize_y, pic, '0.75 0 0', '0.25 1 0', color, alpha, drawflag);
+         if(barflip)
+             drawsetcliparea(pos_x + mySize_x * (1 - x), pos_y, mySize_x * x, mySize_y);
+         else
+             drawsetcliparea(pos_x, pos_y, mySize_x * x, mySize_y);
        }
+     drawpic(pos, pic, mySize, color, alpha, drawflag);
+     drawresetcliparea();
  }
  
  void HUD_Panel_DrawHighlight(vector pos, vector mySize, vector color, float alpha, float drawflag)
@@@ -1896,10 -1915,16 +1915,16 @@@ void DrawAmmoItem(vector myPos, vector 
        if (currently_selected)
                drawpic_aspect_skin(myPos, "ammo_current_bg", mySize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
  
-       if(a > 0)
-               drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, color, panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
-       else // "ghost" ammo count
-               drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, '0 0 0', panel_fg_alpha * alpha * 0.5, DRAWFLAG_NORMAL);
+     if(a > 0 && cvar("hud_panel_ammo_progressbar"))
+         HUD_Panel_DrawProgressBar(myPos + eX * cvar("hud_panel_ammo_progressbar_xoffset") * mySize_x, mySize - eX * cvar("hud_panel_ammo_progressbar_xoffset") * mySize_x, cvar_string("hud_panel_ammo_progressbar_name"), 0, 0, min(1, a/cvar("hud_panel_ammo_maxammo")), color, autocvar_hud_progressbar_alpha * panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
+     if(cvar("hud_panel_ammo_text"))
+     {
+         if(a > 0)
+             drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, color, panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
+         else // "ghost" ammo count
+             drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, '0 0 0', panel_fg_alpha * alpha * 0.5, DRAWFLAG_NORMAL);
+     }
        if(a > 0)
                drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * mySize_y, '1 1 1', panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
        else // "ghost" ammo icon
@@@ -2099,129 -2124,147 +2124,147 @@@ void HUD_Powerups(void) 
        vector numpos;
  
        string leftname, rightname;
+     string leftprogressname, rightprogressname;
        float leftcnt, rightcnt;
        float leftexact, rightexact;
        float flip = cvar("hud_panel_powerups_flip");
        if (flip) {
                leftname = "strength";
+         leftprogressname = cvar_string("hud_panel_powerups_progressbar_strength");
                leftcnt = ceil(strength_time);
                leftexact = strength_time;
  
                rightname = "shield";
+         rightprogressname = cvar_string("hud_panel_powerups_progressbar_shield");
                rightcnt = ceil(shield_time);
                rightexact = shield_time;
        } else {
                leftname = "shield";
+         leftprogressname = cvar_string("hud_panel_powerups_progressbar_shield");
                leftcnt = ceil(shield_time);
                leftexact = shield_time;
  
                rightname = "strength";
+         rightprogressname = cvar_string("hud_panel_powerups_progressbar_strength");
                rightcnt = ceil(strength_time);
                rightexact = strength_time;
        }
  
        drawfont = hud_bigfont;
        float baralign = cvar("hud_panel_powerups_baralign");
+     float barflip;
        float iconalign = cvar("hud_panel_powerups_iconalign");
        float progressbar = cvar("hud_panel_powerups_progressbar");
        if (mySize_x/mySize_y > 4)
        {
+         barsize = eX * 0.5 * mySize_x + eY * mySize_y;
                if(leftcnt)
                {
                        if(baralign == 1 || baralign == 3) { // right align
-                               barpos = pos + eX * 0.5 * mySize_x - eX * 0.5 * mySize_x * min(1, leftcnt/30);
-                               barsize = eX * 0.5 * mySize_x * min(1, leftcnt/30) + eY * mySize_y;
+                 barpos = pos + eX * 0.5 * mySize_x;
+                 barflip = 1;
                        } else { // left align
-                               barpos = pos;
-                               barsize = eX * 0.5 * mySize_x * min(1, leftcnt/30) + eY * mySize_y;
+                 barpos = pos;
+                 barflip = 0;
                        }
  
                        if(progressbar)
                        {
                                HUD_Panel_GetProgressBarColorForString(leftname);
-                               HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL);
+                               HUD_Panel_DrawProgressBar(barpos, barsize, leftprogressname, 0, barflip, min(1, leftcnt/30), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL);
                        }
-                       if(leftcnt > 1)
-                               DrawNumIcon(iconalign, pos, eX * 0.5 * mySize_x + eY * mySize_y, leftcnt, leftname, 1, '1 1 1', 1);
-                       if(leftcnt <= 5)
-                               DrawNumIcon_expanding(iconalign, pos, eX * 0.5 * mySize_x + eY * mySize_y, leftcnt, leftname, 1, '1 1 1', bound(0, (leftcnt - leftexact) / 0.5, 1));
+             if(cvar("hud_panel_powerups_text"))
+             {
+                 if(leftcnt > 1)
+                     DrawNumIcon(iconalign, pos, eX * 0.5 * mySize_x + eY * mySize_y, leftcnt, leftname, 1, '1 1 1', 1);
+                 if(leftcnt <= 5)
+                     DrawNumIcon_expanding(iconalign, pos, eX * 0.5 * mySize_x + eY * mySize_y, leftcnt, leftname, 1, '1 1 1', bound(0, (leftcnt - leftexact) / 0.5, 1));
+             }
                }
  
                if(rightcnt)
                {
                        if(baralign == 0 || baralign == 3) { // left align
-                               barpos = pos + eX * 0.5 * mySize_x;
-                               barsize = eX * 0.5 * mySize_x * min(1, rightcnt/30) + eY * mySize_y;
+                 barpos = pos;
+                 barflip = 0;
                        } else { // right align
-                               barpos = pos + eX * mySize_x - eX * 0.5 * mySize_x * min(1, rightcnt/30);
-                               barsize = eX * 0.5 * mySize_x * min(1, rightcnt/30) + eY * mySize_y;
+                 barpos = pos + eX * 0.5 * mySize_x;
+                 barflip = 1;
                        }
  
                        if(progressbar)
                        {
                                HUD_Panel_GetProgressBarColorForString(rightname);
-                               HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL);
+                               HUD_Panel_DrawProgressBar(barpos, barsize, rightprogressname, 0, barflip, min(1, rightcnt/30), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL);
                        }
-                       if(rightcnt > 1)
-                               DrawNumIcon(iconalign, pos + eX * 0.5 * mySize_x, eX * 0.5 * mySize_x + eY * mySize_y, rightcnt, rightname, 0, '1 1 1', 1);
-                       if(rightcnt <= 5)
-                               DrawNumIcon_expanding(iconalign, pos + eX * 0.5 * mySize_x, eX * 0.5 * mySize_x + eY * mySize_y, rightcnt, rightname, 0, '1 1 1', bound(0, (rightcnt - rightexact) / 0.5, 1));
+             if(cvar("hud_panel_powerups_text"))
+             {
+                 if(rightcnt > 1)
+                     DrawNumIcon(iconalign, pos + eX * 0.5 * mySize_x, eX * 0.5 * mySize_x + eY * mySize_y, rightcnt, rightname, 0, '1 1 1', 1);
+                 if(rightcnt <= 5)
+                     DrawNumIcon_expanding(iconalign, pos + eX * 0.5 * mySize_x, eX * 0.5 * mySize_x + eY * mySize_y, rightcnt, rightname, 0, '1 1 1', bound(0, (rightcnt - rightexact) / 0.5, 1));
+             }
                }
        }
        else if (mySize_x/mySize_y > 1.5)
        {
+         barsize = eX * mySize_x + eY * 0.5 * mySize_y;
                if(leftcnt)
                {
-                       if(baralign == 1 || baralign == 3) { // right align
-                               barpos = pos + eX * mySize_x - eX * mySize_x * min(1, leftcnt/30);
-                               barsize = eX * mySize_x * min(1, leftcnt/30) + eY * 0.5 * mySize_y;
-                       } else { // left align
-                               barpos = pos;
-                               barsize = eX * mySize_x * min(1, leftcnt/30) + eY * 0.5 * mySize_y;
+             barpos = pos;
+                       if(baralign == 1 || baralign == 3) { // right/down align
+                 barflip = 1;
+                       } else { // left/up align
+                 barflip = 0;
                        }
  
                        if(progressbar)
                        {
                                HUD_Panel_GetProgressBarColorForString(leftname);
-                               HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL);
+                               HUD_Panel_DrawProgressBar(barpos, barsize, leftprogressname, 0, barflip, min(1, leftcnt/30), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL);
                        }
-                       if(leftcnt > 1)
-                               DrawNumIcon(iconalign, pos, eX * mySize_x + eY * 0.5 * mySize_y, leftcnt, leftname, 1, '1 1 1', 1);
-                       if(leftcnt <= 5)
-                               DrawNumIcon_expanding(iconalign, pos, eX * mySize_x + eY * 0.5 * mySize_y, leftcnt, leftname, 1, '1 1 1', bound(0, (leftcnt - leftexact) / 0.5, 1));
+             if(cvar("hud_panel_powerups_text"))
+             {
+                 if(leftcnt > 1)
+                     DrawNumIcon(iconalign, pos, eX * mySize_x + eY * 0.5 * mySize_y, leftcnt, leftname, 1, '1 1 1', 1);
+                 if(leftcnt <= 5)
+                     DrawNumIcon_expanding(iconalign, pos, eX * mySize_x + eY * 0.5 * mySize_y, leftcnt, leftname, 1, '1 1 1', bound(0, (leftcnt - leftexact) / 0.5, 1));
+             }
                }
  
                if(rightcnt)
                {
+             barpos = pos + eY * 0.5 * mySize_y;
                        if(baralign == 0 || baralign == 3) { // left align
-                               barpos = pos + eY * 0.5 * mySize_y;
-                               barsize = eX * mySize_x * min(1, rightcnt/30) + eY * 0.5 * mySize_y;
+                 barflip = 0;
                        } else { // right align
-                               barpos = pos + eX * mySize_x - eX * mySize_x * min(1, rightcnt/30) + eY * 0.5 * mySize_y;
-                               barsize = eX * mySize_x * min(1, rightcnt/30) + eY * 0.5 * mySize_y;
+                 barflip = 1;
                        }
  
                        if(progressbar)
                        {
                                HUD_Panel_GetProgressBarColorForString(rightname);
-                               HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL);
+                               HUD_Panel_DrawProgressBar(barpos, barsize, rightprogressname, 0, barflip, min(1, rightcnt/30), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL);
                        }
-                       if(rightcnt > 1)
-                               DrawNumIcon(iconalign, pos + eY * 0.5 * mySize_y, eX * mySize_x + eY * 0.5 * mySize_y, rightcnt, rightname, 0, '1 1 1', 1);
-                       if(rightcnt <= 5)
-                               DrawNumIcon_expanding(iconalign, pos + eY * 0.5 * mySize_y, eX * mySize_x + eY * 0.5 * mySize_y, rightcnt, rightname, 0, '1 1 1', bound(0, (rightcnt - rightexact) / 0.5, 1));
+             if(cvar("hud_panel_powerups_text"))
+             {
+                 if(rightcnt > 1)
+                     DrawNumIcon(iconalign, pos + eY * 0.5 * mySize_y, eX * mySize_x + eY * 0.5 * mySize_y, rightcnt, rightname, 0, '1 1 1', 1);
+                 if(rightcnt <= 5)
+                     DrawNumIcon_expanding(iconalign, pos + eY * 0.5 * mySize_y, eX * mySize_x + eY * 0.5 * mySize_y, rightcnt, rightname, 0, '1 1 1', bound(0, (rightcnt - rightexact) / 0.5, 1));
+             }
                }
        }
        else
        {
+         barsize = eX * 0.5 * mySize_x + eY * mySize_y;
                if(leftcnt)
                {
+             barpos = pos;
                        if(baralign == 1 || baralign == 3) { // down align
-                               barpos = pos + eY * mySize_y - eY * mySize_y * min(1, leftcnt/30);
-                               barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, leftcnt/30);
+                 barflip = 1;
                        } else { // up align
-                               barpos = pos;
-                               barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, leftcnt/30);
+                 barflip = 0;
                        }
  
                        if(iconalign == 1 || iconalign == 3) { // down align
                        if(progressbar)
                        {
                                HUD_Panel_GetProgressBarColorForString(leftname);
-                               HUD_Panel_DrawProgressBar(barpos, 1, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL);
+                               HUD_Panel_DrawProgressBar(barpos, barsize, leftprogressname, 1, barflip, min(1, leftcnt/30), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL);
                        }
-                       if(leftcnt <= 5)
-                               drawpic_aspect_skin_expanding(picpos, leftname, '0.4 0.4 0' * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL, bound(0, (leftcnt - leftexact) / 0.5, 1));
-                       if(leftcnt > 1)
-                               drawpic_aspect_skin(picpos, leftname, '0.4 0.4 0' * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
-                       drawstring_aspect(numpos, ftos(leftcnt), eX * 0.5 * mySize_x + eY * 0.25 * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+             if(cvar("hud_panel_powerups_text"))
+             {
+                 if(leftcnt <= 5)
+                     drawpic_aspect_skin_expanding(picpos, leftname, '0.4 0.4 0' * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL, bound(0, (leftcnt - leftexact) / 0.5, 1));
+                 if(leftcnt > 1)
+                     drawpic_aspect_skin(picpos, leftname, '0.4 0.4 0' * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+                 drawstring_aspect(numpos, ftos(leftcnt), eX * 0.5 * mySize_x + eY * 0.25 * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+             }
                }
  
                if(rightcnt)
                {
-                       if(baralign == 0 || baralign == 3) { // up align
-                               barpos = pos + eX * 0.5 * mySize_x;
-                               barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, rightcnt/30);
-                       } else { // down align
-                               barpos = pos + eY * mySize_y - eY * mySize_y * min(1, rightcnt/30) + eX * 0.5 * mySize_x;
-                               barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, rightcnt/30);
+             barpos = pos + eX * 0.5 * mySize_x;
+                       if(baralign == 0 || baralign == 3) { // down align
+                 barflip = 1;
+                       } else { // up align
+                 barflip = 0;
                        }
  
                        if(iconalign == 0 || iconalign == 3) { // up align
                        if(progressbar)
                        {
                                HUD_Panel_GetProgressBarColorForString(rightname);
-                               HUD_Panel_DrawProgressBar(barpos, 1, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL);
+                               HUD_Panel_DrawProgressBar(barpos, barsize, rightprogressname, 1, barflip, min(1, rightcnt/30), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL);
                        }
-                       if(rightcnt <= 5)
-                               drawpic_aspect_skin_expanding(picpos, rightname, '0.4 0.4 0' * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL, bound(0, (rightcnt - rightexact) / 0.5, 1));
-                       if(rightcnt > 1)
-                               drawpic_aspect_skin(picpos, rightname, '0.4 0.4 0' * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
-                       drawstring_aspect(numpos, ftos(rightcnt), eX * 0.5 * mySize_x + eY * 0.25 * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+             if(cvar("hud_panel_powerups_text"))
+             {
+                 if(rightcnt <= 5)
+                     drawpic_aspect_skin_expanding(picpos, rightname, '0.4 0.4 0' * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL, bound(0, (rightcnt - rightexact) / 0.5, 1));
+                 if(rightcnt > 1)
+                     drawpic_aspect_skin(picpos, rightname, '0.4 0.4 0' * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+                 drawstring_aspect(numpos, ftos(rightcnt), eX * 0.5 * mySize_x + eY * 0.25 * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+             }
                }
        }
        drawfont = hud_font;
@@@ -2304,9 -2352,9 +2352,9 @@@ void HUD_HealthArmor(void
  
        if(autocvar__hud_configure)
        {
-               armor = 150;
-               health = 100;
-               fuel = 70;
+               armor = 75;
+               health = 150;
+               fuel = 20;
        }
  
        if(health <= 0)
        float baralign = cvar("hud_panel_healtharmor_baralign");
        float iconalign = cvar("hud_panel_healtharmor_iconalign");
        float progressbar = cvar("hud_panel_healtharmor_progressbar");
+     float maxhealth = cvar("hud_panel_healtharmor_maxhealth");
+     float maxarmor = cvar("hud_panel_healtharmor_maxarmor");
        if(autocvar_hud_panel_healtharmor == 2) // combined health and armor display
        {
                vector v;
                float x;
                x = floor(v_x + 1);
  
-               if(baralign == 1 || baralign == 3) { // right align
-                       barpos = pos + eX * mySize_x - eX * mySize_x * min(1, x/400);
-                       barsize = eX * mySize_x * min(1, x/400) + eY * mySize_y;
-               } else { // left align
-                       barpos = pos;
-                       barsize = eX * mySize_x * min(1, x/400) + eY * mySize_y;
-               }
+         float maxtotal = maxhealth + maxarmor;
+         barpos = pos;
+         barsize = mySize;
  
                string biggercount;
                if(v_z) // NOT fully armored
                        if(progressbar)
                        {
                                HUD_Panel_GetProgressBarColor(health);
-                               HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                               HUD_Panel_DrawProgressBar(barpos, barsize, cvar_string("hud_panel_healtharmor_progressbar_health"), 0, mod(baralign, 2), x/maxtotal, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
                        }
                        if(armor)
+             if(cvar("hud_panel_healtharmor_text"))
                                drawpic_aspect_skin(pos + eX * mySize_x - eX * 0.5 * mySize_y, "armor", '0.5 0.5 0' * mySize_y, '1 1 1', panel_fg_alpha * armor / health, DRAWFLAG_NORMAL);
                }
                else
                        if(progressbar)
                        {
                                HUD_Panel_GetProgressBarColor(armor);
-                               HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                               HUD_Panel_DrawProgressBar(barpos, barsize, cvar_string("hud_panel_healtharmor_progressbar_armor"), 0, mod(baralign, 2), x/maxtotal, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
                        }
                        if(health)
+             if(cvar("hud_panel_healtharmor_text"))
                                drawpic_aspect_skin(pos + eX * mySize_x - eX * 0.5 * mySize_y, "health", '0.5 0.5 0' * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
                }
-               DrawNumIcon(iconalign, pos, mySize, x, biggercount, 1, HUD_Get_Num_Color(x, 2 * 200), 1);
+         if(cvar("hud_panel_healtharmor_text"))
+             DrawNumIcon(iconalign, pos, mySize, x, biggercount, 1, HUD_Get_Num_Color(x, maxtotal), 1);
  
                // fuel
                if(fuel)
                {
-                       if(baralign == 0 || baralign == 3) { // left align
-                               barpos = pos + eX * mySize_x - eX * mySize_x * min(1, fuel/100);
-                               barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.2 * mySize_y;
-                       } else {
-                               barpos = pos;
-                               barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.2 * mySize_y;
-                       }
+             barpos = pos;
+             barsize = eX * mySize_x + eY * 0.2 * mySize_y;
                        HUD_Panel_GetProgressBarColor(fuel);
-                       HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, panel_fg_alpha * 0.8, DRAWFLAG_NORMAL);
+             HUD_Panel_DrawProgressBar(barpos, barsize, "progressbar", 0, mod(baralign, 2), min(1, fuel/100), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * 0.8, DRAWFLAG_NORMAL);
                }
        }
        else
        {
                string leftname, rightname;
+         string leftprogressname, rightprogressname;
                float leftcnt, rightcnt;
+               float leftmax, rightmax;
                float leftactive, rightactive;
                float leftalpha, rightalpha;
                float flip = cvar("hud_panel_healtharmor_flip");
+         float barflip;
                if (flip) { // old style layout with armor left/top of health
                        leftname = "armor";
+             leftprogressname = cvar_string("hud_panel_healtharmor_progressbar_armor");
                        leftcnt = armor;
                        if(leftcnt)
                                leftactive = 1;
                        leftalpha = min((armor+10)/55, 1);
+             leftmax = maxarmor;
  
                        rightname = "health";
+             rightprogressname = cvar_string("hud_panel_healtharmor_progressbar_health");
                        rightcnt = health;
                        rightactive = 1;
                        rightalpha = 1;
+             rightmax = maxhealth;
                } else {
                        leftname = "health";
+             leftprogressname = cvar_string("hud_panel_healtharmor_progressbar_health");
                        leftcnt = health;
                        leftactive = 1;
                        leftalpha = 1;
+             leftmax = maxhealth;
  
                        rightname = "armor";
+             rightprogressname = cvar_string("hud_panel_healtharmor_progressbar_armor");
                        rightcnt = armor;
                        if(rightcnt)
                                rightactive = 1;
                        rightalpha = min((armor+10)/55, 1);
+             rightmax = maxarmor;
                }
  
                if (mySize_x/mySize_y > 4)
                {
+             barsize = eX * 0.5 * mySize_x + eY * mySize_y;
                        if(leftactive)
                        {
+                 barpos = pos;
                                if(baralign == 1 || baralign == 3) { // right align
-                                       barpos = pos + eX * 0.5 * mySize_x - eX * 0.5 * mySize_x * min(1, leftcnt/200);
-                                       barsize = eX * 0.5 * mySize_x * min(1, leftcnt/200) + eY * mySize_y;
+                     barflip = 1;
                                } else { // left align
-                                       barpos = pos;
-                                       barsize = eX * 0.5 * mySize_x * min(1, leftcnt/200) + eY * mySize_y;
+                     barflip = 0;
                                }
  
                                if(progressbar)
                                {
                                        HUD_Panel_GetProgressBarColorForString(leftname);
-                                       HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                     HUD_Panel_DrawProgressBar(barpos, barsize, leftprogressname, 0, barflip, min(1, leftcnt/leftmax), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
                                }
-                               DrawNumIcon(iconalign, pos, eX * 0.5 * mySize_x + eY * mySize_y, leftcnt, leftname, 1, HUD_Get_Num_Color(leftcnt, 200), 1);
+                 if(cvar("hud_panel_healtharmor_text"))
+                     DrawNumIcon(iconalign, pos, eX * 0.5 * mySize_x + eY * mySize_y, leftcnt, leftname, 1, HUD_Get_Num_Color(leftcnt, leftmax), 1);
                        }
  
                        if(rightactive)
                        {
+                 barpos = pos + eX * 0.5 * mySize_x;
                                if(baralign == 0 || baralign == 3) { // left align
-                                       barpos = pos + eX * 0.5 * mySize_x;
-                                       barsize = eX * 0.5 * mySize_x * min(1, rightcnt/200) + eY * mySize_y;
+                     barflip = 0;
                                } else { // right align
-                                       barpos = pos + eX * mySize_x - eX * 0.5 * mySize_x * min(1, rightcnt/200);
-                                       barsize = eX * 0.5 * mySize_x * min(1, rightcnt/200) + eY * mySize_y;
+                     barflip = 1;
                                }
  
                                if(progressbar)
                                {
                                        HUD_Panel_GetProgressBarColorForString(rightname);
-                                       HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                     HUD_Panel_DrawProgressBar(barpos, barsize, rightprogressname, 0, barflip, min(1, rightcnt/rightmax), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
                                }
-                               DrawNumIcon(iconalign, pos + eX * 0.5 * mySize_x, eX * 0.5 * mySize_x + eY * mySize_y, rightcnt, rightname, 0, HUD_Get_Num_Color(rightcnt, 200), 1);
+                 if(cvar("hud_panel_healtharmor_text"))
+                     DrawNumIcon(iconalign, pos + eX * 0.5 * mySize_x, eX * 0.5 * mySize_x + eY * mySize_y, rightcnt, rightname, 0, HUD_Get_Num_Color(rightcnt, rightmax), 1);
                        }
  
                        if(fuel)
                        {
-                               if(baralign == 0 || baralign == 3) { // left align
-                                       barpos = pos + eX * mySize_x - eX * mySize_x * min(1, fuel/100);
-                                       barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.2 * mySize_y;
-                               } else {
-                                       barpos = pos;
-                                       barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.2 * mySize_y;
-                               }
-                               HUD_Panel_GetProgressBarColor(fuel);
-                               HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, panel_fg_alpha * 0.8, DRAWFLAG_NORMAL);
+                 barpos = pos;
+                 barsize = eX * mySize_x + eY * 0.2 * mySize_y;
+                 HUD_Panel_GetProgressBarColor(fuel);
+                 HUD_Panel_DrawProgressBar(barpos, barsize, "progressbar", 0, mod(baralign, 2), min(1, fuel/100), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * 0.8, DRAWFLAG_NORMAL);
                        }
                }
                else if (mySize_x/mySize_y > 1.5)
                {
+             barsize = eX * mySize_x + eY * 0.5 * mySize_y;
                        if(leftactive)
                        {
+                 barpos = pos;
                                if(baralign == 1 || baralign == 3) { // right align
-                                       barpos = pos + eX * mySize_x - eX * mySize_x * min(1, leftcnt/200);
-                                       barsize = eX * mySize_x * min(1, leftcnt/200) + eY * 0.5 * mySize_y;
+                     barflip = 1;
                                } else { // left align
-                                       barpos = pos;
-                                       barsize = eX * mySize_x * min(1, leftcnt/200) + eY * 0.5 * mySize_y;
+                     barflip = 0;
                                }
  
                                if(progressbar)
                                {
                                        HUD_Panel_GetProgressBarColorForString(leftname);
-                                       HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                     HUD_Panel_DrawProgressBar(barpos, barsize, leftprogressname, 0, barflip, min(1, leftcnt/leftmax), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
                                }
-                               DrawNumIcon(iconalign, pos, eX * mySize_x + eY * 0.5 * mySize_y, leftcnt, leftname, 1, HUD_Get_Num_Color(leftcnt, 200), 1);
+                 if(cvar("hud_panel_healtharmor_text"))
+                     DrawNumIcon(iconalign, pos, eX * mySize_x + eY * 0.5 * mySize_y, leftcnt, leftname, 1, HUD_Get_Num_Color(leftcnt, leftmax), 1);
                        }
  
                        if(rightactive)
                        {
+                 barpos = pos + eY * 0.5 * mySize_y;
                                if(baralign == 0 || baralign == 3) { // left align
-                                       barpos = pos + eY * 0.5 * mySize_y;
-                                       barsize = eX * mySize_x * min(1, rightcnt/200) + eY * 0.5 * mySize_y;
+                     barflip = 0;
                                } else { // right align
-                                       barpos = pos + eX * mySize_x - eX * mySize_x * min(1, rightcnt/200) + eY * 0.5 * mySize_y;
-                                       barsize = eX * mySize_x * min(1, rightcnt/200) + eY * 0.5 * mySize_y;
+                     barflip = 1;
                                }
  
                                if(progressbar)
                                {
                                        HUD_Panel_GetProgressBarColorForString(rightname);
-                                       HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                     HUD_Panel_DrawProgressBar(barpos, barsize, rightprogressname, 0, barflip, min(1, rightcnt/rightmax), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
                                }
-                               DrawNumIcon(iconalign, pos + eY * 0.5 * mySize_y, eX * mySize_x + eY * 0.5 * mySize_y, rightcnt, rightname, 0, HUD_Get_Num_Color(rightcnt, 200), 1);
+                 if(cvar("hud_panel_healtharmor_text"))
+                     DrawNumIcon(iconalign, pos + eY * 0.5 * mySize_y, eX * mySize_x + eY * 0.5 * mySize_y, rightcnt, rightname, 0, HUD_Get_Num_Color(rightcnt, rightmax), 1);
                        }
  
                        if(fuel)
                        {
-                               if(baralign == 0 || baralign == 3) { // left align
-                                       barpos = pos + eX * mySize_x - eX * mySize_x * min(1, fuel/100);
-                                       barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.1 * mySize_y;
-                               } else {
-                                       barpos = pos;
-                                       barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.1 * mySize_y;
-                               }
-                               HUD_Panel_GetProgressBarColor(fuel);
-                               HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, panel_fg_alpha * 0.8, DRAWFLAG_NORMAL);
+                 barpos = pos;
+                 barsize = eX * mySize_x + eY * 0.2 * mySize_y;
+                 HUD_Panel_GetProgressBarColor(fuel);
+                 HUD_Panel_DrawProgressBar(barpos, barsize, "progressbar", 0, mod(baralign, 2), min(1, fuel/100), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * 0.8, DRAWFLAG_NORMAL);
                        }
                }
                else
                {
+             barsize = eX * 0.5 * mySize_x + eY * mySize_y;
                        if(leftactive)
                        {
-                               if(baralign == 1 || baralign == 3) { // down align
-                                       barpos = pos + eY * mySize_y - eY * mySize_y * min(1, leftcnt/200);
-                                       barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, leftcnt/200);
-                               } else { // up align
-                                       barpos = pos;
-                                       barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, leftcnt/200);
+                 barpos = pos;
+                               if(baralign == 1 || baralign == 3) { // right align
+                     barflip = 1;
+                               } else { // left align
+                     barflip = 0;
                                }
  
                                if(iconalign == 1 || iconalign == 3) { // down align
                                if(progressbar)
                                {
                                        HUD_Panel_GetProgressBarColorForString(leftname);
-                                       HUD_Panel_DrawProgressBar(barpos, 1, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                     HUD_Panel_DrawProgressBar(barpos, barsize, leftprogressname, 1, barflip, min(1, leftcnt/leftmax), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
                                }
-                               drawpic_aspect_skin(picpos, leftname, '0.4 0.4 0' * mySize_x, '1 1 1', leftalpha * panel_fg_alpha, DRAWFLAG_NORMAL);
-                               drawstring_aspect(numpos, ftos(leftcnt), eX * 0.5 * mySize_x + eY * 0.25 * mySize_x, HUD_Get_Num_Color(leftcnt, 200), panel_fg_alpha, DRAWFLAG_NORMAL);
+                 if(cvar("hud_panel_healtharmor_text"))
+                 {
+                     drawpic_aspect_skin(picpos, leftname, '0.4 0.4 0' * mySize_x, '1 1 1', leftalpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                     drawstring_aspect(numpos, ftos(leftcnt), eX * 0.5 * mySize_x + eY * 0.25 * mySize_x, HUD_Get_Num_Color(leftcnt, leftmax), panel_fg_alpha, DRAWFLAG_NORMAL);
+                 }
                        }
  
                        if(rightactive)
                        {
-                               if(baralign == 0 || baralign == 3) { // up align
-                                       barpos = pos + eX * 0.5 * mySize_x;
-                                       barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, rightcnt/200);
-                               } else { // down align
-                                       barpos = pos + eY * mySize_y - eY * mySize_y * min(1, rightcnt/200) + eX * 0.5 * mySize_x;
-                                       barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, rightcnt/200);
+                 barpos = pos + eX * 0.5 * mySize_x;
+                               if(baralign == 0 || baralign == 3) { // left align
+                     barflip = 0;
+                               } else { // right align
+                     barflip = 1;
                                }
  
                                if(iconalign == 0 || iconalign == 3) { // up align
                                if(progressbar)
                                {
                                        HUD_Panel_GetProgressBarColorForString(rightname);
-                                       HUD_Panel_DrawProgressBar(barpos, 1, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                     HUD_Panel_DrawProgressBar(barpos, barsize, rightprogressname, 1, barflip, min(1, rightcnt/rightmax), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
                                }
-                               drawpic_aspect_skin(picpos, rightname, '0.4 0.4 0' * mySize_x, '1 1 1', rightalpha * panel_fg_alpha, DRAWFLAG_NORMAL);
-                               drawstring_aspect(numpos, ftos(rightcnt), eX * 0.5 * mySize_x + eY * 0.25 * mySize_x, HUD_Get_Num_Color(rightcnt, 200), panel_fg_alpha, DRAWFLAG_NORMAL);
+                 if(cvar("hud_panel_healtharmor_text"))
+                 {
+                     drawpic_aspect_skin(picpos, rightname, '0.4 0.4 0' * mySize_x, '1 1 1', rightalpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+                     drawstring_aspect(numpos, ftos(rightcnt), eX * 0.5 * mySize_x + eY * 0.25 * mySize_x, HUD_Get_Num_Color(rightcnt, rightmax), panel_fg_alpha, DRAWFLAG_NORMAL);
+                 }
                        }
  
                        if(fuel)
                        {
-                               if(baralign == 0 || baralign == 3) { // left align
-                                       barpos = pos;
-                                       barsize = eX * 0.05 * mySize_x + eY * mySize_y * min(1, fuel/100);
-                               } else {
-                                       barpos = pos + eY * mySize_y - eY * mySize_y * min(1, fuel/100);
-                                       barsize = eX * 0.05 * mySize_x + eY * mySize_y * min(1, fuel/100);
-                               }
-                               HUD_Panel_GetProgressBarColor(fuel);
-                               HUD_Panel_DrawProgressBar(barpos, 1, barsize, progressbar_color, panel_fg_alpha * 0.8, DRAWFLAG_NORMAL);
+                 barpos = pos;
+                 barsize = eX * 0.05 * mySize_x + eY * mySize_y;
+                 HUD_Panel_GetProgressBarColor(fuel);
+                 HUD_Panel_DrawProgressBar(barpos, barsize, "progressbar", 1, mod(baralign, 2), min(1, fuel/100), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * 0.8, DRAWFLAG_NORMAL);
                        }
                }
        }
@@@ -2974,17 -3023,6 +3023,17 @@@ void HUD_KillNotify(string s1, string s
                else if(type == RACE_FAIL) {
                        HUD_KillNotify_Push(s1, s2, 1, RACE_FAIL);
                }
 +      } else if(msg == MSG_KA) {
 +              if(type == KA_PICKUPBALL) {
 +                      HUD_KillNotify_Push(s1, s2, 0, KA_PICKUPBALL);
 +                      if(alsoprint)
 +                              print (s1, "^7 has picked up the ball!\n");
 +              }
 +              else if(type == KA_DROPBALL) {
 +                      HUD_KillNotify_Push(s1, s2, 0, KA_DROPBALL);
 +                      if(alsoprint)
 +                              print(s1, "^7 has dropped the ball!\n");
 +              }
        }
  }
  
@@@ -3264,15 -3302,6 +3313,15 @@@ void HUD_Notify (void
                                        s = "notify_blue_captured";
                                }
                        }
 +                      else if(killnotify_deathtype[j] == KA_DROPBALL)
 +                      {
 +                              s = "notify_balldropped";
 +                      }
 +                      else if(killnotify_deathtype[j] == KA_PICKUPBALL)
 +                      {
 +                              s = "notify_ballpickedup";
 +                      }
 +                      
                        attacker = textShortenToWidth(killnotify_attackers[j], 0.48 * mySize_x - height, fontsize, stringwidth_colors);
                        pos_attacker = pos + eX * (0.52 * mySize_x + height) + eY * (0.5 * fontsize_y + i * height);
                        weap_pos = pos + eX * 0.5 * mySize_x - eX * height + eY * i * height;
@@@ -4323,44 -4352,6 +4372,44 @@@ void HUD_Mod_KH(vector pos, vector mySi
        }
  }
  
 +// Keepaway HUD mod icon
 +float kaball_prevstatus; // last remembered status
 +float kaball_statuschange_time; // time when the status changed
 +
 +// we don't need to reset for keepaway since it immediately 
 +// autocorrects prevstatus as to if the player has the ball or not
 +
 +void HUD_Mod_Keepaway(vector pos, vector mySize)
 +{
 +      mod_active = 1; // keepaway should always show the mod HUD
 +      
 +      float BLINK_FACTOR = 0.15;
 +      float BLINK_BASE = 0.85;
 +      float BLINK_FREQ = 5; 
 +      float kaball_alpha = BLINK_BASE + BLINK_FACTOR * cos(time * BLINK_FREQ);
 +      
 +      float stat_items = getstati(STAT_ITEMS);
 +      float kaball = (stat_items/IT_KEY1) & 1;
 +      
 +      if(kaball != kaball_prevstatus)
 +      {
 +              kaball_statuschange_time = time;
 +              kaball_prevstatus = kaball;
 +      }
 +      
 +      // todo: Fix the sizing with the expanding image
 +      
 +      float kaball_statuschange_elapsedtime = time - kaball_statuschange_time;
 +      float f = bound(0, kaball_statuschange_elapsedtime*2, 1);
 +      
 +      if(kaball_prevstatus && f < 1)
 +              drawpic_aspect_skin_expanding(pos + eY * 0.25 * mySize_y, "keepawayball_carrying", eX * mySize_x + eY * mySize_y * 0.5, '1 1 1', panel_fg_alpha * kaball_alpha, DRAWFLAG_NORMAL, f);
 +      
 +      if(kaball)
 +              drawpic_aspect_skin(pos, "keepawayball_carrying", eX * mySize_x + eY * mySize_y, '1 1 1', panel_fg_alpha * kaball_alpha * f, DRAWFLAG_NORMAL);
 +}
 +
 +
  // Nexball HUD mod icon
  void HUD_Mod_NexBall(vector pos, vector mySize)
  {
                        p = 2 - p;
  
                //Draw the filling
-               vector barsize;
                float vertical;
                if(mySize_x > mySize_y)
                {
-                       barsize = eX * p * mySize_x + eY * mySize_y;
                        vertical = 0;
                }
                else
                {
-                       barsize = eX * mySize_x + eY * p * mySize_y;
                        vertical = 1;
                }
                HUD_Panel_GetProgressBarColor(nexball);
-               HUD_Panel_DrawProgressBar(pos, vertical, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+         HUD_Panel_DrawProgressBar(pos, mySize, "statusbar", vertical, 0, p, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
        }
  
        if (stat_items & IT_KEY1)
@@@ -4561,7 -4549,7 +4607,7 @@@ void HUD_ModIcons(void
        if(!autocvar_hud_panel_modicons && !autocvar__hud_configure)
                return;
  
 -      if (gametype != GAME_KEYHUNT && gametype != GAME_CTF && gametype != GAME_NEXBALL && gametype != GAME_CTS && gametype != GAME_RACE && gametype != GAME_CA && !autocvar__hud_configure)
 +      if (gametype != GAME_KEYHUNT && gametype != GAME_CTF && gametype != GAME_NEXBALL && gametype != GAME_CTS && gametype != GAME_RACE && gametype != GAME_CA && gametype != GAME_KEEPAWAY && !autocvar__hud_configure)
                return;
  
        active_panel = HUD_PANEL_MODICONS;
                HUD_Mod_Race(pos, mySize);
        else if(gametype == GAME_CA)
                HUD_Mod_CA(pos, mySize);
 +      else if(gametype == GAME_KEEPAWAY)
 +              HUD_Mod_Keepaway(pos, mySize);
  }
  
  // Draw pressed keys (#11)
@@@ -5074,9 -5060,9 +5120,9 @@@ void HUD_ShowAcceleration(void
        }
  
        if (acceleration > 0)
-               HUD_Panel_DrawProgressBar(pos, 0, acceleration * scale * '40 0 0' + sz * eY, rgb, alpha * autocvar_hud_panel_fg_alpha * hud_fade_alpha, DRAWFLAG_NORMAL);
+         HUD_Panel_DrawProgressBar(pos, eX * (vid_conwidth - pos_x) + eY * sz, "statusbar", 0, 0, acceleration * scale, rgb, alpha * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
        else
-               HUD_Panel_DrawProgressBar(pos + acceleration * scale * '40 0 0', 0, -acceleration * scale * '40 0 0' + sz * eY, rgb, alpha * autocvar_hud_panel_fg_alpha * hud_fade_alpha, DRAWFLAG_NORMAL);
+         HUD_Panel_DrawProgressBar(eY * pos_y, eX * pos_x + eY * sz, "statusbar", 0, 1, -acceleration * scale, rgb, alpha * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
  }
  
  void HUD_Reset (void)