]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge commit 'origin/master' into divVerent/tag_seeker
authorRudolf Polzer <divverent@alientrap.org>
Sat, 8 May 2010 18:43:45 +0000 (20:43 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Sat, 8 May 2010 18:43:45 +0000 (20:43 +0200)
1  2 
balance.cfg
balance25.cfg
balanceSamual.cfg
balanceXPM.cfg
defaultXonotic.cfg
qcsrc/client/View.qc
qcsrc/client/damage.qc
qcsrc/client/projectile.qc
qcsrc/common/constants.qh
qcsrc/server/t_items.qc

diff --combined balance.cfg
index 4d38febccd046d68b21347840c073ad7ab9f2c9a,0a4d8cf7f07cdaf245a6fe867e0f29a26b875eaf..dc4b65459ddb6531166c69bca2e04fc2f6fb5c2e
@@@ -20,7 -20,6 +20,7 @@@ set g_weaponreplace_hlac "
  set g_weaponreplace_campingrifle ""
  set g_weaponreplace_tuba ""
  set g_weaponreplace_fireball ""
 +set g_weaponreplace_seeker ""
  set sv_q3acompat_machineshotgunswap 0 "shorthand for swapping uzi and shotgun (for Q3A map compatibility)"
  // }}}
  
@@@ -41,7 -40,6 +41,7 @@@ set g_start_weapon_hlac 0 "0 = never pr
  set g_start_weapon_campingrifle -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 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_seeker 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_balance_health_start 100
  set g_balance_armor_start 0
  set g_start_ammo_shells 45
@@@ -311,6 -309,8 +311,8 @@@ set g_balance_grenadelauncher_secondary
  set g_balance_grenadelauncher_secondary_ammo 2
  set g_balance_grenadelauncher_secondary_health 70
  set g_balance_grenadelauncher_secondary_damageforcescale 4
+ set g_balance_grenadelauncher_secondary_bouncefactor 0.5
+ set g_balance_grenadelauncher_secondary_bouncestop 0.075
  // }}}
  // {{{ electro
  set g_balance_electro_lightning 0
@@@ -555,88 -555,40 +557,88 @@@ set g_balance_tuba_radius 20
  set g_balance_tuba_force 40
  // }}}
  // {{{ fireball
- set g_balance_fireball_primary_ammo 5
- set g_balance_fireball_primary_animtime 0.3
- set g_balance_fireball_primary_damage 40
+ set g_balance_fireball_primary_ammo 40
+ 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_damagetime 5
- set g_balance_fireball_primary_force 100
+ 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 30
+ set g_balance_fireball_primary_laserdamage 80
  set g_balance_fireball_primary_laseredgedamage 20
- set g_balance_fireball_primary_laserradius 110
- set g_balance_fireball_primary_lifetime 7
- set g_balance_fireball_primary_refire 2
- set g_balance_fireball_primary_speed 900
- set g_balance_fireball_primary_speed_up 100
- set g_balance_fireball_primary_speed_z 0
+ 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_ammo 25
- set g_balance_fireball_secondary_animtime 0.15
- set g_balance_fireball_secondary_bfgdamage 100
- set g_balance_fireball_secondary_bfgforce 500
- set g_balance_fireball_secondary_bfgradius 750
- set g_balance_fireball_secondary_damage 150
+ set g_balance_fireball_secondary_ammo 5
+ 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_edgedamage 0
- set g_balance_fireball_secondary_force 700
- set g_balance_fireball_secondary_health 50
+ 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 30
  set g_balance_fireball_secondary_laseredgedamage 20
- set g_balance_fireball_secondary_laserradius 256
- set g_balance_fireball_secondary_lifetime 15
- set g_balance_fireball_secondary_radius 200
- set g_balance_fireball_secondary_refire 0
- set g_balance_fireball_secondary_refire2 4
- set g_balance_fireball_secondary_speed 650
+ 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
  // }}}
 +// {{{ seeker
 +set g_balance_seeker_flac_ammo 0.5
 +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_spread 0.4
 +set g_balance_seeker_missile_accel 1.05
 +set g_balance_seeker_missile_ammo 2
 +set g_balance_seeker_missile_animtime 0.3
 +set g_balance_seeker_missile_count 4
 +set g_balance_seeker_missile_damage 40
 +set g_balance_seeker_missile_damageforcescale 4
 +set g_balance_seeker_missile_decel 0.9
 +set g_balance_seeker_missile_delay 0.25
 +set g_balance_seeker_missile_edgedamage 10
 +set g_balance_seeker_missile_force 250
 +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_up 300
 +set g_balance_seeker_missile_speed_max 1250
 +set g_balance_seeker_missile_spread 0
 +set g_balance_seeker_missile_turnrate 0.65
 +set g_balance_seeker_tag_ammo 1
 +set g_balance_seeker_tag_animtime 0.3
 +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.7
 +set g_balance_seeker_tag_speed 9000
 +set g_balance_seeker_tag_spread 0
 +// End new seeker
diff --combined balance25.cfg
index e5880743f0774215f0b22aa3f608181c14f5a8b8,6f36e9bc503874ab185662fa52f00fb7550b26a5..e552c827a57d83f53bcc3e5a77d506bedae6697a
@@@ -3,6 -3,7 +3,7 @@@
  // use g_start_weapon_* to also replace the on-startup weapons!
  // example: g_weaponreplace_nex "nex minstanex", then Nexes become MinstaNexes 50% of the times
  // set the cvars to "0" to totally disable a weapon
+ set sv_q3acompat_machineshotgunswap 0 "shorthand for swapping uzi and shotgun"
  set g_weaponreplace_laser ""
  set g_weaponreplace_shotgun ""
  set g_weaponreplace_uzi ""
@@@ -19,7 -20,6 +20,7 @@@ set g_weaponreplace_hlac "
  set g_weaponreplace_campingrifle ""
  set g_weaponreplace_tuba ""
  set g_weaponreplace_fireball ""
 +set g_weaponreplace_seeker ""
  set sv_q3acompat_machineshotgunswap 0 "shorthand for swapping uzi and shotgun (for Q3A map compatibility)"
  // }}}
  
@@@ -40,7 -40,6 +41,7 @@@ set g_start_weapon_hlac -1 "0 = never p
  set g_start_weapon_campingrifle -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_start_weapon_seeker 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_balance_health_start 150
  set g_balance_armor_start 0
  set g_start_ammo_shells 40
@@@ -310,6 -309,8 +311,8 @@@ set g_balance_grenadelauncher_secondary
  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_bouncefactor 0.5
+ set g_balance_grenadelauncher_secondary_bouncestop 0.075
  // }}}
  // {{{ electro
  set g_balance_electro_lightning 0
@@@ -554,88 -555,40 +557,88 @@@ set g_balance_tuba_radius 20
  set g_balance_tuba_force 40
  // }}}
  // {{{ fireball
- set g_balance_fireball_primary_ammo 5
- set g_balance_fireball_primary_animtime 0.3
- set g_balance_fireball_primary_damage 100
+ set g_balance_fireball_primary_ammo 40
+ 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_damagetime 5
- set g_balance_fireball_primary_force 100
+ 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 128
- set g_balance_fireball_primary_lifetime 7
- set g_balance_fireball_primary_refire 1.5
- set g_balance_fireball_primary_speed 700
- set g_balance_fireball_primary_speed_up 100
- set g_balance_fireball_primary_speed_z 0
+ 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_ammo 15
- set g_balance_fireball_secondary_animtime 0.15
- set g_balance_fireball_secondary_bfgdamage 200
- set g_balance_fireball_secondary_bfgforce 0
- set g_balance_fireball_secondary_bfgradius 1500
- set g_balance_fireball_secondary_damage 150
+ set g_balance_fireball_secondary_ammo 5
+ 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_edgedamage 0
- set g_balance_fireball_secondary_force 700
- set g_balance_fireball_secondary_health 50
+ 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 80
+ set g_balance_fireball_secondary_laserdamage 50
  set g_balance_fireball_secondary_laseredgedamage 20
- set g_balance_fireball_secondary_laserradius 256
- set g_balance_fireball_secondary_lifetime 15
- set g_balance_fireball_secondary_radius 200
+ 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_refire2 0
- set g_balance_fireball_secondary_speed 650
+ 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
  // }}}
 +// {{{ seeker
 +set g_balance_seeker_flac_ammo 0.5
 +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_spread 0.4
 +set g_balance_seeker_missile_accel 1.05
 +set g_balance_seeker_missile_ammo 2
 +set g_balance_seeker_missile_animtime 0.3
 +set g_balance_seeker_missile_count 4
 +set g_balance_seeker_missile_damage 40
 +set g_balance_seeker_missile_damageforcescale 4
 +set g_balance_seeker_missile_decel 0.9
 +set g_balance_seeker_missile_delay 0.25
 +set g_balance_seeker_missile_edgedamage 10
 +set g_balance_seeker_missile_force 250
 +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_up 300
 +set g_balance_seeker_missile_speed_max 1250
 +set g_balance_seeker_missile_spread 0
 +set g_balance_seeker_missile_turnrate 0.65
 +set g_balance_seeker_tag_ammo 1
 +set g_balance_seeker_tag_animtime 0.3
 +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.7
 +set g_balance_seeker_tag_speed 9000
 +set g_balance_seeker_tag_spread 0
 +// End new seeker
diff --combined balanceSamual.cfg
index 57aff301932d639496377304fdd9d14b57f86080,c4aa8d5a9f8e71342d21bb103ac5d38e245b5635..c6d194d855de1c223962985313b0f2fae57c035c
@@@ -20,7 -20,6 +20,7 @@@ set g_weaponreplace_hlac 0 // I don't p
  set g_weaponreplace_campingrifle ""
  set g_weaponreplace_tuba ""
  set g_weaponreplace_fireball 0 // Don't kill me div0, just for now until I figure out a good balance for it.
 +set g_weaponreplace_seeker ""
  set sv_q3acompat_machineshotgunswap 0 "shorthand for swapping uzi and shotgun (for Q3A map compatibility)"
  // }}}
  
@@@ -41,7 -40,6 +41,7 @@@ set g_start_weapon_hlac 0 "0 = never pr
  set g_start_weapon_campingrifle -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 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_seeker 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_balance_health_start 100
  set g_balance_armor_start 0
  set g_start_ammo_shells 45
@@@ -311,6 -309,8 +311,8 @@@ set g_balance_grenadelauncher_secondary
  set g_balance_grenadelauncher_secondary_ammo 2
  set g_balance_grenadelauncher_secondary_health 70
  set g_balance_grenadelauncher_secondary_damageforcescale 4
+ set g_balance_grenadelauncher_secondary_bouncefactor 0.5
+ set g_balance_grenadelauncher_secondary_bouncestop 0.075
  // }}}
  // {{{ electro
  set g_balance_electro_lightning 0
@@@ -555,88 -555,40 +557,88 @@@ set g_balance_tuba_radius 20
  set g_balance_tuba_force 40
  // }}}
  // {{{ fireball
- set g_balance_fireball_primary_ammo 5
- set g_balance_fireball_primary_animtime 0.3
- set g_balance_fireball_primary_damage 40
+ set g_balance_fireball_primary_ammo 40
+ 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_damagetime 5
- set g_balance_fireball_primary_force 100
+ 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 30
+ set g_balance_fireball_primary_laserdamage 80
  set g_balance_fireball_primary_laseredgedamage 20
- set g_balance_fireball_primary_laserradius 110
- set g_balance_fireball_primary_lifetime 7
- set g_balance_fireball_primary_refire 2
- set g_balance_fireball_primary_speed 900
- set g_balance_fireball_primary_speed_up 100
- set g_balance_fireball_primary_speed_z 0
+ 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_ammo 25
- set g_balance_fireball_secondary_animtime 0.15
- set g_balance_fireball_secondary_bfgdamage 100
- set g_balance_fireball_secondary_bfgforce 500
- set g_balance_fireball_secondary_bfgradius 750
- set g_balance_fireball_secondary_damage 150
+ set g_balance_fireball_secondary_ammo 5
+ 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_edgedamage 0
- set g_balance_fireball_secondary_force 700
- set g_balance_fireball_secondary_health 50
+ 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 30
+ set g_balance_fireball_secondary_laserdamage 50
  set g_balance_fireball_secondary_laseredgedamage 20
- set g_balance_fireball_secondary_laserradius 256
- set g_balance_fireball_secondary_lifetime 15
- set g_balance_fireball_secondary_radius 200
- set g_balance_fireball_secondary_refire 0
- set g_balance_fireball_secondary_refire2 4
- set g_balance_fireball_secondary_speed 650
+ 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
  // }}}
 +// {{{ seeker
 +set g_balance_seeker_flac_ammo 0.5
 +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_spread 0.4
 +set g_balance_seeker_missile_accel 1.05
 +set g_balance_seeker_missile_ammo 2
 +set g_balance_seeker_missile_animtime 0.3
 +set g_balance_seeker_missile_count 4
 +set g_balance_seeker_missile_damage 40
 +set g_balance_seeker_missile_damageforcescale 4
 +set g_balance_seeker_missile_decel 0.9
 +set g_balance_seeker_missile_delay 0.25
 +set g_balance_seeker_missile_edgedamage 10
 +set g_balance_seeker_missile_force 250
 +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_up 300
 +set g_balance_seeker_missile_speed_max 1250
 +set g_balance_seeker_missile_spread 0
 +set g_balance_seeker_missile_turnrate 0.65
 +set g_balance_seeker_tag_ammo 1
 +set g_balance_seeker_tag_animtime 0.3
 +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.7
 +set g_balance_seeker_tag_speed 9000
 +set g_balance_seeker_tag_spread 0
 +// End new seeker
diff --combined balanceXPM.cfg
index 0000000000000000000000000000000000000000,d5c048ed1aaf636aadb5e3c5a001f04930dc7597..79bb6151e86aeb973bf7c3a480983419f9de043d
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,594 +1,644 @@@
+ // {{{ weapon replacement
+ // NOTE: this only replaces weapons on the map
+ // use g_start_weapon_* to also replace the on-startup weapons!
+ // example: g_weaponreplace_nex "nex minstanex", then Nexes become MinstaNexes 50% of the times
+ // set the cvars to "0" to totally disable a weapon
+ set g_weaponreplace_laser ""
+ set g_weaponreplace_shotgun "uzi"
+ set g_weaponreplace_uzi "shotgun"
+ set g_weaponreplace_grenadelauncher ""
+ set g_weaponreplace_electro ""
+ set g_weaponreplace_crylink ""
+ set g_weaponreplace_nex ""
+ set g_weaponreplace_hagar ""
+ set g_weaponreplace_rocketlauncher ""
+ set g_weaponreplace_porto ""
+ set g_weaponreplace_minstanex ""
+ set g_weaponreplace_hook 0
+ set g_weaponreplace_hlac 0
+ set g_weaponreplace_campingrifle 0
+ set g_weaponreplace_tuba ""
+ set g_weaponreplace_fireball 0
++set g_weaponreplace_seeker 0
+ set sv_q3acompat_machineshotgunswap 0
+ // }}}
+ // {{{ 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 -2 "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_hlac 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_campingrifle 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_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_start_weapon_seeker 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_balance_health_start 125
+ set g_balance_armor_start 0
+ set g_start_ammo_shells 0
+ set g_start_ammo_nails 100
+ 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 210
+ 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_shells 10
+ set g_pickup_shells_max 30
+ set g_pickup_nails 30
+ set g_pickup_nails_max 210
+ set g_pickup_rockets 20
+ set g_pickup_rockets_max 150
+ set g_pickup_cells 50
+ set g_pickup_cells_max 150
+ set g_pickup_fuel 25
+ set g_pickup_fuel_jetpack 50
+ set g_pickup_fuel_max 999
+ set g_pickup_armorsmall 5
+ set g_pickup_armorsmall_max 200
+ set g_pickup_armormedium 25
+ set g_pickup_armormedium_max 200
+ set g_pickup_armorbig 50
+ set g_pickup_armorbig_max 200
+ set g_pickup_armorlarge 100
+ set g_pickup_armorlarge_max 200
+ set g_pickup_healthsmall 5
+ set g_pickup_healthsmall_max 200
+ set g_pickup_healthmedium 25
+ set g_pickup_healthmedium_max 100
+ set g_pickup_healthlarge 50
+ set g_pickup_healthlarge_max 100
+ set g_pickup_healthmega 100
+ set g_pickup_healthmega_max 200
+ set g_pickup_respawntime_short 30
+ set g_pickup_respawntime_medium 30
+ set g_pickup_respawntime_long 30
+ set g_pickup_respawntime_powerup 90
+ set g_pickup_respawntime_weapon 5
+ set g_pickup_respawntime_ammo 30
+ set g_pickup_respawntimejitter_short 0
+ set g_pickup_respawntimejitter_medium 0
+ set g_pickup_respawntimejitter_long 0
+ set g_pickup_respawntimejitter_powerup 15
+ set g_pickup_respawntimejitter_weapon 0
+ set g_pickup_respawntimejitter_ammo 0
+ // }}}
+ // {{{ regen/rot
+ set g_balance_health_regen 0
+ set g_balance_health_regenlinear 0
+ set g_balance_pause_health_regen 0
+ 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.66
+ 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.75
+ set g_balance_weaponswitchdelay 0.05
+ 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.5
+ set g_throughfloor_force 0.7
+ 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)
+ // 3: absolute velocity + player velocity component in shot direction (note: does NOT yield the right relative velocity, but may be good enough, but it is somewhat prone to sniper rockets)
+ // 4: just add the player velocity length to the absolute velocity (tZork's sniper rockets)
+ set g_projectiles_newton_style_2_minfactor 0.7
+ set g_projectiles_newton_style_2_maxfactor 5
+ set g_projectiles_spread_style 4
+ // 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 675
+ set g_balance_falldamage_factor 0.25
+ set g_balance_falldamage_maxdamage 10
+ // }}}
+ // {{{ powerups
+ set g_balance_powerup_invincible_takedamage 0.25
+ set g_balance_powerup_invincible_time 30
+ set g_balance_powerup_strength_damage 4
+ set g_balance_powerup_strength_force 4
+ set g_balance_powerup_strength_time 30
+ set g_balance_powerup_strength_selfdamage 2
+ set g_balance_powerup_strength_selfforce 2
+ // }}}
+ // {{{ 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
+ // }}}
+ // {{{ weapon properties
+ // {{{ laser
+ set g_balance_laser_primary_damage 22
+ set g_balance_laser_primary_edgedamage 0
+ set g_balance_laser_primary_force 200
+ set g_balance_laser_primary_radius 52
+ set g_balance_laser_primary_speed 0
+ set g_balance_laser_primary_spread 0
+ set g_balance_laser_primary_refire 0.1
+ set g_balance_laser_primary_animtime 0.1
+ set g_balance_laser_primary_lifetime 0
+ set g_balance_laser_primary_shotangle 0
+ set g_balance_laser_primary_delay 0
+ set g_balance_laser_gauntlet 1
+ set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
+ set g_balance_laser_secondary_damage 30
+ set g_balance_laser_secondary_edgedamage 0
+ set g_balance_laser_secondary_force 100
+ set g_balance_laser_secondary_radius 3
+ set g_balance_laser_secondary_speed 1500
+ set g_balance_laser_secondary_spread 0
+ set g_balance_laser_secondary_refire 0
+ set g_balance_laser_secondary_animtime 0.15
+ set g_balance_laser_secondary_lifetime 0.066
+ set g_balance_laser_secondary_shotangle 0
+ set g_balance_laser_secondary_delay 0
+ // }}}
+ // {{{ shotgun
+ set g_balance_shotgun_primary_bullets 36
+ set g_balance_shotgun_primary_damage 3
+ set g_balance_shotgun_primary_force 10
+ set g_balance_shotgun_primary_spread 0.18
+ set g_balance_shotgun_primary_refire 1
+ set g_balance_shotgun_primary_animtime 0.7
+ set g_balance_shotgun_primary_ammo 1
+ set g_balance_shotgun_primary_speed 12000
+ set g_balance_shotgun_primary_bulletconstant 75 // 3.8qu
+ set g_balance_shotgun_secondary 0
+ set g_balance_shotgun_secondary_bullets 22
+ set g_balance_shotgun_secondary_damage 2
+ set g_balance_shotgun_secondary_force 12
+ set g_balance_shotgun_secondary_spread 0.25
+ set g_balance_shotgun_secondary_refire 1.5
+ set g_balance_shotgun_secondary_animtime 0.2
+ set g_balance_shotgun_secondary_ammo 0.5
+ set g_balance_shotgun_secondary_speed 12000
+ set g_balance_shotgun_secondary_bulletconstant 75 // 3.8qu
+ // }}}
+ // {{{ uzi
+ set g_balance_uzi_first 0
+ set g_balance_uzi_first_damage 10
+ set g_balance_uzi_first_force 50
+ set g_balance_uzi_first_spread 0.007
+ set g_balance_uzi_first_refire 0.15
+ set g_balance_uzi_first_ammo 1
+ set g_balance_uzi_sustained_damage 7
+ set g_balance_uzi_sustained_force 30
+ set g_balance_uzi_sustained_spread 0.02
+ set g_balance_uzi_sustained_refire 0.1
+ set g_balance_uzi_sustained_ammo 1
+ set g_balance_uzi_speed 18000
+ set g_balance_uzi_bulletconstant 115 // 13.1qu
+ // }}}
+ // {{{ mortar
+ set g_balance_grenadelauncher_primary2secondary 1
+ set g_balance_grenadelauncher_primary_damage 60
+ set g_balance_grenadelauncher_primary_edgedamage 10
+ 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_refire 0.7
+ set g_balance_grenadelauncher_primary_animtime 0.3
+ set g_balance_grenadelauncher_primary_ammo 2
+ set g_balance_grenadelauncher_secondary_damage 65
+ set g_balance_grenadelauncher_secondary_edgedamage 10
+ 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 2
+ set g_balance_grenadelauncher_secondary_refire 0.8
+ 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_bouncefactor 0.5
+ set g_balance_grenadelauncher_secondary_bouncestop 0.075
+ // }}}
+ // {{{ electro
+ set g_balance_electro_lightning 1
+ set g_balance_electro_primary_damage 6
+ set g_balance_electro_primary_edgedamage 0
+ set g_balance_electro_primary_force 60 // todo: probaby needs movement nerfing code when hit?
+ set g_balance_electro_primary_radius 850
+ set g_balance_electro_primary_comboradius 0
+ 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.066
+ set g_balance_electro_primary_animtime 0.066
+ set g_balance_electro_primary_ammo 0.66
+ set g_balance_electro_secondary_damage 45
+ set g_balance_electro_secondary_spread 0.10
+ set g_balance_electro_secondary_edgedamage 10
+ set g_balance_electro_secondary_force 100
+ 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 2.5
+ set g_balance_electro_secondary_refire 0.1
+ 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 5
+ set g_balance_electro_secondary_damageforcescale 4
+ set g_balance_electro_secondary_count 3
+ set g_balance_electro_combo_damage 50
+ set g_balance_electro_combo_edgedamage 0
+ set g_balance_electro_combo_force 100
+ set g_balance_electro_combo_radius 250
+ set g_balance_electro_combo_comboradius 0
+ set g_balance_electro_combo_speed 2000
+ // }}}
+ // {{{ crylink
+ set g_balance_crylink_primary_damage 18
+ set g_balance_crylink_primary_edgedamage 18
+ set g_balance_crylink_primary_force 50
+ set g_balance_crylink_primary_radius 100
+ set g_balance_crylink_primary_speed 1100
+ set g_balance_crylink_primary_spread 0.01
+ set g_balance_crylink_primary_shots 4
+ set g_balance_crylink_primary_bounces 0
+ set g_balance_crylink_primary_refire 0.4
+ set g_balance_crylink_primary_animtime 0.4
+ set g_balance_crylink_primary_ammo 2
+ set g_balance_crylink_primary_bouncedamagefactor 0.5
+ 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_star_lifetime 3 // range: 700 full, fades to 2450
+ set g_balance_crylink_primary_star_fadetime 5
+ set g_balance_crylink_primary_other_lifetime 3 // range: 700 full, fades to 2450
+ set g_balance_crylink_primary_other_fadetime 5
+ set g_balance_crylink_secondary 0
+ set g_balance_crylink_secondary_damage 8
+ set g_balance_crylink_secondary_edgedamage 8
+ set g_balance_crylink_secondary_force -40
+ set g_balance_crylink_secondary_radius 10
+ set g_balance_crylink_secondary_speed 4000
+ set g_balance_crylink_secondary_spread 0.01
+ set g_balance_crylink_secondary_shots 3
+ set g_balance_crylink_secondary_bounces 0
+ set g_balance_crylink_secondary_refire 0.1
+ set g_balance_crylink_secondary_animtime 0.1
+ set g_balance_crylink_secondary_ammo 1
+ set g_balance_crylink_secondary_bouncedamagefactor 0.5
+ 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
+ // }}}
+ // {{{ nex
+ set g_balance_nex_damage 100
+ set g_balance_nex_force 200
+ set g_balance_nex_refire 1.25
+ set g_balance_nex_animtime 0.8
+ set g_balance_nex_ammo 5
+ set g_balance_nex_damagefalloff_mindist 1000
+ set g_balance_nex_damagefalloff_maxdist 3000
+ set g_balance_nex_damagefalloff_halflife 1500
+ set g_balance_nex_damagefalloff_forcehalflife 1500
+ // }}}
+ // {{{ minstanex
+ set g_balance_minstanex_refire 1
+ set g_balance_minstanex_animtime 1
+ set g_balance_minstanex_ammo 10
+ // }}}
+ // {{{ hagar
+ set g_balance_hagar_primary_damage 12
+ set g_balance_hagar_primary_edgedamage 5
+ set g_balance_hagar_primary_force 70
+ set g_balance_hagar_primary_radius 50
+ set g_balance_hagar_primary_spread 0
+ set g_balance_hagar_primary_speed 1800
+ set g_balance_hagar_primary_lifetime 5
+ set g_balance_hagar_primary_refire 0.1
+ set g_balance_hagar_primary_ammo 1
+ set g_balance_hagar_secondary 0
+ set g_balance_hagar_secondary_damage 11
+ set g_balance_hagar_secondary_edgedamage 4
+ set g_balance_hagar_secondary_force 60
+ set g_balance_hagar_secondary_radius 70
+ set g_balance_hagar_secondary_spread 0.05
+ 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.1
+ set g_balance_hagar_secondary_ammo 1
+ // }}}
+ // {{{ rocketlauncher
+ set g_balance_rocketlauncher_damage 90
+ set g_balance_rocketlauncher_edgedamage 30
+ 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 10
+ set g_balance_rocketlauncher_refire 0.9
+ set g_balance_rocketlauncher_animtime 0.7
+ set g_balance_rocketlauncher_ammo 3
+ set g_balance_rocketlauncher_health 0
+ set g_balance_rocketlauncher_damageforcescale 0
+ set g_balance_rocketlauncher_detonatedelay 9999 // 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.15 // delay before guiding kicks in
+ set g_balance_rocketlauncher_guidestop 1 // stop guiding when firing again
+ set g_balance_rocketlauncher_laserguided_speed 1000 //650
+ set g_balance_rocketlauncher_laserguided_speedaccel 0
+ set g_balance_rocketlauncher_laserguided_speedstart 1000
+ set g_balance_rocketlauncher_laserguided_turnrate 0.75 //0.5
+ set g_balance_rocketlauncher_laserguided_allow_steal 1
+ // }}}
+ // {{{ 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 30
+ 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 2 // hook monkeys set 0
+ set g_balance_hook_primary_refire 0 // 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 3 // 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 10 // 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
+ // }}}
+ // {{{ hlac
+ set g_balance_hlac_primary_spread_min 0.01
+ set g_balance_hlac_primary_spread_max 0.03
+ set g_balance_hlac_primary_spread_add 0.002
+ set g_balance_hlac_primary_spread_crouchmod 0.5
+ set g_balance_hlac_primary_damage 6
+ set g_balance_hlac_primary_edgedamage 0
+ set g_balance_hlac_primary_force 60 // todo: probably needs movement nerfing code when hit
+ set g_balance_hlac_primary_radius 850
+ set g_balance_hlac_primary_speed 0
+ set g_balance_hlac_primary_lifetime 0
+ set g_balance_hlac_primary_refire 0.066
+ set g_balance_hlac_primary_animtime 0.066
+ set g_balance_hlac_primary_ammo 0.066
+ set g_balance_hlac_secondary 0
+ set g_balance_hlac_secondary_spread 0.06
+ set g_balance_hlac_secondary_spread_crouchmod 0.5
+ set g_balance_hlac_secondary_damage 11
+ set g_balance_hlac_secondary_edgedamage 10
+ set g_balance_hlac_secondary_force 60
+ set g_balance_hlac_secondary_radius 70
+ set g_balance_hlac_secondary_speed 20000
+ set g_balance_hlac_secondary_lifetime 5
+ set g_balance_hlac_secondary_refire 0.6
+ set g_balance_hlac_secondary_animtime 0.6
+ set g_balance_hlac_secondary_ammo 10
+ set g_balance_hlac_secondary_shots 5
+ // }}}
+ // {{{ campingrifle
+ set g_balance_campingrifle_magazinecapacity 0
+ set g_balance_campingrifle_reloadtime 2 // matches reload anim
+ set g_balance_campingrifle_auto_reload_after_changing_weapons 0
+ set g_balance_campingrifle_bursttime 0.85 // 0.35 - 0.1 + 0.35 - 0.1 + 0.35 = three secondaries
+ set g_balance_campingrifle_tracer 1
+ set g_balance_campingrifle_primary_damage 50
+ set g_balance_campingrifle_primary_headshotaddeddamage 80
+ set g_balance_campingrifle_primary_spread 0
+ set g_balance_campingrifle_primary_force 0
+ set g_balance_campingrifle_primary_speed 35000
+ set g_balance_campingrifle_primary_lifetime 5
+ set g_balance_campingrifle_primary_refire 0.7
+ set g_balance_campingrifle_primary_animtime 0.7
+ set g_balance_campingrifle_primary_ammo 10
+ set g_balance_campingrifle_primary_bulletconstant 130 // 56.3qu
+ set g_balance_campingrifle_primary_burstcost 0.35 // require same cooldown as secondary, note it's smaller than primary refire time
+ set g_balance_campingrifle_secondary_damage 15
+ set g_balance_campingrifle_secondary_headshotaddeddamage 25
+ set g_balance_campingrifle_secondary_spread 0.02
+ set g_balance_campingrifle_secondary_force 0
+ set g_balance_campingrifle_secondary_speed 20000
+ set g_balance_campingrifle_secondary_lifetime 5
+ set g_balance_campingrifle_secondary_refire 0.1
+ set g_balance_campingrifle_secondary_animtime 0.1
+ set g_balance_campingrifle_secondary_ammo 4
+ set g_balance_campingrifle_secondary_bulletconstant 130 // 18.3qu
+ set g_balance_campingrifle_secondary_burstcost 0.35
+ // }}}
+ // {{{ 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
+ // }}}
+ // {{{ fireball
+ set g_balance_fireball_primary_ammo 40
+ 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_ammo 5
+ 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
+ // }}}
++// {{{ seeker
++set g_balance_seeker_flac_ammo 0.5
++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_spread 0.4
++set g_balance_seeker_missile_accel 1.05
++set g_balance_seeker_missile_ammo 2
++set g_balance_seeker_missile_animtime 0.3
++set g_balance_seeker_missile_count 4
++set g_balance_seeker_missile_damage 40
++set g_balance_seeker_missile_damageforcescale 4
++set g_balance_seeker_missile_decel 0.9
++set g_balance_seeker_missile_delay 0.25
++set g_balance_seeker_missile_edgedamage 10
++set g_balance_seeker_missile_force 250
++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_up 300
++set g_balance_seeker_missile_speed_max 1250
++set g_balance_seeker_missile_spread 0
++set g_balance_seeker_missile_turnrate 0.65
++set g_balance_seeker_tag_ammo 1
++set g_balance_seeker_tag_animtime 0.3
++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.7
++set g_balance_seeker_tag_speed 9000
++set g_balance_seeker_tag_spread 0
++// End new seeker
diff --combined defaultXonotic.cfg
index bb0294b714a840bca0c68ad8f3f01fba95a8a977,add2de9b5932fe8386fb854f2663162ddaf09980..699503aeaa8c52f6428726f816d13a50f77a3105
@@@ -193,12 -193,6 +193,12 @@@ seta crosshair_hlac_color_green 0.65     "c
  seta crosshair_hlac_color_blue 0.2    "crosshair color blue component to display when wielding the H.L.A.C."
  seta crosshair_hlac_color_alpha 1     "crosshair alpha value to display when wielding the H.L.A.C."
  seta crosshair_hlac_size 0.6  "crosshair size when wielding the H.L.A.C."
 +seta crosshair_seeker ""      "crosshair to display when wielding the TAG Seeker"
 +seta crosshair_seeker_color_red 1     "crosshair color red component to display when wielding the TAG seeker"
 +seta crosshair_seeker_color_green 0.35        "crosshair color green component to display when wielding the TAG seeker"
 +seta crosshair_seeker_color_blue 0.35 "crosshair color blue component to display when wielding the TAG seeker"
 +seta crosshair_seeker_color_alpha 0.9 "crosshair alpha value to display when wielding the TAG seeker"
 +seta crosshair_seeker_size 0.8        "crosshair size when wielding the TAG seeker"
  seta crosshair_campingrifle ""        "crosshair to display when wielding the campingrifle"
  seta crosshair_campingrifle_color_red 0.85    "crosshair color red component to display when wielding the campingrifle"
  seta crosshair_campingrifle_color_green 0.5   "crosshair color green component to display when wielding the campingrifle"
