Merge branch 'master' into Mario/weapons
authorMario <mario.mario@y7mail.com>
Sun, 15 Jun 2014 05:04:40 +0000 (15:04 +1000)
committerMario <mario.mario@y7mail.com>
Sun, 15 Jun 2014 05:04:40 +0000 (15:04 +1000)
34 files changed:
1  2 
bal-wep-xonotic.cfg
balance-xonotic.cfg
defaultXonotic.cfg
oldbalance25.cfg
oldbalanceFruitieX.cfg
oldbalanceXDF.cfg
oldbalanceXPM.cfg
qcsrc/client/Main.qc
qcsrc/client/View.qc
qcsrc/client/autocvars.qh
qcsrc/client/hook.qc
qcsrc/client/scoreboard.qc
qcsrc/client/waypointsprites.qc
qcsrc/common/monsters/monster/mage.qc
qcsrc/common/monsters/monster/shambler.qc
qcsrc/common/monsters/monster/spider.qc
qcsrc/common/monsters/monster/wyvern.qc
qcsrc/common/monsters/sv_monsters.qc
qcsrc/common/notifications.qh
qcsrc/menu/xonotic/util.qc
qcsrc/server/autocvars.qh
qcsrc/server/bot/havocbot/havocbot.qc
qcsrc/server/bot/havocbot/roles.qc
qcsrc/server/cl_client.qc
qcsrc/server/cl_physics.qc
qcsrc/server/cl_player.qc
qcsrc/server/g_damage.qc
qcsrc/server/g_hook.qc
qcsrc/server/g_world.qc
qcsrc/server/mutators/base.qh
qcsrc/server/mutators/gamemode_nexball.qc
qcsrc/server/t_teleporters.qc
qcsrc/server/weapons/hitplot.qc
qcsrc/server/weapons/tracing.qc

index 562119b,0000000..db8d41d
mode 100644,000000..100644
--- /dev/null
@@@ -1,751 -1,0 +1,751 @@@
- set g_balance_hook_primary_refire 0
 +// {{{ #1: Blaster
 +set g_balance_blaster_primary_animtime 0.2
 +set g_balance_blaster_primary_damage 25
 +set g_balance_blaster_primary_delay 0
 +set g_balance_blaster_primary_edgedamage 12.5
 +set g_balance_blaster_primary_force 300
 +set g_balance_blaster_primary_lifetime 5
 +set g_balance_blaster_primary_radius 70
 +set g_balance_blaster_primary_refire 0.7
 +set g_balance_blaster_primary_shotangle 0
 +set g_balance_blaster_primary_speed 6000
 +set g_balance_blaster_primary_spread 0
 +set g_balance_blaster_secondary 0
 +set g_balance_blaster_secondary_animtime 0.2
 +set g_balance_blaster_secondary_damage 25
 +set g_balance_blaster_secondary_delay 0
 +set g_balance_blaster_secondary_edgedamage 12.5
 +set g_balance_blaster_secondary_force 300
 +set g_balance_blaster_secondary_lifetime 5
 +set g_balance_blaster_secondary_radius 70
 +set g_balance_blaster_secondary_refire 0.7
 +set g_balance_blaster_secondary_shotangle 0
 +set g_balance_blaster_secondary_speed 6000
 +set g_balance_blaster_secondary_spread 0
 +set g_balance_blaster_switchdelay_drop 0.15
 +set g_balance_blaster_switchdelay_raise 0.15
 +set g_balance_blaster_weaponreplace ""
 +set g_balance_blaster_weaponstart 1
 +set g_balance_blaster_weaponstartoverride -1
 +set g_balance_blaster_weaponthrowable 0
 +// }}}
 +// {{{ #2: Shockwave
 +set g_balance_shockwave_blast_animtime 0.3
 +set g_balance_shockwave_blast_damage 20
 +set g_balance_shockwave_blast_distance 1000
 +set g_balance_shockwave_blast_edgedamage 0
 +set g_balance_shockwave_blast_force 200
 +set g_balance_shockwave_blast_force_forwardbias 50
 +set g_balance_shockwave_blast_force_zscale 2
 +set g_balance_shockwave_blast_jump_damage 20
 +set g_balance_shockwave_blast_jump_edgedamage 0
 +set g_balance_shockwave_blast_jump_force 300
 +set g_balance_shockwave_blast_jump_force_velocitybias 0
 +set g_balance_shockwave_blast_jump_force_zscale 1.25
 +set g_balance_shockwave_blast_jump_multiplier_accuracy 0.5
 +set g_balance_shockwave_blast_jump_multiplier_distance 0.5
 +set g_balance_shockwave_blast_jump_multiplier_min 0
 +set g_balance_shockwave_blast_jump_radius 150
 +set g_balance_shockwave_blast_multiplier_accuracy 0.5
 +set g_balance_shockwave_blast_multiplier_distance 0.5
 +set g_balance_shockwave_blast_multiplier_min 0
 +set g_balance_shockwave_blast_refire 0.75
 +set g_balance_shockwave_blast_splash_damage 15
 +set g_balance_shockwave_blast_splash_edgedamage 0
 +set g_balance_shockwave_blast_splash_force 100
 +set g_balance_shockwave_blast_splash_force_forwardbias 50
 +set g_balance_shockwave_blast_splash_multiplier_accuracy 0.5
 +set g_balance_shockwave_blast_splash_multiplier_distance 0.5
 +set g_balance_shockwave_blast_splash_multiplier_min 0
 +set g_balance_shockwave_blast_splash_radius 70
 +set g_balance_shockwave_blast_spread_max 120
 +set g_balance_shockwave_blast_spread_min 25
 +set g_balance_shockwave_melee_animtime 1.3
 +set g_balance_shockwave_melee_damage 80
 +set g_balance_shockwave_melee_delay 0.25
 +set g_balance_shockwave_melee_force 200
 +set g_balance_shockwave_melee_multihit 1
 +set g_balance_shockwave_melee_no_doubleslap 1
 +set g_balance_shockwave_melee_nonplayerdamage 40
 +set g_balance_shockwave_melee_range 120
 +set g_balance_shockwave_melee_refire 1.25
 +set g_balance_shockwave_melee_swing_side 120
 +set g_balance_shockwave_melee_swing_up 30
 +set g_balance_shockwave_melee_time 0.15
 +set g_balance_shockwave_melee_traces 10
 +set g_balance_shockwave_switchdelay_drop 0.2
 +set g_balance_shockwave_switchdelay_raise 0.2
 +set g_balance_shockwave_weaponreplace ""
 +set g_balance_shockwave_weaponstart 1
 +set g_balance_shockwave_weaponstartoverride -1
 +set g_balance_shockwave_weaponthrowable 0
 +// }}}
 +// {{{ #3: Machine Gun
 +set g_balance_machinegun_burst 3
 +set g_balance_machinegun_burst_ammo 3
 +set g_balance_machinegun_burst_animtime 0.3
 +set g_balance_machinegun_burst_refire 0.06
 +set g_balance_machinegun_burst_refire2 0.45
 +set g_balance_machinegun_burst_speed 0
 +set g_balance_machinegun_first 1
 +set g_balance_machinegun_first_ammo 1
 +set g_balance_machinegun_first_damage 14
 +set g_balance_machinegun_first_force 5
 +set g_balance_machinegun_first_refire 0.125
 +set g_balance_machinegun_first_spread 0.03
 +set g_balance_machinegun_mode 1
 +set g_balance_machinegun_reload_ammo 60
 +set g_balance_machinegun_reload_time 2
 +set g_balance_machinegun_solidpenetration 13.1
 +set g_balance_machinegun_spread_add 0.012
 +set g_balance_machinegun_spread_max 0.05
 +set g_balance_machinegun_spread_min 0.02
 +set g_balance_machinegun_sustained_ammo 1
 +set g_balance_machinegun_sustained_damage 10
 +set g_balance_machinegun_sustained_force 5
 +set g_balance_machinegun_sustained_refire 0.1
 +set g_balance_machinegun_sustained_spread 0.03
 +set g_balance_machinegun_switchdelay_drop 0.2
 +set g_balance_machinegun_switchdelay_raise 0.2
 +set g_balance_machinegun_weaponreplace "arc"
 +set g_balance_machinegun_weaponstart 0
 +set g_balance_machinegun_weaponstartoverride -1
 +set g_balance_machinegun_weaponthrowable 1
 +// }}}
 +// {{{ #4: Mortar
 +set g_balance_mortar_bouncefactor 0.5
 +set g_balance_mortar_bouncestop 0.075
 +set g_balance_mortar_primary_ammo 2
 +set g_balance_mortar_primary_animtime 0.3
 +set g_balance_mortar_primary_damage 50
 +set g_balance_mortar_primary_damageforcescale 0
 +set g_balance_mortar_primary_edgedamage 25
 +set g_balance_mortar_primary_force 250
 +set g_balance_mortar_primary_health 15
 +set g_balance_mortar_primary_lifetime 5
 +set g_balance_mortar_primary_lifetime_stick 0
 +set g_balance_mortar_primary_radius 120
 +set g_balance_mortar_primary_refire 0.8
 +set g_balance_mortar_primary_remote_minbouncecnt 0
 +set g_balance_mortar_primary_speed 1900
 +set g_balance_mortar_primary_speed_up 225
 +set g_balance_mortar_primary_speed_z 0
 +set g_balance_mortar_primary_spread 0
 +set g_balance_mortar_primary_type 0
 +set g_balance_mortar_reload_ammo 0
 +set g_balance_mortar_reload_time 2
 +set g_balance_mortar_secondary_ammo 2
 +set g_balance_mortar_secondary_animtime 0.3
 +set g_balance_mortar_secondary_damage 60
 +set g_balance_mortar_secondary_damageforcescale 4
 +set g_balance_mortar_secondary_edgedamage 30
 +set g_balance_mortar_secondary_force 250
 +set g_balance_mortar_secondary_health 30
 +set g_balance_mortar_secondary_lifetime 5
 +set g_balance_mortar_secondary_lifetime_bounce 0.5
 +set g_balance_mortar_secondary_lifetime_stick 0
 +set g_balance_mortar_secondary_radius 120
 +set g_balance_mortar_secondary_refire 0.7
 +set g_balance_mortar_secondary_remote_detonateprimary 0
 +set g_balance_mortar_secondary_speed 1400
 +set g_balance_mortar_secondary_speed_up 150
 +set g_balance_mortar_secondary_speed_z 0
 +set g_balance_mortar_secondary_spread 0
 +set g_balance_mortar_secondary_type 1
 +set g_balance_mortar_switchdelay_drop 0.2
 +set g_balance_mortar_switchdelay_raise 0.2
 +set g_balance_mortar_weaponreplace ""
 +set g_balance_mortar_weaponstart 0
 +set g_balance_mortar_weaponstartoverride -1
 +set g_balance_mortar_weaponthrowable 1
 +// }}}
 +// {{{ #5: Mine Layer (MUTATOR WEAPON)
 +set g_balance_minelayer_ammo 4
 +set g_balance_minelayer_animtime 0.4
 +set g_balance_minelayer_damage 40
 +set g_balance_minelayer_damageforcescale 0
 +set g_balance_minelayer_detonatedelay -1
 +set g_balance_minelayer_edgedamage 20
 +set g_balance_minelayer_force 250
 +set g_balance_minelayer_health 15
 +set g_balance_minelayer_lifetime 10
 +set g_balance_minelayer_lifetime_countdown 0.5
 +set g_balance_minelayer_limit 3
 +set g_balance_minelayer_protection 0
 +set g_balance_minelayer_proximityradius 150
 +set g_balance_minelayer_radius 175
 +set g_balance_minelayer_refire 1.5
 +set g_balance_minelayer_reload_ammo 0
 +set g_balance_minelayer_reload_time 2
 +set g_balance_minelayer_remote_damage 45
 +set g_balance_minelayer_remote_edgedamage 40
 +set g_balance_minelayer_remote_force 300
 +set g_balance_minelayer_remote_radius 200
 +set g_balance_minelayer_speed 1000
 +set g_balance_minelayer_switchdelay_drop 0.2
 +set g_balance_minelayer_switchdelay_raise 0.2
 +set g_balance_minelayer_time 0.5
 +set g_balance_minelayer_weaponreplace ""
 +set g_balance_minelayer_weaponstart 0
 +set g_balance_minelayer_weaponstartoverride -1
 +set g_balance_minelayer_weaponthrowable 1
 +// }}}
 +// {{{ #6: Electro
 +set g_balance_electro_combo_comboradius 300
 +set g_balance_electro_combo_comboradius_thruwall 200
 +set g_balance_electro_combo_damage 50
 +set g_balance_electro_combo_edgedamage 25
 +set g_balance_electro_combo_force 120
 +set g_balance_electro_combo_radius 150
 +set g_balance_electro_combo_safeammocheck 1
 +set g_balance_electro_combo_speed 2000
 +set g_balance_electro_primary_ammo 4
 +set g_balance_electro_primary_animtime 0.3
 +set g_balance_electro_primary_comboradius 300
 +set g_balance_electro_primary_damage 40
 +set g_balance_electro_primary_edgedamage 20
 +set g_balance_electro_primary_force 200
 +set g_balance_electro_primary_lifetime 5
 +set g_balance_electro_primary_midaircombo_explode 1
 +set g_balance_electro_primary_midaircombo_interval 0.1
 +set g_balance_electro_primary_midaircombo_radius 100
 +set g_balance_electro_primary_radius 100
 +set g_balance_electro_primary_refire 0.6
 +set g_balance_electro_primary_speed 2500
 +set g_balance_electro_primary_spread 0
 +set g_balance_electro_reload_ammo 0
 +set g_balance_electro_reload_time 2
 +set g_balance_electro_secondary_ammo 2
 +set g_balance_electro_secondary_animtime 0.2
 +set g_balance_electro_secondary_bouncefactor 0.3
 +set g_balance_electro_secondary_bouncestop 0.05
 +set g_balance_electro_secondary_count 3
 +set g_balance_electro_secondary_damage 40
 +set g_balance_electro_secondary_damagedbycontents 1
 +set g_balance_electro_secondary_damageforcescale 4
 +set g_balance_electro_secondary_edgedamage 20
 +set g_balance_electro_secondary_force 50
 +set g_balance_electro_secondary_health 5
 +set g_balance_electro_secondary_lifetime 4
 +set g_balance_electro_secondary_radius 150
 +set g_balance_electro_secondary_refire 0.2
 +set g_balance_electro_secondary_refire2 1.6
 +set g_balance_electro_secondary_speed 1000
 +set g_balance_electro_secondary_speed_up 200
 +set g_balance_electro_secondary_speed_z 0
 +set g_balance_electro_secondary_spread 0.04
 +set g_balance_electro_secondary_touchexplode 0
 +set g_balance_electro_switchdelay_drop 0.2
 +set g_balance_electro_switchdelay_raise 0.2
 +set g_balance_electro_weaponreplace ""
 +set g_balance_electro_weaponstart 0
 +set g_balance_electro_weaponstartoverride -1
 +set g_balance_electro_weaponthrowable 1
 +// }}}
 +// {{{ #7: Arc
 +set g_balance_arc_beam_ammo 0
 +set g_balance_arc_beam_animtime 0.2
 +set g_balance_arc_beam_botaimlifetime 0
 +set g_balance_arc_beam_botaimspeed 0
 +set g_balance_arc_beam_damage 150
 +set g_balance_arc_beam_degreespersegment 1
 +set g_balance_arc_beam_distancepersegment 0
 +set g_balance_arc_beam_falloff_halflifedist 0
 +set g_balance_arc_beam_falloff_maxdist 0
 +set g_balance_arc_beam_falloff_mindist 0
 +set g_balance_arc_beam_force 2000
 +set g_balance_arc_beam_healing_amax 200
 +set g_balance_arc_beam_healing_aps 50
 +set g_balance_arc_beam_healing_hmax 200
 +set g_balance_arc_beam_healing_hps 50
 +set g_balance_arc_beam_maxangle 10
 +set g_balance_arc_beam_nonplayerdamage 80
 +set g_balance_arc_beam_range 1000
 +set g_balance_arc_beam_refire 0.5
 +set g_balance_arc_beam_returnspeed 8
 +set g_balance_arc_beam_tightness 0.5
 +set g_balance_arc_burst_ammo 0
 +set g_balance_arc_burst_damage 500
 +set g_balance_arc_burst_healing_aps 100
 +set g_balance_arc_burst_healing_hps 100
 +set g_balance_arc_switchdelay_drop 0.3
 +set g_balance_arc_switchdelay_raise 0.3
 +set g_balance_arc_weaponreplace ""
 +set g_balance_arc_weaponstart 0
 +set g_balance_arc_weaponstartoverride -1
 +set g_balance_arc_weaponthrowable 1
 +// }}}
 +// {{{ #8: Crylink
 +set g_balance_crylink_primary_ammo 3
 +set g_balance_crylink_primary_animtime 0.3
 +set g_balance_crylink_primary_bouncedamagefactor 0.5
 +set g_balance_crylink_primary_bounces 1
 +set g_balance_crylink_primary_damage 12
 +set g_balance_crylink_primary_edgedamage 6
 +set g_balance_crylink_primary_force -50
 +set g_balance_crylink_primary_joindelay 0.1
 +set g_balance_crylink_primary_joinexplode 1
 +set g_balance_crylink_primary_joinexplode_damage 0
 +set g_balance_crylink_primary_joinexplode_edgedamage 0
 +set g_balance_crylink_primary_joinexplode_force 0
 +set g_balance_crylink_primary_joinexplode_radius 0
 +set g_balance_crylink_primary_joinspread 0.2
 +set g_balance_crylink_primary_linkexplode 1
 +set g_balance_crylink_primary_middle_fadetime 5
 +set g_balance_crylink_primary_middle_lifetime 5
 +set g_balance_crylink_primary_other_fadetime 5
 +set g_balance_crylink_primary_other_lifetime 5
 +set g_balance_crylink_primary_radius 80
 +set g_balance_crylink_primary_refire 0.7
 +set g_balance_crylink_primary_shots 6
 +set g_balance_crylink_primary_speed 2000
 +set g_balance_crylink_primary_spread 0.08
 +set g_balance_crylink_reload_ammo 0
 +set g_balance_crylink_reload_time 2
 +set g_balance_crylink_secondary 1
 +set g_balance_crylink_secondary_ammo 2
 +set g_balance_crylink_secondary_animtime 0.2
 +set g_balance_crylink_secondary_bouncedamagefactor 0.5
 +set g_balance_crylink_secondary_bounces 0
 +set g_balance_crylink_secondary_damage 10
 +set g_balance_crylink_secondary_edgedamage 5
 +set g_balance_crylink_secondary_force -250
 +set g_balance_crylink_secondary_joindelay 0
 +set g_balance_crylink_secondary_joinexplode 0
 +set g_balance_crylink_secondary_joinexplode_damage 0
 +set g_balance_crylink_secondary_joinexplode_edgedamage 0
 +set g_balance_crylink_secondary_joinexplode_force 0
 +set g_balance_crylink_secondary_joinexplode_radius 0
 +set g_balance_crylink_secondary_joinspread 0
 +set g_balance_crylink_secondary_linkexplode 1
 +set g_balance_crylink_secondary_middle_fadetime 5
 +set g_balance_crylink_secondary_middle_lifetime 5
 +set g_balance_crylink_secondary_other_fadetime 5
 +set g_balance_crylink_secondary_other_lifetime 5
 +set g_balance_crylink_secondary_radius 100
 +set g_balance_crylink_secondary_refire 0.7
 +set g_balance_crylink_secondary_shots 5
 +set g_balance_crylink_secondary_speed 3000
 +set g_balance_crylink_secondary_spread 0.01
 +set g_balance_crylink_secondary_spreadtype 1
 +set g_balance_crylink_switchdelay_drop 0.2
 +set g_balance_crylink_switchdelay_raise 0.2
 +set g_balance_crylink_weaponreplace ""
 +set g_balance_crylink_weaponstart 0
 +set g_balance_crylink_weaponstartoverride -1
 +set g_balance_crylink_weaponthrowable 1
 +// }}}
 +// {{{ #9: Vortex
 +set g_balance_vortex_charge 1
 +set g_balance_vortex_charge_animlimit 0.5
 +set g_balance_vortex_charge_limit 1
 +set g_balance_vortex_charge_maxspeed 800
 +set g_balance_vortex_charge_mindmg 40
 +set g_balance_vortex_charge_minspeed 400
 +set g_balance_vortex_charge_rate 0.4
 +set g_balance_vortex_charge_rot_pause 0
 +set g_balance_vortex_charge_rot_rate 0
 +set g_balance_vortex_charge_shot_multiplier 0
 +set g_balance_vortex_charge_start 0.5
 +set g_balance_vortex_charge_velocity_rate 0
 +set g_balance_vortex_primary_ammo 6
 +set g_balance_vortex_primary_animtime 0.6
 +set g_balance_vortex_primary_damage 80
 +set g_balance_vortex_primary_damagefalloff_forcehalflife 0
 +set g_balance_vortex_primary_damagefalloff_halflife 0
 +set g_balance_vortex_primary_damagefalloff_maxdist 0
 +set g_balance_vortex_primary_damagefalloff_mindist 0
 +set g_balance_vortex_primary_force 400
 +set g_balance_vortex_primary_refire 1.5
 +set g_balance_vortex_reload_ammo 0
 +set g_balance_vortex_reload_time 2
 +set g_balance_vortex_secondary 0
 +set g_balance_vortex_secondary_ammo 2
 +set g_balance_vortex_secondary_animtime 0
 +set g_balance_vortex_secondary_chargepool 0
 +set g_balance_vortex_secondary_chargepool_pause_regen 1
 +set g_balance_vortex_secondary_chargepool_regen 0.15
 +set g_balance_vortex_secondary_damage 0
 +set g_balance_vortex_secondary_damagefalloff_forcehalflife 0
 +set g_balance_vortex_secondary_damagefalloff_halflife 0
 +set g_balance_vortex_secondary_damagefalloff_maxdist 0
 +set g_balance_vortex_secondary_damagefalloff_mindist 0
 +set g_balance_vortex_secondary_force 0
 +set g_balance_vortex_secondary_refire 0
 +set g_balance_vortex_switchdelay_drop 0.3
 +set g_balance_vortex_switchdelay_raise 0.25
 +set g_balance_vortex_weaponreplace ""
 +set g_balance_vortex_weaponstart 0
 +set g_balance_vortex_weaponstartoverride -1
 +set g_balance_vortex_weaponthrowable 1
 +// }}}
 +// {{{ #10: Hagar
 +set g_balance_hagar_primary_ammo 1
 +set g_balance_hagar_primary_damage 25
 +set g_balance_hagar_primary_damageforcescale 0
 +set g_balance_hagar_primary_edgedamage 12.5
 +set g_balance_hagar_primary_force 100
 +set g_balance_hagar_primary_health 15
 +set g_balance_hagar_primary_lifetime 5
 +set g_balance_hagar_primary_radius 65
 +set g_balance_hagar_primary_refire 0.16667
 +set g_balance_hagar_primary_speed 2500
 +set g_balance_hagar_primary_spread 0.03
 +set g_balance_hagar_reload_ammo 0
 +set g_balance_hagar_reload_time 2
 +set g_balance_hagar_secondary 1
 +set g_balance_hagar_secondary_ammo 1
 +set g_balance_hagar_secondary_damage 40
 +set g_balance_hagar_secondary_damageforcescale 0
 +set g_balance_hagar_secondary_edgedamage 20
 +set g_balance_hagar_secondary_force 75
 +set g_balance_hagar_secondary_health 15
 +set g_balance_hagar_secondary_lifetime_min 10
 +set g_balance_hagar_secondary_lifetime_rand 0
 +set g_balance_hagar_secondary_load 1
 +set g_balance_hagar_secondary_load_abort 0
 +set g_balance_hagar_secondary_load_animtime 0.2
 +set g_balance_hagar_secondary_load_hold 4
 +set g_balance_hagar_secondary_load_linkexplode 0
 +set g_balance_hagar_secondary_load_max 4
 +set g_balance_hagar_secondary_load_releasedeath 0
 +set g_balance_hagar_secondary_load_speed 0.5
 +set g_balance_hagar_secondary_load_spread 0.075
 +set g_balance_hagar_secondary_load_spread_bias 0.5
 +set g_balance_hagar_secondary_radius 80
 +set g_balance_hagar_secondary_refire 0.5
 +set g_balance_hagar_secondary_speed 2500
 +set g_balance_hagar_secondary_spread 0.05
 +set g_balance_hagar_switchdelay_drop 0.2
 +set g_balance_hagar_switchdelay_raise 0.2
 +set g_balance_hagar_weaponreplace ""
 +set g_balance_hagar_weaponstart 0
 +set g_balance_hagar_weaponstartoverride -1
 +set g_balance_hagar_weaponthrowable 1
 +// }}}
 +// {{{ #11: Devastator
 +set g_balance_devastator_ammo 4
 +set g_balance_devastator_animtime 0.4
 +set g_balance_devastator_damage 70
 +set g_balance_devastator_damageforcescale 1
 +set g_balance_devastator_detonatedelay 0.02
 +set g_balance_devastator_edgedamage 35
 +set g_balance_devastator_force 450
 +set g_balance_devastator_guidedelay 0.2
 +set g_balance_devastator_guidegoal 512
 +set g_balance_devastator_guiderate 70
 +set g_balance_devastator_guideratedelay 0.01
 +set g_balance_devastator_guidestop 0
 +set g_balance_devastator_health 30
 +set g_balance_devastator_lifetime 10
 +set g_balance_devastator_radius 110
 +set g_balance_devastator_refire 1.2
 +set g_balance_devastator_reload_ammo 0
 +set g_balance_devastator_reload_time 2
 +set g_balance_devastator_remote_damage 70
 +set g_balance_devastator_remote_edgedamage 35
 +set g_balance_devastator_remote_force 400
 +set g_balance_devastator_remote_jump_damage 40
 +set g_balance_devastator_remote_jump_radius 200
 +set g_balance_devastator_remote_jump_velocity_z_add 500
 +set g_balance_devastator_remote_jump_velocity_z_max 1500
 +set g_balance_devastator_remote_jump_velocity_z_min 500
 +set g_balance_devastator_remote_radius 110
 +set g_balance_devastator_speed 1300
 +set g_balance_devastator_speedaccel 1300
 +set g_balance_devastator_speedstart 1000
 +set g_balance_devastator_switchdelay_drop 0.3
 +set g_balance_devastator_switchdelay_raise 0.2
 +set g_balance_devastator_weaponreplace ""
 +set g_balance_devastator_weaponstart 0
 +set g_balance_devastator_weaponstartoverride -1
 +set g_balance_devastator_weaponthrowable 1
 +// }}}
 +// {{{ #12: Port-O-Launch
 +set g_balance_porto_primary_animtime 0.3
 +set g_balance_porto_primary_lifetime 5
 +set g_balance_porto_primary_refire 1.5
 +set g_balance_porto_primary_speed 1000
 +set g_balance_porto_secondary 1
 +set g_balance_porto_secondary_animtime 0.3
 +set g_balance_porto_secondary_lifetime 5
 +set g_balance_porto_secondary_refire 1.5
 +set g_balance_porto_secondary_speed 1000
 +set g_balance_porto_switchdelay_drop 0.2
 +set g_balance_porto_switchdelay_raise 0.2
 +set g_balance_porto_weaponreplace ""
 +set g_balance_porto_weaponstart 0
 +set g_balance_porto_weaponstartoverride -1
 +set g_balance_porto_weaponthrowable 1
 +// }}}
 +// {{{ #13: Vaporizer
 +set g_balance_vaporizer_primary_ammo 10
 +set g_balance_vaporizer_primary_animtime 0.3
 +set g_balance_vaporizer_primary_refire 1
 +set g_balance_vaporizer_reload_ammo 0
 +set g_balance_vaporizer_reload_time 0
 +set g_balance_vaporizer_secondary_ammo 0
 +set g_balance_vaporizer_secondary_animtime 0.2
 +set g_balance_vaporizer_secondary_damage 25
 +set g_balance_vaporizer_secondary_delay 0
 +set g_balance_vaporizer_secondary_edgedamage 12.5
 +set g_balance_vaporizer_secondary_force 400
 +set g_balance_vaporizer_secondary_lifetime 5
 +set g_balance_vaporizer_secondary_radius 70
 +set g_balance_vaporizer_secondary_refire 0.7
 +set g_balance_vaporizer_secondary_shotangle 0
 +set g_balance_vaporizer_secondary_speed 6000
 +set g_balance_vaporizer_secondary_spread 0
 +set g_balance_vaporizer_switchdelay_drop 0.2
 +set g_balance_vaporizer_switchdelay_raise 0.2
 +set g_balance_vaporizer_weaponreplace ""
 +set g_balance_vaporizer_weaponstart 0
 +set g_balance_vaporizer_weaponstartoverride -1
 +set g_balance_vaporizer_weaponthrowable 0
 +// }}}
 +// {{{ #14: Grappling Hook
 +set g_balance_hook_primary_ammo 5
 +set g_balance_hook_primary_animtime 0.3
 +set g_balance_hook_primary_hooked_ammo 5
 +set g_balance_hook_primary_hooked_time_free 2
 +set g_balance_hook_primary_hooked_time_max 0
