Merge branch 'master' into terencehill/music_player
authorTimePath <andrew.hardaker1995@gmail.com>
Wed, 17 Dec 2014 01:14:43 +0000 (12:14 +1100)
committerTimePath <andrew.hardaker1995@gmail.com>
Wed, 17 Dec 2014 01:29:22 +0000 (12:29 +1100)
Conflicts:
qcsrc/menu/classes.c
qcsrc/menu/xonotic/dialog_multiplayer.c

1  2 
defaultXonotic.cfg
qcsrc/menu/classes.c
qcsrc/menu/xonotic/dialog_multiplayer_media.c
qcsrc/menu/xonotic/dialog_multiplayer_media_musicplayer.c

diff --combined defaultXonotic.cfg
@@@ -44,8 -44,6 +44,6 @@@ alias dropweapon "impulse 17
  alias +show_info +button7
  alias -show_info -button7
  
- bind f6 team_auto
  // merge lightmaps up to 2048x2048 textures
  mod_q3bsp_lightmapmergepower 4
  
@@@ -56,11 -54,12 +54,12 @@@ _cl_playermodel models/player/erebus.iq
  _cl_playerskin 0
  
  seta cl_reticle 1 "control for toggling whether ANY zoom reticles are shown"
- seta cl_reticle_stretch 0 "whether to stretch reticles so they fit the screen (brakes image proportions)"
- seta cl_reticle_item_nex 1 "draw aiming reticle for the nex weapon's zoom, 0 disables and values between 0 and 1 change alpha"
+ seta cl_reticle_stretch 0 "whether to stretch reticles so they fit the screen (breaks image proportions)"
+ seta cl_reticle_item_vortex 1 "draw aiming reticle for the vortex weapon's zoom, 0 disables and values between 0 and 1 change alpha"
  seta cl_reticle_item_normal 1 "draw reticle when zooming with the zoom button, 0 disables and values between 0 and 1 change alpha"
- fov 90
- seta cl_velocityzoom 0        "velocity based zooming of fov, negative values zoom out"
+ fov 100
+ seta cl_velocityzoom_enabled 0 "velocity based zooming of fov"
+ seta cl_velocityzoom_factor 0 "factor of fov zooming (negative values zoom out)"
  seta cl_velocityzoom_type 3 "how to factor in speed, 1 = all velocity in all directions, 2 = velocity only in forward direction (can be negative), 3 = velocity only in forward direction (limited to forward only)"
  seta cl_velocityzoom_speed 1000 "target speed for fov factoring"
  seta cl_velocityzoom_time 0.2 "time value for averaging speed values"
@@@ -141,6 -140,9 +140,9 @@@ set rpn_linear_to_sRGB "dup 1.0 2.4 di
  // q3map_skylight 9.32523632 3
  alias skybox_nosRGB_to_sRGB "rpn $3 402.123 $4 div div $rpn_sRGB_to_linear 402.123 $4 div mul /new_skylight: $3 402.123 $4 div div $1 256 div $2 0.017453 mul sin mul add $rpn_sRGB_to_linear $3 402.123 $4 div div $rpn_sRGB_to_linear sub 256 mul $2 0.017453 mul sin div /new_sunlight:"
  
+ set cl_orthoview 0 "enable top-down view of the map- meant to be used for radar map images (note: orthoview sets cvars temporarily, requires restart to return them to normal)"
+ set cl_orthoview_nofog 1 "disable fog while in orthoview-- note, should not be enabled on ALL maps, i.e. oilrig works fine with this disabled"
  // these settings determine how much the view is affected by movement/damage
  cl_smoothviewheight 0.05 // time of the averaging to the viewheight value so that it creates a smooth transition for crouching and such. 0 for instant transition
  cl_deathfade 0 // fade screen to dark red when dead, value represents how fast the fade is (higher is faster)
@@@ -217,10 -219,14 +219,14 @@@ set sv_ready_restart 0 "if set to 1 all
  set sv_ready_restart_after_countdown 0        "if set to 1 the players and map items are reset after the countdown ended, otherwise they're reset already at the beginning of the countdown"
  set sv_ready_restart_repeatable 0     "allows the players to restart the game as often as needed"
  
- seta cl_hitsound 1 "play a hit notifier sound when you have hit an enemy"
+ seta cl_hitsound 1 "play a hit notifier sound when you have hit an enemy, 1: same pitch 2: increase pitch with more damage 3: decrease pitch with more damage"
  set cl_hitsound_antispam_time 0.05 "don't play the hitsound more often than this"
+ seta cl_hitsound_min_pitch 0.75 "minimum pitch of hit sound"
+ seta cl_hitsound_max_pitch 1.5 "maximum pitch of hit sound"
+ seta cl_hitsound_nom_damage 25 "damage amount at which hitsound bases pitch off"
  
- seta cl_eventchase_death 1 "camera goes into 3rd person mode when the player is dead"
+ seta cl_eventchase_death 1 "camera goes into 3rd person mode when the player is dead; set to 2 to active the effect only when the corpse doesn't move anymore"
+ seta cl_eventchase_nexball 1 "camera goes into 3rd person mode when in nexball game-mode"
  seta cl_eventchase_distance 140 "final camera distance"
  seta cl_eventchase_speed 1.3 "how fast the camera slides back, 0 is instant"
  seta cl_eventchase_maxs "12 12 8" "max size of eventchase camera bbox"
@@@ -253,8 -259,8 +259,8 @@@ set sv_timeout_number 2    "how many timeo
  set sv_timeout_leadtime 4     "how long the players will be informed that a timeout was called before it starts, in seconds"
  set sv_timeout_resumetime 3   "how long the remaining timeout-time will be after a player called the timein command"
  
- set g_allow_oldnexbeam 0 "If enabled, clients are allowed to use old v2.3 Nexgun beam"
- seta cl_particles_oldnexbeam 0 "Uses the old v2.3 Nexgun beam instead of the new beam, only works if server allows it (g_allow_oldnexbeam 1)"
+ set g_allow_oldvortexbeam 0 "If enabled, clients are allowed to use old v2.3 Vortex beam"
+ seta cl_particles_oldvortexbeam 0 "Uses the old v2.3 Vortex beam instead of the new beam, only works if server allows it (g_allow_oldvortexbeam 1)"
  
  set g_telefrags 1 "telefragging, i.e. killing someone who stands in the way of someone who is teleporting"
  set g_telefrags_teamplay 1 "never telefrag team mates"
