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
.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
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)
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"
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
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
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
// 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)
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"
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"
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
// 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 \"${*}\""
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"
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 ""
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 ""
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
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 ""
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 ""
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 ""
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 ""
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"
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"
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 ""
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 ""
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
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 ""
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 ""
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 ""
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 ""
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
--- /dev/null
+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
+++ /dev/null
-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
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
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.
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;
}
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)
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;
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:
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)
.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.
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");
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;
}
#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;
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);
if(havail > vid_conheight - 70)
havail = vid_conheight - 70; // avoid overlapping HUD
- centerprint_start_x = 0;
-
#if 0
float forbiddenmin, forbiddenmax, allowedmin, allowedmax, preferred;
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");
}
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;
}
}
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)
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");
}
HUD_Panel_UpdatePosSizeForId(highlightedPanel)
+ vector prev_pos, prev_size;
+ prev_pos = panel_pos;
+ prev_size = panel_size;
+
if (hudShiftState & S_ALT) // resize
{
highlightedAction = 1;
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)
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)
}
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
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);
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)
{
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)
{
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;
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)
mySize -= '2 2 0' * panel_bg_padding;
}
- if(autocvar__hud_configure)
- {
- strength_time = 15;
- shield_time = 27;
- }
-
vector barpos, barsize;
vector picpos;
vector numpos;
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)
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
} 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 {
float width_attacker;
string attacker, victim;
- float i, j;
+ float i, j, w;
for(j = 0; j < entries; ++j)
{
s = "";
a = 0;
}
- float w;
+ w = -1;
w = DEATH_WEAPONOF(killnotify_deathtype[j]);
// TODO: maybe print in team colors?
{
s = "notify_teamkill_red";
}
+ else if(killnotify_deathtype[j] == DEATH_TELEFRAG)
+ {
+ s = "notify_telefrag";
+ }
else if(killnotify_deathtype[j] == DEATH_DROWN)
{
s = "notify_water";
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) {
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();
{
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
}
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)
{
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)
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)
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)
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:
//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;
}
}
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;
}
}
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)
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;
}
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 = "^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;
}
}
{
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);
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
float log(float f);
+vector centerprint_start;
+
float panel_order[HUD_PANEL_NUM];
string hud_panelorder_prev;
float last_weapon;
float weapontime;
+float weaponprevtime;
float teamnagger;
float hud_accuracy_hud;
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;
// ----------------------
// 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) {\
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");\
+ }\
}\
}\
}
} 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
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()\
{
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))
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;
interpolate.qh
teamradar.qh
hud.qh
+scoreboard.qh
waypointsprites.qh
movetypes.qh
prandom.qh
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;
}
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;
pos_x -= sbwidth/weapon_cnt / 2;
pos_x -= sbwidth;
pos_y += height;
+
+ pos_y += 1.25 * hud_fontsize_y;
return pos;
}
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()
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;
// 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;
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);
}
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;
--- /dev/null
+float HUD_WouldDrawScoreboard(void);
+float scoreboard_fade_alpha;
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();
};
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();
}
{
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;
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)
return 1;
}
+
+vector vec2(vector v)
+{
+ v_z = 0;
+ return v;
+}
case HUD_PANEL_CHAT: panel_name = HUD_PANELNAME_CHAT; break; \
}\
HUD_Panel_GetName_Part2(id)
+
+vector vec2(vector v);
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)
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);
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);
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
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));
}
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)
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);
.float wasFlying;
.float spectatorspeed;
+.float multijump_count;
+.float multijump_ready;
+.float prevjumpbutton;
+
/*
=============
PlayerJump
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))
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;
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;
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)
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
if (self.waterlevel == WATERLEVEL_SWIMMING)
CheckWaterJump ();
+ self.prevjumpbutton = self.BUTTON_JUMP;
}
if (self.flags & FL_WATERJUMP )
// 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);
//
self.takedamage = DAMAGE_NO;
self.event_damage = SUB_Null;
self.state = 1;
- setsize(self, '0 0 0', '0 0 0');
func_breakable_colormod();
}
self.takedamage = DAMAGE_AIM;
self.event_damage = func_breakable_damage;
self.state = 0;
- setsize(self, self.mins_save, self.maxs_save);
func_breakable_colormod();
}
self.mdl = self.model;
SetBrushEntityModel();
- self.mins_save = self.mins;
- self.maxs_save = self.maxs;
self.use = func_breakable_restore;
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)
player.pushltime = 0;
}
- if(player.isbot)
- player.lastteleporttime = time;
+ player.lastteleporttime = time;
// stop player name display
{
{
// 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;
}
}
{
// 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;
void WarpZone_MakeAllSolid()
{
entity e;
+ if(!warpzone_warpzones_exist)
+ return;
for(e = world; (e = find(e, classname, "trigger_warpzone")); )
e.solid = SOLID_BSP;
}
void WarpZone_MakeAllOther()
{
entity e;
+ if(!warpzone_warpzones_exist)
+ return;
for(e = world; (e = find(e, classname, "trigger_warpzone")); )
e.solid = SOLID_TRIGGER;
}
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)
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);
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")