++set g_balance_hook_primary_refire 0.2
 +set g_balance_hook_secondary_animtime 0.3
 +set g_balance_hook_secondary_damage 25
 +set g_balance_hook_secondary_damageforcescale 0
 +set g_balance_hook_secondary_duration 1.5
 +set g_balance_hook_secondary_edgedamage 5
 +set g_balance_hook_secondary_force -2000
 +set g_balance_hook_secondary_gravity 5
 +set g_balance_hook_secondary_health 15
 +set g_balance_hook_secondary_lifetime 5
 +set g_balance_hook_secondary_power 3
 +set g_balance_hook_secondary_radius 500
 +set g_balance_hook_secondary_refire 3
 +set g_balance_hook_secondary_speed 0
 +set g_balance_hook_switchdelay_drop 0.2
 +set g_balance_hook_switchdelay_raise 0.2
 +set g_balance_hook_weaponreplace ""
 +set g_balance_hook_weaponstart 0
 +set g_balance_hook_weaponstartoverride -1
 +set g_balance_hook_weaponthrowable 1
 +// }}}
 +// {{{ #15: Heavy Laser Assault Cannon (MUTATOR WEAPON)
 +set g_balance_hlac_primary_ammo 1
 +set g_balance_hlac_primary_animtime 0.4
 +set g_balance_hlac_primary_damage 18
 +set g_balance_hlac_primary_edgedamage 9
 +set g_balance_hlac_primary_force 90
 +set g_balance_hlac_primary_lifetime 5
 +set g_balance_hlac_primary_radius 70
 +set g_balance_hlac_primary_refire 0.15
 +set g_balance_hlac_primary_speed 9000
 +set g_balance_hlac_primary_spread_add 0.0045
 +set g_balance_hlac_primary_spread_crouchmod 0.25
 +set g_balance_hlac_primary_spread_max 0.25
 +set g_balance_hlac_primary_spread_min 0.01
 +set g_balance_hlac_reload_ammo 0
 +set g_balance_hlac_reload_time 2
 +set g_balance_hlac_secondary 1
 +set g_balance_hlac_secondary_ammo 10
 +set g_balance_hlac_secondary_animtime 0.3
 +set g_balance_hlac_secondary_damage 15
 +set g_balance_hlac_secondary_edgedamage 7.5
 +set g_balance_hlac_secondary_force 90
 +set g_balance_hlac_secondary_lifetime 5
 +set g_balance_hlac_secondary_radius 70
 +set g_balance_hlac_secondary_refire 1
 +set g_balance_hlac_secondary_shots 6
 +set g_balance_hlac_secondary_speed 9000
 +set g_balance_hlac_secondary_spread 0.15
 +set g_balance_hlac_secondary_spread_crouchmod 0.5
 +set g_balance_hlac_switchdelay_drop 0.2
 +set g_balance_hlac_switchdelay_raise 0.2
 +set g_balance_hlac_weaponreplace ""
 +set g_balance_hlac_weaponstart 0
 +set g_balance_hlac_weaponstartoverride -1
 +set g_balance_hlac_weaponthrowable 1
 +// }}}
 +// {{{ #16: @!#%'n Tuba
 +set g_balance_tuba_animtime 0.05
 +set g_balance_tuba_attenuation 0.5
 +set g_balance_tuba_damage 5
 +set g_balance_tuba_edgedamage 0
 +set g_balance_tuba_force 40
 +set g_balance_tuba_radius 200
 +set g_balance_tuba_refire 0.05
 +set g_balance_tuba_switchdelay_drop 0.2
 +set g_balance_tuba_switchdelay_raise 0.2
 +set g_balance_tuba_weaponreplace ""
 +set g_balance_tuba_weaponstart 0
 +set g_balance_tuba_weaponstartoverride -1
 +set g_balance_tuba_weaponthrowable 1
 +// }}}
 +// {{{ #17: Rifle (MUTATOR WEAPON)
 +set g_balance_rifle_bursttime 0
 +set g_balance_rifle_primary_ammo 10
 +set g_balance_rifle_primary_animtime 0.4
 +set g_balance_rifle_primary_bullethail 0
 +set g_balance_rifle_primary_burstcost 0
 +set g_balance_rifle_primary_damage 80
 +set g_balance_rifle_primary_force 100
 +set g_balance_rifle_primary_refire 1.2
 +set g_balance_rifle_primary_shots 1
 +set g_balance_rifle_primary_solidpenetration 62.2
 +set g_balance_rifle_primary_spread 0
 +set g_balance_rifle_primary_tracer 1
 +set g_balance_rifle_reload_ammo 80
 +set g_balance_rifle_reload_time 2
 +set g_balance_rifle_secondary 1
 +set g_balance_rifle_secondary_ammo 10
 +set g_balance_rifle_secondary_animtime 0.3
 +set g_balance_rifle_secondary_bullethail 0
 +set g_balance_rifle_secondary_burstcost 0
 +set g_balance_rifle_secondary_damage 20
 +set g_balance_rifle_secondary_force 50
 +set g_balance_rifle_secondary_refire 0.9
 +set g_balance_rifle_secondary_reload 0
 +set g_balance_rifle_secondary_shots 4
 +set g_balance_rifle_secondary_solidpenetration 15.5
 +set g_balance_rifle_secondary_spread 0.04
 +set g_balance_rifle_secondary_tracer 0
 +set g_balance_rifle_switchdelay_drop 0.2
 +set g_balance_rifle_switchdelay_raise 0.2
 +set g_balance_rifle_weaponreplace ""
 +set g_balance_rifle_weaponstart 0
 +set g_balance_rifle_weaponstartoverride -1
 +set g_balance_rifle_weaponthrowable 1
 +// }}}
 +// {{{ #18: Fireball
 +set g_balance_fireball_primary_animtime 0.2
 +set g_balance_fireball_primary_bfgdamage 100
 +set g_balance_fireball_primary_bfgforce 0
 +set g_balance_fireball_primary_bfgradius 1000
 +set g_balance_fireball_primary_damage 200
 +set g_balance_fireball_primary_damageforcescale 0
 +set g_balance_fireball_primary_edgedamage 50
 +set g_balance_fireball_primary_force 600
 +set g_balance_fireball_primary_health 0
 +set g_balance_fireball_primary_laserburntime 0.5
 +set g_balance_fireball_primary_laserdamage 80
 +set g_balance_fireball_primary_laseredgedamage 20
 +set g_balance_fireball_primary_laserradius 256
 +set g_balance_fireball_primary_lifetime 15
 +set g_balance_fireball_primary_radius 200
 +set g_balance_fireball_primary_refire 2
 +set g_balance_fireball_primary_refire2 0
 +set g_balance_fireball_primary_speed 1200
 +set g_balance_fireball_primary_spread 0
 +set g_balance_fireball_secondary_animtime 0.3
 +set g_balance_fireball_secondary_damage 40
 +set g_balance_fireball_secondary_damageforcescale 4
 +set g_balance_fireball_secondary_damagetime 5
 +set g_balance_fireball_secondary_laserburntime 0.5
 +set g_balance_fireball_secondary_laserdamage 50
 +set g_balance_fireball_secondary_laseredgedamage 20
 +set g_balance_fireball_secondary_laserradius 110
 +set g_balance_fireball_secondary_lifetime 7
 +set g_balance_fireball_secondary_refire 1.5
 +set g_balance_fireball_secondary_speed 900
 +set g_balance_fireball_secondary_speed_up 100
 +set g_balance_fireball_secondary_speed_z 0
 +set g_balance_fireball_secondary_spread 0
 +set g_balance_fireball_switchdelay_drop 0.2
 +set g_balance_fireball_switchdelay_raise 0.2
 +set g_balance_fireball_weaponreplace ""
 +set g_balance_fireball_weaponstart 0
 +set g_balance_fireball_weaponstartoverride -1
 +set g_balance_fireball_weaponthrowable 0
 +// }}}
 +// {{{ #19: T.A.G. Seeker (MUTATOR WEAPON)
 +set g_balance_seeker_flac_ammo 1
 +set g_balance_seeker_flac_animtime 0.1
 +set g_balance_seeker_flac_damage 15
 +set g_balance_seeker_flac_edgedamage 10
 +set g_balance_seeker_flac_force 50
 +set g_balance_seeker_flac_lifetime 0.1
 +set g_balance_seeker_flac_lifetime_rand 0.05
 +set g_balance_seeker_flac_radius 100
 +set g_balance_seeker_flac_refire 0.1
 +set g_balance_seeker_flac_speed 3000
 +set g_balance_seeker_flac_speed_up 1000
 +set g_balance_seeker_flac_speed_z 0
 +set g_balance_seeker_flac_spread 0.4
 +set g_balance_seeker_missile_accel 1400
 +set g_balance_seeker_missile_ammo 2
 +set g_balance_seeker_missile_animtime 0.2
 +set g_balance_seeker_missile_count 3
 +set g_balance_seeker_missile_damage 30
 +set g_balance_seeker_missile_damageforcescale 4
 +set g_balance_seeker_missile_decel 1400
 +set g_balance_seeker_missile_delay 0.25
 +set g_balance_seeker_missile_edgedamage 10
 +set g_balance_seeker_missile_force 150
 +set g_balance_seeker_missile_health 5
 +set g_balance_seeker_missile_lifetime 15
 +set g_balance_seeker_missile_proxy 0
 +set g_balance_seeker_missile_proxy_delay 0.2
 +set g_balance_seeker_missile_proxy_maxrange 45
 +set g_balance_seeker_missile_radius 80
 +set g_balance_seeker_missile_refire 0.5
 +set g_balance_seeker_missile_smart 1
 +set g_balance_seeker_missile_smart_mindist 800
 +set g_balance_seeker_missile_smart_trace_max 2500
 +set g_balance_seeker_missile_smart_trace_min 1000
 +set g_balance_seeker_missile_speed 700
 +set g_balance_seeker_missile_speed_max 1300
 +set g_balance_seeker_missile_speed_up 300
 +set g_balance_seeker_missile_speed_z 0
 +set g_balance_seeker_missile_spread 0
 +set g_balance_seeker_missile_turnrate 0.65
 +set g_balance_seeker_reload_ammo 0
 +set g_balance_seeker_reload_time 2
 +set g_balance_seeker_switchdelay_drop 0.2
 +set g_balance_seeker_switchdelay_raise 0.2
 +set g_balance_seeker_tag_ammo 1
 +set g_balance_seeker_tag_animtime 0.2
 +set g_balance_seeker_tag_damageforcescale 4
 +set g_balance_seeker_tag_health 5
 +set g_balance_seeker_tag_lifetime 15
 +set g_balance_seeker_tag_refire 0.75
 +set g_balance_seeker_tag_speed 5000
 +set g_balance_seeker_tag_spread 0
 +set g_balance_seeker_tag_tracker_lifetime 10
 +set g_balance_seeker_type 0
 +set g_balance_seeker_weaponreplace ""
 +set g_balance_seeker_weaponstart 0
 +set g_balance_seeker_weaponstartoverride -1
 +set g_balance_seeker_weaponthrowable 1
 +// }}}
 +// {{{ #20: Shotgun (MUTATOR WEAPON)
 +set g_balance_shotgun_primary_ammo 1
 +set g_balance_shotgun_primary_animtime 0.2
 +set g_balance_shotgun_primary_bullets 14
 +set g_balance_shotgun_primary_damage 4
 +set g_balance_shotgun_primary_force 15
 +set g_balance_shotgun_primary_refire 0.75
 +set g_balance_shotgun_primary_solidpenetration 3.8
 +set g_balance_shotgun_primary_spread 0.12
 +set g_balance_shotgun_reload_ammo 0
 +set g_balance_shotgun_reload_time 2
 +set g_balance_shotgun_secondary 1
 +set g_balance_shotgun_secondary_animtime 1
 +set g_balance_shotgun_secondary_damage 80
 +set g_balance_shotgun_secondary_force 200
 +set g_balance_shotgun_secondary_melee_delay 0.25
 +set g_balance_shotgun_secondary_melee_multihit 1
 +set g_balance_shotgun_secondary_melee_no_doubleslap 1
 +set g_balance_shotgun_secondary_melee_nonplayerdamage 40
 +set g_balance_shotgun_secondary_melee_range 120
 +set g_balance_shotgun_secondary_melee_swing_side 120
 +set g_balance_shotgun_secondary_melee_swing_up 30
 +set g_balance_shotgun_secondary_melee_time 0.15
 +set g_balance_shotgun_secondary_melee_traces 10
 +set g_balance_shotgun_secondary_refire 1.25
 +set g_balance_shotgun_switchdelay_drop 0.2
 +set g_balance_shotgun_switchdelay_raise 0.2
 +set g_balance_shotgun_weaponreplace ""
 +set g_balance_shotgun_weaponstart 0
 +set g_balance_shotgun_weaponstartoverride -1
 +set g_balance_shotgun_weaponthrowable 1
 +// }}}
index 23d4c77,0000000..dc4b4b9
mode 100644,000000..100644
--- /dev/null
@@@ -1,236 -1,0 +1,237 @@@
 +g_mod_balance Xonotic
 +
 +// {{{ starting gear
 +set g_start_weapon_laser -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_shotgun -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_machinegun -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_mortar -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_electro -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_crylink -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_vortex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_hagar -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_devastator -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_vaporizer -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_porto -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_hook -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_tuba -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_fireball -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_balance_health_start 100
 +set g_balance_armor_start 0
 +set g_start_ammo_shells 15
 +set g_start_ammo_nails 0
 +set g_start_ammo_rockets 0
 +set g_start_ammo_cells 0
 +set g_start_ammo_plasma 0
 +set g_start_ammo_fuel 0
 +set g_warmup_start_health 100 "starting values when being in warmup-stage"
 +set g_warmup_start_armor 100 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_shells 30 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_nails 160 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_rockets 80 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_cells 90 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_plasma 90 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_fuel 0 "starting values when being in warmup-stage"
 +set g_lms_start_health 200
 +set g_lms_start_armor 200
 +set g_lms_start_ammo_shells 60
 +set g_lms_start_ammo_nails 320
 +set g_lms_start_ammo_rockets 160
 +set g_lms_start_ammo_cells 180
 +set g_lms_start_ammo_plasma 180
 +set g_lms_start_ammo_fuel 0
 +set g_balance_nix_roundtime 25
 +set g_balance_nix_incrtime 1.6
 +set g_balance_nix_ammo_shells 60
 +set g_balance_nix_ammo_nails 320
 +set g_balance_nix_ammo_rockets 160
 +set g_balance_nix_ammo_cells 180
 +set g_balance_nix_ammo_plasma 180
 +set g_balance_nix_ammo_fuel 0
 +set g_balance_nix_ammoincr_shells 2 // eh this will need figured out later I assume
 +set g_balance_nix_ammoincr_nails 6
 +set g_balance_nix_ammoincr_rockets 2
 +set g_balance_nix_ammoincr_cells 2
 +set g_balance_nix_ammoincr_plasma 2
 +set g_balance_nix_ammoincr_fuel 2
 +// }}}
 +
 +// {{{ pickup items
 +set g_pickup_ammo_anyway 1
 +set g_pickup_weapons_anyway 1
 +set g_pickup_shells 15
 +set g_pickup_shells_weapon 15
 +set g_pickup_shells_max 60
 +set g_pickup_nails 80
 +set g_pickup_nails_weapon 80
 +set g_pickup_nails_max 320
 +set g_pickup_rockets 40
 +set g_pickup_rockets_weapon 40
 +set g_pickup_rockets_max 160
 +set g_pickup_cells 30
 +set g_pickup_cells_weapon 30
 +set g_pickup_cells_max 180
 +set g_pickup_plasma 30
 +set g_pickup_plasma_weapon 30
 +set g_pickup_plasma_max 180
 +set g_pickup_fuel 50
 +set g_pickup_fuel_weapon 50
 +set g_pickup_fuel_jetpack 100
 +set g_pickup_fuel_max 100
 +set g_pickup_armorsmall 5
 +set g_pickup_armorsmall_max 200
 +set g_pickup_armorsmall_anyway 1
 +set g_pickup_armormedium 25
 +set g_pickup_armormedium_max 200
 +set g_pickup_armormedium_anyway 1
 +set g_pickup_armorbig 50
 +set g_pickup_armorbig_max 200
 +set g_pickup_armorbig_anyway 1
 +set g_pickup_armorlarge 100
 +set g_pickup_armorlarge_max 200
 +set g_pickup_armorlarge_anyway 1
 +set g_pickup_healthsmall 5
 +set g_pickup_healthsmall_max 200
 +set g_pickup_healthsmall_anyway 1
 +set g_pickup_healthmedium 25
 +set g_pickup_healthmedium_max 200
 +set g_pickup_healthmedium_anyway 1
 +set g_pickup_healthlarge 50
 +set g_pickup_healthlarge_max 200
 +set g_pickup_healthlarge_anyway 1
 +set g_pickup_healthmega 100
 +set g_pickup_healthmega_max 200
 +set g_pickup_healthmega_anyway 1
 +set g_pickup_respawntime_short 15
 +set g_pickup_respawntime_medium 20
 +set g_pickup_respawntime_long 30
 +set g_pickup_respawntime_powerup 120
 +set g_pickup_respawntime_weapon 10
 +set g_pickup_respawntime_superweapon 120
 +set g_pickup_respawntime_ammo 10
 +set g_pickup_respawntimejitter_short 0
 +set g_pickup_respawntimejitter_medium 0
 +set g_pickup_respawntimejitter_long 0
 +set g_pickup_respawntimejitter_powerup 30
 +set g_pickup_respawntimejitter_weapon 0
 +set g_pickup_respawntimejitter_superweapon 10
 +set g_pickup_respawntimejitter_ammo 0
 +// }}}
 +
 +// {{{ regen/rot
 +set g_balance_health_regen 0.08
 +set g_balance_health_regenlinear 0.5
 +set g_balance_pause_health_regen 5
 +set g_balance_pause_health_regen_spawn 0
 +set g_balance_health_rot 0.04
 +set g_balance_health_rotlinear 0.75
 +set g_balance_pause_health_rot 1
 +set g_balance_pause_health_rot_spawn 5
 +set g_balance_health_regenstable 100
 +set g_balance_health_rotstable 100
 +set g_balance_health_limit 999
 +set g_balance_armor_regen 0
 +set g_balance_armor_regenlinear 0
 +set g_balance_armor_rot 0.04
 +set g_balance_armor_rotlinear 0.75
 +set g_balance_pause_armor_rot 1
 +set g_balance_pause_armor_rot_spawn 5
 +set g_balance_armor_regenstable 100
 +set g_balance_armor_rotstable 100
 +set g_balance_armor_limit 999
 +set g_balance_armor_blockpercent 0.6
 +set g_balance_fuel_regen 0.1 "fuel regeneration (only applies if the player owns IT_FUEL_REGEN)"
 +set g_balance_fuel_regenlinear 0
 +set g_balance_pause_fuel_regen 2 // other than this, fuel uses the health regen counter
 +set g_balance_fuel_rot 0.05
 +set g_balance_fuel_rotlinear 0
 +set g_balance_pause_fuel_rot 5
 +set g_balance_pause_fuel_rot_spawn 10
 +set g_balance_fuel_regenstable 50
 +set g_balance_fuel_rotstable 100
 +set g_balance_fuel_limit 999
 +// }}}
 +
 +// {{{ misc
 +set g_balance_selfdamagepercent 0.65
 +set g_weaponspeedfactor 1 "weapon projectile speed multiplier"
 +set g_weaponratefactor 1 "weapon fire rate multiplier"
 +set g_weapondamagefactor 1 "weapon damage multiplier"
 +set g_weaponforcefactor 1 "weapon force multiplier"
 +set g_weaponspreadfactor 1 "weapon spread multiplier"
 +set g_balance_firetransfer_time 0.9
 +set g_balance_firetransfer_damage 0.8
 +set g_throughfloor_damage 0.75
 +set g_throughfloor_force 0.75
 +set g_projectiles_damage 2
 +// possible values:
 +// -2: absolutely no damage to projectiles (no exceptions)
 +// -1: no damage other than the exceptions (electro combo, hagar join explode, ML mines)
 +// 0: only damage from contents (lava/slime) or exceptions
 +// 1: only self damage or damage from contents or exceptions
 +// 2: allow all damage to projectiles normally
 +set g_projectiles_keep_owner 0
 +set g_projectiles_newton_style 2
 +// possible values:
 +// 0: absolute velocity projectiles (like Quake)
 +// 1: relative velocity projectiles, "Newtonian" (like Tribes 2)
 +// 2: relative velocity projectiles, but aim is precorrected so projectiles hit the crosshair (note: strafe rockets then are SLOWER than ones shot while standing, happens in 1 too when aiming correctly which is hard)
 +set g_projectiles_newton_style_2_minfactor 0.8
 +set g_projectiles_newton_style_2_maxfactor 1.5
 +set g_projectiles_spread_style 7
 +// possible values:
 +// 0: forward + solid sphere (like Quake) - varies velocity
 +// 1: forward + flattened solid sphere
 +// 2: forward + solid circle
 +// 3: forward + normal distribution 3D - varies velocity
 +// 4: forward + normal distribution on a plane
 +// 5: forward + circle with 1-r falloff
 +// 6: forward + circle with 1-r^2 falloff
 +// 7: forward + circle with (1-r)(2-r) falloff
 +set g_balance_falldamage_deadminspeed 250
 +set g_balance_falldamage_minspeed 900
 +set g_balance_falldamage_factor 0.20
 +set g_balance_falldamage_maxdamage 40
 +set g_balance_damagepush_speedfactor 2.5
 +set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage with playerdamage/projectiledamage
 +set g_balance_contents_drowndelay 10 // time under water before a player begins drowning
 +set g_balance_contents_playerdamage_drowning 20 // damage per second for while player is drowning
 +set g_balance_contents_playerdamage_lava 50 // damage per second for while player is inside lava
 +set g_balance_contents_playerdamage_slime 30 // damage per second for while player is inside slime
 +set g_balance_contents_projectiledamage 10000 // instantly kill projectiles upon touching lava/slime
 +set g_maxpushtime 8.0 "timeout for kill credit when your damage knocks someone into a death trap"
 +// }}}
 +
 +// {{{ powerups
 +set g_balance_powerup_invincible_takedamage 0.25 // only 1/4th damage is taken
 +set g_balance_powerup_invincible_time 30
 +set g_balance_powerup_strength_damage 3
 +set g_balance_powerup_strength_force 3
 +set g_balance_powerup_strength_time 30
 +set g_balance_powerup_strength_selfdamage 1.5
 +set g_balance_powerup_strength_selfforce 1.5
 +set g_balance_superweapons_time 30
 +// }}}
 +
 +// {{{ jetpack/hook
 +set g_jetpack_antigravity 0.8 "factor of gravity compensation of the jetpack"
 +set g_jetpack_acceleration_side 1200 "acceleration of the jetpack in xy direction"
 +set g_jetpack_acceleration_up 600 "acceleration of the jetpack in z direction (note: you have to factor in gravity here, if antigravity is not 1)"
 +set g_jetpack_maxspeed_side 1200 "max speed of the jetpack in xy direction"
 +set g_jetpack_maxspeed_up 600 "max speed of the jetpack in z direction"
 +set g_jetpack_fuel 8 "fuel per second for jetpack"
 +set g_jetpack_attenuation 2 "jetpack sound attenuation"
 +
 +set g_grappling_hook_tarzan 2 // 2: can also pull players
 +set g_balance_grapplehook_speed_fly 1800
 +set g_balance_grapplehook_speed_pull 2000
 +set g_balance_grapplehook_force_rubber 2000
 +set g_balance_grapplehook_force_rubber_overstretch 1000
 +set g_balance_grapplehook_length_min 50
 +set g_balance_grapplehook_stretch 50
 +set g_balance_grapplehook_airfriction 0.2
 +set g_balance_grapplehook_health 50
 +set g_balance_grapplehook_damagedbycontents 1
++set g_balance_grapplehook_refire 0.2
 +// }}}
 +
 +exec bal-wep-xonotic.cfg
@@@ -56,8 -56,8 +56,8 @@@ _cl_playermodel models/player/erebus.iq
  _cl_playerskin 0
  
  seta cl_reticle 1 "control for toggling whether ANY zoom reticles are shown"
- seta cl_reticle_stretch 0 "whether to stretch reticles so they fit the screen (brakes image proportions)"
+ seta cl_reticle_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"
index e32b459,0000000..df43b54
mode 100644,000000..100644
--- /dev/null
@@@ -1,779 -1,0 +1,780 @@@
- set g_balance_hook_primary_refire 0 // hook monkeys set 0
 +g_mod_balance Nexuiz25
 +
 +// {{{ starting gear
 +set g_start_weapon_laser -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_shotgun -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_uzi -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_grenadelauncher -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_electro -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_crylink -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_nex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_hagar -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_rocketlauncher -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_minstanex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_porto -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_hook -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_tuba -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_fireball -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_balance_health_start 150
 +set g_balance_armor_start 0
 +set g_start_ammo_shells 40
 +set g_start_ammo_nails 0
 +set g_start_ammo_rockets 0
 +set g_start_ammo_cells 0
 +set g_start_ammo_fuel 0
 +set g_warmup_start_health 250 "starting values when being in warmup-stage"
 +set g_warmup_start_armor 100 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_shells 50 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_nails 150 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_rockets 50 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_cells 50 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_fuel 0 "starting values when being in warmup-stage"
 +set g_lms_start_health 250
 +set g_lms_start_armor 100
 +set g_lms_start_ammo_shells 50
 +set g_lms_start_ammo_nails 150
 +set g_lms_start_ammo_rockets 50
 +set g_lms_start_ammo_cells 50
 +set g_lms_start_ammo_fuel 0
 +set g_balance_nix_roundtime 25
 +set g_balance_nix_incrtime 1.6
 +set g_balance_nix_ammo_shells 15
 +set g_balance_nix_ammo_nails 45
 +set g_balance_nix_ammo_rockets 15
 +set g_balance_nix_ammo_cells 15
 +set g_balance_nix_ammo_fuel 0
 +set g_balance_nix_ammoincr_shells 2
 +set g_balance_nix_ammoincr_nails 6
 +set g_balance_nix_ammoincr_rockets 2
 +set g_balance_nix_ammoincr_cells 2
 +set g_balance_nix_ammoincr_fuel 2
 +// }}}
 +
 +// {{{ pickup items
 +set g_pickup_ammo_anyway 0
 +set g_pickup_weapons_anyway 0
 +set g_pickup_shells 15
 +set g_pickup_shells_weapon 15
 +set g_pickup_shells_max 999
 +set g_pickup_nails 80
 +set g_pickup_nails_weapon 80
 +set g_pickup_nails_max 999
 +set g_pickup_rockets 15
 +set g_pickup_rockets_weapon 15
 +set g_pickup_rockets_max 999
 +set g_pickup_cells 25
 +set g_pickup_cells_weapon 25
 +set g_pickup_cells_max 999
 +set g_pickup_fuel 25
 +set g_pickup_fuel_weapon 25
 +set g_pickup_fuel_jetpack 50
 +set g_pickup_fuel_max 999
 +set g_pickup_armorsmall 5
 +set g_pickup_armorsmall_max 999
 +set g_pickup_armorsmall_anyway 0
 +set g_pickup_armormedium 25
 +set g_pickup_armormedium_max 999
 +set g_pickup_armormedium_anyway 0
 +set g_pickup_armorbig 50
 +set g_pickup_armorbig_max 999
 +set g_pickup_armorbig_anyway 0
 +set g_pickup_armorlarge 100
 +set g_pickup_armorlarge_max 999
 +set g_pickup_armorlarge_anyway 0
 +set g_pickup_healthsmall 5
 +set g_pickup_healthsmall_max 999
 +set g_pickup_healthsmall_anyway 0
 +set g_pickup_healthmedium 25
 +set g_pickup_healthmedium_max 999
 +set g_pickup_healthmedium_anyway 0
 +set g_pickup_healthlarge 50
 +set g_pickup_healthlarge_max 999
 +set g_pickup_healthlarge_anyway 0
 +set g_pickup_healthmega 100
 +set g_pickup_healthmega_max 999
 +set g_pickup_healthmega_anyway 0
 +set g_pickup_respawntime_short 15
 +set g_pickup_respawntime_medium 20
 +set g_pickup_respawntime_long 30
 +set g_pickup_respawntime_powerup 120
 +set g_pickup_respawntime_weapon 15
 +set g_pickup_respawntime_superweapon 120
 +set g_pickup_respawntime_ammo 15
 +set g_pickup_respawntimejitter_short 0
 +set g_pickup_respawntimejitter_medium 0
 +set g_pickup_respawntimejitter_long 0
 +set g_pickup_respawntimejitter_powerup 10
 +set g_pickup_respawntimejitter_weapon 0
 +set g_pickup_respawntimejitter_superweapon 10
 +set g_pickup_respawntimejitter_ammo 0
 +// }}}
 +
 +// {{{ regen/rot
 +set g_balance_health_regen 0.1
 +set g_balance_health_regenlinear 0
 +set g_balance_pause_health_regen 5
 +set g_balance_pause_health_regen_spawn 0
 +set g_balance_health_rot 0.1
 +set g_balance_health_rotlinear 0
 +set g_balance_pause_health_rot 5
 +set g_balance_pause_health_rot_spawn 10
 +set g_balance_health_regenstable 100
 +set g_balance_health_rotstable 100
 +set g_balance_health_limit 999
 +set g_balance_armor_regen 0
 +set g_balance_armor_regenlinear 0
 +set g_balance_armor_rot 0.1
 +set g_balance_armor_rotlinear 0
 +set g_balance_pause_armor_rot 5
 +set g_balance_pause_armor_rot_spawn 10
 +set g_balance_armor_regenstable 100
 +set g_balance_armor_rotstable 100
 +set g_balance_armor_limit 999
 +set g_balance_armor_blockpercent 0.6
 +set g_balance_fuel_regen 0.1 "fuel regeneration (only applies if the player owns IT_FUEL_REGEN)"
 +set g_balance_fuel_regenlinear 0
 +set g_balance_pause_fuel_regen 2 // other than this, fuel uses the health regen counter
 +set g_balance_fuel_rot 0.05
 +set g_balance_fuel_rotlinear 0
 +set g_balance_pause_fuel_rot 5
 +set g_balance_pause_fuel_rot_spawn 10
 +set g_balance_fuel_regenstable 50
 +set g_balance_fuel_rotstable 100
 +set g_balance_fuel_limit 999
 +// }}}
 +
 +// {{{ misc
 +set g_balance_selfdamagepercent 0.6
 +set g_weaponspeedfactor 1 "weapon projectile speed multiplier"
 +set g_weaponratefactor 1 "weapon fire rate multiplier"
 +set g_weapondamagefactor 1 "weapon damage multiplier"
 +set g_weaponforcefactor 1 "weapon force multiplier"
 +set g_weaponspreadfactor 1 "weapon spread multiplier"
 +set g_balance_firetransfer_time 0.9
 +set g_balance_firetransfer_damage 0.8
 +set g_throughfloor_damage 1
 +set g_throughfloor_force 1
 +set g_projectiles_damage 2
 +// possible values:
 +// -2: absolutely no damage to projectiles (no exceptions)
 +// -1: no damage other than the exceptions (electro combo, hagar join explode, ML mines)
 +// 0: only damage from contents (lava/slime) or exceptions
 +// 1: only self damage or damage from contents or exceptions
 +// 2: allow all damage to projectiles normally
 +set g_projectiles_keep_owner 0
 +set g_projectiles_newton_style 2
 +// possible values:
 +// 0: absolute velocity projectiles (like Quake)
 +// 1: relative velocity projectiles, "Newtonian" (like Tribes 2)
 +// 2: relative velocity projectiles, but aim is precorrected so projectiles hit the crosshair (note: strafe rockets then are SLOWER than ones shot while standing, happens in 1 too when aiming correctly which is hard)
 +set g_projectiles_newton_style_2_minfactor 0.7
 +set g_projectiles_newton_style_2_maxfactor 5
 +set g_projectiles_spread_style 0
 +// possible values:
 +// 0: forward + solid sphere (like Quake) - varies velocity
 +// 1: forward + flattened solid sphere
 +// 2: forward + solid circle
 +// 3: forward + normal distribution 3D - varies velocity
 +// 4: forward + normal distribution on a plane
 +// 5: forward + circle with 1-r falloff
 +// 6: forward + circle with 1-r^2 falloff
 +// 7: forward + circle with (1-r)(2-r) falloff
 +set g_balance_falldamage_deadminspeed 150
 +set g_balance_falldamage_minspeed 1400
 +set g_balance_falldamage_factor 0.15
 +set g_balance_falldamage_maxdamage 25
 +set g_balance_damagepush_speedfactor 0
 +set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage with playerdamage/projectiledamage
 +set g_balance_contents_drowndelay 10 // time under water before a player begins drowning
 +set g_balance_contents_playerdamage_drowning 20 // damage per second for while player is drowning
 +set g_balance_contents_playerdamage_lava 50 // damage per second for while player is inside lava
 +set g_balance_contents_playerdamage_slime 30 // damage per second for while player is inside slime
 +set g_balance_contents_projectiledamage 10000 // instantly kill projectiles upon touching lava/slime
 +set g_maxpushtime 8.0 "timeout for kill credit when your damage knocks someone into a death trap"
 +// }}}
 +
 +// {{{ powerups
 +set g_balance_powerup_invincible_takedamage 0.2
 +set g_balance_powerup_invincible_time 30
 +set g_balance_powerup_strength_damage 3
 +set g_balance_powerup_strength_force 4
 +set g_balance_powerup_strength_time 30
 +set g_balance_powerup_strength_selfdamage 1.5
 +set g_balance_powerup_strength_selfforce 1.5
 +set g_balance_superweapons_time 30
 +// }}}
 +
 +// {{{ jetpack/hook
 +set g_jetpack_antigravity 0.8 "factor of gravity compensation of the jetpack"
 +set g_jetpack_acceleration_side 1200 "acceleration of the jetpack in xy direction"
 +set g_jetpack_acceleration_up 600 "acceleration of the jetpack in z direction (note: you have to factor in gravity here, if antigravity is not 1)"
 +set g_jetpack_maxspeed_side 1500 "max speed of the jetpack in xy direction"
 +set g_jetpack_maxspeed_up 600 "max speed of the jetpack in z direction"
 +set g_jetpack_fuel 8 "fuel per second for jetpack"
 +set g_jetpack_attenuation 2 "jetpack sound attenuation"
 +
 +set g_grappling_hook_tarzan 2 // 2: can also pull players
 +set g_balance_grapplehook_speed_fly 1800
 +set g_balance_grapplehook_speed_pull 2000
 +set g_balance_grapplehook_force_rubber 2000
 +set g_balance_grapplehook_force_rubber_overstretch 1000
 +set g_balance_grapplehook_length_min 50
 +set g_balance_grapplehook_stretch 50
 +set g_balance_grapplehook_airfriction 0.2
 +set g_balance_grapplehook_health 130
 +set g_balance_grapplehook_damagedbycontents 0
