]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - menu.c
split up net_slist into net_slist and net_slistqw, and modified menu accordingly...
[xonotic/darkplaces.git] / menu.c
diff --git a/menu.c b/menu.c
index 587644dba708831ccd7a71a9d4a70b5f1b75eaf0..d121bbfc813046f42947098173451a81fd0074de 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -167,8 +167,8 @@ void M_Background(int width, int height)
        menu_height = bound(1, height, vid_conheight.integer);
        menu_x = (vid_conwidth.integer - menu_width) * 0.5;
        menu_y = (vid_conheight.integer - menu_height) * 0.5;
-       //DrawQ_Fill(menu_x, menu_y, menu_width, menu_height, 0, 0, 0, 0.5, 0);
-       DrawQ_Fill(0, 0, vid_conwidth.integer, vid_conheight.integer, 0, 0, 0, 0.5, 0);
+       //DrawQ_Pic(menu_x, menu_y, NULL, menu_width, menu_height, 0, 0, 0, 0.5, 0);
+       DrawQ_Pic(0, 0, NULL, vid_conwidth.integer, vid_conheight.integer, 0, 0, 0, 0.5, 0);
 }
 
 /*
@@ -211,7 +211,7 @@ void M_ItemPrint(float cx, float cy, const char *str, int unghosted)
 
 void M_DrawPic (float cx, float cy, const char *picname)
 {
-       DrawQ_Pic (menu_x + cx, menu_y + cy, picname, 0, 0, 1, 1, 1, 1, 0);
+       DrawQ_Pic (menu_x + cx, menu_y + cy, Draw_CachePic(picname, false), 0, 0, 1, 1, 1, 1, 0);
 }
 
 unsigned char identityTable[256];
@@ -692,8 +692,11 @@ void M_Main_Key (int key, char ascii)
                        switch (m_main_cursor)
                        {
                        case 0:
-                               m_state = m_none;
-                               key_dest = key_game;
+                               if (cls.state == ca_connected)
+                               {
+                                       m_state = m_none;
+                                       key_dest = key_game;
+                               }
                                Con_ToggleConsole_f ();
                                break;
                        case 1:
@@ -1640,7 +1643,7 @@ void M_Options_PrintCommand(const char *s, int enabled)
 {
        if (opty >= 32)
        {
-               DrawQ_Fill(menu_x, menu_y + opty, 320, 8, optnum == optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
+               DrawQ_Pic(menu_x, menu_y + opty, NULL, 320, 8, optnum == optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
                M_ItemPrint(0, opty, s, enabled);
        }
        opty += 8;
@@ -1651,7 +1654,7 @@ void M_Options_PrintCheckbox(const char *s, int enabled, int yes)
 {
        if (opty >= 32)
        {
-               DrawQ_Fill(menu_x, menu_y + opty, 320, 8, optnum == optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
+               DrawQ_Pic(menu_x, menu_y + opty, NULL, 320, 8, optnum == optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
                M_ItemPrint(0, opty, s, enabled);
                M_DrawCheckbox(0 + (int)strlen(s) * 8 + 8, opty, yes);
        }
@@ -1663,7 +1666,7 @@ void M_Options_PrintSlider(const char *s, int enabled, float value, float minval
 {
        if (opty >= 32)
        {
-               DrawQ_Fill(menu_x, menu_y + opty, 320, 8, optnum == optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
+               DrawQ_Pic(menu_x, menu_y + opty, NULL, 320, 8, optnum == optcursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
                M_ItemPrint(0, opty, s, enabled);
                M_DrawSlider(0 + (int)strlen(s) * 8 + 8, opty, value, minvalue, maxvalue);
        }
@@ -2194,7 +2197,9 @@ void M_Options_ColorControl_Draw (void)
 {
        int visible;
        float x, c, s, t, u, v;
-       cachepic_t      *p;
+       cachepic_t      *p, *dither;
+
+       dither = Draw_CachePic("gfx/colorcontrol/ditherpattern", false);
 
        M_Background(320, 256);
 
@@ -2227,17 +2232,17 @@ void M_Options_ColorControl_Draw (void)
        M_Options_PrintSlider(  "          White: Grey ", v_color_enable.integer, (v_color_white_r.value + v_color_white_g.value + v_color_white_b.value) / 3, 1, 5);
 
        opty += 4;
-       DrawQ_Fill(menu_x, menu_y + opty, 320, 4 + 64 + 8 + 64 + 4, 0, 0, 0, 1, 0);opty += 4;
+       DrawQ_Pic(menu_x, menu_y + opty, NULL, 320, 4 + 64 + 8 + 64 + 4, 0, 0, 0, 1, 0);opty += 4;
        s = (float) 312 / 2 * vid.width / vid_conwidth.integer;
        t = (float) 4 / 2 * vid.height / vid_conheight.integer;
-       DrawQ_SuperPic(menu_x + 4, menu_y + opty, "gfx/colorcontrol/ditherpattern", 312, 4, 0,0, 1,0,0,1, s,0, 1,0,0,1, 0,t, 1,0,0,1, s,t, 1,0,0,1, 0);opty += 4;
-       DrawQ_SuperPic(menu_x + 4, menu_y + opty, NULL                                , 312, 4, 0,0, 0,0,0,1, 1,0, 1,0,0,1, 0,1, 0,0,0,1, 1,1, 1,0,0,1, 0);opty += 4;
-       DrawQ_SuperPic(menu_x + 4, menu_y + opty, "gfx/colorcontrol/ditherpattern", 312, 4, 0,0, 0,1,0,1, s,0, 0,1,0,1, 0,t, 0,1,0,1, s,t, 0,1,0,1, 0);opty += 4;
-       DrawQ_SuperPic(menu_x + 4, menu_y + opty, NULL                                , 312, 4, 0,0, 0,0,0,1, 1,0, 0,1,0,1, 0,1, 0,0,0,1, 1,1, 0,1,0,1, 0);opty += 4;
-       DrawQ_SuperPic(menu_x + 4, menu_y + opty, "gfx/colorcontrol/ditherpattern", 312, 4, 0,0, 0,0,1,1, s,0, 0,0,1,1, 0,t, 0,0,1,1, s,t, 0,0,1,1, 0);opty += 4;
-       DrawQ_SuperPic(menu_x + 4, menu_y + opty, NULL                                , 312, 4, 0,0, 0,0,0,1, 1,0, 0,0,1,1, 0,1, 0,0,0,1, 1,1, 0,0,1,1, 0);opty += 4;
-       DrawQ_SuperPic(menu_x + 4, menu_y + opty, "gfx/colorcontrol/ditherpattern", 312, 4, 0,0, 1,1,1,1, s,0, 1,1,1,1, 0,t, 1,1,1,1, s,t, 1,1,1,1, 0);opty += 4;
-       DrawQ_SuperPic(menu_x + 4, menu_y + opty, NULL                                , 312, 4, 0,0, 0,0,0,1, 1,0, 1,1,1,1, 0,1, 0,0,0,1, 1,1, 1,1,1,1, 0);opty += 4;
+       DrawQ_SuperPic(menu_x + 4, menu_y + opty, dither, 312, 4, 0,0, 1,0,0,1, s,0, 1,0,0,1, 0,t, 1,0,0,1, s,t, 1,0,0,1, 0);opty += 4;
+       DrawQ_SuperPic(menu_x + 4, menu_y + opty, NULL  , 312, 4, 0,0, 0,0,0,1, 1,0, 1,0,0,1, 0,1, 0,0,0,1, 1,1, 1,0,0,1, 0);opty += 4;
+       DrawQ_SuperPic(menu_x + 4, menu_y + opty, dither, 312, 4, 0,0, 0,1,0,1, s,0, 0,1,0,1, 0,t, 0,1,0,1, s,t, 0,1,0,1, 0);opty += 4;
+       DrawQ_SuperPic(menu_x + 4, menu_y + opty, NULL  , 312, 4, 0,0, 0,0,0,1, 1,0, 0,1,0,1, 0,1, 0,0,0,1, 1,1, 0,1,0,1, 0);opty += 4;
+       DrawQ_SuperPic(menu_x + 4, menu_y + opty, dither, 312, 4, 0,0, 0,0,1,1, s,0, 0,0,1,1, 0,t, 0,0,1,1, s,t, 0,0,1,1, 0);opty += 4;
+       DrawQ_SuperPic(menu_x + 4, menu_y + opty, NULL  , 312, 4, 0,0, 0,0,0,1, 1,0, 0,0,1,1, 0,1, 0,0,0,1, 1,1, 0,0,1,1, 0);opty += 4;
+       DrawQ_SuperPic(menu_x + 4, menu_y + opty, dither, 312, 4, 0,0, 1,1,1,1, s,0, 1,1,1,1, 0,t, 1,1,1,1, s,t, 1,1,1,1, 0);opty += 4;
+       DrawQ_SuperPic(menu_x + 4, menu_y + opty, NULL  , 312, 4, 0,0, 0,0,0,1, 1,0, 1,1,1,1, 0,1, 0,0,0,1, 1,1, 1,1,1,1, 0);opty += 4;
 
        c = menu_options_colorcontrol_correctionvalue.value; // intensity value that should be matched up to a 50% dither to 'correct' quake
        s = (float) 48 / 2 * vid.width / vid_conwidth.integer;
@@ -2246,21 +2251,21 @@ void M_Options_ColorControl_Draw (void)
        v = t * 0.5;
        opty += 8;
        x = 4;
-       DrawQ_Fill(menu_x + x, menu_y + opty, 64, 48, c, 0, 0, 1, 0);
-       DrawQ_SuperPic(menu_x + x + 16, menu_y + opty + 16, "gfx/colorcontrol/ditherpattern", 16, 16, 0,0, 1,0,0,1, s,0, 1,0,0,1, 0,t, 1,0,0,1, s,t, 1,0,0,1, 0);
-       DrawQ_SuperPic(menu_x + x + 32, menu_y + opty + 16, "gfx/colorcontrol/ditherpattern", 16, 16, 0,0, 1,0,0,1, u,0, 1,0,0,1, 0,v, 1,0,0,1, u,v, 1,0,0,1, 0);
+       DrawQ_Pic(menu_x + x, menu_y + opty, NULL, 64, 48, c, 0, 0, 1, 0);
+       DrawQ_SuperPic(menu_x + x + 16, menu_y + opty + 16, dither, 16, 16, 0,0, 1,0,0,1, s,0, 1,0,0,1, 0,t, 1,0,0,1, s,t, 1,0,0,1, 0);
+       DrawQ_SuperPic(menu_x + x + 32, menu_y + opty + 16, dither, 16, 16, 0,0, 1,0,0,1, u,0, 1,0,0,1, 0,v, 1,0,0,1, u,v, 1,0,0,1, 0);
        x += 80;
-       DrawQ_Fill(menu_x + x, menu_y + opty, 64, 48, 0, c, 0, 1, 0);
-       DrawQ_SuperPic(menu_x + x + 16, menu_y + opty + 16, "gfx/colorcontrol/ditherpattern", 16, 16, 0,0, 0,1,0,1, s,0, 0,1,0,1, 0,t, 0,1,0,1, s,t, 0,1,0,1, 0);
-       DrawQ_SuperPic(menu_x + x + 32, menu_y + opty + 16, "gfx/colorcontrol/ditherpattern", 16, 16, 0,0, 0,1,0,1, u,0, 0,1,0,1, 0,v, 0,1,0,1, u,v, 0,1,0,1, 0);
+       DrawQ_Pic(menu_x + x, menu_y + opty, NULL, 64, 48, 0, c, 0, 1, 0);
+       DrawQ_SuperPic(menu_x + x + 16, menu_y + opty + 16, dither, 16, 16, 0,0, 0,1,0,1, s,0, 0,1,0,1, 0,t, 0,1,0,1, s,t, 0,1,0,1, 0);
+       DrawQ_SuperPic(menu_x + x + 32, menu_y + opty + 16, dither, 16, 16, 0,0, 0,1,0,1, u,0, 0,1,0,1, 0,v, 0,1,0,1, u,v, 0,1,0,1, 0);
        x += 80;
-       DrawQ_Fill(menu_x + x, menu_y + opty, 64, 48, 0, 0, c, 1, 0);
-       DrawQ_SuperPic(menu_x + x + 16, menu_y + opty + 16, "gfx/colorcontrol/ditherpattern", 16, 16, 0,0, 0,0,1,1, s,0, 0,0,1,1, 0,t, 0,0,1,1, s,t, 0,0,1,1, 0);
-       DrawQ_SuperPic(menu_x + x + 32, menu_y + opty + 16, "gfx/colorcontrol/ditherpattern", 16, 16, 0,0, 0,0,1,1, u,0, 0,0,1,1, 0,v, 0,0,1,1, u,v, 0,0,1,1, 0);
+       DrawQ_Pic(menu_x + x, menu_y + opty, NULL, 64, 48, 0, 0, c, 1, 0);
+       DrawQ_SuperPic(menu_x + x + 16, menu_y + opty + 16, dither, 16, 16, 0,0, 0,0,1,1, s,0, 0,0,1,1, 0,t, 0,0,1,1, s,t, 0,0,1,1, 0);
+       DrawQ_SuperPic(menu_x + x + 32, menu_y + opty + 16, dither, 16, 16, 0,0, 0,0,1,1, u,0, 0,0,1,1, 0,v, 0,0,1,1, u,v, 0,0,1,1, 0);
        x += 80;
-       DrawQ_Fill(menu_x + x, menu_y + opty, 64, 48, c, c, c, 1, 0);
-       DrawQ_SuperPic(menu_x + x + 16, menu_y + opty + 16, "gfx/colorcontrol/ditherpattern", 16, 16, 0,0, 1,1,1,1, s,0, 1,1,1,1, 0,t, 1,1,1,1, s,t, 1,1,1,1, 0);
-       DrawQ_SuperPic(menu_x + x + 32, menu_y + opty + 16, "gfx/colorcontrol/ditherpattern", 16, 16, 0,0, 1,1,1,1, u,0, 1,1,1,1, 0,v, 1,1,1,1, u,v, 1,1,1,1, 0);
+       DrawQ_Pic(menu_x + x, menu_y + opty, NULL, 64, 48, c, c, c, 1, 0);
+       DrawQ_SuperPic(menu_x + x + 16, menu_y + opty + 16, dither, 16, 16, 0,0, 1,1,1,1, s,0, 1,1,1,1, 0,t, 1,1,1,1, s,t, 1,1,1,1, 0);
+       DrawQ_SuperPic(menu_x + x + 32, menu_y + opty + 16, dither, 16, 16, 0,0, 1,1,1,1, u,0, 1,1,1,1, 0,v, 1,1,1,1, u,v, 1,1,1,1, 0);
 }
 
 
@@ -3075,10 +3080,10 @@ void M_Menu_Credits_f (void)
 void M_Credits_Draw (void)
 {
        M_Background(640, 480);
-       DrawQ_Pic (0, 0, "gfx/creditsmiddle", 0, 0, 1, 1, 1, 1, 0);
+       M_DrawPic (0, 0, "gfx/creditsmiddle");
        M_Print (640/2 - 14/2*8, 236, "Coming soon...");
-       DrawQ_Pic (0, 0, "gfx/creditstop", 0, 0, 1, 1, 1, 1, 0);
-       DrawQ_Pic (0, 433, "gfx/creditsbottom", 0, 0, 1, 1, 1, 1, 0);
+       M_DrawPic (0, 0, "gfx/creditstop");
+       M_DrawPic (0, 433, "gfx/creditsbottom");
 }
 
 
@@ -3242,8 +3247,8 @@ void M_Quit_Draw (void)
 /* LAN CONFIG MENU */
 
 int            lanConfig_cursor = -1;