@@@ -251,6 -245,8 +251,8 @@@ cl_deathfade 1 // fade screen to dark r
  cl_bobcycle 0 // how long the cycle of up/down view movement takes (only works if cl_bob is not 0), default is 0.6
  cl_bob 0.01 // how much view moves up/down when moving (does not move if cl_bobcycle is 0, but still enables cl_bobmodel), default is 0.02
  cl_bobmodel 1 // whether to have gun model move around on screen when moving (only works if cl_bob is not 0), default is 1
+ cl_leanmodel 1 // enables weapon leaning effect when looking around
+ cl_followmodel 1 // enables weapon pushing / pulling effect when walking
  cl_rollangle 0 // amount of view tilt when strafing, default is 2.0
  v_kicktime 0 // how long damage kicks of the view last, default is 0 seconds
  gl_polyblend 0.5 // whether to use screen tints, default is 1
@@@ -317,6 -313,10 +319,10 @@@ set g_telefrags 
  set g_telefrags_avoid 0
  set g_teleport_maxspeed 0 "maximum speed that a player can keep when going through a teleporter (if a misc_teleporter_dest also has a cap the smallest one of these will be used), 0 = don't limit, -1 = keep no speed"
  
+ set g_respawn_ghosts 1 "if 1 dead bodies become ghosts and float away when the player respawns"
+ set g_respawn_ghosts_speed 5 "the speed with which respawn ghosts float and rotate"
+ set g_respawn_ghosts_maxtime 6 "maximum amount of time a respawn ghost can last, minimum time is half this value. 0 disables and ghosts fade when the body would"
  // fragmessage: This allows extra information to be displayed with the frag centerprints. 
  set sv_fragmessage_information_ping 0 "Enable ping display information, 0 = Never display; 1 = Always display (If the player is a bot, it will say bot instead of the ping.)"
  set sv_fragmessage_information_handicap 1 "Enable handicap display information, 0 = Never display; 1 = Only when the player has handicap on; 2 = Always display (Displays Off if off)"