++set g_balance_grapplehook_refire 0.2
 +// }}}
 +
 +// {{{ weapon properties
 +// {{{ laser
 +set g_balance_laser_melee_animtime 0.3
 +set g_balance_laser_melee_damage 80
 +set g_balance_laser_melee_delay 0.25
 +set g_balance_laser_melee_force 200
 +set g_balance_laser_melee_multihit 1
 +set g_balance_laser_melee_no_doubleslap 1
 +set g_balance_laser_melee_nonplayerdamage 40
 +set g_balance_laser_melee_range 120
 +set g_balance_laser_melee_refire 1.25
 +set g_balance_laser_melee_swing_side 120
 +set g_balance_laser_melee_swing_up 30
 +set g_balance_laser_melee_time 0.15
 +set g_balance_laser_melee_traces 10
 +
 +set g_balance_laser_primary 1 // 0 = shockwave attack, 1 = projectile primary
 +set g_balance_laser_primary_damage 35
 +set g_balance_laser_primary_edgedamage 10
 +set g_balance_laser_primary_force 400
 +set g_balance_laser_primary_radius 70
 +set g_balance_laser_primary_speed 9000
 +set g_balance_laser_primary_spread 0
 +set g_balance_laser_primary_refire 0.7
 +set g_balance_laser_primary_animtime 0.3
 +set g_balance_laser_primary_lifetime 30
 +set g_balance_laser_primary_shotangle 0
 +set g_balance_laser_primary_delay 0.05
 +set g_balance_laser_primary_force_zscale 1
 +set g_balance_laser_primary_force_velocitybias 0
 +set g_balance_laser_primary_force_other_scale 1
 +
 +set g_balance_laser_secondary 0 // 0 = switch away to last used weapon, 1 = projectile secondary, 2 = melee secondary
 +set g_balance_laser_secondary_damage 35
 +set g_balance_laser_secondary_edgedamage 10
 +set g_balance_laser_secondary_force 400
 +set g_balance_laser_secondary_radius 70
 +set g_balance_laser_secondary_speed 9000
 +set g_balance_laser_secondary_spread 0
 +set g_balance_laser_secondary_refire 0.7
 +set g_balance_laser_secondary_animtime 0.3
 +set g_balance_laser_secondary_lifetime 30
 +set g_balance_laser_secondary_shotangle 0
 +set g_balance_laser_secondary_delay 0
 +set g_balance_laser_secondary_force_zscale 1
 +set g_balance_laser_secondary_force_velocitybias 0
 +set g_balance_laser_secondary_force_other_scale 1
 +
 +set g_balance_laser_shockwave_damage 20
 +set g_balance_laser_shockwave_distance 2000
 +set g_balance_laser_shockwave_edgedamage 0
 +set g_balance_laser_shockwave_force 200
 +set g_balance_laser_shockwave_force_forwardbias 50
 +set g_balance_laser_shockwave_force_zscale 1.5
 +set g_balance_laser_shockwave_jump_damage 20
 +set g_balance_laser_shockwave_jump_edgedamage 0
 +set g_balance_laser_shockwave_jump_force 300
 +set g_balance_laser_shockwave_jump_force_velocitybias 0
 +set g_balance_laser_shockwave_jump_force_zscale 1.25
 +set g_balance_laser_shockwave_jump_multiplier_accuracy 0.5
 +set g_balance_laser_shockwave_jump_multiplier_distance 0.5
 +set g_balance_laser_shockwave_jump_multiplier_min 0
 +set g_balance_laser_shockwave_jump_radius 150
 +set g_balance_laser_shockwave_multiplier_accuracy 0.5
 +set g_balance_laser_shockwave_multiplier_distance 0.5
 +set g_balance_laser_shockwave_multiplier_min 0
 +set g_balance_laser_shockwave_splash_damage 15
 +set g_balance_laser_shockwave_splash_edgedamage 0
 +set g_balance_laser_shockwave_splash_force 100
 +set g_balance_laser_shockwave_splash_force_forwardbias 50
 +set g_balance_laser_shockwave_splash_multiplier_accuracy 0.5
 +set g_balance_laser_shockwave_splash_multiplier_distance 0.5
 +set g_balance_laser_shockwave_splash_multiplier_min 0
 +set g_balance_laser_shockwave_splash_radius 70
 +set g_balance_laser_shockwave_spread_max 100
 +set g_balance_laser_shockwave_spread_min 20
 +
 +set g_balance_laser_switchdelay_drop 0.15
 +set g_balance_laser_switchdelay_raise 0.15
 +set g_balance_laser_reload_ammo 0 //default: 6
 +set g_balance_laser_reload_time 2
 +// }}}
 +// {{{ shotgun
 +set g_balance_shotgun_primary_bullets 6
 +set g_balance_shotgun_primary_damage 9
 +set g_balance_shotgun_primary_force 60
 +set g_balance_shotgun_primary_spread 0.07
 +set g_balance_shotgun_primary_refire 0.5
 +set g_balance_shotgun_primary_animtime 0.2
 +set g_balance_shotgun_primary_ammo 1
 +set g_balance_shotgun_primary_solidpenetration 3.8
 +set g_balance_shotgun_secondary 1
 +set g_balance_shotgun_secondary_melee_delay 0.25 // 0.35 was too slow
 +set g_balance_shotgun_secondary_melee_range 120
 +set g_balance_shotgun_secondary_melee_swing_side 120
 +set g_balance_shotgun_secondary_melee_swing_up 30
 +set g_balance_shotgun_secondary_melee_time 0.15
 +set g_balance_shotgun_secondary_melee_traces 10
 +set g_balance_shotgun_secondary_melee_no_doubleslap 1
 +set g_balance_shotgun_secondary_melee_nonplayerdamage 0
 +set g_balance_shotgun_secondary_melee_multihit 1
 +set g_balance_shotgun_secondary_damage 115
 +set g_balance_shotgun_secondary_force 150
 +set g_balance_shotgun_secondary_refire 1.1
 +set g_balance_shotgun_secondary_animtime 1
 +set g_balance_shotgun_switchdelay_drop 0.15
 +set g_balance_shotgun_switchdelay_raise 0.15
 +set g_balance_shotgun_reload_ammo 0 //default: 5
 +set g_balance_shotgun_reload_time 2
 +// }}}
 +// {{{ uzi
 +set g_balance_uzi_mode 0                              // Activates varible spread for sustained & burst mode secondary
 +set g_balance_uzi_spread_min 0.02
 +set g_balance_uzi_spread_max 0.6
 +set g_balance_uzi_spread_add 0.012
 +
 +set g_balance_uzi_burst 0                             // # of bullets in a burst (if set to 2 or more)
 +set g_balance_uzi_burst_animtime 0.75
 +set g_balance_uzi_burst_refire 0.05           // refire between burst bullets
 +set g_balance_uzi_burst_refire2 0.75  // refire after burst
 +set g_balance_uzi_burst_spread 0.04
 +set g_balance_uzi_burst_damage 18
 +set g_balance_uzi_burst_force 50
 +set g_balance_uzi_burst_ammo 3
 +
 +set g_balance_uzi_first 1
 +set g_balance_uzi_first_damage 30
 +set g_balance_uzi_first_force 50
 +set g_balance_uzi_first_spread 0.015
 +set g_balance_uzi_first_refire 0.2
 +set g_balance_uzi_first_ammo 1
 +
 +set g_balance_uzi_sustained_damage 15
 +set g_balance_uzi_sustained_force 27
 +set g_balance_uzi_sustained_spread 0.05
 +set g_balance_uzi_sustained_refire 0.1
 +set g_balance_uzi_sustained_ammo 1
 +
 +set g_balance_uzi_solidpenetration 13.1
 +
 +set g_balance_uzi_switchdelay_drop 0.15
 +set g_balance_uzi_switchdelay_raise 0.15
 +
 +set g_balance_uzi_reload_ammo 0 //default: 30
 +set g_balance_uzi_reload_time 2
 +// }}}
 +// {{{ mortar
 +set g_balance_grenadelauncher_primary_type 0
 +set g_balance_grenadelauncher_primary_damage 70
 +set g_balance_grenadelauncher_primary_edgedamage 38
 +set g_balance_grenadelauncher_primary_force 400
 +set g_balance_grenadelauncher_primary_radius 140
 +set g_balance_grenadelauncher_primary_speed 2000
 +set g_balance_grenadelauncher_primary_speed_up 200
 +set g_balance_grenadelauncher_primary_speed_z 0
 +set g_balance_grenadelauncher_primary_spread 0
 +set g_balance_grenadelauncher_primary_lifetime 30
 +set g_balance_grenadelauncher_primary_lifetime2 1
 +set g_balance_grenadelauncher_primary_refire 0.8
 +set g_balance_grenadelauncher_primary_animtime 0.3
 +set g_balance_grenadelauncher_primary_ammo 2
 +set g_balance_grenadelauncher_primary_health 25
 +set g_balance_grenadelauncher_primary_damageforcescale 4
 +set g_balance_grenadelauncher_primary_remote_minbouncecnt 0
 +
 +set g_balance_grenadelauncher_secondary_type 1
 +set g_balance_grenadelauncher_secondary_damage 70
 +set g_balance_grenadelauncher_secondary_edgedamage 38
 +set g_balance_grenadelauncher_secondary_force 400
 +set g_balance_grenadelauncher_secondary_radius 140
 +set g_balance_grenadelauncher_secondary_speed 1400
 +set g_balance_grenadelauncher_secondary_speed_up 200
 +set g_balance_grenadelauncher_secondary_speed_z 0
 +set g_balance_grenadelauncher_secondary_spread 0
 +set g_balance_grenadelauncher_secondary_lifetime 2.5
 +set g_balance_grenadelauncher_secondary_lifetime_bounce 0
 +set g_balance_grenadelauncher_secondary_lifetime_stick 0
 +set g_balance_grenadelauncher_secondary_refire 0.7
 +set g_balance_grenadelauncher_secondary_animtime 0.3
 +set g_balance_grenadelauncher_secondary_ammo 2
 +set g_balance_grenadelauncher_secondary_health 10
 +set g_balance_grenadelauncher_secondary_damageforcescale 4
 +set g_balance_grenadelauncher_secondary_remote_detonateprimary 0
 +
 +set g_balance_grenadelauncher_bouncefactor 0.5
 +set g_balance_grenadelauncher_bouncestop 0.075
 +
 +set g_balance_grenadelauncher_switchdelay_drop 0.15
 +set g_balance_grenadelauncher_switchdelay_raise 0.15
 +
 +set g_balance_grenadelauncher_reload_ammo 0 //default: 12
 +set g_balance_grenadelauncher_reload_time 2
 +// }}}
 +// {{{ electro
 +set g_balance_electro_lightning 0
 +set g_balance_electro_primary_damage 65
 +set g_balance_electro_primary_edgedamage 0
 +set g_balance_electro_primary_force 200
 +set g_balance_electro_primary_force_up 0
 +set g_balance_electro_primary_radius 150
 +set g_balance_electro_primary_comboradius 0
 +set g_balance_electro_primary_speed 2000
 +set g_balance_electro_primary_spread 0
 +set g_balance_electro_primary_lifetime 30
 +set g_balance_electro_primary_refire 0.6
 +set g_balance_electro_primary_animtime 0.3
 +set g_balance_electro_primary_ammo 2
 +set g_balance_electro_primary_range 0
 +set g_balance_electro_primary_falloff_mindist 255 // 0.3 * radius
 +set g_balance_electro_primary_falloff_maxdist 850
 +set g_balance_electro_primary_falloff_halflifedist 425
 +set g_balance_electro_secondary_damage 50
 +set g_balance_electro_secondary_edgedamage 0
 +set g_balance_electro_secondary_force 200
 +set g_balance_electro_secondary_radius 150
 +set g_balance_electro_secondary_speed 900
 +set g_balance_electro_secondary_speed_up 200
 +set g_balance_electro_secondary_speed_z 0
 +set g_balance_electro_secondary_spread 0
 +set g_balance_electro_secondary_lifetime 5
 +set g_balance_electro_secondary_refire 0.3
 +set g_balance_electro_secondary_refire2 0
 +set g_balance_electro_secondary_animtime 0.3
 +set g_balance_electro_secondary_ammo 2
 +set g_balance_electro_secondary_health 5
 +set g_balance_electro_secondary_damageforcescale 4
 +set g_balance_electro_secondary_damagedbycontents 0
 +set g_balance_electro_secondary_count 1
 +set g_balance_electro_secondary_bouncefactor 0.5
 +set g_balance_electro_secondary_bouncestop 0.075
 +set g_balance_electro_combo_damage 80
 +set g_balance_electro_combo_edgedamage 0
 +set g_balance_electro_combo_force 200
 +set g_balance_electro_combo_radius 250
 +set g_balance_electro_combo_comboradius 0
 +set g_balance_electro_combo_speed 2000
 +set g_balance_electro_combo_safeammocheck 0
 +set g_balance_electro_switchdelay_drop 0.15
 +set g_balance_electro_switchdelay_raise 0.15
 +set g_balance_electro_reload_ammo 0 //default: 20
 +set g_balance_electro_reload_time 2
 +// }}}
 +// {{{ lightning
 +set g_balance_lightning_primary_ammo 5
 +set g_balance_lightning_primary_animtime 0.2
 +set g_balance_lightning_primary_damage 100
 +set g_balance_lightning_primary_edgedamage 0
 +set g_balance_lightning_primary_falloff_mindist 0
 +set g_balance_lightning_primary_falloff_maxdist 0
 +set g_balance_lightning_primary_falloff_halflifedist 0
 +set g_balance_lightning_primary_force 425
 +set g_balance_lightning_primary_lifetime 0
 +set g_balance_lightning_primary_radius 850
 +set g_balance_lightning_primary_range 800
 +set g_balance_lightning_primary_refire 0.4
 +set g_balance_lightning_primary_speed 0
 +set g_balance_lightning_primary_spread 0
 +set g_balance_lightning_secondary_ammo 5
 +set g_balance_lightning_secondary_animtime 0.5
 +set g_balance_lightning_secondary_damage 100
 +set g_balance_lightning_secondary_damageforcescale 4
 +set g_balance_lightning_secondary_edgedamage 80
 +set g_balance_lightning_secondary_flyingdamage 1
 +set g_balance_lightning_secondary_flyingforce -80
 +set g_balance_lightning_secondary_flyingradius 200
 +set g_balance_lightning_secondary_force -200
 +set g_balance_lightning_secondary_health 1
 +set g_balance_lightning_secondary_lifetime 30
 +set g_balance_lightning_secondary_radius 300
 +set g_balance_lightning_secondary_refire 5
 +set g_balance_lightning_secondary_speed 600
 +// }}}
 +// {{{ crylink
 +set g_balance_crylink_primary_damage 18
 +set g_balance_crylink_primary_edgedamage 0
 +set g_balance_crylink_primary_force -55
 +set g_balance_crylink_primary_radius 80
 +set g_balance_crylink_primary_speed 7000
 +set g_balance_crylink_primary_spread 0.03
 +set g_balance_crylink_primary_shots 4
 +set g_balance_crylink_primary_bounces 1
 +set g_balance_crylink_primary_refire 0.4
 +set g_balance_crylink_primary_animtime 0.3
 +set g_balance_crylink_primary_ammo 2
 +set g_balance_crylink_primary_bouncedamagefactor 0.5
 +set g_balance_crylink_primary_joindelay 0
 +set g_balance_crylink_primary_joinspread 0
 +set g_balance_crylink_primary_joinexplode 0
 +set g_balance_crylink_primary_joinexplode_damage 0
 +set g_balance_crylink_primary_joinexplode_edgedamage 0
 +set g_balance_crylink_primary_joinexplode_radius 0
 +set g_balance_crylink_primary_joinexplode_force 0
 +set g_balance_crylink_primary_linkexplode 1
 +
 +set g_balance_crylink_primary_middle_lifetime 5 // range: 35000 full, fades to 70000
 +set g_balance_crylink_primary_middle_fadetime 5
 +set g_balance_crylink_primary_other_lifetime 0.1 // range: 700 full, fades to 2450
 +set g_balance_crylink_primary_other_fadetime 0.25
 +
 +set g_balance_crylink_secondary 1
 +set g_balance_crylink_secondary_damage 18
 +set g_balance_crylink_secondary_edgedamage 0
 +set g_balance_crylink_secondary_force -55
 +set g_balance_crylink_secondary_radius 3
 +set g_balance_crylink_secondary_speed 7000
 +set g_balance_crylink_secondary_spread 0.08
 +set g_balance_crylink_secondary_spreadtype 0
 +set g_balance_crylink_secondary_shots 7
 +set g_balance_crylink_secondary_bounces 0
 +set g_balance_crylink_secondary_refire 0.5
 +set g_balance_crylink_secondary_animtime 0.3
 +set g_balance_crylink_secondary_ammo 2
 +set g_balance_crylink_secondary_bouncedamagefactor 0.5
 +set g_balance_crylink_secondary_joindelay 0
 +set g_balance_crylink_secondary_joinspread 0
 +set g_balance_crylink_secondary_joinexplode 0
 +set g_balance_crylink_secondary_joinexplode_damage 0
 +set g_balance_crylink_secondary_joinexplode_edgedamage 0
 +set g_balance_crylink_secondary_joinexplode_radius 0
 +set g_balance_crylink_secondary_joinexplode_force 0
 +set g_balance_crylink_secondary_linkexplode 1
 +
 +set g_balance_crylink_secondary_middle_lifetime 5 // range: 35000 full, fades to 70000
 +set g_balance_crylink_secondary_middle_fadetime 5
 +set g_balance_crylink_secondary_line_lifetime 2 // range: 35000 full, fades to 70000
 +set g_balance_crylink_secondary_line_fadetime 2
 +
 +set g_balance_crylink_switchdelay_drop 0.15
 +set g_balance_crylink_switchdelay_raise 0.15
 +
 +set g_balance_crylink_reload_ammo 0 //default: 10
 +set g_balance_crylink_reload_time 2
 +// }}}
 +// {{{ nex
 +set g_balance_nex_primary_damage 100
 +set g_balance_nex_primary_force 600
 +set g_balance_nex_primary_refire 1.5
 +set g_balance_nex_primary_animtime 0.3
 +set g_balance_nex_primary_ammo 5
 +set g_balance_nex_primary_damagefalloff_mindist 0
 +set g_balance_nex_primary_damagefalloff_maxdist 0
 +set g_balance_nex_primary_damagefalloff_halflife 0
 +set g_balance_nex_primary_damagefalloff_forcehalflife 0
 +
 +set g_balance_nex_secondary 0
 +set g_balance_nex_secondary_charge 0
 +set g_balance_nex_secondary_charge_rate 0.1
 +set g_balance_nex_secondary_chargepool 0
 +set g_balance_nex_secondary_chargepool_regen 0.15
 +set g_balance_nex_secondary_chargepool_pause_regen 1
 +set g_balance_nex_secondary_chargepool_pause_health_regen 1
 +set g_balance_nex_secondary_damage 100
 +set g_balance_nex_secondary_force 600
 +set g_balance_nex_secondary_refire 1.5
 +set g_balance_nex_secondary_animtime 0.3
 +set g_balance_nex_secondary_ammo 5
 +set g_balance_nex_secondary_damagefalloff_mindist 0
 +set g_balance_nex_secondary_damagefalloff_maxdist 0
 +set g_balance_nex_secondary_damagefalloff_halflife 0
 +set g_balance_nex_secondary_damagefalloff_forcehalflife 0
 +
 +set g_balance_nex_charge 0
 +set g_balance_nex_charge_mindmg 40
 +set g_balance_nex_charge_start 0
 +set g_balance_nex_charge_rate 0.1
 +set g_balance_nex_charge_animlimit 0.5
 +set g_balance_nex_charge_limit 0.5
 +set g_balance_nex_charge_rot_rate 0
 +set g_balance_nex_charge_rot_pause 0 // Dont rot down until this long after release of charge button
 +set g_balance_nex_charge_shot_multiplier 0.5
 +set g_balance_nex_charge_velocity_rate 0.2
 +set g_balance_nex_charge_minspeed 400
 +set g_balance_nex_charge_maxspeed 1000
 +
 +set g_balance_nex_switchdelay_drop 0.15
 +set g_balance_nex_switchdelay_raise 0.15
 +
 +set g_balance_nex_reload_ammo 0 //default: 25
 +set g_balance_nex_reload_time 2
 +// }}}
 +// {{{ minstanex
 +set g_balance_minstanex_refire 1
 +set g_balance_minstanex_animtime 0.3
 +set g_balance_minstanex_ammo 10
 +set g_balance_minstanex_laser_ammo 0
 +set g_balance_minstanex_laser_animtime 0.3
 +set g_balance_minstanex_laser_refire 0.7
 +set g_balance_minstanex_switchdelay_drop 0.15
 +set g_balance_minstanex_switchdelay_raise 0.15
 +set g_balance_minstanex_reload_ammo 0 //default: 50
 +set g_balance_minstanex_reload_time 2
 +// }}}
 +// {{{ hagar
 +set g_balance_hagar_primary_damage 37
 +set g_balance_hagar_primary_edgedamage 15
 +set g_balance_hagar_primary_force 100
 +set g_balance_hagar_primary_health 0
 +set g_balance_hagar_primary_damageforcescale 0
 +set g_balance_hagar_primary_radius 65
 +set g_balance_hagar_primary_spread 0.010
 +set g_balance_hagar_primary_speed 3000
 +set g_balance_hagar_primary_lifetime 30
 +set g_balance_hagar_primary_refire 0.15
 +set g_balance_hagar_primary_ammo 1
 +set g_balance_hagar_secondary 1
 +set g_balance_hagar_secondary_load 0
 +set g_balance_hagar_secondary_load_speed 0.6
 +set g_balance_hagar_secondary_load_spread 0.075
 +set g_balance_hagar_secondary_load_spread_bias 0.5
 +set g_balance_hagar_secondary_load_max 4
 +set g_balance_hagar_secondary_load_hold 0
 +set g_balance_hagar_secondary_load_releasedeath 1
 +set g_balance_hagar_secondary_load_abort 1
 +set g_balance_hagar_secondary_load_linkexplode 0
 +set g_balance_hagar_secondary_load_animtime 0.2
 +set g_balance_hagar_secondary_damage 37
 +set g_balance_hagar_secondary_edgedamage 15
 +set g_balance_hagar_secondary_force 100
 +set g_balance_hagar_secondary_health 0
 +set g_balance_hagar_secondary_damageforcescale 0
 +set g_balance_hagar_secondary_radius 65
 +set g_balance_hagar_secondary_spread 0.015
 +set g_balance_hagar_secondary_speed 1400
 +set g_balance_hagar_secondary_lifetime_min 30
 +set g_balance_hagar_secondary_lifetime_rand 0
 +set g_balance_hagar_secondary_refire 0.15
 +set g_balance_hagar_secondary_ammo 1
 +set g_balance_hagar_switchdelay_drop 0.15
 +set g_balance_hagar_switchdelay_raise 0.15
 +set g_balance_hagar_reload_ammo 0 //default: 25
 +set g_balance_hagar_reload_time 2
 +// }}}
 +// {{{ rocketlauncher
 +set g_balance_rocketlauncher_damage 105
 +set g_balance_rocketlauncher_edgedamage 40
 +set g_balance_rocketlauncher_force 600
 +set g_balance_rocketlauncher_radius 150
 +set g_balance_rocketlauncher_speed 850
 +set g_balance_rocketlauncher_speedaccel 0
 +set g_balance_rocketlauncher_speedstart 850
 +set g_balance_rocketlauncher_lifetime 30
 +set g_balance_rocketlauncher_refire 1
 +set g_balance_rocketlauncher_animtime 0.3
 +set g_balance_rocketlauncher_ammo 3
 +set g_balance_rocketlauncher_health 40
 +set g_balance_rocketlauncher_damageforcescale 4
 +set g_balance_rocketlauncher_detonatedelay 0.2 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time
 +set g_balance_rocketlauncher_guiderate 90 // max degrees per second
 +set g_balance_rocketlauncher_guideratedelay 0.01 // immediate
 +set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic)
 +set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in
 +set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again
 +set g_balance_rocketlauncher_remote_damage 105
 +set g_balance_rocketlauncher_remote_edgedamage 40
 +set g_balance_rocketlauncher_remote_radius 150
 +set g_balance_rocketlauncher_remote_force 600
 +set g_balance_rocketlauncher_switchdelay_drop 0.15
 +set g_balance_rocketlauncher_switchdelay_raise 0.15
 +set g_balance_rocketlauncher_reload_ammo 0 //default: 25
 +set g_balance_rocketlauncher_reload_time 2
 +// }}}
 +// {{{ porto
 +set g_balance_porto_primary_refire 1.5
 +set g_balance_porto_primary_animtime 0.3
 +set g_balance_porto_primary_speed 2000
 +set g_balance_porto_primary_lifetime 30
 +set g_balance_porto_secondary 0
 +set g_balance_porto_secondary_refire 1.5
 +set g_balance_porto_secondary_animtime 0.3
 +set g_balance_porto_secondary_speed 2000
 +set g_balance_porto_secondary_lifetime 30
 +set g_balance_porto_switchdelay_drop 0.15
 +set g_balance_porto_switchdelay_raise 0.15
 +set g_balance_portal_health 200 // these get recharged whenever the portal is used
 +set g_balance_portal_lifetime 15 // these get recharged whenever the portal is used
 +// }}}
 +// {{{ hook
 +set g_balance_hook_primary_fuel 5 // hook monkeys set 0
++set g_balance_hook_primary_refire 0.2 // hook monkeys set 0
 +set g_balance_hook_primary_animtime 0.3 // good shoot anim
 +set g_balance_hook_primary_hooked_time_max 0 // infinite
 +set g_balance_hook_primary_hooked_time_free 2 // 2s being hooked are free
 +set g_balance_hook_primary_hooked_fuel 5 // fuel per second hooked
 +set g_balance_hook_secondary_damage 25 // not much
 +set g_balance_hook_secondary_edgedamage 5 // not much
 +set g_balance_hook_secondary_radius 500 // LOTS
 +set g_balance_hook_secondary_force -2000 // LOTS
 +set g_balance_hook_secondary_ammo 50 // a whole pack
 +set g_balance_hook_secondary_lifetime 30 // infinite
 +set g_balance_hook_secondary_speed 0 // not much throwing
 +set g_balance_hook_secondary_gravity 5 // fast falling
 +set g_balance_hook_secondary_refire 3 // don't drop too many bombs...
 +set g_balance_hook_secondary_animtime 0.3 // good shoot anim
 +set g_balance_hook_secondary_power 3 // effect behaves like a square function
 +set g_balance_hook_secondary_duration 1.5 // effect runs for three seconds
 +set g_balance_hook_secondary_health 0
 +set g_balance_hook_secondary_damageforcescale 0
 +set g_balance_hook_switchdelay_drop 0.15
 +set g_balance_hook_switchdelay_raise 0.15
 +// }}}
 +// {{{ tuba
 +set g_balance_tuba_refire 0.05
 +set g_balance_tuba_animtime 0.05
 +set g_balance_tuba_attenuation 0.5
 +set g_balance_tuba_volume 1
 +set g_balance_tuba_fadetime 0.25
 +set g_balance_tuba_damage 5
 +set g_balance_tuba_edgedamage 0
 +set g_balance_tuba_radius 200
 +set g_balance_tuba_force 40
 +set g_balance_tuba_pitchstep 6
 +set g_balance_tuba_switchdelay_drop 0.15
 +set g_balance_tuba_switchdelay_raise 0.15
 +// }}}
 +// {{{ fireball
 +set g_balance_fireball_primary_animtime 0.15
 +set g_balance_fireball_primary_bfgdamage 100
 +set g_balance_fireball_primary_bfgforce 0
 +set g_balance_fireball_primary_bfgradius 1000
 +set g_balance_fireball_primary_damage 200
 +set g_balance_fireball_primary_damageforcescale 4
 +set g_balance_fireball_primary_edgedamage 0
 +set g_balance_fireball_primary_force 700
 +set g_balance_fireball_primary_health 50
 +set g_balance_fireball_primary_laserburntime 0.5
 +set g_balance_fireball_primary_laserdamage 80
 +set g_balance_fireball_primary_laseredgedamage 20
 +set g_balance_fireball_primary_laserradius 256
 +set g_balance_fireball_primary_lifetime 15
 +set g_balance_fireball_primary_radius 200
 +set g_balance_fireball_primary_refire 5
 +set g_balance_fireball_primary_refire2 0
 +set g_balance_fireball_primary_speed 650
 +set g_balance_fireball_primary_spread 0
 +set g_balance_fireball_secondary_animtime 0.3
 +set g_balance_fireball_secondary_damage 40
 +set g_balance_fireball_secondary_damageforcescale 4
 +set g_balance_fireball_secondary_damagetime 5
 +set g_balance_fireball_secondary_force 100
 +set g_balance_fireball_secondary_laserburntime 0.5
 +set g_balance_fireball_secondary_laserdamage 50
 +set g_balance_fireball_secondary_laseredgedamage 20
 +set g_balance_fireball_secondary_laserradius 110
 +set g_balance_fireball_secondary_lifetime 7
 +set g_balance_fireball_secondary_refire 2
 +set g_balance_fireball_secondary_speed 900
 +set g_balance_fireball_secondary_speed_up 100
 +set g_balance_fireball_secondary_speed_z 0
 +set g_balance_fireball_secondary_spread 0
 +set g_balance_fireball_switchdelay_drop 0.15
 +set g_balance_fireball_switchdelay_raise 0.15
 +// }}}
