]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/hud.qc
try to fix vehicle chase cam (untested)
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / hud.qc
index 1a98bca502343f25402cbe0c352ee9295ef1fdb1..fcdd73601793a940136dd9c117c1fc9bad023a30 100644 (file)
@@ -142,16 +142,16 @@ float stringwidth_nocolors(string s, vector theSize)
        return stringwidth(s, FALSE, theSize);
 }
 
-void drawstringright(vector position, string text, vector scale, vector rgb, float alpha, float flag)
+void drawstringright(vector position, string text, vector scale, vector rgb, float theAlpha, float flag)
 {
        position_x -= 2 / 3 * strlen(text) * scale_x;
-       drawstring(position, text, scale, rgb, alpha, flag);
+       drawstring(position, text, scale, rgb, theAlpha, flag);
 }
 
-void drawstringcenter(vector position, string text, vector scale, vector rgb, float alpha, float flag)
+void drawstringcenter(vector position, string text, vector scale, vector rgb, float theAlpha, float flag)
 {
        position_x = 0.5 * (vid_conwidth - 0.6025 * strlen(text) * scale_x);
-       drawstring(position, text, scale, rgb, alpha, flag);
+       drawstring(position, text, scale, rgb, theAlpha, flag);
 }
 
 // return the string of the given race place
@@ -248,9 +248,9 @@ HUD panels
 */
 
 // draw the background/borders
-#define HUD_Panel_DrawBg(alpha)\
+#define HUD_Panel_DrawBg(theAlpha)\
 if(panel_bg != "0")\
-       draw_BorderPicture(panel_pos - '1 1 0' * panel_bg_border, panel_bg, panel_size + '1 1 0' * 2 * panel_bg_border, panel_bg_color, panel_bg_alpha * alpha, '1 1 0' * (panel_bg_border/BORDER_MULTIPLIER))
+       draw_BorderPicture(panel_pos - '1 1 0' * panel_bg_border, panel_bg, panel_size + '1 1 0' * 2 * panel_bg_border, panel_bg_color, panel_bg_alpha * theAlpha, '1 1 0' * (panel_bg_border/BORDER_MULTIPLIER))
 
 //basically the same code of draw_ButtonPicture and draw_VertButtonPicture for the menu
 void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, float length_ratio, float vertical, float baralign, vector theColor, float theAlpha, float drawflag)
@@ -356,9 +356,9 @@ void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, flo
        }
 }
 
-void HUD_Panel_DrawHighlight(vector pos, vector mySize, vector color, float alpha, float drawflag)
+void HUD_Panel_DrawHighlight(vector pos, vector mySize, vector color, float theAlpha, float drawflag)
 {
-       if(!alpha)
+       if(!theAlpha)
                return;
 
        string pic;
@@ -367,10 +367,10 @@ void HUD_Panel_DrawHighlight(vector pos, vector mySize, vector color, float alph
                pic = "gfx/hud/default/num_leading";
        }
 
-       drawsubpic(pos, eX * min(mySize_x * 0.5, mySize_y) + eY * mySize_y, pic, '0 0 0', '0.25 1 0', color, alpha, drawflag);
+       drawsubpic(pos, eX * min(mySize_x * 0.5, mySize_y) + eY * mySize_y, pic, '0 0 0', '0.25 1 0', color, theAlpha, 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);
+               drawsubpic(pos + eX * mySize_y, eX * (mySize_x - 2 * mySize_y) + eY * mySize_y, pic, '0.25 0 0', '0.5 1 0', color, theAlpha, 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, theAlpha, drawflag);
 }
 
 // Weapon icons (#0)