@@@ -1434,11 -1434,22 +1440,22 @@@ alias sethostname "set menu_use_default
  set sv_foginterval 0
  
  // Audio track names (for old-style "cd loop NUMBER" usage)
- set g_cdtracks_remaplist "digital-pursuit breakdown-easy brainsukker chaos-fog infight neuronal-diving subcities thru-the-mirror calling-bogus beast-of-insanity thunder brokenlight brokenlight stairs sixtyfour_ desert3 ninesix sixtyfour_revisited northern-lights" "list used by mapinfo system to automatically assign cdtracks - must match the cd remap command"
- set g_cdtracks_dontusebydefault "digital-pursuit thunder brokenlight" "list used by mapinfo system to automatically assign cdtracks - must be a subset of g_cdtracks_remaplist"
+ set _cdtrack_first "1"
+ alias _cdtrack_0 "g_cdtracks_remaplist \"$g_cdtracks_remaplist $1\""
+ alias _cdtrack_1 "g_cdtracks_remaplist \"$1\"; set _cdtrack_first 0"
+ alias _cdtrack "_cdtrack_$_cdtrack_first $2"
+ set g_cdtracks_remaplist ""
+ exec cdtracks.cfg
+ unset _cdtrack_first
+ unalias _cdtrack_0
+ unalias _cdtrack_1
+ unalias _cdtrack
  cd remap $g_cdtracks_remaplist
  set sv_intermission_cdtrack ""