index 844bdd5,0000000..d5b6a9a
mode 100644,000000..100644
--- /dev/null
@@@ -1,779 -1,0 +1,780 @@@
- set g_balance_hook_primary_refire 0 // hook monkeys set 0
 +g_mod_balance FruitieX
 +
 +// {{{ starting gear
 +set g_start_weapon_laser -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_shotgun -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_uzi -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_grenadelauncher -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_electro -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_crylink -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_nex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_hagar -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_rocketlauncher -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_minstanex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_porto -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_hook -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_tuba -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_fireball -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_balance_health_start 125
 +set g_balance_armor_start 0
 +set g_start_ammo_shells 20
 +set g_start_ammo_nails 0
 +set g_start_ammo_rockets 0
 +set g_start_ammo_cells 0
 +set g_start_ammo_fuel 0
 +set g_warmup_start_health 200 "starting values when being in warmup-stage"
 +set g_warmup_start_armor 100 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_shells 50 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_nails 150 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_rockets 50 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_cells 50 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_fuel 0 "starting values when being in warmup-stage"
 +set g_lms_start_health 200
 +set g_lms_start_armor 100
 +set g_lms_start_ammo_shells 30
 +set g_lms_start_ammo_nails 200
 +set g_lms_start_ammo_rockets 150
 +set g_lms_start_ammo_cells 150
 +set g_lms_start_ammo_fuel 0
 +set g_balance_nix_roundtime 25
 +set g_balance_nix_incrtime 1.6
 +set g_balance_nix_ammo_shells 15
 +set g_balance_nix_ammo_nails 45
 +set g_balance_nix_ammo_rockets 15
 +set g_balance_nix_ammo_cells 15
 +set g_balance_nix_ammo_fuel 0
 +set g_balance_nix_ammoincr_shells 2
 +set g_balance_nix_ammoincr_nails 6
 +set g_balance_nix_ammoincr_rockets 2
 +set g_balance_nix_ammoincr_cells 2
 +set g_balance_nix_ammoincr_fuel 2
 +// }}}
 +
 +// {{{ pickup items
 +set g_pickup_ammo_anyway 1
 +set g_pickup_weapons_anyway 1
 +set g_pickup_shells 20
 +set g_pickup_shells_weapon 10
 +set g_pickup_shells_max 45
 +set g_pickup_nails 120
 +set g_pickup_nails_weapon 60
 +set g_pickup_nails_max 300
 +set g_pickup_rockets 25
 +set g_pickup_rockets_weapon 15
 +set g_pickup_rockets_max 150
 +set g_pickup_cells 30
 +set g_pickup_cells_weapon 20
 +set g_pickup_cells_max 150
 +set g_pickup_fuel 25
 +set g_pickup_fuel_weapon 15
 +set g_pickup_fuel_jetpack 50
 +set g_pickup_fuel_max 100
 +set g_pickup_armorsmall 5
 +set g_pickup_armorsmall_max 150
 +set g_pickup_armorsmall_anyway 1
 +set g_pickup_armormedium 25
 +set g_pickup_armormedium_max 50
 +set g_pickup_armormedium_anyway 0
 +set g_pickup_armorbig 50
 +set g_pickup_armorbig_max 75; // LOG: to allow a little more armor from medium armor
 +set g_pickup_armorbig_anyway 0
 +set g_pickup_armorlarge 100
 +set g_pickup_armorlarge_max 150
 +set g_pickup_armorlarge_anyway 1
 +set g_pickup_healthsmall 5
 +set g_pickup_healthsmall_max 250
 +set g_pickup_healthsmall_anyway 1
 +set g_pickup_healthmedium 25
 +set g_pickup_healthmedium_max 100
 +set g_pickup_healthmedium_anyway 0
 +set g_pickup_healthlarge 50
 +set g_pickup_healthlarge_max 150
 +set g_pickup_healthlarge_anyway 0
 +set g_pickup_healthmega 100
 +set g_pickup_healthmega_max 250
 +set g_pickup_healthmega_anyway 1
 +set g_pickup_respawntime_short 15
 +set g_pickup_respawntime_medium 20
 +set g_pickup_respawntime_long 30
 +set g_pickup_respawntime_powerup 120
 +set g_pickup_respawntime_weapon 10
 +set g_pickup_respawntime_superweapon 120
 +set g_pickup_respawntime_ammo 25
 +set g_pickup_respawntimejitter_short 0
 +set g_pickup_respawntimejitter_medium 0
 +set g_pickup_respawntimejitter_long 0
 +set g_pickup_respawntimejitter_powerup 10
 +set g_pickup_respawntimejitter_weapon 0
 +set g_pickup_respawntimejitter_superweapon 10
 +set g_pickup_respawntimejitter_ammo 0
 +// }}}
 +
 +// {{{ regen/rot
 +set g_balance_health_regen 0.05
 +set g_balance_health_regenlinear 0
 +set g_balance_pause_health_regen 5
 +set g_balance_pause_health_regen_spawn 0
 +set g_balance_health_rot 0
 +set g_balance_health_rotlinear 1
 +set g_balance_pause_health_rot 1
 +set g_balance_pause_health_rot_spawn 0
 +set g_balance_health_regenstable 100
 +set g_balance_health_rotstable 100
 +set g_balance_health_limit 999
 +set g_balance_armor_regen 0
 +set g_balance_armor_regenlinear 0
 +set g_balance_armor_rot 0
 +set g_balance_armor_rotlinear 1
 +set g_balance_pause_armor_rot 1
 +set g_balance_pause_armor_rot_spawn 0
 +set g_balance_armor_regenstable 100
 +set g_balance_armor_rotstable 100
 +set g_balance_armor_limit 999
 +set g_balance_armor_blockpercent 0.7
 +set g_balance_fuel_regen 0.1 "fuel regeneration (only applies if the player owns IT_FUEL_REGEN)"
 +set g_balance_fuel_regenlinear 0
 +set g_balance_pause_fuel_regen 2 // other than this, fuel uses the health regen counter
 +set g_balance_fuel_rot 0.05
 +set g_balance_fuel_rotlinear 0
 +set g_balance_pause_fuel_rot 5
 +set g_balance_pause_fuel_rot_spawn 10
 +set g_balance_fuel_regenstable 50
 +set g_balance_fuel_rotstable 100
 +set g_balance_fuel_limit 999
 +// }}}
 +
 +// {{{ misc
 +set g_balance_selfdamagepercent 0.65
 +set g_weaponspeedfactor 1 "weapon projectile speed multiplier"
 +set g_weaponratefactor 1 "weapon fire rate multiplier"
 +set g_weapondamagefactor 1 "weapon damage multiplier"
 +set g_weaponforcefactor 1 "weapon force multiplier"
 +set g_weaponspreadfactor 1 "weapon spread multiplier"
 +set g_balance_firetransfer_time 0.9
 +set g_balance_firetransfer_damage 0.8
 +set g_throughfloor_damage 0.7
 +set g_throughfloor_force 0.8
 +set g_projectiles_damage 2
 +// possible values:
 +// -2: absolutely no damage to projectiles (no exceptions)
 +// -1: no damage other than the exceptions (electro combo, hagar join explode, ML mines)
 +// 0: only damage from contents (lava/slime) or exceptions
 +// 1: only self damage or damage from contents or exceptions
 +// 2: allow all damage to projectiles normally
 +set g_projectiles_keep_owner 0
 +set g_projectiles_newton_style 2
 +// possible values:
 +// 0: absolute velocity projectiles (like Quake)
 +// 1: relative velocity projectiles, "Newtonian" (like Tribes 2)
 +// 2: relative velocity projectiles, but aim is precorrected so projectiles hit the crosshair (note: strafe rockets then are SLOWER than ones shot while standing, happens in 1 too when aiming correctly which is hard)
 +set g_projectiles_newton_style_2_minfactor 0.7
 +set g_projectiles_newton_style_2_maxfactor 5
 +set g_projectiles_spread_style 7
 +// possible values:
 +// 0: forward + solid sphere (like Quake) - varies velocity
 +// 1: forward + flattened solid sphere
 +// 2: forward + solid circle
 +// 3: forward + normal distribution 3D - varies velocity
 +// 4: forward + normal distribution on a plane
 +// 5: forward + circle with 1-r falloff
 +// 6: forward + circle with 1-r^2 falloff
 +// 7: forward + circle with (1-r)(2-r) falloff
 +set g_balance_falldamage_deadminspeed 150
 +set g_balance_falldamage_minspeed 800
 +set g_balance_falldamage_factor 0.20
 +set g_balance_falldamage_maxdamage 15
 +set g_balance_damagepush_speedfactor 2.5
 +set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage with playerdamage/projectiledamage
 +set g_balance_contents_drowndelay 10 // time under water before a player begins drowning
 +set g_balance_contents_playerdamage_drowning 20 // damage per second for while player is drowning
 +set g_balance_contents_playerdamage_lava 50 // damage per second for while player is inside lava
 +set g_balance_contents_playerdamage_slime 30 // damage per second for while player is inside slime
 +set g_balance_contents_projectiledamage 10000 // instantly kill projectiles upon touching lava/slime
 +set g_maxpushtime 8.0 "timeout for kill credit when your damage knocks someone into a death trap"
 +// }}}
 +
 +// {{{ powerups
 +set g_balance_powerup_invincible_takedamage 0.6
 +set g_balance_powerup_invincible_time 30
 +set g_balance_powerup_strength_damage 3
 +set g_balance_powerup_strength_force 4
 +set g_balance_powerup_strength_time 30
 +set g_balance_powerup_strength_selfdamage 1.5
 +set g_balance_powerup_strength_selfforce 1.5
 +set g_balance_superweapons_time 30
 +// }}}
 +
 +// {{{ jetpack/hook
 +set g_jetpack_antigravity 0.8 "factor of gravity compensation of the jetpack"
 +set g_jetpack_acceleration_side 1200 "acceleration of the jetpack in xy direction"
 +set g_jetpack_acceleration_up 600 "acceleration of the jetpack in z direction (note: you have to factor in gravity here, if antigravity is not 1)"
 +set g_jetpack_maxspeed_side 1500 "max speed of the jetpack in xy direction"
 +set g_jetpack_maxspeed_up 600 "max speed of the jetpack in z direction"
 +set g_jetpack_fuel 8 "fuel per second for jetpack"
 +set g_jetpack_attenuation 2 "jetpack sound attenuation"
 +
 +set g_grappling_hook_tarzan 2 // 2: can also pull players
 +set g_balance_grapplehook_speed_fly 1800
 +set g_balance_grapplehook_speed_pull 2000
 +set g_balance_grapplehook_force_rubber 2000
 +set g_balance_grapplehook_force_rubber_overstretch 1000
 +set g_balance_grapplehook_length_min 50
 +set g_balance_grapplehook_stretch 50
 +set g_balance_grapplehook_airfriction 0.2
 +set g_balance_grapplehook_health 130
 +set g_balance_grapplehook_damagedbycontents 0
++set g_balance_grapplehook_refire 0.2
 +// }}}
 +
 +// {{{ weapon properties
 +// {{{ laser
 +set g_balance_laser_melee_animtime 0.3
 +set g_balance_laser_melee_damage 80
 +set g_balance_laser_melee_delay 0.25
 +set g_balance_laser_melee_force 200
 +set g_balance_laser_melee_multihit 1
 +set g_balance_laser_melee_no_doubleslap 1
 +set g_balance_laser_melee_nonplayerdamage 40
 +set g_balance_laser_melee_range 120
 +set g_balance_laser_melee_refire 1.25
 +set g_balance_laser_melee_swing_side 120
 +set g_balance_laser_melee_swing_up 30
 +set g_balance_laser_melee_time 0.15
 +set g_balance_laser_melee_traces 10
 +
 +set g_balance_laser_primary 1 // 0 = shockwave attack, 1 = projectile primary
 +set g_balance_laser_primary_damage 20 // dps 33, hope that's not too high
 +set g_balance_laser_primary_edgedamage 20
 +set g_balance_laser_primary_force 150 // this looks insanely low, but actually isn't with zscale and velocitybias
 +set g_balance_laser_primary_radius 60
 +set g_balance_laser_primary_speed 5000
 +set g_balance_laser_primary_spread 0
 +set g_balance_laser_primary_refire 0.6
 +set g_balance_laser_primary_animtime 0.4
 +set g_balance_laser_primary_lifetime 5
 +set g_balance_laser_primary_shotangle 0
 +set g_balance_laser_primary_delay 0
 +set g_balance_laser_primary_force_zscale 2 // 300 upforce
 +set g_balance_laser_primary_force_velocitybias 0.3
 +set g_balance_laser_primary_force_other_scale 2.5 // force 375 when pushing others around
 +
 +set g_balance_laser_secondary 0 // 0 = switch away to last used weapon, 1 = projectile secondary, 2 = melee secondary
 +set g_balance_laser_secondary_damage 200 // dps
 +set g_balance_laser_secondary_edgedamage 0
 +set g_balance_laser_secondary_force 1300
 +set g_balance_laser_secondary_radius 60
 +set g_balance_laser_secondary_speed 0
 +set g_balance_laser_secondary_spread 0
 +set g_balance_laser_secondary_refire 0.066
 +set g_balance_laser_secondary_animtime 0.066
 +set g_balance_laser_secondary_lifetime 0
 +set g_balance_laser_secondary_shotangle 0
 +set g_balance_laser_secondary_delay 0
 +set g_balance_laser_secondary_force_zscale 1.25
 +set g_balance_laser_secondary_force_velocitybias 0
 +set g_balance_laser_secondary_force_other_scale 0
 +
 +set g_balance_laser_shockwave_damage 20
 +set g_balance_laser_shockwave_distance 2000
 +set g_balance_laser_shockwave_edgedamage 0
 +set g_balance_laser_shockwave_force 200
 +set g_balance_laser_shockwave_force_forwardbias 50
 +set g_balance_laser_shockwave_force_zscale 1.5
 +set g_balance_laser_shockwave_jump_damage 20
 +set g_balance_laser_shockwave_jump_edgedamage 0
 +set g_balance_laser_shockwave_jump_force 300
 +set g_balance_laser_shockwave_jump_force_velocitybias 0
 +set g_balance_laser_shockwave_jump_force_zscale 1.25
 +set g_balance_laser_shockwave_jump_multiplier_accuracy 0.5
 +set g_balance_laser_shockwave_jump_multiplier_distance 0.5
 +set g_balance_laser_shockwave_jump_multiplier_min 0
 +set g_balance_laser_shockwave_jump_radius 150
 +set g_balance_laser_shockwave_multiplier_accuracy 0.5
 +set g_balance_laser_shockwave_multiplier_distance 0.5
 +set g_balance_laser_shockwave_multiplier_min 0
 +set g_balance_laser_shockwave_splash_damage 15
 +set g_balance_laser_shockwave_splash_edgedamage 0
 +set g_balance_laser_shockwave_splash_force 100
 +set g_balance_laser_shockwave_splash_force_forwardbias 50
 +set g_balance_laser_shockwave_splash_multiplier_accuracy 0.5
 +set g_balance_laser_shockwave_splash_multiplier_distance 0.5
 +set g_balance_laser_shockwave_splash_multiplier_min 0
 +set g_balance_laser_shockwave_splash_radius 70
 +set g_balance_laser_shockwave_spread_max 100
 +set g_balance_laser_shockwave_spread_min 20
 +
 +set g_balance_laser_switchdelay_drop 0.15
 +set g_balance_laser_switchdelay_raise 0.15
 +set g_balance_laser_reload_ammo 0 //default: 6
 +set g_balance_laser_reload_time 2
 +// }}}
 +// {{{ shotgun
 +set g_balance_shotgun_primary_bullets 18
 +set g_balance_shotgun_primary_damage 3.5 // LOG: changed from 4 to 3.5, total damage 63
 +set g_balance_shotgun_primary_force 20
 +set g_balance_shotgun_primary_spread 0.16 // LOG: changed from 0.18 -> 0.16 to compensate a little for lower damage
 +set g_balance_shotgun_primary_refire 1
 +set g_balance_shotgun_primary_animtime 0.3
 +set g_balance_shotgun_primary_ammo 1
 +set g_balance_shotgun_primary_solidpenetration 3.8
 +set g_balance_shotgun_secondary 1
 +set g_balance_shotgun_secondary_melee_delay 0.25 // 0.35 was too slow
 +set g_balance_shotgun_secondary_melee_range 120
 +set g_balance_shotgun_secondary_melee_swing_side 120
 +set g_balance_shotgun_secondary_melee_swing_up 30
 +set g_balance_shotgun_secondary_melee_time 0.15
 +set g_balance_shotgun_secondary_melee_traces 10
 +set g_balance_shotgun_secondary_melee_no_doubleslap 1
 +set g_balance_shotgun_secondary_melee_nonplayerdamage 0
 +set g_balance_shotgun_secondary_melee_multihit 1
 +set g_balance_shotgun_secondary_damage 110
 +set g_balance_shotgun_secondary_force 150
 +set g_balance_shotgun_secondary_refire 1.1
 +set g_balance_shotgun_secondary_animtime 1
 +set g_balance_shotgun_switchdelay_drop 0.15
 +set g_balance_shotgun_switchdelay_raise 0.15
 +set g_balance_shotgun_reload_ammo 0 //default: 5
 +set g_balance_shotgun_reload_time 2
 +// }}}
 +// {{{ uzi
 +set g_balance_uzi_mode 1                              // Activates varible spread for sustained & burst mode secondary
 +set g_balance_uzi_spread_min 0.02
 +set g_balance_uzi_spread_max 0.3 // LOG: 0.6 -> 0.3
 +set g_balance_uzi_spread_add 0.008
 +
 +set g_balance_uzi_burst 3                             // # of bullets in a burst (if set to 2 or more)
 +set g_balance_uzi_burst_animtime 0.45
 +set g_balance_uzi_burst_refire 0.05           // refire between burst bullets
 +set g_balance_uzi_burst_refire2 0.45  // refire after burst
 +set g_balance_uzi_burst_spread 0.07
 +set g_balance_uzi_burst_damage 25
 +set g_balance_uzi_burst_force 50
 +set g_balance_uzi_burst_ammo 3
 +
 +set g_balance_uzi_first 1
 +set g_balance_uzi_first_damage 15 / f/ LOG: 22 -> 15
 +set g_balance_uzi_first_force 50
 +set g_balance_uzi_first_spread 0.03
 +set g_balance_uzi_first_refire 0.2
 +set g_balance_uzi_first_ammo 2
 +
 +set g_balance_uzi_sustained_damage 12   // 120 dps
 +set g_balance_uzi_sustained_force 12
 +set g_balance_uzi_sustained_spread 0.06
 +set g_balance_uzi_sustained_refire 0.1
 +set g_balance_uzi_sustained_ammo 1
 +
 +set g_balance_uzi_solidpenetration 13.1
 +
 +set g_balance_uzi_switchdelay_drop 0.15
 +set g_balance_uzi_switchdelay_raise 0.15
 +
 +set g_balance_uzi_reload_ammo 0 //default: 30
 +set g_balance_uzi_reload_time 2
 +// }}}
 +// {{{ mortar
 +set g_balance_grenadelauncher_primary_type 0
 +set g_balance_grenadelauncher_primary_damage 44
 +set g_balance_grenadelauncher_primary_edgedamage 32
 +set g_balance_grenadelauncher_primary_force 300
 +set g_balance_grenadelauncher_primary_radius 115
 +set g_balance_grenadelauncher_primary_speed 1500
 +set g_balance_grenadelauncher_primary_speed_up 225
 +set g_balance_grenadelauncher_primary_speed_z 0
 +set g_balance_grenadelauncher_primary_spread 0
 +set g_balance_grenadelauncher_primary_lifetime 5
 +set g_balance_grenadelauncher_primary_lifetime2 0.65
 +set g_balance_grenadelauncher_primary_refire 0.8
 +set g_balance_grenadelauncher_primary_animtime 0.3
 +set g_balance_grenadelauncher_primary_ammo 2
 +set g_balance_grenadelauncher_primary_health 80
 +set g_balance_grenadelauncher_primary_damageforcescale 0
 +set g_balance_grenadelauncher_primary_remote_minbouncecnt 0
 +
 +set g_balance_grenadelauncher_secondary_type 1
 +set g_balance_grenadelauncher_secondary_damage 62
 +set g_balance_grenadelauncher_secondary_edgedamage 32
 +set g_balance_grenadelauncher_secondary_force 300
 +set g_balance_grenadelauncher_secondary_radius 150
 +set g_balance_grenadelauncher_secondary_speed 1000
 +set g_balance_grenadelauncher_secondary_speed_up 250
 +set g_balance_grenadelauncher_secondary_speed_z 0
 +set g_balance_grenadelauncher_secondary_spread 0
 +set g_balance_grenadelauncher_secondary_lifetime 3
 +set g_balance_grenadelauncher_secondary_lifetime_bounce 0
 +set g_balance_grenadelauncher_secondary_lifetime_stick 0.65
 +set g_balance_grenadelauncher_secondary_refire 0.8
 +set g_balance_grenadelauncher_secondary_animtime 0.3
 +set g_balance_grenadelauncher_secondary_ammo 2
 +set g_balance_grenadelauncher_secondary_health 40
 +set g_balance_grenadelauncher_secondary_damageforcescale 0
 +set g_balance_grenadelauncher_secondary_remote_detonateprimary 0
 +
 +set g_balance_grenadelauncher_bouncefactor 0.5
 +set g_balance_grenadelauncher_bouncestop 0.12
 +
 +set g_balance_grenadelauncher_switchdelay_drop 0.15
 +set g_balance_grenadelauncher_switchdelay_raise 0.15
 +
 +set g_balance_grenadelauncher_reload_ammo 0 //default: 12
 +set g_balance_grenadelauncher_reload_time 2
 +// }}}
 +// {{{ electro
 +set g_balance_electro_lightning 1
 +set g_balance_electro_primary_damage 100
 +set g_balance_electro_primary_edgedamage 0
 +set g_balance_electro_primary_force 425
 +set g_balance_electro_primary_force_up 125
 +set g_balance_electro_primary_radius 850
 +set g_balance_electro_primary_comboradius 150
 +set g_balance_electro_primary_speed 0
 +set g_balance_electro_primary_spread 0
 +set g_balance_electro_primary_lifetime 0
 +set g_balance_electro_primary_refire 0.4
 +set g_balance_electro_primary_animtime 0.2
 +set g_balance_electro_primary_ammo 5
 +set g_balance_electro_primary_range 800
 +set g_balance_electro_primary_falloff_mindist 0
 +set g_balance_electro_primary_falloff_maxdist 0
 +set g_balance_electro_primary_falloff_halflifedist 0
 +set g_balance_electro_secondary_damage 25
 +set g_balance_electro_secondary_edgedamage 0
 +set g_balance_electro_secondary_force 100
 +set g_balance_electro_secondary_radius 100
 +set g_balance_electro_secondary_speed 700
 +set g_balance_electro_secondary_speed_up 200
 +set g_balance_electro_secondary_speed_z 0
 +set g_balance_electro_secondary_spread 0.08
 +set g_balance_electro_secondary_lifetime 3.5
 +set g_balance_electro_secondary_refire 0.2
 +set g_balance_electro_secondary_refire2 2
 +set g_balance_electro_secondary_animtime 0.2
 +set g_balance_electro_secondary_ammo 2
 +set g_balance_electro_secondary_health 10
 +set g_balance_electro_secondary_damageforcescale 4
 +set g_balance_electro_secondary_damagedbycontents 0
 +set g_balance_electro_secondary_count 3
 +set g_balance_electro_secondary_bouncefactor 0.5
 +set g_balance_electro_secondary_bouncestop 0.075
 +set g_balance_electro_combo_damage 50
 +set g_balance_electro_combo_edgedamage 0
 +set g_balance_electro_combo_force 80
 +set g_balance_electro_combo_radius 250
 +set g_balance_electro_combo_comboradius 0
 +set g_balance_electro_combo_speed 400
 +set g_balance_electro_combo_safeammocheck 1
 +set g_balance_electro_switchdelay_drop 0.15
 +set g_balance_electro_switchdelay_raise 0.15
 +set g_balance_electro_reload_ammo 0 //default: 20
 +set g_balance_electro_reload_time 2
 +// }}}
 +// {{{ lightning
 +set g_balance_lightning_primary_ammo 5
 +set g_balance_lightning_primary_animtime 0.2
 +set g_balance_lightning_primary_damage 100
 +set g_balance_lightning_primary_edgedamage 0
 +set g_balance_lightning_primary_falloff_mindist 0
 +set g_balance_lightning_primary_falloff_maxdist 0
 +set g_balance_lightning_primary_falloff_halflifedist 0
 +set g_balance_lightning_primary_force 425
 +set g_balance_lightning_primary_lifetime 0
 +set g_balance_lightning_primary_radius 850
 +set g_balance_lightning_primary_range 800
 +set g_balance_lightning_primary_refire 0.4
 +set g_balance_lightning_primary_speed 0
 +set g_balance_lightning_primary_spread 0
 +set g_balance_lightning_secondary_ammo 5
 +set g_balance_lightning_secondary_animtime 0.5
 +set g_balance_lightning_secondary_damage 100
 +set g_balance_lightning_secondary_damageforcescale 4
 +set g_balance_lightning_secondary_edgedamage 80
 +set g_balance_lightning_secondary_flyingdamage 1
 +set g_balance_lightning_secondary_flyingforce -80
 +set g_balance_lightning_secondary_flyingradius 200
 +set g_balance_lightning_secondary_force -200
 +set g_balance_lightning_secondary_health 1
 +set g_balance_lightning_secondary_lifetime 30
 +set g_balance_lightning_secondary_radius 300
 +set g_balance_lightning_secondary_refire 5
 +set g_balance_lightning_secondary_speed 600
 +// }}}
 +// {{{ crylink
 +set g_balance_crylink_primary_damage 7 // LOG: 10 -> 7
 +set g_balance_crylink_primary_edgedamage 4 // LOG: 6 -> 4
 +set g_balance_crylink_primary_force 35
 +set g_balance_crylink_primary_radius 80
 +set g_balance_crylink_primary_speed 1500
 +set g_balance_crylink_primary_spread 0.05
 +set g_balance_crylink_primary_shots 7
 +set g_balance_crylink_primary_bounces 2
 +set g_balance_crylink_primary_refire 0.8
 +set g_balance_crylink_primary_animtime 0.3
 +set g_balance_crylink_primary_ammo 2
 +set g_balance_crylink_primary_bouncedamagefactor 0.2
 +set g_balance_crylink_primary_joindelay 0
 +set g_balance_crylink_primary_joinspread 0.2
 +set g_balance_crylink_primary_joinexplode 0
 +set g_balance_crylink_primary_joinexplode_damage 0
 +set g_balance_crylink_primary_joinexplode_edgedamage 0
 +set g_balance_crylink_primary_joinexplode_radius 0
 +set g_balance_crylink_primary_joinexplode_force 0
 +set g_balance_crylink_primary_linkexplode 1
 +
 +set g_balance_crylink_primary_middle_lifetime 5 // range: 10000 full, fades to 20000
 +set g_balance_crylink_primary_middle_fadetime 5
 +set g_balance_crylink_primary_other_lifetime 2 // range: 800 full, fades to 1300
 +set g_balance_crylink_primary_other_fadetime 0.25
 +
 +set g_balance_crylink_secondary 1
 +set g_balance_crylink_secondary_damage 5 // LOG: 8 -> 5
 +set g_balance_crylink_secondary_edgedamage 3
 +set g_balance_crylink_secondary_force 16 // LOG: 20 -> 16
 +set g_balance_crylink_secondary_radius 15 // LOG: 20 -> 15
 +set g_balance_crylink_secondary_speed 1250 // LOG: 1500 -> 1250
 +set g_balance_crylink_secondary_spread 0.1
 +set g_balance_crylink_secondary_spreadtype 0
 +set g_balance_crylink_secondary_shots 6
 +set g_balance_crylink_secondary_bounces 2
 +set g_balance_crylink_secondary_refire 0.9 // LOG: 0.8 -> 0.9
 +set g_balance_crylink_secondary_animtime 0.3
 +set g_balance_crylink_secondary_ammo 3 // LOG: 2 -> 3
 +set g_balance_crylink_secondary_bouncedamagefactor 0.4 // LOG: 0.2 -> 0.4
 +set g_balance_crylink_secondary_joindelay 0
 +set g_balance_crylink_secondary_joinspread 0.2
 +set g_balance_crylink_secondary_joinexplode 0
 +set g_balance_crylink_secondary_joinexplode_damage 0
 +set g_balance_crylink_secondary_joinexplode_edgedamage 0
 +set g_balance_crylink_secondary_joinexplode_radius 0
 +set g_balance_crylink_secondary_joinexplode_force 0
 +set g_balance_crylink_secondary_linkexplode 0
 +
 +set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to 10000
 +set g_balance_crylink_secondary_middle_fadetime 5
 +set g_balance_crylink_secondary_line_lifetime 2 // range: 4000 full, fades to 8000
 +set g_balance_crylink_secondary_line_fadetime 0.25
 +
 +set g_balance_crylink_switchdelay_drop 0.15
 +set g_balance_crylink_switchdelay_raise 0.15
 +
 +set g_balance_crylink_reload_ammo 0 //default: 10
 +set g_balance_crylink_reload_time 2
 +// }}}
 +// {{{ nex
 +set g_balance_nex_primary_damage 90
 +set g_balance_nex_primary_force 500
 +set g_balance_nex_primary_refire 1
 +set g_balance_nex_primary_animtime 0.3
 +set g_balance_nex_primary_ammo 5
 +set g_balance_nex_primary_damagefalloff_mindist 0
 +set g_balance_nex_primary_damagefalloff_maxdist 0
 +set g_balance_nex_primary_damagefalloff_halflife 0
 +set g_balance_nex_primary_damagefalloff_forcehalflife 0
 +
 +set g_balance_nex_secondary 0 // LOG: disable secondary
 +set g_balance_nex_secondary_charge 0 // LOG: disable secondary charge
 +set g_balance_nex_secondary_charge_rate 0.4
 +set g_balance_nex_secondary_chargepool 1
 +set g_balance_nex_secondary_chargepool_regen 0.25
 +set g_balance_nex_secondary_chargepool_pause_regen 2
 +set g_balance_nex_secondary_chargepool_pause_health_regen 0.5
 +set g_balance_nex_secondary_damage 0
 +set g_balance_nex_secondary_force 0
 +set g_balance_nex_secondary_refire 0
 +set g_balance_nex_secondary_animtime 0
 +set g_balance_nex_secondary_ammo 0.4 // full charge pool is 1, so it depletes in 2.5 secs
 +set g_balance_nex_secondary_damagefalloff_mindist 0
 +set g_balance_nex_secondary_damagefalloff_maxdist 0
 +set g_balance_nex_secondary_damagefalloff_halflife 0
 +set g_balance_nex_secondary_damagefalloff_forcehalflife 0
 +
 +set g_balance_nex_charge 1
 +set g_balance_nex_charge_mindmg 20
 +set g_balance_nex_charge_start 0.5
 +set g_balance_nex_charge_rate 0.5
 +set g_balance_nex_charge_animlimit 0.5
 +set g_balance_nex_charge_limit 1 // LOG: 0.5 -> 1 - allow to fully charge automaticaly
 +set g_balance_nex_charge_rot_rate 0 // LOG: 0.1 -> 0 - disable rot
 +set g_balance_nex_charge_rot_pause 0.5 // Dont rot down until this long after release of charge button
 +set g_balance_nex_charge_shot_multiplier 0
 +set g_balance_nex_charge_velocity_rate 0
 +set g_balance_nex_charge_minspeed 600
 +set g_balance_nex_charge_maxspeed 1000
 +
 +set g_balance_nex_switchdelay_drop 0.15
 +set g_balance_nex_switchdelay_raise 0.15
 +
 +set g_balance_nex_reload_ammo 0 //default: 25
 +set g_balance_nex_reload_time 2
 +// }}}
 +// {{{ minstanex
 +set g_balance_minstanex_refire 1
 +set g_balance_minstanex_animtime 0.50
 +set g_balance_minstanex_ammo 10
 +set g_balance_minstanex_laser_ammo 0
 +set g_balance_minstanex_laser_animtime 0.3
 +set g_balance_minstanex_laser_refire 0.6
 +set g_balance_minstanex_switchdelay_drop 0.15
 +set g_balance_minstanex_switchdelay_raise 0.15
 +set g_balance_minstanex_reload_ammo 0 //default: 50
 +set g_balance_minstanex_reload_time 2
 +// }}}
 +// {{{ hagar
 +set g_balance_hagar_primary_damage 14
 +set g_balance_hagar_primary_edgedamage 6
 +set g_balance_hagar_primary_force 70
 +set g_balance_hagar_primary_health 0
 +set g_balance_hagar_primary_damageforcescale 0
 +set g_balance_hagar_primary_radius 110
 +set g_balance_hagar_primary_spread 0.1
 +set g_balance_hagar_primary_speed 1800
 +set g_balance_hagar_primary_lifetime 5
 +set g_balance_hagar_primary_refire 0.12
 +set g_balance_hagar_primary_ammo 1
 +set g_balance_hagar_secondary 1
 +set g_balance_hagar_secondary_load 0
 +set g_balance_hagar_secondary_load_speed 0.6
 +set g_balance_hagar_secondary_load_spread 0.075
 +set g_balance_hagar_secondary_load_spread_bias 0.5
 +set g_balance_hagar_secondary_load_max 4
 +set g_balance_hagar_secondary_load_hold 0
 +set g_balance_hagar_secondary_load_releasedeath 1
 +set g_balance_hagar_secondary_load_abort 1
 +set g_balance_hagar_secondary_load_linkexplode 0
 +set g_balance_hagar_secondary_load_animtime 0.2
 +set g_balance_hagar_secondary_damage 14 // default for _load: 32
 +set g_balance_hagar_secondary_edgedamage 6 // default for _load: 10
 +set g_balance_hagar_secondary_force 70 // default for _load: 160
 +set g_balance_hagar_secondary_health 0
 +set g_balance_hagar_secondary_damageforcescale 0
 +set g_balance_hagar_secondary_radius 125
 +set g_balance_hagar_secondary_spread 0.15 // default for _load: 0.08
 +set g_balance_hagar_secondary_speed 1800
 +set g_balance_hagar_secondary_lifetime_min 5
 +set g_balance_hagar_secondary_lifetime_rand 0
 +set g_balance_hagar_secondary_refire 0.12 // default for _load: 0.8
 +set g_balance_hagar_secondary_ammo 1
 +set g_balance_hagar_switchdelay_drop 0.15
 +set g_balance_hagar_switchdelay_raise 0.15
 +set g_balance_hagar_reload_ammo 0 //default: 25
 +set g_balance_hagar_reload_time 2
 +// }}}
 +// {{{ rocketlauncher
 +set g_balance_rocketlauncher_damage 82
 +set g_balance_rocketlauncher_edgedamage 32
 +set g_balance_rocketlauncher_force 350
 +set g_balance_rocketlauncher_radius 130
 +set g_balance_rocketlauncher_speed 1400
 +set g_balance_rocketlauncher_speedaccel 1400
 +set g_balance_rocketlauncher_speedstart 800
 +set g_balance_rocketlauncher_lifetime 5
 +set g_balance_rocketlauncher_refire 1
 +set g_balance_rocketlauncher_animtime 0.3
 +set g_balance_rocketlauncher_ammo 3
 +set g_balance_rocketlauncher_health 0
 +set g_balance_rocketlauncher_damageforcescale 0
 +set g_balance_rocketlauncher_detonatedelay 0.05 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time
 +set g_balance_rocketlauncher_guiderate 42 // max degrees per second
 +set g_balance_rocketlauncher_guideratedelay 0.01 // immediate
 +set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic)
 +set g_balance_rocketlauncher_guidedelay 0.15 // delay before guiding kicks in
 +set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again
 +set g_balance_rocketlauncher_remote_damage 60
 +set g_balance_rocketlauncher_remote_edgedamage 20
 +set g_balance_rocketlauncher_remote_radius 120
 +set g_balance_rocketlauncher_remote_force 350
 +set g_balance_rocketlauncher_switchdelay_drop 0.15
 +set g_balance_rocketlauncher_switchdelay_raise 0.15
 +set g_balance_rocketlauncher_reload_ammo 0 //default: 25
 +set g_balance_rocketlauncher_reload_time 2
 +// }}}
 +// {{{ porto
 +set g_balance_porto_primary_refire 1.5
 +set g_balance_porto_primary_animtime 0.2
 +set g_balance_porto_primary_speed 2000
 +set g_balance_porto_primary_lifetime 5
 +set g_balance_porto_secondary 0
 +set g_balance_porto_secondary_refire 1.5
 +set g_balance_porto_secondary_animtime 0.2
 +set g_balance_porto_secondary_speed 2000
 +set g_balance_porto_secondary_lifetime 5
 +set g_balance_porto_switchdelay_drop 0.15
 +set g_balance_porto_switchdelay_raise 0.15
 +set g_balance_portal_health 200 // these get recharged whenever the portal is used
 +set g_balance_portal_lifetime 15 // these get recharged whenever the portal is used
 +// }}}
 +// {{{ hook
 +set g_balance_hook_primary_fuel 5 // hook monkeys set 0
