// use default physics
set sv_friction_on_land 0
-exec physicsNoQWBunny.cfg
+exec physicsNoQWBunny-nexbased.cfg
set sv_player_viewoffset "0 0 35" "view offset of the player model"
set sv_player_mins "-16 -16 -24" "playermodel mins"
seta hud_panel_weapons_accuracy_color2 "0 1 0"
seta hud_panel_weapons_accuracy_color_levels "0 20 100" "accuracy values at which a specified color (hud_panel_weapons_accuracy_color<X>) will be used. If your accuracy is between 2 of these values then a mix of the Xth and X+1th colors will be used. You can specify up to 10 values, in increasing order"
seta hud_panel_weapons_ammo 1 "show ammo as a status bar"
-seta hud_panel_weapons_ammo_full_shells 40 "show 100% of the status bar at this ammo count"
-seta hud_panel_weapons_ammo_full_nails 100 "show 100% of the status bar at this ammo count"
-seta hud_panel_weapons_ammo_full_cells 60 "show 100% of the status bar at this ammo count"
-seta hud_panel_weapons_ammo_full_rockets 60 "show 100% of the status bar at this ammo count"
+seta hud_panel_weapons_ammo_full_shells 50 "show 100% of the status bar at this ammo count"
+seta hud_panel_weapons_ammo_full_nails 200 "show 100% of the status bar at this ammo count"
+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_notify_time 10 "time that a new entry stays until it fades out"
seta hud_skin "luminos"
-seta hud_panel_bg "border_horizontal"
+seta hud_panel_bg "border"
seta hud_panel_bg_color "0.875 0.375 0"
-seta hud_panel_bg_color_team "0"
+seta hud_panel_bg_color_team "1"
seta hud_panel_bg_alpha "1"
seta hud_panel_bg_border "6"
seta hud_panel_bg_padding "2"
seta hud_dock "dock"
seta hud_dock_color "0 0.1875 0.4375"
-seta hud_dock_color_team "0.700000"
+seta hud_dock_color_team "0.600000"
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 "4 6 5 9 3 1 7 12 0 10 2 11 14 8 13 "
+seta _hud_panelorder "11 0 9 2 10 14 12 6 3 13 4 8 7 1 5 "
seta hud_configure_grid "1"
-seta hud_configure_grid_xsize "0.01"
-seta hud_configure_grid_ysize "0.01"
+seta hud_configure_grid_xsize "0.005000"
+seta hud_configure_grid_ysize "0.005000"
seta hud_panel_weapons 1
-seta hud_panel_weapons_pos "0.908906 0.088047"
-seta hud_panel_weapons_size "0.066564 0.641367"
-seta hud_panel_weapons_bg "border_vertical"
+seta hud_panel_weapons_pos "0.915000 0.085000"
+seta hud_panel_weapons_size "0.060000 0.635000"
+seta hud_panel_weapons_bg ""
seta hud_panel_weapons_bg_color ""
seta hud_panel_weapons_bg_color_team ""
seta hud_panel_weapons_bg_alpha ""
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_weapons_aspect "2"
seta hud_panel_ammo 1
-seta hud_panel_ammo_pos "0.193516 0.925605"
-seta hud_panel_ammo_size "0.093750 0.061719"
+seta hud_panel_ammo_pos "0.190000 0.925000"
+seta hud_panel_ammo_size "0.095000 0.060000"
seta hud_panel_ammo_bg ""
seta hud_panel_ammo_bg_color ""
seta hud_panel_ammo_bg_color_team ""
seta hud_panel_ammo_iconalign "0"
seta hud_panel_powerups 1
-seta hud_panel_powerups_pos "0.363282 0.015742"
+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_bg_color ""
-seta hud_panel_powerups_bg_color_team ""
-seta hud_panel_powerups_bg_alpha "0"
+seta hud_panel_powerups_bg_color_team "1"
+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_iconalign "4"
+seta hud_panel_powerups_baralign "4"
seta hud_panel_powerups_progressbar "1"
seta hud_panel_healtharmor 1
-seta hud_panel_healtharmor_pos "0.305859 0.925606"
-seta hud_panel_healtharmor_size "0.311485 0.061230"
+seta hud_panel_healtharmor_pos "0.305000 0.925000"
+seta hud_panel_healtharmor_size "0.315000 0.060000"
seta hud_panel_healtharmor_bg ""
seta hud_panel_healtharmor_bg_color ""
-seta hud_panel_healtharmor_bg_color_team "0"
+seta hud_panel_healtharmor_bg_color_team "1"
seta hud_panel_healtharmor_bg_alpha "1"
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_iconalign "4"
+seta hud_panel_healtharmor_baralign "4"
seta hud_panel_healtharmor_progressbar "1"
seta hud_panel_notify 1
-seta hud_panel_notify_pos "0.663125 0.748536"
-seta hud_panel_notify_size "0.320000 0.180000"
+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_bg_color ""
seta hud_panel_notify_bg_color_team ""
seta hud_panel_timer_bg_padding "0"
seta hud_panel_radar 1
-seta hud_panel_radar_pos "0.023750 0.024395"
-seta hud_panel_radar_size "0.182969 0.224140"
-seta hud_panel_radar_bg "border_vertical"
+seta hud_panel_radar_pos "0.025000 0.025000"
+seta hud_panel_radar_size "0.180000 0.220000"
+seta hud_panel_radar_bg ""
seta hud_panel_radar_bg_color ""
seta hud_panel_radar_bg_color_team ""
seta hud_panel_radar_bg_alpha ""
seta hud_panel_radar_foreground_alpha "0.800000"
seta hud_panel_score 1
-seta hud_panel_score_pos "0.023516 0.925605"
-seta hud_panel_score_size "0.152344 0.060254"
+seta hud_panel_score_pos "0.025000 0.925000"
+seta hud_panel_score_size "0.145000 0.060000"
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.354531 0.206289"
+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_bg_color ""
seta hud_panel_racetimer_bg_padding ""
seta hud_panel_vote 1
-seta hud_panel_vote_pos "0.021094 0.650586"
+seta hud_panel_vote_pos "0.025000 0.660000"
seta hud_panel_vote_size "0.264218 0.102462"
seta hud_panel_vote_bg ""
seta hud_panel_vote_bg_color ""
seta hud_panel_vote_alreadyvoted_alpha "0.750000"
seta hud_panel_modicons 1
-seta hud_panel_modicons_pos "0.036563 0.271796"
+seta hud_panel_modicons_pos "0.040000 0.270000"
seta hud_panel_modicons_size "0.084766 0.199903"
seta hud_panel_modicons_bg ""
seta hud_panel_modicons_bg_color ""
seta hud_panel_modicons_bg_padding ""
seta hud_panel_pressedkeys 1
-seta hud_panel_pressedkeys_pos "0.411562 0.545429"
+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_bg_color ""
-seta hud_panel_pressedkeys_bg_color_team "0"
+seta hud_panel_pressedkeys_bg_color_team "1"
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.020000 0.774374"
+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_bg_color ""
seta hud_panel_chat_bg_padding ""
seta hud_panel_engineinfo 1
-seta hud_panel_engineinfo_pos "0.860000 0.950000"
-seta hud_panel_engineinfo_size "0.130000 0.034667"
+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_bg_color ""
seta hud_panel_engineinfo_bg_color_team ""
seta hud_panel_engineinfo_bg_padding ""
seta hud_panel_infomessages 1
-seta hud_panel_infomessages_pos "0.388751 0.378243"
-seta hud_panel_infomessages_size "0.233282 0.061679"
+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_bg_color ""
seta hud_panel_infomessages_bg_color_team ""
seta hud_skin "luminos"
-seta hud_panel_bg "border_horizontal"
+seta hud_panel_bg "border"
seta hud_panel_bg_color "0.875 0.375 0"
-seta hud_panel_bg_color_team "0"
+seta hud_panel_bg_color_team "1"
seta hud_panel_bg_alpha "1"
seta hud_panel_bg_border "6"
seta hud_panel_bg_padding "2"
seta hud_dock "dock"
seta hud_dock_color "0 0.1875 0.4375"
-seta hud_dock_color_team "0.700000"
+seta hud_dock_color_team "0.600000"
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 "4 6 5 9 3 1 7 12 0 10 2 11 14 8 13 "
+seta _hud_panelorder "11 0 9 2 10 14 12 6 3 13 4 8 7 1 5 "
seta hud_configure_grid "1"
-seta hud_configure_grid_xsize "0.01"
-seta hud_configure_grid_ysize "0.01"
+seta hud_configure_grid_xsize "0.005000"
+seta hud_configure_grid_ysize "0.005000"
seta hud_panel_weapons 1
-seta hud_panel_weapons_pos "0.908906 0.088047"
-seta hud_panel_weapons_size "0.066564 0.641367"
-seta hud_panel_weapons_bg "border_vertical"
+seta hud_panel_weapons_pos "0.915000 0.085000"
+seta hud_panel_weapons_size "0.060000 0.635000"
+seta hud_panel_weapons_bg ""
seta hud_panel_weapons_bg_color ""
seta hud_panel_weapons_bg_color_team ""
seta hud_panel_weapons_bg_alpha ""
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_weapons_aspect "2"
seta hud_panel_ammo 1
-seta hud_panel_ammo_pos "0.193516 0.925605"
-seta hud_panel_ammo_size "0.093750 0.061719"
+seta hud_panel_ammo_pos "0.190000 0.925000"
+seta hud_panel_ammo_size "0.095000 0.060000"
seta hud_panel_ammo_bg ""
seta hud_panel_ammo_bg_color ""
seta hud_panel_ammo_bg_color_team ""
seta hud_panel_ammo_iconalign "0"
seta hud_panel_powerups 1
-seta hud_panel_powerups_pos "0.363282 0.015742"
+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_bg_color ""
-seta hud_panel_powerups_bg_color_team ""
-seta hud_panel_powerups_bg_alpha "0"
+seta hud_panel_powerups_bg_color_team "1"
+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_iconalign "4"
+seta hud_panel_powerups_baralign "4"
seta hud_panel_powerups_progressbar "1"
seta hud_panel_healtharmor 1
-seta hud_panel_healtharmor_pos "0.305859 0.925606"
-seta hud_panel_healtharmor_size "0.311485 0.061230"
+seta hud_panel_healtharmor_pos "0.305000 0.925000"
+seta hud_panel_healtharmor_size "0.315000 0.060000"
seta hud_panel_healtharmor_bg ""
seta hud_panel_healtharmor_bg_color ""
-seta hud_panel_healtharmor_bg_color_team "0"
+seta hud_panel_healtharmor_bg_color_team "1"
seta hud_panel_healtharmor_bg_alpha "1"
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_iconalign "4"
+seta hud_panel_healtharmor_baralign "4"
seta hud_panel_healtharmor_progressbar "1"
seta hud_panel_notify 1
-seta hud_panel_notify_pos "0.663125 0.748536"
-seta hud_panel_notify_size "0.320000 0.180000"
+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_bg_color ""
seta hud_panel_notify_bg_color_team ""
seta hud_panel_timer_bg_padding "0"
seta hud_panel_radar 1
-seta hud_panel_radar_pos "0.023750 0.024395"
-seta hud_panel_radar_size "0.182969 0.224140"
-seta hud_panel_radar_bg "border_vertical"
+seta hud_panel_radar_pos "0.025000 0.025000"
+seta hud_panel_radar_size "0.180000 0.220000"
+seta hud_panel_radar_bg ""
seta hud_panel_radar_bg_color ""
seta hud_panel_radar_bg_color_team ""
seta hud_panel_radar_bg_alpha ""
seta hud_panel_radar_foreground_alpha "0.800000"
seta hud_panel_score 1
-seta hud_panel_score_pos "0.023516 0.925605"
-seta hud_panel_score_size "0.152344 0.060254"
+seta hud_panel_score_pos "0.025000 0.925000"
+seta hud_panel_score_size "0.145000 0.060000"
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.354531 0.206289"
+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_bg_color ""
seta hud_panel_racetimer_bg_padding ""
seta hud_panel_vote 1
-seta hud_panel_vote_pos "0.021094 0.650586"
+seta hud_panel_vote_pos "0.025000 0.660000"
seta hud_panel_vote_size "0.264218 0.102462"
seta hud_panel_vote_bg ""
seta hud_panel_vote_bg_color ""
seta hud_panel_vote_alreadyvoted_alpha "0.750000"
seta hud_panel_modicons 1
-seta hud_panel_modicons_pos "0.036563 0.271796"
+seta hud_panel_modicons_pos "0.040000 0.270000"
seta hud_panel_modicons_size "0.084766 0.199903"
seta hud_panel_modicons_bg ""
seta hud_panel_modicons_bg_color ""
seta hud_panel_modicons_bg_padding ""
seta hud_panel_pressedkeys 1
-seta hud_panel_pressedkeys_pos "0.411562 0.545429"
+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_bg_color ""
-seta hud_panel_pressedkeys_bg_color_team "0"
+seta hud_panel_pressedkeys_bg_color_team "1"
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.020000 0.774374"
+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_bg_color ""
seta hud_panel_chat_bg_padding ""
seta hud_panel_engineinfo 1
-seta hud_panel_engineinfo_pos "0.860000 0.950000"
-seta hud_panel_engineinfo_size "0.130000 0.034667"
+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_bg_color ""
seta hud_panel_engineinfo_bg_color_team ""
seta hud_panel_engineinfo_bg_padding ""
seta hud_panel_infomessages 1
-seta hud_panel_infomessages_pos "0.388751 0.378243"
-seta hud_panel_infomessages_size "0.233282 0.061679"
+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_bg_color ""
seta hud_panel_infomessages_bg_color_team ""
sv_gravity 800
sv_maxspeed 400
sv_maxairspeed 400
+
+
sv_stopspeed 100
sv_accelerate 15
sv_airaccelerate 2
-sv_friction 7
+sv_friction 8
edgefriction 1
sv_stepheight 34
-sv_jumpvelocity 300
+
+sv_jumpvelocity 250
sv_wateraccelerate -1
sv_waterfriction -1
-sv_airaccel_sideways_friction -0.2
+sv_airaccel_sideways_friction 0
sv_airaccel_qw -0.9475
-sv_airstopaccelerate 2.5
+
+sv_airstopaccelerate 3
sv_airstrafeaccelerate 24
sv_maxairstrafespeed 100
sv_airstrafeaccel_qw -0.9825
sv_aircontrol 125
-sv_aircontrol_penalty 0
+sv_aircontrol_penalty 100
sv_aircontrol_power 2.5
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
--- /dev/null
+// "NoQWBunny" physics based on XPM
+sv_gravity 800
+sv_maxspeed 320
+
+sv_maxairspeed 320
+
+sv_stopspeed 100
+sv_accelerate 15
+sv_airaccelerate 2
+sv_friction 8
+edgefriction 1
+sv_stepheight 34
+
+sv_jumpvelocity 250
+sv_wateraccelerate 4
+sv_waterfriction 1
+sv_airaccel_sideways_friction 0
+sv_airaccel_qw -0.937
+
+sv_airstopaccelerate 3
+sv_airstrafeaccelerate 20
+sv_maxairstrafespeed 96
+sv_airstrafeaccel_qw -0.979
+sv_aircontrol 125
+sv_aircontrol_penalty 100
+sv_aircontrol_power 2.5
+sv_airspeedlimit_nonqw 0
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
+sv_friction_on_land 0
+sv_doublejump 0
+sv_jumpspeedcap_min ""
+sv_jumpspeedcap_max ""
+sv_jumpspeedcap_max_disable_on_ramps 1
+++ /dev/null
-// "NoQWBunny" physics based on XPM
-sv_gravity 800
-sv_maxspeed 320
-
-sv_maxairspeed 320
-
-sv_stopspeed 100
-sv_accelerate 15
-sv_airaccelerate 2
-sv_friction 8
-edgefriction 1
-sv_stepheight 34
-
-sv_jumpvelocity 250
-sv_wateraccelerate 4
-sv_waterfriction 1
-sv_airaccel_sideways_friction 0
-sv_airaccel_qw -0.937
-
-sv_airstopaccelerate 3
-sv_airstrafeaccelerate 20
-sv_maxairstrafespeed 96
-sv_airstrafeaccel_qw -0.979
-sv_aircontrol 125
-sv_aircontrol_penalty 100
-sv_aircontrol_power 2.5
-sv_airspeedlimit_nonqw 0
-sv_warsowbunny_turnaccel 0
-sv_warsowbunny_accel 0.1593
-sv_warsowbunny_topspeed 925
-sv_warsowbunny_backtosideratio 0.8
-sv_friction_on_land 0
-sv_doublejump 0
-sv_jumpspeedcap_min ""
-sv_jumpspeedcap_max ""
-sv_jumpspeedcap_max_disable_on_ramps 1
weapontime = time;
last_weapon = activeweapon;
- entity e;
e = get_weaponinfo(activeweapon);
if(e.netname != "")
localcmd(strcat("\ncl_hook_activeweapon ", e.netname), "\n");
bullets = 0;
#define CROSSHAIR_DRAW_RING(i,j,sz,wcross_name,wcross_alpha) \
- drawpic(wcross_origin - ('0.5 0 0' * (sz * wcross_size_x * ring_scale + i * wcross_blur) + '0 0.5 0' * (sz * wcross_size_y * ring_scale + j * wcross_blur)), strcat("gfx/hud/", cvar_string("hud_skin"), "/rifle_ring_", ftos(bullets)), sz * wcross_size * ring_scale, wcross_color, wcross_alpha, DRAWFLAG_NORMAL)
+ drawpic(wcross_origin - ('0.5 0 0' * (sz * wcross_size_x * ring_scale + i * wcross_blur) + '0 0.5 0' * (sz * wcross_size_y * ring_scale + j * wcross_blur)), strcat("gfx/rifle_ring_", ftos(bullets)), sz * wcross_size * ring_scale, wcross_color, wcross_alpha, DRAWFLAG_NORMAL)
#define CROSSHAIR_DO_BLUR(M,sz,wcross_name,wcross_alpha) \
do \
switch(hud)
{
case HUD_NORMAL:
+ // do some accuracy var caching
+ float i;
+ if(!(gametype == GAME_RACE || gametype == GAME_CTS))
+ {
+ acc_levels = tokenize(cvar_string("hud_panel_weapons_accuracy_color_levels"));
+ if (acc_levels > MAX_ACCURACY_LEVELS)
+ acc_levels = MAX_ACCURACY_LEVELS;
+
+ for (i = 0; i < acc_levels; ++i)
+ acc_lev[i] = stof(argv(i));
+ }
+
// hud first
HUD_Main();
if(fh >= 0)
{
fputs(fh, strcat("seta hud_skin \"", cvar_string("hud_skin"), "\"", "\n"));
- fputs(fh, strcat("seta hud_bg \"", cvar_string("hud_bg"), "\"", "\n"));
- fputs(fh, strcat("seta hud_bg_color \"", cvar_string("hud_bg_color"), "\"", "\n"));
- fputs(fh, strcat("seta hud_bg_color_team \"", cvar_string("hud_bg_color_team"), "\"", "\n"));
- fputs(fh, strcat("seta hud_bg_alpha \"", cvar_string("hud_bg_alpha"), "\"", "\n"));
- fputs(fh, strcat("seta hud_bg_border \"", cvar_string("hud_bg_border"), "\"", "\n"));
- fputs(fh, strcat("seta hud_bg_padding \"", cvar_string("hud_bg_padding"), "\"", "\n"));
- fputs(fh, strcat("seta hud_fg_alpha \"", cvar_string("hud_fg_alpha"), "\"", "\n"));
+ fputs(fh, strcat("seta hud_panel_bg \"", cvar_string("hud_panel_bg"), "\"", "\n"));
+ fputs(fh, strcat("seta hud_panel_bg_color \"", cvar_string("hud_panel_bg_color"), "\"", "\n"));
+ fputs(fh, strcat("seta hud_panel_bg_color_team \"", cvar_string("hud_panel_bg_color_team"), "\"", "\n"));
+ fputs(fh, strcat("seta hud_panel_bg_alpha \"", cvar_string("hud_panel_bg_alpha"), "\"", "\n"));
+ fputs(fh, strcat("seta hud_panel_bg_border \"", cvar_string("hud_panel_bg_border"), "\"", "\n"));
+ fputs(fh, strcat("seta hud_panel_bg_padding \"", cvar_string("hud_panel_bg_padding"), "\"", "\n"));
+ fputs(fh, strcat("seta hud_panel_fg_alpha \"", cvar_string("hud_panel_fg_alpha"), "\"", "\n"));
fputs(fh, "\n");
fputs(fh, strcat("seta hud_dock \"", cvar_string("hud_dock"), "\"", "\n"));
fputs(fh, strcat("seta hud_panel_", panel_name, "_complainbubble_color_unavailable \"", cvar_string(strcat("hud_panel_", panel_name, "_complainbubble_color_unavailable")), "\"", "\n"));
fputs(fh, strcat("seta hud_panel_", panel_name, "_ammo_color \"", cvar_string(strcat("hud_panel_", panel_name, "_ammo_color")), "\"", "\n"));
fputs(fh, strcat("seta hud_panel_", panel_name, "_ammo_alpha \"", cvar_string(strcat("hud_panel_", panel_name, "_ammo_alpha")), "\"", "\n"));
- fputs(fh, strcat("seta hud_panel_", panel_name, "_aspect \"", cvar_string(strcat("hud_panel_", panel_name, "_ammo_alpha")), "\"", "\n"));
+ fputs(fh, strcat("seta hud_panel_", panel_name, "_aspect \"", cvar_string(strcat("hud_panel_", panel_name, "_aspect")), "\"", "\n"));
break;
case HUD_PANEL_AMMO:
fputs(fh, strcat("seta hud_panel_", panel_name, "_onlycurrent \"", cvar_string(strcat("hud_panel_", panel_name, "_onlycurrent")), "\"", "\n"));
}
}
-#define acc_color(i) stov(cvar_string(strcat("hud_panel_weapons_accuracy_color", ftos(i))))
-#define MAX_ACCURACY_LEVELS 10
-float acc_lev[MAX_ACCURACY_LEVELS];
-
void HUD_Weapons(void)
{
if(!autocvar_hud_panel_weapons && !autocvar__hud_configure)
vector wpnpos;
vector wpnsize;
- float acc_levels;
- if(autocvar_hud_panel_weapons_accuracy && !(gametype == GAME_RACE || gametype == GAME_CTS))
- {
- acc_levels = tokenize(cvar_string("hud_panel_weapons_accuracy_color_levels"));
- if (acc_levels > MAX_ACCURACY_LEVELS)
- acc_levels = MAX_ACCURACY_LEVELS;
-
- for (i = 0; i < acc_levels; ++i)
- acc_lev[i] = stof(argv(i));
- }
-
for(i = 0; i < weapon_cnt; ++i)
{
wpnpos = pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows);
if (stof(s2) > 2) // killcount > 2
print ("^1",s1,"^1 ended it all after a ",s2," kill spree\n");
+ } else if(msg == MSG_KILL_MELEE) { // handle melee types separately
+ if(type == KILL_FRAG_GAUNTLET) {
+ if(alsoprint)
+ {
+ if(gentle) {
+ print ("^1", s1, "^1 got too close to", s2, "^1's gauntlet\n");
+ } else {
+ print ("^1", s1, "^1 was cut in half by", s2, "^1's gauntlet\n");
+ }
+ }
+ }
+ else if(type == KILL_FRAG_SHOTGUN_MELEE)
+ {
+ if(alsoprint)
+ {
+ print ("^7", s2, "^7 slapped ", s1, "^7 around a bit with a large ^2shotgun\n");
+ }
+ }
+ HUD_KillNotify_Push(s1, s2, 1, type);
} else if(msg == MSG_KILL) {
w = DEATH_WEAPONOF(type);
if(WEP_VALID(w)) {
self = get_weaponinfo(killnotify_deathtype[j]);
s = strcat("weapon", self.netname);
}
+ else if(killnotify_deathtype[j] == KILL_FRAG_GAUNTLET)
+ {
+ s = "notify_melee";
+ }
+ else if(killnotify_deathtype[j] == KILL_FRAG_SHOTGUN_MELEE)
+ {
+ s = "notify_melee";
+ }
else if(killnotify_deathtype[j] == KILL_TEAM_RED)
{
s = "notify_teamkill_red";
float weapon_hits[WEP_MAXCOUNT];
float weapon_fired[WEP_MAXCOUNT];
+#define acc_color(i) stov(cvar_string(strcat("hud_panel_weapons_accuracy_color", ftos(i))))
+#define MAX_ACCURACY_LEVELS 10
+float acc_lev[MAX_ACCURACY_LEVELS];
+float acc_levels;
+
float complain_weapon;
string complain_weapon_name;
float complain_weapon_type;
weapon_alpha = 0.2 * scoreboard_alpha_fg;
// weapon icon
- drawpic_aspect(pos, strcat("gfx/hud/", cvar_string("hud_skin"), "/weapon", self.netname), '1 0 0' * sbwidth * (1/weapon_cnt) + '0 1 0' * height * (2/3), '1 1 1', weapon_alpha, DRAWFLAG_NORMAL);
+ drawpic_aspect_skin(pos, strcat("weapon", self.netname), '1 0 0' * sbwidth * (1/weapon_cnt) + '0 1 0' * height * (2/3), '1 1 1', weapon_alpha, DRAWFLAG_NORMAL);
// the accuracy
if(weapon_damage) {
weapons_with_stats += 1;
float padding;
padding = ((sbwidth/weapon_cnt) - stringwidth(s, FALSE, '1 0 0' * fontsize)) / 2; // center the accuracy value
- // yellow_accuracy = value at which accuracy becomes yellow
- if(weapon_stats >= 100) {
- rgb_x = 0;
- rgb_y = 1;
- }
- else if(weapon_stats > autocvar_hud_panel_weapons_accuracy_yellow) {
- rgb_x = 1 - (weapon_stats-autocvar_hud_panel_weapons_accuracy_yellow)/(100-autocvar_hud_panel_weapons_accuracy_yellow); // red value between 1 -> 0
- rgb_y = 1;
- } else {
- rgb_x = 1;
- rgb_y = weapon_stats/autocvar_hud_panel_weapons_accuracy_yellow; // green value between 0 -> 1
+ 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);
}
- rgb_z = 0;
+
+ // 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]);
+ rgb = acc_color(j);
+ rgb = rgb + factor * (acc_color(j+1) - rgb);
+
drawstring(pos + '1 0 0' * padding + '0 1 0' * height * (2/3), s, '1 1 0' * fontsize, rgb, scoreboard_alpha_fg, DRAWFLAG_NORMAL);
}
pos_x += sbwidth/weapon_cnt * rows;
// CSQC centerprint/notify message types
float MSG_SUICIDE = 0;
-float MSG_KILL = 1;
-float MSG_SPREE = 2;
-float MSG_KILL_ACTION = 3;
-float MSG_KILL_ACTION_SPREE = 4;
-float MSG_INFO = 5;
+float MSG_KILL_MELEE = 1;
+float MSG_KILL = 2;
+float MSG_SPREE = 3;
+float MSG_KILL_ACTION = 4;
+float MSG_KILL_ACTION_SPREE = 5;
+float MSG_INFO = 6;
float KILL_TEAM_RED = 10301;
float KILL_TEAM_BLUE = 10302;
float KILL_TYPEFRAG = 10306;
float KILL_TYPEFRAGGED = 10307;
float KILL_FRAG = 10308;
-float KILL_FRAGGED = 10309;
-float KILL_SPREE = 10310;
-float KILL_END_SPREE = 10311;
-float KILL_SPREE_3 = 10312;
-float KILL_SPREE_5 = 10313;
-float KILL_SPREE_10 = 10314;
-float KILL_SPREE_15 = 10315;
-float KILL_SPREE_20 = 10316;
-float KILL_SPREE_25 = 10317;
-float KILL_SPREE_30 = 10318;
-
-float INFO_GOTFLAG = 10319;
-float INFO_PICKUPFLAG = 10320;
-float INFO_LOSTFLAG = 10321;
-float INFO_RETURNFLAG = 10322;
-float INFO_CAPTUREFLAG = 10323;
+float KILL_FRAG_GAUNTLET = 10309;
+float KILL_FRAG_SHOTGUN_MELEE = 10310;
+float KILL_FRAGGED = 10311;
+float KILL_SPREE = 10312;
+float KILL_END_SPREE = 10313;
+float KILL_SPREE_3 = 10314;
+float KILL_SPREE_5 = 10315;
+float KILL_SPREE_10 = 10316;
+float KILL_SPREE_15 = 10317;
+float KILL_SPREE_20 = 10318;
+float KILL_SPREE_25 = 10319;
+float KILL_SPREE_30 = 10320;
+
+float INFO_GOTFLAG = 10321;
+float INFO_PICKUPFLAG = 10322;
+float INFO_LOSTFLAG = 10323;
+float INFO_RETURNFLAG = 10324;
+float INFO_CAPTUREFLAG = 10325;
// weapon requests
float WR_SETUP = 1; // (SVQC) setup weapon data
SUPER(XonoticColorpickerString).draw(me);
+ vector sz;
+ sz = draw_PictureSize(strcat(me.src, "_selected"));
+ sz = globalToBoxSize(sz, draw_scale);
+
if(me.disabled)
me.prevcoords = '1 1 0';
else
- draw_Picture(me.imgOrigin + me.prevcoords - '0.05 0.125 0', strcat(me.src, "_selected"), '0.1 0.25 0', '1 1 1', 1);
+ draw_Picture(me.imgOrigin + me.prevcoords - 0.5 * sz, strcat(me.src, "_selected"), sz, '1 1 1', 1);
draw_alpha = save;
}
#endif
me.TR(me);
me.TDempty(me, 0.2);
me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Forced aspect:"));
- me.TD(me, 1, 2.6, e = makeXonoticSlider(0.25, 4, 0.25, "hud_panel_pressedkeys_aspect"));
+ me.TD(me, 1, 2.6, e = makeXonoticSlider(0.2, 4, 0.1, "hud_panel_pressedkeys_aspect"));
}
#endif
ATTRIB(XonoticHUDExitDialog, title, string, "Panel HUD Setup")
ATTRIB(XonoticHUDExitDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT)
ATTRIB(XonoticHUDExitDialog, intendedWidth, float, 0.4)
- ATTRIB(XonoticHUDExitDialog, rows, float, 20)
+ ATTRIB(XonoticHUDExitDialog, rows, float, 18)
ATTRIB(XonoticHUDExitDialog, columns, float, 4)
ATTRIB(XonoticHUDExitDialog, name, string, "HUDExit")
ENDCLASS(XonoticHUDExitDialog)
me.TR(me);
me.TD(me, 1, 4, makeXonoticTextLabel(0, "Panel background defaults:"));
me.TR(me);
- me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Background:"));
+ me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "Background:"));
+ me.TD(me, 1, 1.6, e = makeXonoticTextSlider(strzone(strcat("hud_panel_bg"))));
+ e.addValue(e, "Disable", "0");
+ e.addValue(e, "border_default", "border_default");
+ e.configureXonoticTextSliderValues(e);
me.TR(me);
me.TDempty(me, 0.2);
me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:"));
me.TD(me, 2, 2.4, e = makeXonoticColorpickerString("hud_panel_bg_color"));
- setDependentStringNotEqual(e, "hud_panel_bg_color", "");
me.TR(me);
me.TR(me);
me.TDempty(me, 0.2);
e.configureXonoticTextSliderValues(e);
me.TR(me);
- me.TD(me, 1, 4, makeXonoticTextLabel(0, "Dock settings:"));
+ me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, "HUD Dock:"));
+ 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, "Large", "dock_large");
+ e.configureXonoticTextSliderValues(e);
+ me.TR(me);
+ me.TDempty(me, 0.2);
+ me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Color:"));
+ me.TD(me, 2, 2.4, e = makeXonoticColorpickerString("hud_dock_color"));
+ me.TR(me);
me.TR(me);
me.TDempty(me, 0.2);
- me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Alpha:"));
+ me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Alpha:"));
me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_dock_alpha"));
for(i = 1; i <= 10; ++i)
e.addValue(e, strzone(ftos_decimals(i/10, 1)), strzone(ftos(i/10)));
e.configureXonoticTextSliderValues(e);
me.TR(me);
me.TDempty(me, 0.2);
- me.TD(me, 1, 2, e = makeXonoticTextLabel(0, "Team color:"));
+ me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Team color:"));
me.TD(me, 1, 2.6, e = makeXonoticTextSlider("hud_dock_color_team"));
e.addValue(e, "Disable", "0");
for(i = 1; i <= 10; ++i)
attacker.taunt_soundtime = time + 1;
// TODO: fix this?
- if (deathtype == DEATH_CUSTOM)
- msg = strcat(deathmessage, " by ^1", msg);
- else if (deathtype == DEATH_HURTTRIGGER && inflictor.message2 != "")
- {
- msg = ftos(strstrofs(inflictor.message2, "#", 0));
- }
- Send_KillNotification(s, a, msg, deathtype, MSG_KILL);
+ if (deathtype == DEATH_CUSTOM)
+ msg = strcat(deathmessage, " by ^1", msg);
+ else if (deathtype == DEATH_HURTTRIGGER && inflictor.message2 != "")
+ {
+ msg = ftos(strstrofs(inflictor.message2, "#", 0));
+ }
+
+ float msgtype;
+ w = DEATH_WEAPONOF(deathtype);
+ if(w == WEP_LASER && ((cvar("g_balance_laser_secondary_gauntlet") && w & HITTYPE_SECONDARY) || (cvar("g_balance_laser_primary_gauntlet") && !(w & HITTYPE_SECONDARY))))
+ {
+ msgtype = MSG_KILL_MELEE;
+ deathtype = KILL_FRAG_GAUNTLET;
+ }
+ else if(w == WEP_SHOTGUN && (cvar("g_balance_shotgun_secondary_melee") && w & HITTYPE_SECONDARY))
+ {
+ msgtype = MSG_KILL_MELEE;
+ deathtype = KILL_FRAG_SHOTGUN_MELEE;
+ }
+
+ Send_KillNotification(s, a, msg, deathtype, MSG_KILL);
if(g_ctf && targ.flagcarried)
{
if (attacker.killcount > 2) {
Send_KillNotification(a, ftos(attacker.killcount), "", KILL_SPREE, MSG_SPREE);
}
-
- LogDeath("frag", deathtype, attacker, targ);
-
- if (attacker.killcount == 3)
+ else if (attacker.killcount == 3)
{
Send_KillNotification(a, "", "", KILL_SPREE_3, MSG_SPREE);
AnnounceTo(attacker, "03kills");
Send_KillNotification(a, "", "", KILL_SPREE_30, MSG_SPREE);
AnnounceTo(attacker, "30kills");
}
+ LogDeath("frag", deathtype, attacker, targ);
}
}
else