- set menu_cdtrack brokenlight
+ set g_cdtracks_dontusebydefault ""
+ set menu_cdtrack "ninesix"
  
  // maxidle (in seconds): kick players idle for more than that amount of time
  set sv_maxidle 0
@@@ -1804,3 -1815,12 +1821,12 @@@ mod_q1bsp_polygoncollisions 
  // improve some minor details
  sv_gameplayfix_gravityunaffectedbyticrate 1
  sv_gameplayfix_nogravityonground 1
+ // autodemo deleting
+ seta cl_autodemo_delete_keeprecords 0 "when 1, records with a newly made race/cts demo are kept even if cl_autodemo_delete is used to delete demos"
+ // freeze camera
+ set cl_lockview 0 "when 1, the camera does not move any more"
+ // we now use mastervolume
+ volume 1
diff --combined qcsrc/client/View.qc
index fa7ca03ba75049e4a7b6c01470874608e877016d,afa884df1ea055a8a1c578d16243e5f3811b9431..0802adef8711f8417811dd418e319f3cba848dce
@@@ -291,10 -291,6 +291,10 @@@ float TrueAimCheck(
                        mi = '-16 -16 -16';
                        ma = '16 16 16';
                        break;
 +              case WEP_SEEKER: // projectile has a size!
 +                      mi = '-2 -2 -2';
 +                      ma = '2 2 2';
 +                      break;
                case WEP_ELECTRO: // projectile has a size!
                        mi = '0 0 -3';
                        ma = '0 0 -3';
@@@ -345,6 -341,10 +345,10 @@@ float view_set
  float camera_mode;
  string NextFrameCommand;
  void CSQC_SPIDER_HUD();
+ void CSQC_RAPTOR_HUD();
+ vector freeze_pmove_org, freeze_input_angles;
  void CSQC_UpdateView(float w, float h)
  {
        entity e;
        pmove_org = warpzone_fixview_origin - vo;
        input_angles = warpzone_fixview_angles;
  
+       if(cvar("cl_lockview"))
+       {
+               pmove_org = warpzone_fixview_origin = freeze_pmove_org;
+               input_angles = freeze_input_angles;
+               R_SetView(VF_ORIGIN, pmove_org + vo);
+               R_SetView(VF_ANGLES, input_angles);
+               //R_SetView(VF_CL_VIEWANGLES, input_angles);
+       }
+       freeze_pmove_org = pmove_org;
+       freeze_input_angles = input_angles;
        // Render the Scene
        if(!intermission || !view_set)
        {
        }
  #endif
  
+       TargetMusic_Advance();
        Fog_Force();
  
        drawframetime = max(0.000001, time - drawtime);
        }
        else if(hud == HUD_WAKIZASHI)
          CSQC_WAKIZASHI_HUD();
+     else if(hud == HUD_RAPTOR)
+         CSQC_RAPTOR_HUD();
        else
        {
                if(cvar("r_letterbox") == 0)
@@@ -861,13 -875,13 +879,13 @@@ void Sbar_Draw()
  
  void CSQC_SPIDER_HUD()
  {
-       float rockets, reload, heat, hp, shield, i;
+       float rockets, reload, heat, hp, shield;
        vector picsize, hudloc;
  
      // Fetch health & ammo stats
      hp      = bound(0,getstatf(STAT_VEHICLESTAT_HEALTH), 1);
        shield  = bound(0,getstatf(STAT_VEHICLESTAT_SHIELD), 1);
-       heat    = min(getstatf(STAT_VEHICLESTAT_RELOAD1), 1);
+       heat    = min(getstatf(STAT_VEHICLESTAT_RELOAD1), 2);
        rockets =     getstati(STAT_VEHICLESTAT_AMMO2);
        reload  = min(getstatf(STAT_VEHICLESTAT_RELOAD2), 1);
  
      picsize = drawgetimagesize(spider_a2) * 0.5;
      drawpic(hudloc + '120 96  0', spider_a2, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
  
      drawstring(hudloc + '145 19  0', strcat(ftos(rint(hp * 100)), "%"),'15 15 0','0 1 0', 1, DRAWFLAG_NORMAL);
      drawstring(hudloc + '175 34  0', strcat(ftos(rint(shield * 100)), "%"),'15 15 0','0 0 1', 1, DRAWFLAG_NORMAL);
      drawstring(hudloc + '136 102  0', strcat(ftos(100 - rint(heat * 100)), "%"),'14 14 0','1 1 0', 1, DRAWFLAG_NORMAL);
  
      picsize = drawgetimagesize(spider_a1) * 0.85;
  
  }
  
+ #define raptor_h "gfx/vehicles/hud_bg.tga"
+ #define raptor_b "gfx/vehicles/raptor.tga"
+ #define raptor_g1 "gfx/vehicles/raptor_guns.tga"
+ #define raptor_g2 "gfx/vehicles/raptor_bombs.tga"
+ #define raptor_s "gfx/vehicles/shiled.tga"
+ #define spider_a1 "gfx/hud/sb_rocket.tga"
+ #define spider_a2 "gfx/sb_bullets.tga"
+ void CSQC_RAPTOR_HUD()
+ {
+       float rockets, reload, heat, hp, shield, energy;
+       vector picsize, hudloc;
+     // Fetch health & ammo stats
+     hp      = bound(0,getstatf(STAT_VEHICLESTAT_HEALTH), 1);
+       shield  = bound(0,getstatf(STAT_VEHICLESTAT_SHIELD), 1);
+       reload  = min(getstatf(STAT_VEHICLESTAT_RELOAD1), 1);
+       energy  = min(getstatf(STAT_VEHICLESTAT_ENERGY),  1);
+     // Draw the crosshairs
+     picsize = drawgetimagesize(SPIDER_CROSS);
+     picsize_x *= cvar_or("cl_vehicle_spiderbot_cross_size", 1);
+     picsize_y *= cvar_or("cl_vehicle_spiderbot_cross_size", 1);
+     drawpic('0.5 0 0' * (vid_conwidth - picsize_x) + '0 0.5 0' * (vid_conheight - picsize_y), SPIDER_CROSS, picsize, '1 1 1', cvar_or("cl_vehicle_spiderbot_cross_alpha",0.6), DRAWFLAG_NORMAL);
+     hudloc_y =  4;
+     hudloc_x = 4;
+     picsize = drawgetimagesize(raptor_h) * 0.5;
+     drawpic(hudloc, raptor_h, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+     picsize = drawgetimagesize(spider_a2) * 0.5;
+     drawpic(hudloc + '120 96  0', spider_a2, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+     drawstring(hudloc + '145 19  0', strcat(ftos(rint(hp * 100)), "%"),'15 15 0','0 1 0', 1, DRAWFLAG_NORMAL);
+     drawstring(hudloc + '175 34  0', strcat(ftos(rint(shield * 100)), "%"),'15 15 0','0 0 1', 1, DRAWFLAG_NORMAL);
+     drawstring(hudloc + '136 102 0', strcat(ftos(rint(energy * 100)), "%"),'15 15 0','0.5 0.5 1', 1, DRAWFLAG_NORMAL);
+     picsize = drawgetimagesize(spider_a1) * 0.85;
+     if(reload == 1)
+     {
+         drawpic(hudloc + '132 54  0', spider_a1, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+         drawstring(hudloc + '179 69  0', strcat(ftos(rint(reload * 100)), "%"),'14 14 0','0 1 0', 0.5, DRAWFLAG_NORMAL);
+     }
+     else
+     {
+         drawpic(hudloc + '132 54  0', spider_a1, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+         drawstring(hudloc + '179 69  0', strcat(ftos(rint(reload * 100)), "%"),'14 14 0','0 0 1', 1, DRAWFLAG_NORMAL);
+     }
+     picsize = drawgetimagesize(raptor_b) * 0.5;
+     hudloc_y = 10.5;
+     hudloc_x = 10.5;
+     drawpic(hudloc, raptor_s, picsize, '1 1 1', shield, DRAWFLAG_NORMAL);
+     drawpic(hudloc, raptor_b, picsize, '0 1 0' * hp + '1 0 0' * (1 - hp), 1, DRAWFLAG_NORMAL);
+     drawpic(hudloc, raptor_g1, picsize, '1 1 1' * energy + '1 0 0' * (1 - energy), 1, DRAWFLAG_NORMAL);
+     drawpic(hudloc, raptor_g2, picsize, '1 1 1' * reload + '1 0 0' *  (1 - reload), 1, DRAWFLAG_NORMAL);
+       if (sb_showscores)
+       {
+               Sbar_DrawScoreboard();
+               Sbar_DrawCenterPrint();
+       }
+ }
  #define waki_h "gfx/vehicles/hud_bg.tga"
  #define waki_b "gfx/vehicles/waki.tga"
  #define waki_e "gfx/vehicles/waki_e.tga"
diff --combined qcsrc/client/damage.qc
index 503b5e4b3ba61261dfbc2017f0d81437cdd66a82,59e84690b852e95353118c3d7e390b37733f1a67..9e90bee2240161c7293450712830d826fac63b53
@@@ -218,56 -218,6 +218,56 @@@ void Ent_DamageInfo(float isNew
                                if(!issilent)
                                        sound(self, CHAN_PROJECTILE, "weapons/hookbomb_impact.wav", VOL_BASE, ATTN_NORM);
                                break;
 +                      case WEP_SEEKER:
 +                              org2 = org + backoff * 6;
 +                              if(secondary)
 +                              {
 +                                      pointparticles(particleeffectnum("flac_explode"), org2, '0 0 0', 1);
 +                                      if(!issilent)
 +                                      {
 +                                              if (r<0.15)
 +                                                      sound(self, CHAN_PROJECTILE, "weapons/flacexp1.wav", 1, ATTN_NORM);
 +                                              else if (r<0.7)
 +                                                      sound(self, CHAN_PROJECTILE, "weapons/flacexp2.wav", 1, ATTN_NORM);
 +                                              else
 +                                                      sound(self, CHAN_PROJECTILE, "weapons/flacexp3.wav", 1, ATTN_NORM);
 +                                      }
 +                              }
 +                              else
 +                              {
 +                                      if(bounce)
 +                                      {
 +                                              pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
 +                                              if(!issilent)
 +                                              {
 +                                                      if (r<0.15)
 +                                                              sound(self, CHAN_PROJECTILE, "weapons/tagexp1.wav", 1, ATTN_NORM);
 +                                                      else if (r<0.7)
 +                                                              sound(self, CHAN_PROJECTILE, "weapons/tagexp2.wav", 1, ATTN_NORM);
 +                                                      else
 +                                                              sound(self, CHAN_PROJECTILE, "weapons/tagexp3.wav", 1, ATTN_NORM);
 +                                              }
 +                                      }
 +                                      else if(headshot)
 +                                      {
 +                                              if(!issilent)
 +                                                      sound(self, CHAN_PROJECTILE, "weapons/tag_impact.wav", 1, ATTN_NORM);
 +                                      }
 +                                      else
 +                                      {
 +                                              pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
 +                                              if(!issilent)
 +                                              {
 +                                                      if (r<0.15)
 +                                                              sound(self, CHAN_PROJECTILE, "weapons/seekerexp1.wav", 1, ATTN_NORM);
 +                                                      else if (r<0.7)
 +                                                              sound(self, CHAN_PROJECTILE, "weapons/seekerexp2.wav", 1, ATTN_NORM);
 +                                                      else
 +                                                              sound(self, CHAN_PROJECTILE, "weapons/seekerexp3.wav", 1, ATTN_NORM);
 +                                              }
 +                                      }
 +                              }
 +                              break;
                        case WEP_HLAC:
                                org2 = org + backoff * 6;
                                pointparticles(particleeffectnum("laser_impact"), org2, backoff * 1000, 1);
                                break;
                        case WEP_FIREBALL:
                                if(secondary)
+                               {
+                                       // firemine goes out silently
+                               }
+                               else
                                {
                                        org2 = org + backoff * 16;
                                        pointparticles(particleeffectnum("fireball_explode"), org2, '0 0 0', 1);
                                        if(!issilent)
                                                sound(self, CHAN_PROJECTILE, "weapons/fireball_impact2.wav", VOL_BASE, ATTN_NORM * 0.25); // long range boom
                                }
-                               else
-                               {
-                                       // firemine goes out silently
-                               }
                                break;
                        default:
                                dprint("Unhandled damage of weapon ", ftos(hitwep), "\n");
@@@ -315,9 -265,6 +315,9 @@@ void DamageInfo_Precache(
        precache_sound("weapons/crylink_impact.wav");
        precache_sound("weapons/electro_impact.wav");
        precache_sound("weapons/electro_impact_combo.wav");
 +      precache_sound("weapons/flacexp1.wav");
 +      precache_sound("weapons/flacexp2.wav");
 +      precache_sound("weapons/flacexp3.wav");
        precache_sound("weapons/grenade_impact.wav");
        precache_sound("weapons/hagexp1.wav");
        precache_sound("weapons/hagexp2.wav");
        precache_sound("weapons/rocket_impact.wav");
        precache_sound("weapons/fireball_impact.wav");
        precache_sound("weapons/fireball_impact2.wav");
 +      precache_sound("weapons/seekerexp1.wav");
 +      precache_sound("weapons/seekerexp2.wav");
 +      precache_sound("weapons/seekerexp3.wav");
 +      precache_sound("weapons/tagexp1.wav");
 +      precache_sound("weapons/tagexp2.wav");
 +      precache_sound("weapons/tagexp3.wav");
 +      precache_sound("weapons/tag_impact.wav");
  }
index d77e03c09ae42e600ed136174a7d0eeb52be2396,dc5183f28b037a16deac05755acb20b54c6f8819..7072a1b59af8705fbe4dddeba768bd6c29c2958f
@@@ -213,13 -213,15 +213,15 @@@ void Ent_Projectile(
                        self.velocity_x = ReadCoord();
                        self.velocity_y = ReadCoord();
                        self.velocity_z = ReadCoord();
-                       self.gravity = ReadCoord();
+                       if(f & 0x10)
+                               self.gravity = ReadCoord();
+                       else
+                               self.gravity = 0; // none
                        self.move_origin = self.origin;
                        self.move_velocity = self.velocity;
                }
  
-               if(time == self.spawntime || (self.count & 0x80) || (f & 0x10))
+               if(time == self.spawntime || (self.count & 0x80) || (f & 0x08))
                {
                        self.trail_oldorigin = self.origin;
                        if(!(self.count & 0x80))
                        case PROJECTILE_HAGAR_BOUNCING: setmodel(self, "models/hagarmissile.mdl");self.traileffect = particleeffectnum("TR_GRENADE"); self.scale = 0.4; break;
                        case PROJECTILE_FIREBALL: self.model = ""; self.modelindex = 0; self.traileffect = particleeffectnum("fireball"); break; // particle effect is good enough
                        case PROJECTILE_FIREMINE: self.model = ""; self.modelindex = 0; self.traileffect = particleeffectnum("firemine"); break; // particle effect is good enough
 +                      case PROJECTILE_TAG: setmodel(self, "models/laser.mdl"); self.traileffect = particleeffectnum("TR_ROCKET"); break;
 +                      case PROJECTILE_FLAC: setmodel(self, "models/hagarmissile.mdl"); self.scale = 0.4; self.traileffect = particleeffectnum("TR_ROCKET"); break;
 +                      case PROJECTILE_SEEKER: setmodel(self, "models/tagrocket.md3"); self.scale = 2; self.traileffect = particleeffectnum("TR_ROCKET"); break;
                        default:
                                error("Received invalid CSQC projectile, can't work with this!");
                                break;
                                self.maxs = '0 0 -3';
                                self.move_movetype = MOVETYPE_BOUNCE;
                                self.move_touch = SUB_Null;
+                               self.move_bounce_factor = g_balance_grenadelauncher_secondary_bouncefactor;
+                               self.move_bounce_stopspeed = g_balance_grenadelauncher_secondary_bouncestop;
                                break;
                        case PROJECTILE_PORTO_RED:
                                self.colormod = '2 1 1';
                                self.mins = '-4 -4 -4';
                                self.maxs = '4 4 4';
                                break;
 +                      case PROJECTILE_TAG:
 +                              loopsound(self, CHAN_PROJECTILE, "weapons/tag_rocket_fly.wav", VOL_BASE, ATTN_NORM);
 +                              self.mins = '-2 -2 -2';
 +                              self.maxs = '2 2 2';
 +                              break;
 +                      case PROJECTILE_FLAC:
 +                              self.mins = '-2 -2 -2';
 +                              self.maxs = '2 2 2';
 +                              break;
 +                      case PROJECTILE_SEEKER:
 +                              self.mins = '-4 -4 -4';
 +                              self.maxs = '4 4 4';
 +                              break;
                        default:
                                break;
                }
@@@ -390,11 -378,9 +394,11 @@@ void Projectile_Precache(
        precache_model("models/laser.mdl");
        precache_model("models/plasmatrail.mdl");
        precache_model("models/rocket.md3");
 +      precache_model("models/tagrocket.md3");
        precache_model("models/tracer.mdl");
        precache_sound("weapons/electro_fly.wav");
        precache_sound("weapons/rocket_fly.wav");
        precache_sound("weapons/fireball_fly.wav");
        precache_sound("weapons/fireball_fly2.wav");
 +      precache_sound("weapons/tag_rocket_fly.wav");
  }
index 3dae7e6567dea9d7251b3b39abef590400463d0c,5daa3e51f740f00b405385cd7808ac49a7ecaa65..cdf92f0709035ad3a2dc012518ab84b06fe08db5
@@@ -56,6 -56,7 +56,7 @@@ const float TE_CSQC_PINGPLREPORT = 107
  const float TE_CSQC_VOTE = 108;
  const float TE_CSQC_VOTERESET = 109;
  const float TE_CSQC_ANNOUNCE = 110;
+ const float TE_CSQC_TARGET_MUSIC = 111;
  
  const float RACE_NET_CHECKPOINT_HIT_QUALIFYING = 0; // byte checkpoint, short time, short recordtime, string recordholder
  const float RACE_NET_CHECKPOINT_CLEAR = 1;
@@@ -98,6 -99,7 +99,7 @@@ const float ENT_CLIENT_MODELEFFECT = 22
  const float ENT_CLIENT_TUBANOTE = 23;
  const float ENT_CLIENT_WARPZONE = 24;
  const float ENT_CLIENT_WARPZONE_CAMERA = 25;
+ const float ENT_CLIENT_TRIGGER_MUSIC = 26;
  
  const float ENT_CLIENT_TURRET = 40;
  
@@@ -285,6 -287,7 +287,7 @@@ const float STAT_HUD = 50
  const float HUD_NORMAL = 0;
  const float HUD_SPIDERBOT = 10;
  const float HUD_WAKIZASHI = 11;
+ const float HUD_RAPTOR    = 12;
  
  const float STAT_VEHICLESTAT_HEALTH  = 60;
  const float STAT_VEHICLESTAT_SHIELD  = 61;
@@@ -367,7 -370,7 +370,7 @@@ float      CHAN_VOICE                              = 2; // Voice/Radi
        // on world: UNUSED
        // on players: voice                             VOICE
        // on entities: ambient                          AMBIENT
-       // on csqc: UNUSED
+       // on csqc: background music                     BGM
  float CHAN_TRIGGER                    = 3; // Triggers/Items
        // on world: UNUSED
        // on players: item pickup                       ITEMS
@@@ -407,7 -410,6 +410,7 @@@ float      ATTN_MAX                                = 3.984375
  // this sets sounds and other properties of the projectiles in csqc
  float PROJECTILE_ELECTRO = 1;
  float PROJECTILE_ROCKET = 2;
 +float PROJECTILE_TAG = 3;
  float PROJECTILE_BULLET = 4;
  float PROJECTILE_CRYLINK = 5;
  float PROJECTILE_ELECTRO_BEAM = 6;
@@@ -415,8 -417,6 +418,8 @@@ float PROJECTILE_GRENADE = 7
  float PROJECTILE_GRENADE_BOUNCING = 8;
  float PROJECTILE_LASER = 9;
  float PROJECTILE_HLAC = 10;
 +float PROJECTILE_SEEKER = 11;
 +float PROJECTILE_FLAC = 12;
  float PROJECTILE_PORTO_RED = 13;
  float PROJECTILE_PORTO_BLUE = 14;
  float PROJECTILE_HOOKBOMB = 15;
diff --combined qcsrc/server/t_items.qc
index df762dbe3204fd7e356f8ddd8e8922b5bd5189b3,d9c3240603852704483caeea7b341d8195221120..02ad99fc991c9917f14484e118a154ed16f4037b
@@@ -682,6 -682,9 +682,9 @@@ void StartItem (string itemmodel, strin
  {
        startitem_failed = FALSE;
  
+       self.items = itemid;
+       self.weapons = weaponid;
        // is it a dropped weapon?
        if (self.classname == "droppedweapon")
        {
        }
        else
        {
-               self.items = itemid;
-               self.weapons = weaponid;
                if(MUTATOR_CALLHOOK(FilterItem)) // error means we do not want the item
                {
                        startitem_failed = TRUE;
@@@ -1487,6 -1487,12 +1487,6 @@@ void spawnfunc_item_jetpack(void
        StartItem ("models/items/g_jetpack.md3", "misc/itempickup.wav", g_pickup_respawntime_powerup, g_pickup_respawntimejitter_powerup, "Jet pack", IT_JETPACK, 0, FL_POWERUP, commodity_pickupevalfunc, BOT_PICKUP_RATING_LOW);
  }
  
 -// we no longer have the seeker
 -void spawnfunc_weapon_seeker()
 -{
 -      spawnfunc_weapon_fireball();
 -}
 -
  
  #define OP_SET 0
  #define OP_MIN 1