++set g_balance_hook_primary_refire 0.2 // hook monkeys set 0
 +set g_balance_hook_primary_animtime 0.2 // good shoot anim
 +set g_balance_hook_primary_hooked_time_max 0 // infinite
 +set g_balance_hook_primary_hooked_time_free 2 // 2s being hooked are free
 +set g_balance_hook_primary_hooked_fuel 5 // fuel per second hooked
 +set g_balance_hook_secondary_damage 25 // not much
 +set g_balance_hook_secondary_edgedamage 5 // not much
 +set g_balance_hook_secondary_radius 500 // LOTS
 +set g_balance_hook_secondary_force -2000 // LOTS
 +set g_balance_hook_secondary_ammo 50 // a whole pack
 +set g_balance_hook_secondary_lifetime 5 // infinite
 +set g_balance_hook_secondary_speed 0 // not much throwing
 +set g_balance_hook_secondary_gravity 5 // fast falling
 +set g_balance_hook_secondary_refire 3 // don't drop too many bombs...
 +set g_balance_hook_secondary_animtime 0.2 // good shoot anim
 +set g_balance_hook_secondary_power 3 // effect behaves like a square function
 +set g_balance_hook_secondary_duration 1.5 // effect runs for three seconds
 +set g_balance_hook_secondary_health 0
 +set g_balance_hook_secondary_damageforcescale 0
 +set g_balance_hook_switchdelay_drop 0.15
 +set g_balance_hook_switchdelay_raise 0.15
 +// }}}
 +// {{{ tuba
 +set g_balance_tuba_refire 0.05
 +set g_balance_tuba_animtime 0.05
 +set g_balance_tuba_attenuation 0.5
 +set g_balance_tuba_volume 1
 +set g_balance_tuba_fadetime 0.25
 +set g_balance_tuba_damage 5
 +set g_balance_tuba_edgedamage 0
 +set g_balance_tuba_radius 200
 +set g_balance_tuba_force 40
 +set g_balance_tuba_pitchstep 6
 +set g_balance_tuba_switchdelay_drop 0.15
 +set g_balance_tuba_switchdelay_raise 0.15
 +// }}}
 +// {{{ fireball
 +set g_balance_fireball_primary_animtime 0.2
 +set g_balance_fireball_primary_bfgdamage 100
 +set g_balance_fireball_primary_bfgforce 0
 +set g_balance_fireball_primary_bfgradius 1000
 +set g_balance_fireball_primary_damage 200
 +set g_balance_fireball_primary_damageforcescale 4
 +set g_balance_fireball_primary_edgedamage 0
 +set g_balance_fireball_primary_force 700
 +set g_balance_fireball_primary_health 50
 +set g_balance_fireball_primary_laserburntime 0.5
 +set g_balance_fireball_primary_laserdamage 80
 +set g_balance_fireball_primary_laseredgedamage 20
 +set g_balance_fireball_primary_laserradius 256
 +set g_balance_fireball_primary_lifetime 15
 +set g_balance_fireball_primary_radius 200
 +set g_balance_fireball_primary_refire 5
 +set g_balance_fireball_primary_refire2 0
 +set g_balance_fireball_primary_speed 650
 +set g_balance_fireball_primary_spread 0
 +set g_balance_fireball_secondary_animtime 0.2
 +set g_balance_fireball_secondary_damage 40
 +set g_balance_fireball_secondary_damageforcescale 4
 +set g_balance_fireball_secondary_damagetime 5
 +set g_balance_fireball_secondary_force 100
 +set g_balance_fireball_secondary_laserburntime 0.5
 +set g_balance_fireball_secondary_laserdamage 50
 +set g_balance_fireball_secondary_laseredgedamage 20
 +set g_balance_fireball_secondary_laserradius 110
 +set g_balance_fireball_secondary_lifetime 7
 +set g_balance_fireball_secondary_refire 2
 +set g_balance_fireball_secondary_speed 900
 +set g_balance_fireball_secondary_speed_up 100
 +set g_balance_fireball_secondary_speed_z 0
 +set g_balance_fireball_secondary_spread 0
 +set g_balance_fireball_switchdelay_drop 0.15
 +set g_balance_fireball_switchdelay_raise 0.15
 +// }}}
index 3e8f0d2,0000000..cbc380b
mode 100644,000000..100644
--- /dev/null
@@@ -1,749 -1,0 +1,750 @@@
- set g_balance_hook_primary_refire 0 // hook monkeys set 0
 +g_mod_balance XDF
 +
 +// {{{ starting gear
 +set g_start_weapon_laser 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_shotgun 0 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_uzi 1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_grenadelauncher -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_electro -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_crylink -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_nex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_hagar -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default" // UNTIL IT CAN BE REMOVED FROM CODE
 +set g_start_weapon_rocketlauncher -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_minstanex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_porto -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_hook -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_tuba -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_start_weapon_fireball -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default"
 +set g_balance_health_start 100
 +set g_balance_armor_start 0
 +set g_start_ammo_shells 15
 +set g_start_ammo_nails 0
 +set g_start_ammo_rockets 0
 +set g_start_ammo_cells 0
 +set g_start_ammo_fuel 0
 +set g_warmup_start_health 100 "starting values when being in warmup-stage"
 +set g_warmup_start_armor 100 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_shells 30 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_nails 160 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_rockets 80 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_cells 90 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_fuel 0 "starting values when being in warmup-stage"
 +set g_lms_start_health 200
 +set g_lms_start_armor 200
 +set g_lms_start_ammo_shells 60
 +set g_lms_start_ammo_nails 320
 +set g_lms_start_ammo_rockets 160
 +set g_lms_start_ammo_cells 180
 +set g_lms_start_ammo_fuel 0
 +set g_balance_nix_roundtime 25
 +set g_balance_nix_incrtime 1.6
 +set g_balance_nix_ammo_shells 60
 +set g_balance_nix_ammo_nails 320
 +set g_balance_nix_ammo_rockets 160
 +set g_balance_nix_ammo_cells 180
 +set g_balance_nix_ammo_fuel 0
 +set g_balance_nix_ammoincr_shells 2 // eh this will need figured out later I assume
 +set g_balance_nix_ammoincr_nails 6
 +set g_balance_nix_ammoincr_rockets 2
 +set g_balance_nix_ammoincr_cells 2
 +set g_balance_nix_ammoincr_fuel 2
 +// }}}
 +
 +// {{{ pickup items
 +set g_pickup_ammo_anyway 1
 +set g_pickup_weapons_anyway 1
 +set g_pickup_shells 15
 +set g_pickup_shells_weapon 15
 +set g_pickup_shells_max 60
 +set g_pickup_nails 80
 +set g_pickup_nails_weapon 80
 +set g_pickup_nails_max 320
 +set g_pickup_rockets 40
 +set g_pickup_rockets_weapon 40
 +set g_pickup_rockets_max 160
 +set g_pickup_cells 30
 +set g_pickup_cells_weapon 30
 +set g_pickup_cells_max 180
 +set g_pickup_fuel 50
 +set g_pickup_fuel_weapon 50
 +set g_pickup_fuel_jetpack 100
 +set g_pickup_fuel_max 100
 +set g_pickup_armorsmall 5
 +set g_pickup_armorsmall_max 200
 +set g_pickup_armorsmall_anyway 1
 +set g_pickup_armormedium 25
 +set g_pickup_armormedium_max 200
 +set g_pickup_armormedium_anyway 1
 +set g_pickup_armorbig 50
 +set g_pickup_armorbig_max 200
 +set g_pickup_armorbig_anyway 1
 +set g_pickup_armorlarge 100
 +set g_pickup_armorlarge_max 200
 +set g_pickup_armorlarge_anyway 1
 +set g_pickup_healthsmall 5
 +set g_pickup_healthsmall_max 200
 +set g_pickup_healthsmall_anyway 1
 +set g_pickup_healthmedium 25
 +set g_pickup_healthmedium_max 200
 +set g_pickup_healthmedium_anyway 1
 +set g_pickup_healthlarge 50
 +set g_pickup_healthlarge_max 200
 +set g_pickup_healthlarge_anyway 1
 +set g_pickup_healthmega 100
 +set g_pickup_healthmega_max 200
 +set g_pickup_healthmega_anyway 1
 +set g_pickup_respawntime_short 0.1
 +set g_pickup_respawntime_medium 0.1
 +set g_pickup_respawntime_long 0.1
 +set g_pickup_respawntime_powerup 0.1
 +set g_pickup_respawntime_weapon 0.1
 +set g_pickup_respawntime_superweapon 0.1
 +set g_pickup_respawntime_ammo 0.1
 +set g_pickup_respawntimejitter_short 0
 +set g_pickup_respawntimejitter_medium 0
 +set g_pickup_respawntimejitter_long 0
 +set g_pickup_respawntimejitter_powerup 30
 +set g_pickup_respawntimejitter_weapon 0
 +set g_pickup_respawntimejitter_superweapon 10
 +set g_pickup_respawntimejitter_ammo 0
 +// }}}
 +
 +// {{{ regen/rot
 +set g_balance_health_regen 0.08
 +set g_balance_health_regenlinear 0.5
 +set g_balance_pause_health_regen 5
 +set g_balance_pause_health_regen_spawn 0
 +set g_balance_health_rot 0.04
 +set g_balance_health_rotlinear 0.75
 +set g_balance_pause_health_rot 1
 +set g_balance_pause_health_rot_spawn 5
 +set g_balance_health_regenstable 100
 +set g_balance_health_rotstable 100
 +set g_balance_health_limit 999
 +set g_balance_armor_regen 0
 +set g_balance_armor_regenlinear 0
 +set g_balance_armor_rot 0.04
 +set g_balance_armor_rotlinear 0.75
 +set g_balance_pause_armor_rot 1
 +set g_balance_pause_armor_rot_spawn 5
 +set g_balance_armor_regenstable 100
 +set g_balance_armor_rotstable 100
 +set g_balance_armor_limit 999
 +set g_balance_armor_blockpercent 0.6
 +set g_balance_fuel_regen 0.1 "fuel regeneration (only applies if the player owns IT_FUEL_REGEN)"
 +set g_balance_fuel_regenlinear 0
 +set g_balance_pause_fuel_regen 2 // other than this, fuel uses the health regen counter
 +set g_balance_fuel_rot 0.05
 +set g_balance_fuel_rotlinear 0
 +set g_balance_pause_fuel_rot 5
 +set g_balance_pause_fuel_rot_spawn 10
 +set g_balance_fuel_regenstable 50
 +set g_balance_fuel_rotstable 100
 +set g_balance_fuel_limit 999
 +// }}}
 +
 +// {{{ misc
 +set g_balance_selfdamagepercent 0
 +set g_weaponspeedfactor 1 "weapon projectile speed multiplier"
 +set g_weaponratefactor 1 "weapon fire rate multiplier"
 +set g_weapondamagefactor 1 "weapon damage multiplier"
 +set g_weaponforcefactor 1 "weapon force multiplier"
 +set g_weaponspreadfactor 1 "weapon spread multiplier"
 +set g_balance_firetransfer_time 0.9
 +set g_balance_firetransfer_damage 0.8
 +set g_throughfloor_damage 0.4
 +set g_throughfloor_force 0.7
 +set g_projectiles_damage 2
 +// possible values:
 +// -2: absolutely no damage to projectiles (no exceptions)
 +// -1: no damage other than the exceptions (electro combo, hagar join explode, ML mines)
 +// 0: only damage from contents (lava/slime) or exceptions
 +// 1: only self damage or damage from contents or exceptions
 +// 2: allow all damage to projectiles normally
 +set g_projectiles_keep_owner 0
 +set g_projectiles_newton_style 2
 +// possible values:
 +// 0: absolute velocity projectiles (like Quake)
 +// 1: relative velocity projectiles, "Newtonian" (like Tribes 2)
 +// 2: relative velocity projectiles, but aim is precorrected so projectiles hit the crosshair (note: strafe rockets then are SLOWER than ones shot while standing, happens in 1 too when aiming correctly which is hard)
 +set g_projectiles_newton_style_2_minfactor 0.8
 +set g_projectiles_newton_style_2_maxfactor 1.5
 +set g_projectiles_spread_style 7
 +// possible values:
 +// 0: forward + solid sphere (like Quake) - varies velocity
 +// 1: forward + flattened solid sphere
 +// 2: forward + solid circle
 +// 3: forward + normal distribution 3D - varies velocity
 +// 4: forward + normal distribution on a plane
 +// 5: forward + circle with 1-r falloff
 +// 6: forward + circle with 1-r^2 falloff
 +// 7: forward + circle with (1-r)(2-r) falloff
 +set g_balance_falldamage_deadminspeed 250
 +set g_balance_falldamage_minspeed 900
 +set g_balance_falldamage_factor 0.20
 +set g_balance_falldamage_maxdamage 40
 +set g_balance_damagepush_speedfactor 2.5
 +set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage with playerdamage/projectiledamage
 +set g_balance_contents_drowndelay 10 // time under water before a player begins drowning
 +set g_balance_contents_playerdamage_drowning 20 // damage per second for while player is drowning
 +set g_balance_contents_playerdamage_lava 50 // damage per second for while player is inside lava
 +set g_balance_contents_playerdamage_slime 30 // damage per second for while player is inside slime
 +set g_balance_contents_projectiledamage 10000 // instantly kill projectiles upon touching lava/slime
 +set g_maxpushtime 8.0 "timeout for kill credit when your damage knocks someone into a death trap"
 +// }}}
 +
 +// {{{ powerups
 +set g_balance_powerup_invincible_takedamage 0.25 // only 1/4th damage is taken
 +set g_balance_powerup_invincible_time 999
 +set g_balance_powerup_strength_damage 3
 +set g_balance_powerup_strength_force 3
 +set g_balance_powerup_strength_time 999
 +set g_balance_powerup_strength_selfdamage 1.5
 +set g_balance_powerup_strength_selfforce 1.5
 +set g_balance_superweapons_time 30
 +// }}}
 +
 +// {{{ jetpack/hook
 +set g_jetpack_antigravity 0.8 "factor of gravity compensation of the jetpack"
 +set g_jetpack_acceleration_side 1200 "acceleration of the jetpack in xy direction"
 +set g_jetpack_acceleration_up 600 "acceleration of the jetpack in z direction (note: you have to factor in gravity here, if antigravity is not 1)"
 +set g_jetpack_maxspeed_side 1200 "max speed of the jetpack in xy direction"
 +set g_jetpack_maxspeed_up 600 "max speed of the jetpack in z direction"
 +set g_jetpack_fuel 8 "fuel per second for jetpack"
 +set g_jetpack_attenuation 2 "jetpack sound attenuation"
 +
 +set g_grappling_hook_tarzan 2 // 2: can also pull players
 +set g_balance_grapplehook_speed_fly 1800
 +set g_balance_grapplehook_speed_pull 2000
 +set g_balance_grapplehook_force_rubber 2000
 +set g_balance_grapplehook_force_rubber_overstretch 1000
 +set g_balance_grapplehook_length_min 50
 +set g_balance_grapplehook_stretch 50
 +set g_balance_grapplehook_airfriction 0.2
 +set g_balance_grapplehook_health 130
 +set g_balance_grapplehook_damagedbycontents 0