@@@ -356,9 -362,9 +362,9 @@@ set bot_ai_keyboard_threshold 0.5
  set bot_ai_aimskill_offset 0.3 "Amount of error induced to the bots aim"
  set bot_ai_aimskill_think 1 "Aiming velocity. Use values below 1 for slower aiming"
  set bot_ai_custom_weapon_priority_distances "300 850" "Define close and far distances in any order. Based on the distance to the enemy bots will choose different weapons"
- set bot_ai_custom_weapon_priority_far   "minstanex nex rifle electro rocketlauncher grenadelauncher hagar hlac crylink laser uzi fireball seeker shotgun tuba minelayer"      "Desired weapons for far distances ordered by priority"
- set bot_ai_custom_weapon_priority_mid   "minstanex rocketlauncher nex fireball seeker grenadelauncher electro uzi crylink hlac hagar shotgun laser rifle tuba minelayer"      "Desired weapons for middle distances ordered by priority"
- set bot_ai_custom_weapon_priority_close "minstanex shotgun nex uzi hlac tuba seeker hagar crylink grenadelauncher electro rocketlauncher laser fireball rifle minelayer"      "Desired weapons for close distances ordered by priority"
+ set bot_ai_custom_weapon_priority_far   "vaporizer vortex rifle electro devastator mortar hagar hlac crylink blaster machinegun fireball seeker shotgun tuba minelayer"       "Desired weapons for far distances ordered by priority"
+ set bot_ai_custom_weapon_priority_mid   "vaporizer devastator vortex fireball seeker mortar electro machinegun crylink hlac hagar shotgun blaster rifle tuba minelayer arc shockwave" "Desired weapons for middle distances ordered by priority"
+ set bot_ai_custom_weapon_priority_close "vaporizer shotgun vortex machinegun hlac tuba seeker hagar crylink mortar electro devastator blaster fireball rifle minelayer arc shockwave" "Desired weapons for close distances ordered by priority"
  set bot_ai_weapon_combo 1     "Enable bots to do weapon combos"
  set bot_ai_weapon_combo_threshold 0.4 "Try to make a combo N seconds after the last attack"
  set bot_ai_friends_aware_pickup_radius "500"  "Bots will not pickup items if a team mate is this distance near the item"
@@@ -412,9 -418,7 +418,7 @@@ set g_use_ammunition 1 "if set to 0 al
  set g_pickup_items -1 "if set to 0 all items (health, armor, ammo, weapons...) are removed from the map, if 1 they are forced to spawn"
  set g_weaponarena "0" "put in a list of weapons to enable a weapon arena mode, or try \"all\" or \"most\""
  set g_weaponarena_random "0"  "if set to a number, only that weapon count is given on every spawn (randomly)"
- set g_weaponarena_random_with_laser "1"       "additionally, always provide the laser in random weapon arena games"
- set g_midair 0 "if set to 1 you can only apply damage to your opponent while he is airborne"
- set g_midair_shieldtime 0.3 "number of seconds you are still invincible since you lost contact to the ground"
+ set g_weaponarena_random_with_blaster "1"     "additionally, always provide the blaster in random weapon arena games"
  set g_spawnpoints_auto_move_out_of_solid 0 "if set to 1 you will see a warning if a spawn point was placed inside a solid"
  set g_forced_respawn 0 "if set to 1 and a player died, that player gets automatically respawned once <g_respawn_delay> seconds are over"
  set g_fullbrightplayers 0 "brightens up player models (note that the color, skin or model of the players does not change!)"
@@@ -452,7 -456,9 +456,9 @@@ seta menu_sandbox_edit_physics 
  seta menu_sandbox_edit_force 1
  seta menu_sandbox_edit_material ""
  
- bind f7 menu_showsandboxtools
+ seta menu_monsters_edit_spawn ""
+ seta menu_monsters_edit_skin 0
+ seta menu_monsters_edit_movetarget 1
  
  set g_playerclip_collisions 1 "0 = disable collision testing against playerclips, might be useful on some defrag maps"
  set g_botclip_collisions 1 "0 = disable collision testing against botclips, might be useful on some defrag maps"
  set g_grappling_hook 0 "let players spawn with the grappling hook which allows them to pull themselves up"
  
  set g_spawn_alloweffects 1 "allow clients to enable spawn point and event effects such as particles and sounds, see cl_spawn_ cvars for more info"
- set g_spawn_furthest 1 "this amount of the spawns shall be far away from any players"
+ set g_spawn_furthest 0.5 "this amount of the spawns shall be far away from any players"
  set g_spawn_useallspawns 0 "use all spawns, e.g. also team spawns in non-teamplay, and all spawns, even enemy spawns, in teamplay"
  // respawn delay
- set g_respawn_delay 2 "number of seconds you have to wait before you can respawn again"
+ set g_respawn_delay_small 2 "small game number of seconds you have to wait before you can respawn again"
+ set g_respawn_delay_small_count 0 "Player count per team for g_respawn_delay_small. <=0 values mean the minimum amount of players to have gameplay (typically 2 in FFA, 1 in teamplay)."
+ set g_respawn_delay_large 2 "large game number of seconds you have to wait before you can respawn again"
+ set g_respawn_delay_large_count 8 "Player count per team for g_respawn_delay_large. <=0 values mean the minimum amount of players to have gameplay (typically 2 in FFA, 1 in teamplay)."
  set g_respawn_delay_max 0 "number of seconds you can wait before you're forced to respawn (only effective with g_forced_respawn 1)"
  set g_respawn_waves 0 "respawn in waves (every n seconds), intended to decrease overwhelming base attacks"
  
@@@ -476,7 -485,7 +485,7 @@@ seta timelimit_suddendeath 5 "number o
  set g_tdm 0 "Team Deathmatch: the team who kills their opponents most often wins"
  set g_tdm_on_dm_maps 0 "when this is set, all DM maps automatically support TDM"
  
