-setshader bumpspecmapparallaxglowworld\r
+setshader bumpspecmapglowworld\r
 setshaderparam specscale 0.6 0.6 0.6\r
-setshaderparam parallaxscale 0.04 -0.02\r
-setshaderparam glowcolor 1 0.59 0.01\r
+setshaderparam glowcolor 1 0.6 0.1\r
 \r
-texture 0 "textures/ex/light_u201_d.png"\r
-texture n "textures/ex/light_u201_local.png"\r
+texture c "textures/ex/light_u201_c.png"\r
+texture n "textures/ex/light_u201_n.png"\r
 texture s "textures/ex/light_u201_s.png"\r
-texture z "textures/ex/light_u201_h.png"\r
-texture g "textures/ex/light_u201_add.png"\r
+texture g "textures/ex/light_u201_g.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/lightpanel_01_d.png"\r
-texture n "textures/ex/lightpanel_01_local.png"\r
+texture c "textures/ex/lightpanel_01_c.png"\r
+texture n "textures/ex/lightpanel_01_n.png"\r
 texture s "textures/ex/lightpanel_01_s.png"\r
-texture z "textures/ex/lightpanel_01_h.png"\r
-texture g "textures/ex/lightpanel_01_add.png"\r
+texture g "textures/ex/lightpanel_01_g.png"\r
 texscale 0.5\r
 \r
-setshader bumpspecmapparallaxworld\r
+setshader bumpspecmapworld\r
 setshaderparam specscale 0.6 0.6 0.6\r
-setshaderparam parallaxscale 0.04 -0.02\r
 \r
-texture 0 "textures/ex/clangfloor_01_d.png"\r
-texture n "textures/ex/clangfloor_01_local.png"\r
+texture c "textures/ex/clangfloor_01_c.png"\r
+texture n "textures/ex/clangfloor_01_n.png"\r
 texture s "textures/ex/clangfloor_01_s.png"\r
-texture z "textures/ex/clangfloor_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/clangfloor_01b_d.png"\r
-texture n "textures/ex/clangfloor_01_local.png"\r
+texture c "textures/ex/clangfloor_01b_c.png"\r
+texture n "textures/ex/clangfloor_01_n.png"\r
 texture s "textures/ex/clangfloor_01_s.png"\r
-texture z "textures/ex/clangfloor_01_h.png"\r
 texscale 0.5\r
 \r
-setshaderparam specscale 0.3 0.3 0.3\r
-\r
-texture 0 "textures/ex/cretebase_01_d.png"\r
-texture n "textures/ex/cretebase_01_local.png"\r
+texture c "textures/ex/cretebase_01_c.png"\r
+texture n "textures/ex/cretebase_01_n.png"\r
 texture s "textures/ex/cretebase_01_s.png"\r
-texture z "textures/ex/cretebase_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/cretebase_02_d.png"\r
-texture n "textures/ex/cretebase_01_local.png"\r
+texture c "textures/ex/cretebase_02_c.png"\r
+texture n "textures/ex/cretebase_01_n.png"\r
 texture s "textures/ex/cretebase_01_s.png"\r
-texture z "textures/ex/cretebase_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/cretebase_03_dark_d.png"\r
-texture n "textures/ex/cretebase_01_local.png"\r
+texture c "textures/ex/cretebase_03_dark_c.png"\r
+texture n "textures/ex/cretebase_01_n.png"\r
 texture s "textures/ex/cretebase_01_s.png"\r
-texture z "textures/ex/cretebase_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/cretefloor_01_d.png"\r
-texture n "textures/ex/cretefloor_01_local.png"\r
+texture c "textures/ex/cretefloor_01_c.png"\r
+texture n "textures/ex/cretefloor_01_n.png"\r
 texture s "textures/ex/cretefloor_01_s.png"\r
-texture z "textures/ex/cretefloor_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/cretefloor_01b_d.png"\r
-texture n "textures/ex/cretefloor_01b_local.png"\r
+texture c "textures/ex/cretefloor_01b_c.png"\r
+texture n "textures/ex/cretefloor_01b_n.png"\r
 texture s "textures/ex/cretefloor_01b_s.png"\r
-texture z "textures/ex/cretefloor_01b_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/cretewall_01_d.png"\r
-texture n "textures/ex/cretewall_01_local.png"\r
+texture c "textures/ex/cretewall_01_c.png"\r
+texture n "textures/ex/cretewall_01_n.png"\r
 texture s "textures/ex/cretewall_01_s.png"\r
-texture z "textures/ex/cretewall_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/cretewall_02_d.png"\r
-texture n "textures/ex/cretewall_02_local.png"\r
+texture c "textures/ex/cretewall_02_c.png"\r
+texture n "textures/ex/cretewall_02_n.png"\r
 texture s "textures/ex/cretewall_02_s.png"\r
-texture z "textures/ex/cretewall_02_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/cretewall_03_d.png"\r
-texture n "textures/ex/cretewall_03_local.png"\r
+texture c "textures/ex/cretewall_03_c.png"\r
+texture n "textures/ex/cretewall_03_n.png"\r
 texture s "textures/ex/cretewall_03_s.png"\r
-texture z "textures/ex/cretewall_03_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/cretewall_03b_d.png"\r
-texture n "textures/ex/cretewall_03b_local.png"\r
+texture c "textures/ex/cretewall_03b_c.png"\r
+texture n "textures/ex/cretewall_03b_n.png"\r
 texture s "textures/ex/cretewall_03b_s.png"\r
-texture z "textures/ex/cretewall_03b_h.png"\r
 texscale 0.5\r
 \r
-setshaderparam specscale 0.6 0.6 0.6\r
-\r
-texture 0 "textures/ex/deswall_01_d.png"\r
-texture n "textures/ex/deswall_01_local.png"\r
+texture c "textures/ex/deswall_01_c.png"\r
+texture n "textures/ex/deswall_01_n.png"\r
 texture s "textures/ex/deswall_01_s.png"\r
-texture z "textures/ex/deswall_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/floor_grate_03_128_d.png"\r
-texture n "textures/ex/floor_grate_03_128_local.png"\r
+texture c "textures/ex/floor_grate_03_128_c.png"\r
+texture n "textures/ex/floor_grate_03_128_n.png"\r
 texture s "textures/ex/floor_grate_03_128_s.png"\r
-texture z "textures/ex/floor_grate_03_128_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/floor_grate_03_d.png"\r
-texture n "textures/ex/floor_grate_03_local.png"\r
+texture c "textures/ex/floor_grate_03_c.png"\r
+texture n "textures/ex/floor_grate_03_n.png"\r
 texture s "textures/ex/floor_grate_03_s.png"\r
-texture z "textures/ex/floor_grate_03_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/floor_grate03_d.png"\r
-texture n "textures/ex/floor_grate03_local.png"\r
+texture c "textures/ex/floor_grate03_c.png"\r
+texture n "textures/ex/floor_grate03_n.png"\r
 texture s "textures/ex/floor_grate03_s.png"\r
-texture z "textures/ex/floor_grate03_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/floor_mtl_grate_01_d.png"\r
-texture n "textures/ex/floor_mtl_grate_01_local.png"\r
+texture c "textures/ex/floor_mtl_grate_01_c.png"\r
+texture n "textures/ex/floor_mtl_grate_01_n.png"\r
 texture s "textures/ex/floor_mtl_grate_01_s.png"\r