@@ -432,33 +432,34 @@ float GetAmmoTypeForWep(float i)
 void HUD_Weapons(void)
 {
        // declarations
-       float weapons_stat = getstati(STAT_WEAPONS); 
+       float weapons_stat = getstati(STAT_WEAPONS);
        float i, f, a, j, factor;
-       float screen_ar, center_x, center_y; 
-       float weapon_count, weapon_id, weapon_alpha; 
-       float row, column, rows, columns; 
+       float screen_ar, center_x, center_y;
+       float weapon_count, weapon_id, weapon_alpha;
+       float row, column, rows, columns;
        float aspect = autocvar_hud_panel_weapons_aspect;
-       
+
        float show_accuracy, panel_weapon_accuracy;
-       
+
        float timeout = autocvar_hud_panel_weapons_timeout;
        float timein_effect_length = (autocvar_hud_panel_weapons_timeout_effect ? 0.375 : 0);
        float timeout_effect_length = (autocvar_hud_panel_weapons_timeout_effect ? 0.75 : 0);
-       
+
        float ammo_type, ammo_full, ammo_alpha;
        float barsize_x, barsize_y, baroffset_x, baroffset_y;
-       
+
        float when = autocvar_hud_panel_weapons_complainbubble_time;
        float fadetime = autocvar_hud_panel_weapons_complainbubble_fadetime;
-       
+
        vector weapon_pos, weapon_size;
        local noref vector old_panel_size; // fteqcc sucks
        vector color, ammo_color;
-       
+
        // check to see if we want to continue
-  if(hud != HUD_NORMAL) { return; }
-  
+       if(hud != HUD_NORMAL) { return; }
+
        if(!autocvar__hud_configure)
+       {
                if((!autocvar_hud_panel_weapons) || (spectatee_status == -1))
                        return;
                else if(timeout && time >= weapontime + timeout + timeout_effect_length)
@@ -466,13 +467,14 @@ void HUD_Weapons(void)
                        weaponprevtime = time;
                        return;
                }
+       }
        else
                hud_configure_active_panel = HUD_PANEL_WEAPONS;
 
        // update generic hud functions
        HUD_Panel_UpdateCvars(weapons);
        HUD_Panel_ApplyFadeAlpha();
-       
+
        // calculate fading effect to weapon images for when the panel is idle
        if(autocvar_hud_panel_weapons_fade)
        {
@@ -511,7 +513,7 @@ void HUD_Weapons(void)
 
                weaponorder_cmp_str = string_null;
        }
-       
+
        // determine which weapons are going to be shown
        if (autocvar_hud_panel_weapons_onlyowned)
        {
@@ -520,25 +522,25 @@ void HUD_Weapons(void)
                        if (weapons_stat == 0) // create some fake weapons anyway
                                for(i = 0; i <= WEP_LAST-WEP_FIRST; i += floor((WEP_LAST-WEP_FIRST)/5))
                                        weapons_stat |= power2of(i);
-                                       
+
                        if(menu_enabled != 2)
                                HUD_Panel_DrawBg(1); // also draw the bg of the entire panel
                }
-               
+
                // do we own this weapon?
                for(i = 0; i <= WEP_LAST-WEP_FIRST; ++i)
                        if(weapons_stat & weaponorder[i].weapons)
                                ++weapon_count;
-               
+
                // add it anyway if weaponcomplain is shown
                if((!autocvar__hud_configure) 
                        && (autocvar_hud_panel_weapons_complainbubble 
                                && time - complain_weapon_time < when + fadetime))
                                        ++weapon_count;
-                       
+
                // might as well commit suicide now, no reason to live ;)
                if (weapon_count == 0) { return; }
-               
+
                // reduce size of the panel
                if (panel_size_y > panel_size_x)
                {
@@ -623,12 +625,12 @@ void HUD_Weapons(void)
                }
        }
 
-       // draw the background, then change the virtual size of it to better fit other items inside 
+       // draw the background, then change the virtual size of it to better fit other items inside
        HUD_Panel_DrawBg(1);
        if(panel_bg_padding)
        {
                panel_pos += '1 1 0' * panel_bg_padding;
-               panel_size -= '1 1 0' * panel_bg_padding;
+               panel_size -= '2 2 0' * panel_bg_padding;
        }
 
        // after the sizing and animations are done, update the other values
@@ -636,7 +638,7 @@ void HUD_Weapons(void)
        rows = bound(1, floor((sqrt(4 * aspect * rows * weapon_count + rows * rows) + rows + 0.5) / 2), weapon_count);
        columns = ceil(weapon_count/rows);
        weapon_size = eX * panel_size_x*(1/columns) + eY * panel_size_y*(1/rows);
-       
+
        // calculate position/size for visual bar displaying ammount of ammo status
        if (autocvar_hud_panel_weapons_ammo)
        {
@@ -670,10 +672,10 @@ void HUD_Weapons(void)
                // retrieve information about the current weapon to be drawn
                self = weaponorder[i];
                weapon_id = self.impulse;
-               
+
                // skip if this weapon doesn't exist
                if (!self || self.impulse < 0) { continue; }
-               
+
                // skip this weapon if we don't own it (and onlyowned is enabled)-- or if weapons_complainbubble is showing for this weapon
                if (autocvar_hud_panel_weapons_onlyowned
                        && !((weapons_stat & self.weapons) 
@@ -681,7 +683,7 @@ void HUD_Weapons(void)
                                && time - complain_weapon_time < when + fadetime 
                                && autocvar_hud_panel_weapons_complainbubble)))
                                        continue;