- seta teamplay_mode 4 "default teamplay setting in team games. 1 = no friendly fire, self damage. 2 = friendly fire and self damage enabled. 3 = no friendly fire, but self damage enabled. 4 = obey the following four cvars"
+ seta teamplay_mode 4 "default teamplay setting in team games. 1 = no friendly fire, self damage. 2 = friendly fire and self damage enabled. 3 = no friendly fire, but self damage enabled. 4 = obey the cvars g_mirrordamage*, g_friendlyfire* and g_teamdamage_threshold*"
  seta g_mirrordamage 0.700000  "for teamplay 4: mirror damage factor"
  seta g_mirrordamage_virtual 1 "for teamplay 4: do not actually apply mirror damage, just show graphics effect for it"
  seta g_friendlyfire 0.500000  "for teamplay 4: fiendly fire factor"
@@@ -497,8 -506,6 +506,6 @@@ set g_bloodloss 0   "amount of health b
  
  set g_footsteps 1     "serverside footstep sounds"
  
- set g_deathglow 1.25 "when enabled, players stop glowing after they die (the value specifies glow fading speed)"
  set g_multijump 0     "Number of multiple jumps to allow (jumping again in the air), -1 allows for infinite jumps"
  set g_multijump_add 0 "0 = make the current z velocity equal to jumpvelocity, 1 = add jumpvelocity to the current z velocity"
  set g_multijump_speed -999999 "Minimum vertical speed a player must have in order to jump again"
@@@ -533,12 -540,12 +540,12 @@@ r_mipsprites 
  r_mipskins 1
  r_shadow_realtime_world_lightmaps 1
  cl_decals_fadetime 5
- cl_decals_time 2
+ cl_decals_time 1
  seta cl_gunalign 3 "Gun alignment; 1 = center (if allowed by g_shootfromclient) or right, 2 = center (if allowed by g_shootfromclient) or left, 3 = right only, 4 = left only"
  seta cl_nogibs 0 "reduce number of violence effects, or remove them totally"
  seta cl_particlegibs 0 "simpler gibs"
  seta cl_gibs_damageforcescale 3.5 "force to push around gibs"
- seta cl_gibs_lifetime 5 "average lifetime of gibs"
+ seta cl_gibs_lifetime 2.5 "average lifetime of gibs"
  seta cl_gibs_velocity_scale 1 "gib throw velocity force scale"
  seta cl_gibs_velocity_random 1 "gib throw velocity randomness scale"
  seta cl_gibs_velocity_up 1 "extra z velocity for gibs"
@@@ -550,7 -557,7 +557,7 @@@ seta cl_casings_shell_time 30 "shell ca
  seta cl_casings_bronze_time 10 "bullet casings lifetime"
  seta cl_casings_ticrate 0.1 "ticrate for casings"
  seta cl_casings_sloppy 1 "sloppy casings, may temporarily penetrate walls"
- seta cl_projectiles_sloppy 0 "sloppy projectiles, may temporarily penetrate walls"
+ seta cl_projectiles_sloppy 1 "sloppy projectiles, may temporarily penetrate walls"
  cl_stainmaps 0
  cl_particles_smoke 1
  vid_gl20 1
@@@ -617,19 -624,6 +624,6 @@@ alias togglezoom "${_togglezoom}zoom
  
  alias reload "impulse 20"
  
- // movement
- bind w +forward
- bind a +moveleft
- bind s +back
- bind d +moveright
- bind UPARROW +forward
- bind LEFTARROW +moveleft
- bind DOWNARROW +back
- bind RIGHTARROW +moveright
- bind SHIFT +crouch
- bind ENTER +jump
- bind SPACE +jump
  // weapons
  alias weapon_group_1 "impulse 1"
  alias weapon_group_2 "impulse 2"
@@@ -642,102 -636,6 +636,6 @@@ alias weapon_group_8 "impulse 8
  alias weapon_group_9 "impulse 9"
  alias weapon_group_0 "impulse 14" // cycles the superweapons
  exec weapons.cfg