++set g_balance_grapplehook_refire 0.2
 +// }}}
 +
 +// {{{ weapon properties
 +// {{{ laser
 +set g_balance_laser_melee_animtime 0.3
 +set g_balance_laser_melee_damage 80
 +set g_balance_laser_melee_delay 0.25
 +set g_balance_laser_melee_force 200
 +set g_balance_laser_melee_multihit 1
 +set g_balance_laser_melee_no_doubleslap 1
 +set g_balance_laser_melee_nonplayerdamage 40
 +set g_balance_laser_melee_range 120
 +set g_balance_laser_melee_refire 1.25
 +set g_balance_laser_melee_swing_side 120
 +set g_balance_laser_melee_swing_up 30
 +set g_balance_laser_melee_time 0.15
 +set g_balance_laser_melee_traces 10
 +
 +set g_balance_laser_primary 1 // 0 = shockwave attack, 1 = projectile primary
 +set g_balance_laser_primary_damage 25
 +set g_balance_laser_primary_edgedamage 12.5
 +set g_balance_laser_primary_force 250
 +set g_balance_laser_primary_radius 70
 +set g_balance_laser_primary_speed 6000
 +set g_balance_laser_primary_spread 0
 +set g_balance_laser_primary_refire 0.7
 +set g_balance_laser_primary_animtime 0.3
 +set g_balance_laser_primary_lifetime 5
 +set g_balance_laser_primary_shotangle 0
 +set g_balance_laser_primary_delay 0
 +set g_balance_laser_primary_force_zscale 1.5
 +set g_balance_laser_primary_force_velocitybias 0
 +set g_balance_laser_primary_force_other_scale 1
 +
 +set g_balance_laser_secondary 0 // 0 = switch away to last used weapon, 1 = projectile secondary, 2 = melee secondary
 +set g_balance_laser_secondary_damage 25
 +set g_balance_laser_secondary_edgedamage 12.5
 +set g_balance_laser_secondary_force 400
 +set g_balance_laser_secondary_radius 70
 +set g_balance_laser_secondary_speed 12000
 +set g_balance_laser_secondary_spread 0
 +set g_balance_laser_secondary_refire 0.7
 +set g_balance_laser_secondary_animtime 0.2
 +set g_balance_laser_secondary_lifetime 5
 +set g_balance_laser_secondary_shotangle -90
 +set g_balance_laser_secondary_delay 0
 +set g_balance_laser_secondary_force_zscale 1.25
 +set g_balance_laser_secondary_force_velocitybias 0
 +set g_balance_laser_secondary_force_other_scale 1
 +
 +set g_balance_laser_shockwave_damage 20
 +set g_balance_laser_shockwave_distance 2000
 +set g_balance_laser_shockwave_edgedamage 0
 +set g_balance_laser_shockwave_force 200
 +set g_balance_laser_shockwave_force_forwardbias 50
 +set g_balance_laser_shockwave_force_zscale 2
 +set g_balance_laser_shockwave_jump_damage 20
 +set g_balance_laser_shockwave_jump_edgedamage 0
 +set g_balance_laser_shockwave_jump_force 300
 +set g_balance_laser_shockwave_jump_force_velocitybias 0
 +set g_balance_laser_shockwave_jump_force_zscale 1.25
 +set g_balance_laser_shockwave_jump_multiplier_accuracy 0.5
 +set g_balance_laser_shockwave_jump_multiplier_distance 0.5
 +set g_balance_laser_shockwave_jump_multiplier_min 0
 +set g_balance_laser_shockwave_jump_radius 150
 +set g_balance_laser_shockwave_multiplier_accuracy 0.5
 +set g_balance_laser_shockwave_multiplier_distance 0.5
 +set g_balance_laser_shockwave_multiplier_min 0
 +set g_balance_laser_shockwave_splash_damage 15
 +set g_balance_laser_shockwave_splash_edgedamage 0
 +set g_balance_laser_shockwave_splash_force 100
 +set g_balance_laser_shockwave_splash_force_forwardbias 50
 +set g_balance_laser_shockwave_splash_multiplier_accuracy 0.5
 +set g_balance_laser_shockwave_splash_multiplier_distance 0.5
 +set g_balance_laser_shockwave_splash_multiplier_min 0
 +set g_balance_laser_shockwave_splash_radius 70
 +set g_balance_laser_shockwave_spread_max 120
 +set g_balance_laser_shockwave_spread_min 25
 +
 +set g_balance_laser_switchdelay_drop 0
 +set g_balance_laser_switchdelay_raise 0
 +set g_balance_laser_reload_ammo 0 //default: 6
 +set g_balance_laser_reload_time 2
 +// }}}
 +// {{{ shotgun
 +set g_balance_shotgun_primary_bullets 14
 +set g_balance_shotgun_primary_damage 4
 +set g_balance_shotgun_primary_force 15
 +set g_balance_shotgun_primary_spread 0.12
 +set g_balance_shotgun_primary_refire 0.75
 +set g_balance_shotgun_primary_animtime 0.2
 +set g_balance_shotgun_primary_ammo 1
 +set g_balance_shotgun_primary_solidpenetration 3.8
 +set g_balance_shotgun_secondary 1
 +set g_balance_shotgun_secondary_melee_delay 0.25 // 0.35 was too slow
 +set g_balance_shotgun_secondary_melee_range 120
 +set g_balance_shotgun_secondary_melee_swing_side 120
 +set g_balance_shotgun_secondary_melee_swing_up 30
 +set g_balance_shotgun_secondary_melee_time 0.15
 +set g_balance_shotgun_secondary_melee_traces 10
 +set g_balance_shotgun_secondary_melee_no_doubleslap 1
 +set g_balance_shotgun_secondary_melee_nonplayerdamage 40
 +set g_balance_shotgun_secondary_melee_multihit 1
 +set g_balance_shotgun_secondary_damage 80
 +set g_balance_shotgun_secondary_force 200
 +set g_balance_shotgun_secondary_refire 1.25
 +set g_balance_shotgun_secondary_animtime 1
 +set g_balance_shotgun_switchdelay_drop 0
 +set g_balance_shotgun_switchdelay_raise 0
 +set g_balance_shotgun_reload_ammo 0 //default: 5
 +set g_balance_shotgun_reload_time 2
 +// }}}
 +// {{{ uzi
 +set g_balance_uzi_mode 1                              // Activates varible spread for sustained & burst mode secondary
 +set g_balance_uzi_spread_min 0
 +set g_balance_uzi_spread_max 0
 +set g_balance_uzi_spread_add 0
 +
 +set g_balance_uzi_burst 3                             // # of bullets in a burst (if set to 2 or more)
 +set g_balance_uzi_burst_animtime 0.3
 +set g_balance_uzi_burst_refire 0.06           // refire between burst bullets
 +set g_balance_uzi_burst_refire2 0.45  // refire after burst
 +set g_balance_uzi_burst_spread 0.03
 +set g_balance_uzi_burst_damage 25
 +set g_balance_uzi_burst_force 20
 +set g_balance_uzi_burst_ammo 3
 +
 +set g_balance_uzi_first 1
 +set g_balance_uzi_first_damage 14
 +set g_balance_uzi_first_force 5
 +set g_balance_uzi_first_spread 0.03
 +set g_balance_uzi_first_refire 0.4
 +set g_balance_uzi_first_ammo 1
 +
 +set g_balance_uzi_sustained_damage 12
 +set g_balance_uzi_sustained_force 5
 +set g_balance_uzi_sustained_spread 0
 +set g_balance_uzi_sustained_refire 0.1
 +set g_balance_uzi_sustained_ammo 1
 +
 +set g_balance_uzi_solidpenetration 13.1
 +
 +set g_balance_uzi_switchdelay_drop 0
 +set g_balance_uzi_switchdelay_raise 0
 +
 +set g_balance_uzi_reload_ammo 0 //default: 30
 +set g_balance_uzi_reload_time 2
 +// }}}
 +// {{{ mortar
 +set g_balance_grenadelauncher_primary_type 0
 +set g_balance_grenadelauncher_primary_damage 50
 +set g_balance_grenadelauncher_primary_edgedamage 25
 +set g_balance_grenadelauncher_primary_force 250
 +set g_balance_grenadelauncher_primary_radius 100
 +set g_balance_grenadelauncher_primary_speed 2000
 +set g_balance_grenadelauncher_primary_speed_up 200
 +set g_balance_grenadelauncher_primary_speed_z 0
 +set g_balance_grenadelauncher_primary_spread 0
 +set g_balance_grenadelauncher_primary_lifetime 5
 +set g_balance_grenadelauncher_primary_lifetime2 1
 +set g_balance_grenadelauncher_primary_refire 0.7
 +set g_balance_grenadelauncher_primary_animtime 0.3
 +set g_balance_grenadelauncher_primary_ammo 2
 +set g_balance_grenadelauncher_primary_health 0
 +set g_balance_grenadelauncher_primary_damageforcescale 0
 +set g_balance_grenadelauncher_primary_remote_minbouncecnt 0
 +
 +set g_balance_grenadelauncher_secondary_type 1
 +set g_balance_grenadelauncher_secondary_damage 60
 +set g_balance_grenadelauncher_secondary_edgedamage 30
 +set g_balance_grenadelauncher_secondary_force 300
 +set g_balance_grenadelauncher_secondary_radius 200
 +set g_balance_grenadelauncher_secondary_speed 800
 +set g_balance_grenadelauncher_secondary_speed_up 0
 +set g_balance_grenadelauncher_secondary_speed_z 200
 +set g_balance_grenadelauncher_secondary_spread 0
 +set g_balance_grenadelauncher_secondary_lifetime 8
 +set g_balance_grenadelauncher_secondary_lifetime_bounce 0.5
 +set g_balance_grenadelauncher_secondary_lifetime_stick 0
 +set g_balance_grenadelauncher_secondary_refire 0.7
 +set g_balance_grenadelauncher_secondary_animtime 0.5
 +set g_balance_grenadelauncher_secondary_ammo 2
 +set g_balance_grenadelauncher_secondary_health 0
 +set g_balance_grenadelauncher_secondary_damageforcescale 0
 +set g_balance_grenadelauncher_secondary_remote_detonateprimary 0
 +
 +set g_balance_grenadelauncher_bouncefactor 0.5
 +set g_balance_grenadelauncher_bouncestop 0.075
 +
 +set g_balance_grenadelauncher_switchdelay_drop 0
 +set g_balance_grenadelauncher_switchdelay_raise 0
 +
 +set g_balance_grenadelauncher_reload_ammo 0 //default: 12
 +set g_balance_grenadelauncher_reload_time 2
 +// }}}
 +// {{{ electro
 +set g_balance_electro_lightning 0
 +set g_balance_electro_primary_damage 55
 +set g_balance_electro_primary_edgedamage 27.5
 +set g_balance_electro_primary_force 200
 +set g_balance_electro_primary_force_up 0
 +set g_balance_electro_primary_radius 100
 +set g_balance_electro_primary_comboradius 150
 +set g_balance_electro_primary_speed 2500
 +set g_balance_electro_primary_spread 0
 +set g_balance_electro_primary_lifetime 5
 +set g_balance_electro_primary_refire 0.6
 +set g_balance_electro_primary_animtime 0.1
 +set g_balance_electro_primary_ammo 4
 +set g_balance_electro_primary_range 0
 +set g_balance_electro_primary_falloff_mindist 255 // 0.3 * radius
 +set g_balance_electro_primary_falloff_maxdist 850
 +set g_balance_electro_primary_falloff_halflifedist 425
 +set g_balance_electro_secondary_damage 40
 +set g_balance_electro_secondary_edgedamage 20
 +set g_balance_electro_secondary_force 200
 +set g_balance_electro_secondary_radius 150
 +set g_balance_electro_secondary_speed 900
 +set g_balance_electro_secondary_speed_up 200
 +set g_balance_electro_secondary_speed_z 0
 +set g_balance_electro_secondary_spread 0.05
 +set g_balance_electro_secondary_lifetime 3
 +set g_balance_electro_secondary_refire 0.2
 +set g_balance_electro_secondary_refire2 1.5
 +set g_balance_electro_secondary_animtime 0.2
 +set g_balance_electro_secondary_ammo 2
 +set g_balance_electro_secondary_health 5
 +set g_balance_electro_secondary_damageforcescale 4
 +set g_balance_electro_secondary_damagedbycontents 1
 +set g_balance_electro_secondary_count 3
 +set g_balance_electro_secondary_bouncefactor 0.4
 +set g_balance_electro_secondary_bouncestop 0.05
 +set g_balance_electro_combo_damage 40
 +set g_balance_electro_combo_edgedamage 20
 +set g_balance_electro_combo_force 120
 +set g_balance_electro_combo_radius 175
 +set g_balance_electro_combo_comboradius 275
 +set g_balance_electro_combo_speed 2000
 +set g_balance_electro_combo_safeammocheck 1
 +set g_balance_electro_switchdelay_drop 0
 +set g_balance_electro_switchdelay_raise 0
 +set g_balance_electro_reload_ammo 0 //default: 20
 +set g_balance_electro_reload_time 2
 +// }}}
 +// {{{ crylink
 +set g_balance_crylink_primary_damage 12
 +set g_balance_crylink_primary_edgedamage 6
 +set g_balance_crylink_primary_force -50
 +set g_balance_crylink_primary_radius 80
 +set g_balance_crylink_primary_speed 2000
 +set g_balance_crylink_primary_spread 0.08
 +set g_balance_crylink_primary_shots 6
 +set g_balance_crylink_primary_bounces 1
 +set g_balance_crylink_primary_refire 0.7
 +set g_balance_crylink_primary_animtime 0.3
 +set g_balance_crylink_primary_ammo 3
 +set g_balance_crylink_primary_bouncedamagefactor 0.5
 +set g_balance_crylink_primary_joindelay 0.1
 +set g_balance_crylink_primary_joinspread 0.2
 +set g_balance_crylink_primary_joinexplode 1
 +set g_balance_crylink_primary_joinexplode_damage 0
 +set g_balance_crylink_primary_joinexplode_edgedamage 0
 +set g_balance_crylink_primary_joinexplode_radius 0
 +set g_balance_crylink_primary_joinexplode_force 0
 +set g_balance_crylink_primary_linkexplode 1
 +
 +set g_balance_crylink_primary_middle_lifetime 5 // range: 35000 full, fades to 70000
 +set g_balance_crylink_primary_middle_fadetime 5
 +set g_balance_crylink_primary_other_lifetime 5
 +set g_balance_crylink_primary_other_fadetime 5
 +
 +set g_balance_crylink_secondary 1
 +set g_balance_crylink_secondary_damage 10
 +set g_balance_crylink_secondary_edgedamage 5
 +set g_balance_crylink_secondary_force -150
 +set g_balance_crylink_secondary_radius 100
 +set g_balance_crylink_secondary_speed 3000
 +set g_balance_crylink_secondary_spread 0.01
 +set g_balance_crylink_secondary_spreadtype 1
 +set g_balance_crylink_secondary_shots 5
 +set g_balance_crylink_secondary_bounces 0
 +set g_balance_crylink_secondary_refire 0.7
 +set g_balance_crylink_secondary_animtime 0.2
 +set g_balance_crylink_secondary_ammo 2
 +set g_balance_crylink_secondary_bouncedamagefactor 0.5
 +set g_balance_crylink_secondary_joindelay 0
 +set g_balance_crylink_secondary_joinspread 0
 +set g_balance_crylink_secondary_joinexplode 0
 +set g_balance_crylink_secondary_joinexplode_damage 0
 +set g_balance_crylink_secondary_joinexplode_edgedamage 0
 +set g_balance_crylink_secondary_joinexplode_radius 0
 +set g_balance_crylink_secondary_joinexplode_force 0
 +set g_balance_crylink_secondary_linkexplode 1
 +
 +set g_balance_crylink_secondary_middle_lifetime 5 // range: 35000 full, fades to 70000
 +set g_balance_crylink_secondary_middle_fadetime 5
 +set g_balance_crylink_secondary_line_lifetime 5
 +set g_balance_crylink_secondary_line_fadetime 5
 +
 +set g_balance_crylink_switchdelay_drop 0
 +set g_balance_crylink_switchdelay_raise 0
 +
 +set g_balance_crylink_reload_ammo 0 //default: 10
 +set g_balance_crylink_reload_time 2
 +// }}}
 +// {{{ nex
 +set g_balance_nex_primary_damage 90
 +set g_balance_nex_primary_force 400
 +set g_balance_nex_primary_refire 1.5
 +set g_balance_nex_primary_animtime 0.4
 +set g_balance_nex_primary_ammo 6
 +set g_balance_nex_primary_damagefalloff_mindist 0 // 1000    For tZork ;3
 +set g_balance_nex_primary_damagefalloff_maxdist 0 // 3000
 +set g_balance_nex_primary_damagefalloff_halflife 0 // 1500
 +set g_balance_nex_primary_damagefalloff_forcehalflife 0 // 1500
 +
 +set g_balance_nex_secondary 0
 +set g_balance_nex_secondary_charge 0
 +set g_balance_nex_secondary_charge_rate 0.1
 +set g_balance_nex_secondary_chargepool 0
 +set g_balance_nex_secondary_chargepool_regen 0.15
 +set g_balance_nex_secondary_chargepool_pause_regen 1
 +set g_balance_nex_secondary_chargepool_pause_health_regen 1
 +set g_balance_nex_secondary_damage 0
 +set g_balance_nex_secondary_force 0
 +set g_balance_nex_secondary_refire 0
 +set g_balance_nex_secondary_animtime 0
 +set g_balance_nex_secondary_ammo 2
 +set g_balance_nex_secondary_damagefalloff_mindist 0
 +set g_balance_nex_secondary_damagefalloff_maxdist 0
 +set g_balance_nex_secondary_damagefalloff_halflife 0
 +set g_balance_nex_secondary_damagefalloff_forcehalflife 0
 +
 +set g_balance_nex_charge 1
 +set g_balance_nex_charge_mindmg 40
 +set g_balance_nex_charge_start 0.5
 +set g_balance_nex_charge_rate 0.4
 +set g_balance_nex_charge_animlimit 0.5
 +set g_balance_nex_charge_limit 1
 +set g_balance_nex_charge_rot_rate 0
 +set g_balance_nex_charge_rot_pause 0 // Dont rot down untill this long after release of charge button
 +set g_balance_nex_charge_shot_multiplier 0
 +set g_balance_nex_charge_velocity_rate 0
 +set g_balance_nex_charge_minspeed 400
 +set g_balance_nex_charge_maxspeed 800
 +
 +set g_balance_nex_switchdelay_drop 0
 +set g_balance_nex_switchdelay_raise 0
 +
 +set g_balance_nex_reload_ammo 0 //default: 25
 +set g_balance_nex_reload_time 2
 +// }}}
 +// {{{ minstanex
 +set g_balance_minstanex_refire 1
 +set g_balance_minstanex_animtime 0.3
 +set g_balance_minstanex_ammo 10
 +set g_balance_minstanex_laser_ammo 0
 +set g_balance_minstanex_laser_animtime 0.3
 +set g_balance_minstanex_laser_refire 0.7
 +set g_balance_minstanex_switchdelay_drop 0
 +set g_balance_minstanex_switchdelay_raise 0
 +set g_balance_minstanex_reload_ammo 0 //default: 50
 +set g_balance_minstanex_reload_time 2
 +// }}}
 +// {{{ hagar
 +set g_balance_hagar_primary_damage 25
 +set g_balance_hagar_primary_edgedamage 12.5
 +set g_balance_hagar_primary_force 92
 +set g_balance_hagar_primary_health 15
 +set g_balance_hagar_primary_damageforcescale 0
 +set g_balance_hagar_primary_radius 25
 +set g_balance_hagar_primary_spread 0.03
 +set g_balance_hagar_primary_speed 2000
 +set g_balance_hagar_primary_lifetime 5
 +set g_balance_hagar_primary_refire 0.11
 +set g_balance_hagar_primary_ammo 1
 +set g_balance_hagar_secondary 0
 +set g_balance_hagar_secondary_load 1
 +set g_balance_hagar_secondary_load_speed 0.5
 +set g_balance_hagar_secondary_load_spread 0.075
 +set g_balance_hagar_secondary_load_spread_bias 0.5
 +set g_balance_hagar_secondary_load_max 4
 +set g_balance_hagar_secondary_load_hold 4
 +set g_balance_hagar_secondary_load_releasedeath 0
 +set g_balance_hagar_secondary_load_abort 0
 +set g_balance_hagar_secondary_load_linkexplode 0
 +set g_balance_hagar_secondary_load_animtime 0.2
 +set g_balance_hagar_secondary_damage 40
 +set g_balance_hagar_secondary_edgedamage 20
 +set g_balance_hagar_secondary_force 75
 +set g_balance_hagar_secondary_health 15
 +set g_balance_hagar_secondary_damageforcescale 0
 +set g_balance_hagar_secondary_radius 80
 +set g_balance_hagar_secondary_spread 0.05
 +set g_balance_hagar_secondary_speed 2000
 +set g_balance_hagar_secondary_lifetime_min 10
 +set g_balance_hagar_secondary_lifetime_rand 0
 +set g_balance_hagar_secondary_refire 0.5
 +set g_balance_hagar_secondary_ammo 1
 +set g_balance_hagar_switchdelay_drop 0
 +set g_balance_hagar_switchdelay_raise 0
 +set g_balance_hagar_reload_ammo 0 //default: 25
 +set g_balance_hagar_reload_time 2
 +// }}}
 +// {{{ rocketlauncher
 +set g_balance_rocketlauncher_damage 80
 +set g_balance_rocketlauncher_edgedamage 40
 +set g_balance_rocketlauncher_force 350
 +set g_balance_rocketlauncher_radius 110
 +set g_balance_rocketlauncher_speed 1000
 +set g_balance_rocketlauncher_speedaccel 0
 +set g_balance_rocketlauncher_speedstart 1000
 +set g_balance_rocketlauncher_lifetime 100
 +set g_balance_rocketlauncher_refire 0.9
 +set g_balance_rocketlauncher_animtime 0.7
 +set g_balance_rocketlauncher_ammo 4
 +set g_balance_rocketlauncher_health 0 // 30 // 5 hitpoints above maximum laser value -- this way lasers can't blow it up, but grenadelauncher still can most the time.
 +set g_balance_rocketlauncher_damageforcescale 0 // low damage force scale so that it can still be affected by other hits, but not so much that it does a 90 degree turn
 +set g_balance_rocketlauncher_detonatedelay 999 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time
 +set g_balance_rocketlauncher_guiderate 0 // max degrees per second
 +set g_balance_rocketlauncher_guideratedelay 0.01 // immediate
 +set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic)
 +set g_balance_rocketlauncher_guidedelay 0.2 // delay before guiding kicks in
 +set g_balance_rocketlauncher_guidestop 1 // stop guiding when firing again
 +set g_balance_rocketlauncher_remote_damage 70
 +set g_balance_rocketlauncher_remote_edgedamage 35
 +set g_balance_rocketlauncher_remote_radius 110
 +set g_balance_rocketlauncher_remote_force 350
 +set g_balance_rocketlauncher_switchdelay_drop 0
 +set g_balance_rocketlauncher_switchdelay_raise 0
 +set g_balance_rocketlauncher_reload_ammo 0 //default: 25
 +set g_balance_rocketlauncher_reload_time 2
 +// }}}
 +// {{{ porto
 +set g_balance_porto_primary_refire 1.5
 +set g_balance_porto_primary_animtime 0.3
 +set g_balance_porto_primary_speed 5000
 +set g_balance_porto_primary_lifetime 5
 +set g_balance_porto_secondary 1
 +set g_balance_porto_secondary_refire 1.5
 +set g_balance_porto_secondary_animtime 0.3
 +set g_balance_porto_secondary_speed 1000
 +set g_balance_porto_secondary_lifetime 5
 +set g_balance_porto_switchdelay_drop 0
 +set g_balance_porto_switchdelay_raise 0
 +set g_balance_portal_health 200 // these get recharged whenever the portal is used
 +set g_balance_portal_lifetime 15 // these get recharged whenever the portal is used
 +// }}}
 +// {{{ hook
 +set g_balance_hook_primary_fuel 5 // hook monkeys set 0
++set g_balance_hook_primary_refire 0.2 // hook monkeys set 0
 +set g_balance_hook_primary_animtime 0.3 // good shoot anim
 +set g_balance_hook_primary_hooked_time_max 0 // infinite
 +set g_balance_hook_primary_hooked_time_free 2 // 2s being hooked are free
 +set g_balance_hook_primary_hooked_fuel 5 // fuel per second hooked
 +set g_balance_hook_secondary_damage 25 // not much
 +set g_balance_hook_secondary_edgedamage 5 // not much
 +set g_balance_hook_secondary_radius 500 // LOTS
 +set g_balance_hook_secondary_force -2000 // LOTS
 +set g_balance_hook_secondary_ammo 50 // a whole pack
 +set g_balance_hook_secondary_lifetime 5 // infinite
 +set g_balance_hook_secondary_speed 0 // not much throwing
 +set g_balance_hook_secondary_gravity 5 // fast falling
 +set g_balance_hook_secondary_refire 3 // don't drop too many bombs...
 +set g_balance_hook_secondary_animtime 0.3 // good shoot anim
 +set g_balance_hook_secondary_power 3 // effect behaves like a square function
 +set g_balance_hook_secondary_duration 1.5 // effect runs for three seconds
 +set g_balance_hook_secondary_health 15
 +set g_balance_hook_secondary_damageforcescale 0
 +set g_balance_hook_switchdelay_drop 0
 +set g_balance_hook_switchdelay_raise 0
 +// }}}
 +// {{{ tuba
 +set g_balance_tuba_refire 0.05
 +set g_balance_tuba_animtime 0.05
 +set g_balance_tuba_attenuation 0.5
 +set g_balance_tuba_volume 1
 +set g_balance_tuba_fadetime 0.25
 +set g_balance_tuba_damage 5
 +set g_balance_tuba_edgedamage 0
 +set g_balance_tuba_radius 200
 +set g_balance_tuba_force 40
 +set g_balance_tuba_pitchstep 6
 +set g_balance_tuba_switchdelay_drop 0
 +set g_balance_tuba_switchdelay_raise 0
 +// }}}
 +// {{{ fireball // this is a superweapon -- lets make it behave as one.
 +set g_balance_fireball_primary_animtime 0.2
 +set g_balance_fireball_primary_bfgdamage 100
 +set g_balance_fireball_primary_bfgforce 0
 +set g_balance_fireball_primary_bfgradius 1000
 +set g_balance_fireball_primary_damage 200
 +set g_balance_fireball_primary_damageforcescale 0
 +set g_balance_fireball_primary_edgedamage 50
 +set g_balance_fireball_primary_force 600
 +set g_balance_fireball_primary_health 0
 +set g_balance_fireball_primary_laserburntime 0.5
 +set g_balance_fireball_primary_laserdamage 80
 +set g_balance_fireball_primary_laseredgedamage 20
 +set g_balance_fireball_primary_laserradius 256
 +set g_balance_fireball_primary_lifetime 15
 +set g_balance_fireball_primary_radius 200
 +set g_balance_fireball_primary_refire 2
 +set g_balance_fireball_primary_refire2 0
 +set g_balance_fireball_primary_speed 1200
 +set g_balance_fireball_primary_spread 0
 +set g_balance_fireball_secondary_animtime 0.3
 +set g_balance_fireball_secondary_damage 40
 +set g_balance_fireball_secondary_damageforcescale 4
 +set g_balance_fireball_secondary_damagetime 5
 +set g_balance_fireball_secondary_force 100
 +set g_balance_fireball_secondary_laserburntime 0.5
 +set g_balance_fireball_secondary_laserdamage 50
 +set g_balance_fireball_secondary_laseredgedamage 20
 +set g_balance_fireball_secondary_laserradius 110
 +set g_balance_fireball_secondary_lifetime 7
 +set g_balance_fireball_secondary_refire 1.5
 +set g_balance_fireball_secondary_speed 900
 +set g_balance_fireball_secondary_speed_up 100
 +set g_balance_fireball_secondary_speed_z 0
 +set g_balance_fireball_secondary_spread 0
 +set g_balance_fireball_switchdelay_drop 0
 +set g_balance_fireball_switchdelay_raise 0
 +// }}}
index 65e3a79,0000000..f7b088a
mode 100644,000000..100644
--- /dev/null
@@@ -1,779 -1,0 +1,780 @@@
- set g_balance_hook_primary_refire 0 // hook monkeys set 0
 +g_mod_balance XPM
 +
 +// {{{ starting gear
 +set g_start_weapon_laser -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_shotgun -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_uzi -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_grenadelauncher -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_electro -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_crylink -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_nex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_hagar -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms" // UNTIL IT CAN BE REMOVED FROM CODE
 +set g_start_weapon_rocketlauncher -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_minstanex -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_porto -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_hook -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_tuba -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_start_weapon_fireball -1 "0 = never provide the weapon, 1 = always provide the weapon, -1 = game mode default, -2 = provide the weapon in ca and lms"
 +set g_balance_health_start 100
 +set g_balance_armor_start 0
 +set g_start_ammo_shells 15
 +set g_start_ammo_nails 0
 +set g_start_ammo_rockets 0
 +set g_start_ammo_cells 0
 +set g_start_ammo_fuel 0
 +set g_warmup_start_health 100 "starting values when being in warmup-stage"
 +set g_warmup_start_armor 100 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_shells 30 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_nails 160 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_rockets 80 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_cells 90 "starting values when being in warmup-stage"
 +set g_warmup_start_ammo_fuel 0 "starting values when being in warmup-stage"
 +set g_lms_start_health 200
 +set g_lms_start_armor 200
 +set g_lms_start_ammo_shells 60
 +set g_lms_start_ammo_nails 320
 +set g_lms_start_ammo_rockets 160
 +set g_lms_start_ammo_cells 180
 +set g_lms_start_ammo_fuel 0
 +set g_balance_nix_roundtime 25
 +set g_balance_nix_incrtime 1.6
 +set g_balance_nix_ammo_shells 60
 +set g_balance_nix_ammo_nails 320
 +set g_balance_nix_ammo_rockets 160
 +set g_balance_nix_ammo_cells 180
 +set g_balance_nix_ammo_fuel 0
 +set g_balance_nix_ammoincr_shells 2 // eh this will need figured out later I assume
 +set g_balance_nix_ammoincr_nails 6
 +set g_balance_nix_ammoincr_rockets 2
 +set g_balance_nix_ammoincr_cells 2
 +set g_balance_nix_ammoincr_fuel 2
 +// }}}
 +
 +// {{{ pickup items
 +set g_pickup_ammo_anyway 1
 +set g_pickup_weapons_anyway 1
 +set g_pickup_shells 15
 +set g_pickup_shells_weapon 15
 +set g_pickup_shells_max 60
 +set g_pickup_nails 80
 +set g_pickup_nails_weapon 80
 +set g_pickup_nails_max 320
 +set g_pickup_rockets 40
 +set g_pickup_rockets_weapon 40
 +set g_pickup_rockets_max 160
 +set g_pickup_cells 30
 +set g_pickup_cells_weapon 30
 +set g_pickup_cells_max 180
 +set g_pickup_fuel 50
 +set g_pickup_fuel_weapon 50
 +set g_pickup_fuel_jetpack 100
 +set g_pickup_fuel_max 100
 +set g_pickup_armorsmall 5
 +set g_pickup_armorsmall_max 200
 +set g_pickup_armorsmall_anyway 0
 +set g_pickup_armormedium 25
 +set g_pickup_armormedium_max 100
 +set g_pickup_armormedium_anyway 0
 +set g_pickup_armorbig 50
 +set g_pickup_armorbig_max 100
 +set g_pickup_armorbig_anyway 0
 +set g_pickup_armorlarge 100
 +set g_pickup_armorlarge_max 200
 +set g_pickup_armorlarge_anyway 0
 +set g_pickup_healthsmall 5
 +set g_pickup_healthsmall_max 200
 +set g_pickup_healthsmall_anyway 0
 +set g_pickup_healthmedium 25
 +set g_pickup_healthmedium_max 100
 +set g_pickup_healthmedium_anyway 0
 +set g_pickup_healthlarge 50
 +set g_pickup_healthlarge_max 100
 +set g_pickup_healthlarge_anyway 0
 +set g_pickup_healthmega 100
 +set g_pickup_healthmega_max 200
 +set g_pickup_healthmega_anyway 0
 +set g_pickup_respawntime_short 15
 +set g_pickup_respawntime_medium 20
 +set g_pickup_respawntime_long 30
 +set g_pickup_respawntime_powerup 120
 +set g_pickup_respawntime_weapon 10
 +set g_pickup_respawntime_superweapon 120
 +set g_pickup_respawntime_ammo 15
 +set g_pickup_respawntimejitter_short 0
 +set g_pickup_respawntimejitter_medium 0
 +set g_pickup_respawntimejitter_long 0
 +set g_pickup_respawntimejitter_powerup 30
 +set g_pickup_respawntimejitter_weapon 0
 +set g_pickup_respawntimejitter_superweapon 10
 +set g_pickup_respawntimejitter_ammo 0
 +// }}}
 +
 +// {{{ regen/rot
 +set g_balance_health_regen 0.08
 +set g_balance_health_regenlinear 0.5
 +set g_balance_pause_health_regen 5
 +set g_balance_pause_health_regen_spawn 0
 +set g_balance_health_rot 0.03
 +set g_balance_health_rotlinear 0.75
 +set g_balance_pause_health_rot 1
 +set g_balance_pause_health_rot_spawn 5
 +set g_balance_health_regenstable 100
 +set g_balance_health_rotstable 100
 +set g_balance_health_limit 999
 +set g_balance_armor_regen 0
 +set g_balance_armor_regenlinear 0
 +set g_balance_armor_rot 0.03
 +set g_balance_armor_rotlinear 0.75
 +set g_balance_pause_armor_rot 1
 +set g_balance_pause_armor_rot_spawn 5
 +set g_balance_armor_regenstable 100
 +set g_balance_armor_rotstable 100
 +set g_balance_armor_limit 999
 +set g_balance_armor_blockpercent 0.6
 +set g_balance_fuel_regen 0.1 "fuel regeneration (only applies if the player owns IT_FUEL_REGEN)"
 +set g_balance_fuel_regenlinear 0
 +set g_balance_pause_fuel_regen 2 // other than this, fuel uses the health regen counter
 +set g_balance_fuel_rot 0.05
 +set g_balance_fuel_rotlinear 0
 +set g_balance_pause_fuel_rot 5
 +set g_balance_pause_fuel_rot_spawn 10
 +set g_balance_fuel_regenstable 50
 +set g_balance_fuel_rotstable 100
 +set g_balance_fuel_limit 999
 +// }}}
 +
 +// {{{ misc
 +set g_balance_selfdamagepercent 0.65
 +set g_weaponspeedfactor 1 "weapon projectile speed multiplier"
 +set g_weaponratefactor 1 "weapon fire rate multiplier"
 +set g_weapondamagefactor 1 "weapon damage multiplier"
 +set g_weaponforcefactor 1 "weapon force multiplier"
 +set g_weaponspreadfactor 1 "weapon spread multiplier"
 +set g_balance_firetransfer_time 0.9
 +set g_balance_firetransfer_damage 0.8
 +set g_throughfloor_damage 0.75
 +set g_throughfloor_force 0.75
 +set g_projectiles_damage 1
 +// possible values:
 +// -2: absolutely no damage to projectiles (no exceptions)
 +// -1: no damage other than the exceptions (electro combo, hagar join explode, ML mines)
 +// 0: only damage from contents (lava/slime) or exceptions
 +// 1: only self damage or damage from contents or exceptions
 +// 2: allow all damage to projectiles normally
 +set g_projectiles_keep_owner 0
 +set g_projectiles_newton_style 0
 +// possible values:
 +// 0: absolute velocity projectiles (like Quake)
 +// 1: relative velocity projectiles, "Newtonian" (like Tribes 2)
 +// 2: relative velocity projectiles, but aim is precorrected so projectiles hit the crosshair (note: strafe rockets then are SLOWER than ones shot while standing, happens in 1 too when aiming correctly which is hard)
 +set g_projectiles_newton_style_2_minfactor 0.8
 +set g_projectiles_newton_style_2_maxfactor 1.5
 +set g_projectiles_spread_style 7
 +// possible values:
 +// 0: forward + solid sphere (like Quake) - varies velocity
 +// 1: forward + flattened solid sphere
 +// 2: forward + solid circle
 +// 3: forward + normal distribution 3D - varies velocity
 +// 4: forward + normal distribution on a plane
 +// 5: forward + circle with 1-r falloff
 +// 6: forward + circle with 1-r^2 falloff
 +// 7: forward + circle with (1-r)(2-r) falloff
 +set g_balance_falldamage_deadminspeed 250
 +set g_balance_falldamage_minspeed 900
 +set g_balance_falldamage_factor 0.20
 +set g_balance_falldamage_maxdamage 40
 +set g_balance_damagepush_speedfactor 2.5
 +set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage with playerdamage/projectiledamage
 +set g_balance_contents_drowndelay 10 // time under water before a player begins drowning
 +set g_balance_contents_playerdamage_drowning 20 // damage per second for while player is drowning
 +set g_balance_contents_playerdamage_lava 50 // damage per second for while player is inside lava
 +set g_balance_contents_playerdamage_slime 30 // damage per second for while player is inside slime
 +set g_balance_contents_projectiledamage 10000 // instantly kill projectiles upon touching lava/slime
 +set g_maxpushtime 8.0 "timeout for kill credit when your damage knocks someone into a death trap"
 +// }}}
 +
 +// {{{ powerups
 +set g_balance_powerup_invincible_takedamage 0.25 // only 1/4th damage is taken
 +set g_balance_powerup_invincible_time 30
 +set g_balance_powerup_strength_damage 3
 +set g_balance_powerup_strength_force 3
 +set g_balance_powerup_strength_time 30
 +set g_balance_powerup_strength_selfdamage 1.5
 +set g_balance_powerup_strength_selfforce 1.5
 +set g_balance_superweapons_time 30
 +// }}}
 +
 +// {{{ jetpack/hook
 +set g_jetpack_antigravity 0.8 "factor of gravity compensation of the jetpack"
 +set g_jetpack_acceleration_side 1200 "acceleration of the jetpack in xy direction"
 +set g_jetpack_acceleration_up 600 "acceleration of the jetpack in z direction (note: you have to factor in gravity here, if antigravity is not 1)"
 +set g_jetpack_maxspeed_side 1200 "max speed of the jetpack in xy direction"
 +set g_jetpack_maxspeed_up 600 "max speed of the jetpack in z direction"
 +set g_jetpack_fuel 8 "fuel per second for jetpack"
 +set g_jetpack_attenuation 2 "jetpack sound attenuation"
 +
 +set g_grappling_hook_tarzan 2 // 2: can also pull players
 +set g_balance_grapplehook_speed_fly 1800
 +set g_balance_grapplehook_speed_pull 2000
 +set g_balance_grapplehook_force_rubber 2000
 +set g_balance_grapplehook_force_rubber_overstretch 1000
 +set g_balance_grapplehook_length_min 50
 +set g_balance_grapplehook_stretch 50
 +set g_balance_grapplehook_airfriction 0.2
 +set g_balance_grapplehook_health 50
 +set g_balance_grapplehook_damagedbycontents 1
