Merge remote branch 'refs/remotes/origin/terencehill/misc_bugfixes'
authorRudolf Polzer <divverent@alientrap.org>
Thu, 19 Aug 2010 04:21:10 +0000 (06:21 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Thu, 19 Aug 2010 04:21:10 +0000 (06:21 +0200)
61 files changed:
Makefile
_hud_descriptions.cfg
balanceXonotic.cfg
defaultXonotic.cfg
gfx/hud/default/ammo_bullets.tga
gfx/hud/default/ammo_cells.tga
gfx/hud/default/ammo_fuel.tga
gfx/hud/default/ammo_rockets.tga
gfx/hud/default/ammo_shells.tga
gfx/hud/default/armor.tga
gfx/hud/default/border.tga [deleted file]
gfx/hud/default/border_default.tga [new file with mode: 0644]
gfx/hud/default/dock.tga [deleted file]
gfx/hud/default/dock_medium.tga [new file with mode: 0644]
gfx/hud/default/health.tga
gfx/hud/default/nexball_carrying.tga
gfx/hud/default/notify_telefrag.tga [new file with mode: 0644]
gfx/hud/default/race_newrecordserver.tga
gfx/hud/luminos/border.tga [deleted file]
gfx/hud/luminos/border_default.tga [new file with mode: 0644]
gfx/hud/luminos/dock.tga [deleted file]
gfx/hud/luminos/dock_medium.tga [new file with mode: 0644]
gfx/hud/old/border.tga [deleted file]
gfx/hud/old/border_default.tga [new file with mode: 0644]
gfx/hud/old/dock.tga [deleted file]
gfx/hud/old/dock_medium.tga [new file with mode: 0644]
gfx/hud/old/num_leading.tga [new file with mode: 0644]
gfx/hud/old/voteprogress_back.tga
gfx/hud/old/voteprogress_prog.tga
gfx/hud/old/voteprogress_voted.tga
gfx/hud/old/weapon_current_bg.tga
hud_default.cfg
hud_luminos_default.cfg
hud_nexuiz.cfg [new file with mode: 0644]
hud_old_nexuiz.cfg [deleted file]
physicsNoQWBunny-nexbased.cfg
qcsrc/client/Main.qc
qcsrc/client/View.qc
qcsrc/client/effects.qc
qcsrc/client/hook.qc
qcsrc/client/hud.qc
qcsrc/client/hud.qh
qcsrc/client/laser.qc
qcsrc/client/miscfunctions.qc
qcsrc/client/progs.src
qcsrc/client/scoreboard.qc
qcsrc/client/scoreboard.qh [new file with mode: 0644]
qcsrc/client/teamradar.qc
qcsrc/common/mapinfo.qc
qcsrc/common/util.qc
qcsrc/common/util.qh
qcsrc/menu/xonotic/dialog_hudpanel_weapons.c
qcsrc/menu/xonotic/dialog_hudsetup_exit.c
qcsrc/server/anticheat.qc
qcsrc/server/antilag.qc
qcsrc/server/antilag.qh
qcsrc/server/cl_physics.qc
qcsrc/server/func_breakable.qc
qcsrc/server/miscfunctions.qc
qcsrc/server/t_teleporters.qc
qcsrc/warpzonelib/common.qc

index 99478f084e03015f18caec84e0b8910328e652d5..83abf218dafe39bf73f32d681386e63b99c0d2a9 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,6 @@
 SCM := $(shell if [ -d .svn ]; then echo svn; elif [ -d ../.git ]; then echo git; fi)
 FTEQCC ?= fteqcc
 PERL ?= perl
-PK3NAME ?= `date +../data%Y%m%d.pk3`
 ZIP ?= 7za a -tzip -mx=9
 ZIPEXCLUDE ?= -x\!*.pk3 -xr\!\.svn -x\!qcsrc
 DIFF ?= diff
@@ -35,23 +34,6 @@ qc-recursive: menu.dat progs.dat csprogs.dat
 .PHONY: skin
 skin: gfx/menu/default/skinvalues.txt
 
-.PHONY: pk3
-pk3: $(PK3NAME)
-
-.PHONY: pk3here
-pk3here: qc
-       $(RM) $(PK3NAME); \
-       set -ex; \
-               ABSPK3NAME=$(PK3NAME); \
-               case $$ABSPK3NAME in \
-                       /*) \
-                               ;; \
-                       *) \
-                               ABSPK3NAME=$$PWD/$$ABSPK3NAME; \
-                               ;; \
-               esac; \
-               $(ZIP) $(ZIPEXCLUDE) $$ABSPK3NAME .
-
 .PHONY: clean
 clean:
        rm -f progs.dat menu.dat csprogs.dat
@@ -71,86 +53,6 @@ menu.dat: qcsrc/menu/*.* qcsrc/menu/*/*.* qcsrc/common/*.*
 gfx/menu/default/skinvalues.txt: qcsrc/menu/skin-customizables.inc
        $(PERL) qcsrc/menu/skin-customizables.inc > gfx/menu/default/skinvalues.txt
 
-$(PK3NAME): qc
-       $(RM) $(PK3NAME)
-       set -ex; \
-               ABSPK3NAME=$(PK3NAME); \
-               case $$ABSPK3NAME in \
-                       /*) \
-                               ;; \
-                       *) \
-                               ABSPK3NAME=$$PWD/$$ABSPK3NAME; \
-                               ;; \
-               esac; \
-               TDIR=`mktemp -d -t xonoticpk3.XXXXXX`; \
-               cp -v progs.dat csprogs.dat menu.dat $$TDIR/; \
-               svn export --force . $$TDIR; \
-               cd $$TDIR; \
-               $(ZIP) $$ABSPK3NAME .
-
 .PHONY: testcase
 testcase:
        cd qcsrc/testcase && $(FTEQCC) $(FTEQCCFLAGS) $(FTEQCCFLAGS_CSPROGS) -DTESTCASE="$$TESTCASE"
-
-.PHONY: update commit diff log logv logupdate logvupdate revert
-update: $(SCM)-update
-commit: $(SCM)-commit
-diff: $(SCM)-diff
-log: $(SCM)-log
-logv: $(SCM)-logv
-revert: $(SCM)-revert
-logupdate: log update
-logvupdate: logv update
-
-.PHONY: svn-update
-svn-update:
-       cd .. && svn update
-
-.PHONY: svn-commit
-svn-commit:
-       cd .. && svn commit
-
-.PHONY: svn-diff
-svn-diff:
-       cd .. && svn diff
-
-.PHONY: svn-log
-svn-log:
-       cd .. && svn log -r HEAD:BASE
-
-.PHONY: svn-logv
-svn-logv:
-       cd .. && svn log -r HEAD:BASE -v
-
-.PHONY: svn-revert
-svn-revert:
-       svn revert -- $(FILE)
-
-.PHONY: git-update
-git-update:
-       git pull origin
-
-.PHONY: git-commit
-git-commit:
-       git commit -a || true
-       if echo -n 'Also send to server? Hit Enter for yes, ^C for no. '; read -r L; then \
-               git config svn-remote.svn.url svn://svn.icculus.org/xonotic; \
-               git config svn-remote.svn.fetch trunk:refs/remotes/origin/master; \
-               git svn dcommit; \
-       fi
-
-.PHONY: git-diff
-git-diff:
-       git diff; git diff origin/master..HEAD; true
-
-.PHONY: git-log
-git-log:
-       git fetch && git log HEAD..origin/master
-
-.PHONY: git-logv
-git-logv:
-       git fetch && git log -v HEAD..origin/master
-
-.PHONY: git-revert
-git-revert:
-       git checkout -- $(FILE)
index 09860bbfa198d890d1fc3a451b67a875946c705b..ddcd45a364fcbb4dbdb4e1b089cdbbe979414c2a 100644 (file)
@@ -28,6 +28,8 @@ seta hud_configure_grid "" "snap to grid when moving/resizing panels"
 seta hud_configure_grid_xsize "" "snap to X * vid_conwidth"
 seta hud_configure_grid_ysize "" "snap to Y * vid_conheight"
 
+seta scr_centerpos "" "Y position of the centerprint"
+
 seta hud_panel_weapons "" "enable/disable this panel"
 seta hud_panel_weapons_pos "" "position of this panel"
 seta hud_panel_weapons_size "" "size of this panel"
index 39b9b26ccc3d4451db82a29a5fc0020b0f707f3f..fb5fc4117e6a32db8c46b4b01c29d85e0fe6fbb6 100644 (file)
@@ -343,10 +343,10 @@ set g_balance_electro_combo_comboradius 0
 set g_balance_electro_combo_speed 400
 // }}}
 // {{{ crylink
-set g_balance_crylink_primary_damage 10
-set g_balance_crylink_primary_edgedamage 8
-set g_balance_crylink_primary_force -60
-set g_balance_crylink_primary_radius 100
+set g_balance_crylink_primary_damage 8
+set g_balance_crylink_primary_edgedamage 6
+set g_balance_crylink_primary_force 40
+set g_balance_crylink_primary_radius 80
 set g_balance_crylink_primary_speed 1100
 set g_balance_crylink_primary_spread 0.1
 set g_balance_crylink_primary_shots 7
@@ -364,16 +364,16 @@ set g_balance_crylink_primary_other_lifetime 2 // range: 800 full, fades to 1300
 set g_balance_crylink_primary_other_fadetime 0.25
 
 set g_balance_crylink_secondary 1
-set g_balance_crylink_secondary_damage 4
+set g_balance_crylink_secondary_damage 2
 set g_balance_crylink_secondary_edgedamage 0
 set g_balance_crylink_secondary_force -20
-set g_balance_crylink_secondary_radius 15
+set g_balance_crylink_secondary_radius 5
 set g_balance_crylink_secondary_speed 1600
 set g_balance_crylink_secondary_spread 0.03
 set g_balance_crylink_secondary_shots 3
 set g_balance_crylink_secondary_bounces 0
-set g_balance_crylink_secondary_refire 0.1
-set g_balance_crylink_secondary_animtime 0.1
+set g_balance_crylink_secondary_refire 0.15
+set g_balance_crylink_secondary_animtime 0.15
 set g_balance_crylink_secondary_ammo 1
 set g_balance_crylink_secondary_bouncedamagefactor 0.5
 
index 3b585d723760ee39c2901578aae1f2e3f5b093b5..c9b5cd7df79c91123bc9b5a1ed9d7b90cf417f37 100644 (file)
@@ -846,6 +846,10 @@ set g_footsteps 1  "serverside footstep sounds"
 
 set g_deathglow 1.25 "when enabled, players stop glowing after they die (the value specifies glow fading speed)"
 
+set g_multijump 0      "Number of multiple jumps to allow (jumping again in the air), -1 allows for infinite jumps"
+set g_multijump_add 0  "0 = make the current z velocity equal to jumpvelocity, 1 = add jumpvelocity to the current z velocity"
+set g_multijump_speed -999999  "Minimum vertical speed a player must have in order to jump again"
+
 // effects
 r_picmipsprites 0 // Xonotic uses sprites that should never be picmipped (team mate, typing, waypoints)
 r_picmipworld 1
@@ -1335,6 +1339,7 @@ seta sbar_info_pos 0 "Y-axis distance from lower right corner for engine info pr
 // hud cvar descriptions
 exec _hud_descriptions.cfg
 // exec the default skin config. remember, NO menu_restart in the deafault cfg (dp segfaults at startup otherwise)
+// please add any new cvars into the hud_save script in qcsrc/client/hud.qc for consistency
 exec hud_default.cfg
 
 // user preference cvars (i.e. shouldn't be adjusted by a skin config) 
@@ -1352,6 +1357,8 @@ seta hud_panel_weapons_ammo_full_nails 200 "show 100% of the status bar at this
 seta hud_panel_weapons_ammo_full_cells 80 "show 100% of the status bar at this ammo count"
 seta hud_panel_weapons_ammo_full_rockets 80 "show 100% of the status bar at this ammo count"
 seta hud_panel_weapons_ammo_full_fuel 100 "show 100% of the status bar at this ammo count"
+seta hud_panel_weapons_timeout "3" "panel disappears if you don't switch weapon for this amount of seconds"
+seta hud_panel_weapons_timeout_effect "1" "disappearance effect: 0) no effect; 1) panel moves out of screen; 2) panel fades out"
 
 seta hud_panel_notify_time 10 "time that a new entry stays until it fades out"
 seta hud_panel_notify_fadetime 3 "fade out time"
@@ -1388,6 +1395,8 @@ seta scoreboard_fadeoutspeed 5 "speed at which scoreboard fades out, higher is f
 seta scoreboard_highlight 1 "enable highlighting for rows and columns in the scoreboard"
 seta scoreboard_highlight_alpha 0.10 "highlight alpha value (depends on hud_scoreboard_highlight 1)"
 seta scoreboard_highlight_alpha_self 0.25 "self highlight alpha value"
+seta scoreboard_offset_left 0.04 "how many pixels the scoreboard is offset from the left screen edge"
+seta scoreboard_offset_right 0.148 "how many pixels the scoreboard is offset from the right screen edge"
 
 // for menu server list (eventually make them have engine support?)
 seta menu_slist_showfull 1 "show servers even if they are full and have no slots to join"
@@ -1500,8 +1509,8 @@ unalias _cdtrack
 cd remap $g_cdtracks_remaplist
 set sv_intermission_cdtrack ""
 
-set g_cdtracks_dontusebydefault ""
-set menu_cdtrack "ninesix"
+set g_cdtracks_dontusebydefault "rising-of-the-phoenix"
+set menu_cdtrack "rising-of-the-phoenix"
 
 // maxidle (in seconds): kick players idle for more than that amount of time
 set sv_maxidle 0
@@ -1514,7 +1523,7 @@ set capturelimit 0
 // hud: font size
 seta hud_fontsize 11
 seta hud_fontsize_spec 16
-seta scr_centersize 11
+seta scr_centersize 12
 seta hud_width 560
 // alias hud_font "loadfont user1 ${1},gfx/fallback ${2-}; loadfont user2 ${1}-big ${2-}; scoreboard_columns_set"
 alias sbar_font "set _requested_sbar_font \"${*}\""
index 8f3739d4821b01512a2a769f08c4212cc61fc3ce..c06e9949189639ca79afd384a388e8cf9e8550c7 100644 (file)
Binary files a/gfx/hud/default/ammo_bullets.tga and b/gfx/hud/default/ammo_bullets.tga differ
index 4850763419258e81c8edb738f4f6178ef19e8868..eda3e46f268892be5d6019c40e5aa23e007a69af 100644 (file)
Binary files a/gfx/hud/default/ammo_cells.tga and b/gfx/hud/default/ammo_cells.tga differ
index 4a3a2d5563a733f4fd0895a5eda3636d8f33fc16..3f3a8918f07171a8018a7a1074127ae7e363d408 100644 (file)
Binary files a/gfx/hud/default/ammo_fuel.tga and b/gfx/hud/default/ammo_fuel.tga differ
index 9b34ea79389418aa3d65dc2a089bb3301a18a1ba..a7bf03e4162ac16055a1cd317d2cc678c093e86b 100644 (file)
Binary files a/gfx/hud/default/ammo_rockets.tga and b/gfx/hud/default/ammo_rockets.tga differ
index f62c715625b7a3ca69e2c082fdf03c0f138503c8..5fe646987136016599a177e583825ebb4ab4b18f 100644 (file)
Binary files a/gfx/hud/default/ammo_shells.tga and b/gfx/hud/default/ammo_shells.tga differ
index f9e47011aa7c1a5631bcadd1a2778e0aaeffe705..b52445d539903983f71711189d4cacfe33f9723c 100644 (file)
Binary files a/gfx/hud/default/armor.tga and b/gfx/hud/default/armor.tga differ
diff --git a/gfx/hud/default/border.tga b/gfx/hud/default/border.tga
deleted file mode 100644 (file)
index 3b76811..0000000
Binary files a/gfx/hud/default/border.tga and /dev/null differ
diff --git a/gfx/hud/default/border_default.tga b/gfx/hud/default/border_default.tga
new file mode 100644 (file)
index 0000000..3b76811
Binary files /dev/null and b/gfx/hud/default/border_default.tga differ
diff --git a/gfx/hud/default/dock.tga b/gfx/hud/default/dock.tga
deleted file mode 100644 (file)
index 3163382..0000000
Binary files a/gfx/hud/default/dock.tga and /dev/null differ
diff --git a/gfx/hud/default/dock_medium.tga b/gfx/hud/default/dock_medium.tga
new file mode 100644 (file)
index 0000000..3163382
Binary files /dev/null and b/gfx/hud/default/dock_medium.tga differ
index 26e40865c992fd6acf42e027b4480b896b057485..d19db5095f66be5874d02c3800473a54a695f23a 100644 (file)
Binary files a/gfx/hud/default/health.tga and b/gfx/hud/default/health.tga differ
index 04ada8ce4cd72a320466216dd5c84793853e9dc8..2f993e01c590c35384bbfc70ac8983caa5379011 100644 (file)
Binary files a/gfx/hud/default/nexball_carrying.tga and b/gfx/hud/default/nexball_carrying.tga differ
diff --git a/gfx/hud/default/notify_telefrag.tga b/gfx/hud/default/notify_telefrag.tga
new file mode 100644 (file)
index 0000000..279910f
Binary files /dev/null and b/gfx/hud/default/notify_telefrag.tga differ
index 99ed22b30fd3e88d6bf2f284f97b03928f102580..6bf5288d0638e7a2aed4d4ad1abdc6344eaefd8d 100644 (file)
Binary files a/gfx/hud/default/race_newrecordserver.tga and b/gfx/hud/default/race_newrecordserver.tga differ
diff --git a/gfx/hud/luminos/border.tga b/gfx/hud/luminos/border.tga
deleted file mode 100644 (file)
index 3b76811..0000000
Binary files a/gfx/hud/luminos/border.tga and /dev/null differ
diff --git a/gfx/hud/luminos/border_default.tga b/gfx/hud/luminos/border_default.tga
new file mode 100644 (file)
index 0000000..3b76811
Binary files /dev/null and b/gfx/hud/luminos/border_default.tga differ
diff --git a/gfx/hud/luminos/dock.tga b/gfx/hud/luminos/dock.tga
deleted file mode 100644 (file)
index 3163382..0000000
Binary files a/gfx/hud/luminos/dock.tga and /dev/null differ
diff --git a/gfx/hud/luminos/dock_medium.tga b/gfx/hud/luminos/dock_medium.tga
new file mode 100644 (file)
index 0000000..3163382
Binary files /dev/null and b/gfx/hud/luminos/dock_medium.tga differ
diff --git a/gfx/hud/old/border.tga b/gfx/hud/old/border.tga
deleted file mode 100644 (file)
index a3056c9..0000000
Binary files a/gfx/hud/old/border.tga and /dev/null differ
diff --git a/gfx/hud/old/border_default.tga b/gfx/hud/old/border_default.tga
new file mode 100644 (file)
index 0000000..a3056c9
Binary files /dev/null and b/gfx/hud/old/border_default.tga differ
diff --git a/gfx/hud/old/dock.tga b/gfx/hud/old/dock.tga
deleted file mode 100644 (file)
index 2b28659..0000000
Binary files a/gfx/hud/old/dock.tga and /dev/null differ
diff --git a/gfx/hud/old/dock_medium.tga b/gfx/hud/old/dock_medium.tga
new file mode 100644 (file)
index 0000000..2b28659
Binary files /dev/null and b/gfx/hud/old/dock_medium.tga differ
diff --git a/gfx/hud/old/num_leading.tga b/gfx/hud/old/num_leading.tga
new file mode 100644 (file)
index 0000000..0629e49
Binary files /dev/null and b/gfx/hud/old/num_leading.tga differ
index fc031ce0b2a52f32b65ed1f3eb7923d19ca0b65b..2348be8251e606d6dc600a100816fc3f445c7a08 100644 (file)
Binary files a/gfx/hud/old/voteprogress_back.tga and b/gfx/hud/old/voteprogress_back.tga differ
index 9f3f6148701cd8ca6940fab441dd9876ed626625..574d5d70a68b67f2db1106093c35bddbfec42965 100644 (file)
Binary files a/gfx/hud/old/voteprogress_prog.tga and b/gfx/hud/old/voteprogress_prog.tga differ
index a21fe6a4b8f98f0ace44203c388f19c8ac442c6b..ffc90a255ca1b3466f94af61e85188f092089850 100644 (file)
Binary files a/gfx/hud/old/voteprogress_voted.tga and b/gfx/hud/old/voteprogress_voted.tga differ
index 7f3a2af35e1ab2dc420dff1933489f9aa6686119..8111427a742c312f4e44c4aab10dbd63ea9af7fc 100644 (file)
Binary files a/gfx/hud/old/weapon_current_bg.tga and b/gfx/hud/old/weapon_current_bg.tga differ
index 34fed7a999bf592509f95ad1c623a659aa8e5724..1a85affd042da662c9c5a0c9bc80f9ea681e24d8 100644 (file)
@@ -1,15 +1,15 @@
 seta hud_skin "luminos"
-seta hud_panel_bg "border"
+seta hud_panel_bg "border_default"
 seta hud_panel_bg_color "0.875 0.375 0"
-seta hud_panel_bg_color_team "1"
+seta hud_panel_bg_color_team "0"
 seta hud_panel_bg_alpha "1"
-seta hud_panel_bg_border "6"
+seta hud_panel_bg_border "8"
 seta hud_panel_bg_padding "2"
 seta hud_panel_fg_alpha "1"
 
 seta hud_dock "dock"
 seta hud_dock_color "0 0.1875 0.4375"
-seta hud_dock_color_team "0.600000"
+seta hud_dock_color_team "0.700000"
 seta hud_dock_alpha "1"
 
 seta hud_progressbar_alpha "0.500000"
@@ -20,15 +20,17 @@ seta hud_progressbar_armor_color "0 0.6 0"
 seta hud_progressbar_fuel_color "0.6 0.6 0"
 seta hud_progressbar_nexball_color "0.7 0.1 0"
 
-seta _hud_panelorder "11 0 9 2 10 14 12 6 3 13 4 8 7 1 5 "
+seta _hud_panelorder "10 9 6 8 14 5 0 4 13 2 7 1 3 11 12 "
 
 seta hud_configure_grid "1"
-seta hud_configure_grid_xsize "0.005000"
-seta hud_configure_grid_ysize "0.005000"
+seta hud_configure_grid_xsize "0.010000"
+seta hud_configure_grid_ysize "0.010000"
+
+seta scr_centerpos "0.25"
 
 seta hud_panel_weapons 1
-seta hud_panel_weapons_pos "0.915000 0.085000"
-seta hud_panel_weapons_size "0.060000 0.635000"
+seta hud_panel_weapons_pos "0.920000 0.090000"
+seta hud_panel_weapons_size "0.060000 0.630000"
 seta hud_panel_weapons_bg ""
 seta hud_panel_weapons_bg_color ""
 seta hud_panel_weapons_bg_color_team ""
@@ -45,23 +47,23 @@ seta hud_panel_weapons_ammo_alpha "1"
 seta hud_panel_weapons_aspect "2"
 
 seta hud_panel_ammo 1
-seta hud_panel_ammo_pos "0.190000 0.925000"
-seta hud_panel_ammo_size "0.095000 0.060000"
+seta hud_panel_ammo_pos "0.190000 0.920000"
+seta hud_panel_ammo_size "0.120000 0.070000"
 seta hud_panel_ammo_bg ""
 seta hud_panel_ammo_bg_color ""
 seta hud_panel_ammo_bg_color_team ""
 seta hud_panel_ammo_bg_alpha ""
 seta hud_panel_ammo_bg_border ""
 seta hud_panel_ammo_bg_padding ""
-seta hud_panel_ammo_onlycurrent "1"
+seta hud_panel_ammo_onlycurrent "0"
 seta hud_panel_ammo_iconalign "0"
 
 seta hud_panel_powerups 1
-seta hud_panel_powerups_pos "0.365000 0.015000"
-seta hud_panel_powerups_size "0.262500 0.048047"
-seta hud_panel_powerups_bg ""
+seta hud_panel_powerups_pos "0.660000 0.940000"
+seta hud_panel_powerups_size "0.330000 0.060000"
+seta hud_panel_powerups_bg "0"
 seta hud_panel_powerups_bg_color ""
-seta hud_panel_powerups_bg_color_team "1"
+seta hud_panel_powerups_bg_color_team ""
 seta hud_panel_powerups_bg_alpha ""
 seta hud_panel_powerups_bg_border ""
 seta hud_panel_powerups_bg_padding ""
@@ -71,12 +73,12 @@ seta hud_panel_powerups_baralign "4"
 seta hud_panel_powerups_progressbar "1"
 
 seta hud_panel_healtharmor 1
-seta hud_panel_healtharmor_pos "0.305000 0.925000"
-seta hud_panel_healtharmor_size "0.315000 0.060000"
+seta hud_panel_healtharmor_pos "0.330000 0.920000"
+seta hud_panel_healtharmor_size "0.310000 0.070000"
 seta hud_panel_healtharmor_bg ""
 seta hud_panel_healtharmor_bg_color ""
-seta hud_panel_healtharmor_bg_color_team "1"
-seta hud_panel_healtharmor_bg_alpha "1"
+seta hud_panel_healtharmor_bg_color_team ""
+seta hud_panel_healtharmor_bg_alpha ""
 seta hud_panel_healtharmor_bg_border ""
 seta hud_panel_healtharmor_bg_padding ""
 seta hud_panel_healtharmor_flip "0
@@ -85,21 +87,21 @@ seta hud_panel_healtharmor_baralign "4"
 seta hud_panel_healtharmor_progressbar "1"
 
 seta hud_panel_notify 1
-seta hud_panel_notify_pos "0.700000 0.740000"
-seta hud_panel_notify_size "0.280000 0.180000"
-seta hud_panel_notify_bg ""
+seta hud_panel_notify_pos "0.660000 0.730000"
+seta hud_panel_notify_size "0.320000 0.190000"
+seta hud_panel_notify_bg "0"
 seta hud_panel_notify_bg_color ""
 seta hud_panel_notify_bg_color_team ""
-seta hud_panel_notify_bg_alpha "0"
+seta hud_panel_notify_bg_alpha ""
 seta hud_panel_notify_bg_border ""
 seta hud_panel_notify_bg_padding ""
 seta hud_panel_notify_flip "0"
-seta hud_panel_notify_print "0"
+seta hud_panel_notify_print "1"
 
 seta hud_panel_timer 1
-seta hud_panel_timer_pos "0.880000 0.012070"
-seta hud_panel_timer_size "0.100000 0.032520"
-seta hud_panel_timer_bg ""
+seta hud_panel_timer_pos "0.870000 0"
+seta hud_panel_timer_size "0.130000 0.060000"
+seta hud_panel_timer_bg "0"
 seta hud_panel_timer_bg_color ""
 seta hud_panel_timer_bg_color_team ""
 seta hud_panel_timer_bg_alpha ""
@@ -107,8 +109,8 @@ seta hud_panel_timer_bg_border ""
 seta hud_panel_timer_bg_padding "0"
 
 seta hud_panel_radar 1
-seta hud_panel_radar_pos "0.025000 0.025000"
-seta hud_panel_radar_size "0.180000 0.220000"
+seta hud_panel_radar_pos "0.030000 0.020000"
+seta hud_panel_radar_size "0.170000 0.220000"
 seta hud_panel_radar_bg ""
 seta hud_panel_radar_bg_color ""
 seta hud_panel_radar_bg_color_team ""
@@ -118,8 +120,8 @@ seta hud_panel_radar_bg_padding "-3"
 seta hud_panel_radar_foreground_alpha "0.800000"
 
 seta hud_panel_score 1
-seta hud_panel_score_pos "0.025000 0.925000"
-seta hud_panel_score_size "0.145000 0.060000"
+seta hud_panel_score_pos "0.020000 0.920000"
+seta hud_panel_score_size "0.150000 0.070000"
 seta hud_panel_score_bg ""
 seta hud_panel_score_bg_color ""
 seta hud_panel_score_bg_color_team ""
@@ -128,29 +130,29 @@ seta hud_panel_score_bg_border ""
 seta hud_panel_score_bg_padding ""
 
 seta hud_panel_racetimer 1
-seta hud_panel_racetimer_pos "0.355000 0.205000"
-seta hud_panel_racetimer_size "0.280000 0.093333"
-seta hud_panel_racetimer_bg ""
+seta hud_panel_racetimer_pos "0.360000 0.090000"
+seta hud_panel_racetimer_size "0.280000 0.090000"
+seta hud_panel_racetimer_bg "0"
 seta hud_panel_racetimer_bg_color ""
 seta hud_panel_racetimer_bg_color_team ""
-seta hud_panel_racetimer_bg_alpha "0"
+seta hud_panel_racetimer_bg_alpha ""
 seta hud_panel_racetimer_bg_border ""
 seta hud_panel_racetimer_bg_padding ""
 
 seta hud_panel_vote 1
-seta hud_panel_vote_pos "0.025000 0.660000"
-seta hud_panel_vote_size "0.264218 0.102462"
+seta hud_panel_vote_pos "0.020000 0.650000"
+seta hud_panel_vote_size "0.230000 0.110000"
 seta hud_panel_vote_bg ""
 seta hud_panel_vote_bg_color ""
 seta hud_panel_vote_bg_color_team ""
 seta hud_panel_vote_bg_alpha ""
 seta hud_panel_vote_bg_border ""
 seta hud_panel_vote_bg_padding ""
-seta hud_panel_vote_alreadyvoted_alpha "0.750000"
+seta hud_panel_vote_alreadyvoted_alpha "0.800000"
 
 seta hud_panel_modicons 1
 seta hud_panel_modicons_pos "0.040000 0.270000"
-seta hud_panel_modicons_size "0.084766 0.199903"
+seta hud_panel_modicons_size "0.080000 0.200000"
 seta hud_panel_modicons_bg ""
 seta hud_panel_modicons_bg_color ""
 seta hud_panel_modicons_bg_color_team ""
@@ -159,42 +161,43 @@ seta hud_panel_modicons_bg_border ""
 seta hud_panel_modicons_bg_padding ""
 
 seta hud_panel_pressedkeys 1
-seta hud_panel_pressedkeys_pos "0.410000 0.545000"
-seta hud_panel_pressedkeys_size "0.177656 0.120531"
-seta hud_panel_pressedkeys_bg ""
+seta hud_panel_pressedkeys_pos "0.410000 0.710000"
+seta hud_panel_pressedkeys_size "0.180000 0.130000"
+seta hud_panel_pressedkeys_bg "0"
 seta hud_panel_pressedkeys_bg_color ""
-seta hud_panel_pressedkeys_bg_color_team "1"
-seta hud_panel_pressedkeys_bg_alpha "0"
+seta hud_panel_pressedkeys_bg_color_team ""
+seta hud_panel_pressedkeys_bg_alpha ""
 seta hud_panel_pressedkeys_bg_border ""
 seta hud_panel_pressedkeys_bg_padding ""
 seta hud_panel_pressedkeys_aspect "1.600000"
 
 seta hud_panel_chat 1
-seta hud_panel_chat_pos "0.020000 0.775000"
-seta hud_panel_chat_size "0.627968 0.112696"
-seta hud_panel_chat_bg ""
+seta hud_panel_chat_pos "0.020000 0.780000"
+seta hud_panel_chat_size "0.630000 0.110000"
+seta hud_panel_chat_bg "0"
 seta hud_panel_chat_bg_color ""
 seta hud_panel_chat_bg_color_team ""
-seta hud_panel_chat_bg_alpha "0"
+seta hud_panel_chat_bg_alpha ""
 seta hud_panel_chat_bg_border ""
 seta hud_panel_chat_bg_padding ""
 
 seta hud_panel_engineinfo 1
-seta hud_panel_engineinfo_pos "0.860000 0.954667"
-seta hud_panel_engineinfo_size "0.125000 0.035000"
-seta hud_panel_engineinfo_bg ""
+seta hud_panel_engineinfo_pos "0.910000 0.970000"
+seta hud_panel_engineinfo_size "0.090000 0.030000"
+seta hud_panel_engineinfo_bg "0"
 seta hud_panel_engineinfo_bg_color ""
 seta hud_panel_engineinfo_bg_color_team ""
-seta hud_panel_engineinfo_bg_alpha "0"
+seta hud_panel_engineinfo_bg_alpha ""
 seta hud_panel_engineinfo_bg_border ""
 seta hud_panel_engineinfo_bg_padding ""
 
 seta hud_panel_infomessages 1
-seta hud_panel_infomessages_pos "0.340000 0.350000"
-seta hud_panel_infomessages_size "0.320000 0.085000"
-seta hud_panel_infomessages_bg ""
+seta hud_panel_infomessages_pos "0.510000 0"
+seta hud_panel_infomessages_size "0.340000 0.090000"
+seta hud_panel_infomessages_bg "0"
 seta hud_panel_infomessages_bg_color ""
 seta hud_panel_infomessages_bg_color_team ""
-seta hud_panel_infomessages_bg_alpha "0"
+seta hud_panel_infomessages_bg_alpha ""
 seta hud_panel_infomessages_bg_border ""
-seta hud_panel_infomessages_bg_padding ""
+seta hud_panel_infomessages_bg_padding "0"
+seta hud_panel_infomessages_flip "1"
index 8d1436a18a1224a0082f7c79dd41ffca329fbbfe..65331cf9d859cc51857581f9a2d8975b92011abf 100644 (file)
@@ -1,15 +1,15 @@
 seta hud_skin "luminos"
-seta hud_panel_bg "border"
+seta hud_panel_bg "border_default"
 seta hud_panel_bg_color "0.875 0.375 0"
-seta hud_panel_bg_color_team "1"
+seta hud_panel_bg_color_team "0"
 seta hud_panel_bg_alpha "1"
-seta hud_panel_bg_border "6"
+seta hud_panel_bg_border "8"
 seta hud_panel_bg_padding "2"
 seta hud_panel_fg_alpha "1"
 
 seta hud_dock "dock"
 seta hud_dock_color "0 0.1875 0.4375"
-seta hud_dock_color_team "0.600000"
+seta hud_dock_color_team "0.700000"
 seta hud_dock_alpha "1"
 
 seta hud_progressbar_alpha "0.500000"
@@ -20,15 +20,17 @@ seta hud_progressbar_armor_color "0 0.6 0"
 seta hud_progressbar_fuel_color "0.6 0.6 0"
 seta hud_progressbar_nexball_color "0.7 0.1 0"
 
-seta _hud_panelorder "11 0 9 2 10 14 12 6 3 13 4 8 7 1 5 "
+seta _hud_panelorder "10 9 6 8 14 5 0 4 13 2 7 1 3 11 12 "
 
 seta hud_configure_grid "1"
-seta hud_configure_grid_xsize "0.005000"
-seta hud_configure_grid_ysize "0.005000"
+seta hud_configure_grid_xsize "0.010000"
+seta hud_configure_grid_ysize "0.010000"
+
+seta scr_centerpos "0.25"
 
 seta hud_panel_weapons 1
-seta hud_panel_weapons_pos "0.915000 0.085000"
-seta hud_panel_weapons_size "0.060000 0.635000"
+seta hud_panel_weapons_pos "0.920000 0.090000"
+seta hud_panel_weapons_size "0.060000 0.630000"
 seta hud_panel_weapons_bg ""
 seta hud_panel_weapons_bg_color ""
 seta hud_panel_weapons_bg_color_team ""
@@ -45,23 +47,23 @@ seta hud_panel_weapons_ammo_alpha "1"
 seta hud_panel_weapons_aspect "2"
 
 seta hud_panel_ammo 1
-seta hud_panel_ammo_pos "0.190000 0.925000"
-seta hud_panel_ammo_size "0.095000 0.060000"
+seta hud_panel_ammo_pos "0.190000 0.920000"
+seta hud_panel_ammo_size "0.120000 0.070000"
 seta hud_panel_ammo_bg ""
 seta hud_panel_ammo_bg_color ""
 seta hud_panel_ammo_bg_color_team ""
 seta hud_panel_ammo_bg_alpha ""
 seta hud_panel_ammo_bg_border ""
 seta hud_panel_ammo_bg_padding ""
-seta hud_panel_ammo_onlycurrent "1"
+seta hud_panel_ammo_onlycurrent "0"
 seta hud_panel_ammo_iconalign "0"
 
 seta hud_panel_powerups 1
-seta hud_panel_powerups_pos "0.365000 0.015000"
-seta hud_panel_powerups_size "0.262500 0.048047"
-seta hud_panel_powerups_bg ""
+seta hud_panel_powerups_pos "0.660000 0.940000"
+seta hud_panel_powerups_size "0.330000 0.060000"
+seta hud_panel_powerups_bg "0"
 seta hud_panel_powerups_bg_color ""
-seta hud_panel_powerups_bg_color_team "1"
+seta hud_panel_powerups_bg_color_team ""
 seta hud_panel_powerups_bg_alpha ""
 seta hud_panel_powerups_bg_border ""
 seta hud_panel_powerups_bg_padding ""
@@ -71,12 +73,12 @@ seta hud_panel_powerups_baralign "4"
 seta hud_panel_powerups_progressbar "1"
 
 seta hud_panel_healtharmor 1
-seta hud_panel_healtharmor_pos "0.305000 0.925000"
-seta hud_panel_healtharmor_size "0.315000 0.060000"
+seta hud_panel_healtharmor_pos "0.330000 0.920000"
+seta hud_panel_healtharmor_size "0.310000 0.070000"
 seta hud_panel_healtharmor_bg ""
 seta hud_panel_healtharmor_bg_color ""
-seta hud_panel_healtharmor_bg_color_team "1"
-seta hud_panel_healtharmor_bg_alpha "1"
+seta hud_panel_healtharmor_bg_color_team ""
+seta hud_panel_healtharmor_bg_alpha ""
 seta hud_panel_healtharmor_bg_border ""
 seta hud_panel_healtharmor_bg_padding ""
 seta hud_panel_healtharmor_flip "0
@@ -85,21 +87,21 @@ seta hud_panel_healtharmor_baralign "4"
 seta hud_panel_healtharmor_progressbar "1"
 
 seta hud_panel_notify 1
-seta hud_panel_notify_pos "0.700000 0.740000"
-seta hud_panel_notify_size "0.280000 0.180000"
-seta hud_panel_notify_bg ""
+seta hud_panel_notify_pos "0.660000 0.730000"
+seta hud_panel_notify_size "0.320000 0.190000"
+seta hud_panel_notify_bg "0"
 seta hud_panel_notify_bg_color ""
 seta hud_panel_notify_bg_color_team ""
-seta hud_panel_notify_bg_alpha "0"
+seta hud_panel_notify_bg_alpha ""
 seta hud_panel_notify_bg_border ""
 seta hud_panel_notify_bg_padding ""
 seta hud_panel_notify_flip "0"
-seta hud_panel_notify_print "0"
+seta hud_panel_notify_print "1"
 
 seta hud_panel_timer 1
-seta hud_panel_timer_pos "0.880000 0.012070"
-seta hud_panel_timer_size "0.100000 0.032520"
-seta hud_panel_timer_bg ""
+seta hud_panel_timer_pos "0.870000 0"
+seta hud_panel_timer_size "0.130000 0.060000"
+seta hud_panel_timer_bg "0"
 seta hud_panel_timer_bg_color ""
 seta hud_panel_timer_bg_color_team ""
 seta hud_panel_timer_bg_alpha ""
@@ -107,8 +109,8 @@ seta hud_panel_timer_bg_border ""
 seta hud_panel_timer_bg_padding "0"
 
 seta hud_panel_radar 1
-seta hud_panel_radar_pos "0.025000 0.025000"
-seta hud_panel_radar_size "0.180000 0.220000"
+seta hud_panel_radar_pos "0.030000 0.020000"
+seta hud_panel_radar_size "0.170000 0.220000"
 seta hud_panel_radar_bg ""
 seta hud_panel_radar_bg_color ""
 seta hud_panel_radar_bg_color_team ""
@@ -118,8 +120,8 @@ seta hud_panel_radar_bg_padding "-3"
 seta hud_panel_radar_foreground_alpha "0.800000"
 
 seta hud_panel_score 1
-seta hud_panel_score_pos "0.025000 0.925000"
-seta hud_panel_score_size "0.145000 0.060000"
+seta hud_panel_score_pos "0.020000 0.920000"
+seta hud_panel_score_size "0.150000 0.070000"
 seta hud_panel_score_bg ""
 seta hud_panel_score_bg_color ""
 seta hud_panel_score_bg_color_team ""
@@ -128,29 +130,29 @@ seta hud_panel_score_bg_border ""
 seta hud_panel_score_bg_padding ""
 
 seta hud_panel_racetimer 1
-seta hud_panel_racetimer_pos "0.355000 0.205000"
-seta hud_panel_racetimer_size "0.280000 0.093333"
-seta hud_panel_racetimer_bg ""
+seta hud_panel_racetimer_pos "0.360000 0.090000"
+seta hud_panel_racetimer_size "0.280000 0.090000"
+seta hud_panel_racetimer_bg "0"
 seta hud_panel_racetimer_bg_color ""
 seta hud_panel_racetimer_bg_color_team ""
-seta hud_panel_racetimer_bg_alpha "0"
+seta hud_panel_racetimer_bg_alpha ""
 seta hud_panel_racetimer_bg_border ""
 seta hud_panel_racetimer_bg_padding ""
 
 seta hud_panel_vote 1
-seta hud_panel_vote_pos "0.025000 0.660000"
-seta hud_panel_vote_size "0.264218 0.102462"
+seta hud_panel_vote_pos "0.020000 0.650000"
+seta hud_panel_vote_size "0.230000 0.110000"
 seta hud_panel_vote_bg ""
 seta hud_panel_vote_bg_color ""
 seta hud_panel_vote_bg_color_team ""
 seta hud_panel_vote_bg_alpha ""
 seta hud_panel_vote_bg_border ""
 seta hud_panel_vote_bg_padding ""
-seta hud_panel_vote_alreadyvoted_alpha "0.750000"
+seta hud_panel_vote_alreadyvoted_alpha "0.800000"
 
 seta hud_panel_modicons 1
 seta hud_panel_modicons_pos "0.040000 0.270000"
-seta hud_panel_modicons_size "0.084766 0.199903"
+seta hud_panel_modicons_size "0.080000 0.200000"
 seta hud_panel_modicons_bg ""
 seta hud_panel_modicons_bg_color ""
 seta hud_panel_modicons_bg_color_team ""
@@ -159,44 +161,45 @@ seta hud_panel_modicons_bg_border ""
 seta hud_panel_modicons_bg_padding ""
 
 seta hud_panel_pressedkeys 1
-seta hud_panel_pressedkeys_pos "0.410000 0.545000"
-seta hud_panel_pressedkeys_size "0.177656 0.120531"
-seta hud_panel_pressedkeys_bg ""
+seta hud_panel_pressedkeys_pos "0.410000 0.710000"
+seta hud_panel_pressedkeys_size "0.180000 0.130000"
+seta hud_panel_pressedkeys_bg "0"
 seta hud_panel_pressedkeys_bg_color ""
-seta hud_panel_pressedkeys_bg_color_team "1"
-seta hud_panel_pressedkeys_bg_alpha "0"
+seta hud_panel_pressedkeys_bg_color_team ""
+seta hud_panel_pressedkeys_bg_alpha ""
 seta hud_panel_pressedkeys_bg_border ""
 seta hud_panel_pressedkeys_bg_padding ""
 seta hud_panel_pressedkeys_aspect "1.600000"
 
 seta hud_panel_chat 1
-seta hud_panel_chat_pos "0.020000 0.775000"
-seta hud_panel_chat_size "0.627968 0.112696"
-seta hud_panel_chat_bg ""
+seta hud_panel_chat_pos "0.020000 0.780000"
+seta hud_panel_chat_size "0.630000 0.110000"
+seta hud_panel_chat_bg "0"
 seta hud_panel_chat_bg_color ""
 seta hud_panel_chat_bg_color_team ""
-seta hud_panel_chat_bg_alpha "0"
+seta hud_panel_chat_bg_alpha ""
 seta hud_panel_chat_bg_border ""
 seta hud_panel_chat_bg_padding ""
 
 seta hud_panel_engineinfo 1
-seta hud_panel_engineinfo_pos "0.860000 0.954667"
-seta hud_panel_engineinfo_size "0.125000 0.035000"
-seta hud_panel_engineinfo_bg ""
+seta hud_panel_engineinfo_pos "0.910000 0.970000"
+seta hud_panel_engineinfo_size "0.090000 0.030000"
+seta hud_panel_engineinfo_bg "0"
 seta hud_panel_engineinfo_bg_color ""
 seta hud_panel_engineinfo_bg_color_team ""
-seta hud_panel_engineinfo_bg_alpha "0"
+seta hud_panel_engineinfo_bg_alpha ""
 seta hud_panel_engineinfo_bg_border ""
 seta hud_panel_engineinfo_bg_padding ""
 
 seta hud_panel_infomessages 1
-seta hud_panel_infomessages_pos "0.340000 0.350000"
-seta hud_panel_infomessages_size "0.320000 0.085000"
-seta hud_panel_infomessages_bg ""
+seta hud_panel_infomessages_pos "0.510000 0"
+seta hud_panel_infomessages_size "0.340000 0.090000"
+seta hud_panel_infomessages_bg "0"
 seta hud_panel_infomessages_bg_color ""
 seta hud_panel_infomessages_bg_color_team ""
-seta hud_panel_infomessages_bg_alpha "0"
+seta hud_panel_infomessages_bg_alpha ""
 seta hud_panel_infomessages_bg_border ""
-seta hud_panel_infomessages_bg_padding ""
+seta hud_panel_infomessages_bg_padding "0"
+seta hud_panel_infomessages_flip "1"
 
 menu_restart
diff --git a/hud_nexuiz.cfg b/hud_nexuiz.cfg
new file mode 100644 (file)
index 0000000..8b69551
--- /dev/null
@@ -0,0 +1,205 @@
+seta hud_skin "old"
+seta hud_panel_bg "border_default"
+seta hud_panel_bg_color "0.299327 1 0.81275"
+seta hud_panel_bg_color_team "0"
+seta hud_panel_bg_alpha "0.700000"
+seta hud_panel_bg_border "8"
+seta hud_panel_bg_padding "0"
+seta hud_panel_fg_alpha "1"
+
+seta hud_dock "dock"
+seta hud_dock_color "0 0.697965 0.418232"
+seta hud_dock_color_team "0.700000"
+seta hud_dock_alpha "0.700000"
+
+seta hud_progressbar_alpha "0.5"
+seta hud_progressbar_strength_color "0 0 0.6"
+seta hud_progressbar_shield_color "0.6 0 0.6"
+seta hud_progressbar_health_color "0.6 0 0"
+seta hud_progressbar_armor_color "0 0.6 0"
+seta hud_progressbar_fuel_color "0.6 0.6 0"
+seta hud_progressbar_nexball_color "0.7 0.1 0"
+
+seta _hud_panelorder "0 11 8 5 6 14 9 13 7 2 3 1 10 12 4 "
+
+seta hud_configure_grid "1"
+seta hud_configure_grid_xsize "0.01"
+seta hud_configure_grid_ysize "0.01"
+
+seta scr_centerpos "0.25"
+
+seta hud_panel_weapons 1
+seta hud_panel_weapons_pos "0.370000 0.870000"
+seta hud_panel_weapons_size "0.340000 0.060000"
+seta hud_panel_weapons_bg "0"
+seta hud_panel_weapons_bg_color ""
+seta hud_panel_weapons_bg_color_team ""
+seta hud_panel_weapons_bg_alpha ""
+seta hud_panel_weapons_bg_border ""
+seta hud_panel_weapons_bg_padding "-5"
+seta hud_panel_weapons_complainbubble "1"
+seta hud_panel_weapons_complainbubble_padding "-10"
+seta hud_panel_weapons_complainbubble_color_outofammo "0.8 0 0"
+seta hud_panel_weapons_complainbubble_color_donthave "0.8 0.5 0"
+seta hud_panel_weapons_complainbubble_color_unavailable "0 0.3 0.8"
+seta hud_panel_weapons_ammo_color "0 1 0"
+seta hud_panel_weapons_ammo_alpha "1"
+seta hud_panel_weapons_aspect "2"
+
+seta hud_panel_ammo 1
+seta hud_panel_ammo_pos "0.160000 0.910000"
+seta hud_panel_ammo_size "0.190000 0.090000"
+seta hud_panel_ammo_bg "0"
+seta hud_panel_ammo_bg_color ""
+seta hud_panel_ammo_bg_color_team ""
+seta hud_panel_ammo_bg_alpha ""
+seta hud_panel_ammo_bg_border ""
+seta hud_panel_ammo_bg_padding ""
+seta hud_panel_ammo_onlycurrent "0"
+seta hud_panel_ammo_iconalign "0"
+
+seta hud_panel_powerups 1
+seta hud_panel_powerups_pos "0.660000 0.910000"
+seta hud_panel_powerups_size "0.130000 0.090000"
+seta hud_panel_powerups_bg "0"
+seta hud_panel_powerups_bg_color ""
+seta hud_panel_powerups_bg_color_team ""
+seta hud_panel_powerups_bg_alpha ""
+seta hud_panel_powerups_bg_border ""
+seta hud_panel_powerups_bg_padding ""
+seta hud_panel_powerups_flip "1"
+seta hud_panel_powerups_iconalign "0"
+seta hud_panel_powerups_baralign "0"
+seta hud_panel_powerups_progressbar "0"
+
+seta hud_panel_healtharmor 1
+seta hud_panel_healtharmor_pos "0.370000 0.930000"
+seta hud_panel_healtharmor_size "0.300000 0.070000"
+seta hud_panel_healtharmor_bg "0"
+seta hud_panel_healtharmor_bg_color ""
+seta hud_panel_healtharmor_bg_color_team ""
+seta hud_panel_healtharmor_bg_alpha ""
+seta hud_panel_healtharmor_bg_border ""
+seta hud_panel_healtharmor_bg_padding ""
+seta hud_panel_healtharmor_flip "0
+seta hud_panel_healtharmor_iconalign "0"
+seta hud_panel_healtharmor_baralign "0"
+seta hud_panel_healtharmor_progressbar "0"
+
+seta hud_panel_notify 0
+seta hud_panel_notify_pos "0 0.650000"
+seta hud_panel_notify_size "0.300000 0.070000"
+seta hud_panel_notify_bg ""
+seta hud_panel_notify_bg_color ""
+seta hud_panel_notify_bg_color_team ""
+seta hud_panel_notify_bg_alpha "0"
+seta hud_panel_notify_bg_border ""
+seta hud_panel_notify_bg_padding ""
+seta hud_panel_notify_flip "0"
+seta hud_panel_notify_print "1"
+
+seta hud_panel_timer 1
+seta hud_panel_timer_pos "0.850000 0"
+seta hud_panel_timer_size "0.150000 0.060000"
+seta hud_panel_timer_bg ""
+seta hud_panel_timer_bg_color "0 0.5 0.35"
+seta hud_panel_timer_bg_color_team ""
+seta hud_panel_timer_bg_alpha ""
+seta hud_panel_timer_bg_border ""
+seta hud_panel_timer_bg_padding "0"
+
+seta hud_panel_radar 2
+seta hud_panel_radar_pos "0.800000 0"
+seta hud_panel_radar_size "0.200000 0.260000"
+seta hud_panel_radar_bg "border_radar"
+seta hud_panel_radar_bg_color ""
+seta hud_panel_radar_bg_color_team ""
+seta hud_panel_radar_bg_alpha "0.500000"
+seta hud_panel_radar_bg_border "0"
+seta hud_panel_radar_bg_padding "0"
+seta hud_panel_radar_foreground_alpha "1"
+
+seta hud_panel_score 1
+seta hud_panel_score_pos "0.760000 0.910000"
+seta hud_panel_score_size "0.240000 0.090000"
+seta hud_panel_score_bg "0"
+seta hud_panel_score_bg_color ""
+seta hud_panel_score_bg_color_team ""
+seta hud_panel_score_bg_alpha ""
+seta hud_panel_score_bg_border ""
+seta hud_panel_score_bg_padding ""
+
+seta hud_panel_racetimer 1
+seta hud_panel_racetimer_pos "0.360000 0.140000"
+seta hud_panel_racetimer_size "0.280000 0.090000"
+seta hud_panel_racetimer_bg "0"
+seta hud_panel_racetimer_bg_color ""
+seta hud_panel_racetimer_bg_color_team ""
+seta hud_panel_racetimer_bg_alpha ""
+seta hud_panel_racetimer_bg_border ""
+seta hud_panel_racetimer_bg_padding ""
+
+seta hud_panel_vote 1
+seta hud_panel_vote_pos "0.690000 0.750000"
+seta hud_panel_vote_size "0.300000 0.100000"
+seta hud_panel_vote_bg ""
+seta hud_panel_vote_bg_color "0 0.5 0.35"
+seta hud_panel_vote_bg_color_team ""
+seta hud_panel_vote_bg_alpha ""
+seta hud_panel_vote_bg_border ""
+seta hud_panel_vote_bg_padding "-3"
+seta hud_panel_vote_alreadyvoted_alpha "0.750000"
+
+seta hud_panel_modicons 1
+seta hud_panel_modicons_pos "0.010000 0.910000"
+seta hud_panel_modicons_size "0.135000 0.090000"
+seta hud_panel_modicons_bg "0"
+seta hud_panel_modicons_bg_color ""
+seta hud_panel_modicons_bg_color_team ""
+seta hud_panel_modicons_bg_alpha ""
+seta hud_panel_modicons_bg_border ""
+seta hud_panel_modicons_bg_padding ""
+
+seta hud_panel_pressedkeys 1
+seta hud_panel_pressedkeys_pos "0.440000 0.760000"
+seta hud_panel_pressedkeys_size "0.120000 0.094368"
+seta hud_panel_pressedkeys_bg "0"
+seta hud_panel_pressedkeys_bg_color ""
+seta hud_panel_pressedkeys_bg_color_team ""
+seta hud_panel_pressedkeys_bg_alpha ""
+seta hud_panel_pressedkeys_bg_border ""
+seta hud_panel_pressedkeys_bg_padding ""
+seta hud_panel_pressedkeys_aspect "1.600000"
+
+seta hud_panel_chat 1
+seta hud_panel_chat_pos "0 0.760000"
+seta hud_panel_chat_size "0.420000 0.130000"
+seta hud_panel_chat_bg "0"
+seta hud_panel_chat_bg_color ""
+seta hud_panel_chat_bg_color_team ""
+seta hud_panel_chat_bg_alpha ""
+seta hud_panel_chat_bg_border ""
+seta hud_panel_chat_bg_padding ""
+
+seta hud_panel_engineinfo 1
+seta hud_panel_engineinfo_pos "0.887500 0.870000"
+seta hud_panel_engineinfo_size "0.112500 0.030000"
+seta hud_panel_engineinfo_bg "0"
+seta hud_panel_engineinfo_bg_color ""
+seta hud_panel_engineinfo_bg_color_team ""
+seta hud_panel_engineinfo_bg_alpha ""
+seta hud_panel_engineinfo_bg_border ""
+seta hud_panel_engineinfo_bg_padding ""
+
+seta hud_panel_infomessages 1
+seta hud_panel_infomessages_pos "0.700000 0.620000"
+seta hud_panel_infomessages_size "0.300000 0.100000"
+seta hud_panel_infomessages_bg "0"
+seta hud_panel_infomessages_bg_color ""
+seta hud_panel_infomessages_bg_color_team ""
+seta hud_panel_infomessages_bg_alpha ""
+seta hud_panel_infomessages_bg_border ""
+seta hud_panel_infomessages_bg_padding ""
+seta hud_panel_infomessages_flip "1"
+
+menu_restart
diff --git a/hud_old_nexuiz.cfg b/hud_old_nexuiz.cfg
deleted file mode 100644 (file)
index e803ed9..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-seta hud_skin "old"
-seta hud_bg "border"
-seta hud_bg_color "1 1 1"
-seta hud_bg_color_team "0"
-seta hud_bg_alpha "0.500000"
-seta hud_bg_border "10"
-seta hud_bg_padding "0"
-seta hud_fg_alpha "1"
-
-seta hud_dock "dock"
-seta hud_dock_color "0 0.5 0.35"
-seta hud_dock_color_team "0.700000"
-seta hud_dock_alpha "1"
-
-seta hud_progressbar_alpha "0.5"
-seta hud_progressbar_strength_color "0 0 0.6"
-seta hud_progressbar_shield_color "0.6 0 0.6"
-seta hud_progressbar_health_color "0.6 0 0"
-seta hud_progressbar_armor_color "0 0.6 0"
-seta hud_progressbar_fuel_color "0.6 0.6 0"
-seta hud_progressbar_nexball_color "0.7 0.1 0"
-
-seta _hud_panelorder "3 7 5 6 0 2 14 4 12 11 13 9 1 10 8 "
-
-seta hud_configure_grid "1"
-seta hud_configure_grid_xsize "0.01"
-seta hud_configure_grid_ysize "0.01"
-
-seta hud_panel_weapons 1
-seta hud_panel_weapons_pos "0.370000 0.870000"
-seta hud_panel_weapons_size "0.330000 0.060000"
-seta hud_panel_weapons_bg "0"
-seta hud_panel_weapons_bg_color ""
-seta hud_panel_weapons_bg_color_team ""
-seta hud_panel_weapons_bg_alpha ""
-seta hud_panel_weapons_bg_border ""
-seta hud_panel_weapons_bg_padding "-5"
-seta hud_panel_weapons_complainbubble "1"
-seta hud_panel_weapons_complainbubble_padding "-10"
-seta hud_panel_weapons_complainbubble_color_outofammo "0.8 0 0"
-seta hud_panel_weapons_complainbubble_color_donthave "0.8 0.5 0"
-seta hud_panel_weapons_complainbubble_color_unavailable "0 0.3 0.8"
-seta hud_panel_weapons_ammo_color "0 1 0"
-seta hud_panel_weapons_ammo_alpha "1"
-seta hud_panel_weapons_aspect "1"
-
-seta hud_panel_ammo 1
-seta hud_panel_ammo_pos "0.160000 0.910000"
-seta hud_panel_ammo_size "0.190000 0.090000"
-seta hud_panel_ammo_bg "0"
-seta hud_panel_ammo_bg_color ""
-seta hud_panel_ammo_bg_color_team ""
-seta hud_panel_ammo_bg_alpha ""
-seta hud_panel_ammo_bg_border ""
-seta hud_panel_ammo_bg_padding ""
-seta hud_panel_ammo_onlycurrent "0"
-seta hud_panel_ammo_iconalign "0"
-
-seta hud_panel_powerups 1
-seta hud_panel_powerups_pos "0.670000 0.910000"
-seta hud_panel_powerups_size "0.110000 0.080000"
-seta hud_panel_powerups_bg ""
-seta hud_panel_powerups_bg_color ""
-seta hud_panel_powerups_bg_color_team ""
-seta hud_panel_powerups_bg_alpha ""
-seta hud_panel_powerups_bg_border ""
-seta hud_panel_powerups_bg_padding ""
-seta hud_panel_powerups_flip "1"
-seta hud_panel_powerups_iconalign "0"
-seta hud_panel_powerups_baralign "0"
-seta hud_panel_powerups_progressbar "0"
-
-seta hud_panel_healtharmor 1
-seta hud_panel_healtharmor_pos "0.370000 0.930000"
-seta hud_panel_healtharmor_size "0.300000 0.070000"
-seta hud_panel_healtharmor_bg "0"
-seta hud_panel_healtharmor_bg_color ""
-seta hud_panel_healtharmor_bg_color_team ""
-seta hud_panel_healtharmor_bg_alpha ""
-seta hud_panel_healtharmor_bg_border ""
-seta hud_panel_healtharmor_bg_padding ""
-seta hud_panel_healtharmor_flip "0
-seta hud_panel_healtharmor_iconalign "0"
-seta hud_panel_healtharmor_baralign "0"
-seta hud_panel_healtharmor_progressbar "0"
-
-seta hud_panel_notify 0
-seta hud_panel_notify_pos "0 0.650000"
-seta hud_panel_notify_size "0.300000 0.070000"
-seta hud_panel_notify_bg ""
-seta hud_panel_notify_bg_color ""
-seta hud_panel_notify_bg_color_team ""
-seta hud_panel_notify_bg_alpha "0"
-seta hud_panel_notify_bg_border ""
-seta hud_panel_notify_bg_padding ""
-seta hud_panel_notify_flip "0"
-seta hud_panel_notify_print "0"
-
-seta hud_panel_timer 1
-seta hud_panel_timer_pos "0.860000 0"
-seta hud_panel_timer_size "0.140000 0.045528"
-seta hud_panel_timer_bg "border"
-seta hud_panel_timer_bg_color "0 0.5 0.35"
-seta hud_panel_timer_bg_color_team ""
-seta hud_panel_timer_bg_alpha "0.800000"
-seta hud_panel_timer_bg_border ""
-seta hud_panel_timer_bg_padding "0"
-
-seta hud_panel_radar 2
-seta hud_panel_radar_pos "0.800000 0"
-seta hud_panel_radar_size "0.200000 0.260000"
-seta hud_panel_radar_bg "border_radar"
-seta hud_panel_radar_bg_color ""
-seta hud_panel_radar_bg_color_team ""
-seta hud_panel_radar_bg_alpha "0.3"
-seta hud_panel_radar_bg_border ""
-seta hud_panel_radar_bg_padding "-10"
-seta hud_panel_radar_foreground_alpha "0.800000"
-
-seta hud_panel_score 1
-seta hud_panel_score_pos "0.760000 0.920000"
-seta hud_panel_score_size "0.240000 0.080000"
-seta hud_panel_score_bg "0"
-seta hud_panel_score_bg_color ""
-seta hud_panel_score_bg_color_team ""
-seta hud_panel_score_bg_alpha ""
-seta hud_panel_score_bg_border ""
-seta hud_panel_score_bg_padding ""
-
-seta hud_panel_racetimer 1
-seta hud_panel_racetimer_pos "0.360000 0.140000"
-seta hud_panel_racetimer_size "0.280000 0.093333"
-seta hud_panel_racetimer_bg ""
-seta hud_panel_racetimer_bg_color ""
-seta hud_panel_racetimer_bg_color_team ""
-seta hud_panel_racetimer_bg_alpha "0"
-seta hud_panel_racetimer_bg_border ""
-seta hud_panel_racetimer_bg_padding ""
-
-seta hud_panel_vote 1
-seta hud_panel_vote_pos "0.690000 0.750000"
-seta hud_panel_vote_size "0.300000 0.100000"
-seta hud_panel_vote_bg ""
-seta hud_panel_vote_bg_color "0 0.5 0.35"
-seta hud_panel_vote_bg_color_team ""
-seta hud_panel_vote_bg_alpha "0.800000"
-seta hud_panel_vote_bg_border ""
-seta hud_panel_vote_bg_padding "-3"
-seta hud_panel_vote_alreadyvoted_alpha "0.750000"
-
-seta hud_panel_modicons 1
-seta hud_panel_modicons_pos "0.010000 0.910000"
-seta hud_panel_modicons_size "0.135000 0.090000"
-seta hud_panel_modicons_bg ""
-seta hud_panel_modicons_bg_color ""
-seta hud_panel_modicons_bg_color_team ""
-seta hud_panel_modicons_bg_alpha ""
-seta hud_panel_modicons_bg_border ""
-seta hud_panel_modicons_bg_padding ""
-
-seta hud_panel_pressedkeys 1
-seta hud_panel_pressedkeys_pos "0.440000 0.740000"
-seta hud_panel_pressedkeys_size "0.120000 0.094368"
-seta hud_panel_pressedkeys_bg ""
-seta hud_panel_pressedkeys_bg_color ""
-seta hud_panel_pressedkeys_bg_color_team ""
-seta hud_panel_pressedkeys_bg_alpha "0"
-seta hud_panel_pressedkeys_bg_border ""
-seta hud_panel_pressedkeys_bg_padding ""
-seta hud_panel_pressedkeys_aspect "1.600000"
-
-seta hud_panel_chat 1
-seta hud_panel_chat_pos "0 0.760000"
-seta hud_panel_chat_size "0.420000 0.130000"
-seta hud_panel_chat_bg ""
-seta hud_panel_chat_bg_color ""
-seta hud_panel_chat_bg_color_team ""
-seta hud_panel_chat_bg_alpha "0"
-seta hud_panel_chat_bg_border ""
-seta hud_panel_chat_bg_padding ""
-
-seta hud_panel_engineinfo 1
-seta hud_panel_engineinfo_pos "0.887500 0.870000"
-seta hud_panel_engineinfo_size "0.112500 0.030000"
-seta hud_panel_engineinfo_bg ""
-seta hud_panel_engineinfo_bg_color ""
-seta hud_panel_engineinfo_bg_color_team ""
-seta hud_panel_engineinfo_bg_alpha "0"
-seta hud_panel_engineinfo_bg_border ""
-seta hud_panel_engineinfo_bg_padding ""
-
-seta hud_panel_infomessages 1
-seta hud_panel_infomessages_pos "0.700000 0.620000"
-seta hud_panel_infomessages_size "0.300000 0.090000"
-seta hud_panel_infomessages_bg ""
-seta hud_panel_infomessages_bg_color ""
-seta hud_panel_infomessages_bg_color_team ""
-seta hud_panel_infomessages_bg_alpha "0"
-seta hud_panel_infomessages_bg_border ""
-seta hud_panel_infomessages_bg_padding ""
-
-menu_restart
index ebeeb39ab65fed00bc14ad886429e54d473fed35..e67832dcb74a97c64ab3562a166b0475a591c37f 100644 (file)
@@ -9,7 +9,10 @@ sv_accelerate 15
 sv_airaccelerate 2
 sv_friction 8
 edgefriction 1
-sv_stepheight 34
+sv_stepheight 26
+// Q1: 16+2
+// Nex: 32+2
+// we try: 24+2
 
 // actually, what we want is 266.6666 for 180bpm
 // but 260 takes same amount of frames and is nicer to mappers
index d1a76320f429527c6f454d7709d470dab357d6e8..2fc1ce308bee3c0d7fd49907249f8dbd25dc205b 100644 (file)
@@ -1278,6 +1278,7 @@ void Net_WeaponComplain() {
        complain_weapon_type = ReadByte();
 
        complain_weapon_time = time;
+       weapontime = time; // ping the weapon panel
 }
 
 // CSQC_Parse_TempEntity : Handles all temporary entity network data in the CSQC layer.
index d3a5ea6a2d87db4e3905d7a3090dcbfd75548471..2059527cdbe55425ecd09bc09db83af3522cc2e8 100644 (file)
@@ -79,11 +79,11 @@ void Porto_Draw()
                        p = p - view_up * 16;
                if(idx-1 >= portal1_idx)
                {
-                       Draw_CylindricLine(p, q, 4, "", 1, 0, '0 0 1', 0.5, DRAWFLAG_NORMAL);
+                       Draw_CylindricLine(p, q, 4, "", 1, 0, '0 0 1', 0.5, DRAWFLAG_NORMAL, view_origin);
                }
                else
                {
-                       Draw_CylindricLine(p, q, 4, "", 1, 0, '1 0 0', 0.5, DRAWFLAG_NORMAL);
+                       Draw_CylindricLine(p, q, 4, "", 1, 0, '1 0 0', 0.5, DRAWFLAG_NORMAL, view_origin);
                }
                --idx;
        }
@@ -623,11 +623,6 @@ void CSQC_UpdateView(float w, float h)
                        self.draw2d();
        self = e;
 
-       // draw hud
-       if(cvar("r_letterbox") == 0) {
-               HUD_DrawCenterPrint(); // draw centerprint messages even if viewsize >= 120
-       }
-
        float hud;
        hud = getstati(STAT_HUD);
        if(hud == HUD_SPIDERBOT)
@@ -645,7 +640,7 @@ void CSQC_UpdateView(float w, float h)
                                CSQC_common_hud();
 
                // crosshair goes VERY LAST
-               if(!scoreboard_active && !camera_active) {
+               if(!scoreboard_active && !camera_active && intermission != 2) {
                        // TrueAim check
                        float shottype;
                        float bullets, ring_scale;
@@ -1204,23 +1199,29 @@ void CSQC_common_hud(void)
                                        acc_lev[i] = stof(argv(i));
                        }
 
-                       // hud first
-                       HUD_Main();
+                       HUD_Main(); // always run these functions for alpha checks
+                       HUD_DrawScoreboard();
 
-                       // scoreboard/accuracy
-                       if (intermission == 2 && !scoreboard_showaccuracy && !scoreboard_showscores) // map voting screen
+                       if (scoreboard_showscores || scoreboard_showscores_force || getstati(STAT_HEALTH) <= 0 || intermission == 1) // scoreboard/accuracy
+                       {       
+                               HUD_Reset();
+                               // HUD_DrawScoreboard takes care of centerprint_start
+                       }
+                       else if (intermission == 2) // map voting screen
                        {
                                HUD_FinaleOverlay();
                                HUD_Reset();
-                       }
-                       else if(scoreboard_showaccuracy && spectatee_status != -1)
-                               HUD_DrawAccuracyStats();
-                       else
-                               HUD_DrawScoreboard();
 
-                       if (scoreboard_showscores || scoreboard_showaccuracy || scoreboard_showscores_force || getstati(STAT_HEALTH) <= 0 || intermission == 1)
-                               HUD_Reset();
+                               centerprint_start_x = 0;
+                               centerprint_start_y = cvar("scr_centerpos") * vid_conheight;
+                       }
+                       else // hud
+                       {
+                               centerprint_start_x = 0;
+                               centerprint_start_y = cvar("scr_centerpos") * vid_conheight;
+                       }
 
+                       HUD_DrawCenterPrint();
                        break;
 
                case HUD_SPIDERBOT:
index bbee6580097170d884b1fcd1f7b183996a0cfba2..2e946fc830d1228515c89ef4110d6417a134396a 100644 (file)
@@ -10,8 +10,8 @@ void SUB_Remove()
 
 void b_draw()
 {
-    //Draw_CylindricLine(self.fx_start, self.fx_end, self.fx_with, self.fx_texture, 0, time * 3, '1 1 1', 0.7, DRAWFLAG_ADDITIVE);
-    Draw_CylindricLine(self.fx_start, self.fx_end, self.fx_with, self.fx_texture, (self.fx_with/256), 0, '1 1 1', 1, DRAWFLAG_ADDITIVE);
+    //Draw_CylindricLine(self.fx_start, self.fx_end, self.fx_with, self.fx_texture, 0, time * 3, '1 1 1', 0.7, DRAWFLAG_ADDITIVE, view_origin);
+    Draw_CylindricLine(self.fx_start, self.fx_end, self.fx_with, self.fx_texture, (self.fx_with/256), 0, '1 1 1', 1, DRAWFLAG_ADDITIVE, view_origin);
 
 }
 void b_make(vector s,vector e, string t,float l,float z)
index b769947eeb9439e02e6618ef20dbdc4338e0b168..06858d597aa917a126e1e46cc50354458973afa0 100644 (file)
@@ -5,7 +5,7 @@
 .float HookSilent;
 .float HookRange;
 
-void Draw_CylindricLine(vector from, vector to, float thickness, string texture, float aspect, float shift, vector rgb, float alpha, float drawflag)
+void Draw_CylindricLine(vector from, vector to, float thickness, string texture, float aspect, float shift, vector rgb, float alpha, float drawflag, vector vieworg)
 {
        // I want to draw a quad...
        // from and to are MIDPOINTS.
@@ -17,7 +17,7 @@ void Draw_CylindricLine(vector from, vector to, float thickness, string texture,
        length_tex = aspect * vlen(to - from) / thickness;
 
        // direction is perpendicular to the view normal, and perpendicular to the axis
-       thickdir = normalize(cross(axis, view_origin - from));
+       thickdir = normalize(cross(axis, vieworg - from));
 
 /*
        print("from ", vtos(from), "\n");
@@ -46,8 +46,10 @@ float Draw_GrapplingHook_trace_callback_a;
 void Draw_GrapplingHook_trace_callback(vector start, vector hit, vector end)
 {
        float i;
+       vector vorg;
+       vorg = WarpZone_TransformOrigin(WarpZone_trace_transform, view_origin);
        for(i = 0; i < Draw_GrapplingHook_trace_callback_a; ++i)
-               Draw_CylindricLine(hit, start, 8, Draw_GrapplingHook_trace_callback_tex, 0.25, Draw_GrapplingHook_trace_callback_rnd, Draw_GrapplingHook_trace_callback_rgb, min(1, Draw_GrapplingHook_trace_callback_a - i), DRAWFLAG_NORMAL);
+               Draw_CylindricLine(hit, start, 8, Draw_GrapplingHook_trace_callback_tex, 0.25, Draw_GrapplingHook_trace_callback_rnd, Draw_GrapplingHook_trace_callback_rgb, min(1, Draw_GrapplingHook_trace_callback_a - i), DRAWFLAG_NORMAL, vorg);
        Draw_GrapplingHook_trace_callback_rnd += 0.25 * vlen(hit - start) / 8;
 }
 
index f2b900fa978bc7370b8e84c6da6ceed64243f4d8..563de31a15f7726c1c341ad87701aa1cbd75393e 100644 (file)
@@ -131,7 +131,7 @@ float stringwidth_nocolors(string s, vector theSize)
 #define CENTERPRINT_MAX_LINES 30
 string centerprint_messages[CENTERPRINT_MAX_LINES];
 float centerprint_width[CENTERPRINT_MAX_LINES];
-vector centerprint_start;
+float centerprint_time;
 float centerprint_expire;
 float centerprint_num;
 float centerprint_offset_hint;
@@ -182,6 +182,8 @@ void centerprint(string strMessage)
                while(getWrappedLine_remaining)
                {
                        s = getWrappedLine(vid_conwidth * 0.75, centerprint_fontsize, stringwidth_colors);
+                       if(centerprint_messages[i] != s) // don't fade the same message in, looks stupid
+                               centerprint_time = time;
                        if(centerprint_messages[i])
                                strunzone(centerprint_messages[i]);
                        centerprint_messages[i] = strzone(s);
@@ -208,8 +210,6 @@ void centerprint(string strMessage)
        if(havail > vid_conheight - 70)
                havail = vid_conheight - 70; // avoid overlapping HUD
 
-       centerprint_start_x = 0;
-
 #if 0
        float forbiddenmin, forbiddenmax, allowedmin, allowedmax, preferred;
 
@@ -260,17 +260,10 @@ void centerprint(string strMessage)
                centerprint_start_y = bound(forbiddenmax, preferred, allowedmax);
        }
 #else
-       centerprint_start_y =
-               min(
-                       max(
-                               max(scoreboard_bottom, vid_conheight * 0.5 + 16),
-                               (havail - h)/2
-                       ),
-                       havail - h
-               );
 #endif
 
        centerprint_num = i;
+
        centerprint_expire = time + cvar("scr_centertime");
 }
 
@@ -279,32 +272,39 @@ void HUD_DrawCenterPrint (void)
        float i;
        vector pos;
        string ts;
-       float a;
-
-       //if(time > centerprint_expire)
-       //      return;
+       float a, sz;
 
-       //a = bound(0, 1 - 2 * (time - centerprint_expire), 1);
-       a = bound(0, 1 - 4 * (time - centerprint_expire), 1);
-       //sz = 1.2 / (a + 0.2);
+       if(time - centerprint_time < 0.25)
+               a = (time - centerprint_time) / 0.25;
+       else
+               a = bound(0, 1 - 4 * (time - centerprint_expire), 1);
 
        if(a <= 0)
                return;
 
+       sz = 0.8 + (a / 5);
+
+       if(centerprint_num * cvar("scr_centersize") > 24 && HUD_WouldDrawScoreboard()) // 24 = height of Scoreboard text
+       {
+               centerprint_start_y = scoreboard_bottom + centerprint_fontsize_y;
+       }
        pos = centerprint_start;
        for (i=0; i<centerprint_num; i = i + 1)
        {
-               pos_x = (vid_conwidth - centerprint_width[i]) * 0.5;
                ts = centerprint_messages[i];
+               drawfontscale = sz * '1 1 0';
+               drawfont = hud_bigfont;
+               pos_x = (vid_conwidth - stringwidth(ts, TRUE, centerprint_fontsize)) * 0.5;
                if (ts != "")
                {
-                       drawcolorcodedstring(pos, ts, centerprint_fontsize, a, DRAWFLAG_NORMAL);
-                       //  - '0 0.5 0' * (sz - 1) * centerprint_fontsize_x - '0.5 0 0' * (sz - 1) * centerprint_width[i] * centerprint_fontsize_y, centerprint_fontsize * sz
+                       drawcolorcodedstring(pos + '0 1 0' * (1 - sz) * 0.5 *centerprint_fontsize_y, ts, centerprint_fontsize, a, DRAWFLAG_NORMAL);
                        pos_y = pos_y + centerprint_fontsize_y;
                }
                else
                        // half height for empty lines looks better
-                       pos_y = pos_y + centerprint_fontsize_y * 0.5;
+                       pos_y = pos_y + sz * centerprint_fontsize_y * 0.5;
+               drawfontscale = '1 1 0';
+               drawfont = hud_font;
        }
 }
 
@@ -453,6 +453,9 @@ void HUD_Panel_ExportCfg(string cfgname)
                fputs(fh, strcat("seta hud_configure_grid_ysize \"", cvar_string("hud_configure_grid_ysize"), "\"", "\n"));
                fputs(fh, "\n");
 
+               fputs(fh, strcat("seta scr_centerpos \"", cvar_string("scr_centerpos"), "\"", "\n"));
+               fputs(fh, "\n");
+
                // common cvars for all panels
                float i;
                for (i = 0; i < HUD_PANEL_NUM; ++i)
@@ -508,6 +511,9 @@ void HUD_Panel_ExportCfg(string cfgname)
                                case HUD_PANEL_PRESSEDKEYS:
                                        fputs(fh, strcat("seta hud_panel_", panel_name, "_aspect \"", cvar_string(strcat("hud_panel_", panel_name, "_aspect")), "\"", "\n"));
                                        break;
+                               case HUD_PANEL_INFOMESSAGES:
+                                       fputs(fh, strcat("seta hud_panel_", panel_name, "_flip \"", cvar_string(strcat("hud_panel_", panel_name, "_flip")), "\"", "\n"));
+                                       break;
                        }
                        fputs(fh, "\n");
                }
@@ -940,6 +946,10 @@ void HUD_Panel_Arrow_Action(float nPrimary)
 
        HUD_Panel_UpdatePosSizeForId(highlightedPanel)
 
+       vector prev_pos, prev_size;
+       prev_pos = panel_pos;
+       prev_size = panel_size;
+
        if (hudShiftState & S_ALT) // resize
        {
                highlightedAction = 1;
@@ -993,6 +1003,16 @@ void HUD_Panel_Arrow_Action(float nPrimary)
 
                HUD_Panel_SetPos(pos);
        }
+
+       HUD_Panel_UpdatePosSizeForId(highlightedPanel)
+
+       if (prev_pos != panel_pos || prev_size != panel_size)
+       {
+               // backup!
+               panel_pos_backup = prev_pos;
+               panel_size_backup = prev_size;
+               highlightedPanel_backup = highlightedPanel;
+       }
 }
 
 float HUD_Panel_InputEvent(float bInputType, float nPrimary, float nSecondary)
@@ -1044,6 +1064,66 @@ float HUD_Panel_InputEvent(float bInputType, float nPrimary, float nSecondary)
                menu_enabled_time = time;
                localcmd("menu_showhudexit\n");
        }
+       else if(hudShiftState & S_CTRL)
+       {
+               if (mouseClicked)
+                       return true;
+
+               if(nPrimary == K_SPACE) // enable/disable highlighted panel or dock
+               {
+                       if (bInputType == 1)
+                               return true;
+
+                       if (highlightedPanel_prev != -1)
+                               cvar_set(strcat("hud_panel_", panel_name), ftos(!(panel_enabled)));
+                       else
+                               cvar_set(strcat("hud_dock"), (autocvar_hud_dock == "") ? "dock" : "");
+               }
+               if(nPrimary == 'c') // copy highlighted panel size
+               {
+                       if (bInputType == 1)
+                               return true;
+
+                       if (highlightedPanel_prev != -1)
+                       {
+                               panel_size_copied = panel_size;
+                               highlightedPanel_copied = highlightedPanel_prev;
+                       }
+               }
+               else if(nPrimary == 'v') // past copied size on the highlighted panel
+               {
+                       if (bInputType == 1)
+                               return true;
+
+                       if (highlightedPanel_copied != -1 && highlightedPanel_prev != -1)
+                       {
+                               // backup first!
+                               panel_pos_backup = panel_pos;
+                               panel_size_backup = panel_size;
+                               highlightedPanel_backup = highlightedPanel_prev;
+
+                               string s;
+                               s = strcat(ftos(panel_size_copied_x/vid_conwidth), " ", ftos(panel_size_copied_y/vid_conheight));
+                               cvar_set(strcat("hud_panel_", panel_name, "_size"), s);
+                       }
+               }
+               else if(nPrimary == 'z') // undo last action
+               {
+                       if (bInputType == 1)
+                               return true;
+                       //restore previous values
+                       if (highlightedPanel_backup != -1)
+                       {
+                               HUD_Panel_GetName(highlightedPanel_backup)
+                               string s;
+                               s = strcat(ftos(panel_pos_backup_x/vid_conwidth), " ", ftos(panel_pos_backup_y/vid_conheight));
+                               cvar_set(strcat("hud_panel_", panel_name, "_pos"), s);
+                               s = strcat(ftos(panel_size_backup_x/vid_conwidth), " ", ftos(panel_size_backup_y/vid_conheight));
+                               cvar_set(strcat("hud_panel_", panel_name, "_size"), s);
+                               highlightedPanel_backup = -1;
+                       }
+               }
+       }
        else if(nPrimary == K_UPARROW || nPrimary == K_DOWNARROW || nPrimary == K_LEFTARROW || nPrimary == K_RIGHTARROW)
        {
                if (bInputType == 1)
@@ -1226,6 +1306,7 @@ void HUD_Panel_Highlight()
 }
 
 float highlightcheck;
+float would_backup;
 void HUD_Panel_Mouse()
 {
        // TODO: needs better check... is there any float that contains the current state of the menu? _menu_alpha isn't apparently updated the frame the menu gets enabled
@@ -1254,8 +1335,20 @@ void HUD_Panel_Mouse()
 
        if(mouseClicked)
        {
+               vector prev_pos, prev_size;
                if(prevMouseClicked == 0)
+               {
                        HUD_Panel_Highlight(); // sets highlightedPanel, highlightedAction, panel_click_distance, panel_click_resizeorigin
+                                                                       // and calls HUD_Panel_UpdatePosSizeForId() for the highlighted panel
+                       would_backup = TRUE;
+               }
+               else if (would_backup)
+               {
+                       // this is not the actual backup! Saving pos and size values
+                       // only to check later if they are different from new values
+                       prev_pos = panel_pos;
+                       prev_size = panel_size;
+               }
 
                hud_configure_checkcollisions = (!(hudShiftState & S_CTRL) && autocvar_hud_configure_checkcollisions);
 
@@ -1280,6 +1373,18 @@ void HUD_Panel_Mouse()
                        HUD_Panel_SetPosSize(mySize);
                }
 
+               HUD_Panel_UpdatePosSizeForId(highlightedPanel)
+               if (prevMouseClicked)
+               if (would_backup)
+               if (prev_pos != panel_pos || prev_size != panel_size)
+               {
+                       // backup!
+                       panel_pos_backup = prev_pos;
+                       panel_size_backup = prev_size;
+                       highlightedPanel_backup = highlightedPanel;
+                       would_backup = FALSE;
+               }
+
                // doubleclick check
                if(time - prevMouseClickedTime < 0.4 && prevMouseClicked == 0 && prevMouseClickedPos == mousepos && highlightedPanel >= 0)
                {
@@ -1385,14 +1490,94 @@ void HUD_Weapons(void)
        if(!autocvar_hud_panel_weapons && !autocvar__hud_configure)
                return;
 
+       float timeout = cvar("hud_panel_weapons_timeout");
+       float timeout_effect_length, timein_effect_length;
+       if (cvar("hud_panel_weapons_timeout_effect") == 0)
+       {
+               timeout_effect_length = 0;
+               timein_effect_length = 0;
+       }
+       else
+       {
+               timeout_effect_length = 0.75;
+               timein_effect_length = 0.375;
+       }
+
+       if (timeout && time >= weapontime + timeout + timeout_effect_length && !autocvar__hud_configure)
+       {
+               weaponprevtime = time;
+               return;
+       }
+
        active_panel = HUD_PANEL_WEAPONS;
        HUD_Panel_UpdateCvars(weapons);
-       vector pos, mySize;
-       float i, weapid, fade, weapon_stats, weapon_number, weapon_cnt;
 
-       pos = panel_pos;
-       mySize = panel_size;
+       if (timeout && time >= weapontime + timeout && !autocvar__hud_configure)
+       {
+               float f = (time - (weapontime + timeout)) / timeout_effect_length;
+               if (cvar("hud_panel_weapons_timeout_effect"))
+               {
+                       panel_bg_alpha *= (1 - f);
+                       panel_fg_alpha *= (1 - f);
+               }
+               if (cvar("hud_panel_weapons_timeout_effect") == 1)
+               {
+                       f *= f; // for a cooler movement
+                       vector center;
+                       center_x = panel_pos_x + panel_size_x/2;
+                       center_y = panel_pos_y + panel_size_y/2;
+                       float screen_ar = vid_conwidth/vid_conheight;
+                       if (center_x/center_y < screen_ar) //bottom left
+                       {
+                               if ((vid_conwidth - center_x)/center_y < screen_ar) //bottom
+                                       panel_pos_y += f * (vid_conheight - panel_pos_y);
+                               else //left
+                                       panel_pos_x -= f * (panel_pos_x + panel_size_x);
+                       }
+                       else //top right
+                       {
+                               if ((vid_conwidth - center_x)/center_y < screen_ar) //right
+                                       panel_pos_x += f * (vid_conwidth - panel_pos_x);
+                               else //top
+                                       panel_pos_y -= f * (panel_pos_y + panel_size_y);
+                       }
+               }
+               weaponprevtime = time - (1 - f) * timein_effect_length;
+       }
+       else if (timeout && time < weaponprevtime + timein_effect_length && !autocvar__hud_configure)
+       {
+               float f = (time - weaponprevtime) / timein_effect_length;
+               if (cvar("hud_panel_weapons_timeout_effect"))
+               {
+                       panel_bg_alpha *= (f);
+                       panel_fg_alpha *= (f);
+               }
+               if (cvar("hud_panel_weapons_timeout_effect") == 1)
+               {
+                       f *= f; // for a cooler movement
+                       f = 1 - f;
+                       vector center;
+                       center_x = panel_pos_x + panel_size_x/2;
+                       center_y = panel_pos_y + panel_size_y/2;
+                       float screen_ar = vid_conwidth/vid_conheight;
+                       if (center_x/center_y < screen_ar) //bottom left
+                       {
+                               if ((vid_conwidth - center_x)/center_y < screen_ar) //bottom
+                                       panel_pos_y += f * (vid_conheight - panel_pos_y);
+                               else //left
+                                       panel_pos_x -= f * (panel_pos_x + panel_size_x);
+                       }
+                       else //top right
+                       {
+                               if ((vid_conwidth - center_x)/center_y < screen_ar) //right
+                                       panel_pos_x += f * (vid_conwidth - panel_pos_x);
+                               else //top
+                                       panel_pos_y -= f * (panel_pos_y + panel_size_y);
+                       }
+               }
+       }
 
+       float i, weapid, fade, weapon_stats, weapon_number, weapon_cnt;
        weapon_cnt = 0;
        for(i = WEP_FIRST; i <= WEP_LAST; ++i)
        {
@@ -1422,305 +1607,305 @@ void HUD_Weapons(void)
                heapsort(weapon_cnt, weaponorder_swap, weaponorder_cmp, world);
        }
 
-       HUD_Panel_DrawBg(1);
-       if(panel_bg_padding)
-       {
-               pos += '1 1 0' * panel_bg_padding;
-               mySize -= '2 2 0' * panel_bg_padding;
-       }
+               HUD_Panel_DrawBg(1);
+               if(panel_bg_padding)
+               {
+                       panel_pos += '1 1 0' * panel_bg_padding;
+                       panel_size -= '2 2 0' * panel_bg_padding;
+               }
 
-       // hits
-       weapon_stats = getstati(STAT_DAMAGE_HITS);
-       weapon_number = weapon_stats & 63;
-       weapon_hits[weapon_number-WEP_FIRST] = floor(weapon_stats / 64);
-       // fired
-       weapon_stats = getstati(STAT_DAMAGE_FIRED);
-       weapon_number = weapon_stats & 63;
-       weapon_fired[weapon_number-WEP_FIRST] = floor(weapon_stats / 64);
+               // hits
+               weapon_stats = getstati(STAT_DAMAGE_HITS);
+               weapon_number = weapon_stats & 63;
+               weapon_hits[weapon_number-WEP_FIRST] = floor(weapon_stats / 64);
+               // fired
+               weapon_stats = getstati(STAT_DAMAGE_FIRED);
+               weapon_number = weapon_stats & 63;
+               weapon_fired[weapon_number-WEP_FIRST] = floor(weapon_stats / 64);
 
-       if(cvar_or("hud_panel_weapons_fade", 1))
-       {
-               fade = 3.2 - 2 * (time - weapontime);
-               fade = bound(0.7, fade, 1);
-       }
-       else
-               fade = 1;
+               if(cvar_or("hud_panel_weapons_fade", 1))
+               {
+                       fade = 3.2 - 2 * (time - weapontime);
+                       fade = bound(0.7, fade, 1);
+               }
+               else
+                       fade = 1;
 
-       HUD_Weapons_Clear();
+               HUD_Weapons_Clear();
 
-       float rows, columns;
-       rows = mySize_y/mySize_x;
-       rows = bound(1, floor((sqrt(4 * autocvar_hud_panel_weapons_aspect * rows * WEP_COUNT + rows * rows) + rows + 0.5) / 2), WEP_COUNT);
+               float rows, columns;
+               rows = panel_size_y/panel_size_x;
+               rows = bound(1, floor((sqrt(4 * autocvar_hud_panel_weapons_aspect * rows * WEP_COUNT + rows * rows) + rows + 0.5) / 2), WEP_COUNT);
 
-       columns = ceil(WEP_COUNT/rows);
-       float row, column;
+               columns = ceil(WEP_COUNT/rows);
+               float row, column;
 
-       float a, type, fullammo;
-       float when;
-       when = autocvar_hud_panel_weapons_complainbubble_time;
-       float fadetime;
-       fadetime = autocvar_hud_panel_weapons_complainbubble_fadetime;
+               float a, type, fullammo;
+               float when;
+               when = autocvar_hud_panel_weapons_complainbubble_time;
+               float fadetime;
+               fadetime = autocvar_hud_panel_weapons_complainbubble_fadetime;
 
-       vector color;
-       vector wpnpos;
-       vector wpnsize;
+               vector color;
+               vector wpnpos;
+               vector wpnsize;
 
-       for(i = 0; i < weapon_cnt; ++i)
-       {
-               wpnpos = pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows);
-               wpnsize = eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows);
+               for(i = 0; i < weapon_cnt; ++i)
+               {
+                       wpnpos = panel_pos + eX * column * panel_size_x*(1/columns) + eY * row * panel_size_y*(1/rows);
+                       wpnsize = eX * panel_size_x*(1/columns) + eY * panel_size_y*(1/rows);
 
-               self = weaponorder[i];
-               weapid = self.impulse;
+                       self = weaponorder[i];
+                       weapid = self.impulse;
 
-               // draw background behind currently selected weapon
-               if(self.weapon == activeweapon)
-                       drawpic_aspect_skin(wpnpos, "weapon_current_bg", wpnsize, '1 1 1', fade * panel_fg_alpha, DRAWFLAG_NORMAL);
+                       // draw background behind currently selected weapon
+                       if(self.weapon == activeweapon)
+                               drawpic_aspect_skin(wpnpos, "weapon_current_bg", wpnsize, '1 1 1', fade * panel_fg_alpha, DRAWFLAG_NORMAL);
 
-               // draw the weapon accuracy
-               if(acc_levels)
-               {
-                       float weapon_hit, weapon_damage;
-                       weapon_damage = weapon_fired[self.weapon-WEP_FIRST];
-                       if(weapon_damage)
+                       // draw the weapon accuracy
+                       if(acc_levels)
                        {
-                               weapon_hit = weapon_hits[self.weapon-WEP_FIRST];
-                               weapon_stats = floor(100 * weapon_hit / weapon_damage);
-                       }
-
-                       // find the max level lower than weapon_stats
-                       float j;
-                       j = acc_levels-1;
-                       while ( j && weapon_stats < acc_lev[j] )
-                               --j;
-
-                       // inject color j+1 in color j, how much depending on how much weapon_stats is higher than level j
-                       float factor;
-                       factor = (weapon_stats - acc_lev[j]) / (acc_lev[j+1] - acc_lev[j]);
-                       color = acc_color(j);
-                       color = color + factor * (acc_color(j+1) - color);
+                               float weapon_hit, weapon_damage;
+                               weapon_damage = weapon_fired[self.weapon-WEP_FIRST];
+                               if(weapon_damage)
+                               {
+                                       weapon_hit = weapon_hits[self.weapon-WEP_FIRST];
+                                       weapon_stats = floor(100 * weapon_hit / weapon_damage);
+                               }
 
-                       if(weapon_damage)
-                               drawpic_aspect_skin(wpnpos, "weapon_accuracy", wpnsize, color, panel_fg_alpha, DRAWFLAG_NORMAL);
-               }
+                               // find the max level lower than weapon_stats
+                               float j;
+                               j = acc_levels-1;
+                               while ( j && weapon_stats < acc_lev[j] )
+                                       --j;
 
-               // draw the weapon icon
-               if((self.impulse >= 0) && (getstati(STAT_WEAPONS) & self.weapons))
-               {
-                       drawpic_aspect_skin(wpnpos, strcat("weapon", self.netname), wpnsize, '1 1 1', fade * panel_fg_alpha, DRAWFLAG_NORMAL);
+                               // inject color j+1 in color j, how much depending on how much weapon_stats is higher than level j
+                               float factor;
+                               factor = (weapon_stats - acc_lev[j]) / (acc_lev[j+1] - acc_lev[j]);
+                               color = acc_color(j);
+                               color = color + factor * (acc_color(j+1) - color);
 
-                       if(autocvar_hud_panel_weapons_label == 1) // weapon number
-                               drawstring(wpnpos, ftos(weapid), '1 1 0' * 0.5 * mySize_y*(1/rows), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
-                       else if(autocvar_hud_panel_weapons_label == 2) // bind
-                               drawstring(wpnpos, getcommandkey(ftos(weapid), strcat("impulse ", ftos(weapid))), '1 1 0' * 0.5 * mySize_y*(1/rows), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+                               if(weapon_damage)
+                                       drawpic_aspect_skin(wpnpos, "weapon_accuracy", wpnsize, color, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       }
 
-                       // draw ammo status bar
-                       if(autocvar_hud_panel_weapons_ammo && weapid != WEP_TUBA && weapid != WEP_LASER && weapid != WEP_PORTO)
+                       // draw the weapon icon
+                       if((self.impulse >= 0) && (getstati(STAT_WEAPONS) & self.weapons))
                        {
-                               a = 0;
-                               type = GetAmmoTypeForWep(weapid);
-                               if(type != -1)
-                                       a = getstati(GetAmmoStat(type)); // how much ammo do we have?
+                               drawpic_aspect_skin(wpnpos, strcat("weapon", self.netname), wpnsize, '1 1 1', fade * panel_fg_alpha, DRAWFLAG_NORMAL);
 
-                               if(a > 0)
-                               {
-                                       switch(type) {
-                                               case 0: fullammo = autocvar_hud_panel_weapons_ammo_full_shells; break;
-                                               case 1: fullammo = autocvar_hud_panel_weapons_ammo_full_nails; break;
-                                               case 2: fullammo = autocvar_hud_panel_weapons_ammo_full_rockets; break;
-                                               case 3: fullammo = autocvar_hud_panel_weapons_ammo_full_cells; break;
-                                               case 4: fullammo = autocvar_hud_panel_weapons_ammo_full_fuel; break;
-                                               default: fullammo = 60;
-                                       }
+                               if(autocvar_hud_panel_weapons_label == 1) // weapon number
+                                       drawstring(wpnpos, ftos(weapid), '1 1 0' * 0.5 * panel_size_y*(1/rows), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+                               else if(autocvar_hud_panel_weapons_label == 2) // bind
+                                       drawstring(wpnpos, getcommandkey(ftos(weapid), strcat("impulse ", ftos(weapid))), '1 1 0' * 0.5 * panel_size_y*(1/rows), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
 
-                                       vector barsize;
-                                       vector barpos;
-                                       if(wpnsize_x/wpnsize_y > autocvar_hud_panel_weapons_aspect)
-                                       {
-                                               barsize_x = autocvar_hud_panel_weapons_aspect * wpnsize_y;
-                                               barsize_y = wpnsize_y;
+                               // draw ammo status bar
+                               if(autocvar_hud_panel_weapons_ammo && weapid != WEP_TUBA && weapid != WEP_LASER && weapid != WEP_PORTO)
+                               {
+                                       a = 0;
+                                       type = GetAmmoTypeForWep(weapid);
+                                       if(type != -1)
+                                               a = getstati(GetAmmoStat(type)); // how much ammo do we have?
 
-                                               barpos_x = wpnpos_x + (wpnsize_x - barsize_x) / 2;
-                                               barpos_y = wpnpos_y;
-                                       }
-                                       else
+                                       if(a > 0)
                                        {
-                                               barsize_y = 1/autocvar_hud_panel_weapons_aspect * wpnsize_x;
-                                               barsize_x = wpnsize_x;
-
-                                               barpos_y = wpnpos_y + (wpnsize_y - barsize_y) / 2;
-                                               barpos_x = wpnpos_x;
+                                               switch(type) {
+                                                       case 0: fullammo = autocvar_hud_panel_weapons_ammo_full_shells; break;
+                                                       case 1: fullammo = autocvar_hud_panel_weapons_ammo_full_nails; break;
+                                                       case 2: fullammo = autocvar_hud_panel_weapons_ammo_full_rockets; break;
+                                                       case 3: fullammo = autocvar_hud_panel_weapons_ammo_full_cells; break;
+                                                       case 4: fullammo = autocvar_hud_panel_weapons_ammo_full_fuel; break;
+                                                       default: fullammo = 60;
+                                               }
+
+                                               vector barsize;
+                                               vector barpos;
+                                               if(wpnsize_x/wpnsize_y > autocvar_hud_panel_weapons_aspect)
+                                               {
+                                                       barsize_x = autocvar_hud_panel_weapons_aspect * wpnsize_y;
+                                                       barsize_y = wpnsize_y;
+
+                                                       barpos_x = wpnpos_x + (wpnsize_x - barsize_x) / 2;
+                                                       barpos_y = wpnpos_y;
+                                               }
+                                               else
+                                               {
+                                                       barsize_y = 1/autocvar_hud_panel_weapons_aspect * wpnsize_x;
+                                                       barsize_x = wpnsize_x;
+
+                                                       barpos_y = wpnpos_y + (wpnsize_y - barsize_y) / 2;
+                                                       barpos_x = wpnpos_x;
+                                               }
+
+                                               drawsetcliparea(
+                                                       barpos_x,
+                                                       barpos_y,
+                                                       barsize_x * bound(0, a/fullammo, 1),
+                                                       barsize_y);
+                                               drawpic_aspect_skin(wpnpos, "weapon_ammo", wpnsize, autocvar_hud_panel_weapons_ammo_color, panel_fg_alpha * autocvar_hud_panel_weapons_ammo_alpha, DRAWFLAG_NORMAL);
+                                               drawresetcliparea();
                                        }
-
-                                       drawsetcliparea(
-                                               barpos_x,
-                                               barpos_y,
-                                               barsize_x * bound(0, a/fullammo, 1),
-                                               barsize_y);
-                                       drawpic_aspect_skin(wpnpos, "weapon_ammo", wpnsize, autocvar_hud_panel_weapons_ammo_color, panel_fg_alpha * autocvar_hud_panel_weapons_ammo_alpha, DRAWFLAG_NORMAL);
-                                       drawresetcliparea();
                                }
                        }
-               }
 
-               // draw a "ghost weapon icon" if you don't have the weapon
-               else
-               {
-                       drawpic_aspect_skin(wpnpos, strcat("weapon", self.netname), wpnsize, '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)
-               {
-                       if(fadetime)
+                       // draw a "ghost weapon icon" if you don't have the weapon
+                       else
                        {
-                               if(complain_weapon_time + when > time)
-                                       a = 1;
-                               else
-                                       a = bound(0, (complain_weapon_time + when + fadetime - time) / fadetime, 1);
+                               drawpic_aspect_skin(wpnpos, strcat("weapon", self.netname), wpnsize, '0 0 0', panel_fg_alpha * 0.5, DRAWFLAG_NORMAL);
                        }
-                       else
+
+                       // draw the complain message
+                       if(time - complain_weapon_time < when + fadetime && self.weapon == complain_weapon && autocvar_hud_panel_weapons_complainbubble)
                        {
-                               if(complain_weapon_time + when > time)
-                                       a = 1;
+                               if(fadetime)
+                               {
+                                       if(complain_weapon_time + when > time)
+                                               a = 1;
+                                       else
+                                               a = bound(0, (complain_weapon_time + when + fadetime - time) / fadetime, 1);
+                               }
                                else
-                                       a = 0;
-                       }
+                               {
+                                       if(complain_weapon_time + when > time)
+                                               a = 1;
+                                       else
+                                               a = 0;
+                               }
 
-                       string s;
-                       if(complain_weapon_type == 0) {
-                               s = "Out of ammo";
-                               color = autocvar_hud_panel_weapons_complainbubble_color_outofammo;
-                       }
-                       else if(complain_weapon_type == 1) {
-                               s = "Don't have";
-                               color = autocvar_hud_panel_weapons_complainbubble_color_donthave;
+                               string s;
+                               if(complain_weapon_type == 0) {
+                                       s = "Out of ammo";
+                                       color = autocvar_hud_panel_weapons_complainbubble_color_outofammo;
+                               }
+                               else if(complain_weapon_type == 1) {
+                                       s = "Don't have";
+                                       color = autocvar_hud_panel_weapons_complainbubble_color_donthave;
+                               }
+                               else {
+                                       s = "Unavailable";
+                                       color = autocvar_hud_panel_weapons_complainbubble_color_unavailable;
+                               }
+                               drawpic_aspect_skin(wpnpos + '1 1 0' * autocvar_hud_panel_weapons_complainbubble_padding, "weapon_complainbubble", wpnsize - '2 2 0' * autocvar_hud_panel_weapons_complainbubble_padding, color, a * panel_fg_alpha, DRAWFLAG_NORMAL);
+                               drawstring_aspect(wpnpos + '1 1 0' * autocvar_hud_panel_weapons_complainbubble_padding, s, wpnsize - '2 2 0' * autocvar_hud_panel_weapons_complainbubble_padding, '1 1 1', panel_fg_alpha * a, DRAWFLAG_NORMAL);
                        }
-                       else {
-                               s = "Unavailable";
-                               color = autocvar_hud_panel_weapons_complainbubble_color_unavailable;
+
+                       ++row;
+                       if(row >= rows)
+                       {
+                               row = 0;
+                               ++column;
                        }
-                       drawpic_aspect_skin(wpnpos + '1 1 0' * autocvar_hud_panel_weapons_complainbubble_padding, "weapon_complainbubble", wpnsize - '2 2 0' * autocvar_hud_panel_weapons_complainbubble_padding, color, a * panel_fg_alpha, DRAWFLAG_NORMAL);
-                       drawstring_aspect(wpnpos + '1 1 0' * autocvar_hud_panel_weapons_complainbubble_padding, s, wpnsize - '2 2 0' * autocvar_hud_panel_weapons_complainbubble_padding, '1 1 1', panel_fg_alpha * a, DRAWFLAG_NORMAL);
                }
 
-               ++row;
-               if(row >= rows)
-               {
-                       row = 0;
-                       ++column;
-               }
        }
 
-}
-
-// Ammo (#1)
-//
-// TODO: macro
-float GetAmmoItemCode(float i)
-{
-       switch(i)
+       // Ammo (#1)
+       //
+       // TODO: macro
+       float GetAmmoItemCode(float i)
        {
-               case 0: return IT_SHELLS;
-               case 1: return IT_NAILS;
-               case 2: return IT_ROCKETS;
-               case 3: return IT_CELLS;
-               case 4: return IT_FUEL;
-               default: return -1;
+               switch(i)
+               {
+                       case 0: return IT_SHELLS;
+                       case 1: return IT_NAILS;
+                       case 2: return IT_ROCKETS;
+                       case 3: return IT_CELLS;
+                       case 4: return IT_FUEL;
+                       default: return -1;
+               }
        }
-}
 
-string GetAmmoPicture(float i)
-{
-       switch(i)
+       string GetAmmoPicture(float i)
        {
-               case 0: return "ammo_shells";
-               case 1: return "ammo_bullets";
-               case 2: return "ammo_rockets";
-               case 3: return "ammo_cells";
-               case 4: return "ammo_fuel";
-               default: return "";
+               switch(i)
+               {
+                       case 0: return "ammo_shells";
+                       case 1: return "ammo_bullets";
+                       case 2: return "ammo_rockets";
+                       case 3: return "ammo_cells";
+                       case 4: return "ammo_fuel";
+                       default: return "";
+               }
        }
-}
 
-void DrawAmmoItem(vector myPos, vector mySize, float itemcode, float currently_selected)
-{
-       float a;
-       a = getstati(GetAmmoStat(itemcode)); // how much ammo do we have of type itemcode?
-       if(autocvar__hud_configure)
-               a = 100;
+       void DrawAmmoItem(vector myPos, vector mySize, float itemcode, float currently_selected)
+       {
+               float a;
+               a = getstati(GetAmmoStat(itemcode)); // how much ammo do we have of type itemcode?
+               if(autocvar__hud_configure)
+                       a = 100;
 
-       vector color;
-       if(a < 10)
-               color = '0.7 0 0';
-       else
-               color = '1 1 1';
+               vector color;
+               if(a < 10)
+                       color = '0.7 0 0';
+               else
+                       color = '1 1 1';
 
-       float alpha;
-       if(currently_selected)
-               alpha = 1;
-       else
-               alpha = 0.7;
+               float alpha;
+               if(currently_selected)
+                       alpha = 1;
+               else
+                       alpha = 0.7;
 
-       vector newSize, newPos;
-       if(mySize_x/mySize_y > 3)
-       {
-               newSize_x = 3 * mySize_y;
-               newSize_y = mySize_y;
+               vector newSize, newPos;
+               if(mySize_x/mySize_y > 3)
+               {
+                       newSize_x = 3 * mySize_y;
+                       newSize_y = mySize_y;
 
-               newPos_x = myPos_x + (mySize_x - newSize_x) / 2;
-               newPos_y = myPos_y;
-       }
-       else
-       {
-               newSize_y = 1/3 * mySize_x;
-               newSize_x = mySize_x;
+                       newPos_x = myPos_x + (mySize_x - newSize_x) / 2;
+                       newPos_y = myPos_y;
+               }
+               else
+               {
+                       newSize_y = 1/3 * mySize_x;
+                       newSize_x = mySize_x;
 
-               newPos_y = myPos_y + (mySize_y - newSize_y) / 2;
-               newPos_x = myPos_x;
-       }
+                       newPos_y = myPos_y + (mySize_y - newSize_y) / 2;
+                       newPos_x = myPos_x;
+               }
 
-       vector picpos, numpos;
-       if(autocvar_hud_panel_ammo_iconalign)
-       {
-               numpos = newPos;
-               picpos = newPos + eX * 2 * newSize_y;
-       }
-       else
-       {
-               numpos = newPos + eX * newSize_y;
-               picpos = newPos;
-       }
+               vector picpos, numpos;
+               if(autocvar_hud_panel_ammo_iconalign)
+               {
+                       numpos = newPos;
+                       picpos = newPos + eX * 2 * newSize_y;
+               }
+               else
+               {
+                       numpos = newPos + eX * newSize_y;
+                       picpos = newPos;
+               }
 
-       if (currently_selected)
-               drawpic_aspect_skin(newPos, "ammo_current_bg", newSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+               if (currently_selected)
+                       drawpic_aspect_skin(newPos, "ammo_current_bg", newSize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
 
-       drawfont = hud_bigfont;
-       if(a > 0)
-               drawstring_aspect(numpos, ftos(a), eX * (2/3) * newSize_x + eY * newSize_y, color, panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
-       else // "ghost" ammo count
-               drawstring_aspect(numpos, ftos(a), eX * (2/3) * newSize_x + eY * newSize_y, '0 0 0', panel_fg_alpha * alpha * 0.5, DRAWFLAG_NORMAL);
-       drawfont = hud_font;
-       if(a > 0)
-               drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * newSize_y, '1 1 1', panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
-       else // "ghost" ammo icon
-               drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * newSize_y, '0 0 0', panel_fg_alpha * alpha * 0.5, DRAWFLAG_NORMAL);
-}
+               drawfont = hud_bigfont;
+               if(a > 0)
+                       drawstring_aspect(numpos, ftos(a), eX * (2/3) * newSize_x + eY * newSize_y, color, panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
+               else // "ghost" ammo count
+                       drawstring_aspect(numpos, ftos(a), eX * (2/3) * newSize_x + eY * newSize_y, '0 0 0', panel_fg_alpha * alpha * 0.5, DRAWFLAG_NORMAL);
+               drawfont = hud_font;
+               if(a > 0)
+                       drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * newSize_y, '1 1 1', panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
+               else // "ghost" ammo icon
+                       drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * newSize_y, '0 0 0', panel_fg_alpha * alpha * 0.5, DRAWFLAG_NORMAL);
+       }
 
-void HUD_Ammo(void)
-{
-       if(!autocvar_hud_panel_ammo && !autocvar__hud_configure)
-               return;
+       void HUD_Ammo(void)
+       {
+               if(!autocvar_hud_panel_ammo && !autocvar__hud_configure)
+                       return;
 
-       active_panel = HUD_PANEL_AMMO;
-       HUD_Panel_UpdateCvars(ammo);
-       float i, currently_selected;
+               active_panel = HUD_PANEL_AMMO;
+               HUD_Panel_UpdateCvars(ammo);
+               float i, currently_selected;
 
-       vector pos, mySize;
-       pos = panel_pos;
-       mySize = panel_size;
+               vector pos, mySize;
+               pos = panel_pos;
+               mySize = panel_size;
 
-       HUD_Panel_DrawBg(1);
+               HUD_Panel_DrawBg(1);
        if(panel_bg_padding)
        {
                pos += '1 1 0' * panel_bg_padding;
@@ -1845,10 +2030,17 @@ void HUD_Powerups(void) {
        pos = panel_pos;
        mySize = panel_size;
 
-       float strength_time, shield_time;
-
-       strength_time = bound(0, getstatf(STAT_STRENGTH_FINISHED) - time, 99);
-       shield_time = bound(0, getstatf(STAT_INVINCIBLE_FINISHED) - time, 99);
+       float strength_time, shield_time;
+       if(autocvar__hud_configure)
+       {
+               strength_time = 15;
+               shield_time = 27;
+       }
+       else
+       {
+               strength_time = bound(0, getstatf(STAT_STRENGTH_FINISHED) - time, 99);
+               shield_time = bound(0, getstatf(STAT_INVINCIBLE_FINISHED) - time, 99);
+       }
 
        HUD_Panel_DrawBg(bound(0, max(strength_time, shield_time), 1));
        if(panel_bg_padding)
@@ -1857,12 +2049,6 @@ void HUD_Powerups(void) {
                mySize -= '2 2 0' * panel_bg_padding;
        }
 
-       if(autocvar__hud_configure)
-       {
-               strength_time = 15;
-               shield_time = 27;
-       }
-
        vector barpos, barsize;
        vector picpos;
        vector numpos;
@@ -2473,8 +2659,13 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg)
                else if(type == KILL_FIRST_BLOOD)
                        print("^1",s1, "^1 drew first blood", "\n");
                // TODO: icon!
-               else if (type == DEATH_TELEFRAG)
-                       print ("^1",s1, "^1 was telefragged by ", s2, "\n");
+               else if (type == DEATH_TELEFRAG) {
+                       HUD_KillNotify_Push(s2, s1, 1, DEATH_TELEFRAG);
+                       if(gentle)
+                               print ("^1",s1, "^1 tried to occupy ", s2, "^1's teleport destination space\n");
+                       else
+                               print ("^1",s1, "^1 was telefragged by ", s2, "\n");
+               }
                else if (type == DEATH_DROWN) {
                        HUD_KillNotify_Push(s2, s1, 1, DEATH_DROWN);
                        if(alsoprint)
@@ -2752,7 +2943,7 @@ void HUD_Centerprint(string s1, string s2, float type, float msg)
                                centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1Don't shoot your team mates!"));
                } else if (type == DEATH_QUIET) {
                        // do nothing
-               } else if (type == DEATH_KILL) {
+               } else { // generic message
                        if(gentle)
                                centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You need to be more careful!"));
                        else
@@ -2795,7 +2986,7 @@ void HUD_Centerprint(string s1, string s2, float type, float msg)
                        } else {
                                centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^4You fragged ^7", s1, s2));
                        }
-               } else if (type == KILL_FRAGGED) {
+               } else { // generic message
                        if(gentle) {
                                centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, "^1You were scored against by ^7", s1, s2));
                        } else {
@@ -2846,7 +3037,7 @@ void HUD_Notify (void)
        float width_attacker;
        string attacker, victim;
 
-       float i, j;
+       float i, j, w;
        for(j = 0; j < entries; ++j)
        {
                s = "";
@@ -2870,7 +3061,7 @@ void HUD_Notify (void)
                                a = 0;
                }
 
-               float w;
+               w = -1;
                w = DEATH_WEAPONOF(killnotify_deathtype[j]);
 
                // TODO: maybe print in team colors?
@@ -3024,6 +3215,10 @@ void HUD_Notify (void)
                        {
                                s = "notify_teamkill_red";
                        }
+                       else if(killnotify_deathtype[j] == DEATH_TELEFRAG)
+                       {
+                               s = "notify_telefrag";
+                       }
                        else if(killnotify_deathtype[j] == DEATH_DROWN)
                        {
                                s = "notify_water";
@@ -3547,6 +3742,21 @@ void HUD_VoteWindow(void)
        pos = panel_pos;
        mySize = panel_size;
 
+       panel_fg_alpha = autocvar_hud_panel_fg_alpha;
+       panel_bg_alpha_str = autocvar_hud_panel_vote_bg_alpha;
+
+       if(panel_bg_alpha_str == "") {
+               panel_bg_alpha_str = ftos(autocvar_hud_panel_bg_alpha);
+       }
+       panel_bg_alpha = stof(panel_bg_alpha_str);
+       if(autocvar__hud_configure && disable_menu_alphacheck == 2 && highlightedPanel == active_panel) {
+               panel_bg_alpha = (1 - autocvar__menu_alpha) * max(autocvar_hud_configure_bg_minalpha, panel_bg_alpha) + autocvar__menu_alpha * panel_bg_alpha;
+       } else if(autocvar__hud_configure) {
+               panel_bg_alpha = max(autocvar_hud_configure_bg_minalpha, panel_bg_alpha);
+       } if(autocvar__hud_configure && !panel_enabled) {
+               panel_bg_alpha = 0.25;
+       }
+
        string s;
        float a;
        if(vote_active != vote_prev) {
@@ -3597,37 +3807,37 @@ void HUD_VoteWindow(void)
        mySize = newSize;
 
        s = "A vote has been called for:";
-       drawstring_aspect(pos, s, eX * mySize_x + eY * (2/8) * mySize_y, '1 1 1', a * panel_fg_alpha, DRAWFLAG_NORMAL);
+       drawstring_aspect(pos, s, eX * mySize_x + eY * (2/8) * mySize_y, '1 1 1', a, DRAWFLAG_NORMAL);
        s = textShortenToWidth(vote_called_vote, mySize_x, '1 1 0' * mySize_y * (1.75/8), stringwidth_colors);
        if(autocvar__hud_configure)
                s = "^1Configure the HUD";
-       drawcolorcodedstring_aspect(pos + eY * (2/8) * mySize_y, s, eX * mySize_x + eY * (1.75/8) * mySize_y, a * panel_fg_alpha, DRAWFLAG_NORMAL);
+       drawcolorcodedstring_aspect(pos + eY * (2/8) * mySize_y, s, eX * mySize_x + eY * (1.75/8) * mySize_y, a, DRAWFLAG_NORMAL);
 
        // print the yes/no counts
        s = strcat("Yes (", getcommandkey("not bound", "vyes"), "): ", ftos(vote_yescount));
-       drawstring_aspect(pos + eY * (4/8) * mySize_y, s, eX * 0.5 * mySize_x + eY * (1.5/8) * mySize_y, '0 1 0', a * panel_fg_alpha, DRAWFLAG_NORMAL);
+       drawstring_aspect(pos + eY * (4/8) * mySize_y, s, eX * 0.5 * mySize_x + eY * (1.5/8) * mySize_y, '0 1 0', a, DRAWFLAG_NORMAL);
        s = strcat("No (", getcommandkey("not bound", "vno"), "): ", ftos(vote_nocount));
-       drawstring_aspect(pos + eX * 0.5 * mySize_x + eY * (4/8) * mySize_y, s, eX * 0.5 * mySize_x + eY * (1.5/8) * mySize_y, '1 0 0', a * panel_fg_alpha, DRAWFLAG_NORMAL);
+       drawstring_aspect(pos + eX * 0.5 * mySize_x + eY * (4/8) * mySize_y, s, eX * 0.5 * mySize_x + eY * (1.5/8) * mySize_y, '1 0 0', a, DRAWFLAG_NORMAL);
 
        // draw the progress bar backgrounds
-       drawpic_skin(pos + eY * (5/8) * mySize_y, "voteprogress_back", eX * mySize_x + eY * (3/8) * mySize_y, '1 1 1', a * panel_fg_alpha, DRAWFLAG_NORMAL);
+       drawpic_skin(pos + eY * (5/8) * mySize_y, "voteprogress_back", eX * mySize_x + eY * (3/8) * mySize_y, '1 1 1', a, DRAWFLAG_NORMAL);
 
        // draw the highlights
        if(vote_highlighted == 1) {
                drawsetcliparea(pos_x, pos_y, mySize_x * 0.5, mySize_y);
-               drawpic_skin(pos + eY * (5/8) * mySize_y, "voteprogress_voted", eX * mySize_x + eY * (3/8) * mySize_y, '0 1 0', a * panel_fg_alpha, DRAWFLAG_NORMAL);
+               drawpic_skin(pos + eY * (5/8) * mySize_y, "voteprogress_voted", eX * mySize_x + eY * (3/8) * mySize_y, '1 1 1', a, DRAWFLAG_NORMAL);
        }
        else if(vote_highlighted == 2) {
                drawsetcliparea(pos_x + 0.5 * mySize_x, pos_y, mySize_x * 0.5, mySize_y);
-               drawpic_skin(pos + eY * (5/8) * mySize_y, "voteprogress_voted", eX * mySize_x + eY * (3/8) * mySize_y, '0 1 0', a * panel_fg_alpha, DRAWFLAG_NORMAL);
+               drawpic_skin(pos + eY * (5/8) * mySize_y, "voteprogress_voted", eX * mySize_x + eY * (3/8) * mySize_y, '1 1 1', a, DRAWFLAG_NORMAL);
        }
 
        // draw the progress bars
        drawsetcliparea(pos_x, pos_y, mySize_x * 0.5 * (vote_yescount/vote_needed), mySize_y);
-       drawpic_skin(pos + eY * (5/8) * mySize_y, "voteprogress_prog", eX * mySize_x + eY * (3/8) * mySize_y, '0 1 0', a * panel_fg_alpha, DRAWFLAG_NORMAL);
+       drawpic_skin(pos + eY * (5/8) * mySize_y, "voteprogress_prog", eX * mySize_x + eY * (3/8) * mySize_y, '1 1 1', a, DRAWFLAG_NORMAL);
 
        drawsetcliparea(pos_x + mySize_x - mySize_x * 0.5 * (vote_nocount/vote_needed), pos_y, mySize_x * 0.5, mySize_y);
-       drawpic_skin(pos + eY * (5/8) * mySize_y, "voteprogress_prog", eX * mySize_x + eY * (3/8) * mySize_y, '1 0 0', a * panel_fg_alpha, DRAWFLAG_NORMAL);
+       drawpic_skin(pos + eY * (5/8) * mySize_y, "voteprogress_prog", eX * mySize_x + eY * (3/8) * mySize_y, '1 1 1', a, DRAWFLAG_NORMAL);
 
        drawresetcliparea();
 
@@ -4236,8 +4446,15 @@ void HUD_Chat(void)
        {
                panel_pos_y = panel_bg_border;
                panel_size_y = vid_conheight - panel_bg_border * 2;
-               if(panel_bg == "0")
-                       panel_bg = "border"; // force a border when maximized
+               if(panel_bg == "0") // force a border when maximized
+               {
+                       if(precache_pic(panel_bg) == "") {
+                               panel_bg = strcat(hud_skin_path, "/border_default");
+                               if(precache_pic(panel_bg) == "") {
+                                       panel_bg = "gfx/hud/default/border_default";
+                               }
+                       }
+               }
                panel_bg_alpha = max(0.75, panel_bg_alpha); // force an alpha of at least 0.75
        }
 
@@ -4383,6 +4600,12 @@ void HUD_InfoMessages(void)
        vector fontsize;
        fontsize = '0.20 0.20 0' * mySize_y;
        
+       float a;
+       if(spectatee_status != 0)
+               a = 1;
+       else
+               a = panel_fg_alpha;
+
        string s;
        if(!autocvar__hud_configure)
        {
@@ -4395,7 +4618,7 @@ void HUD_InfoMessages(void)
 
                        if(autocvar_hud_panel_infomessages_flip)
                                o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize); 
-                       drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                        o += eY * fontsize_y;
 
                        if(spectatee_status == -1)
@@ -4404,7 +4627,7 @@ void HUD_InfoMessages(void)
                                s = strcat("^1Press ^3", getcommandkey("primary fire", "+attack"), "^1 for another player");
                        if(autocvar_hud_panel_infomessages_flip)
                                o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize); 
-                       drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                        o += eY * fontsize_y;
 
                        if(spectatee_status == -1)
@@ -4413,13 +4636,13 @@ void HUD_InfoMessages(void)
                                s = strcat("^1Press ^3", getcommandkey("secondary fire", "+attack2"), "^1 to observe");
                        if(autocvar_hud_panel_infomessages_flip)
                                o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize); 
-                       drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                        o += eY * fontsize_y;
 
                        s = strcat("^1Press ^3", getcommandkey("server info", "+show_info"), "^1 for gamemode info");
                        if(autocvar_hud_panel_infomessages_flip)
                                o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize); 
-                       drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                        o += eY * fontsize_y;
 
                        if(gametype == GAME_ARENA)
@@ -4439,7 +4662,7 @@ void HUD_InfoMessages(void)
                                s = strcat("^1Press ^3", getcommandkey("jump", "+jump"), "^1 to join");
                        if(autocvar_hud_panel_infomessages_flip)
                                o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize); 
-                       drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                        o += eY * fontsize_y;
 
                        //show restart countdown:
@@ -4448,7 +4671,7 @@ void HUD_InfoMessages(void)
                                //we need to ceil, otherwise the countdown would be off by .5 when using round()
                                countdown = ceil(getstatf(STAT_GAMESTARTTIME) - time);
                                s = strcat("^1Game starts in ^3", ftos(countdown), "^1 seconds");
-                               drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+                               drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                                o += eY * fontsize_y;
                        }
                }
@@ -4457,7 +4680,7 @@ void HUD_InfoMessages(void)
                        s = "^2Currently in ^1warmup^2 stage!";
                        if(autocvar_hud_panel_infomessages_flip)
                                o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize); 
-                       drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                        o += eY * fontsize_y;
                }
 
@@ -4485,7 +4708,7 @@ void HUD_InfoMessages(void)
                        }
                        if(autocvar_hud_panel_infomessages_flip)
                                o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize); 
-                       drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                        o += eY * fontsize_y;
                }
                else if(warmup_stage && !intermission && !spectatee_status)
@@ -4493,7 +4716,7 @@ void HUD_InfoMessages(void)
                        s = strcat("^2Press ^3", getcommandkey("ready", "ready"), "^2 to end warmup");
                        if(autocvar_hud_panel_infomessages_flip)
                                o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize); 
-                       drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                        o += eY * fontsize_y;
                }
 
@@ -4523,7 +4746,7 @@ void HUD_InfoMessages(void)
 
                                        if(autocvar_hud_panel_infomessages_flip)
                                                o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize); 
-                                       drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+                                       drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                                        o += eY * fontsize_y;
                                }
                        }
@@ -4534,22 +4757,22 @@ void HUD_InfoMessages(void)
                s = "^7Press ^3ESC ^7to show HUD options.";
                if(autocvar_hud_panel_infomessages_flip)
                        o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize); 
-               drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+               drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                o += eY * fontsize_y;
                s = "^3Doubleclick ^7a panel for panel-specific options.";
                if(autocvar_hud_panel_infomessages_flip)
                        o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize); 
-               drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+               drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                o += eY * fontsize_y;
                s = "^3CTRL ^7to disable collision testing, ^3SHIFT ^7and";
                if(autocvar_hud_panel_infomessages_flip)
                        o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize); 
-               drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+               drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                o += eY * fontsize_y;
                s = "^3ALT ^7+ ^3ARROW KEYS ^7for fine adjustments.";
                if(autocvar_hud_panel_infomessages_flip)
                        o_x = pos_x + mySize_x - stringwidth(s, TRUE, fontsize); 
-               drawcolorcodedstring(o, s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+               drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL);
                o += eY * fontsize_y;
        }
 }
@@ -4703,10 +4926,19 @@ void HUD_Main (void)
 {
        hud_skin_path = strcat("gfx/hud/", autocvar_hud_skin);
 
+       // global hud alpha fade
        if(disable_menu_alphacheck == 1)
-               menu_fade_alpha = 1;
+               hud_fade_alpha = 1;
        else
-               menu_fade_alpha = (1 - autocvar__menu_alpha);
+               hud_fade_alpha = (1 - autocvar__menu_alpha);
+
+       if(scoreboard_fade_alpha)
+               hud_fade_alpha = (1 - scoreboard_fade_alpha);
+
+       if(intermission == 2) // no hud during mapvote
+               hud_fade_alpha = 0;
+       else if(autocvar__menu_alpha == 0 && scoreboard_fade_alpha == 0)
+               hud_fade_alpha = 1;
 
        hud_border_thickness = bound(0, cvar("hud_border_thickness"), 5);
        hud_accuracy_border_thickness = bound(0, cvar_or("hud_accuracy_border_thickness", 1), 5);
@@ -4758,9 +4990,12 @@ void HUD_Main (void)
                string pic;
                pic = strcat(hud_skin_path, "/", autocvar_hud_dock);
                if(precache_pic(pic) == "") {
-                       pic = "gfx/hud/default/dock";
+                       pic = strcat(hud_skin_path, "/dock_medium");
+                       if(precache_pic(pic) == "") {
+                               pic = "gfx/hud/default/dock_medium";
+                       }
                }
-               drawpic('0 0 0', pic, eX * vid_conwidth + eY * vid_conheight, color, autocvar_hud_dock_alpha * menu_fade_alpha, DRAWFLAG_NORMAL); // no aspect ratio forcing on dock...
+               drawpic('0 0 0', pic, eX * vid_conwidth + eY * vid_conheight, color, autocvar_hud_dock_alpha * hud_fade_alpha, DRAWFLAG_NORMAL); // no aspect ratio forcing on dock...
        }
 
        // cache the panel order into the panel_order array
index bdc533edbd7e818a56c7b473cf7c63980a124e1c..e311c66a8aa923af4ac650897dad6b32524a9479 100644 (file)
@@ -1,5 +1,7 @@
 float log(float f);
 
+vector centerprint_start;
+
 float panel_order[HUD_PANEL_NUM];
 string hud_panelorder_prev;
 
@@ -31,6 +33,7 @@ float ts_primary, ts_secondary;
 
 float last_weapon;
 float weapontime;
+float weaponprevtime;
 
 float teamnagger;
 float hud_accuracy_hud;
@@ -46,12 +49,19 @@ const float S_CTRL = 2;
 const float S_ALT = 4;
 
 float disable_menu_alphacheck; // 0 = enable alpha check, 1 = disable for entire hud, 2 = disable for one panel
-float menu_fade_alpha;
+float hud_fade_alpha;
 
 string hud_skin_path;
 
 var vector progressbar_color;
 
+var float highlightedPanel_backup = -1;
+var vector panel_pos_backup;
+var vector panel_size_backup;
+
+var float highlightedPanel_copied = -1; //this is good only to know if there is something copied
+var vector panel_size_copied;
+
 var float active_panel; // this panel has recently referred the UpdateCvars macro
 var string panel_name;
 var float panel_enabled;
@@ -85,7 +95,7 @@ var string picpath;
 // ----------------------
 // MACRO HELL STARTS HERE
 // ----------------------
-// Little help for the poor people who have to make sense of this: Start from the bottom
+// Little help for the poor people who have to make sense of this: Start from the bottom ;)
 
 #define HUD_Panel_GetProgressBarColor(item) \
 switch(item) {\
@@ -104,18 +114,19 @@ if(!autocvar__hud_configure && panel_bg_str == "0") {\
        panel_bg = "0";\
 } else {\
        if(panel_bg_str == "") {\
-               panel_bg = autocvar_hud_panel_bg;\
-       } else if(panel_bg_str == "0" && autocvar__hud_configure) {\
-               panel_bg = autocvar_hud_panel_bg;\
-               panel_bg_alpha_str = "0";\
-       } else {\
-               panel_bg = panel_bg_str;\
+               panel_bg_str = autocvar_hud_panel_bg;\
        }\
-       panel_bg = strcat(hud_skin_path, "/", panel_bg);\
-       if(precache_pic(panel_bg) == "") {\
-               panel_bg = strcat(hud_skin_path, "/", "border");\
+       if(panel_bg_str == "0" && !autocvar__hud_configure) {\
+                       panel_bg = "0";\
+       } else {\
+               if (panel_bg_str == "0" && autocvar__hud_configure)\
+                       panel_bg_alpha_str = "0";\
+               panel_bg = strcat(hud_skin_path, "/", panel_bg_str);\
                if(precache_pic(panel_bg) == "") {\
-                       panel_bg = strcat("gfx/hud/default/", "border");\
+                       panel_bg = strcat(hud_skin_path, "/", "border_default");\
+                       if(precache_pic(panel_bg) == "") {\
+                               panel_bg = strcat("gfx/hud/default/", "border_default");\
+                       }\
                }\
        }\
 }
@@ -162,7 +173,7 @@ if(autocvar__hud_configure && disable_menu_alphacheck == 2 && highlightedPanel =
 } if(autocvar__hud_configure && !panel_enabled) {\
        panel_bg_alpha = 0.25;\
 } if(!(disable_menu_alphacheck == 2 && highlightedPanel == active_panel)) {\
-       panel_bg_alpha *= menu_fade_alpha;\
+       panel_bg_alpha *= hud_fade_alpha;\
 }
 
 // Get value for panel_fg_alpha. Also do various minalpha checks
@@ -173,7 +184,7 @@ panel_fg_alpha = autocvar_hud_panel_fg_alpha;\
 if(autocvar__hud_configure && !panel_enabled)\
        panel_fg_alpha = 0.25;\
 if(!(disable_menu_alphacheck == 2 && highlightedPanel == active_panel))\
-       panel_fg_alpha *= menu_fade_alpha;
+       panel_fg_alpha *= hud_fade_alpha;
 
 // Get border. See comments above, it's similar.
 #define HUD_Panel_GetBorder()\
index 23ced4b64a2f8caf155bd878d2c0ca63a0fe6f61..6703b1b11f82ad1b96d7e387d33b36d2b44b7996 100644 (file)
@@ -35,11 +35,11 @@ void Draw_Laser()
        {
                if(self.alpha)
                {
-                       Draw_CylindricLine(self.origin, trace_endpos, self.scale, "particles/laserbeam", 0, time * 3, self.colormod, self.alpha, DRAWFLAG_NORMAL); // TODO make a texture to make the laser look smoother
+                       Draw_CylindricLine(self.origin, trace_endpos, self.scale, "particles/laserbeam", 0, time * 3, self.colormod, self.alpha, DRAWFLAG_NORMAL, view_origin);
                }
                else
                {
-                       Draw_CylindricLine(self.origin, trace_endpos, self.scale, "particles/laserbeam", 0, time * 3, self.colormod, 0.5, DRAWFLAG_ADDITIVE); // TODO make a texture to make the laser look smoother
+                       Draw_CylindricLine(self.origin, trace_endpos, self.scale, "particles/laserbeam", 0, time * 3, self.colormod, 0.5, DRAWFLAG_ADDITIVE, view_origin);
                }
        }
        if not(trace_dphitq3surfaceflags & (Q3SURFACEFLAG_SKY | Q3SURFACEFLAG_NOIMPACT))
index 02698745083654f3b71b0da7579ebf3b634b5ded..cc94efb6e40aec290d834e42223431b0b45ae084 100644 (file)
@@ -324,19 +324,6 @@ vector HUD_GetFontsize(string cvarname)
        return v;
 }
 
-float HUD_GetWidth(float teamcolumnwidth)
-{
-       float f;
-       f = cvar("hud_width");
-       if(f == 0)
-               f = 640;
-       if(f < 320)
-               f = 320;
-       if(f > vid_conwidth - 2 * teamcolumnwidth)
-               f = vid_conwidth - 2 * teamcolumnwidth;
-       return f;
-}
-
 float PreviewExists(string name)
 {
        float f;
index 4569e497ce30dc1cffbf40f7ae2371f65836d4ee..1334d7d3c7b6251f25651ee280d418fffdf0a592 100644 (file)
@@ -22,6 +22,7 @@ autocvars.qh
 interpolate.qh
 teamradar.qh
 hud.qh
+scoreboard.qh
 waypointsprites.qh
 movetypes.qh
 prandom.qh
index 7c55d434cca220ddd61903b2e6f64cecc85a83e7..76b19a54c50c99a94d7942951edf430ab380d626 100644 (file)
@@ -883,7 +883,7 @@ float HUD_WouldDrawScoreboard() {
                return 1;
        else if (intermission == 1)
                return 1;
-       else if (intermission == 2)
+       else if (intermission == 2 && scoreboard_showscores)
                return 1;
        else if (getstati(STAT_HEALTH) <= 0 && cvar("cl_deathscoreboard"))
                return 1;
@@ -913,7 +913,7 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size)
        }
 
        drawstring(pos, strcat("Accuracy stats (average ", ftos(average_accuracy), "%)"), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL);
-       pos_y += 18;
+       pos_y += 1.25 * hud_fontsize_y;
        vector tmp;
        tmp_x = sbwidth;
        tmp_y = height * rows;
@@ -1015,6 +1015,8 @@ vector HUD_DrawScoreboardAccuracyStats(vector pos, vector rgb, vector bg_size)
                pos_x -= sbwidth/weapon_cnt / 2;
        pos_x -= sbwidth;
        pos_y += height;
+
+       pos_y +=  1.25 * hud_fontsize_y;
        return pos;
 }
 
@@ -1066,13 +1068,12 @@ vector HUD_DrawScoreboardRankings(vector pos, entity pl,  vector rgb, vector bg_
                drawstring(pos, p, hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL);
                drawstring(pos + '3 0 0' * hud_fontsize_x, TIME_ENCODED_TOSTRING(t), hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL);
                drawcolorcodedstring(pos + '8 0 0' * hud_fontsize_x, n, hud_fontsize, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
-               pos += '0 1 0' * hud_fontsize_y;
+               pos_y += 1.25 * hud_fontsize_y;
        }
 
        return pos;
 }
 
-float scoreboard_fade_alpha;
 float hud_woulddrawscoreboard_prev;
 float hud_woulddrawscoreboard_change; // "time" at which HUD_WouldDrawScoreboard() changed
 void HUD_DrawScoreboard()
@@ -1114,13 +1115,11 @@ void HUD_DrawScoreboard()
        vector rgb, pos, tmp;
        entity pl, tm;
 
-       sbwidth = HUD_GetWidth(6.5 * hud_fontsize_y);
+       xmin = cvar("scoreboard_offset_left") * vid_conwidth;
+       ymin = cvar("con_notify") * cvar("con_notifysize");
 
-       xmin = 0.5 * (vid_conwidth - sbwidth);
-       ymin = SCOREBOARD_OFFSET;
-
-       xmax = vid_conwidth - xmin;
-       ymax = vid_conheight - 0.2*vid_conheight;
+       sbwidth = xmax = vid_conwidth - xmin - cvar("scoreboard_offset_right") * vid_conwidth;
+       ymax = vid_conheight - ymin;
 
        // Initializes position
        pos_x = xmin;
@@ -1129,10 +1128,12 @@ void HUD_DrawScoreboard()
 
        // Heading
        drawfont = hud_bigfont;
-       drawstringcenter('0 1 0' * ymin, "Scoreboard", '24 24 0', '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+       drawstring(pos, "Scoreboard", '24 24 0', '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+       
+       centerprint_start_x = vid_conwidth - 0.5 * (pos_x + stringwidth("Scoreboard", FALSE, '24 24 0'));
+       centerprint_start_y = pos_y;
 
-       pos_y += 24 + 4;
-       pos_y += hud_fontsize_y;
+       pos_y += 24;
 
        drawfont = hud_font;
 
@@ -1148,10 +1149,10 @@ void HUD_DrawScoreboard()
                                continue;
 
                        rgb = GetTeamRGB(tm.team);
-                       drawstring(pos - '9.5 0 0' * hud_fontsize_y + '0 1 0' * hud_fontsize_y, ftos(tm.(teamscores[ts_primary])), '1 1 0' * hud_fontsize_y * 1.5, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+                       drawstring(pos - '2 0 0' * hud_fontsize_x + '0 1 0' * hud_fontsize_y, ftos(tm.(teamscores[ts_primary])), '1 1 0' * hud_fontsize_y * 1.5, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
 
                        if(ts_primary != ts_secondary)
-                               drawstring(pos - '7.5 0 0' * hud_fontsize_y + '0 2.5 0' * hud_fontsize_y, ftos(tm.(teamscores[ts_secondary])), '1 1 0' * hud_fontsize_y * 1, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+                               drawstring(pos - '2 0 0' * hud_fontsize_x + '0 2.5 0' * hud_fontsize_y, ftos(tm.(teamscores[ts_secondary])), '1 1 0' * hud_fontsize_y * 1, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
 
                        pos = HUD_Scoreboard_MakeTable(pos, tm, rgb, bg_size);
                }
@@ -1189,23 +1190,24 @@ void HUD_DrawScoreboard()
                        pos = HUD_DrawScoreboardAccuracyStats(pos, rgb, bg_size);
        }
 
-       tmp = pos + '0 1.5 0' * hud_fontsize_y;
-       pos_y += 3 * hud_fontsize_y;
-
        // List spectators
        float specs;
        specs = 0;
+       tmp = pos;
        for(pl = players.sort_next; pl; pl = pl.sort_next)
        {
                if(pl.team != COLOR_SPECTATOR)
                        continue;
-               HUD_PrintScoreboardItem(pos, pl, (pl.sv_entnum == player_localentnum - 1), specs);
                pos_y += 1.25 * hud_fontsize_y;
+               HUD_PrintScoreboardItem(pos, pl, (pl.sv_entnum == player_localentnum - 1), specs);
                ++specs;
        }
 
        if(specs)
+       {
                drawstring(tmp, "Spectators", hud_fontsize, '1 1 1', scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+               pos_y += 1.25 * hud_fontsize_y;
+       }
 
        // Print info string
        string str;
diff --git a/qcsrc/client/scoreboard.qh b/qcsrc/client/scoreboard.qh
new file mode 100644 (file)
index 0000000..b39b48e
--- /dev/null
@@ -0,0 +1,2 @@
+float HUD_WouldDrawScoreboard(void);
+float scoreboard_fade_alpha;
index dbb884168d12630a94b22c4060918b815eb5a4c4..55b56507476011a0985115fd04612b0c03f10de3 100644 (file)
@@ -106,17 +106,17 @@ void(vector coord3d, vector pangles, vector rgb) draw_teamradar_player =
                rgb2 = '1 1 1';
 
        R_BeginPolygon("", 0);
-       R_PolygonVertex(coord+v_forward*3, '0 0 0', rgb2, autocvar_hud_panel_fg_alpha);
-       R_PolygonVertex(coord+v_right*4-v_forward*2.5, '0 1 0', rgb2, autocvar_hud_panel_fg_alpha);
-       R_PolygonVertex(coord-v_forward*2, '1 0 0', rgb2, autocvar_hud_panel_fg_alpha);
-       R_PolygonVertex(coord-v_right*4-v_forward*2.5, '1 1 0', rgb2, autocvar_hud_panel_fg_alpha);
+       R_PolygonVertex(coord+v_forward*3, '0 0 0', rgb2, panel_fg_alpha);
+       R_PolygonVertex(coord+v_right*4-v_forward*2.5, '0 1 0', rgb2, panel_fg_alpha);
+       R_PolygonVertex(coord-v_forward*2, '1 0 0', rgb2, panel_fg_alpha);
+       R_PolygonVertex(coord-v_right*4-v_forward*2.5, '1 1 0', rgb2, panel_fg_alpha);
        R_EndPolygon();
 
        R_BeginPolygon("", 0);
-       R_PolygonVertex(coord+v_forward*2, '0 0 0', rgb, autocvar_hud_panel_fg_alpha);
-       R_PolygonVertex(coord+v_right*3-v_forward*2, '0 1 0', rgb, autocvar_hud_panel_fg_alpha);
-       R_PolygonVertex(coord-v_forward, '1 0 0', rgb, autocvar_hud_panel_fg_alpha);
-       R_PolygonVertex(coord-v_right*3-v_forward*2, '1 1 0', rgb, autocvar_hud_panel_fg_alpha);
+       R_PolygonVertex(coord+v_forward*2, '0 0 0', rgb, panel_fg_alpha);
+       R_PolygonVertex(coord+v_right*3-v_forward*2, '0 1 0', rgb, panel_fg_alpha);
+       R_PolygonVertex(coord-v_forward, '1 0 0', rgb, panel_fg_alpha);
+       R_PolygonVertex(coord-v_right*3-v_forward*2, '1 1 0', rgb, panel_fg_alpha);
        R_EndPolygon();
 };
 
@@ -161,10 +161,10 @@ void draw_teamradar_link(vector start, vector end, float colors)
        c1 = colormapPaletteColor((colors & 0xF0) / 0x10, FALSE);
 
        R_BeginPolygon("", 0);
-       R_PolygonVertex(start - norm, '0 0 0', c0, autocvar_hud_panel_fg_alpha);
-       R_PolygonVertex(start + norm, '0 1 0', c0, autocvar_hud_panel_fg_alpha);
-       R_PolygonVertex(end + norm, '1 1 0', c1, autocvar_hud_panel_fg_alpha);
-       R_PolygonVertex(end - norm, '1 0 0', c1, autocvar_hud_panel_fg_alpha);
+       R_PolygonVertex(start - norm, '0 0 0', c0, panel_fg_alpha);
+       R_PolygonVertex(start + norm, '0 1 0', c0, panel_fg_alpha);
+       R_PolygonVertex(end + norm, '1 1 0', c1, panel_fg_alpha);
+       R_PolygonVertex(end - norm, '1 0 0', c1, panel_fg_alpha);
        R_EndPolygon();
 }
 
@@ -179,14 +179,14 @@ void teamradar_loadcvars()
 {
        v_flipped = cvar("v_flipped");
        hud_panel_radar_scale = cvar("hud_panel_radar_scale");
-       hud_panel_radar_foreground_alpha = cvar("hud_panel_radar_foreground_alpha") * autocvar_hud_panel_fg_alpha;
+       hud_panel_radar_foreground_alpha = cvar("hud_panel_radar_foreground_alpha") * panel_fg_alpha;
        hud_panel_radar_rotation = cvar("hud_panel_radar_rotation");
        hud_panel_radar_zoommode = cvar("hud_panel_radar_zoommode");
 
        // others default to 0
        // match this to defaultXonotic.cfg!
        if(!hud_panel_radar_scale) hud_panel_radar_scale = 4096;
-       if(!hud_panel_radar_foreground_alpha) hud_panel_radar_foreground_alpha = 0.8 * autocvar_hud_panel_fg_alpha;
+       if(!hud_panel_radar_foreground_alpha) hud_panel_radar_foreground_alpha = 0.8 * panel_fg_alpha;
        if(!hud_panel_radar_size_x) hud_panel_radar_size_x = 128;
        if(!hud_panel_radar_size_y) hud_panel_radar_size_y = hud_panel_radar_size_x;
 
index 1fd2cf8093422d3cafd2b3760e8db48f16d28391..10b594320434f2d0bae15925d23063ac0537fcd1 100644 (file)
@@ -720,7 +720,7 @@ float MapInfo_Get_ByName(string pFilename, float pAllowGenerate, float pGametype
 
                for(i = 1; i <= MapInfo_Map_supportedGametypes; i *= 2)
                        if(MapInfo_Map_supportedGametypes & i)
-                               fputs(fh, sprintf("type %s %s\n", i, MapInfo_GetDefault(i)));
+                               fputs(fh, sprintf("type %s %s\n", MapInfo_Type_ToString(i), MapInfo_GetDefault(i)));
 
                fh2 = fopen(strcat("scripts/", pFilename, ".arena"), FILE_READ);
                if(fh2 >= 0)
index 72af701119045b374be237246f0d9289dd32989d..f33512f2355f8823669f1140b691dfe779be7282 100644 (file)
@@ -1913,3 +1913,9 @@ float get_model_parameters(string m, float sk)
 
        return 1;
 }
+
+vector vec2(vector v)
+{
+       v_z = 0;
+       return v;
+}
index f2c2e6702ab99389b17a24227f57258860232215..767092cc7532c689710cc82421abd15497d5d146 100644 (file)
@@ -236,3 +236,5 @@ switch(id) { \
        case HUD_PANEL_CHAT: panel_name = HUD_PANELNAME_CHAT; break; \
 }\
 HUD_Panel_GetName_Part2(id)
+
+vector vec2(vector v);
index a32099d9d8124b6933d1ca63b375929f6e37ef85..538723bce1c945462614af9926f080266df22007 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticHUDWeaponsDialog) EXTENDS(XonoticRootDialog)
        ATTRIB(XonoticHUDWeaponsDialog, title, string, "Weapons Panel")
        ATTRIB(XonoticHUDWeaponsDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT)
        ATTRIB(XonoticHUDWeaponsDialog, intendedWidth, float, 0.4)
-       ATTRIB(XonoticHUDWeaponsDialog, rows, float, 15)
+       ATTRIB(XonoticHUDWeaponsDialog, rows, float, 17)
        ATTRIB(XonoticHUDWeaponsDialog, columns, float, 4)
        ATTRIB(XonoticHUDWeaponsDialog, name, string, "HUDweapons")
 ENDCLASS(XonoticHUDWeaponsDialog)
@@ -71,6 +71,23 @@ void XonoticHUDWeaponsDialog_fill(entity me)
                                for(i = 0; i <= 10; ++i)
                                        e.addValue(e, strzone(ftos_decimals(i - 5, 0)), strzone(ftos(i - 5)));
                                e.configureXonoticTextSliderValues(e);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Fade out after:"));
+                       me.TD(me, 1, 2.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_", panelname, "_timeout"))));
+                               e.addValue(e, "Never", "0");
+                               for(i = 1; i <= 10; ++i)
+                                       e.addValue(e, strzone(strcat(ftos_decimals(i, 0), "s")), strzone(ftos(i)));
+                               e.configureXonoticTextSliderValues(e);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Fade effect:"));
+               me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "0", "None"));
+                       setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_timeout")), "0");
+               me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "1", "Slide"));
+                       setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_timeout")), "0");
+               me.TD(me, 1, 0.8, e = makeXonoticRadioButton(3, "hud_panel_weapons_timeout_effect", "2", "Alpha"));
+                       setDependentStringNotEqual(e, strzone(strcat("hud_panel_", panelname, "_timeout")), "0");
        me.TR(me);
                me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Weapon icons:"));
        me.TR(me);
index d3a21c6bf650686a92e81915e5145e39ead70535..3f8bcebd778877e07fedf9e9653930225876b69e 100644 (file)
@@ -69,7 +69,7 @@ void XonoticHUDExitDialog_fill(entity me)
                        me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_dock"));
                                e.addValue(e, "Disable", "0");
                                e.addValue(e, "Small", "dock_small");
-                               e.addValue(e, "Medium", "dock");
+                               e.addValue(e, "Medium", "dock_medium");
                                e.addValue(e, "Large", "dock_large");
                                e.configureXonoticTextSliderValues(e);
        me.TR(me);
index 3b729ca48c85e4251f1ac0181485431eea95c1d1..5e7eb707565c6ed0d54eaf9bee4442afb74632b6 100644 (file)
@@ -70,11 +70,11 @@ void anticheat_physics()
                MEAN_ACCUMULATE(anticheat_div0_evade, 1 - (self.anticheat_div0_evade_forward_initial * v_forward), 1);
        }
 
-       MEAN_ACCUMULATE(anticheat_div0_strafebot_old, movement_oddity(self.movement, self.anticheat_div0_strafebot_movement_prev), max(0, 0.05 - frametime));
+       MEAN_ACCUMULATE(anticheat_div0_strafebot_old, movement_oddity(self.movement, self.anticheat_div0_strafebot_movement_prev), max(0, sys_frametime - frametime));
        self.anticheat_div0_strafebot_movement_prev = self.movement;
 
        if(vlen(self.anticheat_div0_strafebot_forward_prev))
-               MEAN_ACCUMULATE(anticheat_div0_strafebot_new, 1 - (self.anticheat_div0_strafebot_forward_prev * v_forward), max(0, 0.05 - frametime));
+               MEAN_ACCUMULATE(anticheat_div0_strafebot_new, 1 - (self.anticheat_div0_strafebot_forward_prev * v_forward), max(0, sys_frametime - frametime));
        self.anticheat_div0_strafebot_forward_prev = v_forward;
 
        // generic speedhack detection: correlate anticheat_speedhack_movetime (UPDATED BEFORE THIS) and server time
index 8b1dc6de1dbd637c622879cca3007e3462a519b3..8a628a1bea91e1c5f9e5d5158b176b3eeedfad91 100644 (file)
@@ -49,7 +49,7 @@ float antilag_find(entity e, float t)
        return -1;
 }
 
-vector lerp(float t0, vector v0, float t1, vector v1, float t)
+vector lerpv(float t0, vector v0, float t1, vector v1, float t)
 {
        return v0 + (v1 - v0) * ((t - t0) / (t1 - t0));
 }
@@ -69,7 +69,17 @@ vector antilag_takebackorigin(entity e, float t)
        if(i1 >= ANTILAG_MAX_ORIGINS)
                i1 = 0;
 
-       return lerp(e.(antilag_times[i0]), e.(antilag_origins[i0]), e.(antilag_times[i1]), e.(antilag_origins[i1]), t);
+       return lerpv(e.(antilag_times[i0]), e.(antilag_origins[i0]), e.(antilag_times[i1]), e.(antilag_origins[i1]), t);
+}
+
+vector antilag_takebackavgvelocity(entity e, float t0, float t1)
+{
+       vector o0, o1;
+       if(t0 >= t1)
+               return '0 0 0';
+       o0 = antilag_takebackorigin(e, t0);
+       o1 = antilag_takebackorigin(e, t1);
+       return (o1 - o0) * (1 / (t1 - t0));
 }
 
 void antilag_takeback(entity e, float t)
index d4ed9118e8583ddd53b9f37a4220689d245b3911..2a7343243dd6e4dc7cfd80d2cd2bd6394928197e 100644 (file)
@@ -1,6 +1,7 @@
 void antilag_record(entity e, float t);
 float antilag_find(entity e, float t);
 vector antilag_takebackorigin(entity e, float t);
+vector antilag_takebackavgvelocity(entity e, float t0, float t1);
 void antilag_takeback(entity e, float t);
 void antilag_restore(entity e);
 
index 70e702505cd2d5d9c482d968552b8f377619e4b9..2df6c1c4fefb2ffbad069cb587cd27e82f22bdff 100644 (file)
@@ -33,6 +33,10 @@ float sv_airspeedlimit_nonqw;
 .float wasFlying;
 .float spectatorspeed;
 
+.float multijump_count;
+.float multijump_ready;
+.float prevjumpbutton;
+
 /*
 =============
 PlayerJump
@@ -66,9 +70,58 @@ void PlayerJump (void)
                return;
        }
 
+       if (cvar("g_multijump"))
+       {
+               if (self.prevjumpbutton == FALSE && !(self.flags & FL_ONGROUND)) // jump button pressed this frame and we are in midair
+                       self.multijump_ready = TRUE;  // this is necessary to check that we released the jump button and pressed it again
+               else
+                       self.multijump_ready = FALSE;
+       }
+
+       if(!doublejump && self.multijump_ready && self.multijump_count < cvar("g_multijump") && self.velocity_z > cvar("g_multijump_speed"))
+       {
+               // doublejump = FALSE; // checked above in the if
+               if (cvar("g_multijump") > 0)
+               {
+                       if (cvar("g_multijump_add") == 0) // in this case we make the z velocity == jumpvelocity
+                       {
+                               if (self.velocity_z < mjumpheight)
+                               {
+                                       doublejump = TRUE;
+                                       self.velocity_z = 0;
+                               }
+                       }
+                       else
+                               doublejump = TRUE;
+
+                       if(doublejump)
+                       {
+                               if(self.movement_x != 0 || self.movement_y != 0) // don't remove all speed if player isnt pressing any movement keys
+                               {
+                                       float curspeed;
+                                       vector wishvel, wishdir;
+
+                                       curspeed = max(
+                                               vlen(vec2(self.velocity)), // current xy speed
+                                               vlen(vec2(antilag_takebackavgvelocity(self, max(self.lastteleporttime + sys_frametime, time - 0.25), time))) // average xy topspeed over the last 0.25 secs
+                                       );
+                                       makevectors(self.v_angle_y * '0 1 0');
+                                       wishvel = v_forward * self.movement_x + v_right * self.movement_y;
+                                       wishdir = normalize(wishvel);
+
+                                       self.velocity_x = wishdir_x * curspeed; // allow "dodging" at a multijump
+                                       self.velocity_y = wishdir_y * curspeed;
+                                       // keep velocity_z unchanged!
+                               }
+                               self.multijump_count += 1;
+                       }
+               }
+               self.multijump_ready = FALSE; // require releasing and pressing the jump button again for the next jump
+       }
+
        if (!doublejump)
-       if (!(self.flags & FL_ONGROUND))
-               return;
+               if (!(self.flags & FL_ONGROUND))
+                       return;
 
        if(!sv_pogostick)
                if (!(self.flags & FL_JUMPRELEASED))
@@ -319,8 +372,7 @@ void RaceCarPhysics()
                float mt;
 
                rigvel_z -= frametime * sv_gravity; // 4x gravity plays better
-               rigvel_xy = rigvel;
-               rigvel_xy_z = 0;
+               rigvel_xy = vec2(rigvel);
 
                if(g_bugrigs_planar_movement_car_jumping && !g_touchexplode) // touchexplode is a better way to handle collisions
                        mt = MOVE_NORMAL;
@@ -512,7 +564,7 @@ void PM_Accelerate(vector wishdir, float wishspeed, float wishspeed0, float acce
 
        vel_straight = self.velocity * wishdir;
        vel_z = self.velocity_z;
-       vel_xy = self.velocity - vel_z * '0 0 1';
+       vel_xy = vec2(self.velocity);
        vel_perpend = vel_xy - vel_straight * wishdir;
 
        step = accel * frametime * wishspeed0;
@@ -652,7 +704,7 @@ void SV_PlayerPhysics()
        float buttons_prev;
        float not_allowed_to_move;
        string c;
-
+       
        // fix physics stats for g_movement_highspeed
        self.stat_sv_airaccel_qw = AdjustAirAccelQW(sv_airaccel_qw, autocvar_g_movement_highspeed);
        if(sv_airstrafeaccel_qw)
@@ -897,6 +949,14 @@ void SV_PlayerPhysics()
 
        if(self.classname == "player")
        {
+               if(self.flags & FL_ONGROUND)
+               {
+                       if (cvar("g_multijump") > 0)
+                               self.multijump_count = 0;
+                       else
+                               self.multijump_count = -2; // the cvar value for infinite jumps is -1, so this needs to be smaller
+               }
+
                if (self.BUTTON_JUMP)
                        PlayerJump ();
                else
@@ -904,6 +964,7 @@ void SV_PlayerPhysics()
 
                if (self.waterlevel == WATERLEVEL_SWIMMING)
                        CheckWaterJump ();
+               self.prevjumpbutton = self.BUTTON_JUMP;
        }
 
        if (self.flags & FL_WATERJUMP )
index eb4c8b4de64f5b7dedf6a42a83c677c8a2575aa6..e525b9caedd6f918c0bae5cd9d1d9239e8a1bb72 100644 (file)
@@ -31,8 +31,6 @@
 //   Otherwise mdl_dead will be displayed at the map origin, and nobody would
 //   want that!
 
-.vector mins_save, maxs_save;
-
 void func_breakable_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force);
 
 //
@@ -113,7 +111,6 @@ void func_breakable_behave_destroyed()
        self.takedamage = DAMAGE_NO;
        self.event_damage = SUB_Null;
        self.state = 1;
-       setsize(self, '0 0 0', '0 0 0');
        func_breakable_colormod();
 }
 
@@ -123,7 +120,6 @@ void func_breakable_behave_restore()
        self.takedamage = DAMAGE_AIM;
        self.event_damage = func_breakable_damage;
        self.state = 0;
-       setsize(self, self.mins_save, self.maxs_save);
        func_breakable_colormod();
 }
 
@@ -232,8 +228,6 @@ void spawnfunc_func_breakable() {
 
        self.mdl = self.model;
        SetBrushEntityModel();
-       self.mins_save = self.mins;
-       self.maxs_save = self.maxs;
 
        self.use = func_breakable_restore;
 
index 5b0fa2b8caabc429fd3bdae394326bffb1ef616b..3db4e47be8d2e154732916bda9d1de44bee0cad8 100644 (file)
@@ -100,9 +100,9 @@ string GetAdvancedDeathReports(entity enPlayer) // Extra fragmessage information
 
        if(cvar("sv_fragmessage_information_ping")) {
                if(clienttype(enPlayer) == CLIENTTYPE_BOT) // Bots have no ping
-                       strMessage = strcat(strMessage, "\n^7(^2Bot");
+                       strMessage = strcat(strMessage, " ^7(^2Bot");
                else
-                       strMessage = strcat(strMessage, "\n^7(Ping ", strPlayerPingColor, ftos(nPlayerPing), "ms");
+                       strMessage = strcat(strMessage, " ^7(Ping ", strPlayerPingColor, ftos(nPlayerPing), "ms");
                if(cvar("sv_fragmessage_information_handicap"))
                        if(cvar("sv_fragmessage_information_handicap") == 2)
                                if(nPlayerHandicap <= 1)
index 795697dcdf9af68b1d84739cf2e85e60213f5374..c929bcf6f1367763c83848de39fe15802a6e18b6 100644 (file)
@@ -132,8 +132,7 @@ void TeleportPlayer(entity teleporter, entity player, vector to, vector to_angle
                        player.pushltime = 0;
                }
 
-               if(player.isbot)
-                       player.lastteleporttime = time;
+               player.lastteleporttime = time;
 
                // stop player name display
                {
@@ -308,5 +307,7 @@ void WarpZone_PostTeleportPlayer_Callback(entity pl)
        {
                // reset tracking of oldvelocity for impact damage (sudden velocity changes)
                pl.oldvelocity = pl.velocity;
+               // reset teleport time tracking too (or multijump can cause insane speeds)
+               pl.lastteleporttime = time;
        }
 }
index 360652d6f24eafa9b4d2b708f8dcf1543e47cf67..9eb74988610b468e6db59e1fa01947dede0bb62a 100644 (file)
@@ -132,6 +132,8 @@ entity WarpZone_Find(vector mi, vector ma)
 {
        // if we are near any warpzone planes - MOVE AWAY (work around nearclip)
        entity e;
+       if(!warpzone_warpzones_exist)
+               return world;
        for(e = world; (e = find(e, classname, "trigger_warpzone")); )
                if(WarpZoneLib_BoxTouchesBrush(mi, ma, e, world))
                        return e;
@@ -141,6 +143,8 @@ entity WarpZone_Find(vector mi, vector ma)
 void WarpZone_MakeAllSolid()
 {
        entity e;
+       if(!warpzone_warpzones_exist)
+               return;
        for(e = world; (e = find(e, classname, "trigger_warpzone")); )
                e.solid = SOLID_BSP;
 }
@@ -148,6 +152,8 @@ void WarpZone_MakeAllSolid()
 void WarpZone_MakeAllOther()
 {
        entity e;
+       if(!warpzone_warpzones_exist)
+               return;
        for(e = world; (e = find(e, classname, "trigger_warpzone")); )
                e.solid = SOLID_TRIGGER;
 }
@@ -303,6 +309,9 @@ void WarpZone_TraceToss_ThroughZone(entity e, entity forent, entity zone, WarpZo
        vector vf, vr, vu, v0, o0;
        entity wz;
 
+       o0 = e.origin;
+       v0 = e.velocity;
+
        WarpZone_Trace_InitTransform();
        WarpZone_tracetoss_time = 0;
        if(!warpzone_warpzones_exist)
@@ -312,14 +321,15 @@ void WarpZone_TraceToss_ThroughZone(entity e, entity forent, entity zone, WarpZo
                        cb(e.origin, trace_endpos, trace_endpos);
                dt = vlen(e.origin - o0) / vlen(e.velocity);
                WarpZone_tracetoss_time += dt;
+               e.velocity_z -= dt * g;
+               WarpZone_tracetoss_velocity = e.velocity;
+               e.velocity = v0;
                return;
        }
 
        vf = v_forward;
        vr = v_right;
        vu = v_up;
-       o0 = e.origin;
-       v0 = e.velocity;
 
        // if starting in warpzone, first transform
        wz = WarpZone_Find(e.origin + e.mins, e.origin + e.maxs);
@@ -354,7 +364,7 @@ void WarpZone_TraceToss_ThroughZone(entity e, entity forent, entity zone, WarpZo
                e.origin = trace_endpos;
                dt = vlen(e.origin - o0) / vlen(e.velocity);
                WarpZone_tracetoss_time += dt;
-               e.velocity_z -= WarpZone_tracetoss_time * g;
+               e.velocity_z -= dt * g;
                if(trace_fraction >= 1)
                        break;
                if(trace_ent.classname != "trigger_warpzone")