// other aliases
alias +hook +button6
alias -hook -button6
+ alias +jetpack +button10
+ alias -jetpack -button10
alias use "impulse 21"
// for backwards compatibility
alias +show_info +button7
alias -show_info -button7
- bind f6 team_auto
-
// merge lightmaps up to 2048x2048 textures
mod_q3bsp_lightmapmergepower 4
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 (breaks 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_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 100
- seta cl_velocityzoom 0 "velocity based zooming of fov, negative values zoom out"
+ 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"
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"
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"
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"
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!)"
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_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"
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"
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"
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"
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
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"
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."
+ seta cl_jetpack_jump 1 "Activate jetpack by pressing jump in the air. 0 = Disable, 1 = Stop when touching ground, 2 = Enable"
+
// 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"
seta cl_gentle_messages 0 "client side gentle mode (only replaces frag messages/centerprints)"
seta cl_gentle_damage 0 "client side gentle mode (only replaces damage flash); when set to 1, a white flash replaces the blood image, when set to 2, a randomily colored flash is used instead"
- set g_jetpack 0 "Jetpack mutator (uses the hook's button, can't coexist with the offhand hook, but only with the onhand one)"
+ set g_jetpack 0 "Jetpack mutator"
set g_running_guns 0 "... or wonder, till it drives you mad, what would have followed if you had."
set g_bastet 0 "don't try"
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"
// 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)"
+ 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)"
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
exec mutators.cfg
exec notifications.cfg
exec monsters.cfg
+exec physics.cfg
// load console command aliases and settings
exec commands.cfg
float autocvar_captureleadlimit_override;
#define autocvar_capturelimit_override cvar("capturelimit_override")
#define autocvar_developer cvar("developer")
- float autocvar_developer_fteqccbugs;
float autocvar_ekg;
#define autocvar_fraglimit cvar("fraglimit")
#define autocvar_fraglimit_override cvar("fraglimit_override")
- float autocvar_g_allow_oldnexbeam;
+ float autocvar_g_allow_oldvortexbeam;
float autocvar_g_antilag;
float autocvar_g_antilag_nudge;
float autocvar_g_balance_armor_blockpercent;
float autocvar_g_balance_armor_rotlinear;
float autocvar_g_balance_armor_rotstable;
float autocvar_g_balance_armor_start;
- float autocvar_g_balance_rifle_bursttime;
- float autocvar_g_balance_rifle_primary_ammo;
- float autocvar_g_balance_rifle_primary_animtime;
- float autocvar_g_balance_rifle_primary_bullethail;
- float autocvar_g_balance_rifle_primary_burstcost;
- float autocvar_g_balance_rifle_primary_damage;
- float autocvar_g_balance_rifle_primary_force;
- float autocvar_g_balance_rifle_primary_refire;
- float autocvar_g_balance_rifle_primary_shots;
- float autocvar_g_balance_rifle_primary_solidpenetration;
- float autocvar_g_balance_rifle_primary_spread;
- float autocvar_g_balance_rifle_primary_tracer;
- float autocvar_g_balance_rifle_secondary;
- float autocvar_g_balance_rifle_secondary_ammo;
- float autocvar_g_balance_rifle_secondary_animtime;
- float autocvar_g_balance_rifle_secondary_bullethail;
- float autocvar_g_balance_rifle_secondary_burstcost;
- float autocvar_g_balance_rifle_secondary_damage;
- float autocvar_g_balance_rifle_secondary_force;
- float autocvar_g_balance_rifle_secondary_reload;
- float autocvar_g_balance_rifle_secondary_refire;
- float autocvar_g_balance_rifle_secondary_shots;
- float autocvar_g_balance_rifle_secondary_solidpenetration;
- float autocvar_g_balance_rifle_secondary_spread;
- float autocvar_g_balance_rifle_secondary_tracer;
- float autocvar_g_balance_rifle_reload_ammo;
- float autocvar_g_balance_rifle_reload_time;
float autocvar_g_balance_cloaked_alpha;
float autocvar_g_balance_contents_damagerate;
float autocvar_g_balance_contents_drowndelay;
float autocvar_g_balance_contents_playerdamage_lava;
float autocvar_g_balance_contents_playerdamage_slime;
float autocvar_g_balance_contents_projectiledamage;
- float autocvar_g_balance_crylink_primary_ammo;
- float autocvar_g_balance_crylink_primary_animtime;
- float autocvar_g_balance_crylink_primary_bouncedamagefactor;
- float autocvar_g_balance_crylink_primary_bounces;
- float autocvar_g_balance_crylink_primary_damage;
- float autocvar_g_balance_crylink_primary_edgedamage;
- float autocvar_g_balance_crylink_primary_force;
- float autocvar_g_balance_crylink_primary_joindelay;
- float autocvar_g_balance_crylink_primary_joinexplode;
- float autocvar_g_balance_crylink_primary_joinexplode_damage;
- float autocvar_g_balance_crylink_primary_joinexplode_edgedamage;
- float autocvar_g_balance_crylink_primary_joinexplode_force;
- float autocvar_g_balance_crylink_primary_joinexplode_radius;
- float autocvar_g_balance_crylink_primary_joinspread;
- float autocvar_g_balance_crylink_primary_linkexplode;
- float autocvar_g_balance_crylink_primary_middle_fadetime;
- float autocvar_g_balance_crylink_primary_middle_lifetime;
- float autocvar_g_balance_crylink_primary_other_fadetime;
- float autocvar_g_balance_crylink_primary_other_lifetime;
- float autocvar_g_balance_crylink_primary_radius;
- float autocvar_g_balance_crylink_primary_refire;
- float autocvar_g_balance_crylink_primary_shots;
- float autocvar_g_balance_crylink_primary_speed;
- float autocvar_g_balance_crylink_primary_spread;
- float autocvar_g_balance_crylink_secondary;
- float autocvar_g_balance_crylink_secondary_ammo;
- float autocvar_g_balance_crylink_secondary_animtime;
- float autocvar_g_balance_crylink_secondary_bouncedamagefactor;
- float autocvar_g_balance_crylink_secondary_bounces;
- float autocvar_g_balance_crylink_secondary_damage;
- float autocvar_g_balance_crylink_secondary_edgedamage;
- float autocvar_g_balance_crylink_secondary_force;
- float autocvar_g_balance_crylink_secondary_joindelay;
- float autocvar_g_balance_crylink_secondary_joinexplode;
- float autocvar_g_balance_crylink_secondary_joinexplode_damage;
- float autocvar_g_balance_crylink_secondary_joinexplode_edgedamage;
- float autocvar_g_balance_crylink_secondary_joinexplode_force;
- float autocvar_g_balance_crylink_secondary_joinexplode_radius;
- float autocvar_g_balance_crylink_secondary_joinspread;
- float autocvar_g_balance_crylink_secondary_line_fadetime;
- float autocvar_g_balance_crylink_secondary_line_lifetime;
- float autocvar_g_balance_crylink_secondary_linkexplode;
- float autocvar_g_balance_crylink_secondary_middle_fadetime;
- float autocvar_g_balance_crylink_secondary_middle_lifetime;
- float autocvar_g_balance_crylink_secondary_radius;
- float autocvar_g_balance_crylink_secondary_refire;
- float autocvar_g_balance_crylink_secondary_shots;
- float autocvar_g_balance_crylink_secondary_speed;
- float autocvar_g_balance_crylink_secondary_spread;
- float autocvar_g_balance_crylink_secondary_spreadtype;
- float autocvar_g_balance_crylink_reload_ammo;
- float autocvar_g_balance_crylink_reload_time;
float autocvar_g_balance_damagepush_speedfactor;
- float autocvar_g_balance_electro_combo_comboradius;
- float autocvar_g_balance_electro_combo_damage;
- float autocvar_g_balance_electro_combo_edgedamage;
- float autocvar_g_balance_electro_combo_force;
- float autocvar_g_balance_electro_combo_radius;
- float autocvar_g_balance_electro_combo_speed;
- float autocvar_g_balance_electro_combo_safeammocheck;
- float autocvar_g_balance_electro_lightning;
- float autocvar_g_balance_electro_primary_ammo;
- float autocvar_g_balance_electro_primary_animtime;
- float autocvar_g_balance_electro_primary_comboradius;
- float autocvar_g_balance_electro_primary_damage;
- float autocvar_g_balance_electro_primary_edgedamage;
- float autocvar_g_balance_electro_primary_falloff_halflifedist;
- float autocvar_g_balance_electro_primary_falloff_maxdist;
- float autocvar_g_balance_electro_primary_falloff_mindist;
- float autocvar_g_balance_electro_primary_force;
- float autocvar_g_balance_electro_primary_force_up;
- float autocvar_g_balance_electro_primary_lifetime;
- float autocvar_g_balance_electro_primary_radius;
- float autocvar_g_balance_electro_primary_range;
- float autocvar_g_balance_electro_primary_refire;
- float autocvar_g_balance_electro_primary_speed;
- float autocvar_g_balance_electro_secondary_ammo;
- float autocvar_g_balance_electro_secondary_animtime;
- float autocvar_g_balance_electro_secondary_bouncefactor;
- float autocvar_g_balance_electro_secondary_bouncestop;
- float autocvar_g_balance_electro_secondary_count;
- float autocvar_g_balance_electro_secondary_damage;
- float autocvar_g_balance_electro_secondary_damageforcescale;
- float autocvar_g_balance_electro_secondary_damagedbycontents;
- float autocvar_g_balance_electro_secondary_edgedamage;
- float autocvar_g_balance_electro_secondary_force;
- float autocvar_g_balance_electro_secondary_health;
- float autocvar_g_balance_electro_secondary_lifetime;
- float autocvar_g_balance_electro_secondary_radius;
- float autocvar_g_balance_electro_secondary_refire;
- float autocvar_g_balance_electro_secondary_refire2;
- float autocvar_g_balance_electro_secondary_speed;
- float autocvar_g_balance_electro_reload_ammo;
- float autocvar_g_balance_electro_reload_time;
float autocvar_g_balance_falldamage_deadminspeed;
float autocvar_g_balance_falldamage_factor;
float autocvar_g_balance_falldamage_maxdamage;
float autocvar_g_balance_falldamage_minspeed;
- float autocvar_g_balance_fireball_primary_animtime;
- float autocvar_g_balance_fireball_primary_bfgdamage;
- float autocvar_g_balance_fireball_primary_bfgforce;
- float autocvar_g_balance_fireball_primary_bfgradius;
- float autocvar_g_balance_fireball_primary_damage;
- float autocvar_g_balance_fireball_primary_damageforcescale;
- float autocvar_g_balance_fireball_primary_edgedamage;
- float autocvar_g_balance_fireball_primary_force;
- float autocvar_g_balance_fireball_primary_health;
- float autocvar_g_balance_fireball_primary_laserburntime;
- float autocvar_g_balance_fireball_primary_laserdamage;
- float autocvar_g_balance_fireball_primary_laseredgedamage;
- float autocvar_g_balance_fireball_primary_laserradius;
- float autocvar_g_balance_fireball_primary_lifetime;
- float autocvar_g_balance_fireball_primary_radius;
- float autocvar_g_balance_fireball_primary_refire;
- float autocvar_g_balance_fireball_primary_refire2;
- float autocvar_g_balance_fireball_primary_speed;
- float autocvar_g_balance_fireball_secondary_animtime;
- float autocvar_g_balance_fireball_secondary_damage;
- float autocvar_g_balance_fireball_secondary_damageforcescale;
- float autocvar_g_balance_fireball_secondary_damagetime;
- float autocvar_g_balance_fireball_secondary_laserburntime;
- float autocvar_g_balance_fireball_secondary_laserdamage;
- float autocvar_g_balance_fireball_secondary_laseredgedamage;
- float autocvar_g_balance_fireball_secondary_laserradius;
- float autocvar_g_balance_fireball_secondary_lifetime;
- float autocvar_g_balance_fireball_secondary_refire;
- float autocvar_g_balance_fireball_secondary_speed;
- float autocvar_g_balance_fireball_secondary_speed_up;
float autocvar_g_balance_firetransfer_damage;
float autocvar_g_balance_firetransfer_time;
float autocvar_g_balance_fuel_limit;
float autocvar_g_balance_grapplehook_stretch;
float autocvar_g_balance_grapplehook_damagedbycontents;
float autocvar_g_balance_grapplehook_refire;
- float autocvar_g_balance_grenadelauncher_bouncefactor;
- float autocvar_g_balance_grenadelauncher_bouncestop;
- float autocvar_g_balance_grenadelauncher_primary_ammo;
- float autocvar_g_balance_grenadelauncher_primary_animtime;
- float autocvar_g_balance_grenadelauncher_primary_damage;
- float autocvar_g_balance_grenadelauncher_primary_damageforcescale;
- float autocvar_g_balance_grenadelauncher_primary_edgedamage;
- float autocvar_g_balance_grenadelauncher_primary_force;
- float autocvar_g_balance_grenadelauncher_primary_health;
- float autocvar_g_balance_grenadelauncher_primary_lifetime;
- float autocvar_g_balance_grenadelauncher_primary_lifetime_stick;
- float autocvar_g_balance_grenadelauncher_primary_radius;
- float autocvar_g_balance_grenadelauncher_primary_refire;
- float autocvar_g_balance_grenadelauncher_primary_remote_minbouncecnt;
- float autocvar_g_balance_grenadelauncher_primary_speed;
- float autocvar_g_balance_grenadelauncher_primary_speed_up;
- float autocvar_g_balance_grenadelauncher_primary_type;
- float autocvar_g_balance_grenadelauncher_secondary_ammo;
- float autocvar_g_balance_grenadelauncher_secondary_animtime;
- float autocvar_g_balance_grenadelauncher_secondary_damage;
- float autocvar_g_balance_grenadelauncher_secondary_damageforcescale;
- float autocvar_g_balance_grenadelauncher_secondary_edgedamage;
- float autocvar_g_balance_grenadelauncher_secondary_force;
- float autocvar_g_balance_grenadelauncher_secondary_health;
- float autocvar_g_balance_grenadelauncher_secondary_lifetime;
- float autocvar_g_balance_grenadelauncher_secondary_lifetime_bounce;
- float autocvar_g_balance_grenadelauncher_secondary_lifetime_stick;
- float autocvar_g_balance_grenadelauncher_secondary_radius;
- float autocvar_g_balance_grenadelauncher_secondary_refire;
- float autocvar_g_balance_grenadelauncher_secondary_speed;
- float autocvar_g_balance_grenadelauncher_secondary_speed_up;
- float autocvar_g_balance_grenadelauncher_secondary_type;
- float autocvar_g_balance_grenadelauncher_reload_ammo;
- float autocvar_g_balance_grenadelauncher_reload_time;
- float autocvar_g_balance_hagar_primary_ammo;
- float autocvar_g_balance_hagar_primary_damage;
- float autocvar_g_balance_hagar_primary_edgedamage;
- float autocvar_g_balance_hagar_primary_force;
- float autocvar_g_balance_hagar_primary_health;
- float autocvar_g_balance_hagar_primary_damageforcescale;
- float autocvar_g_balance_hagar_primary_lifetime;
- float autocvar_g_balance_hagar_primary_radius;
- float autocvar_g_balance_hagar_primary_refire;
- float autocvar_g_balance_hagar_primary_speed;
- float autocvar_g_balance_hagar_secondary;
- float autocvar_g_balance_hagar_secondary_load;
- float autocvar_g_balance_hagar_secondary_load_speed;
- float autocvar_g_balance_hagar_secondary_load_spread;
- float autocvar_g_balance_hagar_secondary_load_spread_bias;
- float autocvar_g_balance_hagar_secondary_load_max;
- float autocvar_g_balance_hagar_secondary_load_hold;
- float autocvar_g_balance_hagar_secondary_load_releasedeath;
- float autocvar_g_balance_hagar_secondary_load_abort;
- float autocvar_g_balance_hagar_secondary_load_linkexplode;
- float autocvar_g_balance_hagar_secondary_load_animtime;
- float autocvar_g_balance_hagar_secondary_ammo;
- float autocvar_g_balance_hagar_secondary_damage;
- float autocvar_g_balance_hagar_secondary_edgedamage;
- float autocvar_g_balance_hagar_secondary_force;
- float autocvar_g_balance_hagar_secondary_health;
- float autocvar_g_balance_hagar_secondary_damageforcescale;
- float autocvar_g_balance_hagar_secondary_lifetime_min;
- float autocvar_g_balance_hagar_secondary_lifetime_rand;
- float autocvar_g_balance_hagar_secondary_radius;
- float autocvar_g_balance_hagar_secondary_refire;
- float autocvar_g_balance_hagar_secondary_speed;
- float autocvar_g_balance_hagar_secondary_spread;
- float autocvar_g_balance_hagar_reload_ammo;
- float autocvar_g_balance_hagar_reload_time;
float autocvar_g_balance_health_limit;
float autocvar_g_balance_health_regen;
float autocvar_g_balance_health_regenlinear;
float autocvar_g_balance_health_rot;
float autocvar_g_balance_health_rotlinear;
float autocvar_g_balance_health_rotstable;
- float autocvar_g_balance_hlac_primary_ammo;
- float autocvar_g_balance_hlac_primary_animtime;
- float autocvar_g_balance_hlac_primary_damage;
- float autocvar_g_balance_hlac_primary_edgedamage;
- float autocvar_g_balance_hlac_primary_force;
- float autocvar_g_balance_hlac_primary_lifetime;
- float autocvar_g_balance_hlac_primary_radius;
- float autocvar_g_balance_hlac_primary_refire;
- float autocvar_g_balance_hlac_primary_speed;
- float autocvar_g_balance_hlac_primary_spread_add;
- float autocvar_g_balance_hlac_primary_spread_crouchmod;
- float autocvar_g_balance_hlac_primary_spread_max;
- float autocvar_g_balance_hlac_primary_spread_min;
- float autocvar_g_balance_hlac_secondary;
- float autocvar_g_balance_hlac_secondary_ammo;
- float autocvar_g_balance_hlac_secondary_animtime;
- float autocvar_g_balance_hlac_secondary_damage;
- float autocvar_g_balance_hlac_secondary_edgedamage;
- float autocvar_g_balance_hlac_secondary_force;
- float autocvar_g_balance_hlac_secondary_lifetime;
- float autocvar_g_balance_hlac_secondary_radius;
- float autocvar_g_balance_hlac_secondary_refire;
- float autocvar_g_balance_hlac_secondary_shots;
- float autocvar_g_balance_hlac_secondary_speed;
- float autocvar_g_balance_hlac_secondary_spread;
- float autocvar_g_balance_hlac_secondary_spread_crouchmod;
- float autocvar_g_balance_hlac_reload_ammo;
- float autocvar_g_balance_hlac_reload_time;
- float autocvar_g_balance_hook_primary_animtime;
- float autocvar_g_balance_hook_primary_fuel;
- float autocvar_g_balance_hook_primary_hooked_fuel;
- float autocvar_g_balance_hook_primary_hooked_time_free;
- float autocvar_g_balance_hook_primary_hooked_time_max;
- float autocvar_g_balance_hook_primary_refire;
- float autocvar_g_balance_hook_secondary_ammo;
- float autocvar_g_balance_hook_secondary_animtime;
- float autocvar_g_balance_hook_secondary_damage;
- float autocvar_g_balance_hook_secondary_duration;
- float autocvar_g_balance_hook_secondary_edgedamage;
- float autocvar_g_balance_hook_secondary_force;
- float autocvar_g_balance_hook_secondary_gravity;
- float autocvar_g_balance_hook_secondary_lifetime;
- float autocvar_g_balance_hook_secondary_power;
- float autocvar_g_balance_hook_secondary_radius;
- float autocvar_g_balance_hook_secondary_refire;
- float autocvar_g_balance_hook_secondary_speed;
- float autocvar_g_balance_hook_secondary_health;
- float autocvar_g_balance_hook_secondary_damageforcescale;
float autocvar_g_balance_keyhunt_damageforcescale;
float autocvar_g_balance_keyhunt_delay_collect;
float autocvar_g_balance_keyhunt_delay_return;
float autocvar_g_balance_keyhunt_throwvelocity;
float autocvar_g_balance_kill_delay;
float autocvar_g_balance_kill_antispam;
- float autocvar_g_balance_laser_primary_animtime;
- float autocvar_g_balance_laser_primary_damage;
- float autocvar_g_balance_laser_primary_delay;
- float autocvar_g_balance_laser_primary_edgedamage;
- float autocvar_g_balance_laser_primary_force;
- float autocvar_g_balance_laser_primary_force_other_scale;
- float autocvar_g_balance_laser_primary_force_velocitybias;
- float autocvar_g_balance_laser_primary_force_zscale;
- float autocvar_g_balance_laser_primary_lifetime;
- float autocvar_g_balance_laser_primary_radius;
- float autocvar_g_balance_laser_primary_refire;
- float autocvar_g_balance_laser_primary_shotangle;
- float autocvar_g_balance_laser_primary_speed;
- float autocvar_g_balance_laser_secondary;
- float autocvar_g_balance_laser_secondary_animtime;
- float autocvar_g_balance_laser_secondary_damage;
- float autocvar_g_balance_laser_secondary_edgedamage;
- float autocvar_g_balance_laser_secondary_force;
- float autocvar_g_balance_laser_secondary_force_other_scale;
- float autocvar_g_balance_laser_secondary_force_velocitybias;
- float autocvar_g_balance_laser_secondary_force_zscale;
- float autocvar_g_balance_laser_secondary_lifetime;
- float autocvar_g_balance_laser_secondary_radius;
- float autocvar_g_balance_laser_secondary_speed;
- float autocvar_g_balance_laser_reload_ammo;
- float autocvar_g_balance_laser_reload_time;
- float autocvar_g_balance_minelayer_ammo;
- float autocvar_g_balance_minelayer_animtime;
- float autocvar_g_balance_minelayer_damage;
- float autocvar_g_balance_minelayer_damageforcescale;
- float autocvar_g_balance_minelayer_detonatedelay;
- float autocvar_g_balance_minelayer_edgedamage;
- float autocvar_g_balance_minelayer_force;
- float autocvar_g_balance_minelayer_health;
- float autocvar_g_balance_minelayer_lifetime;
- float autocvar_g_balance_minelayer_lifetime_countdown;
- float autocvar_g_balance_minelayer_limit;
- float autocvar_g_balance_minelayer_protection;
- float autocvar_g_balance_minelayer_proximityradius;
- float autocvar_g_balance_minelayer_radius;
- float autocvar_g_balance_minelayer_refire;
- float autocvar_g_balance_minelayer_remote_damage;
- float autocvar_g_balance_minelayer_remote_edgedamage;
- float autocvar_g_balance_minelayer_remote_force;
- float autocvar_g_balance_minelayer_remote_radius;
- float autocvar_g_balance_minelayer_speed;
- float autocvar_g_balance_minelayer_time;
- float autocvar_g_balance_minelayer_reload_ammo;
- float autocvar_g_balance_minelayer_reload_time;
- float autocvar_g_balance_minstanex_ammo;
- float autocvar_g_balance_minstanex_laser_ammo;
- float autocvar_g_balance_minstanex_laser_animtime;
- float autocvar_g_balance_minstanex_laser_refire;
- float autocvar_g_balance_minstanex_animtime;
- float autocvar_g_balance_minstanex_refire;
- float autocvar_g_balance_minstanex_reload_ammo;
- float autocvar_g_balance_minstanex_reload_time;
- float autocvar_g_balance_nex_charge;
- float autocvar_g_balance_nex_charge_animlimit;
- float autocvar_g_balance_nex_charge_limit;
- float autocvar_g_balance_nex_charge_maxspeed;
- float autocvar_g_balance_nex_charge_mindmg;
- float autocvar_g_balance_nex_charge_minspeed;
- float autocvar_g_balance_nex_charge_rate;
- float autocvar_g_balance_nex_charge_rot_pause;
- float autocvar_g_balance_nex_charge_rot_rate;
- float autocvar_g_balance_nex_charge_shot_multiplier;
- float autocvar_g_balance_nex_charge_start;
- float autocvar_g_balance_nex_charge_velocity_rate;
- float autocvar_g_balance_nex_primary_ammo;
- float autocvar_g_balance_nex_primary_animtime;
- float autocvar_g_balance_nex_primary_damage;
- float autocvar_g_balance_nex_primary_damagefalloff_forcehalflife;
- float autocvar_g_balance_nex_primary_damagefalloff_halflife;
- float autocvar_g_balance_nex_primary_damagefalloff_maxdist;
- float autocvar_g_balance_nex_primary_damagefalloff_mindist;
- float autocvar_g_balance_nex_primary_force;
- float autocvar_g_balance_nex_primary_refire;
- float autocvar_g_balance_nex_secondary;
- float autocvar_g_balance_nex_secondary_ammo;
- float autocvar_g_balance_nex_secondary_animtime;
- float autocvar_g_balance_nex_secondary_charge;
- float autocvar_g_balance_nex_secondary_charge_rate;
- float autocvar_g_balance_nex_secondary_chargepool;
- float autocvar_g_balance_nex_secondary_chargepool_pause_health_regen;
- float autocvar_g_balance_nex_secondary_chargepool_pause_regen;
- float autocvar_g_balance_nex_secondary_chargepool_regen;
- float autocvar_g_balance_nex_secondary_damage;
- float autocvar_g_balance_nex_secondary_damagefalloff_forcehalflife;
- float autocvar_g_balance_nex_secondary_damagefalloff_halflife;
- float autocvar_g_balance_nex_secondary_damagefalloff_maxdist;
- float autocvar_g_balance_nex_secondary_damagefalloff_mindist;
- float autocvar_g_balance_nex_secondary_force;
- float autocvar_g_balance_nex_secondary_refire;
- float autocvar_g_balance_nex_reload_ammo;
- float autocvar_g_balance_nex_reload_time;
float autocvar_g_balance_nexball_primary_animtime;
float autocvar_g_balance_nexball_primary_refire;
float autocvar_g_balance_nexball_primary_speed;
float autocvar_g_balance_nexball_secondary_refire;
float autocvar_g_balance_nexball_secondary_speed;
float autocvar_g_balance_nix_ammo_cells;
+ float autocvar_g_balance_nix_ammo_plasma;
float autocvar_g_balance_nix_ammo_fuel;
float autocvar_g_balance_nix_ammo_nails;
float autocvar_g_balance_nix_ammo_rockets;
float autocvar_g_balance_nix_ammo_shells;
float autocvar_g_balance_nix_ammoincr_cells;
+ float autocvar_g_balance_nix_ammoincr_plasma;
float autocvar_g_balance_nix_ammoincr_fuel;
float autocvar_g_balance_nix_ammoincr_nails;
float autocvar_g_balance_nix_ammoincr_rockets;
float autocvar_g_balance_pause_health_rot_spawn;
float autocvar_g_balance_portal_health;
float autocvar_g_balance_portal_lifetime;
- float autocvar_g_balance_porto_primary_animtime;
- float autocvar_g_balance_porto_primary_lifetime;
- float autocvar_g_balance_porto_primary_refire;
- float autocvar_g_balance_porto_primary_speed;
- float autocvar_g_balance_porto_secondary;
- float autocvar_g_balance_porto_secondary_animtime;
- float autocvar_g_balance_porto_secondary_lifetime;
- float autocvar_g_balance_porto_secondary_refire;
- float autocvar_g_balance_porto_secondary_speed;
float autocvar_g_balance_powerup_invincible_takedamage;
float autocvar_g_balance_powerup_invincible_time;
float autocvar_g_balance_powerup_strength_damage;
float autocvar_g_balance_powerup_strength_selfforce;
float autocvar_g_balance_powerup_strength_time;
float autocvar_g_balance_superweapons_time;
- float autocvar_g_balance_rocketlauncher_ammo;
- float autocvar_g_balance_rocketlauncher_animtime;
- float autocvar_g_balance_rocketlauncher_damage;
- float autocvar_g_balance_rocketlauncher_damageforcescale;
- float autocvar_g_balance_rocketlauncher_detonatedelay;
- float autocvar_g_balance_rocketlauncher_edgedamage;
- float autocvar_g_balance_rocketlauncher_force;
- float autocvar_g_balance_rocketlauncher_guidedelay;
- float autocvar_g_balance_rocketlauncher_guidegoal;
- float autocvar_g_balance_rocketlauncher_guiderate;
- float autocvar_g_balance_rocketlauncher_guideratedelay;
- float autocvar_g_balance_rocketlauncher_guidestop;
- float autocvar_g_balance_rocketlauncher_health;
- float autocvar_g_balance_rocketlauncher_lifetime;
- float autocvar_g_balance_rocketlauncher_radius;
- float autocvar_g_balance_rocketlauncher_refire;
- float autocvar_g_balance_rocketlauncher_remote_damage;
- float autocvar_g_balance_rocketlauncher_remote_edgedamage;
- float autocvar_g_balance_rocketlauncher_remote_force;
- float autocvar_g_balance_rocketlauncher_remote_radius;
- float autocvar_g_balance_rocketlauncher_speed;
- float autocvar_g_balance_rocketlauncher_speedaccel;
- float autocvar_g_balance_rocketlauncher_speedstart;
- float autocvar_g_balance_rocketlauncher_reload_ammo;
- float autocvar_g_balance_rocketlauncher_reload_time;
- float autocvar_g_balance_seeker_type;
- float autocvar_g_balance_seeker_flac_ammo;
- float autocvar_g_balance_seeker_flac_animtime;
- float autocvar_g_balance_seeker_flac_damage;
- float autocvar_g_balance_seeker_flac_edgedamage;
- float autocvar_g_balance_seeker_flac_force;
- float autocvar_g_balance_seeker_flac_lifetime;
- float autocvar_g_balance_seeker_flac_lifetime_rand;
- float autocvar_g_balance_seeker_flac_radius;
- float autocvar_g_balance_seeker_flac_refire;
- float autocvar_g_balance_seeker_missile_accel;
- float autocvar_g_balance_seeker_missile_ammo;
- float autocvar_g_balance_seeker_missile_animtime;
- float autocvar_g_balance_seeker_missile_count;
- float autocvar_g_balance_seeker_missile_damage;
- float autocvar_g_balance_seeker_missile_damageforcescale;
- float autocvar_g_balance_seeker_missile_decel;
- float autocvar_g_balance_seeker_missile_delay;
- float autocvar_g_balance_seeker_missile_edgedamage;
- float autocvar_g_balance_seeker_missile_force;
- float autocvar_g_balance_seeker_missile_health;
- float autocvar_g_balance_seeker_missile_lifetime;
- float autocvar_g_balance_seeker_missile_proxy;
- float autocvar_g_balance_seeker_missile_proxy_delay;
- float autocvar_g_balance_seeker_missile_proxy_maxrange;
- float autocvar_g_balance_seeker_missile_radius;
- float autocvar_g_balance_seeker_missile_refire;
- float autocvar_g_balance_seeker_missile_smart;
- float autocvar_g_balance_seeker_missile_smart_mindist;
- float autocvar_g_balance_seeker_missile_smart_trace_max;
- float autocvar_g_balance_seeker_missile_smart_trace_min;
- float autocvar_g_balance_seeker_missile_speed_max;
- float autocvar_g_balance_seeker_missile_turnrate;
- float autocvar_g_balance_seeker_tag_ammo;
- float autocvar_g_balance_seeker_tag_animtime;
- float autocvar_g_balance_seeker_tag_damageforcescale;
- float autocvar_g_balance_seeker_tag_health;
- float autocvar_g_balance_seeker_tag_lifetime;
- float autocvar_g_balance_seeker_tag_refire;
- float autocvar_g_balance_seeker_tag_speed;
- float autocvar_g_balance_seeker_tag_tracker_lifetime;
- float autocvar_g_balance_seeker_reload_ammo;
- float autocvar_g_balance_seeker_reload_time;
float autocvar_g_balance_selfdamagepercent;
- float autocvar_g_balance_shotgun_primary_ammo;
- float autocvar_g_balance_shotgun_primary_animtime;
- float autocvar_g_balance_shotgun_primary_bullets;
- float autocvar_g_balance_shotgun_primary_damage;
- float autocvar_g_balance_shotgun_primary_force;
- float autocvar_g_balance_shotgun_primary_refire;
- float autocvar_g_balance_shotgun_primary_solidpenetration;
- float autocvar_g_balance_shotgun_primary_spread;
- float autocvar_g_balance_shotgun_secondary;
- float autocvar_g_balance_shotgun_secondary_animtime;
- float autocvar_g_balance_shotgun_secondary_damage;
- float autocvar_g_balance_shotgun_secondary_force;
- float autocvar_g_balance_shotgun_secondary_melee_delay;
- float autocvar_g_balance_shotgun_secondary_melee_range;
- float autocvar_g_balance_shotgun_secondary_melee_swing_side;
- float autocvar_g_balance_shotgun_secondary_melee_swing_up;
- float autocvar_g_balance_shotgun_secondary_melee_time;
- float autocvar_g_balance_shotgun_secondary_melee_traces;
- float autocvar_g_balance_shotgun_secondary_melee_no_doubleslap;
- float autocvar_g_balance_shotgun_secondary_melee_nonplayerdamage;
- float autocvar_g_balance_shotgun_secondary_melee_multihit;
- float autocvar_g_balance_shotgun_secondary_refire;
- float autocvar_g_balance_shotgun_reload_ammo;
- float autocvar_g_balance_shotgun_reload_time;
float autocvar_g_balance_teams;
float autocvar_g_balance_teams_prevent_imbalance;
float autocvar_g_balance_teams_scorefactor;
- float autocvar_g_balance_tuba_animtime;
- float autocvar_g_balance_tuba_attenuation;
- float autocvar_g_balance_tuba_damage;
- float autocvar_g_balance_tuba_edgedamage;
- float autocvar_g_balance_tuba_force;
- float autocvar_g_balance_tuba_radius;
- float autocvar_g_balance_tuba_refire;
- float autocvar_g_balance_uzi_burst;
- float autocvar_g_balance_uzi_burst_ammo;
- float autocvar_g_balance_uzi_burst_animtime;
- float autocvar_g_balance_uzi_burst_refire;
- float autocvar_g_balance_uzi_burst_refire2;
- float autocvar_g_balance_uzi_burst_spread;
- float autocvar_g_balance_uzi_first;
- float autocvar_g_balance_uzi_first_ammo;
- float autocvar_g_balance_uzi_first_damage;
- float autocvar_g_balance_uzi_first_force;
- float autocvar_g_balance_uzi_first_refire;
- float autocvar_g_balance_uzi_first_spread;
- float autocvar_g_balance_uzi_mode;
- float autocvar_g_balance_uzi_solidpenetration;
- float autocvar_g_balance_uzi_spread_add;
- float autocvar_g_balance_uzi_spread_max;
- float autocvar_g_balance_uzi_spread_min;
- float autocvar_g_balance_uzi_sustained_ammo;
- float autocvar_g_balance_uzi_sustained_damage;
- float autocvar_g_balance_uzi_sustained_force;
- float autocvar_g_balance_uzi_sustained_refire;
- float autocvar_g_balance_uzi_sustained_spread;
- float autocvar_g_balance_uzi_reload_ammo;
- float autocvar_g_balance_uzi_reload_time;
float autocvar_g_ballistics_density_corpse;
float autocvar_g_ballistics_density_player;
float autocvar_g_ballistics_mindistance;
float autocvar_g_onslaught_cp_regen;
float autocvar_g_onslaught_gen_health;
float autocvar_g_pickup_cells_max;
+ float autocvar_g_pickup_plasma_max;
float autocvar_g_pickup_fuel_max;
float autocvar_g_pickup_items;
float autocvar_g_pickup_nails_max;
float autocvar_g_player_alpha;
float autocvar_g_player_brightness;
float autocvar_g_playerclip_collisions;
- string autocvar_g_playerstats_uri;
float autocvar_g_powerups;
float autocvar_g_projectiles_damage;
float autocvar_g_projectiles_keep_owner;
float autocvar_g_spawn_useallspawns;
float autocvar_g_spawnpoints_auto_move_out_of_solid;
#define autocvar_g_spawnshieldtime cvar("g_spawnshieldtime")
- #define autocvar_g_start_weapon_laser cvar("g_start_weapon_laser")
float autocvar_g_tdm_team_spawns;
float autocvar_g_tdm_point_limit;
float autocvar_g_tdm_point_leadlimit;
float autocvar_snd_soundradius;
float autocvar_spawn_debug;
float autocvar_speedmeter;
-float autocvar_sv_accelerate;
var float autocvar_sv_accuracy_data_share = 1;
string autocvar_sv_adminnick;
-float autocvar_sv_airaccel_qw;
-float autocvar_sv_airaccel_qw_stretchfactor;
-float autocvar_sv_airaccel_sideways_friction;
-float autocvar_sv_airaccelerate;
-float autocvar_sv_aircontrol;
-float autocvar_sv_aircontrol_penalty;
-float autocvar_sv_aircontrol_power;
-float autocvar_sv_airspeedlimit_nonqw;
-float autocvar_sv_airstopaccelerate;
-float autocvar_sv_airstrafeaccel_qw;
-float autocvar_sv_airstrafeaccelerate;
float autocvar_sv_autoscreenshot;
float autocvar_sv_cheats;
float autocvar_sv_clientcommand_antispam_time;
string autocvar_sv_eventlog_files_nameprefix;
string autocvar_sv_eventlog_files_namesuffix;
float autocvar_sv_eventlog_files_timestamps;
-float autocvar_sv_friction;
float autocvar_sv_friction_on_land;
float autocvar_sv_gameplayfix_q2airaccelerate;
float autocvar_sv_gentle;
string autocvar_sv_logscores_filename;
float autocvar_sv_mapchange_delay;
float autocvar_sv_maxairspeed;
-float autocvar_sv_maxairstrafespeed;
float autocvar_sv_maxspeed;
string autocvar_sv_motd;
float autocvar_sv_precacheplayermodels;
- float autocvar_sv_precacheweapons;
+ //float autocvar_sv_precacheweapons; // WEAPONTODO?
float autocvar_sv_q3acompat_machineshotgunswap;
float autocvar_sv_ready_restart;
float autocvar_sv_ready_restart_after_countdown;
float autocvar_sv_spectator_speed_multiplier;
float autocvar_sv_status_privacy;
float autocvar_sv_stepheight;
-float autocvar_sv_stopspeed;
float autocvar_sv_strengthsound_antispam_refire_threshold;
float autocvar_sv_strengthsound_antispam_time;
float autocvar_sv_teamnagger;
float autocvar_sv_vote_timeout;
float autocvar_sv_vote_wait;
float autocvar_sv_vote_gamestart;
-float autocvar_sv_warsowbunny_accel;
-float autocvar_sv_warsowbunny_airforwardaccel;
-float autocvar_sv_warsowbunny_backtosideratio;
-float autocvar_sv_warsowbunny_topspeed;
-float autocvar_sv_warsowbunny_turnaccel;
float autocvar_sv_waypointsprite_deadlifetime;
float autocvar_sv_waypointsprite_deployed_lifetime;
float autocvar_sv_waypointsprite_limitedrange;
float autocvar_g_campcheck_distance;
float autocvar_g_campcheck_interval;
float autocvar_g_jump_grunt;
+ float autocvar_g_overkill_powerups_replace;
+ float autocvar_g_overkill_superguns_respawn_time;
+ float autocvar_g_overkill_100h_anyway;
+ float autocvar_g_overkill_100a_anyway;
+ float autocvar_g_overkill_ammo_charge;
+ float autocvar_g_overkill_ammo_charge_notice;
+ float autocvar_g_overkill_ammo_charge_limit;
float autocvar_g_spawn_near_teammate_distance;
float autocvar_g_spawn_near_teammate_ignore_spawnpoint;
float autocvar_g_spawn_near_teammate_ignore_spawnpoint_delay;
float autocvar_g_spawn_near_teammate_ignore_spawnpoint_delay_death;
float autocvar_g_spawn_near_teammate_ignore_spawnpoint_check_health;
float autocvar_g_spawn_near_teammate_ignore_spawnpoint_closetodeath;
+float autocvar_g_physics_clientselect;
+string autocvar_g_physics_clientselect_options;
float autocvar_g_buffs_waypoint_distance;
float autocvar_g_buffs_randomize;
float autocvar_g_buffs_random_lifetime;
float autocvar_g_buffs_invisible_alpha;
float autocvar_g_buffs_flight_gravity;
float autocvar_g_buffs_jump_height;
-
.float wasFlying;
.float spectatorspeed;
+// client side physics
+float Physics_Valid(string thecvar)
+{
+ if(!autocvar_g_physics_clientselect) { return FALSE; }
+
+ string l = strcat(" ", autocvar_g_physics_clientselect_options, " ");
+
+ if(strstrofs(l, strcat(" ", thecvar, " "), 0) >= 0)
+ return TRUE;
+
+ return FALSE;
+}
+
+float Physics_ClientOption(entity pl, string option)
+{
+ if(Physics_Valid(pl.cvar_cl_physics) && (cvar_type(sprintf("g_physics_%s_%s", pl.cvar_cl_physics, option)) & 1))
+ return cvar(sprintf("g_physics_%s_%s", pl.cvar_cl_physics, option));
+ else
+ return cvar(strcat("sv_", option));
+}
+
/*
=============
PlayerJump
When you press the jump key
+ returns TRUE if handled
=============
*/
- void PlayerJump (void)
+ float PlayerJump (void)
{
if(self.frozen)
- return; // no jumping in freezetag when frozen
+ return TRUE; // no jumping in freezetag when frozen
if(self.player_blocked)
- return; // no jumping while blocked
+ return TRUE; // no jumping while blocked
float doublejump = FALSE;
- float mjumpheight = autocvar_sv_jumpvelocity;
+ float mjumpheight = self.stat_sv_jumpvelocity;
player_multijump = doublejump;
player_jumpheight = mjumpheight;
if(MUTATOR_CALLHOOK(PlayerJump))
- return;
+ return TRUE;
doublejump = player_multijump;
mjumpheight = player_jumpheight;
if (self.waterlevel >= WATERLEVEL_SWIMMING)
{
self.velocity_z = self.stat_sv_maxspeed * 0.7;
- return;
+ return TRUE;
}
if (!doublejump)
if (!(self.flags & FL_ONGROUND))
- return;
+ return !(self.flags & FL_JUMPRELEASED);
if(self.cvar_cl_movement_track_canjump)
if (!(self.flags & FL_JUMPRELEASED))
- return;
+ return TRUE;
// sv_jumpspeedcap_min/sv_jumpspeedcap_max act as baseline
// velocity bounds. Final velocity is bound between (jumpheight *
self.restart_jump = -1; // restart jump anim next time
// value -1 is used to not use the teleport bit (workaround for tiny hitch when re-jumping)
+ return TRUE;
}
void CheckWaterJump()
{
}
}
}
+
+ .float jetpack_stopped;
+ // Hack: shouldn't need to know about this
+ .float multijump_count;
void CheckPlayerJump()
{
- if (self.BUTTON_JUMP)
- PlayerJump ();
+ float was_flying = self.items & IT_USING_JETPACK;
+
+ if (self.cvar_cl_jetpack_jump < 2)
+ self.items &= ~IT_USING_JETPACK;
+
+ if (self.BUTTON_JUMP || self.BUTTON_JETPACK)
+ {
+ float air_jump = !PlayerJump() || self.multijump_count > 0; // PlayerJump() has important side effects
+ float activate = self.cvar_cl_jetpack_jump && air_jump && self.BUTTON_JUMP || self.BUTTON_JETPACK;
+ float has_fuel = !autocvar_g_jetpack_fuel || self.ammo_fuel || self.items & IT_UNLIMITED_WEAPON_AMMO;
+ if (self.jetpack_stopped) { }
+ else if (!has_fuel)
+ {
+ if (was_flying) // TODO: ran out of fuel message
+ Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_JETPACK_NOFUEL);
+ else
+ Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_JETPACK_NOFUEL);
+ self.jetpack_stopped = TRUE;
+ self.items &= ~IT_USING_JETPACK;
+ }
+ else if (activate && !self.frozen)
+ self.items |= IT_USING_JETPACK;
+ }
else
+ {
+ self.jetpack_stopped = FALSE;
+ self.items &= ~IT_USING_JETPACK;
+ }
+ if (!self.BUTTON_JUMP)
self.flags |= FL_JUMPRELEASED;
if (self.waterlevel == WATERLEVEL_SWIMMING)
return;
#endif
- k *= bound(0, wishspeed / autocvar_sv_maxairspeed, 1);
+ k *= bound(0, wishspeed / self.stat_sv_maxairspeed, 1);
zspeed = self.velocity_z;
self.velocity_z = 0;
if(dot > 0) // we can't change direction while slowing down
{
- k *= pow(dot, autocvar_sv_aircontrol_power)*frametime;
- xyspeed = max(0, xyspeed - autocvar_sv_aircontrol_penalty * sqrt(max(0, 1 - dot*dot)) * k/32);
- k *= autocvar_sv_aircontrol;
+ k *= pow(dot, self.stat_sv_aircontrol_power)*frametime;
+ xyspeed = max(0, xyspeed - self.stat_sv_aircontrol_penalty * sqrt(max(0, 1 - dot*dot)) * k/32);
+ k *= self.stat_sv_aircontrol;
self.velocity = normalize(self.velocity * xyspeed + wishdir * k);
}
if(wishspeed > curspeed * 1.01)
{
- wishspeed = min(wishspeed, curspeed + autocvar_sv_warsowbunny_airforwardaccel * self.stat_sv_maxspeed * frametime);
+ wishspeed = min(wishspeed, curspeed + self.stat_sv_warsowbunny_airforwardaccel * self.stat_sv_maxspeed * frametime);
}
else
{
- f = max(0, (autocvar_sv_warsowbunny_topspeed - curspeed) / (autocvar_sv_warsowbunny_topspeed - self.stat_sv_maxspeed));
- wishspeed = max(curspeed, self.stat_sv_maxspeed) + autocvar_sv_warsowbunny_accel * f * self.stat_sv_maxspeed * frametime;
+ f = max(0, (self.stat_sv_warsowbunny_topspeed - curspeed) / (self.stat_sv_warsowbunny_topspeed - self.stat_sv_maxspeed));
+ wishspeed = max(curspeed, self.stat_sv_maxspeed) + self.stat_sv_warsowbunny_accel * f * self.stat_sv_maxspeed * frametime;
}
wishvel = wishdir * wishspeed;
acceldir = wishvel - curvel;
addspeed = vlen(acceldir);
acceldir = normalize(acceldir);
- accelspeed = min(addspeed, autocvar_sv_warsowbunny_turnaccel * self.stat_sv_maxspeed * frametime);
+ accelspeed = min(addspeed, self.stat_sv_warsowbunny_turnaccel * self.stat_sv_maxspeed * frametime);
- if(autocvar_sv_warsowbunny_backtosideratio < 1)
+ if(self.stat_sv_warsowbunny_backtosideratio < 1)
{
curdir = normalize(curvel);
dot = acceldir * curdir;
if(dot < 0)
- acceldir = acceldir - (1 - autocvar_sv_warsowbunny_backtosideratio) * dot * curdir;
+ acceldir = acceldir - (1 - self.stat_sv_warsowbunny_backtosideratio) * dot * curdir;
}
self.velocity += accelspeed * acceldir;
// fix physics stats for g_movement_highspeed
// TODO maybe rather use maxairspeed? needs testing
- self.stat_sv_airaccel_qw = AdjustAirAccelQW(autocvar_sv_airaccel_qw, maxspd_mod);
- if(autocvar_sv_airstrafeaccel_qw)
- self.stat_sv_airstrafeaccel_qw = AdjustAirAccelQW(autocvar_sv_airstrafeaccel_qw, maxspd_mod);
+ self.stat_sv_airaccel_qw = AdjustAirAccelQW(Physics_ClientOption(self, "airaccel_qw"), maxspd_mod);
+ if(Physics_ClientOption(self, "airstrafeaccel_qw"))
+ self.stat_sv_airstrafeaccel_qw = AdjustAirAccelQW(Physics_ClientOption(self, "airstrafeaccel_qw"), maxspd_mod);
else
self.stat_sv_airstrafeaccel_qw = 0;
- self.stat_sv_airspeedlimit_nonqw = autocvar_sv_airspeedlimit_nonqw * maxspd_mod;
- self.stat_sv_maxspeed = autocvar_sv_maxspeed * maxspd_mod; // also slow walking
+ self.stat_sv_airspeedlimit_nonqw = Physics_ClientOption(self, "airspeedlimit_nonqw") * maxspd_mod;
+ self.stat_sv_maxspeed = Physics_ClientOption(self, "maxspeed") * maxspd_mod; // also slow walking
+
+ // fix some new settings
+ self.stat_sv_airaccel_qw_stretchfactor = Physics_ClientOption(self, "airaccel_qw_stretchfactor");
+ self.stat_sv_maxairstrafespeed = Physics_ClientOption(self, "maxairstrafespeed");
+ self.stat_sv_maxairspeed = Physics_ClientOption(self, "maxairspeed");
+ self.stat_sv_airstrafeaccelerate = Physics_ClientOption(self, "airstrafeaccelerate");
+ self.stat_sv_warsowbunny_turnaccel = Physics_ClientOption(self, "warsowbunny_turnaccel");
+ self.stat_sv_airaccel_sideways_friction = Physics_ClientOption(self, "airaccel_sideways_friction");
+ self.stat_sv_aircontrol = Physics_ClientOption(self, "aircontrol");
+ self.stat_sv_aircontrol_power = Physics_ClientOption(self, "aircontrol_power");
+ self.stat_sv_aircontrol_penalty = Physics_ClientOption(self, "aircontrol_penalty");
+ self.stat_sv_warsowbunny_airforwardaccel = Physics_ClientOption(self, "warsowbunny_airforwardaccel");
+ self.stat_sv_warsowbunny_topspeed = Physics_ClientOption(self, "warsowbunny_topspeed");
+ self.stat_sv_warsowbunny_accel = Physics_ClientOption(self, "warsowbunny_accel");
+ self.stat_sv_warsowbunny_backtosideratio = Physics_ClientOption(self, "warsowbunny_backtosideratio");
+ self.stat_sv_friction = Physics_ClientOption(self, "friction");
+ self.stat_sv_accelerate = Physics_ClientOption(self, "accelerate");
+ self.stat_sv_stopspeed = Physics_ClientOption(self, "stopspeed");
+ self.stat_sv_airaccelerate = Physics_ClientOption(self, "airaccelerate");
+ self.stat_sv_airstopaccelerate = Physics_ClientOption(self, "airstopaccelerate");
+ self.stat_sv_jumpvelocity = Physics_ClientOption(self, "jumpvelocity");
if(self.PlayerPhysplug)
if(self.PlayerPhysplug())
bot_think();
}
- self.items &= ~IT_USING_JETPACK;
-
if(IS_PLAYER(self))
{
if(self.race_penalty)
maxspd_mod = self.spectatorspeed;
}
- spd = max(self.stat_sv_maxspeed, autocvar_sv_maxairspeed) * maxspd_mod * swampspd_mod;
+ spd = max(self.stat_sv_maxspeed, self.stat_sv_maxairspeed) * maxspd_mod * swampspd_mod;
if(self.speed != spd)
{
self.speed = spd;
// noclipping or flying
self.flags &= ~FL_ONGROUND;
- self.velocity = self.velocity * (1 - frametime * autocvar_sv_friction);
+ self.velocity = self.velocity * (1 - frametime * self.stat_sv_friction);
makevectors(self.v_angle);
//wishvel = v_forward * self.movement_x + v_right * self.movement_y + v_up * self.movement_z;
wishvel = v_forward * self.movement_x + v_right * self.movement_y + '0 0 1' * self.movement_z;
if (wishspeed > self.stat_sv_maxspeed*maxspd_mod)
wishspeed = self.stat_sv_maxspeed*maxspd_mod;
if (time >= self.teleport_time)
- PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0, 0);
+ PM_Accelerate(wishdir, wishspeed, wishspeed, self.stat_sv_accelerate*maxspd_mod, 1, 0, 0, 0);
}
else if (self.waterlevel >= WATERLEVEL_SWIMMING)
{
wishspeed = wishspeed * 0.7;
// water friction
- self.velocity = self.velocity * (1 - frametime * autocvar_sv_friction);
+ self.velocity = self.velocity * (1 - frametime * self.stat_sv_friction);
// water acceleration
- PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0, 0);
+ PM_Accelerate(wishdir, wishspeed, wishspeed, self.stat_sv_accelerate*maxspd_mod, 1, 0, 0, 0);
}
else if (time < self.ladder_time)
{
self.velocity_z += g;
}
- self.velocity = self.velocity * (1 - frametime * autocvar_sv_friction);
+ self.velocity = self.velocity * (1 - frametime * self.stat_sv_friction);
makevectors(self.v_angle);
//wishvel = v_forward * self.movement_x + v_right * self.movement_y + v_up * self.movement_z;
wishvel = v_forward * self.movement_x + v_right * self.movement_y + '0 0 1' * self.movement_z;
if (time >= self.teleport_time)
{
// water acceleration
- PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0, 0);
+ PM_Accelerate(wishdir, wishspeed, wishspeed, self.stat_sv_accelerate*maxspd_mod, 1, 0, 0, 0);
}
}
- else if ((self.items & IT_JETPACK) && self.BUTTON_HOOK && (!autocvar_g_jetpack_fuel || self.ammo_fuel >= 0.01 || self.items & IT_UNLIMITED_WEAPON_AMMO) && !self.frozen)
+ else if (self.items & IT_USING_JETPACK)
{
//makevectors(self.v_angle_y * '0 1 0');
makevectors(self.v_angle);
wishvel = v_forward * self.movement_x + v_right * self.movement_y;
// add remaining speed as Z component
- maxairspd = autocvar_sv_maxairspeed*max(1, maxspd_mod);
+ maxairspd = self.stat_sv_maxairspeed*max(1, maxspd_mod);
// fix speedhacks :P
wishvel = normalize(wishvel) * min(vlen(wishvel) / maxairspd, 1);
// add the unused velocity as up component
else
fz = bound(0, 1 + self.velocity_z / autocvar_g_jetpack_maxspeed_up, 1);
- float fvel;
- fvel = vlen(wishvel);
wishvel_x *= fxy;
wishvel_y *= fxy;
wishvel_z = (wishvel_z - autocvar_sv_gravity) * fz + autocvar_sv_gravity;
+ float fvel;
fvel = min(1, vlen(wishvel) / best);
if(autocvar_g_jetpack_fuel && !(self.items & IT_UNLIMITED_WEAPON_AMMO))
f = min(1, self.ammo_fuel / (autocvar_g_jetpack_fuel * frametime * fvel));
{
// we get here if we ran out of ammo
if((self.items & IT_JETPACK) && self.BUTTON_HOOK && !(buttons_prev & 32) && self.ammo_fuel < 0.01)
- sprint(self, "You don't have any fuel for the ^2Jetpack\n");
+ Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_JETPACK_NOFUEL);
// walking
makevectors(self.v_angle_y * '0 1 0');
self.jumppadcount = 0;
}
- #ifdef LETS_TEST_FTEQCC
- if(self.velocity_x || self.velocity_y)
- {
- // good
- }
- else
- {
- if(self.velocity_x)
- checkclient();
- if(self.velocity_y)
- checkclient();
- }
- #endif
-
v = self.velocity;
v_z = 0;
f = vlen(v);
if(f > 0)
{
- if (f < autocvar_sv_stopspeed)
- f = 1 - frametime * (autocvar_sv_stopspeed / f) * autocvar_sv_friction;
+ if (f < self.stat_sv_stopspeed)
+ f = 1 - frametime * (self.stat_sv_stopspeed / f) * self.stat_sv_friction;
else
- f = 1 - frametime * autocvar_sv_friction;
+ f = 1 - frametime * self.stat_sv_friction;
if (f > 0)
self.velocity = self.velocity * f;
else
if (self.crouch)
wishspeed = wishspeed * 0.5;
if (time >= self.teleport_time)
- PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0, 0);
+ PM_Accelerate(wishdir, wishspeed, wishspeed, self.stat_sv_accelerate*maxspd_mod, 1, 0, 0, 0);
}
else
{
float wishspeed0;
// we get here if we ran out of ammo
if((self.items & IT_JETPACK) && self.BUTTON_HOOK && !(buttons_prev & 32) && self.ammo_fuel < 0.01)
- sprint(self, "You don't have any fuel for the ^2Jetpack\n");
+ Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_JETPACK_NOFUEL);
if(maxspd_mod < 1)
{
- maxairspd = autocvar_sv_maxairspeed*maxspd_mod;
- airaccel = autocvar_sv_airaccelerate*maxspd_mod;
+ maxairspd = self.stat_sv_maxairspeed*maxspd_mod;
+ airaccel = self.stat_sv_airaccelerate*maxspd_mod;
}
else
{
- maxairspd = autocvar_sv_maxairspeed;
- airaccel = autocvar_sv_airaccelerate;
+ maxairspd = self.stat_sv_maxairspeed;
+ airaccel = self.stat_sv_airaccelerate;
}
// airborn
makevectors(self.v_angle_y * '0 1 0');
wishspeed2 = wishspeed;
// CPM
- if(autocvar_sv_airstopaccelerate)
+ if(self.stat_sv_airstopaccelerate)
{
vector curdir;
curdir = self.velocity;
curdir_z = 0;
curdir = normalize(curdir);
- airaccel = airaccel + (autocvar_sv_airstopaccelerate*maxspd_mod - airaccel) * max(0, -(curdir * wishdir));
+ airaccel = airaccel + (self.stat_sv_airstopaccelerate*maxspd_mod - airaccel) * max(0, -(curdir * wishdir));
}
// note that for straight forward jumping:
// step = accel * frametime * wishspeed0;
// log dv/dt = logaccel + logmaxspeed (when slow)
// log dv/dt = logaccel + logmaxspeed + log(1 - accelqw) (when fast)
strafity = IsMoveInDirection(self.movement, -90) + IsMoveInDirection(self.movement, +90); // if one is nonzero, other is always zero
- if(autocvar_sv_maxairstrafespeed)
- wishspeed = min(wishspeed, GeomLerp(autocvar_sv_maxairspeed*maxspd_mod, strafity, autocvar_sv_maxairstrafespeed*maxspd_mod));
- if(autocvar_sv_airstrafeaccelerate)
- airaccel = GeomLerp(airaccel, strafity, autocvar_sv_airstrafeaccelerate*maxspd_mod);
+ if(self.stat_sv_maxairstrafespeed)
+ wishspeed = min(wishspeed, GeomLerp(self.stat_sv_maxairspeed*maxspd_mod, strafity, self.stat_sv_maxairstrafespeed*maxspd_mod));
+ if(self.stat_sv_airstrafeaccelerate)
+ airaccel = GeomLerp(airaccel, strafity, self.stat_sv_airstrafeaccelerate*maxspd_mod);
if(self.stat_sv_airstrafeaccel_qw)
airaccelqw = copysign(1-GeomLerp(1-fabs(self.stat_sv_airaccel_qw), strafity, 1-fabs(self.stat_sv_airstrafeaccel_qw)), ((strafity > 0.5) ? self.stat_sv_airstrafeaccel_qw : self.stat_sv_airaccel_qw));
// !CPM
- if(autocvar_sv_warsowbunny_turnaccel && accelerating && self.movement_y == 0 && self.movement_x != 0)
+ if(self.stat_sv_warsowbunny_turnaccel && accelerating && self.movement_y == 0 && self.movement_x != 0)
PM_AirAccelerate(wishdir, wishspeed);
else
- PM_Accelerate(wishdir, wishspeed, wishspeed0, airaccel, airaccelqw, autocvar_sv_airaccel_qw_stretchfactor, autocvar_sv_airaccel_sideways_friction / maxairspd, self.stat_sv_airspeedlimit_nonqw);
+ PM_Accelerate(wishdir, wishspeed, wishspeed0, airaccel, airaccelqw, self.stat_sv_airaccel_qw_stretchfactor, self.stat_sv_airaccel_sideways_friction / maxairspd, self.stat_sv_airspeedlimit_nonqw);
- if(autocvar_sv_aircontrol)
+ if(self.stat_sv_aircontrol)
CPM_PM_Aircontrol(wishdir, wishspeed2);
}
}
}
}
+ // WEAPONTODO
float xyspeed;
xyspeed = vlen('1 0 0' * self.velocity_x + '0 1 0' * self.velocity_y);
- if(self.weapon == WEP_NEX && autocvar_g_balance_nex_charge && autocvar_g_balance_nex_charge_velocity_rate && xyspeed > autocvar_g_balance_nex_charge_minspeed)
+ if(self.weapon == WEP_VORTEX && WEP_CVAR(vortex, charge) && WEP_CVAR(vortex, charge_velocity_rate) && xyspeed > WEP_CVAR(vortex, charge_minspeed))
{
// add a maximum of charge_velocity_rate when going fast (f = 1), gradually increasing from minspeed (f = 0) to maxspeed
- xyspeed = min(xyspeed, autocvar_g_balance_nex_charge_maxspeed);
- f = (xyspeed - autocvar_g_balance_nex_charge_minspeed) / (autocvar_g_balance_nex_charge_maxspeed - autocvar_g_balance_nex_charge_minspeed);
+ xyspeed = min(xyspeed, WEP_CVAR(vortex, charge_maxspeed));
+ f = (xyspeed - WEP_CVAR(vortex, charge_minspeed)) / (WEP_CVAR(vortex, charge_maxspeed) - WEP_CVAR(vortex, charge_minspeed));
// add the extra charge
- self.nex_charge = min(1, self.nex_charge + autocvar_g_balance_nex_charge_velocity_rate * f * frametime);
+ self.vortex_charge = min(1, self.vortex_charge + WEP_CVAR(vortex, charge_velocity_rate) * f * frametime);
}
:end
if(self.flags & FL_ONGROUND)
{
if(IS_CLIENT(self))
{
- if(!IS_PLAYER(self) && !lockteams)
+ if(!IS_PLAYER(self) && !lockteams && !gameover)
{
if(self.caplayer)
return;
}
}
+void ClientCommand_physics(float request, float argc)
+{
+ switch(request)
+ {
+ case CMD_REQUEST_COMMAND:
+ {
+ string command = strtolower(argv(1));
+
+ if(!autocvar_g_physics_clientselect)
+ {
+ sprint(self, "Client physics selection is currently disabled.\n");
+ return;
+ }
+
+ if(command == "list" || command == "help")
+ {
+ sprint(self, strcat("Available physics sets: \n\n", autocvar_g_physics_clientselect_options, " default\n"));
+ return;
+ }
+
+ if(Physics_Valid(command) || command == "default")
+ {
+ stuffcmd(self, strcat("\nseta cl_physics ", command, "\nsendcvar cl_physics\n"));
+ sprint(self, strcat("^2Physics set successfully changed to ^3", command, "\n"));
+ return;
+ }
+ }
+
+ default:
+ sprint(self, strcat("Current physics set: ^3", self.cvar_cl_physics, "\n"));
+ case CMD_REQUEST_USAGE:
+ {
+ sprint(self, "\nUsage:^3 cmd physics <physics>\n");
+ sprint(self, " See 'cmd physics list' for available physics sets.\n");
+ sprint(self, " Argument 'default' resets to standard physics.\n");
+ return;
+ }
+ }
+}
+
void ClientCommand_ready(float request) // todo: anti-spam for toggling readyness
{
switch(request)
GetTeamCounts(self);
if(!TeamSmallerEqThanTeam(Team_TeamToNumber(selection), Team_TeamToNumber(self.team), self))
{
- sprint(self, "Cannot change to a larger/better/shinier team\n");
+ Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_TEAMCHANGE_LARGERTEAM);
return;
}
}
CLIENT_COMMAND("mobedit", ClientCommand_mobedit(request, arguments), "Edit your monster's properties") \
CLIENT_COMMAND("mobkill", ClientCommand_mobkill(request), "Kills your monster") \
CLIENT_COMMAND("mobspawn", ClientCommand_mobspawn(request, arguments), "Spawn monsters infront of yourself") \
+ CLIENT_COMMAND("physics", ClientCommand_physics(request, arguments), "Change physics set") \
CLIENT_COMMAND("ready", ClientCommand_ready(request), "Qualify as ready to end warmup stage (or restart server if allowed)") \
CLIENT_COMMAND("say", ClientCommand_say(request, arguments, command), "Print a message to chat to all players") \
CLIENT_COMMAND("say_team", ClientCommand_say_team(request, arguments, command), "Print a message to chat to all team mates") \
#define BUTTON_USE buttonuse
#define BUTTON_DRAG button8
#define BUTTON_ZOOMSCRIPT button9
+ #define BUTTON_JETPACK button10
// Globals
.float pain_finished; //Added by Supajoe
.float pain_frame; //"
- .float statdraintime; // record the one-second intervals between draining health and armour when they're over 100
.float crouch; // Crouching or not?
.float strength_finished;
.string item_pickupsound;
// definitions for weaponsystem
-
+ // more WEAPONTODO: move these to their proper files
.entity weaponentity;
.entity exteriorweaponentity;
.vector weaponentity_glowmod;
.float switchingweapon; // weapon currently being switched to (is copied from switchweapon once switch is possible)
.string weaponname; // name of .weapon
+ // WEAPONTODO
.float autoswitch;
- float weapon_action(float wpn, float wrequest);
+ //float WEP_ACTION(float wpn, float wrequest);
float client_hasweapon(entity cl, float wpn, float andammo, float complain);
void w_clear();
void w_ready();
.float weapon_nextthink;
.void() weapon_think;
- //float PLAYER_WEAPONSELECTION_DELAY = );
- const float PLAYER_WEAPONSELECTION_SPEED = 18;
- const vector PLAYER_WEAPONSELECTION_RANGE = '0 20 -40';
// weapon states (self.weaponentity.state)
const float WS_CLEAR = 0; // no weapon selected
.float cvar_cl_handicap;
.float cvar_cl_clippedspectating;
.float cvar_cl_autoscreenshot;
+ .float cvar_cl_jetpack_jump;
.float cvar_cl_movement_track_canjump;
.float cvar_cl_newusekeysupported;
float startitem_failed;
- typedef .float floatfield;
- floatfield Item_CounterField(float it);
-
- float W_AmmoItemCode(float wpn);
- string W_Name(float weaponid);
string W_Apply_Weaponreplace(string in);
void FixIntermissionClient(entity e);
void FixClientCvars(entity e);
+ // WEAPONTODO: remove this
WepSet weaponsInMap;
.float respawn_countdown; // next number to count
_VOICEMSG(death) \
_VOICEMSG(drown) \
_VOICEMSG(fall) \
- _VOICEMSG(fall) \
_VOICEMSG(falling) \
_VOICEMSG(gasp) \
_VOICEMSG(jump) \
.float stat_sv_airspeedlimit_nonqw;
.float stat_sv_maxspeed;
+// new properties
+.float stat_sv_jumpvelocity;
+.float stat_sv_airaccel_qw_stretchfactor;
+.float stat_sv_maxairstrafespeed;
+.float stat_sv_maxairspeed;
+.float stat_sv_airstrafeaccelerate;
+.float stat_sv_warsowbunny_turnaccel;
+.float stat_sv_airaccel_sideways_friction;
+.float stat_sv_aircontrol;
+.float stat_sv_aircontrol_power;
+.float stat_sv_aircontrol_penalty;
+.float stat_sv_warsowbunny_airforwardaccel;
+.float stat_sv_warsowbunny_topspeed;
+.float stat_sv_warsowbunny_accel;
+.float stat_sv_warsowbunny_backtosideratio;
+.float stat_sv_friction;
+.float stat_sv_accelerate;
+.float stat_sv_stopspeed;
+.float stat_sv_airaccelerate;
+.float stat_sv_airstopaccelerate;
+
+.string cvar_cl_physics;
+
void W_Porto_Remove (entity p);
.float projectiledeathtype;
.string message2;
- .float stat_allow_oldnexbeam;
+ .float stat_allow_oldvortexbeam;
// reset to 0 on weapon switch
// may be useful to all weapons
float servertime, serverprevtime, serverframetime;
- .entity soundentity;
-
.float ammo_fuel;
.vector prevorigin;
.float stat_shotorg; // networked stat for trueaim HUD
string matchid;
- .float hitplotfh;
.float last_pickup;
float client_cefc_accumulatortime;
#endif
- ..float current_ammo;
-
.float weapon_load[WEP_MAXCOUNT];
.float ammo_none; // used by the reloading system, must always be 0
.float clip_load;
.entity lastrocket;
.float minelayer_mines;
- .float nex_charge;
- .float nex_charge_rottime;
- .float nex_chargepool_ammo;
+ .float vortex_charge;
+ .float vortex_charge_rottime;
+ .float vortex_chargepool_ammo;
.float hagar_load;
.float grab; // 0 = can't grab, 1 = owner can grab, 2 = owner and team mates can grab, 3 = anyone can grab
.float just_joined;
- .float cvar_cl_accuracy_data_share;
- .float cvar_cl_accuracy_data_receive;
-
.float cvar_cl_weaponimpulsemode;
.float selectweapon; // last selected weapon of the player
.float team_forced; // can be a team number to force a team, or 0 for default action, or -1 for forced spectator
.float player_blocked;
+ .float weapon_blocked; // weapon use disabled
.float frozen; // for freeze attacks
.float revive_progress;
#define MISSILE_IS_CONFUSABLE(m) ((m.missile_flags & MIF_GUIDED_CONFUSABLE) ? TRUE : FALSE)
#define MISSILE_IS_GUIDED(m) ((m.missile_flags & MIF_GUIDED_ALL) ? TRUE : FALSE)
#define MISSILE_IS_TRACKING(m) ((m.missile_flags & MIF_GUIDED_TRACKING) ? TRUE : FALSE)
+
+
+ ////
+
+ .entity player_stats;
+ //.float playerid;
+ .string playernick;
+ .float elos;
+ .float ranks;
}
}
- void fteqcc_testbugs()
- {
- float a, b;
-
- if(!autocvar_developer_fteqccbugs)
- return;
-
- dprint("*** fteqcc test: checking for bugs...\n");
-
- a = 1;
- b = 5;
- if(sqrt(a) - sqrt(b - a) == 0)
- dprint("*** fteqcc test: found same-function-twice bug\n");
- else
- dprint("*** fteqcc test: same-function-twice bug got FINALLY FIXED! HOORAY!\n");
-
- world.cnt = -10;
- world.enemy = world;
- world.enemy.cnt += 10;
- if(world.cnt > 0.2 || world.cnt < -0.2) // don't error out if it's just roundoff errors
- dprint("*** fteqcc test: found += bug\n");
- else
- dprint("*** fteqcc test: += bug got FINALLY FIXED! HOORAY!\n");
- world.cnt = 0;
- }
-
void GotoFirstMap()
{
float n;
remove = remove_safely; // during spawning, watch what you remove!
- check_unacceptable_compiler_bugs();
-
cvar_changes_init(); // do this very early now so it REALLY matches the server config
compressShortVector_init();
Map_MarkAsRecent(mapname);
- PlayerStats_Init(); // we need this to be initiated before InitGameplayMode
+ PlayerStats_GameReport_Init(); // we need this to be initiated before InitGameplayMode
precache_model ("null"); // we need this one before InitGameplayMode
InitGameplayMode();
readlevelcvars();
GrappleHookInit();
- ElectroInit();
- LaserInit();
player_count = 0;
bot_waypoints_for_items = autocvar_g_waypoints_for_items;
if(autocvar_g_campaign)
CampaignPostInit();
- fteqcc_testbugs();
-
Ban_LoadBans();
MapInfo_Enumerate();
addstat(STAT_SWITCHINGWEAPON, AS_INT, switchingweapon);
addstat(STAT_GAMESTARTTIME, AS_FLOAT, stat_game_starttime);
addstat(STAT_ROUNDSTARTTIME, AS_FLOAT, stat_round_starttime);
- addstat(STAT_ALLOW_OLDNEXBEAM, AS_INT, stat_allow_oldnexbeam);
+ addstat(STAT_ALLOW_OLDVORTEXBEAM, AS_INT, stat_allow_oldvortexbeam);
Nagger_Init();
addstat(STAT_STRENGTH_FINISHED, AS_FLOAT, strength_finished);
addstat(STAT_SUPERWEAPONS_FINISHED, AS_FLOAT, superweapons_finished);
addstat(STAT_PRESSED_KEYS, AS_FLOAT, pressedkeys);
addstat(STAT_FUEL, AS_INT, ammo_fuel);
+ addstat(STAT_PLASMA, AS_INT, ammo_plasma);
addstat(STAT_SHOTORG, AS_INT, stat_shotorg);
addstat(STAT_LEADLIMIT, AS_FLOAT, stat_leadlimit);
addstat(STAT_WEAPON_CLIPLOAD, AS_INT, clip_load);
addstat(STAT_TYPEHIT_TIME, AS_FLOAT, typehit_time);
addstat(STAT_LAYED_MINES, AS_INT, minelayer_mines);
- addstat(STAT_NEX_CHARGE, AS_FLOAT, nex_charge);
- addstat(STAT_NEX_CHARGEPOOL, AS_FLOAT, nex_chargepool_ammo);
+ addstat(STAT_VORTEX_CHARGE, AS_FLOAT, vortex_charge);
+ addstat(STAT_VORTEX_CHARGEPOOL, AS_FLOAT, vortex_chargepool_ammo);
addstat(STAT_HAGAR_LOAD, AS_INT, hagar_load);
+
+ addstat(STAT_ARC_HEAT, AS_FLOAT, arc_heat_percent);
// freeze attacks
addstat(STAT_FROZEN, AS_INT, frozen);
addstat(STAT_MOVEVARS_AIRACCEL_QW, AS_FLOAT, stat_sv_airaccel_qw);
addstat(STAT_MOVEVARS_AIRSTRAFEACCEL_QW, AS_FLOAT, stat_sv_airstrafeaccel_qw);
+ // new properties
+ addstat(STAT_MOVEVARS_JUMPVELOCITY, AS_FLOAT, stat_sv_jumpvelocity);
+ addstat(STAT_MOVEVARS_AIRACCEL_QW_STRETCHFACTOR, AS_FLOAT, stat_sv_airaccel_qw_stretchfactor);
+ addstat(STAT_MOVEVARS_MAXAIRSTRAFESPEED, AS_FLOAT, stat_sv_maxairstrafespeed);
+ addstat(STAT_MOVEVARS_MAXAIRSPEED, AS_FLOAT, stat_sv_maxairspeed);
+ addstat(STAT_MOVEVARS_AIRSTRAFEACCELERATE, AS_FLOAT, stat_sv_airstrafeaccelerate);
+ addstat(STAT_MOVEVARS_WARSOWBUNNY_TURNACCEL, AS_FLOAT, stat_sv_warsowbunny_turnaccel);
+ addstat(STAT_MOVEVARS_AIRACCEL_SIDEWAYS_FRICTION, AS_FLOAT, stat_sv_airaccel_sideways_friction);
+ addstat(STAT_MOVEVARS_AIRCONTROL, AS_FLOAT, stat_sv_aircontrol);
+ addstat(STAT_MOVEVARS_AIRCONTROL_POWER, AS_FLOAT, stat_sv_aircontrol_power);
+ addstat(STAT_MOVEVARS_AIRCONTROL_PENALTY, AS_FLOAT, stat_sv_aircontrol_penalty);
+ addstat(STAT_MOVEVARS_WARSOWBUNNY_AIRFORWARDACCEL, AS_FLOAT, stat_sv_warsowbunny_airforwardaccel);
+ addstat(STAT_MOVEVARS_WARSOWBUNNY_TOPSPEED, AS_FLOAT, stat_sv_warsowbunny_topspeed);
+ addstat(STAT_MOVEVARS_WARSOWBUNNY_ACCEL, AS_FLOAT, stat_sv_warsowbunny_accel);
+ addstat(STAT_MOVEVARS_WARSOWBUNNY_BACKTOSIDERATIO, AS_FLOAT, stat_sv_warsowbunny_backtosideratio);
+ addstat(STAT_MOVEVARS_FRICTION, AS_FLOAT, stat_sv_friction);
+ addstat(STAT_MOVEVARS_ACCELERATE, AS_FLOAT, stat_sv_accelerate);
+ addstat(STAT_MOVEVARS_STOPSPEED, AS_FLOAT, stat_sv_stopspeed);
+ addstat(STAT_MOVEVARS_AIRACCELERATE, AS_FLOAT, stat_sv_airaccelerate);
+ addstat(STAT_MOVEVARS_AIRSTOPACCELERATE, AS_FLOAT, stat_sv_airstopaccelerate);
+
// secrets
addstat(STAT_SECRETS_TOTAL, AS_FLOAT, stat_secrets_total);
addstat(STAT_SECRETS_FOUND, AS_FLOAT, stat_secrets_found);
DumpStats(TRUE);
// send statistics
- entity e;
- PlayerStats_EndMatch(1);
- FOR_EACH_CLIENT(e)
- PlayerStats_AddGlobalInfo(e);
- PlayerStats_Shutdown();
+ PlayerStats_GameReport(TRUE);
WeaponStats_Shutdown();
Kill_Notification(NOTIF_ALL, world, MSG_CENTER, 0); // kill all centerprints now
void Shutdown()
{
- entity e;
-
gameover = 2;
if(world_initialized > 0)
print("Saving persistent data...\n");
Ban_SaveBans();
- PlayerStats_EndMatch(0);
- FOR_EACH_CLIENT(e)
- PlayerStats_AddGlobalInfo(e);
- PlayerStats_Shutdown();
+ // playerstats with unfinished match
+ PlayerStats_GameReport(FALSE);
if(!cheatcount_total)
{
wep = self.switchweapon;
if (!wep)
wep = self.cnt;
- replacement = W_Name(wep);
+ replacement = WEP_NAME(wep);
} else if (escape == "W") {
if (self.items & IT_SHELLS) replacement = "shells";
else if (self.items & IT_NAILS) replacement = "bullets";
else if (self.items & IT_ROCKETS) replacement = "rockets";
else if (self.items & IT_CELLS) replacement = "cells";
+ else if (self.items & IT_PLASMA) replacement = "plasma";
else replacement = "batteries"; // ;)
} else if (escape == "x") {
replacement = cursor_ent.netname;
stuffcmd(self, strcat("cl_cmd sendcvar ", name, "\n"));
}
}
- float w_getbestweapon(entity e);
string W_FixWeaponOrder_ForceComplete_AndBuildImpulseList(string wo)
{
string o;
GetCvars_handleFloat(s, f, autoswitch, "cl_autoswitch");
GetCvars_handleFloat(s, f, cvar_cl_autoscreenshot, "cl_autoscreenshot");
+ GetCvars_handleFloat(s, f, cvar_cl_jetpack_jump, "cl_jetpack_jump");
GetCvars_handleString(s, f, cvar_g_xonoticversion, "g_xonoticversion");
+ GetCvars_handleString(s, f, cvar_cl_physics, "cl_physics");
GetCvars_handleFloat(s, f, cvar_cl_handicap, "cl_handicap");
GetCvars_handleFloat(s, f, cvar_cl_clippedspectating, "cl_clippedspectating");
GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriority, "cl_weaponpriority", W_FixWeaponOrder_ForceComplete_AndBuildImpulseList);
if (s == "cl_weaponpriority")
self.switchweapon = w_getbestweapon(self);
if (s == "cl_allow_uidtracking")
- PlayerStats_AddPlayer(self);
+ PlayerStats_GameReport_AddPlayer(self);
}
}
float g_pickup_rockets_max;
float g_pickup_cells;
float g_pickup_cells_max;
+ float g_pickup_plasma;
+ float g_pickup_plasma_max;
float g_pickup_fuel;
float g_pickup_fuel_jetpack;
float g_pickup_fuel_max;
float g_weaponarena;
WepSet g_weaponarena_weapons;
float g_weaponarena_random;
- float g_weaponarena_random_with_laser;
+ float g_weaponarena_random_with_blaster;
string g_weaponarena_list;
float g_weaponspeedfactor;
float g_weaponratefactor;
float start_ammo_nails;
float start_ammo_rockets;
float start_ammo_cells;
+ float start_ammo_plasma;
float start_ammo_fuel;
float start_health;
float start_armorvalue;
float warmup_start_ammo_nails;
float warmup_start_ammo_rockets;
float warmup_start_ammo_cells;
+ float warmup_start_ammo_plasma;
float warmup_start_ammo_fuel;
float warmup_start_health;
float warmup_start_armorvalue;
float g_weapon_stay;
- entity get_weaponinfo(float w);
-
- float want_weapon(string cvarprefix, entity weaponinfo, float allguns)
+ float want_weapon(entity weaponinfo, float allguns) // WEAPONTODO: what still needs done?
{
var float i = weaponinfo.weapon;
var float d = 0;
else if (g_nexball)
d = 0; // weapon is set a few lines later
else
- d = (i == WEP_LASER || i == WEP_SHOTGUN);
+ d = !(!weaponinfo.weaponstart);
if(g_grappling_hook) // if possible, redirect off-hand hook to on-hand hook
d |= (i == WEP_HOOK);
- if(weaponinfo.spawnflags & WEP_FLAG_MUTATORBLOCKED) // never default mutator blocked guns
+ if(!g_cts && (weaponinfo.spawnflags & WEP_FLAG_MUTATORBLOCKED)) // never default mutator blocked guns
d = 0;
- var float t = cvar(strcat(cvarprefix, weaponinfo.netname));
+ var float t = weaponinfo.weaponstartoverride;
//print(strcat("want_weapon: ", weaponinfo.netname, " - d: ", ftos(d), ", t: ", ftos(t), ". \n"));
start_ammo_nails = 0;
start_ammo_rockets = 0;
start_ammo_cells = 0;
+ start_ammo_plasma = 0;
start_health = cvar("g_balance_health_start");
start_armorvalue = cvar("g_balance_armor_start");
g_weaponarena_random = cvar("g_weaponarena_random");
else
g_weaponarena_random = 0;
- g_weaponarena_random_with_laser = cvar("g_weaponarena_random_with_laser");
+ g_weaponarena_random_with_blaster = cvar("g_weaponarena_random_with_blaster");
if (g_weaponarena)
{
for (i = WEP_FIRST; i <= WEP_LAST; ++i)
{
e = get_weaponinfo(i);
- float w = want_weapon("g_start_weapon_", e, FALSE);
+ float w = want_weapon(e, FALSE);
if(w & 1)
start_weapons |= WepSet_FromWeapon(i);
if(w & 2)
if(start_items & IT_UNLIMITED_WEAPON_AMMO)
{
- start_ammo_rockets = 999;
start_ammo_shells = 999;
- start_ammo_cells = 999;
start_ammo_nails = 999;
+ start_ammo_rockets = 999;
+ start_ammo_cells = 999;
+ start_ammo_plasma = 999;
start_ammo_fuel = 999;
}
else
start_ammo_nails = cvar("g_start_ammo_nails");
start_ammo_rockets = cvar("g_start_ammo_rockets");
start_ammo_cells = cvar("g_start_ammo_cells");
+ start_ammo_plasma = cvar("g_start_ammo_plasma");
start_ammo_fuel = cvar("g_start_ammo_fuel");
}
warmup_start_ammo_nails = start_ammo_nails;
warmup_start_ammo_rockets = start_ammo_rockets;
warmup_start_ammo_cells = start_ammo_cells;
+ warmup_start_ammo_plasma = start_ammo_plasma;
warmup_start_ammo_fuel = start_ammo_fuel;
warmup_start_health = start_health;
warmup_start_armorvalue = start_armorvalue;
if (!g_weaponarena && !g_ca)
{
warmup_start_ammo_shells = cvar("g_warmup_start_ammo_shells");
- warmup_start_ammo_cells = cvar("g_warmup_start_ammo_cells");
warmup_start_ammo_nails = cvar("g_warmup_start_ammo_nails");
warmup_start_ammo_rockets = cvar("g_warmup_start_ammo_rockets");
+ warmup_start_ammo_cells = cvar("g_warmup_start_ammo_cells");
+ warmup_start_ammo_plasma = cvar("g_warmup_start_ammo_plasma");
warmup_start_ammo_fuel = cvar("g_warmup_start_ammo_fuel");
warmup_start_health = cvar("g_warmup_start_health");
warmup_start_armorvalue = cvar("g_warmup_start_armor");
for (i = WEP_FIRST; i <= WEP_LAST; ++i)
{
e = get_weaponinfo(i);
- float w = want_weapon("g_start_weapon_", e, g_warmup_allguns);
+ float w = want_weapon(e, g_warmup_allguns);
if(w & 1)
warmup_start_weapons |= WepSet_FromWeapon(i);
if(w & 2)
if ((start_items & IT_JETPACK) || (g_grappling_hook && (start_weapons & WEPSET_HOOK)))
{
- g_grappling_hook = 0; // these two can't coexist, as they use the same button
start_items |= IT_FUEL_REGEN;
start_ammo_fuel = max(start_ammo_fuel, cvar("g_balance_fuel_rotstable"));
warmup_start_ammo_fuel = max(warmup_start_ammo_fuel, cvar("g_balance_fuel_rotstable"));
{
e = get_weaponinfo(i);
if(precache_weapons & WepSet_FromWeapon(i))
- weapon_action(i, WR_PRECACHE);
+ WEP_ACTION(i, WR_INIT);
}
start_ammo_shells = max(0, start_ammo_shells);
start_ammo_nails = max(0, start_ammo_nails);
- start_ammo_cells = max(0, start_ammo_cells);
start_ammo_rockets = max(0, start_ammo_rockets);
+ start_ammo_cells = max(0, start_ammo_cells);
+ start_ammo_plasma = max(0, start_ammo_plasma);
start_ammo_fuel = max(0, start_ammo_fuel);
warmup_start_ammo_shells = max(0, warmup_start_ammo_shells);
warmup_start_ammo_nails = max(0, warmup_start_ammo_nails);
- warmup_start_ammo_cells = max(0, warmup_start_ammo_cells);
warmup_start_ammo_rockets = max(0, warmup_start_ammo_rockets);
+ warmup_start_ammo_cells = max(0, warmup_start_ammo_cells);
+ warmup_start_ammo_plasma = max(0, warmup_start_ammo_plasma);
warmup_start_ammo_fuel = max(0, warmup_start_ammo_fuel);
}
g_pickup_rockets_max = cvar("g_pickup_rockets_max");
g_pickup_cells = cvar("g_pickup_cells");
g_pickup_cells_max = cvar("g_pickup_cells_max");
+ g_pickup_plasma = cvar("g_pickup_plasma");
+ g_pickup_plasma_max = cvar("g_pickup_plasma_max");
g_pickup_fuel = cvar("g_pickup_fuel");
g_pickup_fuel_jetpack = cvar("g_pickup_fuel_jetpack");
g_pickup_fuel_max = cvar("g_pickup_fuel_max");
precache_sound ("weapons/hook_impact.wav"); // hook
}
- if(autocvar_sv_precacheweapons)
- {
- //precache weapon models/sounds
- float wep;
- wep = WEP_FIRST;
- while (wep <= WEP_LAST)
- {
- weapon_action(wep, WR_PRECACHE);
- wep = wep + 1;
- }
- }
-
precache_model("models/elaser.mdl");
precache_model("models/laser.mdl");
precache_model("models/ebomb.mdl");
return TRUE;
if(SUB_NoImpactCheck())
{
- if(self.classname == "grapplinghook")
+ if(self.classname == "nade")
+ return FALSE; // no checks here
+ else if(self.classname == "grapplinghook")
RemoveGrapplingHook(self.realowner);
else if(self.classname == "spike")
{