+ if(_Nex_ExtResponseSystem_PacksStep > 0)
+ {
+ float n, i;
+ float allgood;
+ n = tokenize_console(_Nex_ExtResponseSystem_Packs);
+ allgood = TRUE;
+ for(i = 0; i+1 < n; i += 2)
+ {
+ if(fexists(argv(i+1)))
+ continue;
+ allgood = FALSE;
+ if(_Nex_ExtResponseSystem_PacksStep == 1) // first run
+ localcmd("\ncurl --pak \"", argv(i), "\"\n");
+ }
+ if(allgood)
+ {
+ if(_Nex_ExtResponseSystem_PacksStep == 2)
+ {
+ if(!Menu_Active)
+ cvar_set("_menu_initialized", "0");
+ // HACK: cause m_hide call on next start
+ localcmd("\nmenu_restart\n");
+ }
+ _Nex_ExtResponseSystem_PacksStep = 0;
+ }
+ else
+ _Nex_ExtResponseSystem_PacksStep = 2;
+ }
+
+}
+
+float preMenuInit()
+{
+ vector sz;
+ vector boxA, boxB;
+
+ updateCheck();
+
+ MapInfo_Cache_Create();
+ MapInfo_Enumerate();
+ if(!MapInfo_FilterGametype(MAPINFO_TYPE_ALL, 0, 0, 0, 1))
+ {
+ draw_reset_cropped();
+
+ sz = eX * 0.025 + eY * 0.025 * (draw_scale_x / draw_scale_y);
+ draw_CenterText('0.5 0.5 0' - 1.25 * sz_y * eY, _("Autogenerating mapinfo for newly added maps..."), sz, '1 1 1', 1, 0);
+
+ boxA = '0.05 0.5 0' + 0.25 * sz_y * eY;
+ boxB = '0.95 0.5 0' + 1.25 * sz_y * eY;
+ draw_Fill(boxA, boxB - boxA, '1 1 1', 1);
+
+ boxA += sz * 0.1;
+ boxB -= sz * 0.1;
+ draw_Fill(boxA, boxB - boxA, '0.1 0.1 0.1', 1);
+
+ boxB_x = boxA_x * (1 - MapInfo_progress) + boxB_x * MapInfo_progress;
+ draw_Fill(boxA, boxB - boxA, '0 0 1', 1);
+
+ return FALSE;
+ }
+ return TRUE;
+}
+
+string campaign_name_previous;
+float campaign_won_previous;
+#ifdef WATERMARK
+var string autocvar_menu_watermark = WATERMARK;
+#else
+var string autocvar_menu_watermark = "";
+#endif
+void postMenuDraw()
+{
+ if(autocvar_menu_watermark != "")
+ {
+ draw_CenterText('0.5 0.1 0', sprintf(_("^1%s TEST BUILD"), autocvar_menu_watermark), globalToBoxSize('32 32 0', draw_scale), '1 1 1', 0.05, 1);
+ }
+}
+void preMenuDraw()
+{
+ vector fs, sz = '0 0 0', line, mid;
+
+ updateCheck();
+