-texture z "textures/ex/floor_mtl_grate_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/floor_mtl_wrn_01_d.png"\r
-texture n "textures/ex/floor_mtl_wrn_01_local.png"\r
+texture c "textures/ex/floor_mtl_wrn_01_c.png"\r
+texture n "textures/ex/floor_mtl_wrn_01_n.png"\r
 texture s "textures/ex/floor_mtl_wrn_01_s.png"\r
-texture z "textures/ex/floor_mtl_wrn_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/floor_simple_05_d.png"\r
-texture n "textures/ex/floor_simple_05_local.png"\r
+texture c "textures/ex/floor_simple_05_c.png"\r
+texture n "textures/ex/floor_simple_05_n.png"\r
 texture s "textures/ex/floor_simple_05_s.png"\r
-texture z "textures/ex/floor_simple_05_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/floor_simplines_d.png"\r
-texture n "textures/ex/floor_simplines_local.png"\r
+texture c "textures/ex/floor_simplines_c.png"\r
+texture n "textures/ex/floor_simplines_n.png"\r
 texture s "textures/ex/floor_simplines_s.png"\r
-texture z "textures/ex/floor_simplines_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/floor_tile_03_d.png"\r
-texture n "textures/ex/floor_tile_03_local.png"\r
+texture c "textures/ex/floor_tile_03_c.png"\r
+texture n "textures/ex/floor_tile_03_n.png"\r
 texture s "textures/ex/floor_tile_03_s.png"\r
-texture z "textures/ex/floor_tile_03_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/floor_tread_01_d.png"\r
-texture n "textures/ex/floor_tread_01_local.png"\r
+texture c "textures/ex/floor_tread_01_c.png"\r
+texture n "textures/ex/floor_tread_01_n.png"\r
 texture s "textures/ex/floor_tread_01_s.png"\r
-texture z "textures/ex/floor_tread_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/floorpanel_01_d.png"\r
-texture n "textures/ex/floorpanel_01_local.png"\r
+texture c "textures/ex/floorpanel_01_c.png"\r
+texture n "textures/ex/floorpanel_01_n.png"\r
 texture s "textures/ex/floorpanel_01_s.png"\r
-texture z "textures/ex/floorpanel_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metalplate_01_d.png"\r
-texture n "textures/ex/metalplate_01_local.png"\r
+texture c "textures/ex/metalplate_01_c.png"\r
+texture n "textures/ex/metalplate_01_n.png"\r
 texture s "textures/ex/metalplate_01_s.png"\r
-texture z "textures/ex/metalplate_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_supp_01_d.png"\r
-texture n "textures/ex/metal_supp_01_local.png"\r
+texture c "textures/ex/metal_supp_01_c.png"\r
+texture n "textures/ex/metal_supp_01_n.png"\r
 texture s "textures/ex/metal_supp_01_s.png"\r
-texture z "textures/ex/metal_supp_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_wall_02_d.png"\r
-texture n "textures/ex/metal_wall_02_local.png"\r
+texture c "textures/ex/metal_wall_02_c.png"\r
+texture n "textures/ex/metal_wall_02_n.png"\r
 texture s "textures/ex/metal_wall_02_s.png"\r
-texture z "textures/ex/metal_wall_02_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/mtl_bigplate_04_d.png"\r
-texture n "textures/ex/mtl_bigplate_04_local.png"\r
+texture c "textures/ex/mtl_bigplate_04_c.png"\r
+texture n "textures/ex/mtl_bigplate_04_n.png"\r
 texture s "textures/ex/mtl_bigplate_04_s.png"\r
-texture z "textures/ex/mtl_bigplate_04_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/mtl_bigplate_04b_d.png"\r
-texture n "textures/ex/mtl_bigplate_04b_local.png"\r
+texture c "textures/ex/mtl_bigplate_04b_c.png"\r
+texture n "textures/ex/mtl_bigplate_04b_n.png"\r
 texture s "textures/ex/mtl_bigplate_04b_s.png"\r
-texture z "textures/ex/mtl_bigplate_04b_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/mtl_panel_02_d.png"\r
-texture n "textures/ex/mtl_panel_02_local.png"\r
+texture c "textures/ex/mtl_panel_02_c.png"\r
+texture n "textures/ex/mtl_panel_02_n.png"\r
 texture s "textures/ex/mtl_panel_02_s.png"\r
-texture z "textures/ex/mtl_panel_02_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/mtl_panel_03_d.png"\r
-texture n "textures/ex/mtl_panel_03_local.png"\r
+texture c "textures/ex/mtl_panel_03_c.png"\r
+texture n "textures/ex/mtl_panel_03_n.png"\r
 texture s "textures/ex/mtl_panel_03_s.png"\r
-texture z "textures/ex/mtl_panel_03_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/mtl_panel_04_d.png"\r
-texture n "textures/ex/mtl_panel_04_local.png"\r
+texture c "textures/ex/mtl_panel_04_c.png"\r
+texture n "textures/ex/mtl_panel_04_n.png"\r
 texture s "textures/ex/mtl_panel_04_s.png"\r
-texture z "textures/ex/mtl_panel_04_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/q2_01_d.png"\r
-texture n "textures/ex/q2_01_local.png"\r
+texture c "textures/ex/q2_01_c.png"\r
+texture n "textures/ex/q2_01_n.png"\r
 texture s "textures/ex/q2_01_s.png"\r
-texture z "textures/ex/q2_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/q2_01b_d.png"\r
-texture n "textures/ex/q2_01b_local.png"\r
+texture c "textures/ex/q2_01b_c.png"\r
+texture n "textures/ex/q2_01b_n.png"\r
 texture s "textures/ex/q2_01b_s.png"\r
-texture z "textures/ex/q2_01b_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/q2_01c_d.png"\r
-texture n "textures/ex/q2_01c_local.png"\r
+texture c "textures/ex/q2_01c_c.png"\r
+texture n "textures/ex/q2_01c_n.png"\r
 texture s "textures/ex/q2_01c_s.png"\r
-texture z "textures/ex/q2_01c_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/q2_01d_d.png"\r
-texture n "textures/ex/q2_01d_local.png"\r
+texture c "textures/ex/q2_01d_c.png"\r
+texture n "textures/ex/q2_01d_n.png"\r
 texture s "textures/ex/q2_01d_s.png"\r
-texture z "textures/ex/q2_01d_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/q2_01e_d.png"\r
-texture n "textures/ex/q2_01e_local.png"\r
+texture c "textures/ex/q2_01e_c.png"\r
+texture n "textures/ex/q2_01e_n.png"\r
 texture s "textures/ex/q2_01e_s.png"\r
-texture z "textures/ex/q2_01e_h.png"\r
 texscale 0.5\r
 \r
-setshaderparam parallaxscale 0.02 -0.01\r
-\r
-texture 0 "textures/ex/rndfloor_01_d.png"\r
-texture n "textures/ex/rndfloor_01_local.png"\r
+texture c "textures/ex/rndfloor_01_c.png"\r
+texture n "textures/ex/rndfloor_01_n.png"\r
 texture s "textures/ex/rndfloor_01_s.png"\r
-texture z "textures/ex/rndfloor_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/rndfloor_02_d.png"\r
-texture n "textures/ex/rndfloor_02_local.png"\r
+texture c "textures/ex/rndfloor_02_c.png"\r
+texture n "textures/ex/rndfloor_02_n.png"\r
 texture s "textures/ex/rndfloor_02_s.png"\r