-int            lanConfig_cursor_table [] = {56, 76, 112};
-#define NUM_LANCONFIG_CMDS     3
+int            lanConfig_cursor_table [] = {56, 76, 84, 120};
+#define NUM_LANCONFIG_CMDS     4
 
 int    lanConfig_port;
 char   lanConfig_portname[6];
@@ -3296,10 +3301,11 @@ void M_LanConfig_Draw (void)
 
        if (JoiningGame)
        {
-               M_Print(basex, lanConfig_cursor_table[1], "Search for games...");
-               M_Print(basex, lanConfig_cursor_table[2]-16, "Join game at:");
-               M_DrawTextBox (basex+8, lanConfig_cursor_table[2]-8, 22, 1);
-               M_Print(basex+16, lanConfig_cursor_table[2], lanConfig_joinname);
+               M_Print(basex, lanConfig_cursor_table[1], "Search for DarkPlaces games...");
+               M_Print(basex, lanConfig_cursor_table[2], "Search for QuakeWorld games...");
+               M_Print(basex, lanConfig_cursor_table[3]-16, "Join game at:");
+               M_DrawTextBox (basex+8, lanConfig_cursor_table[3]-8, 22, 1);
+               M_Print(basex+16, lanConfig_cursor_table[3], lanConfig_joinname);
        }
        else
        {
@@ -3310,10 +3316,10 @@ void M_LanConfig_Draw (void)
        M_DrawCharacter (basex-8, lanConfig_cursor_table [lanConfig_cursor], 12+((int)(realtime*4)&1));
 
        if (lanConfig_cursor == 0)
-               M_DrawCharacter (basex+9*8 + 8*strlen(lanConfig_portname), lanConfig_cursor_table [0], 10+((int)(realtime*4)&1));
+               M_DrawCharacter (basex+9*8 + 8*strlen(lanConfig_portname), lanConfig_cursor_table [lanConfig_cursor], 10+((int)(realtime*4)&1));
 
-       if (lanConfig_cursor == 2)
-               M_DrawCharacter (basex+16 + 8*strlen(lanConfig_joinname), lanConfig_cursor_table [2], 10+((int)(realtime*4)&1));
+       if (lanConfig_cursor == 3)
+               M_DrawCharacter (basex+16 + 8*strlen(lanConfig_joinname), lanConfig_cursor_table [lanConfig_cursor], 10+((int)(realtime*4)&1));
 
        if (*m_return_reason)
                M_Print(basex, 168, m_return_reason);
@@ -3335,6 +3341,9 @@ void M_LanConfig_Key (int key, char ascii)
                lanConfig_cursor--;
                if (lanConfig_cursor < 0)
                        lanConfig_cursor = NUM_LANCONFIG_CMDS-1;
+               // when in start game menu, skip the unused search qw servers item
+               if (StartingGame && lanConfig_cursor == 2)
+                       lanConfig_cursor = 1;
                break;
 
        case K_DOWNARROW:
@@ -3342,6 +3351,9 @@ void M_LanConfig_Key (int key, char ascii)
                lanConfig_cursor++;
                if (lanConfig_cursor >= NUM_LANCONFIG_CMDS)
                        lanConfig_cursor = 0;
+               // when in start game menu, skip the unused search qw servers item
+               if (StartingGame && lanConfig_cursor == 1)
+                       lanConfig_cursor = 2;
                break;
 
        case K_ENTER:
@@ -3354,7 +3366,7 @@ void M_LanConfig_Key (int key, char ascii)
 
                Cvar_SetValue("port", lanConfig_port);
 
-               if (lanConfig_cursor == 1)
+               if (lanConfig_cursor == 1 || lanConfig_cursor == 2)
                {
                        if (StartingGame)
                        {
@@ -3365,7 +3377,7 @@ void M_LanConfig_Key (int key, char ascii)
                        break;
                }
 
-               if (lanConfig_cursor == 2)
+               if (lanConfig_cursor == 3)
                        Cbuf_AddText ( va ("connect \"%s\"\n", lanConfig_joinname) );
                break;
 
@@ -3376,7 +3388,7 @@ void M_LanConfig_Key (int key, char ascii)
                                lanConfig_portname[strlen(lanConfig_portname)-1] = 0;
                }
 
-               if (lanConfig_cursor == 2)
+               if (lanConfig_cursor == 3)
                {
                        if (strlen(lanConfig_joinname))
                                lanConfig_joinname[strlen(lanConfig_joinname)-1] = 0;
@@ -3387,7 +3399,7 @@ void M_LanConfig_Key (int key, char ascii)
                if (ascii < 32)
                        break;
 
-               if (lanConfig_cursor == 2)
+               if (lanConfig_cursor == 3)
                {
                        l = (int)strlen(lanConfig_joinname);
                        if (l < 21)
@@ -3410,7 +3422,7 @@ void M_LanConfig_Key (int key, char ascii)
                }
        }
 
-       if (StartingGame && lanConfig_cursor == 2)
+       if (StartingGame && lanConfig_cursor == 3)
        {
                if (key == K_UPARROW)
                        lanConfig_cursor = 1;
@@ -4025,10 +4037,10 @@ void M_GameOptions_Draw (void)
                        x = (320-26*8)/2;
                        M_DrawTextBox (x, 138, 24, 4);
                        x += 8;
-                       M_Print(x, 146, " More than 64 players?? ");
+                       M_Print(x, 146, " More than 255 players??");
                        M_Print(x, 154, "  First, question your  ");
                        M_Print(x, 162, "   sanity, then email   ");
-                       M_Print(x, 170, " havoc@telefragged.com  ");
+                       M_Print(x, 170, " lordhavoc@ghdigital.com");
                }
                else
                        m_serverInfoMessage = false;
@@ -4300,7 +4312,10 @@ void M_Menu_ServerList_f (void)
        m_entersound = true;
        slist_cursor = 0;
        M_Update_Return_Reason("");
-       Net_Slist_f();
+       if (lanConfig_cursor == 2)
+               Net_SlistQW_f();
+       else
+               Net_Slist_f();
 }
 
 