++set g_balance_grapplehook_refire 0.2
 +// }}}
 +
 +// {{{ weapon properties
 +// {{{ laser
 +set g_balance_laser_melee_animtime 0.3
 +set g_balance_laser_melee_damage 80
 +set g_balance_laser_melee_delay 0.25
 +set g_balance_laser_melee_force 200
 +set g_balance_laser_melee_multihit 1
 +set g_balance_laser_melee_no_doubleslap 1
 +set g_balance_laser_melee_nonplayerdamage 40
 +set g_balance_laser_melee_range 120
 +set g_balance_laser_melee_refire 1.25
 +set g_balance_laser_melee_swing_side 120
 +set g_balance_laser_melee_swing_up 30
 +set g_balance_laser_melee_time 0.15
 +set g_balance_laser_melee_traces 10
 +
 +set g_balance_laser_primary 0 // 0 = shockwave attack, 1 = projectile primary
 +set g_balance_laser_primary_damage 25
 +set g_balance_laser_primary_edgedamage 12.5
 +set g_balance_laser_primary_force 300
 +set g_balance_laser_primary_radius 70
 +set g_balance_laser_primary_speed 6000
 +set g_balance_laser_primary_spread 0
 +set g_balance_laser_primary_refire 0.7
 +set g_balance_laser_primary_animtime 0.2
 +set g_balance_laser_primary_lifetime 5
 +set g_balance_laser_primary_shotangle 0
 +set g_balance_laser_primary_delay 0
 +set g_balance_laser_primary_force_zscale 1.2
 +set g_balance_laser_primary_force_velocitybias 0
 +set g_balance_laser_primary_force_other_scale 1
 +
 +set g_balance_laser_secondary 2 // 0 = switch away to last used weapon, 1 = projectile secondary, 2 = melee secondary
 +set g_balance_laser_secondary_damage 25
 +set g_balance_laser_secondary_edgedamage 12.5
 +set g_balance_laser_secondary_force 400
 +set g_balance_laser_secondary_radius 70
 +set g_balance_laser_secondary_speed 12000
 +set g_balance_laser_secondary_spread 0
 +set g_balance_laser_secondary_refire 0.7
 +set g_balance_laser_secondary_animtime 0.2
 +set g_balance_laser_secondary_lifetime 5
 +set g_balance_laser_secondary_shotangle -90
 +set g_balance_laser_secondary_delay 0
 +set g_balance_laser_secondary_force_zscale 1.25
 +set g_balance_laser_secondary_force_velocitybias 0
 +set g_balance_laser_secondary_force_other_scale 1
 +
 +set g_balance_laser_shockwave_damage 20
 +set g_balance_laser_shockwave_distance 2000
 +set g_balance_laser_shockwave_edgedamage 0
 +set g_balance_laser_shockwave_force 200
 +set g_balance_laser_shockwave_force_forwardbias 50
 +set g_balance_laser_shockwave_force_zscale 2
 +set g_balance_laser_shockwave_jump_damage 20
 +set g_balance_laser_shockwave_jump_edgedamage 0
 +set g_balance_laser_shockwave_jump_force 300
 +set g_balance_laser_shockwave_jump_force_velocitybias 0
 +set g_balance_laser_shockwave_jump_force_zscale 1.25
 +set g_balance_laser_shockwave_jump_multiplier_accuracy 0.5
 +set g_balance_laser_shockwave_jump_multiplier_distance 0.5
 +set g_balance_laser_shockwave_jump_multiplier_min 0
 +set g_balance_laser_shockwave_jump_radius 150
 +set g_balance_laser_shockwave_multiplier_accuracy 0.5
 +set g_balance_laser_shockwave_multiplier_distance 0.5
 +set g_balance_laser_shockwave_multiplier_min 0
 +set g_balance_laser_shockwave_splash_damage 15
 +set g_balance_laser_shockwave_splash_edgedamage 0
 +set g_balance_laser_shockwave_splash_force 100
 +set g_balance_laser_shockwave_splash_force_forwardbias 50
 +set g_balance_laser_shockwave_splash_multiplier_accuracy 0.5
 +set g_balance_laser_shockwave_splash_multiplier_distance 0.5
 +set g_balance_laser_shockwave_splash_multiplier_min 0
 +set g_balance_laser_shockwave_splash_radius 70
 +set g_balance_laser_shockwave_spread_max 120
 +set g_balance_laser_shockwave_spread_min 25
 +
 +set g_balance_laser_switchdelay_drop 0.15
 +set g_balance_laser_switchdelay_raise 0.15
 +set g_balance_laser_reload_ammo 0 //default: 6
 +set g_balance_laser_reload_time 2
 +// }}}
 +// {{{ shotgun
 +set g_balance_shotgun_primary_bullets 14
 +set g_balance_shotgun_primary_damage 4
 +set g_balance_shotgun_primary_force 15
 +set g_balance_shotgun_primary_spread 0.12
 +set g_balance_shotgun_primary_refire 0.75
 +set g_balance_shotgun_primary_animtime 0.2
 +set g_balance_shotgun_primary_ammo 1
 +set g_balance_shotgun_primary_solidpenetration 3.8
 +set g_balance_shotgun_secondary 1
 +set g_balance_shotgun_secondary_melee_delay 0.25 // 0.35 was too slow
 +set g_balance_shotgun_secondary_melee_range 120
 +set g_balance_shotgun_secondary_melee_swing_side 120
 +set g_balance_shotgun_secondary_melee_swing_up 30
 +set g_balance_shotgun_secondary_melee_time 0.15
 +set g_balance_shotgun_secondary_melee_traces 10
 +set g_balance_shotgun_secondary_melee_no_doubleslap 1
 +set g_balance_shotgun_secondary_melee_nonplayerdamage 40
 +set g_balance_shotgun_secondary_melee_multihit 1
 +set g_balance_shotgun_secondary_damage 80
 +set g_balance_shotgun_secondary_force 200
 +set g_balance_shotgun_secondary_refire 1.25
 +set g_balance_shotgun_secondary_animtime 1
 +set g_balance_shotgun_switchdelay_drop 0.2
 +set g_balance_shotgun_switchdelay_raise 0.2
 +set g_balance_shotgun_reload_ammo 0 //default: 5
 +set g_balance_shotgun_reload_time 2
 +// }}}
 +// {{{ uzi
 +set g_balance_uzi_mode 1                              // Activates varible spread for sustained & burst mode secondary
 +set g_balance_uzi_spread_min 0.02
 +set g_balance_uzi_spread_max 0.05
 +set g_balance_uzi_spread_add 0.012
 +
 +set g_balance_uzi_burst 3                             // # of bullets in a burst (if set to 2 or more)
 +set g_balance_uzi_burst_animtime 0.3
 +set g_balance_uzi_burst_refire 0.06           // refire between burst bullets
 +set g_balance_uzi_burst_refire2 0.45  // refire after burst
 +set g_balance_uzi_burst_spread 0.02
 +set g_balance_uzi_burst_damage 25
 +set g_balance_uzi_burst_force 20
 +set g_balance_uzi_burst_ammo 3
 +
 +set g_balance_uzi_first 1
 +set g_balance_uzi_first_damage 14
 +set g_balance_uzi_first_force 5
 +set g_balance_uzi_first_spread 0.03
 +set g_balance_uzi_first_refire 0.125
 +set g_balance_uzi_first_ammo 1
 +
 +set g_balance_uzi_sustained_damage 10 // 100 dps
 +set g_balance_uzi_sustained_force 5
 +set g_balance_uzi_sustained_spread 0.03
 +set g_balance_uzi_sustained_refire 0.1
 +set g_balance_uzi_sustained_ammo 1
 +
 +set g_balance_uzi_solidpenetration 13.1
 +
 +set g_balance_uzi_switchdelay_drop 0.2
 +set g_balance_uzi_switchdelay_raise 0.2
 +
 +set g_balance_uzi_reload_ammo 60 //default: 30
 +set g_balance_uzi_reload_time 2
 +// }}}
 +// {{{ mortar
 +set g_balance_grenadelauncher_primary_type 0
 +set g_balance_grenadelauncher_primary_damage 50
 +set g_balance_grenadelauncher_primary_edgedamage 25
 +set g_balance_grenadelauncher_primary_force 250
 +set g_balance_grenadelauncher_primary_radius 120
 +set g_balance_grenadelauncher_primary_speed 1900
 +set g_balance_grenadelauncher_primary_speed_up 225
 +set g_balance_grenadelauncher_primary_speed_z 0
 +set g_balance_grenadelauncher_primary_spread 0
 +set g_balance_grenadelauncher_primary_lifetime 5
 +set g_balance_grenadelauncher_primary_lifetime2 1
 +set g_balance_grenadelauncher_primary_refire 0.8
 +set g_balance_grenadelauncher_primary_animtime 0.3
 +set g_balance_grenadelauncher_primary_ammo 2
 +set g_balance_grenadelauncher_primary_health 15
 +set g_balance_grenadelauncher_primary_damageforcescale 0
 +set g_balance_grenadelauncher_primary_remote_minbouncecnt 0
 +
 +set g_balance_grenadelauncher_secondary_type 1
 +set g_balance_grenadelauncher_secondary_damage 60
 +set g_balance_grenadelauncher_secondary_edgedamage 30
 +set g_balance_grenadelauncher_secondary_force 250
 +set g_balance_grenadelauncher_secondary_radius 120
 +set g_balance_grenadelauncher_secondary_speed 1400
 +set g_balance_grenadelauncher_secondary_speed_up 150
 +set g_balance_grenadelauncher_secondary_speed_z 0
 +set g_balance_grenadelauncher_secondary_spread 0
 +set g_balance_grenadelauncher_secondary_lifetime 5
 +set g_balance_grenadelauncher_secondary_lifetime_bounce 0.5
 +set g_balance_grenadelauncher_secondary_lifetime_stick 0
 +set g_balance_grenadelauncher_secondary_refire 0.7
 +set g_balance_grenadelauncher_secondary_animtime 0.3
 +set g_balance_grenadelauncher_secondary_ammo 2
 +set g_balance_grenadelauncher_secondary_health 30
 +set g_balance_grenadelauncher_secondary_damageforcescale 4
 +set g_balance_grenadelauncher_secondary_remote_detonateprimary 0
 +
 +set g_balance_grenadelauncher_bouncefactor 0.5
 +set g_balance_grenadelauncher_bouncestop 0.075
 +
 +set g_balance_grenadelauncher_switchdelay_drop 0.2
 +set g_balance_grenadelauncher_switchdelay_raise 0.2
 +
 +set g_balance_grenadelauncher_reload_ammo 0 //default: 12
 +set g_balance_grenadelauncher_reload_time 2
 +// }}}
 +// {{{ electro
 +set g_balance_electro_lightning 0
 +set g_balance_electro_primary_damage 40
 +set g_balance_electro_primary_edgedamage 20
 +set g_balance_electro_primary_force 200
 +set g_balance_electro_primary_force_up 0
 +set g_balance_electro_primary_radius 100
 +set g_balance_electro_primary_comboradius 300
 +set g_balance_electro_primary_speed 2500
 +set g_balance_electro_primary_spread 0
 +set g_balance_electro_primary_lifetime 5
 +set g_balance_electro_primary_refire 0.6
 +set g_balance_electro_primary_animtime 0.3
 +set g_balance_electro_primary_ammo 4
 +set g_balance_electro_primary_range 0
 +set g_balance_electro_primary_falloff_mindist 255 // 0.3 * radius
 +set g_balance_electro_primary_falloff_maxdist 850
 +set g_balance_electro_primary_falloff_halflifedist 425
 +set g_balance_electro_secondary_damage 40
 +set g_balance_electro_secondary_edgedamage 20
 +set g_balance_electro_secondary_force 50
 +set g_balance_electro_secondary_radius 150
 +set g_balance_electro_secondary_speed 1000
 +set g_balance_electro_secondary_speed_up 200
 +set g_balance_electro_secondary_speed_z 0
 +set g_balance_electro_secondary_spread 0.04
 +set g_balance_electro_secondary_lifetime 4
 +set g_balance_electro_secondary_refire 0.2
 +set g_balance_electro_secondary_refire2 1.6
 +set g_balance_electro_secondary_animtime 0.2
 +set g_balance_electro_secondary_ammo 2
 +set g_balance_electro_secondary_health 5
 +set g_balance_electro_secondary_damageforcescale 4
 +set g_balance_electro_secondary_damagedbycontents 1
 +set g_balance_electro_secondary_count 3
 +set g_balance_electro_secondary_bouncefactor 0.3
 +set g_balance_electro_secondary_bouncestop 0.05
 +set g_balance_electro_combo_damage 50
 +set g_balance_electro_combo_edgedamage 25
 +set g_balance_electro_combo_force 120
 +set g_balance_electro_combo_radius 150
 +set g_balance_electro_combo_comboradius 300
 +set g_balance_electro_combo_speed 2000
 +set g_balance_electro_combo_safeammocheck 1
 +set g_balance_electro_switchdelay_drop 0.2
 +set g_balance_electro_switchdelay_raise 0.2
 +set g_balance_electro_reload_ammo 0 //default: 20
 +set g_balance_electro_reload_time 2
 +// }}}
 +// {{{ lightning
 +set g_balance_lightning_primary_ammo 5
 +set g_balance_lightning_primary_animtime 0.2
 +set g_balance_lightning_primary_damage 100
 +set g_balance_lightning_primary_edgedamage 0
 +set g_balance_lightning_primary_falloff_mindist 0
 +set g_balance_lightning_primary_falloff_maxdist 0
 +set g_balance_lightning_primary_falloff_halflifedist 0
 +set g_balance_lightning_primary_force 425
 +set g_balance_lightning_primary_lifetime 0
 +set g_balance_lightning_primary_radius 850
 +set g_balance_lightning_primary_range 800
 +set g_balance_lightning_primary_refire 0.4
 +set g_balance_lightning_primary_speed 0
 +set g_balance_lightning_primary_spread 0
 +set g_balance_lightning_secondary_ammo 5
 +set g_balance_lightning_secondary_animtime 0.5
 +set g_balance_lightning_secondary_damage 100
 +set g_balance_lightning_secondary_damageforcescale 4
 +set g_balance_lightning_secondary_edgedamage 80
 +set g_balance_lightning_secondary_flyingdamage 1
 +set g_balance_lightning_secondary_flyingforce -80
 +set g_balance_lightning_secondary_flyingradius 200
 +set g_balance_lightning_secondary_force -200
 +set g_balance_lightning_secondary_health 1
 +set g_balance_lightning_secondary_lifetime 30
 +set g_balance_lightning_secondary_radius 300
 +set g_balance_lightning_secondary_refire 5
 +set g_balance_lightning_secondary_speed 600
 +// }}}
 +// {{{ crylink 
 +set g_balance_crylink_primary_damage 12
 +set g_balance_crylink_primary_edgedamage 6
 +set g_balance_crylink_primary_force -50
 +set g_balance_crylink_primary_radius 80
 +set g_balance_crylink_primary_speed 2000
 +set g_balance_crylink_primary_spread 0.08
 +set g_balance_crylink_primary_shots 6
 +set g_balance_crylink_primary_bounces 1
 +set g_balance_crylink_primary_refire 0.7
 +set g_balance_crylink_primary_animtime 0.3
 +set g_balance_crylink_primary_ammo 3
 +set g_balance_crylink_primary_bouncedamagefactor 0.5
 +set g_balance_crylink_primary_joindelay 0.1
 +set g_balance_crylink_primary_joinspread 0.2
 +set g_balance_crylink_primary_joinexplode 1
 +set g_balance_crylink_primary_joinexplode_damage 0
 +set g_balance_crylink_primary_joinexplode_edgedamage 0
 +set g_balance_crylink_primary_joinexplode_radius 0
 +set g_balance_crylink_primary_joinexplode_force 0
 +set g_balance_crylink_primary_linkexplode 1
 +
 +set g_balance_crylink_primary_middle_lifetime 5 // range: 35000 full, fades to 70000
 +set g_balance_crylink_primary_middle_fadetime 5
 +set g_balance_crylink_primary_other_lifetime 5
 +set g_balance_crylink_primary_other_fadetime 5
 +
 +set g_balance_crylink_secondary 1
 +set g_balance_crylink_secondary_damage 10
 +set g_balance_crylink_secondary_edgedamage 5
 +set g_balance_crylink_secondary_force -250
 +set g_balance_crylink_secondary_radius 100
 +set g_balance_crylink_secondary_speed 3000
 +set g_balance_crylink_secondary_spread 0.01
 +set g_balance_crylink_secondary_spreadtype 1
 +set g_balance_crylink_secondary_shots 5
 +set g_balance_crylink_secondary_bounces 0
 +set g_balance_crylink_secondary_refire 0.7
 +set g_balance_crylink_secondary_animtime 0.2
 +set g_balance_crylink_secondary_ammo 2
 +set g_balance_crylink_secondary_bouncedamagefactor 0.5
 +set g_balance_crylink_secondary_joindelay 0
 +set g_balance_crylink_secondary_joinspread 0
 +set g_balance_crylink_secondary_joinexplode 0
 +set g_balance_crylink_secondary_joinexplode_damage 0
 +set g_balance_crylink_secondary_joinexplode_edgedamage 0
 +set g_balance_crylink_secondary_joinexplode_radius 0
 +set g_balance_crylink_secondary_joinexplode_force 0
 +set g_balance_crylink_secondary_linkexplode 1
 +
 +set g_balance_crylink_secondary_middle_lifetime 5 // range: 35000 full, fades to 70000
 +set g_balance_crylink_secondary_middle_fadetime 5
 +set g_balance_crylink_secondary_line_lifetime 5
 +set g_balance_crylink_secondary_line_fadetime 5
 +
 +set g_balance_crylink_switchdelay_drop 0.2
 +set g_balance_crylink_switchdelay_raise 0.2
 +
 +set g_balance_crylink_reload_ammo 0 //default: 10
 +set g_balance_crylink_reload_time 2
 +// }}}
 +// {{{ nex
 +set g_balance_nex_primary_damage 80
 +set g_balance_nex_primary_force 400
 +set g_balance_nex_primary_refire 1.5
 +set g_balance_nex_primary_animtime 0.6
 +set g_balance_nex_primary_ammo 6
 +set g_balance_nex_primary_damagefalloff_mindist 0 // 1000    For tZork ;3
 +set g_balance_nex_primary_damagefalloff_maxdist 0 // 3000
 +set g_balance_nex_primary_damagefalloff_halflife 0 // 1500
 +set g_balance_nex_primary_damagefalloff_forcehalflife 0 // 1500
 +
 +set g_balance_nex_secondary 0
 +set g_balance_nex_secondary_charge 0
 +set g_balance_nex_secondary_charge_rate 0.1
 +set g_balance_nex_secondary_chargepool 0
 +set g_balance_nex_secondary_chargepool_regen 0.15
 +set g_balance_nex_secondary_chargepool_pause_regen 1
 +set g_balance_nex_secondary_chargepool_pause_health_regen 1
 +set g_balance_nex_secondary_damage 0
 +set g_balance_nex_secondary_force 0
 +set g_balance_nex_secondary_refire 0
 +set g_balance_nex_secondary_animtime 0
 +set g_balance_nex_secondary_ammo 2
 +set g_balance_nex_secondary_damagefalloff_mindist 0
 +set g_balance_nex_secondary_damagefalloff_maxdist 0
 +set g_balance_nex_secondary_damagefalloff_halflife 0
 +set g_balance_nex_secondary_damagefalloff_forcehalflife 0
 +
 +set g_balance_nex_charge 1
 +set g_balance_nex_charge_mindmg 40
 +set g_balance_nex_charge_start 0.5
 +set g_balance_nex_charge_rate 0.4
 +set g_balance_nex_charge_animlimit 0.5
 +set g_balance_nex_charge_limit 1
 +set g_balance_nex_charge_rot_rate 0
 +set g_balance_nex_charge_rot_pause 0 // Dont rot down until this long after release of charge button
 +set g_balance_nex_charge_shot_multiplier 0
 +set g_balance_nex_charge_velocity_rate 0
 +set g_balance_nex_charge_minspeed 400
 +set g_balance_nex_charge_maxspeed 800
 +
 +set g_balance_nex_switchdelay_drop 0.3
 +set g_balance_nex_switchdelay_raise 0.25
 +
 +set g_balance_nex_reload_ammo 0 //default: 25
 +set g_balance_nex_reload_time 2
 +// }}}
 +// {{{ minstanex
 +set g_balance_minstanex_refire 1
 +set g_balance_minstanex_animtime 0.3
 +set g_balance_minstanex_ammo 10
 +set g_balance_minstanex_laser_ammo 0
 +set g_balance_minstanex_laser_animtime 0.3
 +set g_balance_minstanex_laser_refire 0.7
 +set g_balance_minstanex_switchdelay_drop 0.2
 +set g_balance_minstanex_switchdelay_raise 0.2
 +set g_balance_minstanex_reload_ammo 0 //default: 50
 +set g_balance_minstanex_reload_time 2
 +// }}}
 +// {{{ hagar
 +set g_balance_hagar_primary_damage 25
 +set g_balance_hagar_primary_edgedamage 12.5
 +set g_balance_hagar_primary_force 100
 +set g_balance_hagar_primary_health 15
 +set g_balance_hagar_primary_damageforcescale 0
 +set g_balance_hagar_primary_radius 65
 +set g_balance_hagar_primary_spread 0.03
 +set g_balance_hagar_primary_speed 2500
 +set g_balance_hagar_primary_lifetime 5
 +set g_balance_hagar_primary_refire 0.16667 // 6 rockets per second
 +set g_balance_hagar_primary_ammo 1
 +set g_balance_hagar_secondary 1
 +set g_balance_hagar_secondary_load 1
 +set g_balance_hagar_secondary_load_speed 0.5
 +set g_balance_hagar_secondary_load_spread 0.075
 +set g_balance_hagar_secondary_load_spread_bias 0.5
 +set g_balance_hagar_secondary_load_max 4
 +set g_balance_hagar_secondary_load_hold 4
 +set g_balance_hagar_secondary_load_releasedeath 0
 +set g_balance_hagar_secondary_load_abort 0
 +set g_balance_hagar_secondary_load_linkexplode 0
 +set g_balance_hagar_secondary_load_animtime 0.2
 +set g_balance_hagar_secondary_damage 40
 +set g_balance_hagar_secondary_edgedamage 20
 +set g_balance_hagar_secondary_force 75
 +set g_balance_hagar_secondary_health 15
 +set g_balance_hagar_secondary_damageforcescale 0
 +set g_balance_hagar_secondary_radius 80
 +set g_balance_hagar_secondary_spread 0.05
 +set g_balance_hagar_secondary_speed 2000
 +set g_balance_hagar_secondary_lifetime_min 10
 +set g_balance_hagar_secondary_lifetime_rand 0
 +set g_balance_hagar_secondary_refire 0.5
 +set g_balance_hagar_secondary_ammo 1
 +set g_balance_hagar_switchdelay_drop 0.2
 +set g_balance_hagar_switchdelay_raise 0.2
 +set g_balance_hagar_reload_ammo 0 //default: 25
 +set g_balance_hagar_reload_time 2
 +// }}}
 +// {{{ rocketlauncher
 +set g_balance_rocketlauncher_damage 70
 +set g_balance_rocketlauncher_edgedamage 35
 +set g_balance_rocketlauncher_force 450
 +set g_balance_rocketlauncher_radius 110
 +set g_balance_rocketlauncher_speed 1300
 +set g_balance_rocketlauncher_speedaccel 1300
 +set g_balance_rocketlauncher_speedstart 1000
 +set g_balance_rocketlauncher_lifetime 10
 +set g_balance_rocketlauncher_refire 1.2
 +set g_balance_rocketlauncher_animtime 0.4
 +set g_balance_rocketlauncher_ammo 4
 +set g_balance_rocketlauncher_health 30 // 30 // 5 hitpoints above maximum laser value -- this way lasers can't blow it up, but grenadelauncher still can most the time.
 +set g_balance_rocketlauncher_damageforcescale 1 // low damage force scale so that it can still be affected by other hits, but not so much that it does a 90 degree turn
 +set g_balance_rocketlauncher_detonatedelay 0.02 // positive: timer till detonation is allowed, negative: "security device" that prevents ANY remote detonation if it could hurt its owner, zero: detonatable at any time
 +set g_balance_rocketlauncher_guiderate 70 // max degrees per second
 +set g_balance_rocketlauncher_guideratedelay 0.01 // immediate
 +set g_balance_rocketlauncher_guidegoal 512 // goal distance for (non-laser) guiding (higher = less control, lower = erratic)
 +set g_balance_rocketlauncher_guidedelay 0.2 // delay before guiding kicks in
 +set g_balance_rocketlauncher_guidestop 0 // stop guiding when firing again
 +set g_balance_rocketlauncher_remote_damage 70
 +set g_balance_rocketlauncher_remote_edgedamage 35
 +set g_balance_rocketlauncher_remote_radius 110
 +set g_balance_rocketlauncher_remote_force 400
 +set g_balance_rocketlauncher_switchdelay_drop 0.3
 +set g_balance_rocketlauncher_switchdelay_raise 0.2
 +set g_balance_rocketlauncher_reload_ammo 0 //default: 25
 +set g_balance_rocketlauncher_reload_time 2
 +// }}}
 +// {{{ porto
 +set g_balance_porto_primary_refire 1.5
 +set g_balance_porto_primary_animtime 0.3
 +set g_balance_porto_primary_speed 1000
 +set g_balance_porto_primary_lifetime 5
 +set g_balance_porto_secondary 1
 +set g_balance_porto_secondary_refire 1.5
 +set g_balance_porto_secondary_animtime 0.3
 +set g_balance_porto_secondary_speed 1000
 +set g_balance_porto_secondary_lifetime 5
 +set g_balance_porto_switchdelay_drop 0.2
 +set g_balance_porto_switchdelay_raise 0.2
 +set g_balance_portal_health 200 // these get recharged whenever the portal is used
 +set g_balance_portal_lifetime 15 // these get recharged whenever the portal is used
 +// }}}
 +// {{{ hook
 +set g_balance_hook_primary_fuel 5 // hook monkeys set 0
++set g_balance_hook_primary_refire 0.2 // hook monkeys set 0
 +set g_balance_hook_primary_animtime 0.3 // good shoot anim
 +set g_balance_hook_primary_hooked_time_max 0 // infinite
 +set g_balance_hook_primary_hooked_time_free 2 // 2s being hooked are free
 +set g_balance_hook_primary_hooked_fuel 5 // fuel per second hooked
 +set g_balance_hook_secondary_damage 25 // not much
 +set g_balance_hook_secondary_edgedamage 5 // not much
 +set g_balance_hook_secondary_radius 500 // LOTS
 +set g_balance_hook_secondary_force -2000 // LOTS
 +set g_balance_hook_secondary_ammo 30 // a whole pack
 +set g_balance_hook_secondary_lifetime 5 // infinite
 +set g_balance_hook_secondary_speed 0 // not much throwing
 +set g_balance_hook_secondary_gravity 5 // fast falling
 +set g_balance_hook_secondary_refire 3 // don't drop too many bombs...
 +set g_balance_hook_secondary_animtime 0.3 // good shoot anim
 +set g_balance_hook_secondary_power 3 // effect behaves like a square function
 +set g_balance_hook_secondary_duration 1.5 // effect runs for three seconds
 +set g_balance_hook_secondary_health 15
 +set g_balance_hook_secondary_damageforcescale 0
 +set g_balance_hook_switchdelay_drop 0.2
 +set g_balance_hook_switchdelay_raise 0.2
 +// }}}
 +// {{{ tuba
 +set g_balance_tuba_refire 0.05
 +set g_balance_tuba_animtime 0.05
 +set g_balance_tuba_attenuation 0.5
 +set g_balance_tuba_volume 1
 +set g_balance_tuba_fadetime 0.25
 +set g_balance_tuba_damage 5
 +set g_balance_tuba_edgedamage 0
 +set g_balance_tuba_radius 200
 +set g_balance_tuba_force 40
 +set g_balance_tuba_pitchstep 6
 +set g_balance_tuba_switchdelay_drop 0.2
 +set g_balance_tuba_switchdelay_raise 0.2
 +// }}}
 +// {{{ fireball // this is a superweapon -- lets make it behave as one.
 +set g_balance_fireball_primary_animtime 0.2
 +set g_balance_fireball_primary_bfgdamage 100
 +set g_balance_fireball_primary_bfgforce 0
 +set g_balance_fireball_primary_bfgradius 1000
 +set g_balance_fireball_primary_damage 200
 +set g_balance_fireball_primary_damageforcescale 0
 +set g_balance_fireball_primary_edgedamage 50
 +set g_balance_fireball_primary_force 600
 +set g_balance_fireball_primary_health 0
 +set g_balance_fireball_primary_laserburntime 0.5
 +set g_balance_fireball_primary_laserdamage 80
 +set g_balance_fireball_primary_laseredgedamage 20
 +set g_balance_fireball_primary_laserradius 256
 +set g_balance_fireball_primary_lifetime 15
 +set g_balance_fireball_primary_radius 200
 +set g_balance_fireball_primary_refire 2
 +set g_balance_fireball_primary_refire2 0
 +set g_balance_fireball_primary_speed 1200
 +set g_balance_fireball_primary_spread 0
 +set g_balance_fireball_secondary_animtime 0.3
 +set g_balance_fireball_secondary_damage 40
 +set g_balance_fireball_secondary_damageforcescale 4
 +set g_balance_fireball_secondary_damagetime 5
 +set g_balance_fireball_secondary_force 100
 +set g_balance_fireball_secondary_laserburntime 0.5
 +set g_balance_fireball_secondary_laserdamage 50
 +set g_balance_fireball_secondary_laseredgedamage 20
 +set g_balance_fireball_secondary_laserradius 110
 +set g_balance_fireball_secondary_lifetime 7
 +set g_balance_fireball_secondary_refire 1.5
 +set g_balance_fireball_secondary_speed 900
 +set g_balance_fireball_secondary_speed_up 100
 +set g_balance_fireball_secondary_speed_z 0
 +set g_balance_fireball_secondary_spread 0
 +set g_balance_fireball_switchdelay_drop 0.2
 +set g_balance_fireball_switchdelay_raise 0.2
 +// }}}