-                                       
+
                // figure out the drawing position of weapon
                weapon_pos = (panel_pos 
                        + eX * column * weapon_size_x 
@@ -723,19 +725,19 @@ void HUD_Weapons(void)
                                case 1: // weapon number
                                        drawstring(weapon_pos, ftos(weapon_id), '1 1 0' * 0.5 * weapon_size_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
                                        break;
-                                       
+
                                case 2: // bind
                                        drawstring(weapon_pos, getcommandkey(ftos(weapon_id), strcat("impulse ", ftos(weapon_id))), '1 1 0' * 0.5 * weapon_size_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
                                        break;
-                                       
+
                                case 3: // weapon name
                                        drawstring(weapon_pos, self.netname, '1 1 0' * 0.5 * weapon_size_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
                                        break;
-                                       
+
                                default: // nothing
                                        break;
                        }
-                       
+
                        // draw ammo status bar
                        if(autocvar_hud_panel_weapons_ammo && self.weapon != WEP_TUBA && self.weapon != WEP_LASER && self.weapon != WEP_PORTO)
                        {
@@ -769,7 +771,7 @@ void HUD_Weapons(void)
                {
                        drawpic_aspect_skin(weapon_pos, strcat("weapon", self.netname), weapon_size, '0 0 0', panel_fg_alpha * 0.5, DRAWFLAG_NORMAL);
                }
-               
+
                // draw the complain message
                if(time - complain_weapon_time < when + fadetime && self.weapon == complain_weapon && autocvar_hud_panel_weapons_complainbubble)
                {
@@ -855,11 +857,11 @@ void DrawAmmoItem(vector myPos, vector mySize, float itemcode, float currently_s
        else
                color = '1 1 1';
 
-       float alpha;
+       float theAlpha;
        if(currently_selected)
-               alpha = 1;
+               theAlpha = 1;
        else
-               alpha = 0.7;
+               theAlpha = 0.7;
 
        vector picpos, numpos;
        if(autocvar_hud_panel_ammo_iconalign)
@@ -877,19 +879,19 @@ void DrawAmmoItem(vector myPos, vector mySize, float itemcode, float currently_s
                drawpic_aspect_skin(myPos, "ammo_current_bg", mySize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
 
     if(a > 0 && autocvar_hud_panel_ammo_progressbar)
-        HUD_Panel_DrawProgressBar(myPos + eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, mySize - eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, autocvar_hud_panel_ammo_progressbar_name, a/autocvar_hud_panel_ammo_maxammo, 0, 0, color, autocvar_hud_progressbar_alpha * panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
+        HUD_Panel_DrawProgressBar(myPos + eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, mySize - eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, autocvar_hud_panel_ammo_progressbar_name, a/autocvar_hud_panel_ammo_maxammo, 0, 0, color, autocvar_hud_progressbar_alpha * panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL);
 
     if(autocvar_hud_panel_ammo_text)
     {
         if(a > 0 || infinite_ammo)
-            drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, color, panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
+            drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, color, panel_fg_alpha * theAlpha, 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);
+            drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, '0 0 0', panel_fg_alpha * theAlpha * 0.5, DRAWFLAG_NORMAL);
     }
        if(a > 0 || infinite_ammo)
-               drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * mySize_y, '1 1 1', panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
+               drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * mySize_y, '1 1 1', panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL);
        else // "ghost" ammo icon
-               drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * mySize_y, '0 0 0', panel_fg_alpha * alpha * 0.5, DRAWFLAG_NORMAL);
+               drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * mySize_y, '0 0 0', panel_fg_alpha * theAlpha * 0.5, DRAWFLAG_NORMAL);
 }
 
 void HUD_Ammo(void)
@@ -957,7 +959,7 @@ void HUD_Ammo(void)
                        DrawAmmoItem(pos, ammo_size, 2, true, FALSE); //show rockets
                        return;
                }
-               stat_items = getstati(STAT_ITEMS);
+               stat_items = getstati(STAT_ITEMS, 0, 24);
                if (stat_items & IT_UNLIMITED_WEAPON_AMMO)
                        infinite_ammo = TRUE;
                for (i = 0; i < AMMO_COUNT; ++i) {
@@ -971,7 +973,7 @@ void HUD_Ammo(void)
                return; // nothing to display
        }
 
-       stat_items = getstati(STAT_ITEMS);
+       stat_items = getstati(STAT_ITEMS, 0, 24);
        if (stat_items & IT_UNLIMITED_WEAPON_AMMO)
                infinite_ammo = TRUE;
        for (i = 0; i < AMMO_COUNT; ++i) {
@@ -986,7 +988,7 @@ void HUD_Ammo(void)
        }
 }
 
-void DrawNumIcon(vector myPos, vector mySize, float x, string icon, float vertical, float icon_right_align, vector color, float alpha)
+void DrawNumIcon(vector myPos, vector mySize, float x, string icon, float vertical, float icon_right_align, vector color, float theAlpha)
 {
        vector newPos, newSize;
        vector picpos, numpos;
@@ -1022,12 +1024,12 @@ void DrawNumIcon(vector myPos, vector mySize, float x, string icon, float vertic
                }
 
                newSize_y /= 2;
-               drawpic_aspect_skin(picpos, icon, newSize, '1 1 1', panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
+               drawpic_aspect_skin(picpos, icon, newSize, '1 1 1', panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL);
                // make number smaller than icon, it looks better
                // reduce only y to draw numbers with different number of digits with the same y size
                numpos_y += newSize_y * ((1 - 0.7) / 2);
                newSize_y *= 0.7;
-               drawstring_aspect(numpos, ftos(x), newSize, color, panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
+               drawstring_aspect(numpos, ftos(x), newSize, color, panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL);
                return;
        }
 
@@ -1059,8 +1061,8 @@ void DrawNumIcon(vector myPos, vector mySize, float x, string icon, float vertic
                picpos = newPos;
        }
 
-       drawstring_aspect(numpos, ftos(x), '2 1 0' * newSize_y, color, panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
-       drawpic_aspect_skin(picpos, icon, '1 1 0' * newSize_y, '1 1 1', panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
+       drawstring_aspect(numpos, ftos(x), '2 1 0' * newSize_y, color, panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL);
+       drawpic_aspect_skin(picpos, icon, '1 1 0' * newSize_y, '1 1 1', panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL);
 }
 
 void DrawNumIcon_expanding(vector myPos, vector mySize, float x, string icon, float vertical, float icon_right_align, vector color, float fadelerp)
@@ -1080,7 +1082,7 @@ void HUD_Powerups(void)
        {
                if(!autocvar_hud_panel_powerups) return;
                if(spectatee_status == -1) return;
-               if not(getstati(STAT_ITEMS) & (IT_STRENGTH | IT_INVINCIBLE)) return;
+               if not(getstati(STAT_ITEMS, 0, 24) & (IT_STRENGTH | IT_INVINCIBLE)) return;
                if (getstati(STAT_HEALTH) <= 0) return;
 
                strength_time = bound(0, getstatf(STAT_STRENGTH_FINISHED) - time, 99);
@@ -2692,7 +2694,11 @@ void HUD_Score(void)
        string sign;
        vector distribution_color;
        entity tm, pl, me;
+#ifdef COMPAT_XON050_ENGINE
        me = (spectatee_status > 0) ? playerslots[spectatee_status - 1] : playerslots[player_localentnum - 1];
+#else
+       me = playerslots[player_localentnum - 1];
+#endif
 
        if((scores_flags[ps_primary] & SFL_TIME) && !teamplay) { // race/cts record display on HUD
                string timer, distrtimer;
@@ -3198,7 +3204,7 @@ void HUD_Mod_CTF(vector pos, vector mySize)
        float redflag_statuschange_elapsedtime, blueflag_statuschange_elapsedtime; // time since the status changed
        float stat_items;
 
-       stat_items = getstati(STAT_ITEMS);
+       stat_items = getstati(STAT_ITEMS, 0, 24);
        redflag = (stat_items/IT_RED_FLAG_TAKEN) & 3;
        blueflag = (stat_items/IT_BLUE_FLAG_TAKEN) & 3;
        
@@ -3421,16 +3427,16 @@ void HUD_Mod_KH(vector pos, vector mySize)
                        switch(keyteam)
                        {
                                case COLOR_TEAM1:
-                                       drawpic_aspect_skin(pa, "kh_redarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_aspect_skin(pa, "kh_redarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% theAlpha key
                                        break;
                                case COLOR_TEAM2:
-                                       drawpic_aspect_skin(pa, "kh_bluearrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_aspect_skin(pa, "kh_bluearrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% theAlpha key
                                        break;
                                case COLOR_TEAM3:
-                                       drawpic_aspect_skin(pa, "kh_yellowarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_aspect_skin(pa, "kh_yellowarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% theAlpha key
                                        break;
                                case COLOR_TEAM4:
-                                       drawpic_aspect_skin(pa, "kh_pinkarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_aspect_skin(pa, "kh_pinkarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% theAlpha key
                                        break;
                                default:
                                        break;
@@ -3438,16 +3444,16 @@ void HUD_Mod_KH(vector pos, vector mySize)
                        switch(i) // YAY! switch(i) inside a for loop for i. DailyWTF, here we come!
                        {
                                case 0:
-                                       drawpic_aspect_skin(p, "kh_red", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_aspect_skin(p, "kh_red", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% theAlpha key
                                        break;
                                case 1:
-                                       drawpic_aspect_skin(p, "kh_blue", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_aspect_skin(p, "kh_blue", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% theAlpha key
                                        break;
                                case 2:
-                                       drawpic_aspect_skin(p, "kh_yellow", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_aspect_skin(p, "kh_yellow", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% theAlpha key
                                        break;
                                case 3:
-                                       drawpic_aspect_skin(p, "kh_pink", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_aspect_skin(p, "kh_pink", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% theAlpha key
                                        break;
                        }
                }
@@ -3490,7 +3496,7 @@ void HUD_Mod_Keepaway(vector pos, vector mySize)
        float BLINK_FREQ = 5; 
        float kaball_alpha = BLINK_BASE + BLINK_FACTOR * cos(time * BLINK_FREQ);
        
-       float stat_items = getstati(STAT_ITEMS);
+       float stat_items = getstati(STAT_ITEMS, 0, 24);
        float kaball = (stat_items/IT_KEY1) & 1;
        
        if(kaball != kaball_prevstatus)
@@ -3525,7 +3531,7 @@ void HUD_Mod_NexBall(vector pos, vector mySize)
 {
        float stat_items, nb_pb_starttime, dt, p;
 
-       stat_items = getstati(STAT_ITEMS);
+       stat_items = getstati(STAT_ITEMS, 0, 24);
        nb_pb_starttime = getstatf(STAT_NB_METERSTART);
 
        if (stat_items & IT_KEY1)
@@ -3567,7 +3573,7 @@ void HUD_Mod_Race(vector pos, vector mySize)
 {
        mod_active = 1; // race should never hide the mod icons panel
        entity me;
-       me = playerslots[player_localentnum - 1];
+       me = playerslots[player_localnum];
        float t, score;
        float f; // yet another function has this
        score = me.(scores[ps_primary]);
@@ -3675,7 +3681,7 @@ void HUD_Mod_Race(vector pos, vector mySize)
                drawcolorcodedstring_aspect(namepos, s, '1 0.2 0' * squareSize, panel_fg_alpha * a, DRAWFLAG_NORMAL);
                drawstring_aspect(rankpos, rankname, '1 0.15 0' * squareSize, '1 1 1', panel_fg_alpha * a, DRAWFLAG_NORMAL);
        } else if(race_status == 2) {
-               if(race_status_name == GetPlayerName(player_localentnum -1) || !race_myrank || race_myrank < rank)
+               if(race_status_name == GetPlayerName(player_localnum) || !race_myrank || race_myrank < rank)
                        drawpic_aspect_skin(medalPos + '0.1 0 0' * squareSize, "race_newrankgreen", '1 1 0' * 0.8 * squareSize, '1 1 1', panel_fg_alpha * a, DRAWFLAG_NORMAL);
                else
                        drawpic_aspect_skin(medalPos + '0.1 0 0' * squareSize, "race_newrankyellow", '1 1 0' * 0.8 * squareSize, '1 1 1', panel_fg_alpha * a, DRAWFLAG_NORMAL);
@@ -3948,7 +3954,7 @@ void HUD_Chat(void)
                                }
                        }
                }
-               panel_bg_alpha = max(0.75, panel_bg_alpha); // force an alpha of at least 0.75
+               panel_bg_alpha = max(0.75, panel_bg_alpha); // force an theAlpha of at least 0.75
        }
 
        vector pos, mySize;
@@ -3976,7 +3982,7 @@ void HUD_Chat(void)
        {
                vector chatsize;
                chatsize = '1 1 0' * autocvar_con_chatsize;
-               cvar_set("con_chatrect_x", "9001"); // over 9000, we'll fake it instead for more control over alpha and such
+               cvar_set("con_chatrect_x", "9001"); // over 9000, we'll fake it instead for more control over theAlpha and such
                float i, a;
                for(i = 0; i < autocvar_con_chat; ++i)
                {
@@ -4121,7 +4127,11 @@ void HUD_InfoMessages(void)
                        if(spectatee_status == -1)
                                s = _("^1Observing");
                        else
+#ifdef COMPAT_XON050_ENGINE
                                s = sprintf(_("^1Spectating: ^7%s"), GetPlayerName(spectatee_status - 1));
+#else
+                               s = sprintf(_("^1Spectating: ^7%s"), GetPlayerName(player_localentnum - 1));
+#endif
                        drawInfoMessage(s)
 
                        if(spectatee_status == -1)
@@ -4144,7 +4154,7 @@ void HUD_InfoMessages(void)
                        else if(gametype == GAME_LMS)
                        {
                                entity sk;
-                               sk = playerslots[player_localentnum - 1];
+                               sk = playerslots[player_localnum];
                                if(sk.(scores[ps_primary]) >= 666)
                                        s = _("^1Match has already begun");
                                else if(sk.(scores[ps_primary]) > 0)
@@ -4685,11 +4695,11 @@ void HUD_CenterPrint (void)
                // also fade it based on positioning
                if(autocvar_hud_panel_centerprint_fade_subsequent)
                {
-                       a = a * bound(autocvar_hud_panel_centerprint_fade_subsequent_passone_minalpha, (1 - (i / max(1, autocvar_hud_panel_centerprint_fade_subsequent_passone))), 1); // pass one: all messages after the first have half alpha
-                       a = a * bound(autocvar_hud_panel_centerprint_fade_subsequent_passtwo_minalpha, (1 - (i / max(1, autocvar_hud_panel_centerprint_fade_subsequent_passtwo))), 1); // pass two: after that, gradually lower alpha even more for each message
+                       a = a * bound(autocvar_hud_panel_centerprint_fade_subsequent_passone_minalpha, (1 - (i / max(1, autocvar_hud_panel_centerprint_fade_subsequent_passone))), 1); // pass one: all messages after the first have half theAlpha
+                       a = a * bound(autocvar_hud_panel_centerprint_fade_subsequent_passtwo_minalpha, (1 - (i / max(1, autocvar_hud_panel_centerprint_fade_subsequent_passtwo))), 1); // pass two: after that, gradually lower theAlpha even more for each message
                }
                
-               // finally set the size based on the new alpha from subsequent fading
+               // finally set the size based on the new theAlpha from subsequent fading
                sz = sz * (autocvar_hud_panel_centerprint_fade_subsequent_minfontsize + a * (1 - autocvar_hud_panel_centerprint_fade_subsequent_minfontsize)); 
                drawfontscale = sz * '1 1 0';
                
@@ -4824,7 +4834,7 @@ switch (id) {\
 void HUD_Main (void)
 {
        float i;
-       // global hud alpha fade
+       // global hud theAlpha fade
        if(menu_enabled == 1)
                hud_fade_alpha = 1;
        else
@@ -4883,7 +4893,11 @@ void HUD_Main (void)
                        drawfill(eY * i * hud_configure_realGridSize_y, eY + eX * vid_conwidth, '0.5 0.5 0.5', autocvar_hud_configure_grid_alpha, DRAWFLAG_NORMAL);
        }
 
+#ifdef COMPAT_XON050_ENGINE
     current_player = (spectatee_status > 0) ? spectatee_status : player_localentnum;
+#else
+    current_player = player_localentnum;
+#endif
 
        // draw the dock
        if(autocvar_hud_dock != "" && autocvar_hud_dock != "0")
@@ -4993,7 +5007,7 @@ void HUD_Main (void)
 
        hud_configure_prev = autocvar__hud_configure;
 
-       if (!autocvar__hud_configure) // hud config mode disabled, enable normal alpha stuff again
+       if (!autocvar__hud_configure) // hud config mode disabled, enable normal theAlpha stuff again
                if (menu_enabled)
                        menu_enabled = 0;
 }