@@ -4331,18 +4346,25 @@ void M_ServerList_Draw (void)
        {
                for (n = start;n < end;n++)
                {
-                       DrawQ_Fill(menu_x, menu_y + y, 640, 16, n == slist_cursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
+                       DrawQ_Pic(menu_x, menu_y + y, NULL, 640, 16, n == slist_cursor ? (0.5 + 0.2 * sin(realtime * M_PI)) : 0, 0, 0, 0.5, 0);
                        M_PrintColored(0, y, serverlist_viewlist[n]->line1);y += 8;
                        M_PrintColored(0, y, serverlist_viewlist[n]->line2);y += 8;
                }
        }
-       else if (realtime - masterquerytime < 3)
+       else if (realtime - masterquerytime > 10)
        {
                if (masterquerycount)
                        M_Print(0, y, "No servers found");
                else
                        M_Print(0, y, "No master servers found (network problem?)");
        }
+       else
+       {
+               if (serverquerycount)
+                       M_Print(0, y, "Querying servers");
+               else
+                       M_Print(0, y, "Querying master servers");
+       }
 }
 
 
@@ -4355,7 +4377,10 @@ void M_ServerList_Key(int k, char ascii)
                break;
 
        case K_SPACE:
-               Net_Slist_f();
+               if (lanConfig_cursor == 2)
+                       Net_SlistQW_f();
+               else
+                       Net_Slist_f();
                break;
 
        case K_UPARROW:
@@ -4581,7 +4606,7 @@ void M_Draw (void)
 
        if (gamemode == GAME_TRANSFUSION) {
                if (m_state != m_credits) {
-                       cachepic_t      *p;
+                       cachepic_t      *p, *drop1, *drop2, *drop3;
                        int g, scale_x, scale_y, scale_y_repeat, top_offset;
                        float scale_y_rate;
                        scale_y_repeat = vid_conheight.integer * 2;
@@ -4589,21 +4614,24 @@ void M_Draw (void)
                        scale_y_rate = (float)(g+1) / 96;
                        top_offset = (g+12)/12;
                        p = Draw_CachePic (va("gfx/menu/blooddrip%i", top_offset), false);
+                       drop1 = Draw_CachePic("gfx/menu/blooddrop1", false);
+                       drop2 = Draw_CachePic("gfx/menu/blooddrop2", false);
+                       drop3 = Draw_CachePic("gfx/menu/blooddrop3", false);
                        for (scale_x = 0; scale_x <= vid_conwidth.integer; scale_x += p->width) {
                                for (scale_y = -scale_y_repeat; scale_y <= vid_conheight.integer; scale_y += scale_y_repeat) {
-                                       DrawQ_Pic (scale_x + 21, scale_y_repeat * .5 + scale_y + scale_y_rate * scale_y_repeat, "gfx/menu/blooddrop3", 0, 0, 1, 1, 1, 1, 0);
-                                       DrawQ_Pic (scale_x +  116, scale_y_repeat + scale_y + scale_y_rate * scale_y_repeat, "gfx/menu/blooddrop1", 0, 0, 1, 1, 1, 1, 0);
-                                       DrawQ_Pic (scale_x + 180, scale_y_repeat * .275 + scale_y + scale_y_rate * scale_y_repeat, "gfx/menu/blooddrop3", 0, 0, 1, 1, 1, 1, 0);
-                                       DrawQ_Pic (scale_x + 242, scale_y_repeat * .75 + scale_y + scale_y_rate * scale_y_repeat, "gfx/menu/blooddrop3", 0, 0, 1, 1, 1, 1, 0);
-                                       DrawQ_Pic (scale_x + 304, scale_y_repeat * .25 + scale_y + scale_y_rate * scale_y_repeat, "gfx/menu/blooddrop3", 0, 0, 1, 1, 1, 1, 0);
-                                       DrawQ_Pic (scale_x + 362, scale_y_repeat * .46125 + scale_y + scale_y_rate * scale_y_repeat, "gfx/menu/blooddrop3", 0, 0, 1, 1, 1, 1, 0);
-                                       DrawQ_Pic (scale_x + 402, scale_y_repeat * .1725 + scale_y + scale_y_rate * scale_y_repeat, "gfx/menu/blooddrop3", 0, 0, 1, 1, 1, 1, 0);
-                                       DrawQ_Pic (scale_x + 438, scale_y_repeat * .9 + scale_y + scale_y_rate * scale_y_repeat, "gfx/menu/blooddrop1", 0, 0, 1, 1, 1, 1, 0);
-                                       DrawQ_Pic (scale_x + 484, scale_y_repeat * .5 + scale_y + scale_y_rate * scale_y_repeat, "gfx/menu/blooddrop3", 0, 0, 1, 1, 1, 1, 0);
-                                       DrawQ_Pic (scale_x + 557, scale_y_repeat * .9425 + scale_y + scale_y_rate * scale_y_repeat, "gfx/menu/blooddrop1", 0, 0, 1, 1, 1, 1, 0);
-                                       DrawQ_Pic (scale_x + 606, scale_y_repeat * .5 + scale_y + scale_y_rate * scale_y_repeat, "gfx/menu/blooddrop2", 0, 0, 1, 1, 1, 1, 0);
+                                       DrawQ_Pic (scale_x + 21, scale_y_repeat * .5 + scale_y + scale_y_rate * scale_y_repeat, drop3, 0, 0, 1, 1, 1, 1, 0);
+                                       DrawQ_Pic (scale_x +  116, scale_y_repeat + scale_y + scale_y_rate * scale_y_repeat, drop1, 0, 0, 1, 1, 1, 1, 0);
+                                       DrawQ_Pic (scale_x + 180, scale_y_repeat * .275 + scale_y + scale_y_rate * scale_y_repeat, drop3, 0, 0, 1, 1, 1, 1, 0);
+                                       DrawQ_Pic (scale_x + 242, scale_y_repeat * .75 + scale_y + scale_y_rate * scale_y_repeat, drop3, 0, 0, 1, 1, 1, 1, 0);
+                                       DrawQ_Pic (scale_x + 304, scale_y_repeat * .25 + scale_y + scale_y_rate * scale_y_repeat, drop3, 0, 0, 1, 1, 1, 1, 0);
+                                       DrawQ_Pic (scale_x + 362, scale_y_repeat * .46125 + scale_y + scale_y_rate * scale_y_repeat, drop3, 0, 0, 1, 1, 1, 1, 0);
+                                       DrawQ_Pic (scale_x + 402, scale_y_repeat * .1725 + scale_y + scale_y_rate * scale_y_repeat, drop3, 0, 0, 1, 1, 1, 1, 0);
+                                       DrawQ_Pic (scale_x + 438, scale_y_repeat * .9 + scale_y + scale_y_rate * scale_y_repeat, drop1, 0, 0, 1, 1, 1, 1, 0);
+                                       DrawQ_Pic (scale_x + 484, scale_y_repeat * .5 + scale_y + scale_y_rate * scale_y_repeat, drop3, 0, 0, 1, 1, 1, 1, 0);
+                                       DrawQ_Pic (scale_x + 557, scale_y_repeat * .9425 + scale_y + scale_y_rate * scale_y_repeat, drop1, 0, 0, 1, 1, 1, 1, 0);
+                                       DrawQ_Pic (scale_x + 606, scale_y_repeat * .5 + scale_y + scale_y_rate * scale_y_repeat, drop2, 0, 0, 1, 1, 1, 1, 0);
                                }
-                               DrawQ_Pic (scale_x, -1, va("gfx/menu/blooddrip%i", top_offset), 0, 0, 1, 1, 1, 1, 0);
+                               DrawQ_Pic (scale_x, -1, Draw_CachePic(va("gfx/menu/blooddrip%i", top_offset), false), 0, 0, 1, 1, 1, 1, 0);
                        }
                }
        }