Simple merge
Simple merge
Simple merge
@@@ -124,33 -129,16 +124,16 @@@ void Draw_GrapplingHook(
                case ENT_CLIENT_HOOK:
                        intensity = 1;
                        offset = 0;
-                       if(t == NUM_TEAM_1)
+                       switch(t)
                        {
-                               tex = "particles/hook_red";
-                               rgb = '1 .3 .3';
-                       }
-                       else if(t == NUM_TEAM_2)
-                       {
-                               tex = "particles/hook_blue";
-                               rgb = '.3 .3 1';
-                       }
-                       else if(t == NUM_TEAM_3)
-                       {
-                               tex = "particles/hook_yellow";
-                               rgb = '1 1 .3';
-                       }
-                       else if(t == NUM_TEAM_4)
-                       {
-                               tex = "particles/hook_pink";
-                               rgb = '1 .3 1';
-                       }
-                       else
-                       {
-                               tex = "particles/hook_green";
-                               rgb = '.3 1 .3';
+                               case NUM_TEAM_1: tex = "particles/hook_red"; rgb = '1 0.3 0.3'; break;
+                               case NUM_TEAM_2: tex = "particles/hook_blue"; rgb = '0.3 0.3 1'; break;
+                               case NUM_TEAM_3: tex = "particles/hook_yellow"; rgb = '1 1 0.3'; break;
+                               case NUM_TEAM_4: tex = "particles/hook_pink"; rgb = '1 0.3 1'; break;
+                               default: tex = "particles/hook_white"; rgb = getcsqcplayercolor(self.sv_entnum); break;
                        }
                        break;
 -              case ENT_CLIENT_LGBEAM:
 +              case ENT_CLIENT_ARC_BEAM: // todo
                        intensity = bound(0.2, 1 + Noise_Pink(self, frametime) * 1 + Noise_Burst(self, frametime, 0.03) * 0.3, 2);
                        offset = Noise_Brown(self, frametime) * 10;
                        tex = "particles/lgbeam";
Simple merge
Simple merge
Simple merge
@@@ -35,9 -35,9 +35,9 @@@ void spider_web_explode(
        if(self)
        {
                pointparticles(particleeffectnum("electro_impact"), self.origin, '0 0 0', 1);
 -              RadiusDamage(self, self.realowner, 0, 0, 25, world, 25, self.projectiledeathtype, world);
 +              RadiusDamage(self, self.realowner, 0, 0, 25, world, world, 25, self.projectiledeathtype, world);
  
-               for(e = findradius(self.origin, 25); e; e = e.chain) if(e != self) if(e.takedamage && e.deadflag == DEAD_NO) if(e.health > 0)
+               for(e = findradius(self.origin, 25); e; e = e.chain) if(e != self) if(e.takedamage && e.deadflag == DEAD_NO) if(e.health > 0) if(e.monsterid != MON_SPIDER)
                        e.spider_slowness = time + (autocvar_g_monster_spider_attack_web_damagetime);
  
                remove(self);
Simple merge
Simple merge
Simple merge
@@@ -110,6 -260,76 +110,7 @@@ float autocvar_g_balance_grapplehook_sp
  float autocvar_g_balance_grapplehook_speed_pull;
  float autocvar_g_balance_grapplehook_stretch;
  float autocvar_g_balance_grapplehook_damagedbycontents;
 -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_grapplehook_refire;
  float autocvar_g_balance_health_limit;
  float autocvar_g_balance_health_regen;
  float autocvar_g_balance_health_regenlinear;
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -954,6 -974,23 +974,23 @@@ MUTATOR_HOOKFUNCTION(nexball_SetStartIt
        return FALSE;
  }
  
 -      if(self.weapon == WEP_GRENADE_LAUNCHER)
+ MUTATOR_HOOKFUNCTION(nexball_ForbidThrowing)
+ {
 -      if(self.weapon == WEP_GRENADE_LAUNCHER)
++      if(self.weapon == WEP_MORTAR)
+               return TRUE;
+       return FALSE;
+ }
+ MUTATOR_HOOKFUNCTION(nexball_FilterItem)
+ {
+       if(self.classname == "droppedweapon")
++      if(self.weapon == WEP_MORTAR)
+               return TRUE;
+       return FALSE;
+ }
  MUTATOR_DEFINITION(gamemode_nexball)
  {
        MUTATOR_HOOK(PlayerDies, nexball_BallDrop, CBC_ORDER_ANY);
                g_nexball_meter_period = rint(g_nexball_meter_period * 32) / 32; //Round to 1/32ths to send as a byte multiplied by 32
                addstat(STAT_NB_METERSTART, AS_FLOAT, metertime);
  
 -              w_porto(WR_PRECACHE); // abuse
++              W_Porto(WR_INIT); // abuse
                // General settings
                /*
                CVTOV(g_nexball_football_boost_forward);   //100
@@@ -340,9 -337,13 +340,15 @@@ void spawnfunc_trigger_teleport (void
  
  void WarpZone_PostTeleportPlayer_Callback(entity pl)
  {
 +      makevectors(pl.angles);
 +      Reset_ArcBeam(pl, v_forward);
        UpdateCSQCProjectileAfterTeleport(pl);
+       {
+               entity oldself = self;
+               self = pl;
+               anticheat_fixangle();
+               self = oldself;
+       }
        // "disown" projectiles after teleport
        if(pl.owner)
        if(pl.owner == pl.realowner)
index 279537f,0000000..685741d
mode 100644,000000..100644
--- /dev/null
@@@ -1,91 -1,0 +1,91 @@@
-               if(IS_CLIENT(trace_ent))
 +vector W_HitPlotUnnormalizedUntransform(vector screenforward, vector screenright, vector screenup, vector v)
 +{
 +      vector ret;
 +      ret_x = screenright * v;
 +      ret_y = screenup * v;
 +      ret_z = screenforward * v;
 +      return ret;
 +}
 +
 +vector W_HitPlotNormalizedUntransform(vector org, entity targ, vector screenforward, vector screenright, vector screenup, vector v)
 +{
 +      float i, j, k;
 +      vector mi, ma, thisv, myv, ret;
 +
 +      myv = W_HitPlotUnnormalizedUntransform(screenforward, screenright, screenup, org);
 +
 +      // x = 0..1 relative to hitbox; y = 0..1 relative to hitbox; z = distance
 +
 +      mi = ma = targ.origin + 0.5 * (targ.mins + targ.maxs);
 +      for(i = 0; i < 2; ++i) for(j = 0; j < 2; ++j) for(k = 0; k < 2; ++k)
 +      {
 +              thisv = targ.origin;
 +              if(i) thisv_x += targ.maxs_x; else thisv_x += targ.mins_x;
 +              if(j) thisv_y += targ.maxs_y; else thisv_y += targ.mins_y;
 +              if(k) thisv_z += targ.maxs_z; else thisv_z += targ.mins_z;
 +              thisv = W_HitPlotUnnormalizedUntransform(screenforward, screenright, screenup, thisv);
 +              if(i || j || k)
 +              {
 +                      if(mi_x > thisv_x) mi_x = thisv_x; if(ma_x < thisv_x) ma_x = thisv_x;
 +                      if(mi_y > thisv_y) mi_y = thisv_y; if(ma_y < thisv_y) ma_y = thisv_y;
 +                      //if(mi_z > thisv_z) mi_z = thisv_z; if(ma_z < thisv_z) ma_y = thisv_z;
 +              }
 +              else
 +              {
 +                      // first run
 +                      mi = ma = thisv;
 +              }
 +      }
 +
 +      thisv = W_HitPlotUnnormalizedUntransform(screenforward, screenright, screenup, v);
 +      ret_x = (thisv_x - mi_x) / (ma_x - mi_x);
 +      ret_y = (thisv_y - mi_y) / (ma_y - mi_y);
 +      ret_z = thisv_z - myv_z;
 +      return ret;
 +}
 +
 +void W_HitPlotAnalysis(entity player, vector screenforward, vector screenright, vector screenup)
 +{
 +      vector hitplot;
 +      vector org;
 +      float lag;
 +
 +      if(player.hitplotfh >= 0)
 +      {
 +              lag = ANTILAG_LATENCY(player);
 +              if(lag < 0.001)
 +                      lag = 0;
 +              if(!IS_REAL_CLIENT(player))
 +                      lag = 0; // only antilag for clients
 +
 +              org = player.origin + player.view_ofs;
 +              traceline_antilag_force(player, org, org + screenforward * MAX_SHOT_DISTANCE, MOVE_NORMAL, player, lag);
++              if(IS_CLIENT(trace_ent) || (trace_ent.flags & FL_MONSTER))
 +              {
 +                      antilag_takeback(trace_ent, time - lag);
 +                      hitplot = W_HitPlotNormalizedUntransform(org, trace_ent, screenforward, screenright, screenup, trace_endpos);
 +                      antilag_restore(trace_ent);
 +                      fputs(player.hitplotfh, strcat(ftos(hitplot_x), " ", ftos(hitplot_y), " ", ftos(hitplot_z), " ", ftos(player.switchweapon), "\n"));
 +                      //print(strcat(ftos(hitplot_x), " ", ftos(hitplot_y), " ", ftos(hitplot_z), "\n"));
 +              }
 +      }
 +}
 +
 +void W_HitPlotOpen(entity player)
 +{
 +      if(autocvar_g_hitplots || strstrofs(strcat(" ", autocvar_g_hitplots_individuals, " "), strcat(" ", player.netaddress, " "), 0) >= 0)
 +      {
 +              player.hitplotfh = fopen(strcat("hits-", matchid, "-", player.netaddress, "-", ftos(player.playerid), ".plot"), FILE_WRITE);
 +              fputs(player.hitplotfh, strcat("#name ", player.netname, "\n"));
 +      }
 +      else { player.hitplotfh = -1; }
 +}
 +
 +void W_HitPlotClose(entity player)
 +{
 +      if(player.hitplotfh >= 0)
 +      {
 +              fclose(player.hitplotfh);
 +              player.hitplotfh = -1;
 +      }
 +}
index 75cf5b1,0000000..755ab59
mode 100644,000000..100644
--- /dev/null
@@@ -1,462 -1,0 +1,470 @@@
 +// this function calculates w_shotorg and w_shotdir based on the weapon model
 +// offset, trueaim and antilag, and won't put w_shotorg inside a wall.
 +// make sure you call makevectors first (FIXME?)
 +void W_SetupShot_Dir_ProjectileSize_Range(entity ent, vector s_forward, vector mi, vector ma, float antilag, float recoil, string snd, float chan, float maxdamage, float range)
 +{
 +      float nudge = 1; // added to traceline target and subtracted from result  TOOD(divVerent): do we still need this? Doesn't the engine do this now for us?
 +      float oldsolid;
 +      vector vecs, dv;
 +      oldsolid = ent.dphitcontentsmask;
 +      if(ent.weapon == WEP_RIFLE)
 +              ent.dphitcontentsmask = DPCONTENTS_BODY | DPCONTENTS_CORPSE;
 +      else
 +              ent.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE;
 +      if(antilag)
 +              WarpZone_traceline_antilag(world, ent.origin + ent.view_ofs, ent.origin + ent.view_ofs + s_forward * range, MOVE_NORMAL, ent, ANTILAG_LATENCY(ent));
 +              // passing world, because we do NOT want it to touch dphitcontentsmask
 +      else
 +              WarpZone_TraceLine(ent.origin + ent.view_ofs, ent.origin + ent.view_ofs + s_forward * range, MOVE_NOMONSTERS, ent);
 +      ent.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE;
 +
 +      vector vf, vr, vu;
 +      vf = v_forward;
 +      vr = v_right;
 +      vu = v_up;
 +      w_shotend = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos); // warpzone support
 +      v_forward = vf;
 +      v_right = vr;
 +      v_up = vu;
 +
 +      // un-adjust trueaim if shotend is too close
 +      if(vlen(w_shotend - (ent.origin + ent.view_ofs)) < autocvar_g_trueaim_minrange)
 +              w_shotend = ent.origin + ent.view_ofs + s_forward * autocvar_g_trueaim_minrange;
 +
 +      // track max damage
 +      if(accuracy_canbegooddamage(ent))
 +              accuracy_add(ent, ent.weapon, maxdamage, 0);
 +
 +      W_HitPlotAnalysis(ent, v_forward, v_right, v_up);
 +
 +      if(ent.weaponentity.movedir_x > 0)
 +              vecs = ent.weaponentity.movedir;
 +      else
 +              vecs = '0 0 0';
 +
 +      dv = v_right * -vecs_y + v_up * vecs_z;
 +      w_shotorg = ent.origin + ent.view_ofs + dv;
 +
 +      // now move the shotorg forward as much as requested if possible
 +      if(antilag)
 +      {
 +              if(ent.antilag_debug)
 +                      tracebox_antilag(ent, w_shotorg, mi, ma, w_shotorg + v_forward * (vecs_x + nudge), MOVE_NORMAL, ent, ent.antilag_debug);
 +              else
 +                      tracebox_antilag(ent, w_shotorg, mi, ma, w_shotorg + v_forward * (vecs_x + nudge), MOVE_NORMAL, ent, ANTILAG_LATENCY(ent));
 +      }
 +      else
 +              tracebox(w_shotorg, mi, ma, w_shotorg + v_forward * (vecs_x + nudge), MOVE_NORMAL, ent);
 +      w_shotorg = trace_endpos - v_forward * nudge;
 +      // calculate the shotdir from the chosen shotorg
 +      w_shotdir = normalize(w_shotend - w_shotorg);
 +
 +      //vector prevdir = w_shotdir;
 +      //vector prevorg = w_shotorg;
 +      //vector prevend = w_shotend; 
 +
 +      if (antilag)
 +      if (!ent.cvar_cl_noantilag)
 +      {
 +              if (autocvar_g_antilag == 1) // switch to "ghost" if not hitting original
 +              {
 +                      traceline(w_shotorg, w_shotorg + w_shotdir * range, MOVE_NORMAL, ent);
 +                      if (!trace_ent.takedamage)
 +                      {
 +                              traceline_antilag_force (ent, w_shotorg, w_shotorg + w_shotdir * range, MOVE_NORMAL, ent, ANTILAG_LATENCY(ent));
 +                              if (trace_ent.takedamage && IS_PLAYER(trace_ent))
 +                              {
 +                                      entity e;
 +                                      e = trace_ent;
 +                                      traceline(w_shotorg, e.origin, MOVE_NORMAL, ent);
 +                                      if(trace_ent == e)
 +                                              w_shotdir = normalize(trace_ent.origin - w_shotorg);
 +                              }
 +                      }
 +              }
 +              else if(autocvar_g_antilag == 3) // client side hitscan
 +              {
 +                      // this part MUST use prydon cursor
 +                      if (ent.cursor_trace_ent)                 // client was aiming at someone
 +                      if (ent.cursor_trace_ent != ent)         // just to make sure
 +                      if (ent.cursor_trace_ent.takedamage)      // and that person is killable
 +                      if (IS_PLAYER(ent.cursor_trace_ent)) // and actually a player
 +                      {
 +                              // verify that the shot would miss without antilag
 +                              // (avoids an issue where guns would always shoot at their origin)
 +                              traceline(w_shotorg, w_shotorg + w_shotdir * range, MOVE_NORMAL, ent);
 +                              if (!trace_ent.takedamage)
 +                              {
 +                                      // verify that the shot would hit if altered
 +                                      traceline(w_shotorg, ent.cursor_trace_ent.origin, MOVE_NORMAL, ent);
 +                                      if (trace_ent == ent.cursor_trace_ent)
 +                                              w_shotdir = normalize(ent.cursor_trace_ent.origin - w_shotorg);
 +                                      else
 +                                              print("antilag fail\n");
 +                              }
 +                      }
 +              }
 +      }
 +
 +      ent.dphitcontentsmask = oldsolid; // restore solid type (generally SOLID_SLIDEBOX)
 +
 +      if (!autocvar_g_norecoil)
 +              ent.punchangle_x = recoil * -1;
 +
 +      if (snd != "")
 +      {
 +              sound (ent, chan, snd, VOL_BASE, ATTN_NORM);
 +              W_PlayStrengthSound(ent);
 +      }
 +
 +      // nudge w_shotend so a trace to w_shotend hits
 +      w_shotend = w_shotend + normalize(w_shotend - w_shotorg) * nudge;
 +      //if(w_shotend != prevend) { printf("SERVER: shotEND differs: %s - %s\n", vtos(w_shotend), vtos(prevend)); }
 +      //if(w_shotorg != prevorg) { printf("SERVER: shotORG differs: %s - %s\n", vtos(w_shotorg), vtos(prevorg)); }
 +      //if(w_shotdir != prevdir) { printf("SERVER: shotDIR differs: %s - %s\n", vtos(w_shotdir), vtos(prevdir)); }
 +}
 +
 +vector W_CalculateProjectileVelocity(vector pvelocity, vector mvelocity, float forceAbsolute)
 +{
 +      vector mdirection;
 +      float mspeed;
 +      vector outvelocity;
 +
 +      mvelocity = mvelocity * g_weaponspeedfactor;
 +
 +      mdirection = normalize(mvelocity);
 +      mspeed = vlen(mvelocity);
 +
 +      outvelocity = get_shotvelocity(pvelocity, mdirection, mspeed, (forceAbsolute ? 0 : autocvar_g_projectiles_newton_style), autocvar_g_projectiles_newton_style_2_minfactor, autocvar_g_projectiles_newton_style_2_maxfactor);
 +
 +      return outvelocity;
 +}
 +
 +void W_SetupProjVelocity_Explicit(entity proj, vector dir, vector upDir, float pSpeed, float pUpSpeed, float pZSpeed, float spread, float forceAbsolute)
 +{
 +      if(proj.owner == world)
 +              error("Unowned missile");
 +
 +      dir = dir + upDir * (pUpSpeed / pSpeed);
 +      dir_z += pZSpeed / pSpeed;
 +      pSpeed *= vlen(dir);
 +      dir = normalize(dir);
 +
 +      #if 0
 +      if(autocvar_g_projectiles_spread_style != mspercallsstyle)
 +      {
 +              mspercallsum = mspercallcount = 0;
 +              mspercallsstyle = autocvar_g_projectiles_spread_style;
 +      }
 +      mspercallsum -= gettime(GETTIME_HIRES);
 +      #endif
 +      
 +      dir = W_CalculateSpread(dir, spread, g_weaponspreadfactor, autocvar_g_projectiles_spread_style);
 +      
 +      #if 0
 +      mspercallsum += gettime(GETTIME_HIRES);
 +      mspercallcount += 1;
 +      print("avg: ", ftos(mspercallcount / mspercallsum), " per sec\n");
 +      #endif
 +
 +      proj.velocity = W_CalculateProjectileVelocity(proj.owner.velocity, pSpeed * dir, forceAbsolute);
 +}
 +
 +
 +// ====================
 +//  Ballistics Tracing
 +// ====================
 +
 +void FireRailgunBullet (vector start, vector end, float bdamage, float bforce, float mindist, float maxdist, float halflifedist, float forcehalflifedist, float deathtype)
 +{
 +      vector hitloc, force, endpoint, dir;
 +      entity ent, endent;
 +      float endq3surfaceflags;
 +      float totaldmg;
 +      entity o;
 +
 +      float length;
 +      vector beampos;
 +      string snd;
 +      entity pseudoprojectile;
 +      float f, ffs;
 +
 +      pseudoprojectile = world;
 +
 +      dir = normalize(end - start);
 +      length = vlen(end - start);
 +      force = dir * bforce;
 +
 +      // go a little bit into the wall because we need to hit this wall later
 +      end = end + dir;
 +
 +      totaldmg = 0;
 +
 +      // trace multiple times until we hit a wall, each obstacle will be made
 +      // non-solid so we can hit the next, while doing this we spawn effects and
 +      // note down which entities were hit so we can damage them later
 +      o = self;
 +      while (1)
 +      {
 +              if(self.antilag_debug)
 +                      WarpZone_traceline_antilag (self, start, end, FALSE, o, self.antilag_debug);
 +              else
 +                      WarpZone_traceline_antilag (self, start, end, FALSE, o, ANTILAG_LATENCY(self));
 +              if(o && WarpZone_trace_firstzone)
 +              {
 +                      o = world;
 +                      continue;
 +              }
 +
 +              if(trace_ent.solid == SOLID_BSP || trace_ent.solid == SOLID_SLIDEBOX)
 +                      Damage_DamageInfo(trace_endpos, bdamage, 0, 0, force, deathtype, trace_ent.species, self);
 +
 +              // if it is world we can't hurt it so stop now
 +              if (trace_ent == world || trace_fraction == 1)
 +                      break;
 +
 +              // make the entity non-solid so we can hit the next one
 +              trace_ent.railgunhit = TRUE;
 +              trace_ent.railgunhitloc = end;
 +              trace_ent.railgunhitsolidbackup = trace_ent.solid;
 +              trace_ent.railgundistance = vlen(WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos) - start);
 +              trace_ent.railgunforce = WarpZone_TransformVelocity(WarpZone_trace_transform, force);
 +
 +              // stop if this is a wall
 +              if (trace_ent.solid == SOLID_BSP)
 +                      break;
 +
 +              // make the entity non-solid
 +              trace_ent.solid = SOLID_NOT;
 +      }
 +
 +      endpoint = trace_endpos;
 +      endent = trace_ent;
 +      endq3surfaceflags = trace_dphitq3surfaceflags;
 +
 +      // find all the entities the railgun hit and restore their solid state
 +      ent = findfloat(world, railgunhit, TRUE);
 +      while (ent)
 +      {
 +              // restore their solid type
 +              ent.solid = ent.railgunhitsolidbackup;
 +              ent = findfloat(ent, railgunhit, TRUE);
 +      }
 +
 +      // spawn a temporary explosion entity for RadiusDamage calls
 +      //explosion = spawn();
 +
 +      // Find all non-hit players the beam passed close by
 +      if(deathtype == WEP_VAPORIZER || deathtype == WEP_VORTEX)
 +      {
 +              FOR_EACH_REALCLIENT(msg_entity)
 +              if(msg_entity != self)
 +              if(!msg_entity.railgunhit)
 +              if(!(IS_SPEC(msg_entity) && msg_entity.enemy == self)) // we use realclient, so spectators can hear the whoosh too
 +              {
 +                      // nearest point on the beam
 +                      beampos = start + dir * bound(0, (msg_entity.origin - start) * dir, length);
 +
 +                      f = bound(0, 1 - vlen(beampos - msg_entity.origin) / 512, 1);
 +                      if(f <= 0)
 +                              continue;
 +
 +                      snd = strcat("weapons/nexwhoosh", ftos(floor(random() * 3) + 1), ".wav");
 +
 +                      if(!pseudoprojectile)
 +                              pseudoprojectile = spawn(); // we need this so the sound uses the "entchannel4" volume
 +                      soundtoat(MSG_ONE, pseudoprojectile, beampos, CH_SHOTS, snd, VOL_BASE * f, ATTEN_NONE);
 +              }
 +
 +              if(pseudoprojectile)
 +                      remove(pseudoprojectile);
 +      }
 +
 +      // find all the entities the railgun hit and hurt them
 +      ent = findfloat(world, railgunhit, TRUE);
 +      while (ent)
 +      {
 +              // get the details we need to call the damage function
 +              hitloc = ent.railgunhitloc;
 +
 +              f = ExponentialFalloff(mindist, maxdist, halflifedist, ent.railgundistance);
 +              ffs = ExponentialFalloff(mindist, maxdist, forcehalflifedist, ent.railgundistance);
 +
 +              if(accuracy_isgooddamage(self.realowner, ent))
 +                      totaldmg += bdamage * f;
 +
 +              // apply the damage
 +              if (ent.takedamage)
 +                      Damage (ent, self, self, bdamage * f, deathtype, hitloc, ent.railgunforce * ffs);
 +
 +              // create a small explosion to throw gibs around (if applicable)
 +              //setorigin (explosion, hitloc);
 +              //RadiusDamage (explosion, self, 10, 0, 50, world, world, 300, deathtype);
 +
 +              ent.railgunhitloc = '0 0 0';
 +              ent.railgunhitsolidbackup = SOLID_NOT;
 +              ent.railgunhit = FALSE;
 +              ent.railgundistance = 0;
 +
 +              // advance to the next entity
 +              ent = findfloat(ent, railgunhit, TRUE);
 +      }
 +
 +      // calculate hits and fired shots for hitscan
 +      accuracy_add(self, self.weapon, 0, min(bdamage, totaldmg));
 +
 +      trace_endpos = endpoint;
 +      trace_ent = endent;
 +      trace_dphitq3surfaceflags = endq3surfaceflags;
 +}
 +
 +void fireBullet_trace_callback(vector start, vector hit, vector end)
 +{
 +      if(vlen(hit - start) > 16)
 +              trailparticles(world, fireBullet_trace_callback_eff, start, hit);
 +      WarpZone_trace_forent = world;
 +      fireBullet_last_hit = world;
 +}
 +
 +void fireBullet(vector start, vector dir, float spread, float max_solid_penetration, float damage, float force, float dtype, float tracereffects)
 +{
 +      vector  end;
 +
 +      dir = normalize(dir + randomvec() * spread);
 +      end = start + dir * MAX_SHOT_DISTANCE;
 +
 +      entity pl;
 +      fireBullet_last_hit = world;
 +      float solid_penetration_left = 1;
 +      float total_damage = 0;
 +
 +      if(tracereffects & EF_RED)
 +              fireBullet_trace_callback_eff = particleeffectnum("tr_rifle");
 +      else if(tracereffects & EF_BLUE)
 +              fireBullet_trace_callback_eff = particleeffectnum("tr_rifle_weak");
 +      else
 +              fireBullet_trace_callback_eff = particleeffectnum("tr_bullet");
 +
 +      float lag = ANTILAG_LATENCY(self);
 +      if(lag < 0.001)
 +              lag = 0;
 +      if (!IS_REAL_CLIENT(self))
 +              lag = 0;
 +      if(autocvar_g_antilag == 0 || self.cvar_cl_noantilag)
 +              lag = 0; // only do hitscan, but no antilag
 +      if(lag)
++      {
 +              FOR_EACH_PLAYER(pl)
 +                      if(pl != self)
 +                              antilag_takeback(pl, time - lag);
++              FOR_EACH_MONSTER(pl)
++                      antilag_takeback(pl, time - lag);
++      }
 +
 +      WarpZone_trace_forent = self;
 +
 +      for (;;)
 +      {
 +              // TODO also show effect while tracing
 +              WarpZone_TraceBox_ThroughZone(start, '0 0 0', '0 0 0', end, FALSE, WarpZone_trace_forent, world, fireBullet_trace_callback);
 +              dir = WarpZone_TransformVelocity(WarpZone_trace_transform, dir);
 +              end = WarpZone_TransformOrigin(WarpZone_trace_transform, end);
 +              start = trace_endpos;
 +              entity hit = trace_ent;
 +
 +              // When hitting sky, stop.
 +              if (pointcontents(start) == CONTENT_SKY)
 +                      break;
 +
 +              if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
 +                      break;
 +
 +              // if we hit "weapclip", bail out
 +              //
 +              // rationale of this check:
 +              //
 +              // any shader that is solid, nodraw AND trans is meant to clip weapon
 +              // shots and players, but has no other effect!
 +              //
 +              // if it is not trans, it is caulk and should not have this side effect
 +              //
 +              // matching shaders:
 +              //   common/weapclip (intended)
 +              //   common/noimpact (is supposed to eat projectiles, but is erased anyway)
 +              float is_weapclip = 0;
 +              if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NODRAW)
 +              if (!(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NONSOLID))
 +              if (!(trace_dphitcontents & DPCONTENTS_OPAQUE))
 +                      is_weapclip = 1;
 +
 +              if(!hit || hit.solid == SOLID_BSP || hit.solid == SOLID_SLIDEBOX)
 +                      Damage_DamageInfo(start, damage * solid_penetration_left, 0, 0, max(1, force) * dir * solid_penetration_left, dtype, hit.species, self);
 +
 +              if (hit && hit != WarpZone_trace_forent && hit != fireBullet_last_hit)  // Avoid self-damage (except after going through a warp); avoid hitting the same entity twice (engine bug).
 +              {
 +                      fireBullet_last_hit = hit;
 +                      yoda = 0;
 +                      float g = accuracy_isgooddamage(self, hit);
 +                      Damage(hit, self, self, damage * solid_penetration_left, dtype, start, force * dir * solid_penetration_left);
 +                      // calculate hits for ballistic weapons
 +                      if(g)
 +                      {
 +                              // do not exceed 100%
 +                              float added_damage = min(damage - total_damage, damage * solid_penetration_left);
 +                              total_damage += damage * solid_penetration_left;
 +                              accuracy_add(self, self.weapon, 0, added_damage);
 +                      }
 +              }
 +
 +              if (is_weapclip)
 +                      break;
 +
 +              // go through solid!
 +              // outside the world? forget it
 +              if(start_x > world.maxs_x || start_y > world.maxs_y || start_z > world.maxs_z || start_x < world.mins_x || start_y < world.mins_y || start_z < world.mins_z)
 +                      break;
 +
 +              float maxdist;
 +              if(max_solid_penetration < 0)
 +                      break;
 +              else if(hit.ballistics_density < -1)
 +                      break; // -2: no solid penetration, ever
 +              else if(hit.ballistics_density < 0)
 +                      maxdist = vlen(hit.maxs - hit.mins) + 1; // -1: infinite travel distance
 +              else if(hit.ballistics_density == 0)
 +                      maxdist = max_solid_penetration * solid_penetration_left;
 +              else
 +                      maxdist = max_solid_penetration * solid_penetration_left * hit.ballistics_density;
 +
 +              if(maxdist <= autocvar_g_ballistics_mindistance)
 +                      break;
 +
 +              // move the entity along its velocity until it's out of solid, then let it resume
 +              // The previously hit entity is ignored here!
 +              traceline_inverted (start, start + dir * maxdist, MOVE_NORMAL, WarpZone_trace_forent, TRUE, hit);
 +              if(trace_fraction == 1) // 1: we never got out of solid
 +                      break;
 +
 +              float dist_taken = max(autocvar_g_ballistics_mindistance, vlen(trace_endpos - start));
 +              solid_penetration_left *= (dist_taken / maxdist);
 +
 +              // Only show effect when going through a player (invisible otherwise)
 +              if (hit && (hit.solid != SOLID_BSP))
 +                      if(vlen(trace_endpos - start) > 4)
 +                              trailparticles(self, fireBullet_trace_callback_eff, start, trace_endpos);
 +
 +              start = trace_endpos;
 +
 +              if(hit.solid == SOLID_BSP)
 +                      Damage_DamageInfo(start, 0, 0, 0, max(1, force) * normalize(dir) * -solid_penetration_left, dtype, 0, self);
 +      }
 +
 +      if(lag)
++      {
 +              FOR_EACH_PLAYER(pl)
 +                      if(pl != self)
 +                              antilag_restore(pl);
++              FOR_EACH_MONSTER(pl)
++                      antilag_restore(pl);
++      }
 +}