-texture z "textures/ex/rndfloor_02_h.png"\r
 texscale 0.5\r
 \r
-setshaderparam parallaxscale 0.04 -0.02\r
-\r
-texture 0 "textures/ex/rplates_01_d.png"\r
-texture n "textures/ex/rplates_01_local.png"\r
+texture c "textures/ex/rplates_01_c.png"\r
+texture n "textures/ex/rplates_01_n.png"\r
 texture s "textures/ex/rplates_01_s.png"\r
-texture z "textures/ex/rplates_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/steptop_01_d.png"\r
-texture n "textures/ex/steptop_01_local.png"\r
+texture c "textures/ex/steptop_01_c.png"\r
+texture n "textures/ex/steptop_01_n.png"\r
 texture s "textures/ex/steptop_01_s.png"\r
-texture z "textures/ex/steptop_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/trim_01_d.png"\r
-texture n "textures/ex/trim_01_local.png"\r
+texture c "textures/ex/trim_01_c.png"\r
+texture n "textures/ex/trim_01_n.png"\r
 texture s "textures/ex/trim_01_s.png"\r
-texture z "textures/ex/trim_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/trim_baseboard_02_d.png"\r
-texture n "textures/ex/trim_baseboard_02_local.png"\r
+texture c "textures/ex/trim_baseboard_02_c.png"\r
+texture n "textures/ex/trim_baseboard_02_n.png"\r
 texture s "textures/ex/trim_baseboard_02_s.png"\r
-texture z "textures/ex/trim_baseboard_02_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/trim_baseboard_03_d.png"\r
-texture n "textures/ex/trim_baseboard_03_local.png"\r
+texture c "textures/ex/trim_baseboard_03_c.png"\r
+texture n "textures/ex/trim_baseboard_03_n.png"\r
 texture s "textures/ex/trim_baseboard_03_s.png"\r
-texture z "textures/ex/trim_baseboard_03_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/trim_baseboard_d.png"\r
-texture n "textures/ex/trim_baseboard_local.png"\r
+texture c "textures/ex/trim_baseboard_c.png"\r
+texture n "textures/ex/trim_baseboard_n.png"\r
 texture s "textures/ex/trim_baseboard_s.png"\r
-texture z "textures/ex/trim_baseboard_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/trim_psimple_04_d.png"\r
-texture n "textures/ex/trim_psimple_04_local.png"\r
+texture c "textures/ex/trim_psimple_04_c.png"\r
+texture n "textures/ex/trim_psimple_04_n.png"\r
 texture s "textures/ex/trim_psimple_04_s.png"\r
-texture z "textures/ex/trim_psimple_04_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/trim_psimple_05_d.png"\r
-texture n "textures/ex/trim_psimple_05_local.png"\r
+texture c "textures/ex/trim_psimple_05_c.png"\r
+texture n "textures/ex/trim_psimple_05_n.png"\r
 texture s "textures/ex/trim_psimple_05_s.png"\r
-texture z "textures/ex/trim_psimple_05_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/trim_simple_01_d.png"\r
-texture n "textures/ex/trim_simple_01_local.png"\r
+texture c "textures/ex/trim_simple_01_c.png"\r
+texture n "textures/ex/trim_simple_01_n.png"\r
 texture s "textures/ex/trim_simple_01_s.png"\r
-texture z "textures/ex/trim_simple_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/trim_simple03_d.png"\r
-texture n "textures/ex/trim_simple03_local.png"\r
+texture c "textures/ex/trim_simple03_c.png"\r
+texture n "textures/ex/trim_simple03_n.png"\r
 texture s "textures/ex/trim_simple03_s.png"\r
-texture z "textures/ex/trim_simple03_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/trim_support_03_d.png"\r
-texture n "textures/ex/trim_support_03_local.png"\r
+texture c "textures/ex/trim_support_03_c.png"\r
+texture n "textures/ex/trim_support_03_n.png"\r
 texture s "textures/ex/trim_support_03_s.png"\r
-texture z "textures/ex/trim_support_03_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/trim_vert_01_d.png"\r
-texture n "textures/ex/trim_vert_01_local.png"\r
+texture c "textures/ex/trim_vert_01_c.png"\r
+texture n "textures/ex/trim_vert_01_n.png"\r
 texture s "textures/ex/trim_vert_01_s.png"\r
-texture z "textures/ex/trim_vert_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/wall_01_d.png"\r
-texture n "textures/ex/wall_01_local.png"\r
+texture c "textures/ex/wall_01_c.png"\r
+texture n "textures/ex/wall_01_n.png"\r
 texture s "textures/ex/wall_01_s.png"\r
-texture z "textures/ex/wall_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/wall_01b_d.png"\r
-texture n "textures/ex/wall_01_local.png"\r
+texture c "textures/ex/wall_01b_c.png"\r
+texture n "textures/ex/wall_01_n.png"\r
 texture s "textures/ex/wall_01_s.png"\r
-texture z "textures/ex/wall_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/wall_b01_d.png"\r
-texture n "textures/ex/wall_b01_local.png"\r
+texture c "textures/ex/wall_b01_c.png"\r
+texture n "textures/ex/wall_b01_n.png"\r
 texture s "textures/ex/wall_b01_s.png"\r
-texture z "textures/ex/wall_b01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/wall_bigrib_02_d.png"\r
-texture n "textures/ex/wall_bigrib_02_local.png"\r
+texture c "textures/ex/wall_bigrib_02_c.png"\r
+texture n "textures/ex/wall_bigrib_02_n.png"\r
 texture s "textures/ex/wall_bigrib_02_s.png"\r
-texture z "textures/ex/wall_bigrib_02_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/wall_bplate_06_d.png"\r
-texture n "textures/ex/wall_bplate_06_local.png"\r
+texture c "textures/ex/wall_bplate_06_c.png"\r
+texture n "textures/ex/wall_bplate_06_n.png"\r
 texture s "textures/ex/wall_bplate_06_s.png"\r
-texture z "textures/ex/wall_bplate_06_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/wall_panel_05_d.png"\r
-texture n "textures/ex/wall_panel_05_local.png"\r
+texture c "textures/ex/wall_panel_05_c.png"\r
+texture n "textures/ex/wall_panel_05_n.png"\r
 texture s "textures/ex/wall_panel_05_s.png"\r
-texture z "textures/ex/wall_panel_05_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/wall_panels_08_d.png"\r
-texture n "textures/ex/wall_panels_08_local.png"\r
+texture c "textures/ex/wall_panels_08_c.png"\r
+texture n "textures/ex/wall_panels_08_n.png"\r
 texture s "textures/ex/wall_panels_08_s.png"\r
-texture z "textures/ex/wall_panels_08_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/wall_panels_08b_d.png"\r
-texture n "textures/ex/wall_panels_08b_local.png"\r
+texture c "textures/ex/wall_panels_08b_c.png"\r
+texture n "textures/ex/wall_panels_08b_n.png"\r
 texture s "textures/ex/wall_panels_08b_s.png"\r
-texture z "textures/ex/wall_panels_08b_h.png"\r
 texscale 0.5\r
 \r
