// FTE config file

echo "reading default AGR.cfg"
bind "TAB" "+showscores"
bind "ENTER" "+jump"
bind "ESCAPE" "togglemenu"
bind "SPACE" "+jump"
bind "+" "sizeup"
bind , "+moveleft"
bind - "sizedown"
bind . "+moveright"
bind / "impulse 10"
bindlevel 0 31 "impulse 10"
bind "Shift+0" "impulse 0"
bind "Alt+0" "impulse 0"
bind "Alt+Shift+0" "impulse 0"
bind "Ctrl+0" "impulse 0"
bind "Ctrl+Shift+0" "impulse 0"
bind "Ctrl+Alt+0" "impulse 0"
bind "Ctrl+Alt+Shift+0" "impulse 0"
bind 1 "impulse 1"
bind 2 "impulse 2"
bind 3 "impulse 3"
bind 4 "impulse 4"
bind 5 "impulse 5"
bind 6 "impulse 6"
bind 7 "impulse 7"
bind 8 "impulse 8"
bindlevel 9 31 "impulse 9"
bindlevel "Shift+9" 0 ""
bindlevel "Alt+9" 0 ""
bindlevel "Alt+Shift+9" 0 ""
bindlevel "Ctrl+9" 0 ""
bindlevel "Ctrl+Shift+9" 0 ""
bindlevel "Ctrl+Alt+9" 0 ""
bindlevel "Ctrl+Alt+Shift+9" 0 ""
bind = "sizeup"
bind \ "+mlook"
bind ` "toggleconsole"
bind a "+lookup"
bind c "+movedown"
bind d "+back"
bind e "+forward"
bind f "+moveright"
bind g "build"
bind r "skill"
bind s "+moveleft"
bind t "messagemode"
bind q "+gren1"
bind w "+gren2"
bind z "+lookdown"
bind ~ "toggleconsole"
bind PAUSE "pause"
bind UPARROW "+forward"
bind DOWNARROW "+back"
bind LEFTARROW "+left"
bind RIGHTARROW "+right"
bind LALT "+strafe"
bind LCTRL "+attack"
bind LSHIFT "+speed"
bind INS "+klook"
bind DEL "+lookdown"
bind PGDN "+lookup"
bind END "centerview"
bind F1 "help"
bind F2 "menu_save"
bind F3 "menu_load"
bind F4 "menu_options"
bind F5 "menu_multiplayer"
bind F6 "echo Quicksaving...; wait; save quick"
bind F9 "echo Quickloading...; wait; load quick"
bind F10 "quit"
bind F11 "zoom_in"
bind F12 "screenshot"
bind MOUSE1 "+attack"
bind MOUSE2 "+forward"
bind MOUSE3 "+mlook"

//Player 1 buttons
+mlook
-klook
-left
-right
-forward
-back
-lookup
-lookdown
-moveleft
-moveright
-strafe
-speed
-use
-jump
-attack
-rollleft
-rollright
-up
-down
-button3
-button4
-button5
-button6
-button7
-button8

setinfo * ""
setinfo lang "en_US"
setinfo rate "30000"
setinfo drate "3000000"
setinfo msg "1"
setinfo topcolor "4"
setinfo name "Scumbag"
setinfo pmodel "33168"
setinfo emodel "6967"
setinfo chat "1"

p2 setinfo * ""

p3 setinfo * ""

p4 setinfo * ""


//localinfo * ""

//////////////////
//Aliases
alias zoom_out "sensitivity 4;fov 5;wait;fov 10;wait;fov 30;wait;fov 50;wait;fov 70;wait;fov 90;bind F11 zoom_in; sensitivity 3"
alias zoom_in "sensitivity 2;fov 90;wait;fov 70;wait;fov 50;wait;fov 30;wait;fov 10;wait;fov 5;bind F11 zoom_out"
alias startmap_sp "map start"
alias restart "changelevel ."
alias restart_ents "changelevel . ."
alias -crouch "impulse 22"
alias +crouch "impulse 22"
alias sky "r_skybox"

// Custom variables
seta r_part_classic_square "0"

// Text editor
pr_debugger "0"         //When enabled, QC errors and debug events will enable step-by-step tracing.

// Item effects
seta r_drawflame "1"    //Set to -1 to disable ALL static entities. Set to 0 to disable only wall torches and standing flame. Set to 1 for everything drawn as normal.
seta cl_nolerp "0"      //Disables interpolation. If set, missiles/monsters will be show exactly what was last received, which will be jerky. Does not affect players. A value of 2 means 'interpolate only in single-player/coop'.
seta cl_deadbodyfilter "0"
seta cl_gibfilter "0"
v_powerupshell "0"
cl_r2g "0"              //Uses progs/grenade.mdl instead of progs/missile.mdl when 1.
r_rocketlight "1"
cl_staticsounds "1"
seta gl_simpleitems "0"
cl_model_bobbing "0"

// client input controls
m_side "0.8"
m_forward "1"
m_yaw "0.022"
m_pitch "0.022"
sensitivity "25"
lookstrafe "0"
lookspring "0"
cl_sidespeed "1000"
cl_backspeed "1000"     //The base speed that you move backwards at. If empty, uses the value of cl_forwardspeed instead.
cl_forwardspeed "1000"
cl_upspeed "400"

// Temporary entity control
r_explosionlight "1"
cl_expsprite "0"        //Display a central sprite in explosion effects. QuakeWorld typically does so, NQ mods should not (which is problematic when played with the qw protocol).

// Voice Chat
cl_voip_autogain "0"    //Attempts to normalize your voice levels to a standard level. Useful for lazy people, but interferes with voice activation levels.
cl_voip_noisefilter "1" //Enable the use of the noise cancelation filter.
cl_voip_codec "0"       //0: speex(@11khz). 1: raw. 2: opus. 3: speex(@8khz). 4: speex(@16). 5:speex(@32).
cl_voip_micamp "2"      //Amplifies your microphone when using voip.
cl_voip_ducking "0.5"   //Scales game audio by this much when someone is talking to you. Does not affect your speaker volume when you speak (minimum of cl_voip_capturingvol and cl_voip_ducking is used).
cl_voip_play "1"        //Enables voip playback. Value is a volume scaler.
cl_voip_showmeter "1"   //Shows your speech volume above the standard hud. 0=hide, 1=show when transmitting, 2=ignore voice-activation disable
cl_voip_capturingvol "0.5"      //Volume multiplier applied while capturing, to avoid your audio from being heard by others. Does not affect game volume when other speak (minimum of cl_voip_capturingvol and cl_voip_ducking is used).
cl_voip_vad_threshhold "15"     //This is the threshhold for voice-activation-detection when sending voip data
cl_voip_send "0"        //Sends voice-over-ip data to the server whenever it is set.
                        //0: only send voice if +voip is pressed.
                        //1: voice activation.
                        //2: constantly send.
                        //+4: Do not send to game, only to rtp sessions.
cl_voip_capturedevice ""

// Sound controls
s_device ""             //This is the sound device(s) to use, in the form of driver:device.
                        //If desired, multiple devices can be listed in space-seperated (quoted) tokens. _s_device_opts contains any enumerated options.
                        //In all seriousness, use the menu to set this if you wish to keep your hair.
s_localvolume "1"       //Sound level for sounds local or originating from the player such as firing and pain sounds.
s_inactive "1"          //Play sound while application is inactive (ex. tabbed out). Needs a snd_restart if changed.
s_doppler_max "2"       //Highest allowed doppler scale, to avoid things getting too weird.
s_doppler_min "0.5"     //Slowest allowed doppler scale.
s_doppler "0"           //Enables doppler, with a multiplier for the scale.
s_bits "16"
s_numspeakers "2"       //Number of hardware audio channels to use. FTE supports up to 6.
s_swapstereo "0"
s_khz "48"              //Sound speed, in kilohertz. Common values are 11, 22, 44, 48. Values above 1000 are explicitly in hertz.
s_mixahead "0.1"        //Specifies how many seconds to prebuffer audio. Lower values give less latency, but might result in crackling. Different hardware/drivers have different tolerances, and this setting may be ignored completely where drivers are expected to provide their own tolerances.
s_ambientfade "100"
s_ambientlevel "0.3"    //This controls the volume levels of automatic area-based sounds (like water or sky), and is quite annoying. If you're playing deathmatch you'll definitely want this OFF.
musicvolume "0.3"       //Volume level for background music.
s_loadas8bit "0"        //Downsample sounds on load as lower quality 8-bit sound.
volume "0"              //Main volume level for all engine sound.
nosound "0"             //Disable all sound from the engine. Cannot be overriden by configs or anything if set via the -nosound commandline argument.

// Joystick variables
joystick "0"

// input controls
in_builtinkeymap "0"
xinput_rightvibrator "0"
xinput_leftvibrator "0"
in_xinput "0"           //Enables the use of xinput for controllers.
                        //Note that if you have a headset plugged in, that headset will be used for audio playback if no specific audio device is configured.
in_dinput "0"
m_accel "0"             //Values >0 will amplify mouse movement proportional to velocity. Small values have great effect. A lot of good Quake Live players use around the 0.1-0.2 mark, but this depends on your mouse CPI and polling rate.
m_touchmajoraxis "1"    //When using a touchscreen, use only the major axis for strafing.
m_slidethreshold "10"   //How far your finger needs to move to be considered a slide event (touchscreens).
m_fatpressthreshold "0.2"       //How fat your thumb has to be to register a fat press (touchscreens).
m_strafeonright "1"     //If 1, touching the right half of the touchscreen will strafe/move, while the left side will turn.
m_filter "0"

// Server Browser Vars
sb_showtimelimit "0"
sb_showfraglimit "0"
sb_showplayers "1"
sb_showgamedir "0"
sb_showmap "0"
sb_showaddress "0"
sb_showping "1"
sb_sortcolumn "0"
sb_hideproxies "1"
sb_hidequakeworld "0"
sb_hidenetquake "0"
sb_hidedead "1"
sb_hidefull "0"
sb_hidenotempty "0"
sb_hideempty "0"
sb_alpha "0.7"

// Menu thingumiebobs
seta m_preset_chosen "1"

// server physics variables
seta sv_nqplayerphysics "0"     //Disable player prediction and run NQ-style player physics instead. This can be used for compatibility with mods that expect exact behaviour.

// Progs variables
progs ""
temp1 "0"
saved4 "0"
saved3 "0"
saved2 "0"
saved1 "0"
savedgamecfg "0"

// Particle effects
gl_part_flame "1"       //Enable particle emitting from models. Mainly used for torch and flame effects.
seta r_part_classic_opaque "0"  //Disables transparency on classic particles, for the oldskool look.
seta r_part_classic_expgrav "10"        //Scaler for how fast classic explosion particles should accelerate due to gravity. 1 for like vanilla, 10 for like zquake.
seta r_part_density "1"
r_part_contentswitch "1"        //Enable particle effects to change based on content (ex. water).
r_particle_tracelimit "0x7fffffff"      //Number of traces to allow per frame for particle physics.
r_part_rain_quantity "1"
r_part_rain "0"         //Enable particle effects to emit off of surfaces. Mainly used for weather or lava/slime effects.
r_bouncysparks "1"      //Enables particle interaction with world surfaces, allowing for bouncy particles, stains, and decals.
seta r_particledesc "high tsshaft"
seta r_particlesystem "script"

// Screen Options
cl_yieldcpu "0"         //Attempt to yield between frames. This can resolve issues with certain drivers and background software, but can mean less consistant frame times. Will reduce power consumption/heat generation so should be set on laptops or similar (over-hot/battery powered) devices.
cl_idlefps "0"          //This is the maximum framerate to attain while idle/paused.
cl_maxfps "500"
cl_hudswap "0"
seta cl_sbar "0"
show_fps "0"
fov "90"                //field of vision, 1-170 degrees, standard fov is 90, nquake defaults to 108.
viewsize "100"

// Realtime Lighting
r_sun_colour "0 0 0"    //Specifies the colour of sunlight that appears in the form of crepuscular rays.
r_shadow_realtime_dlight_shadows "1"    //Allows dynamic realtime lights to cast shadows as they move.
seta r_shadow_realtime_dlight "1"       //Enables the use of dynamic realtime lights, allowing explosions to use bumpmaps etc properly.
r_shadow_realtime_world_shadows "1"
seta r_shadow_realtime_world "0"        //Enables the use of static/world realtime lights.

// Video config
vid_desktopsettings "0" //Ignore the values of vid_width and vid_height, and just use the same settings that are used for the desktop.
vid_displayfrequency "0"
vid_height "0"          //The screen height to attempt to use, in physical pixels. 0 means use desktop resolution.
vid_width "0"           //The screen width to attempt to use, in physical pixels. 0 means use desktop resolution.
vid_triplebuffer "1"    //Specifies whether the hardware is forcing tripplebuffering on us, this is the number of extra page swaps required before old data has been completely overwritten.
vid_conautoscale "0"    //Changes the 2d scale, including hud, console, and fonts. To specify an explicit font size, divide the desired 'point' size by 8 to get the scale. High values will be clamped to maintain at least a 320*200 virtual size.
vid_conheight "0"
vid_conwidth "0"
vid_bpp "0"             //The number of colour bits to request from the renedering context
vid_fullscreen_standalone "1"   //Whether to use fullscreen or not. A value of 2 specifies fullscreen windowed (aka borderless window) mode.
vid_fullscreen_embedded "1"     //Whether to use fullscreen or not. This cvar is saved to your config but not otherwise used in this operating mode.
vid_renderer ""         //Specifies which backend is used. Values that might work are: sv (dedicated server), headless (null renderer), vk (vulkan), gl (opengl), egl (opengl es), d3d9 (direct3d 9), d3d11 (direct3d 11, with default hardware rendering), d3d11 warp (direct3d 11, with software rendering).
_windowed_mouse "1"
vid_wait "0"

// bloom
seta r_bloom "0"        //Enables bloom (light bleeding from bright objects). Fractional values reduce the amount shown.

// Graphical Nicaties
seta r_replacemodels "md3 md2"  //A list of filename extensions to attempt to use instead of mdl.
r_shadows "0"           //Draw basic blob shadows underneath entities without using realtime lighting.
seta r_drawflat "0"
seta gl_load24bit "1"
r_telealpha ""
r_slimealpha ""
r_lavaalpha ""
r_wateralpha "1"
seta r_fastsky "0"
seta r_nolightdir "0"
seta r_nolerp "0"
seta r_dynamic "1"
seta r_waterwarp "1"    //Enables fullscreen warp, preferably via glsl. -1 specifies to force the fov warp fallback instead which can give a smidge more performance.
r_drawviewmodel "1"
r_bloodstains "1"
r_glsl_turbscale "1"    //Controls the strength of water ripples (used by the altwater glsl code).
r_glsl_offsetmapping_reliefmapping "0"  //Changes the paralax sampling mode to be a bit nicer, but noticably more expensive at high resolutions. r_glsl_offsetmapping must be set.
seta r_glsl_offsetmapping "0"   //Enables the use of paralax mapping, adding fake depth to textures.
r_stereo_method "0"     //Value 0 = Off.
                        //Value 1 = Attempt hardware acceleration. Requires vid_restart.
                        //Value 2 = red/cyan.
                        //Value 3 = red/blue.
                        //Value 4=red/green.
                        //Value 5=eye strain.
r_telestyle "1"         //See r_waterstyle, but affects only teleporters. If empty, defers to r_waterstyle.
r_slimestyle ""         //See r_waterstyle, but affects only slime. If empty, defers to r_waterstyle.
seta r_lavastyle "1"    //See r_waterstyle, but affects only lava. If empty, defers to r_waterstyle.
seta r_waterstyle "2"   //Changes how water, and teleporters are drawn. Possible values are:
                        //0: fastturb-style block colour.
                        //1: regular q1-style water.
                        //2: refraction(ripply and transparent)
                        //3: refraction with reflection at an angle
                        //4: ripplemapped without reflections (requires particle effects)
                        //5: ripples+reflections
r_fastturbcolour "0.1 0.2 0.3"  //The colour to use for water surfaces draw with r_waterstyle 0.
                                //
gl_specular_fallbackexp "1"
gl_specular_fallback "0.05"
seta gl_specular "1"
gl_flashblendscale "0.35"
seta gl_flashblend "0"
r_coronas_fadedist "256"        //Coronas will fade out over this distance.
r_coronas_mindist "128" //Coronas closer than this will be invisible, preventing near clip plane issues.
r_coronas_occlusion ""  //Specifies that coronas should be occluded more carefully.
                        //0: No occlusion, at all.
                        //1: BSP occlusion only (simple tracelines).
                        //2: non-bsp occlusion also (complex tracelines).
                        //3: Depthbuffer reads (forces synchronisation).
                        //4: occlusion queries.
seta r_coronas "1"      //Draw coronas on realtime lights. Overrides glquake-esque flashblends.
seta r_stains "0.75"
r_hdr_irisadaptation "0"
seta r_lightstylesmooth "1"
seta r_loadlit "1"
seta r_softwarebanding "0"      //Utilise the Quake colormap in order to emulate 8bit software rendering. This results in banding as well as other artifacts that some believe adds character. Also forces nearest sampling on affected surfaces (palette indicies do not interpolate well).
gl_overbright_all "0"
gl_overbright "1"
seta r_deluxemapping "1"        //Enables bumpmapping based upon precomputed light directions

// GL Renderer Options
gl_texture_anisotropic_filtering "4"
seta d_mipcap "0 1000"
seta gl_texturemode2d "l"       //Specifies how 2d images are sampled. format is a 3-tupple 
seta gl_texturemode "ll"        //Specifies how world/model textures appear. Typically 3 letters eg lln.
                                //First letter can be l(inear) or n(earest) and says how to sample from the mip (when downsampling).
                                //The middle letter can . to disable mipmaps, or l or n to describe whether to blend between mipmaps.
                                //The third letter says what to do when the texture is too low resolution and is thus the most noticable with low resolution textures, a n will make it look like lego, while an l will keep it smooth.
seta gl_blendsprites "1"        //Blend sprites instead of alpha testing them
vid_desktopgamma "0"    //Apply gamma ramps upon the desktop rather than the window.
vid_hardwaregamma "1"   //Use hardware gamma ramps. 0=loadtime-gamma, 1=glsl(windowed) or hardware(fullscreen), 2=always glsl, 3=always hardware gamma.
vid_srgb "0"            //The framebuffer should use sRGB colourspace. This has the effect of brightening the screen
vid_multisample "0"     //Set to 4 or so for multisample antialiasing (msaa).
gl_driver ""
r_novis "0"
gl_lightmap_average "0" //Determine lightmap values based upon the center of the polygon. This will give a more buggy look, quite probably.
gl_lightmap_nearest "0" //Use nearest sampling for lightmaps. This will give a more blocky look. Meaningless when gl_lightmap_average is enabled.
gl_compress "0"         //Enable automatic texture compression even for textures which are not pre-compressed.
gl_picmip2d "0"         //Reduce hud/menu texture sizes by some exponential factor.
gl_picmip "0"           //Reduce world/model texture sizes by some exponential factor.
gl_motionblur "0"
r_noaliasshadows "0"
r_noframegrouplerp "0"
seta r_lerpmuzzlehack "1"
gl_lerpimages "1"       //Enables smoother resampling for images which are not power-of-two, when the drivers do not support non-power-of-two textures.
gl_nocolors "0"
seta gl_affinemodels "0"

// Filesystem
fs_cache "1"

// View variables
brightness "0.0"        //Brightness is how much 'white' to add to each and every pixel on the screen.
contrast "1.0"          //Scales colour values linearly to make your screen easier to see. Setting this to anything but 1 without hardware gamma will reduce your framerates a little.
gamma "1.0"             //Controls how bright the screen is. Setting this to anything but 1 without hardware gamma requires glsl support and can noticably harm your framerate.
seta cl_bob "0.02"
seta cl_rollangle "2.0"
seta gl_polyblend "1"
cl_crossy "0"
cl_crossx "0"
crosshairsize "8"
crosshair "1"
crosshaircolor "255 255 255"
seta v_gunkick "1"
v_contentblend "1"

// client operation options
cl_nopext "0"
cl_standardmsg "0"      //Disables auto colour coding in console prints.
cl_standardchat "0"     //Disables auto colour coding in chat messages.
requiredownloads "1"    //0=join the game before downloads have even finished (might be laggy). 1=wait for all downloads to complete before joining.
seta cl_demoreel "0"    //When enabled, the engine will begin playing a demo loop on startup.
w_switch ""
b_switch ""
noaim ""
msg "1"                 //Filter console prints/messages. Only functions on QuakeWorld servers. 0=pickup messages. 1=death messages. 2=critical messages. 3=chat.
drate "3000000"         //A rough measure of the bandwidth to try to use while downloading (in bytes per second).
rate "30000"            //A rough measure of the bandwidth to try to use while playing. Too high a value may result in 'buffer bloat'.
bottomcolor ""
topcolor "4"
team ""
model ""
skin ""
name "putyournamehere"
cfg_save_name "fte"     //This is the config name that is saved by default when no argument is specified.
cfg_save_auto "0"       //If 1, the config will automatically be saved and without prompts. If 0, you'll have to save your config manually (possibly via prompts from the quit menu).
cfg_save_all ""         //If 1, cfg_save ALWAYS saves all cvars. If 0, cfg_save only ever saves archived cvars. If empty, cfg_save saves all cvars only when an explicit filename was given (ie: when not used internally via quit menu options).
cl_sendguid "1"
gl_font "comic"