- bind 0 weapon_group_0
- bind 1 weapon_group_1
- bind 2 weapon_group_2
- bind 3 weapon_group_3
- bind 4 weapon_group_4
- bind 5 weapon_group_5
- bind 6 weapon_group_6
- bind 7 weapon_group_7
- bind 8 weapon_group_8
- bind 9 weapon_group_9
- bind q weaplast
- bind MOUSE1 +fire
- bind MOUSE2 +fire2
- bind MOUSE3 togglezoom
- bind MOUSE4 weaplast
- bind MOUSE5 +hook
- bind MWHEELUP weapnext
- bind MWHEELDOWN weapprev
- bind r reload
- bind BACKSPACE dropweapon
- bind g dropweapon
- bind f +use
- bind v +button8 // drag object
- // misc
- bind e +hook
- bind ` toggleconsole
- bind ~ toggleconsole
- bind TAB +showscores
- bind ESCAPE togglemenu
- bind t messagemode
- bind y messagemode2
- bind z messagemode2
- bind u "+con_chat_maximize"
- bind m +hud_panel_radar_maximized
- bind i +show_info
- bind PAUSE pause
- bind F10 menu_showquitdialog
- bind F11 disconnect
- bind F12 screenshot
- bind F4 ready
- bind ALT +showaccuracy
- // Gamepad defaults. Tested with Logitech Rumblepad 2, I hope similar ones works as well.
- bind JOY1 "+crouch"
- bind JOY2 "+jump"
- bind JOY3 "weapprev"
- bind JOY4 "weapnext"
- bind JOY5 "+fire2"
- bind JOY6 "+fire"
- bind JOY7 "+zoom"
- bind JOY8 "dropweapon"
- bind JOY9 "menu_showteamselect"
- bind JOY10 "+show_info"
- bind JOY11 "+showscores"
- bind JOY12 "+con_chat_maximize"
- seta joyadvanced "1"
- seta joyadvaxisr "2"
- seta joyadvaxisx "3"
- seta joyadvaxisy "1"
- seta joyadvaxisz "4"
- seta joysidesensitivity "1.0"
- seta joypitchsensitivity "0.9"
- seta joyyawsensitivity "-1.8"
- // SDL only
- seta joy_deadzoneforward "0.05"
- seta joy_deadzonepitch "0.05"
- seta joy_deadzoneside "0.05"
- seta joy_deadzoneup "0.05"
- seta joy_deadzoneyaw "0.05"
- seta joy_sensitivitypitch "0.9"
- seta joy_sensitivityyaw "-1.8"
- // team say
- bind kp_ins messagemode
- bind kp_del messagemode2
- bind kp_end "+userbind 1"
- bind kp_downarrow "+userbind 2"
- bind kp_pgdn "+userbind 3"
- bind kp_leftarrow "+userbind 4"
- bind kp_5 "+userbind 6"
- bind kp_rightarrow "+userbind 7"
- bind kp_home "+userbind 9"
- bind kp_uparrow "+userbind 10"
- bind kp_pgup "+userbind 11"
- bind kp_multiply "+userbind 12"
- bind kp_slash "+userbind 13"
- bind kp_enter "+userbind 16"
- bind kp_plus "+userbind 17"
- bind kp_minus "+userbind 18"
- bind F1 vyes
- bind F2 vno
- //used for spectate/observer mode
- bind F3 spec
  
  // score log
  set sv_logscores_console 0    "print scores to server console"
@@@ -802,6 -700,12 +700,12 @@@ seta g_maplist_votable_nodetail 1        "node
  seta g_maplist_votable_abstain 0      "when 1, you can abstain from your vote"
  seta g_maplist_votable_screenshot_dir "maps levelshots"       "where to look for map screenshots"
  
+ set sv_vote_gametype 0 "show a vote screen for gametypes before map vote screen"
+ set sv_vote_gametype_keeptwotime 10 "show only 2 options for this amount of time during gametype vote screen"
+ set sv_vote_gametype_options "dm ctf ca lms tdm ft"
+ set sv_vote_gametype_timeout 20
+ set sv_vote_gametype_default_current 1 "Keep the current gametype if no one votes"
  set g_chat_flood_spl 3        "normal chat: seconds between lines to not count as flooding"
  set g_chat_flood_lmax 2       "normal chat: maximum number of lines per chat message at once"
  set g_chat_flood_burst 2      "normal chat: allow bursts of so many chat lines"
@@@ -877,43 -781,7 +781,7 @@@ set g_banned_list_idmode "1"      "when set
  
  r_labelsprites_scale 0.40625 // labels sprites get displayed at 0.5x from 640x480 to 1280x1024, and at 1x from 1600x1200 onwards
  
- // usercommands. These can be edited and bound by the menu.
- seta "userbind1_press" "say_team quad soon";  seta "userbind1_release" "";  seta "userbind1_description" "team: quad soon"
- seta "userbind2_press" "say_team free item %x^7 (l:%y^7); g_waypointsprite_team_here_p";  seta "userbind2_release" "";  seta "userbind2_description" "team: free item, icon"
- seta "userbind3_press" "say_team took item (l:%l^7); g_waypointsprite_team_here";  seta "userbind3_release" "";  seta "userbind3_description" "team: took item, icon"
- seta "userbind4_press" "say_team negative";  seta "userbind4_release" "";  seta "userbind4_description" "team: negative"
- seta "userbind5_press" "say_team positive";  seta "userbind5_release" "";  seta "userbind5_description" "team: positive"
- seta "userbind6_press" "say_team need help (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_helpme; cmd voice needhelp";  seta "userbind6_release" "";  seta "userbind6_description" "team: need help, icon"
- seta "userbind7_press" "say_team enemy seen (l:%y^7); g_waypointsprite_team_danger_p; cmd voice incoming";  seta "userbind7_release" "";  seta "userbind7_description" "team: enemy seen, icon"
- seta "userbind8_press" "say_team flag seen (l:%y^7); g_waypointsprite_team_here_p; cmd voice seenflag";  seta "userbind8_release" "";  seta "userbind8_description" "team: flag seen, icon"
- seta "userbind9_press" "say_team defending (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_here";  seta "userbind9_release" "";  seta "userbind9_description" "team: defending, icon"
- seta "userbind10_press" "say_team roaming (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_here";  seta "userbind10_release" "";  seta "userbind10_description" "team: roaming, icon"
- seta "userbind11_press" "say_team attacking (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_waypointsprite_team_here";  seta "userbind11_release" "";  seta "userbind11_description" "team: attacking, icon"
- seta "userbind12_press" "say_team killed flagcarrier (l:%y^7); g_waypointsprite_team_here_p"; seta "userbind12_release" ""; seta "userbind12_description" "team: killed flag, icon"
- seta "userbind13_press" "say_team dropped flag (l:%d^7); g_waypointsprite_team_here_d"; seta "userbind13_release" ""; seta "userbind13_description" "team: dropped flag, icon"
- seta "userbind14_press" "say_team dropped gun %w^7 (l:%l^7); g_waypointsprite_team_here; wait; dropweapon"; seta "userbind14_release" ""; seta "userbind14_description" "team: drop gun, icon"
- // TODO change this to "use" once we can
- seta "userbind15_press" "say_team dropped flag/key %w^7 (l:%l^7); g_waypointsprite_team_here; wait; +use"; seta "userbind15_release" "-use"; seta "userbind15_description" "team: drop flag/key, icon"
- seta "userbind16_press" "say :-) / nice one"; seta "userbind16_release" ""; seta "userbind16_description" "chat: nice one"
- seta "userbind17_press" "say good game"; seta "userbind17_release" ""; seta "userbind17_description" "chat: good game"
- seta "userbind18_press" "say hi / good luck and have fun"; seta "userbind18_release" ""; seta "userbind18_description" "chat: hi / good luck"
- seta "userbind19_press" "+showscores; +con_chat_maximize"; seta "userbind19_release" "-showscores; -con_chat_maximize"; seta "userbind19_description" "scoreboard / chat history"
- seta "userbind20_press" "toggle cl_capturevideo"; seta "userbind20_release" ""; seta "userbind20_description" "toggle recording .avi"
- seta "userbind21_press" "toggle vid_fullscreen; vid_restart"; seta "userbind21_release" ""; seta "userbind21_description" "toggle fullscreen"
- seta "userbind22_press" ""; seta "userbind22_release" ""; seta "userbind22_description" ""
- seta "userbind23_press" ""; seta "userbind23_release" ""; seta "userbind23_description" ""
- seta "userbind24_press" ""; seta "userbind24_release" ""; seta "userbind24_description" ""
- seta "userbind25_press" ""; seta "userbind25_release" ""; seta "userbind25_description" ""
- seta "userbind26_press" ""; seta "userbind26_release" ""; seta "userbind26_description" ""
- seta "userbind27_press" ""; seta "userbind27_release" ""; seta "userbind27_description" ""
- seta "userbind28_press" ""; seta "userbind28_release" ""; seta "userbind28_description" ""
- seta "userbind29_press" ""; seta "userbind29_release" ""; seta "userbind29_description" ""
- seta "userbind30_press" ""; seta "userbind30_release" ""; seta "userbind30_description" ""
- seta "userbind31_press" ""; seta "userbind31_release" ""; seta "userbind31_description" ""
- seta "userbind32_press" ""; seta "userbind32_release" ""; seta "userbind32_description" ""
- alias _userbind_call "${$1}"
- alias +userbind "_userbind_call userbind${1}_press"
- alias -userbind "_userbind_call userbind${1}_release"
+ exec binds-default.cfg
  
  // we must change its default from 1.0 to 1 to be consistent with menuqc
  set slowmo 1
@@@ -997,7 -865,7 +865,7 @@@ seta menu_slist_categories_CAT_SERVERS_
  seta menu_slist_categories_CAT_XPM_override "CAT_NORMAL"
  seta menu_slist_categories_CAT_MODIFIED_override ""
  seta menu_slist_categories_CAT_OVERKILL_override ""
- seta menu_slist_categories_CAT_MINSTAGIB_override ""
+ seta menu_slist_categories_CAT_INSTAGIB_override ""
  seta menu_slist_categories_CAT_DEFRAG_override ""
  
  seta menu_weaponarena ""
@@@ -1045,7 -913,7 +913,7 @@@ set con_completion_gotomap        ma
  set con_completion_vmap               map
  set con_completion_vnextmap   map
  set con_completion_vdomap     map
- set con_completion_playermodel        models/player/*.iqm
+ set con_completion_playermodel        "models/player/*.iqm"
  
  // helper
  // these non-saved engine cvars shall be saved
@@@ -1063,8 -931,6 +931,8 @@@ makesaved vid_gl1
  makesaved vid_gl20
  makesaved v_idlescale
  makesaved v_kicktime
 +makesaved music_playlist_list0
 +makesaved music_playlist_random0
  
  // ticrate
  //sys_ticrate 0.0166667 // 60fps. This would be ideal, but kills home routers.
@@@ -1074,6 -940,8 +942,8 @@@ sv_gameplayfix_delayprojectiles 
  sv_gameplayfix_q2airaccelerate 1
  sv_gameplayfix_stepmultipletimes 1
  
+ cl_gameplayfix_fixedcheckwatertransition 1
  // delay for "kill" to prevent abuse
  set g_balance_kill_delay 2
  set g_balance_kill_antispam 5
@@@ -1112,7 -980,7 +982,7 @@@ cd remap $g_cdtracks_remaplis
  set sv_intermission_cdtrack ""
  
  set g_cdtracks_dontusebydefault "rising-of-the-phoenix"
 -set menu_cdtrack "rising-of-the-phoenix"
 +seta menu_cdtrack "rising-of-the-phoenix"
  
  set sv_maxidle 0 "kick players idle for more than this amount of time in seconds"
  set sv_maxidle_spectatorsareidle 0 "when sv_maxidle is not 0, assume spectators are idle too"
@@@ -1127,14 -995,14 +997,14 @@@ sv_allowdownloads 0 // download protoco
  
  set g_jump_grunt 0    "Do you make a grunting noise every time you jump? Is it the same grunting noise every time?"
  
- seta cl_weaponpriority "minstanex nex fireball grenadelauncher uzi hagar rifle electro rocketlauncher crylink minelayer shotgun hlac tuba laser porto seeker hook" "weapon priority list"
+ seta cl_weaponpriority "vaporizer vortex fireball mortar machinegun hagar rifle arc electro devastator crylink minelayer shotgun hlac tuba blaster porto seeker hook" "weapon priority list"
  seta cl_weaponpriority_useforcycling 0 "when set, weapon cycling by the mouse wheel makes use of the weapon priority list (the special value 2 uses the weapon ID list for cycling)"
- seta cl_weaponpriority0 "rocketlauncher grenadelauncher hagar seeker fireball" "use impulse 200 for prev gun from this list, 210 for best gun, 220 for next gun.  Default value: explosives"
- seta cl_weaponpriority1 "minstanex nex crylink hlac electro laser"             "use impulse 201 for prev gun from this list, 211 for best gun, 221 for next gun.  Default value: energy"
- seta cl_weaponpriority2 "minstanex nex rifle"                           "use impulse 202 for prev gun from this list, 212 for best gun, 222 for next gun.  Default value: hitscan exact"
- seta cl_weaponpriority3 "minstanex nex rifle uzi shotgun"               "use impulse 203 for prev gun from this list, 213 for best gun, 223 for next gun.  Default value: hitscan all"
- seta cl_weaponpriority4 "grenadelauncher minelayer hlac hagar crylink seeker shotgun"    "use impulse 204 for prev gun from this list, 214 for best gun, 224 for next gun.  Default value: spam weapons"
- seta cl_weaponpriority5 "laser hook porto"                                     "use impulse 205 for prev gun from this list, 215 for best gun, 225 for next gun.  Default value: weapons for moving"
+ seta cl_weaponpriority0 "devastator mortar hagar seeker fireball" "use impulse 200 for prev gun from this list, 210 for best gun, 220 for next gun.  Default value: explosives"
+ seta cl_weaponpriority1 "vaporizer vortex crylink hlac arc electro blaster shockwave"             "use impulse 201 for prev gun from this list, 211 for best gun, 221 for next gun.  Default value: energy"
+ seta cl_weaponpriority2 "vaporizer vortex rifle"                           "use impulse 202 for prev gun from this list, 212 for best gun, 222 for next gun.  Default value: hitscan exact"
+ seta cl_weaponpriority3 "vaporizer vortex rifle machinegun shotgun"               "use impulse 203 for prev gun from this list, 213 for best gun, 223 for next gun.  Default value: hitscan all"
+ seta cl_weaponpriority4 "mortar minelayer hlac hagar crylink seeker shotgun"    "use impulse 204 for prev gun from this list, 214 for best gun, 224 for next gun.  Default value: spam weapons"
+ seta cl_weaponpriority5 "blaster shockwave hook porto"                                     "use impulse 205 for prev gun from this list, 215 for best gun, 225 for next gun.  Default value: weapons for moving"
  seta cl_weaponpriority6 "" "use impulse 206 for prev gun from this list, 216 for best gun, 226 for next gun"
  seta cl_weaponpriority7 "" "use impulse 207 for prev gun from this list, 217 for best gun, 227 for next gun"
  seta cl_weaponpriority8 "" "use impulse 208 for prev gun from this list, 218 for best gun, 228 for next gun"
@@@ -1159,8 -1027,6 +1029,6 @@@ seta cl_clippedspectating 1 "movement c
  seta cl_autoscreenshot 1 "Take a screenshot upon the end of a match... 0 = Disable completely, 1 = Allow sv_autoscreenshot to take a screenshot when requested, 2 = Always take an autoscreenshot anyway."
  
  // must be at the bottom of this file:
- // alias for switching the teamselect menu
- bind f5 menu_showteamselect
  
  set g_bugrigs 0
  set g_bugrigs_planar_movement 1       "BROTRR bug emulation"
@@@ -1191,32 -1057,9 +1059,9 @@@ set g_showweaponspawns 1       "display sprit
  //   Quake-Joule:  1 qJ  = 1 qN * 1 qu
  //   Quake-Pascal: 1 qPa = 1 qN / 1 qu^2
  
- set g_ballistics_materialconstant 1414213562
- set g_ballistics_mindistance 16
+ set g_ballistics_mindistance 2 // enable ballistics starting from 2 qu
  set g_ballistics_density_player 0.50 // players are 2x as easy to pass as walls
  set g_ballistics_density_corpse 0.10 // corpses are 10x as easy to pass as walls
- // unit: qJ / qu^3 (energy needed per volume unit of solid to push/burn away
- // parameter: bullet constant: mass / area in g/qu^2
- // = mass / (pi/4 * caliber^2)
- // with caliber in inches, mass in grams:
- // = 1.273239544735163 * mass / caliber^2
- // with caliber in inches, mass in grains:
- // = 0.082633246453312 * mass / caliber^2
- // bullet max travel distance inside solid:
- //   0.5 * v^2 * bulletconstant / g_ballistics_materialconstant
- // some bullet constants:
- //   http://hypertextbook.com/facts/2000/ShantayArmstrong.shtml
- //     second bullet: caliber .45, mass 16.2g, bullet constant 101.859163578813
- //     third bullet: caliber .338, mass 16.2g, bullet constant 180.5476053421592
- //     fourth bullet: caliber .25, mass 2.3g, bullet constant 46.85521524625399
- //   http://en.wikipedia.org/wiki/.50_BMG
- //     caliber .5, 360 grains, bullet constant 118.9918748927693
- //   AK-47:
- //     caliber .3, 62 grains, bullet constant 56.92512533450383
- //   .3 winchester magnum:
- //     caliber .3, 150 grains, bullet constant 137.7220774221867
  
  set cl_stripcolorcodes 0      "experimental feature (notes: strips ALL color codes from messages!)"
  
@@@ -1270,7 -1113,7 +1115,7 @@@ set bot_sound_monopoly 0 "when enabled
  
  set cl_loddistance1 1024
  set cl_loddistance2 3072
- seta cl_playerdetailreduction 1       "the higher, the less detailed player models are displayed (LOD)"
+ seta cl_playerdetailreduction 4       "the higher, the less detailed player models are displayed (LOD)"
  seta cl_modeldetailreduction 1        "the higher, the less detailed certain map models are displayed (LOD)"
  
  set g_mapinfo_settemp_acl "+*" "ACL for mapinfo setting cvars"
@@@ -1318,8 -1161,6 +1163,6 @@@ set sv_accuracy_data_send 1 "1 send wea
  set cl_accuracy_data_share 0 "1 share my weapon accuracy data statistics with other players, 0 keep my weapon accuracy data statistics hidden"
  set cl_accuracy_data_receive 0 "1 receive weapon accuracy data statistics at the end of the match"
  
- set developer_fteqccbugs 0 "check fteqcc bugs on startup"
- set _allow_unacceptable_compiler_bugs 0 "don't bail out if certain bugs are detected (HANDLE WITH CARE)"
  set spawn_debug 0 "use all spawns one by one, then abort, to verify all spawnpoints"
  set loddebug 0 "force this LOD level"
  set spawn_debugview 0 "display spawnpoints and their rating on spawn to debug spawnpoint rating calculation"
@@@ -1383,25 -1224,9 +1226,9 @@@ volume 
  // sucks less than the old one
  cl_decals_newsystem 1
  
- // NOTE: this only replaces weapons on the map
- // use g_start_weapon_* to also replace the on-startup weapons!
- // example: g_weaponreplace_nex "nex minstanex", then Nexes become MinstaNexes 50% of the times
- // set the cvars to "0" to totally disable a weapon
- set g_weaponreplace_laser ""
- set g_weaponreplace_shotgun ""
- set g_weaponreplace_uzi ""
- set g_weaponreplace_grenadelauncher ""
- set g_weaponreplace_electro ""
- set g_weaponreplace_crylink ""
- set g_weaponreplace_nex ""
- set g_weaponreplace_hagar ""
- set g_weaponreplace_rocketlauncher ""
- set g_weaponreplace_porto ""
- set g_weaponreplace_minstanex ""
- set g_weaponreplace_hook ""
- set g_weaponreplace_tuba ""
- set g_weaponreplace_fireball ""
- set sv_q3acompat_machineshotgunswap 0 "shorthand for swapping uzi and shotgun (for Q3A map compatibility in mapinfo files)"
+ seta cl_cubemaps_extra 1
+ set sv_q3acompat_machineshotgunswap 0 "shorthand for swapping machinegun and shotgun (for Q3A map compatibility in mapinfo files)"
  
  set g_movement_highspeed 1 "movement speed modification factor (only changes movement when above maxspeed)"
  
@@@ -1448,6 -1273,7 +1275,7 @@@ r_shadow_glossintensity 
  r_fakelight 1
  
  r_water_hideplayer 1 // hide your own feet/player model in refraction views, this way you don't see half of your body under water
+ r_water_refractdistort 0.019
  
  // strength sound settings
  set sv_strengthsound_antispam_time 0.1 "minimum distance of strength sounds"
@@@ -1554,8 -1380,7 +1382,7 @@@ scr_loadingscreen_scale_base 
  scr_loadingscreen_scale_limit 2
  
  // other config files
- exec mutator_new_toys.cfg // run BEFORE balance to make sure balance wins
- exec balanceXonotic.cfg
+ exec balance-xonotic.cfg
  exec effects-normal.cfg
  exec physicsX.cfg
  exec turrets.cfg
@@@ -1564,6 -1389,7 +1391,7 @@@ exec crosshairs.cf
  exec gamemodes.cfg
  exec mutators.cfg
  exec notifications.cfg
+ exec monsters.cfg
  
  // load console command aliases and settings
  exec commands.cfg
@@@ -1596,3 -1422,8 +1424,8 @@@ set cl_simpleitems_postfix "_simple" "p
  set cl_fullbright_items 0 "enable fullbright items (if server allows, controled by g_fullbrightitems)"
  set cl_weapon_stay_color "2 0.5 0.5" "Color of picked up weapons when g_weapon_stay > 0"
  set cl_weapon_stay_alpha 0.75 "Alpha of picked up weapons when g_weapon_stay > 0"
+ // Facility for config.cfg use ONLY.
+ // Interpreted in post-config.cfg.
+ seta menu_forced_saved_cvars "" "These cvars will always be saved, despite engine/Xonotic cvar saving status"
+ set menu_reverted_nonsaved_cvars "" "These cvars are currently marked as saved in the flags, but have been reverted and won't stay saved. INTERNAL USE ONLY."
diff --combined qcsrc/menu/classes.c
  #include "xonotic/bigbutton.c"
  #include "xonotic/commandbutton.c"
  #include "xonotic/bigcommandbutton.c"
+ #include "xonotic/textlabel.c"
  #include "xonotic/dialog_firstrun.c"
  #include "xonotic/dialog_teamselect.c"
  #include "xonotic/dialog_sandboxtools.c"
+ #include "xonotic/dialog_monstertools.c"
  #include "xonotic/dialog_settings.c"
  #include "xonotic/dialog_settings_video.c"
  #include "xonotic/dialog_settings_effects.c"
  #include "xonotic/dialog_settings_audio.c"
+ #include "xonotic/dialog_settings_game.c"
  #include "xonotic/dialog_settings_user.c"
+ #include "xonotic/dialog_settings_user_languagewarning.c"
  #include "xonotic/dialog_settings_misc.c"
  #include "xonotic/dialog_multiplayer.c"
- #include "xonotic/dialog_multiplayer_playersetup.c"
+ #include "xonotic/dialog_multiplayer_profile.c"
  #include "xonotic/tabcontroller.c"
- #include "xonotic/textlabel.c"
  #include "xonotic/slider.c"
  #include "xonotic/slider_resolution.c"
  #include "xonotic/checkbox.c"
@@@ -58,7 -61,6 +61,6 @@@
  #include "xonotic/dialog_quit.c"
  #include "xonotic/dialog_multiplayer_create.c"
  #include "xonotic/dialog_multiplayer_create_mutators.c"
- #include "xonotic/dialog_multiplayer_create_advanced.c"
  #include "xonotic/dialog_multiplayer_create_mapinfo.c"
  #include "xonotic/gametypelist.c"
  #include "xonotic/maplist.c"
  #include "xonotic/dialog_singleplayer_winner.c"
  #include "xonotic/dialog_credits.c"
  #include "xonotic/credits.c"
- #include "xonotic/dialog_multiplayer_playersetup_crosshair.c"
- #include "xonotic/dialog_multiplayer_playersetup_hud.c"
- #include "xonotic/dialog_multiplayer_playersetup_hudconfirm.c"
- #include "xonotic/dialog_multiplayer_playersetup_model.c"
- #include "xonotic/dialog_multiplayer_playersetup_view.c"
- #include "xonotic/dialog_multiplayer_playersetup_weapons.c"
+ #include "xonotic/dialog_settings_game_crosshair.c"
+ #include "xonotic/dialog_settings_game_hud.c"
+ #include "xonotic/dialog_settings_game_hudconfirm.c"
+ #include "xonotic/dialog_settings_game_model.c"
+ #include "xonotic/dialog_settings_game_messages.c"
+ #include "xonotic/dialog_settings_game_view.c"
+ #include "xonotic/dialog_settings_game_weapons.c"
  #include "xonotic/weaponslist.c"
- #include "xonotic/dialog_multiplayer_demo.c"
+ #include "xonotic/dialog_multiplayer_media.c"
+ #include "xonotic/dialog_multiplayer_media_demo.c"
+ #include "xonotic/dialog_multiplayer_media_demo_startconfirm.c"
+ #include "xonotic/dialog_multiplayer_media_demo_timeconfirm.c"
  #include "xonotic/demolist.c"
- #include "xonotic/dialog_multiplayer_musicplayer.c"
+ #include "xonotic/screenshotimage.c"
+ #include "xonotic/dialog_multiplayer_media_screenshot.c"
+ #include "xonotic/dialog_multiplayer_media_screenshot_viewer.c"
+ #include "xonotic/screenshotlist.c"
+ #include "xonotic/statslist.c"
++#include "xonotic/dialog_multiplayer_media_musicplayer.c"
 +#include "xonotic/soundlist.c"
 +#include "xonotic/playlist.c"
  #include "xonotic/colorpicker.c"
  #include "xonotic/colorpicker_string.c"
  #include "xonotic/cvarlist.c"
  #include "xonotic/dialog_hudpanel_weapons.c"
  #include "xonotic/dialog_hudpanel_physics.c"
  #include "xonotic/dialog_hudpanel_centerprint.c"
+ #include "xonotic/dialog_hudpanel_buffs.c"
  #include "xonotic/slider_picmip.c"
+ #include "xonotic/slider_particles.c"
+ #include "xonotic/slider_sbfadetime.c"
+ #include "xonotic/dialog_settings_misc_reset.c"
index 0000000,9c47ef5..a0b49b1
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,33 +1,34 @@@
 -      ATTRIB(XonoticMediaTab, title, string, _("Demo"))
+ #ifdef INTERFACE
+ CLASS(XonoticMediaTab) EXTENDS(XonoticTab)
+       METHOD(XonoticMediaTab, fill, void(entity))
 -      ATTRIB(XonoticMediaTab, columns, float, 2)
++      ATTRIB(XonoticMediaTab, title, string, _("Media"))
+       ATTRIB(XonoticMediaTab, intendedWidth, float, 0.9)
+       ATTRIB(XonoticMediaTab, rows, float, 23)
++      ATTRIB(XonoticMediaTab, columns, float, 3)
+       ATTRIB(XonoticMediaTab, name, string, "Media")  
+ ENDCLASS(XonoticMediaTab)
+ entity makeXonoticMediaTab();
+ #endif
+ #ifdef IMPLEMENTATION
+ entity makeXonoticMediaTab()
+ {
+       entity me;
+       me = spawnXonoticMediaTab();
+       me.configureDialog(me);
+       return me;
+ }
+ void XonoticMediaTab_fill(entity me)
+ {
+       entity mc, e;
+       mc = makeXonoticTabController(me.rows - 2);
+       me.gotoRC(me, 0.5, 0);
+               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Demos"), makeXonoticDemoBrowserTab()));
+               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Screenshots"), makeXonoticScreenshotBrowserTab()));
++              me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Music Player"), makeXonoticMusicPlayerTab()));
+       me.gotoRC(me, 3, 0);
+               me.TD(me, me.rows - 2, me.columns, mc);
+ }
+ #endif
index 0000000,0000000..68e40d5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,87 @@@
++#ifdef INTERFACE
++CLASS(XonoticMusicPlayerTab) EXTENDS(XonoticTab)
++      METHOD(XonoticMusicPlayerTab, fill, void(entity))
++      ATTRIB(XonoticMusicPlayerTab, title, string, _("Music"))
++      ATTRIB(XonoticMusicPlayerTab, intendedWidth, float, 0.9)
++      ATTRIB(XonoticMusicPlayerTab, rows, float, 21)
++      ATTRIB(XonoticMusicPlayerTab, columns, float, 6.5)
++      ATTRIB(XonoticMusicPlayerTab, name, string, "MusicPlayer")
++ENDCLASS(XonoticMusicPlayerTab)
++entity makeXonoticMusicPlayerTab();
++#endif
++
++#ifdef IMPLEMENTATION
++entity makeXonoticMusicPlayerTab()
++{
++      entity me;
++      me = spawnXonoticMusicPlayerTab();
++      me.configureDialog(me);
++      return me;
++}
++void XonoticMusicPlayerTab_fill(entity me)
++{
++      entity e;
++      entity soundList, playList;
++      float columns_nospacing = (me.columns - 0.2);
++
++      me.TR(me);
++              me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Filter:")));
++              me.TD(me, 1, 2.5, e = makeXonoticInputBox(0, string_null));
++                      soundList = makeXonoticSoundList();
++                      e.onChange = SoundList_Filter_Change;
++                      e.onChangeEntity = soundList;
++                      soundList.controlledTextbox = e;
++                      playList = makeXonoticPlayList();
++                      soundList.playlist = playList;
++
++      me.TR(me);
++              me.TD(me, me.rows - 4, columns_nospacing / 2, soundList);
++
++      me.gotoRC(me, me.rows - 3, 0);
++              me.TD(me, 1, columns_nospacing / 4, e = makeXonoticButton(ZCTX(_("MUSICPL^Add")), '0 0 0'));
++                      e.onClick = SoundList_Add;
++                      e.onClickEntity = soundList;
++              me.TD(me, 1, columns_nospacing / 4, e = makeXonoticButton(ZCTX(_("MUSICPL^Add all")), '0 0 0'));
++                      e.onClick = SoundList_Add_All;
++                      e.onClickEntity = soundList;
++      me.TR(me);
++              me.TD(me, 1, columns_nospacing / 2, e = makeXonoticButton(_("Set as menu track"), '0 0 0'));
++                      e.onClick = SoundList_Menu_Track_Change;
++                      e.onClickEntity = soundList;
++      me.TR(me);
++              me.TD(me, 1, columns_nospacing / 2, e = makeXonoticButton(_("Reset default menu track"), '0 0 0'));
++                      e.onClick = SoundList_Menu_Track_Reset;
++                      e.onClickEntity = soundList;
++      me.TR(me);
++      me.TR(me);
++      me.gotoRC(me, 0, columns_nospacing / 2 + 0.2); me.setFirstColumn(me, me.currentColumn);
++              me.TD(me, 1, columns_nospacing / 4, e = makeXonoticTextLabel(0, _("Playlist:")));
++              me.TD(me, 1, columns_nospacing / 4, e = makeXonoticCheckBox(0, "music_playlist_random0", _("Random order")));
++      me.TR(me);
++              me.TD(me, me.rows - 3, columns_nospacing / 2, playList);
++
++      me.gotoRC(me, me.rows - 2, columns_nospacing / 2 + 0.2);
++              me.TD(me, 1, columns_nospacing / 10, e = makeXonoticButton(ZCTX(_("MUSICPL^Stop")), '0 0 0'));
++                      e.onClick = StopSound_Click;
++                      e.onClickEntity = playList;
++              me.TD(me, 1, columns_nospacing / 10, e = makeXonoticButton(ZCTX(_("MUSICPL^Play")), '0 0 0'));
++                      e.onClick = StartSound_Click;
++                      e.onClickEntity = playList;
++              me.TD(me, 1, columns_nospacing / 10, e = makeXonoticButton(ZCTX(_("MUSICPL^Pause/Play")), '0 0 0'));
++                      e.onClick = PauseSound_Click;
++                      e.onClickEntity = playList;
++              me.TD(me, 1, columns_nospacing / 10, e = makeXonoticButton(ZCTX(_("MUSICPL^Prev")), '0 0 0'));
++                      e.onClick = PrevSound_Click;
++                      e.onClickEntity = playList;
++              me.TD(me, 1, columns_nospacing / 10, e = makeXonoticButton(ZCTX(_("MUSICPL^Next")), '0 0 0'));
++                      e.onClick = NextSound_Click;
++                      e.onClickEntity = playList;
++      me.TR(me);
++              me.TD(me, 1, columns_nospacing / 4, e = makeXonoticButton(ZCTX(_("MUSICPL^Remove")), '0 0 0'));
++                      e.onClick = PlayList_Remove;
++                      e.onClickEntity = playList;
++              me.TD(me, 1, columns_nospacing / 4, e = makeXonoticButton(ZCTX(_("MUSICPL^Remove all")), '0 0 0'));
++                      e.onClick = PlayList_Remove_All;
++                      e.onClickEntity = playList;
++}
++#endif