-setshader bumpspecmapworld\r
-setshaderparam specscale 0.6 0.6 0.6\r
-\r
-texture 0 "textures/ex/wall_pipe_d.png"\r
-texture n "textures/ex/wall_pipe_local.png"\r
+texture c "textures/ex/wall_pipe_c.png"\r
+texture n "textures/ex/wall_pipe_n.png"\r
 texture s "textures/ex/wall_pipe_s.png"\r
 texscale 0.5\r
 \r
-setshader bumpspecmapparallaxworld\r
-setshaderparam specscale 0.6 0.6 0.6\r
-setshaderparam parallaxscale 0.04 -0.02\r
-\r
-texture 0 "textures/ex/wall_u207_d.png"\r
-texture n "textures/ex/wall_u207_local.png"\r
+texture c "textures/ex/wall_u207_c.png"\r
+texture n "textures/ex/wall_u207_n.png"\r
 texture s "textures/ex/wall_u207_s.png"\r
-texture z "textures/ex/wall_u207_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_plate_01_d.png"\r
-texture n "textures/ex/metal_plate_01_local.png"\r
+texture c "textures/ex/metal_plate_01_c.png"\r
+texture n "textures/ex/metal_plate_01_n.png"\r
 texture s "textures/ex/metal_plate_01_s.png"\r
-texture z "textures/ex/metal_plate_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_plate_01b_d.png"\r
-texture n "textures/ex/metal_plate_01b_local.png"\r
+texture c "textures/ex/metal_plate_01b_c.png"\r
+texture n "textures/ex/metal_plate_01b_n.png"\r
 texture s "textures/ex/metal_plate_01b_s.png"\r
-texture z "textures/ex/metal_plate_01b_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_plate_01c_d.png"\r
-texture n "textures/ex/metal_plate_01c_local.png"\r
+texture c "textures/ex/metal_plate_01c_c.png"\r
+texture n "textures/ex/metal_plate_01c_n.png"\r
 texture s "textures/ex/metal_plate_01c_s.png"\r
-texture z "textures/ex/metal_plate_01c_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_base_01_d.png"\r
-texture n "textures/ex/metal_base_01_local.png"\r
+texture c "textures/ex/metal_base_01_c.png"\r
+texture n "textures/ex/metal_base_01_n.png"\r
 texture s "textures/ex/metal_base_01_s.png"\r
-texture z "textures/ex/metal_base_01_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_base_02_d.png"\r
-texture n "textures/ex/metal_base_02_local.png"\r
+texture c "textures/ex/metal_base_02_c.png"\r
+texture n "textures/ex/metal_base_02_n.png"\r
 texture s "textures/ex/metal_base_02_s.png"\r
-texture z "textures/ex/metal_base_02_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_base_03_d.png"\r
-texture n "textures/ex/metal_base_03_local.png"\r
+texture c "textures/ex/metal_base_03_c.png"\r
+texture n "textures/ex/metal_base_03_n.png"\r
 texture s "textures/ex/metal_base_03_s.png"\r
-texture z "textures/ex/metal_base_03_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_base_04_d.png"\r
-texture n "textures/ex/metal_base_03_local.png"\r
+texture c "textures/ex/metal_base_04_c.png"\r
+texture n "textures/ex/metal_base_03_n.png"\r
 texture s "textures/ex/metal_base_03_s.png"\r
-texture z "textures/ex/metal_base_03_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_base_05_rust_d.png"\r
-texture n "textures/ex/metal_base_05_rust_local.png"\r
+texture c "textures/ex/metal_base_05_rust_c.png"\r
+texture n "textures/ex/metal_base_05_rust_n.png"\r
 texture s "textures/ex/metal_base_05_rust_s.png"\r
-texture z "textures/ex/metal_base_05_rust_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_base_06_rust_d.png"\r
-texture n "textures/ex/metal_base_05_rust_local.png"\r
+texture c "textures/ex/metal_base_06_rust_c.png"\r
+texture n "textures/ex/metal_base_05_rust_n.png"\r
 texture s "textures/ex/metal_base_05_rust_s.png"\r
-texture z "textures/ex/metal_base_05_rust_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_base_07_rust_d.png"\r
-texture n "textures/ex/metal_base_05_rust_local.png"\r
+texture c "textures/ex/metal_base_07_rust_c.png"\r
+texture n "textures/ex/metal_base_05_rust_n.png"\r
 texture s "textures/ex/metal_base_05_rust_s.png"\r
-texture z "textures/ex/metal_base_05_rust_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_floor_02_d.png"\r
-texture n "textures/ex/metal_floor_02_local.png"\r
+texture c "textures/ex/metal_floor_02_c.png"\r
+texture n "textures/ex/metal_floor_02_n.png"\r
 texture s "textures/ex/metal_floor_02_s.png"\r
-texture z "textures/ex/metal_floor_02_h.png"\r
 texscale 0.5\r
 \r
-texture 0 "textures/ex/metal_rib_01_d.png"\r
-texture n "textures/ex/metal_rib_01_local.png"\r
+texture c "textures/ex/metal_rib_01_c.png"\r
+texture n "textures/ex/metal_rib_01_n.png"\r
 texture s "textures/ex/metal_rib_01_s.png"\r
-texture z "textures/ex/metal_rib_01_h.png"\r
 texscale 0.5\r
 
         pophudmatrix();
     }
 
-    VARP(speedometer, 0, 1, 1);
-    FVARP(speedometerx, 0.0, 0.5, 1.0);
-    FVARP(speedometery, 0.0, 0.6, 1.0);
-    FVARP(speedometerscale, 0.1, 0.5, 2.0);
-    VARP(speedometercolor, 0, 1, 1);
-    FVARP(speedometeralpha, 0.0, 0.5, 1.0);
-
     //~void drawspeedometer(fpsent *d, int w, int h) {
         //~int speedforreal = (int) (sqrtf(d->vel.squaredlen()) + 1.0f);
         //~speedforreal = (speedforreal == 1) ? 0 : speedforreal;
         //~pophudmatrix();
     //~}
 
+    void hudquad(float x, float y, float w, float h, float r = 1, float g = 1, float b = 1, float tx = 0, float ty = 0, float tw = 1, float th = 1)
+    {
+        gle::defvertex(2);
+        gle::deftexcoord0();
+        gle::colorf(r, g, b);
+        gle::begin(GL_TRIANGLE_STRIP);
+        //~gle::begin(GL_QUADS);
+        gle::attribf(x,   y);   gle::attribf(tx,      ty);
+        gle::attribf(x+w, y);   gle::attribf(tx + tw, ty);
+        gle::attribf(x,   y+h); gle::attribf(tx,      ty + th);
+        gle::attribf(x+w, y+h); gle::attribf(tx + tw, ty + th);
+        gle::end();
+    }
+
     VARP(healthcolors, 0, 1, 1);
 
-    void drawhudicons(fpsent *d)
+    VARP(hudhealth, 0, 1, 1);
+    FVARP(hudhealthx, 0, 0, 1);
+    FVARP(hudhealthy, 0, 1, 1);
+    FVARP(hudhealthscale, 0.1, 1.0, 1.0);
+
+    void drawhudhealth(fpsent *d, int w, int h)
     {
         pushhudmatrix();
-        hudmatrix.scale(2, 2, 1);
+        hudmatrix.scale(hudhealthscale, hudhealthscale, 1);
         flushhudmatrix();
-        defformatstring(health, "%d", d->state==CS_DEAD ? 0 : d->health);
-        bvec healthcolor = bvec::hexcolor(healthcolors && !m_insta ? (d->state==CS_DEAD ? 0x808080 : (d->health<=25 ? 0xFF0000 : (d->health<=50 ? 0xFF8000 : (d->health<=100 ? 0xFFFFFF : 0x40C0FF)))) : 0xFFFFFF);
-        draw_text(health, (HICON_X + HICON_SIZE + HICON_SPACE)/2, HICON_TEXTY/2, healthcolor.r, healthcolor.g, healthcolor.b);
-        if(d->state!=CS_DEAD)
-        {
-            if(d->armour) draw_textf("%d", (HICON_X + HICON_STEP + HICON_SIZE + HICON_SPACE)/2, HICON_TEXTY/2, d->armour);
-            draw_textf("%d", (HICON_X + 2*HICON_STEP + HICON_SIZE + HICON_SPACE)/2, HICON_TEXTY/2, d->ammo[d->gunselect]);
+
+        bvec healthcolor = bvec::hexcolor(healthcolors && !m_insta ?
+            (d->state==CS_DEAD ? 0x808080 :
+            (d->health<=25     ? 0xc02020 :
+            (d->health<=50     ? 0xc08020 :
+            (d->health<=75     ? 0xc0c040 :
+            (d->health<=100    ? 0xFFFFFF : 0x4080c0))))) : 0xFFFFFF);
+        const float proportion = (w/4.0f)/600.0f;
+        const float healthbarw = 600*proportion;
+        const float healthbarh = 113*proportion;
+        vec2 offset = vec2(hudhealthx, hudhealthy).mul(vec2(w-healthbarw, h-healthbarh).div(hudhealthscale));
+        settexture("packages/hud/health_bar_base.png");
+        float hp = (float)d->health/d->maxhealth;
+        hudquad(offset.x, offset.y, hp*healthbarw, healthbarh, healthcolor.r, healthcolor.g, healthcolor.b, 0, 0, hp, 1);
+        settexture("packages/hud/health_bar_over.png");
+        hudquad(offset.x, offset.y, healthbarw, healthbarh);
+        if (d->quadmillis) {
+            settexture("packages/hud/health_bar_quad.png");
+            hudquad(offset.x, offset.y, healthbarw, healthbarh);
         }
+        defformatstring(health, "%d", d->state==CS_DEAD ? 0 : d->health);
+        float tw=0, th=0; text_boundsf(health, tw, th);
+        draw_text(health, offset.x+(125*proportion-tw)/2, offset.y+(healthbarh-th)/2, healthcolor.r, healthcolor.g, healthcolor.b);
+
         pophudmatrix();
+    }
 
-        if(d->state != CS_DEAD && d->maxhealth > 100)
-        {
-            float scale = 0.66f;
-            pushhudmatrix();
-            hudmatrix.scale(scale, scale, 1);
-            flushhudmatrix();
+    VARP(hudmaxhealth, 0, 1, 1);
+    FVARP(hudmaxhealthx, 0, 0.207, 1);
+    FVARP(hudmaxhealthy, 0, 0.97, 1);
+    FVARP(hudmaxhealthscale, 0.1, 1.0, 1.0);
 
-            float width, height;
-            text_boundsf(health, width, height);
-            draw_textf("/%d", (HICON_X + HICON_SIZE + HICON_SPACE + width*2)/scale, (HICON_TEXTY + height)/scale, d->maxhealth);
+    void drawhudmaxhealth(fpsent *d, int w, int h)
+    {
+        pushhudmatrix();
+        hudmatrix.scale(hudmaxhealthscale, hudmaxhealthscale, 1);
+        flushhudmatrix();
 
-            pophudmatrix();
+        const float proportion = (w/15.0f)/160.0f;
+        const float healthboostw = 160*proportion;
+        const float healthboosth = 78*proportion;
+        float hb = (float)d->maxhealth/100.0f-1.0f;
+        vec2 offset = vec2(hudmaxhealthx, hudmaxhealthy).mul(vec2(w-healthboostw, h-healthboosth).div(hudhealthscale));
+        settexture("packages/hud/health_boost_base.png");
+        hudquad(offset.x, offset.y, hb*healthboostw, healthboosth, 0.3f, 0.6f, 0.9f, 0, 0, hb, 1);
+        settexture("packages/hud/health_boost_over.png");
+        hudquad(offset.x, offset.y, healthboostw, healthboosth);
+        if (d->quadmillis) {
+            settexture("packages/hud/health_boost_quad.png");
+            hudquad(offset.x, offset.y, healthboostw, healthboosth);
         }
 
-        drawicon(HICON_HEALTH, HICON_X, HICON_Y);
-        if(d->state!=CS_DEAD)
-        {
-            if(d->armour) drawicon(HICON_BLUE_ARMOUR+d->armourtype, HICON_X + HICON_STEP, HICON_Y);
+        pophudmatrix();
+    }
+
+    VARP(armourcolors, 0, 1, 1);
+
+    VARP(hudarmour, 0, 1, 1);
+    FVARP(hudarmourx, 0, 1, 1);
+    FVARP(hudarmoury, 0, 1, 1);
+    FVARP(hudarmourscale, 0.1, 1.0, 1.0);
+
+    void drawhudarmour(fpsent *d, int w, int h)
+    {
+        pushhudmatrix();
+        hudmatrix.scale(hudarmourscale, hudarmourscale, 1);
+        flushhudmatrix();
+
+        bvec armourcolor = bvec::hexcolor(d->armourtype == A_BLUE ? 0x83ade5 : (d->armourtype == A_GREEN ? 0x77f29e : (d->armourtype == A_YELLOW ? 0xf5f19b : 0xffffff)));
+        const float proportion = (w/4.0f)/600.0f;
+        const float armourbarw = 600*proportion;
+        const float armourbarh = 113*proportion;
+        vec2 offset = vec2(hudarmourx, hudarmoury).mul(vec2(w-armourbarw, h-armourbarh).div(hudarmourscale));
+        settexture("packages/hud/armour_bar_base.png");
+        float ap = (float)d->armour/d->maxarmour;
+        hudquad(offset.x, offset.y, ap*armourbarw, armourbarh, armourcolor.r, armourcolor.g, armourcolor.b, 0, 0, ap, 1);
+        settexture("packages/hud/armour_bar_over.png");
+        hudquad(offset.x, offset.y, armourbarw, armourbarh);
+        if (d->quadmillis) {
+            settexture("packages/hud/armour_bar_quad.png");
+            hudquad(offset.x, offset.y, armourbarw, armourbarh);
+        }
+        defformatstring(armour, "%d", d->state==CS_DEAD ? 0 : d->armour);
+        float tw=0, th=0; text_boundsf(armour, tw, th);
+        draw_text(armour, offset.x+(2*(600-63)*proportion-tw)/2, offset.y+(armourbarh-th)/2, armourcolor.r, armourcolor.g, armourcolor.b);
+
+        pophudmatrix();
+    }
+
+    void drawhudicons(fpsent *d, int w, int h)
+    {
+        //~defformatstring(health, "%d", d->state==CS_DEAD ? 0 : d->health);
+        //~bvec healthcolor = bvec::hexcolor(healthcolors && !m_insta ? (d->state==CS_DEAD ? 0x808080 : (d->health<=25 ? 0xFF0000 : (d->health<=50 ? 0xFF8000 : (d->health<=100 ? 0xFFFFFF : 0x40C0FF)))) : 0xFFFFFF);
+        //~draw_text(health, (HICON_X + HICON_SIZE + HICON_SPACE)/2, HICON_TEXTY/2, healthcolor.r, healthcolor.g, healthcolor.b);
+        //~if(d->state!=CS_DEAD)
+        //~{
+            //~if(d->armour) draw_textf("%d", (HICON_X + HICON_STEP + HICON_SIZE + HICON_SPACE)/2, HICON_TEXTY/2, d->armour);
+            //~draw_textf("%d", (HICON_X + 2*HICON_STEP + HICON_SIZE + HICON_SPACE)/2, HICON_TEXTY/2, d->ammo[d->gunselect]);
+        //~}
+
+        //~if(d->state != CS_DEAD && d->maxhealth > 100)
+        //~{
+            //~float scale = 0.66f;
+            //~pushhudmatrix();
+            //~hudmatrix.scale(scale, scale, 1);
+            //~flushhudmatrix();
+
+            //~float width, height;
+            //~text_boundsf(health, width, height);
+            //~draw_textf("/%d", (HICON_X + HICON_SIZE + HICON_SPACE + width*2)/scale, (HICON_TEXTY + height)/scale, d->maxhealth);
+
+            //~pophudmatrix();
+        //~}
+
+        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+        glEnable(GL_BLEND);
+
+        if(hudhealth) drawhudhealth(d, w, h);
+        if(hudmaxhealth) drawhudmaxhealth(d, w, h);
+        if(hudarmour) drawhudarmour(d, w, h);
+
+        if(d->state!=CS_DEAD) {
             drawicon(HICON_FIST+d->gunselect, HICON_X + 2*HICON_STEP, HICON_Y);
-            if(d->quadmillis) drawicon(HICON_QUAD, HICON_X + 3*HICON_STEP, HICON_Y);
             if(ammohud) drawammohud(d);
         }
     }
         pophudmatrix();
     }
 
-    void newhud(int w, int h) //new SauerEnhanced HUD
+    VARP(speedometer, 0, 1, 1);
+    FVARP(speedometerx, 0.0, 0.5, 1.0);
+    FVARP(speedometery, 0.0, 0.6, 1.0);
+    FVARP(speedometerscale, 0.1, 0.5, 1.0);
+    VARP(speedometercolor, 0, 1, 1);
+    FVARP(speedometeralpha, 0.0, 0.5, 1.0);
+
+    void drawspeedometer(fpsent *d, int w, int h)
     {
-        if(player1->state==CS_DEAD || player1->state==CS_SPECTATOR) return;
+        int speedforreal = (int) (sqrtf(d->vel.squaredlen()) + 1.0f);
+        speedforreal = (speedforreal == 1) ? 0 : speedforreal;
+        vec colour = vec(255, 255, 255);
+        float realw = 0;
+        float realh = 0;
+        if (speedometercolor) {
+            if (speedforreal==0)                            colour = vec(60, 60, 60);
+            else if (speedforreal>0   && speedforreal<=60)  colour = vec(240, 30, 30);
+            else if (speedforreal>60  && speedforreal<=120) colour = vec(180, 90, 60);
+            else if (speedforreal>120 && speedforreal<=180) colour = vec(180, 180, 30);
+            else if (speedforreal>180 && speedforreal<=240) colour = vec(90, 180, 60);
+            else                                            colour = vec(30, 240, 30);
+        }
+
+        defformatstring(speedstring, "%d", speedforreal);
+        text_boundsf(speedstring, realw, realh);
+        vec2 offset = vec2(speedometerx, speedometery).mul(vec2(w, h).div(speedometerscale));
+        offset.x -= realw/2.0f;
+        offset.y -= realh/2.0f;
+
+        pushhudmatrix();
+        hudmatrix.scale(speedometerscale, speedometerscale, 1);
+        flushhudmatrix();
+
+        const int speedow = 220;
+        const int speedoh = 101;
+        settexture("packages/hud/speedometer.png");
+        hudquad(offset.x+realw/2.0f-speedow/2, offset.y+realh/2.0f-speedoh/2, speedow, speedoh);
+
+        draw_text(speedstring, int(offset.x), int(offset.y), colour.x, colour.y, colour.z, (int)(speedometeralpha*255.0f));
+
+        pophudmatrix();
+    }
+
+    //~void newhud(int w, int h) //new SauerEnhanced HUD
+    //~{
+        //~if(player1->state==CS_DEAD || player1->state==CS_SPECTATOR) return;
         //~glPushMatrix();
         //~glScalef(1/1.2f, 1/1.2f, 1);
-        pushhudmatrix();
+        //~pushhudmatrix();
         //~hudmatrix.scale(w/1800.0f, h/1650.0f, 1);
-        hudmatrix.scale(1.0f/1.2f, 1.0f/1.2f, 1);
-        flushhudmatrix();
-        if(!m_insta) draw_textf("%d", 80, h*1.2f-128, player1->state==CS_DEAD ? 0 : player1->health);
-        defformatstring(ammo, "%d", player1->ammo[player1->gunselect]);
-        int wb, hb;
-        text_bounds(ammo, wb, hb);
-        draw_textf("%d", w*1.2f-wb-80, h*1.2f-128, player1->ammo[player1->gunselect]);
+        //~hudmatrix.scale(1.0f/1.2f, 1.0f/1.2f, 1);
+        //~flushhudmatrix();
+        //~if(!m_insta) draw_textf("%d", 80, h*1.2f-128, player1->state==CS_DEAD ? 0 : player1->health);
+        //~defformatstring(ammo, "%d", player1->ammo[player1->gunselect]);
+        //~int wb, hb;
+        //~text_bounds(ammo, wb, hb);
+        //~draw_textf("%d", w*1.2f-wb-80, h*1.2f-128, player1->ammo[player1->gunselect]);
 
             //~hudmatrix.ortho(0, w, h, 0, -1, 1);
             //~resethudmatrix();
 
             //~hudshader->set();
-            gle::colorf(1, 1, 1);
+            //~gle::colorf(1, 1, 1);
 
-            gle::defvertex(2);
-            gle::deftexcoord0();
+            //~gle::defvertex(2);
+            //~gle::deftexcoord0();
 
-        if(player1->quadmillis)
-        {
+        //~if(player1->quadmillis)
+        //~{
             //~gle::begin(GL_QUADS);
             //~loopj(numdecals)
             //~{
                 //~gle::attribf(hx-hsz, hy+hsz); gle::attribf(side,   1);
             //~}
             //~gle::end();
-            settexture("packages/hud/hud_quaddamage_left.png");  //QuadDamage left glow
-            gle::begin(GL_QUADS);
-            gle::attribf(0,   h*1.2f-207);       gle::attribf(0.0f, 0.0f);
-            gle::attribf(539, h*1.2f-207);       gle::attribf(1.0f, 0.0f);
-            gle::attribf(539, h*1.2f);       gle::attribf(1.0f, 1.0f);
-            gle::attribf(0,   h*1.2f);       gle::attribf(0.0f, 1.0f);
-            gle::end();
-
-            settexture("packages/hud/hud_quaddamage_right.png"); //QuadDamage right glow
-            gle::begin(GL_QUADS);
-            gle::attribf(w*1.2f-135, h*1.2f-207);          gle::attribf(0.0f, 0.0f);
-            gle::attribf(w*1.2f,     h*1.2f-207);          gle::attribf(1.0f, 0.0f);
-            gle::attribf(w*1.2f,     h*1.2f);          gle::attribf(1.0f, 1.0f);
-            gle::attribf(w*1.2f-135, h*1.2f);          gle::attribf(0.0f, 1.0f);
-            gle::end();
-        }
+            //~settexture("packages/hud/hud_quaddamage_left.png");  //QuadDamage left glow
+            //~gle::begin(GL_QUADS);
+            //~gle::attribf(0,   h*1.2f-207);       gle::attribf(0.0f, 0.0f);
+            //~gle::attribf(539, h*1.2f-207);       gle::attribf(1.0f, 0.0f);
+            //~gle::attribf(539, h*1.2f);       gle::attribf(1.0f, 1.0f);
+            //~gle::attribf(0,   h*1.2f);       gle::attribf(0.0f, 1.0f);
+            //~gle::end();
 
-        if(player1->maxhealth > 100)
-        {
-            settexture("packages/hud/hud_megahealth.png");  //HealthBoost indicator
-            gle::begin(GL_QUADS);
-            gle::attribf(0,   h*1.2f-207);           gle::attribf(0.0f, 0.0f);
-            gle::attribf(539, h*1.2f-207);           gle::attribf(1.0f, 0.0f);
-            gle::attribf(539, h*1.2f);           gle::attribf(1.0f, 1.0f);
-            gle::attribf(0,   h*1.2f);           gle::attribf(0.0f, 1.0f);
-            gle::end();
-        }
+            //~settexture("packages/hud/hud_quaddamage_right.png"); //QuadDamage right glow
+            //~gle::begin(GL_QUADS);
+            //~gle::attribf(w*1.2f-135, h*1.2f-207);          gle::attribf(0.0f, 0.0f);
+            //~gle::attribf(w*1.2f,     h*1.2f-207);          gle::attribf(1.0f, 0.0f);
+            //~gle::attribf(w*1.2f,     h*1.2f);          gle::attribf(1.0f, 1.0f);
+            //~gle::attribf(w*1.2f-135, h*1.2f);          gle::attribf(0.0f, 1.0f);
+            //~gle::end();
+        //~}
 
-        int health = (player1->health*100)/player1->maxhealth,
-            armour = (player1->armour*100)/200,
-            hh = (health*101)/100,
-            ah = (armour*167)/100;
+        //~if(player1->maxhealth > 100)
+        //~{
+            //~settexture("packages/hud/hud_megahealth.png");  //HealthBoost indicator
+            //~gle::begin(GL_QUADS);
+            //~gle::attribf(0,   h*1.2f-207);           gle::attribf(0.0f, 0.0f);
+            //~gle::attribf(539, h*1.2f-207);           gle::attribf(1.0f, 0.0f);
+            //~gle::attribf(539, h*1.2f);           gle::attribf(1.0f, 1.0f);
+            //~gle::attribf(0,   h*1.2f);           gle::attribf(0.0f, 1.0f);
+            //~gle::end();
+        //~}
 
-        float hs = (health*1.0f)/100,
-              as = (armour*1.0f)/100;
+            //~gle::begin(GL_QUADS);
+            //~gle::attribf(w/2-speedow/2, h/2-speedoh/2); gle::attribf(0.0f, 1.0f);
+            //~gle::attribf(w/2,           h/2-speedoh/2); gle::attribf(1.0f, 1.0f);
+            //~gle::attribf(w/2,           h/2);           gle::attribf(1.0f, 1.0f);
+            //~gle::attribf(w/2-speedow/2, h/2);           gle::attribf(0.0f, 1.0f);
+            //~gle::end();
 
-        if(player1->health > 0 && !m_insta)
-        {
-            settexture("packages/hud/hud_health.png");  //Health bar
-            gle::begin(GL_QUADS);
-            gle::attribf(47, h*1.2f-hh-56);            gle::attribf(0.0f, 1.0f-hs);
-            gle::attribf(97, h*1.2f-hh-56);            gle::attribf(1.0f, 1.0f-hs);
-            gle::attribf(97, h*1.2f-57);            gle::attribf(1.0f, 1.0f);
-            gle::attribf(47, h*1.2f-57);            gle::attribf(0.0f, 1.0f);
-            gle::end();
-        }
+        //~int health = (player1->health*100)/player1->maxhealth,
+            //~armour = (player1->armour*100)/200,
+            //~hh = (health*101)/100;
 
-        if(player1->armour > 0)
-        {
-            settexture("packages/hud/hud_armour.png");  //Armour bar
-            gle::begin(GL_QUADS);
-            gle::attribf(130,    h*1.2f-62);gle::attribf(0.0f,    0.0f);
-            gle::attribf(130+ah, h*1.2f-62);gle::attribf(as,      0.0f);
-            gle::attribf(130+ah, h*1.2f-44);gle::attribf(as,      1.0f);
-            gle::attribf(130,    h*1.2f-44);gle::attribf(0.0f,    1.0f);
-            gle::end();
-        }
+        //~float hs = (health*1.0f)/100;
 
-        if(!m_insta)
-        {
-            settexture("packages/hud/hud_left.png"); //left HUD
-            gle::begin(GL_QUADS);
-            gle::attribf(0,   h*1.2f-207);gle::attribf(0.0f, 0.0f);
-            gle::attribf(539, h*1.2f-207);gle::attribf(1.0f, 0.0f);
-            gle::attribf(539, h*1.2f    );gle::attribf(1.0f, 1.0f);
-            gle::attribf(0,   h*1.2f    );gle::attribf(0.0f, 1.0f);
-            gle::end();
-        }
+        //~if(player1->health > 0 && !m_insta)
+        //~{
+            //~settexture("packages/hud/hud_health.png");  //Health bar
+            //~hudquad(4000, 600, 97, 56);
+            //~gle::begin(GL_QUADS);
+            //~gle::attribf(47, h*1.2f-hh-56);            gle::attribf(0.0f, 1.0f-hs);
+            //~gle::attribf(97, h*1.2f-hh-56);            gle::attribf(1.0f, 1.0f-hs);
+            //~gle::attribf(97, h*1.2f-57);            gle::attribf(1.0f, 1.0f);
+            //~gle::attribf(47, h*1.2f-57);            gle::attribf(0.0f, 1.0f);
+            //~gle::end();
+        //~}
 
-        settexture("packages/hud/hud_right.png"); //right HUD
-            gle::begin(GL_QUADS);
-        gle::attribf(w*1.2f-135, h*1.2f-207);gle::attribf(0.0f, 0.0f);
-        gle::attribf(w*1.2f,     h*1.2f-207);gle::attribf(1.0f, 0.0f);
-        gle::attribf(w*1.2f,     h*1.2f    );gle::attribf(1.0f, 1.0f);
-        gle::attribf(w*1.2f-135, h*1.2f    );gle::attribf(0.0f, 1.0f);
-            gle::end();
+        //~if(player1->armour > 0)
+        //~{
+            //~settexture("packages/hud/hud_armour.png");  //Armour bar
+            //~gle::begin(GL_QUADS);
+            //~gle::attribf(130,    h*1.2f-62);gle::attribf(0.0f,    0.0f);
+            //~gle::attribf(130+ah, h*1.2f-62);gle::attribf(as,      0.0f);
+            //~gle::attribf(130+ah, h*1.2f-44);gle::attribf(as,      1.0f);
+            //~gle::attribf(130,    h*1.2f-44);gle::attribf(0.0f,    1.0f);
+            //~gle::end();
+        //~}
 
-        int maxammo = 0;
+        //~if(!m_insta)
+        //~{
+            //~settexture("packages/hud/hud_left.png"); //left HUD
+            //~gle::begin(GL_QUADS);
+            //~gle::attribf(0,   h*1.2f-207);gle::attribf(0.0f, 0.0f);
+            //~gle::attribf(539, h*1.2f-207);gle::attribf(1.0f, 0.0f);
+            //~gle::attribf(539, h*1.2f    );gle::attribf(1.0f, 1.0f);
+            //~gle::attribf(0,   h*1.2f    );gle::attribf(0.0f, 1.0f);
+            //~gle::end();
+        //~}
 
-        switch(player1->gunselect)
-        {
-            case GUN_FIST:
-                maxammo = 1;
-                break;
+        //~settexture("packages/hud/hud_right.png"); //right HUD
+            //~gle::begin(GL_QUADS);
+        //~gle::attribf(w*1.2f-135, h*1.2f-207);gle::attribf(0.0f, 0.0f);
+        //~gle::attribf(w*1.2f,     h*1.2f-207);gle::attribf(1.0f, 0.0f);
+        //~gle::attribf(w*1.2f,     h*1.2f    );gle::attribf(1.0f, 1.0f);
+        //~gle::attribf(w*1.2f-135, h*1.2f    );gle::attribf(0.0f, 1.0f);
+            //~gle::end();
 
-            case GUN_RL:
-            case GUN_RIFLE:
-                maxammo = m_insta ? 100 : 15;
-                break;
+        //~int maxammo = 0;
 
-            case GUN_SG:
-            case GUN_GL:
-                maxammo = 30;
-                break;
+        //~switch(player1->gunselect)
+        //~{
+            //~case GUN_FIST:
+                //~maxammo = 1;
+                //~break;
 
-            case GUN_CG:
-                maxammo = 60;
-                break;
+            //~case GUN_RL:
+            //~case GUN_RIFLE:
+                //~maxammo = m_insta ? 100 : 15;
+                //~break;
 
-            case GUN_PISTOL:
-                maxammo = 120;
-                break;
-        }
+            //~case GUN_SG:
+            //~case GUN_GL:
+                //~maxammo = 30;
+                //~break;
 
-        int curammo = (player1->ammo[player1->gunselect]*100)/maxammo,
-            amh = (curammo*101)/100;
+            //~case GUN_CG:
+                //~maxammo = 60;
+                //~break;
 
-        float ams = (curammo*1.0f)/100;
+            //~case GUN_PISTOL:
+                //~maxammo = 120;
+                //~break;
+        //~}
 
-        if(player1->ammo[player1->gunselect] > 0)
-        {
-            settexture("packages/hud/hud_health.png");  //Ammo bar
-            gle::begin(GL_QUADS);
-            gle::attribf(w*1.2f-47, h*1.2f-amh-56);gle::attribf(0.0f, 1.0f-ams);
-            gle::attribf(w*1.2f-97, h*1.2f-amh-56);gle::attribf(1.0f, 1.0f-ams);
-            gle::attribf(w*1.2f-97, h*1.2f-57    );gle::attribf(1.0f, 1.0f);
-            gle::attribf(w*1.2f-47, h*1.2f-57    );gle::attribf(0.0f, 1.0f);
-            gle::end();
-        }
+        //~int curammo = (player1->ammo[player1->gunselect]*100)/maxammo,
+            //~amh = (curammo*101)/100;
+
+        //~float ams = (curammo*1.0f)/100;
+
+        //~if(player1->ammo[player1->gunselect] > 0)
+        //~{
+            //~settexture("packages/hud/hud_health.png");  //Ammo bar
+            //~gle::begin(GL_QUADS);
+            //~gle::attribf(w*1.2f-47, h*1.2f-amh-56);gle::attribf(0.0f, 1.0f-ams);
+            //~gle::attribf(w*1.2f-97, h*1.2f-amh-56);gle::attribf(1.0f, 1.0f-ams);
+            //~gle::attribf(w*1.2f-97, h*1.2f-57    );gle::attribf(1.0f, 1.0f);
+            //~gle::attribf(w*1.2f-47, h*1.2f-57    );gle::attribf(0.0f, 1.0f);
+            //~gle::end();
+        //~}
         //~glPopMatrix();
-        pophudmatrix();
-    }
+        //~pophudmatrix();
+    //~}
 
     void gameplayhud(int w, int h)
     {
-        newhud(w, h);
+        //~newhud(w, h);
 
         pushhudmatrix();
         hudmatrix.scale(h/1800.0f, h/1800.0f, 1);
         fpsent *d = hudplayer();
         if(d->state!=CS_EDITING)
         {
-            if(d->state!=CS_SPECTATOR) drawhudicons(d);
             if(cmode) cmode->drawhud(d, w, h);
         }
 
         pophudmatrix();
 
+        if(d->state!=CS_EDITING && d->state!=CS_SPECTATOR) drawhudicons(d, w, h);
+
         if(d->state!=CS_EDITING && d->state!=CS_SPECTATOR && d->state!=CS_DEAD)
         {
             if(ammobar) drawammobar(w, h, d);
+            if(speedometer) drawspeedometer(d, w, h);
         }
 
 
         {
             if(gameclock) drawgameclock(w, h);
             if(hudscore) drawhudscore(w, h);
-            //~if(speedometer) drawspeedometer(d, w, h);
-        }
-
-        /// Speedometer.
-
-        int speedforreal = (int) (sqrtf(d->vel.squaredlen()) + 1.0f);
-        speedforreal = (speedforreal == 1) ? 0 : speedforreal;
-        vec colour = vec(255, 255, 255);
-        float realw = 0;
-        float realh = 0;
-        if (speedometercolor) {
-            if (speedforreal==0)                            colour = vec(60, 60, 60);
-            else if (speedforreal>0   && speedforreal<=60)  colour = vec(240, 30, 30);
-            else if (speedforreal>60  && speedforreal<=120) colour = vec(180, 90, 60);
-            else if (speedforreal>120 && speedforreal<=180) colour = vec(180, 180, 30);
-            else if (speedforreal>180 && speedforreal<=240) colour = vec(90, 180, 60);
-            else                                            colour = vec(30, 240, 30);
         }
 
-        defformatstring(speedstring, "%d", speedforreal);
-        text_boundsf(speedstring, realw, realh);
-        vec2 offset = vec2(speedometerx, speedometery).mul(vec2(w, h).div(speedometerscale));
-        offset.x -= realw/2.0f;
-        offset.y -= realh/2.0f;
-
-        pushhudmatrix();
-        hudmatrix.scale(speedometerscale, speedometerscale, 1);
-        flushhudmatrix();
-
-        draw_text(speedstring, int(offset.x), int(offset.y), colour.x, colour.y, colour.z, (int)(speedometeralpha*255.0f));
-
-        pophudmatrix();
-
         /// Frag message.
 
         if((hudfragmillis+fragmessageduration > lastmillis) && (lastmillis>fragmessageduration))