r2308 - in trunk: data data/qcsrc/server pro

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Apr 13 20:26:50 EDT 2007


Author: lordhavoc
Date: 2007-04-13 20:26:50 -0400 (Fri, 13 Apr 2007)
New Revision: 2308

Added:
   trunk/data/physicsQ3.cfg
   trunk/data/weapons.cfg
   trunk/pro/physicsPro.cfg
   trunk/pro/weaponsPro.cfg
Modified:
   trunk/data/default.cfg
   trunk/data/physics15.cfg
   trunk/data/physics151.cfg
   trunk/data/physics151b.cfg
   trunk/data/physics16rc1.cfg
   trunk/data/physicsQ.cfg
   trunk/data/physicsQBF.cfg
   trunk/data/physicsQBFplus.cfg
   trunk/data/physicsQBR.cfg
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/g_damage.qc
   trunk/data/qcsrc/server/g_world.qc
   trunk/data/qcsrc/server/miscfunctions.qc
   trunk/data/qcsrc/server/t_items.qc
   trunk/data/qcsrc/server/w_common.qc
   trunk/data/qcsrc/server/w_laser.qc
   trunk/data/qcsrc/server/w_nex.qc
   trunk/data/qcsrc/server/w_rocketlauncher.qc
   trunk/data/qcsrc/server/w_shotgun.qc
   trunk/data/qcsrc/server/w_uzi.qc
   trunk/pro/default.cfg
Log:
weapons now have force settings
added g_pickup_* cvars to configure how much ammo, health, armor, each
pickup item gives (and maximum limits on each)
added linear rot/regen settings for health/armor
added physicsQ3.cfg and added more cvars to the other physics*.cfg files
moved weapon and pickup related settings from default.cfg to weapons.cfg
updated the pro mod so that it works and is quite playable
moved minstagib laser secondary fire code to w_nex.qc (still
minstagib-only, just moved the code to a better place)


Modified: trunk/data/default.cfg
===================================================================
--- trunk/data/default.cfg	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/default.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -82,10 +82,15 @@
 vid_conwidth 640
 vid_conheight 480
 v_deathtilt 0 // needed for spectators (who are dead to avoid prediction)
-cl_bobcycle 0
-cl_bobup 0
-cl_rollangle 0
 
+// these settings determine how much the view is affected by movement/damage
+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.02 // 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_rollangle 0 // amount of view tilt when strafing, default is 2.0
+v_kicktime 0.5 // how long damage kicks of the view last, default is 0.5 seconds
+gl_polyblend 1 // whether to use screen tints, default is 1
+
 // nexuiz-linux-*.sh will use this
 seta vid_x11_display ""
 // This can have three possible settings:
@@ -105,28 +110,10 @@
 // restart server if all players hit "ready"-button
 set sv_ready_restart 0
 
-cl_forwardspeed 400
-cl_backspeed 400
-cl_sidespeed 400
-cl_upspeed 400
-cl_movement 1
-cl_netinputpacketlosstolerance 0
-cl_movement_accelerate 5.5
-cl_movement_edgefriction 0
-cl_movement_friction 5
-cl_movement_jumpvelocity 300
-cl_movement_maxairspeed 220
-cl_movement_maxspeed 400
-cl_movement_stepheight 34
-cl_stairsmoothspeed 200
-seta cl_autoswitch 1
-edgefriction 0
-set g_balance_jumpheight 300
-sv_accelerate 5.5
-sv_airaccelerate 5.5
-sv_friction 5
+// use default physics
+exec physicsQBR.cfg
+
 set sv_spectator_speed_multiplier 1.5
-sv_stepheight 34
 seta sv_spectate 1
 seta sv_defaultcharacter 0
 seta sv_defaultplayermodel models/player/nexus.zym
@@ -135,9 +122,23 @@
 net_messagetimeout 300
 net_connecttimeout 30
 sv_jumpstep 1 // step up stairs while jumping, makes it easier to reach ledges
-// make sure to use default physics
-exec physicsQBR.cfg
 
+cl_movement 1
+seta cl_autoswitch 1
+cl_netinputpacketlosstolerance 0
+cl_stairsmoothspeed 200
+cl_forwardspeed $sv_maxspeed
+cl_backspeed $sv_maxspeed
+cl_sidespeed $sv_maxspeed
+cl_upspeed $sv_maxspeed
+cl_movement_accelerate $sv_accelerate
+cl_movement_edgefriction $edgefriction
+cl_movement_friction $sv_friction
+cl_movement_jumpvelocity $g_balance_jumpheight
+cl_movement_maxairspeed $sv_maxairspeed
+cl_movement_maxspeed $sv_maxspeed
+cl_movement_stepheight $sv_stepheight
+
 seta cl_playerdetailreduction 0 // the higher, the less detailed
 
 set bot_number 0 // number of bots in server
@@ -184,19 +185,6 @@
 pausable 0
 set g_antilag 0
 set g_weapon_stay 0
-set g_start_weapon_laser 1
-set g_start_weapon_shotgun 1
-set g_start_weapon_uzi 0
-set g_start_weapon_grenadelauncher 0
-set g_start_weapon_electro 0
-set g_start_weapon_crylink 0
-set g_start_weapon_nex 0
-set g_start_weapon_hagar 0
-set g_start_weapon_rocketlauncher 0
-set g_start_ammo_shells 50
-set g_start_ammo_nails 0
-set g_start_ammo_rockets 0
-set g_start_ammo_cells 0
 set g_powerup_superhealth 1
 set g_powerup_strength 1
 set g_powerup_shield 1
@@ -223,7 +211,7 @@
 set g_maplist_defaultlist 'dm_aggressor''dm_aneurysm''dm_basement''dm_bleach''dm_bluesky''dm_bloodprison''dm_darkzone''dm_downer''dm_evilspace''dm_farewell''dm_runningman''dm_runningman_1on1remix''dm_silvercity''dm_skyway''dm_slimepit''dm_soylent''dm_starship''dm_stormkeep''dm_toxic''dm_warfare''dom_aggressor''dom_aneurysm''dom_basement''dom_bleach''dom_darkzone''dom_downer''dom_evilspace''dom_runningman''dom_runningman_1on1remix''dom_silvercity''dom_skyway''dom_slimepit''dom_soylent''dom_starship''dom_stormkeep''dom_toxic''lms_aggressor''lms_basement''lms_bleach''lms_bluesky''lms_bloodprison''lms_downer''lms_evilspace''lms_farewell''lms_runningman''lms_runningman_1on1remix''lms_skyway''lms_slimepit''lms_soylent''lms_starship''lms_stormkeep''lms_toxic''lms_warfare''rune_aggressor''rune_aneurysm''rune_basement''rune_bleach''rune_darkzone''rune_downer''rune_evilspace''rune_runningman''rune_runningman_1on1remix''rune_silvercity''rune_skyway''rune_slimepit''rune_soylent''rune_starship''rune_stormkeep''rune_toxic''tdm_aggressor''tdm_aneurysm''tdm_basement''tdm_bleach''tdm_darkzone''tdm_downer''tdm_evilspace''tdm_farewell''tdm_runningman''tdm_runningman_1on1remix''tdm_silvercity''tdm_skyway''tdm_slimepit''tdm_soylent''tdm_starship''tdm_stormkeep''tdm_toxic''tdm_warfare'
 seta g_maplist $g_maplist_defaultlist
 seta g_maplist_index 0 // this is used internally for saving position in maplist cycle
-seta g_maplist_selectrandom 0 // if 1, a random map will be chosen as next map; DEPRECATED in favor of g_maplist_shuffle
+seta g_maplist_selectrandom 0 // if 1, a random map will be chosen as next map - DEPRECATED in favor of g_maplist_shuffle
 seta g_maplist_shuffle 0 // new randomization method: like selectrandom, but avoid playing the same maps in short succession. This works by taking out the first element and inserting it into g_maplist with a bias to the end of the list.
 alias g_maplist_shufflenow "set _g_maplist_shufflenow 1"
 alias g_maplist_add "set _g_maplist_add $1"
@@ -398,12 +386,16 @@
 // server game balance settings
 set g_balance_armor_regen 0
 set g_balance_armor_rot 0.1
+set g_balance_armor_regenlinear 0
+set g_balance_armor_rotlinear 0
 set g_balance_armor_stable 100
 set g_balance_armor_limit 999
 set g_balance_armor_start 0
 set g_balance_armor_blockpercent 0.6
 set g_balance_health_regen 0.1
 set g_balance_health_rot 0.1
+set g_balance_health_regenlinear 0
+set g_balance_health_rotlinear 0
 set g_balance_health_stable 100
 set g_balance_health_limit 999
 set g_balance_health_start 150
@@ -417,147 +409,8 @@
 set g_balance_powerup_strength_time 30
 
 // weapon balance settings follow
+exec weapons.cfg
 
-set g_balance_laser_damage 35
-set g_balance_laser_edgedamage 10
-set g_balance_laser_force 400
-set g_balance_laser_radius 70
-set g_balance_laser_speed 9000
-set g_balance_laser_refire 0.7
-set g_balance_laser_animtime 0.3
-set g_balance_laser_lifetime 9
-
-set g_balance_shotgun_primary_bullets 5
-set g_balance_shotgun_primary_damage 12
-set g_balance_shotgun_primary_spread 0.09
-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_secondary_bullets 5
-set g_balance_shotgun_secondary_damage 12
-set g_balance_shotgun_secondary_spread 0.16
-set g_balance_shotgun_secondary_refire 1.35
-set g_balance_shotgun_secondary_animtime 0.2
-set g_balance_shotgun_secondary_ammo 1
-
-set g_balance_uzi_first_damage 30
-set g_balance_uzi_first_spread 0.01
-set g_balance_uzi_first_refire 0.2
-set g_balance_uzi_first_ammo 1
-set g_balance_uzi_sustained_damage 16
-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_grenadelauncher_primary_damage 65
-set g_balance_grenadelauncher_primary_edgedamage 35
-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_lifetime 30
-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 35
-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_lifetime 2.5
-set g_balance_grenadelauncher_secondary_refire 0.6
-set g_balance_grenadelauncher_secondary_animtime 0.3
-set g_balance_grenadelauncher_secondary_ammo 2
-
-set g_balance_electro_primary_damage 80
-set g_balance_electro_primary_edgedamage 0
-set g_balance_electro_primary_force 200
-set g_balance_electro_primary_radius 150
-set g_balance_electro_primary_speed 2000
-set g_balance_electro_primary_lifetime 2
-set g_balance_electro_primary_refire 0.9
-set g_balance_electro_primary_animtime 0.05
-set g_balance_electro_primary_ammo 2
-set g_balance_electro_secondary_damage 60
-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_lifetime 5
-set g_balance_electro_secondary_refire 0.3
-set g_balance_electro_secondary_animtime 0.05
-set g_balance_electro_secondary_ammo 2
-set g_balance_electro_combo_damage 70
-set g_balance_electro_combo_edgedamage 0
-set g_balance_electro_combo_force 200
-set g_balance_electro_combo_radius 250
-
-set g_balance_crylink_primary_damage 15
-set g_balance_crylink_primary_edgedamage 0
-set g_balance_crylink_primary_force 55
-set g_balance_crylink_primary_radius 3
-set g_balance_crylink_primary_speed 7000
-set g_balance_crylink_primary_spread 0.06
-set g_balance_crylink_primary_shots 4
-set g_balance_crylink_primary_lifetime 9
-set g_balance_crylink_primary_refire 0.25
-set g_balance_crylink_primary_animtime 0.15
-set g_balance_crylink_primary_ammo 1
-set g_balance_crylink_secondary_damage 20
-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_shots 7
-set g_balance_crylink_secondary_lifetime 9
-set g_balance_crylink_secondary_refire 0.5
-set g_balance_crylink_secondary_animtime 0.15
-set g_balance_crylink_secondary_ammo 3
-
-
-set g_balance_nex_damage 140
-set g_balance_nex_refire 1.5
-set g_balance_nex_animtime 0.3
-set g_balance_minstagib_nex_refire 1.5
-set g_balance_minstagib_nex_animtime 0.3
-set g_balance_nex_ammo 5
-set g_balance_nex_respawntime_modifier 1
-
-set g_balance_hagar_primary_damage 40
-set g_balance_hagar_primary_edgedamage 15
-set g_balance_hagar_primary_force 100
-set g_balance_hagar_primary_radius 70
-set g_balance_hagar_primary_spread 0.025
-set g_balance_hagar_primary_speed 3000
-set g_balance_hagar_primary_lifetime 10
-set g_balance_hagar_primary_refire 0.15
-set g_balance_hagar_primary_ammo 1
-set g_balance_hagar_secondary_damage 40
-set g_balance_hagar_secondary_edgedamage 15
-set g_balance_hagar_secondary_force 100
-set g_balance_hagar_secondary_radius 70
-set g_balance_hagar_secondary_spread 0.025
-set g_balance_hagar_secondary_speed 1400
-set g_balance_hagar_secondary_lifetime 10
-set g_balance_hagar_secondary_refire 0.15
-set g_balance_hagar_secondary_ammo 1
-
-set g_balance_rocketlauncher_damage 130
-set g_balance_rocketlauncher_edgedamage 50
-set g_balance_rocketlauncher_force 600
-set g_balance_rocketlauncher_radius 170
-set g_balance_rocketlauncher_speed 850
-set g_balance_rocketlauncher_lifetime 9
-set g_balance_rocketlauncher_refire 1
-set g_balance_rocketlauncher_animtime 0.3
-set g_balance_rocketlauncher_ammo 3
-set g_balance_rocketlauncher_laserguided_speed	1000  //650
-set g_balance_rocketlauncher_laserguided_turnrate	0.75  //0.5
-set g_balance_rocketlauncher_laserguided_allow_steal	1
-
 set g_balance_falldamage_deadminspeed 150
 set g_balance_falldamage_minspeed 1400
 set g_balance_falldamage_factor 0.15
@@ -576,6 +429,7 @@
 r_shadow_bumpscale_bumpmap 4
 r_shadow_bumpscale_basetexture 5
 r_shadow_realtime_world_lightmaps 1
+r_ambient 0
 cl_decals_fadetime 1
 cl_decals_time 2
 seta cl_nogibs 0
@@ -704,7 +558,7 @@
 set sv_vote_timeout 60
 // a player can not call a vote again for this many seconds
 set sv_vote_wait 120
-// a simple majority suffices to accept a vote (meaning: YES votes > NO votes; otherwise: YES votes > half of the players)
+// a simple majority suffices to accept a vote (meaning: YES votes > NO votes, otherwise: YES votes > half of the players)
 set sv_vote_simple_majority 0
 alias vhelp "cmd vote help"
 alias vstatus "cmd vote status"
@@ -803,14 +657,14 @@
 net_banlist ""
 seta _alientrap_net_banlist ""
 
-set g_waypoints_for_items 1 // make waypoints out of items; values: 0 = never, 1 = unless the mapper prevents it by worldspawn.spawnflags & 1, 2 = always
+set g_waypoints_for_items 1 // make waypoints out of items,  values: 0 = never, 1 = unless the mapper prevents it by worldspawn.spawnflags & 1, 2 = always
 
 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)
-//   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)
+//   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_maplist_votable 5
@@ -823,7 +677,7 @@
 set g_chat_flood_lmax 0                  // maximum number of lines per chat message at once
 set g_chat_flood_burst 0                 // allow bursts of so many chat lines
 set g_chat_flood_spl_team 0              // \
-set g_chat_flood_lmax_team 0             //  } same for say_team 
+set g_chat_flood_lmax_team 0             //  } same for say_team
 set g_chat_flood_burst_team 0            // /
 set g_chat_flood_notify_flooder 1        // when 0, the flooder still can see his own message
 set g_chat_teamcolors 0                  // colorize nicknames in team color for chat

Modified: trunk/data/physics15.cfg
===================================================================
--- trunk/data/physics15.cfg	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/physics15.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -1,5 +1,11 @@
-set sv_maxspeed 400
-set sv_maxairspeed 50
+sv_maxspeed 400
+sv_maxairspeed 50
+sv_accelerate 5.5
+sv_airaccelerate 5.5
+sv_friction 5
+edgefriction 0
+sv_stepheight 34
+set g_balance_jumpheight 300
 set sv_friction_on_land 0.25
 set sv_airaccel_sideways_friction 0
 set sv_airaccel_qw 0

Modified: trunk/data/physics151.cfg
===================================================================
--- trunk/data/physics151.cfg	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/physics151.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -1,5 +1,11 @@
-set sv_maxspeed 400
-set sv_maxairspeed 50
+sv_maxspeed 400
+sv_maxairspeed 50
+sv_accelerate 5.5
+sv_airaccelerate 5.5
+sv_friction 5
+edgefriction 0
+sv_stepheight 34
+set g_balance_jumpheight 300
 set sv_friction_on_land 0
 set sv_airaccel_sideways_friction 0
 set sv_airaccel_qw 0

Modified: trunk/data/physics151b.cfg
===================================================================
--- trunk/data/physics151b.cfg	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/physics151b.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -1,5 +1,11 @@
-set sv_maxspeed 400
-set sv_maxairspeed 25
+sv_maxspeed 400
+sv_maxairspeed 25
+sv_accelerate 5.5
+sv_airaccelerate 5.5
+sv_friction 5
+edgefriction 0
+sv_stepheight 34
+set g_balance_jumpheight 300
 set sv_friction_on_land 0
 set sv_airaccel_sideways_friction 0
 set sv_airaccel_qw 0

Modified: trunk/data/physics16rc1.cfg
===================================================================
--- trunk/data/physics16rc1.cfg	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/physics16rc1.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -1,5 +1,11 @@
-set sv_maxspeed 400
-set sv_maxairspeed 50
+sv_maxspeed 400
+sv_maxairspeed 50
+sv_accelerate 5.5
+sv_airaccelerate 5.5
+sv_friction 5
+edgefriction 0
+sv_stepheight 34
+set g_balance_jumpheight 300
 set sv_friction_on_land 0.2
 set sv_airaccel_sideways_friction 0
 set sv_airaccel_qw 0

Modified: trunk/data/physicsQ.cfg
===================================================================
--- trunk/data/physicsQ.cfg	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/physicsQ.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -1,5 +1,11 @@
-set sv_maxspeed 400
-set sv_maxairspeed 250
+sv_maxspeed 400
+sv_maxairspeed 250
+sv_accelerate 5.5
+sv_airaccelerate 5.5
+sv_friction 5
+edgefriction 0
+sv_stepheight 34
+set g_balance_jumpheight 300
 set sv_friction_on_land 0
 set sv_airaccel_sideways_friction 0
 set sv_airaccel_qw 1

Added: trunk/data/physicsQ3.cfg
===================================================================
--- trunk/data/physicsQ3.cfg	                        (rev 0)
+++ trunk/data/physicsQ3.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -0,0 +1,12 @@
+// these values match Quake3
+sv_maxspeed 400
+sv_maxairspeed $sv_maxspeed
+sv_accelerate 10
+sv_airaccelerate 1
+sv_friction 6
+edgefriction 0
+sv_stepheight 18
+set g_balance_jumpheight 270
+set sv_friction_on_land 0
+set sv_airaccel_sideways_friction 0
+set sv_airaccel_qw 1

Modified: trunk/data/physicsQBF.cfg
===================================================================
--- trunk/data/physicsQBF.cfg	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/physicsQBF.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -1,5 +1,11 @@
-set sv_maxspeed 400
-set sv_maxairspeed 250
+sv_maxspeed 400
+sv_maxairspeed 250
+sv_accelerate 5.5
+sv_airaccelerate 5.5
+sv_friction 5
+edgefriction 0
+sv_stepheight 34
+set g_balance_jumpheight 300
 set sv_friction_on_land 0
 set sv_airaccel_sideways_friction 0.8
 set sv_airaccel_qw 1

Modified: trunk/data/physicsQBFplus.cfg
===================================================================
--- trunk/data/physicsQBFplus.cfg	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/physicsQBFplus.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -1,5 +1,11 @@
-set sv_maxspeed 400
-set sv_maxairspeed 220
+sv_maxspeed 400
+sv_maxairspeed 220
+sv_accelerate 5.5
+sv_airaccelerate 5.5
+sv_friction 5
+edgefriction 0
+sv_stepheight 34
+set g_balance_jumpheight 300
 set sv_friction_on_land 0
 set sv_airaccel_sideways_friction 0.5
 set sv_airaccel_qw 0.93

Modified: trunk/data/physicsQBR.cfg
===================================================================
--- trunk/data/physicsQBR.cfg	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/physicsQBR.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -1,5 +1,11 @@
-set sv_maxspeed 400
-set sv_maxairspeed 220
+sv_maxspeed 400
+sv_maxairspeed 220
+sv_accelerate 5.5
+sv_airaccelerate 5.5
+sv_friction 5
+edgefriction 0
+sv_stepheight 34
+set g_balance_jumpheight 300
 set sv_friction_on_land 0
 set sv_airaccel_sideways_friction 0.3
 set sv_airaccel_qw 0.93

Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/qcsrc/server/cl_client.qc	2007-04-14 00:26:50 UTC (rev 2308)
@@ -689,7 +689,7 @@
 void ClientConnect (void)
 {
 	local string s;
-	
+
 	self.classname = "player_joining";
 	self.flags = self.flags | FL_CLIENT;
 	self.version_nagtime = time + 10 + random() * 10;
@@ -745,7 +745,7 @@
 	stuffcmd(self, strcat("exec maps/", mapname, ".cfg\n"));
 	// TODO: is this being used for anything else than cd tracks?
 	// Remember: SVC_CDTRACK exists. Maybe it should be used.
-	
+
 	FixClientCvars(self);
 
 	// waypoint sprites
@@ -1057,14 +1057,14 @@
 		self.effects = self.effects | (EF_ADDITIVE | EF_FULLBRIGHT);
 }
 
-float CalcRegen(float current, float stable, float maxv, float regenfactor)
+float CalcRegen(float current, float stable, float regenfactor)
 {
 	if(current > stable)
 		return current;
 	else if(current > stable - 0.25) // when close enough, "snap"
 		return stable;
 	else
-		return bound(0, current + (stable - current) * regenfactor * frametime, maxv);
+		return min(stable, current + (stable - current) * regenfactor * frametime);
 }
 
 void player_regen (void)
@@ -1078,75 +1078,80 @@
 	if (cvar("g_minstagib") || (cvar("g_lms") && !cvar("g_lms_regenerate")))
 		return;
 
-	if(cvar("g_runematch"))
+	max_mod = regen_mod = rot_mod = limit_mod = 1;
+
+	if (self.runes & RUNE_REGEN)
 	{
-		max_mod = regen_mod = rot_mod = limit_mod = 1;
-		if (self.runes & RUNE_REGEN)
+		if (self.runes & CURSE_VENOM) // do we have both rune/curse?
 		{
-			if (self.runes & CURSE_VENOM) // do we have both rune/curse?
-			{
-				regen_mod = cvar("g_balance_rune_regen_combo_regenrate");
-				max_mod = cvar("g_balance_rune_regen_combo_hpmod");
-				limit_mod = cvar("g_balance_rune_regen_combo_limitmod");
-			}
-			else
-			{
-				regen_mod = cvar("g_balance_rune_regen_regenrate");
-				max_mod = cvar("g_balance_rune_regen_hpmod");
-				limit_mod = cvar("g_balance_rune_regen_limitmod");
-			}
+			regen_mod = cvar("g_balance_rune_regen_combo_regenrate");
+			max_mod = cvar("g_balance_rune_regen_combo_hpmod");
+			limit_mod = cvar("g_balance_rune_regen_combo_limitmod");
 		}
-		else if (self.runes & CURSE_VENOM)
+		else
 		{
-			max_mod = cvar("g_balance_curse_venom_hpmod");
-			if (self.runes & RUNE_REGEN) // do we have both rune/curse?
-				rot_mod = cvar("g_balance_rune_regen_combo_rotrate");
-			else
-				rot_mod = cvar("g_balance_curse_venom_rotrate");
-			limit_mod = cvar("g_balance_curse_venom_limitmod");
-			//if (!self.runes & RUNE_REGEN)
-			//	rot_mod = cvar("g_balance_curse_venom_rotrate");
+			regen_mod = cvar("g_balance_rune_regen_regenrate");
+			max_mod = cvar("g_balance_rune_regen_hpmod");
+			limit_mod = cvar("g_balance_rune_regen_limitmod");
 		}
-		maxh = maxh * max_mod;
-		//maxa = maxa * max_mod;
+	}
+	else if (self.runes & CURSE_VENOM)
+	{
+		max_mod = cvar("g_balance_curse_venom_hpmod");
+		if (self.runes & RUNE_REGEN) // do we have both rune/curse?
+			rot_mod = cvar("g_balance_rune_regen_combo_rotrate");
+		else
+			rot_mod = cvar("g_balance_curse_venom_rotrate");
+		limit_mod = cvar("g_balance_curse_venom_limitmod");
+		//if (!self.runes & RUNE_REGEN)
+		//	rot_mod = cvar("g_balance_curse_venom_rotrate");
+	}
+	maxh = maxh * max_mod;
+	//maxa = maxa * max_mod;
+	limith = limith * limit_mod;
+	limita = limita * limit_mod;
 
+	if (self.armorvalue > maxa)
+	{
 		if (time > self.pauserotarmor_finished)
 		{
-			if (self.armorvalue > maxa)
-				self.armorvalue = bound(0, self.armorvalue + (maxa - self.armorvalue) * cvar("g_balance_armor_rot") * frametime, 1000);
+			self.armorvalue = max(maxa, self.armorvalue + (maxa - self.armorvalue) * cvar("g_balance_armor_rot") * frametime);
+			self.armorvalue = max(maxa, self.armorvalue - cvar("g_balance_armor_rotlinear") * frametime);
 		}
-		if (time > self.pauserothealth_finished)
-		{
-			if (self.health > maxh)
-				self.health = bound(0, self.health + (maxh - self.health) * rot_mod*cvar("g_balance_health_rot") * frametime, 1000);
-		}
+	}
+	else if (self.armorvalue < maxa)
+	{
 		if (time > self.pauseregen_finished)
 		{
-			self.health = CalcRegen(self.health, maxh, 1000, regen_mod * cvar("g_balance_health_regen"));
-			self.armorvalue = CalcRegen(self.armorvalue, maxa, 1000, cvar("g_balance_armor_regen"));
+			self.armorvalue = CalcRegen(self.armorvalue, maxa, cvar("g_balance_armor_regen"));
+			self.armorvalue = min(maxa, self.armorvalue + cvar("g_balance_armor_regenlinear") * frametime);
 		}
 	}
-	else
+	if (self.health > maxh)
 	{
 		if (time > self.pauserothealth_finished)
-		if (self.health > maxh)
-			self.health = bound(0, self.health + (maxh - self.health) * cvar("g_balance_health_rot") * frametime, 1000);
-		if (time > self.pauserotarmor_finished)
-		if (self.armorvalue > maxa)
-			self.armorvalue = bound(0, self.armorvalue + (maxa - self.armorvalue) * cvar("g_balance_armor_rot") * frametime, 1000);
+		{
+			self.health = max(maxh, self.health + (maxh - self.health) * rot_mod*cvar("g_balance_health_rot") * frametime);
+			self.health = max(maxh, self.health - rot_mod*cvar("g_balance_health_rotlinear") * frametime);
+		}
+	}
+	else if (self.health < maxh)
+	{
 		if (time > self.pauseregen_finished)
 		{
-			self.health = CalcRegen(self.health, maxh, 1000, cvar("g_balance_health_regen"));
-			self.armorvalue = CalcRegen(self.armorvalue, maxa, 1000, cvar("g_balance_armor_regen"));
+			self.health = CalcRegen(self.health, maxh, regen_mod * cvar("g_balance_health_regen"));
+			self.health = min(maxh, self.health + regen_mod*cvar("g_balance_health_regenlinear") * frametime);
 		}
 	}
 
 	if (self.health > limith)
 		self.health = limith;
-	if(self.health < 1)
-		self.event_damage(self, self, 1, DEATH_ROT, self.origin, '0 0 0');
 	if (self.armorvalue > limita)
 		self.armorvalue = limita;
+
+	// if player rotted to death...  die!
+	if(self.health < 1)
+		self.event_damage(self, self, 1, DEATH_ROT, self.origin, '0 0 0');
 }
 
 /*
@@ -1450,14 +1455,6 @@
 
 		W_WeaponFrame();
 
-		if (cvar("g_minstagib"))
-			if(self.button3)
-				if (self.jump_interval <= (time + 0.1))
-				{
-					self.jump_interval = time + 1;
-					W_Laser_Attack();
-				}
-		
 		{
 			float zoomfactor, zoomspeed, zoomdir;
 			zoomfactor = self.cvar_cl_zoomfactor;
@@ -1467,7 +1464,7 @@
 			if(zoomspeed >= 0) // < 0 is instant zoom
 				if(zoomspeed < 0.5 || zoomspeed > 16)
 					zoomspeed = 3.5;
-			
+
 			zoomdir = self.button4;
 			if(self.button3)
 				if(self.weapon == WEP_NEX)

Modified: trunk/data/qcsrc/server/g_damage.qc
===================================================================
--- trunk/data/qcsrc/server/g_damage.qc	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/qcsrc/server/g_damage.qc	2007-04-14 00:26:50 UTC (rev 2308)
@@ -567,6 +567,7 @@
 	vector	m2;
 	vector	nearest;
 	vector	diff;
+	vector center;
 
 	blastorigin = (inflictor.origin + (inflictor.mins + inflictor.maxs) * 0.5);
 
@@ -600,7 +601,11 @@
 					finaldmg = coredamage * power + edgedamage * (1 - power);
 					if (finaldmg > 0)
 					{
-						force = normalize((m1 + m2) * 0.5 - blastorigin) * (finaldmg / coredamage) * forceintensity;
+						center = (m1 + m2) * 0.5;
+						// if it's a player, use the view origin as reference
+						if (targ.classname == "player")
+							center = targ.origin + targ.view_ofs;
+						force = normalize(center - blastorigin) * (finaldmg / coredamage) * forceintensity;
 						if (targ == attacker)
 							finaldmg = finaldmg * cvar("g_balance_selfdamagepercent");	// Partial damage if the attacker hits himself
 						// test line of sight to multiple positions on box,

Modified: trunk/data/qcsrc/server/g_world.qc
===================================================================
--- trunk/data/qcsrc/server/g_world.qc	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/qcsrc/server/g_world.qc	2007-04-14 00:26:50 UTC (rev 2308)
@@ -422,6 +422,8 @@
 		CampaignPostInit();
 
 	fteqcc_testbugs();
+
+	readlevelcvars();
 }
 
 void light (void)
@@ -630,7 +632,7 @@
 
 float(float exponent) MaplistMethod_Shuffle = // more clever shuffling
 // the exponent sets a bias on the map selection:
-// the higher the exponent, the 
+// the higher the exponent, the
 {
 	float i, j, imax, insertpos;
 
@@ -2013,7 +2015,7 @@
 {
 	if(alreadychangedlevel)
 		return;
-	
+
 	if(time < mapvote_nextthink)
 		return;
 	//dprint("tick\n");

Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/qcsrc/server/miscfunctions.qc	2007-04-14 00:26:50 UTC (rev 2308)
@@ -562,3 +562,44 @@
 
 // requires the same, but is a stronger condition
 float(vector smins, vector smaxs, vector bmins, vector bmaxs) boxinsidebox = {return smins_x >= bmins_x && smaxs_x <= bmaxs_x && smins_y >= bmins_y && smaxs_y <= bmaxs_y && smins_z >= bmins_z && smaxs_z <= bmaxs_z;};
+
+float g_pickup_shells;
+float g_pickup_shells_max;
+float g_pickup_nails;
+float g_pickup_nails_max;
+float g_pickup_rockets;
+float g_pickup_rockets_max;
+float g_pickup_cells;
+float g_pickup_cells_max;
+float g_pickup_armorshard;
+float g_pickup_armorshard_max;
+float g_pickup_armor;
+float g_pickup_armor_max;
+float g_pickup_healthshard;
+float g_pickup_healthshard_max;
+float g_pickup_health;
+float g_pickup_health_max;
+float g_pickup_healthmega;
+float g_pickup_healthmega_max;
+
+void readlevelcvars(void)
+{
+	g_pickup_shells                    = cvar("g_pickup_shells");
+	g_pickup_shells_max                = cvar("g_pickup_shells_max");
+	g_pickup_nails                     = cvar("g_pickup_nails");
+	g_pickup_nails_max                 = cvar("g_pickup_nails_max");
+	g_pickup_rockets                   = cvar("g_pickup_rockets");
+	g_pickup_rockets_max               = cvar("g_pickup_rockets_max");
+	g_pickup_cells                     = cvar("g_pickup_cells");
+	g_pickup_cells_max                 = cvar("g_pickup_cells_max");
+	g_pickup_armorshard                = cvar("g_pickup_armorshard");
+	g_pickup_armorshard_max            = cvar("g_pickup_armorshard_max");
+	g_pickup_armor                     = cvar("g_pickup_armor");
+	g_pickup_armor_max                 = cvar("g_pickup_armor_max");
+	g_pickup_healthshard               = cvar("g_pickup_healthshard");
+	g_pickup_healthshard_max           = cvar("g_pickup_healthshard_max");
+	g_pickup_health                    = cvar("g_pickup_health");
+	g_pickup_health_max                = cvar("g_pickup_health_max");
+	g_pickup_healthmega                = cvar("g_pickup_healthmega");
+	g_pickup_healthmega_max            = cvar("g_pickup_healthmega_max");
+}

Modified: trunk/data/qcsrc/server/t_items.qc
===================================================================
--- trunk/data/qcsrc/server/t_items.qc	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/qcsrc/server/t_items.qc	2007-04-14 00:26:50 UTC (rev 2308)
@@ -2,6 +2,8 @@
 //	self.effects = self.effects - (self.effects & EF_STARDUST);
 //}
 
+.float max_armorvalue;
+
 void Item_Respawn (void)
 {
 	self.model = self.mdl;		// restore original model
@@ -21,6 +23,8 @@
 {
 	local entity oldself;
 	local float _switchweapon;
+	local float pickedup;
+	local float it;
 
 	// remove the item if it's currnetly in a NODROP brush or hits a NOIMPACT surface (such as sky)
 	if (((trace_dpstartcontents | trace_dphitcontents) & DPCONTENTS_NODROP) || (trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT))
@@ -34,24 +38,19 @@
 		return;
 	if (self.solid != SOLID_TRIGGER)
 		return;
-	if (self.health && other.health >= other.max_health)
-		return;
 	if (self.owner == other)
 		return;
-	// Savage: Remove the respawn effect if still present
-	self.effects = self.effects - (self.effects & EF_STARDUST);
 
-	sound (self, CHAN_BODY, self.noise, 1, ATTN_NORM);
+	// if nothing happens to other, just return without taking the item
+	pickedup = FALSE;
+	_switchweapon = FALSE;
 
-	// in case the player has autoswitch enabled do the following:
-	// if the player is using their best weapon before items are given, they
-	// probably want to switch to an even better weapon after items are given
-	_switchweapon = (other.autoswitch && (other.switchweapon == w_getbestweapon(other)) || cvar("g_minstagib"));
-
 	if (cvar("g_minstagib"))
 	{
+		_switchweapon = TRUE;
 		if (self.ammo_cells)
 		{
+			pickedup = TRUE;
 			// play some cool sounds ;)
 			centerprint(other, "\n");
 			if(other.health <= 5)
@@ -72,6 +71,7 @@
 		// extralife powerup
 		if (self.max_health)
 		{
+			pickedup = TRUE;
 			// sound not available
 			// stuffcmd(other, "play2 announce/robotic/extra.ogg\nplay2 announce/robotic/_lives.ogg\n");
 			other.armorvalue = other.armorvalue + cvar("g_minstagib_extralives");
@@ -81,6 +81,7 @@
 		// invis powerup
 		if (self.strength_finished)
 		{
+			pickedup = TRUE;
 			// sound not available
 			// stuffcmd(other, "play2 announce/robotic/invisible.ogg\n");
 			other.strength_finished = max(other.strength_finished, time) + cvar("g_balance_powerup_strength_time");
@@ -89,6 +90,7 @@
 		// speed powerup
 		if (self.invincible_finished)
 		{
+			pickedup = TRUE;
 			// sound not available
 			// stuffcmd(other, "play2 announce/robotic/speed.ogg\n");
 			other.invincible_finished = max(other.invincible_finished, time) + cvar("g_balance_powerup_strength_time");
@@ -104,47 +106,96 @@
 				return;
 		}
 
+		// in case the player has autoswitch enabled do the following:
+		// if the player is using their best weapon before items are given, they
+		// probably want to switch to an even better weapon after items are given
+		if (other.autoswitch)
+		if (other.switchweapon == w_getbestweapon(other))
+			_switchweapon = TRUE;
+
 		if (self.ammo_shells)
-			other.ammo_shells = min (other.ammo_shells + self.ammo_shells, 999);
+		if (other.ammo_shells < g_pickup_shells_max)
+		{
+			pickedup = TRUE;
+			other.ammo_shells = min (other.ammo_shells + self.ammo_shells, g_pickup_shells_max);
+		}
 		if (self.ammo_nails)
-			other.ammo_nails = min (other.ammo_nails + self.ammo_nails, 999);
+		if (other.ammo_nails < g_pickup_nails_max)
+		{
+			pickedup = TRUE;
+			other.ammo_nails = min (other.ammo_nails + self.ammo_nails, g_pickup_nails_max);
+		}
 		if (self.ammo_rockets)
-			other.ammo_rockets = min (other.ammo_rockets + self.ammo_rockets, 999);
+		if (other.ammo_rockets < g_pickup_rockets_max)
+		{
+			pickedup = TRUE;
+			other.ammo_rockets = min (other.ammo_rockets + self.ammo_rockets, g_pickup_rockets_max);
+		}
 		if (self.ammo_cells)
-			other.ammo_cells = min (other.ammo_cells + self.ammo_cells, 999);
+		if (other.ammo_cells < g_pickup_cells_max)
+		{
+			pickedup = TRUE;
+			other.ammo_cells = min (other.ammo_cells + self.ammo_cells, g_pickup_cells_max);
+		}
 
-		if (self.items & IT_UZI)		W_GiveWeapon (other, IT_UZI, self.netname);
-		if (self.items & IT_SHOTGUN)		W_GiveWeapon (other, IT_SHOTGUN, self.netname);
-		if (self.items & IT_GRENADE_LAUNCHER)	W_GiveWeapon (other, IT_GRENADE_LAUNCHER, self.netname);
-		if (self.items & IT_ELECTRO)		W_GiveWeapon (other, IT_ELECTRO, self.netname);
-		if (self.items & IT_NEX)		W_GiveWeapon (other, IT_NEX, self.netname);
-		if (self.items & IT_HAGAR)		W_GiveWeapon (other, IT_HAGAR, self.netname);
-		if (self.items & IT_ROCKET_LAUNCHER)	W_GiveWeapon (other, IT_ROCKET_LAUNCHER, self.netname);
-		if (self.items & IT_CRYLINK)		W_GiveWeapon (other, IT_CRYLINK, self.netname);
+		if (self.flags & FL_WEAPON)
+		if ((it = self.items - (self.items & other.items)))
+		{
+			pickedup = TRUE;
+			if (it & IT_UZI)                W_GiveWeapon (other, IT_UZI, self.netname);
+			if (it & IT_SHOTGUN)            W_GiveWeapon (other, IT_SHOTGUN, self.netname);
+			if (it & IT_GRENADE_LAUNCHER)   W_GiveWeapon (other, IT_GRENADE_LAUNCHER, self.netname);
+			if (it & IT_ELECTRO)            W_GiveWeapon (other, IT_ELECTRO, self.netname);
+			if (it & IT_NEX)                W_GiveWeapon (other, IT_NEX, self.netname);
+			if (it & IT_HAGAR)              W_GiveWeapon (other, IT_HAGAR, self.netname);
+			if (it & IT_ROCKET_LAUNCHER)    W_GiveWeapon (other, IT_ROCKET_LAUNCHER, self.netname);
+			if (it & IT_CRYLINK)            W_GiveWeapon (other, IT_CRYLINK, self.netname);
+		}
 
 		if (self.strength_finished)
+		{
+			pickedup = TRUE;
 			other.strength_finished = max(other.strength_finished, time) + cvar("g_balance_powerup_strength_time");
+		}
 		if (self.invincible_finished)
+		{
+			pickedup = TRUE;
 			other.invincible_finished = max(other.invincible_finished, time) + cvar("g_balance_powerup_invincible_time");
+		}
 		//if (self.speed_finished)
+		//{
+		//	pickedup = TRUE;
 		//	other.speed_finished = max(other.speed_finished, time) + cvar("g_balance_powerup_speed_time");
+		//}
 		//if (self.slowmo_finished)
+		//{
+		//	pickedup = TRUE;
 		//	other.slowmo_finished = max(other.slowmo_finished, time) + (cvar("g_balance_powerup_slowmo_time") * cvar("g_balance_powerup_slowmo_speed"));
+		//}
 
-		if (self.max_health)
+		if (self.health)
+		if (other.health < self.max_health)
 		{
-			other.health = other.health + self.max_health;
+			pickedup = TRUE;
+			other.health = min(other.health + self.health, self.max_health);
 			other.pauserothealth_finished = max(other.pauserothealth_finished, time + cvar("g_balance_pause_health_rot"));
 		}
-		if (self.health && other.health < other.max_health)
-			other.health = min(other.health + self.health, other.max_health);
 		if (self.armorvalue)
+		if (other.armorvalue < self.max_armorvalue)
 		{
-			other.armorvalue = other.armorvalue + self.armorvalue;
+			pickedup = TRUE;
+			other.armorvalue = min(other.armorvalue + self.armorvalue, self.max_armorvalue);
 			other.pauserotarmor_finished = max(other.pauserotarmor_finished, time + cvar("g_balance_pause_armor_rot"));
 		}
 	}
 
+	if (!pickedup)
+		return;
+
+	// Savage: Remove the respawn effect if still present
+	self.effects = self.effects - (self.effects & EF_STARDUST);
+
+	sound (self, CHAN_BODY, self.noise, 1, ATTN_NORM);
 	sound (other, CHAN_AUTO, self.item_pickupsound, 1, ATTN_NORM);
 
 	oldself = self;
@@ -196,23 +247,25 @@
 	c = 0;
 	// TODO: figure out if the player even has the weapon this ammo is for?
 	// may not affect strategy much though...
-	// find out how much ammo the player has, in terms of this ammo pickup
-	// (how many of these ammo pickups it would take to total the player's
-	// current ammo)
+	// find out how much more ammo/armor/health the player can hold
 	if (item.ammo_shells)
-		c = c + player.ammo_shells / item.ammo_shells;
+	if (player.ammo_shells < g_pickup_shells_max)
+		c = c + 1 - min(player.ammo_shells / g_pickup_shells_max, 1);
 	if (item.ammo_nails)
-		c = c + player.ammo_nails / item.ammo_nails;
+	if (player.ammo_nails < g_pickup_nails_max)
+		c = c + 1 - min(player.ammo_nails / g_pickup_nails_max, 1);
 	if (item.ammo_rockets)
-		c = c + player.ammo_rockets / item.ammo_rockets;
+	if (player.ammo_rockets < g_pickup_rockets_max)
+		c = c + 1 - min(player.ammo_rockets / g_pickup_rockets_max, 1);
 	if (item.ammo_cells)
-		c = c + player.ammo_cells / item.ammo_cells;
+	if (player.ammo_cells < g_pickup_cells_max)
+		c = c + 1 - min(player.ammo_cells / g_pickup_cells_max, 1);
 	if (item.armorvalue)
-		c = c + player.armorvalue / item.armorvalue;
+	if (player.armorvalue < item.max_armorvalue)
+		c = c + 1 - min(player.armorvalue / item.max_armorvalue, 1);
 	if (item.health)
-		c = c + player.health / item.health / 10;
-	// the more ammo the player has, the less desirable this pickup becomes
-	c = 1 / (1 + c);
+	if (player.health < item.max_health)
+		c = c + 1 - min(player.health / item.max_health, 1);
 
 	if (cvar("deathmatch") == 2) // weapon stay is on, so weapons the player already has are of no interest
 	if (item.flags & FL_WEAPON)
@@ -418,31 +471,31 @@
 
 void weapon_uzi (void) {
 	if(!self.ammo_nails)
-		self.ammo_nails = 120;
+		self.ammo_nails = cvar("g_pickup_nails");
 	StartItem ("models/weapons/g_uzi.md3", "weapons/weaponpickup.ogg", 15, W_Name(WEP_UZI), IT_UZI, FL_WEAPON, weapon_pickupevalfunc, 1000);
 }
 
 void weapon_shotgun (void) {
 	if(!self.ammo_shells)
-		self.ammo_shells = 15;
+		self.ammo_shells = cvar("g_pickup_shells");
 	StartItem ("models/weapons/g_shotgun.md3", "weapons/weaponpickup.ogg", 15, W_Name(WEP_SHOTGUN), IT_SHOTGUN, FL_WEAPON, weapon_pickupevalfunc, 1000);
 }
 
 void weapon_grenadelauncher (void) {
 	if(!self.ammo_rockets)
-		self.ammo_rockets = 15;
+		self.ammo_rockets = cvar("g_pickup_rockets");
 	StartItem ("models/weapons/g_gl.md3", "weapons/weaponpickup.ogg", 15, W_Name(WEP_GRENADE_LAUNCHER), IT_GRENADE_LAUNCHER, FL_WEAPON, weapon_pickupevalfunc, 1000);
 }
 
 void weapon_electro (void) {
 	if(!self.ammo_cells)
-		self.ammo_cells = 25;
+		self.ammo_cells = cvar("g_pickup_cells");
 	StartItem ("models/weapons/g_electro.md3", "weapons/weaponpickup.ogg", 15, W_Name(WEP_ELECTRO), IT_ELECTRO, FL_WEAPON, weapon_pickupevalfunc, 1000);
 }
 
 void weapon_crylink (void) {
 	if(!self.ammo_cells)
-		self.ammo_cells = 25;
+		self.ammo_cells = cvar("g_pickup_cells");
 	StartItem ("models/weapons/g_crylink.md3", "weapons/weaponpickup.ogg", 15, W_Name(WEP_CRYLINK), IT_CRYLINK, FL_WEAPON, weapon_pickupevalfunc, 1000);
 }
 
@@ -452,7 +505,7 @@
 	} else {
 		float nextime;
 		if(!self.ammo_cells)
-			self.ammo_cells = 25;
+			self.ammo_cells = cvar("g_pickup_cells");
 		nextime = cvar("g_balance_nex_respawntime_modifier");
 		if(nextime)
 			nextime = 15 * nextime;
@@ -464,7 +517,7 @@
 
 void weapon_hagar (void) {
 	if(!self.ammo_rockets)
-		self.ammo_rockets = 15;
+		self.ammo_rockets = cvar("g_pickup_rockets");
 	StartItem ("models/weapons/g_hagar.md3", "weapons/weaponpickup.ogg", 15, W_Name(WEP_HAGAR), IT_HAGAR, FL_WEAPON, weapon_pickupevalfunc, 1000);
 }
 
@@ -473,56 +526,64 @@
 		minstagib_items(IT_CELLS);
 	} else {
 		if(!self.ammo_rockets)
-			self.ammo_rockets = 15;
+			self.ammo_rockets = g_pickup_rockets;
 		StartItem ("models/weapons/g_rl.md3", "weapons/weaponpickup.ogg", 15, W_Name(WEP_ROCKET_LAUNCHER), IT_ROCKET_LAUNCHER, FL_WEAPON, weapon_pickupevalfunc, 1000);
 	}
 }
 
 void item_rockets (void) {
 	if(!self.ammo_rockets)
-		self.ammo_rockets = 15;
+		self.ammo_rockets = g_pickup_rockets;
 	StartItem ("models/items/a_rockets.md3", "misc/itempickup.ogg", 15, "rockets", IT_ROCKETS, 0, commodity_pickupevalfunc, 100);
 }
 
 void item_bullets (void) {
 	if(!self.ammo_nails)
-		self.ammo_nails = 120;
+		self.ammo_nails = g_pickup_nails;
 	StartItem ("models/items/a_bullets.mdl", "misc/itempickup.ogg", 15, "bullets", IT_NAILS, 0, commodity_pickupevalfunc, 100);
 }
 
 void item_cells (void) {
 	if(!self.ammo_cells)
-		self.ammo_cells = 25;
+		self.ammo_cells = g_pickup_cells;
 	StartItem ("models/items/a_cells.md3", "misc/itempickup.ogg", 15, "cells", IT_CELLS, 0, commodity_pickupevalfunc, 100);
 }
 
 void item_shells (void) {
 	if(!self.ammo_shells)
-		self.ammo_shells = 15;
+		self.ammo_shells = g_pickup_shells;
 	StartItem ("models/items/a_shells.md3", "misc/itempickup.ogg", 15, "shells", IT_SHELLS, 0, commodity_pickupevalfunc, 100);
 }
 
 void item_armor1 (void) {
 	if(!self.armorvalue)
-		self.armorvalue = 5;
+		self.armorvalue = g_pickup_armorshard;
+	if(!self.max_armorvalue)
+		self.max_armorvalue = g_pickup_armorshard_max;
 	StartItem ("models/items/g_a1.md3", "misc/armor1.wav", 15, "Armor Shard", IT_ARMOR_SHARD, 0, commodity_pickupevalfunc, 100);
 }
 
 void item_armor25 (void) {
 	if(!self.armorvalue)
-		self.armorvalue = 100;
+		self.armorvalue = g_pickup_armor;
+	if(!self.max_armorvalue)
+		self.max_armorvalue = g_pickup_armor_max;
 	StartItem ("models/items/g_a25.md3", "misc/armor25.wav", 30, "Armor", IT_ARMOR, 0, commodity_pickupevalfunc, 2000);
 }
 
 void item_health1 (void) {
 	if(!self.max_health)
-		self.max_health = 5;
+		self.max_health = g_pickup_healthshard_max;
+	if(!self.health)
+		self.health = g_pickup_healthshard;
 	StartItem ("models/items/g_h1.md3", "misc/minihealth.ogg", 15, "5 Health", IT_5HP, 0, commodity_pickupevalfunc, 100);
 }
 
 void item_health25 (void) {
 	if(!self.max_health)
-		self.max_health = 25;
+		self.max_health = g_pickup_health_max;
+	if(!self.health)
+		self.health = g_pickup_health;
 	StartItem ("models/items/g_h25.md3", "misc/mediumhealth.ogg", 15, "25 Health", IT_25HP, 0, commodity_pickupevalfunc, 500);
 }
 
@@ -537,7 +598,9 @@
 		minstagib_items(IT_NAILS);
 	} else {
 		if(!self.max_health)
-			self.max_health = 100;
+			self.max_health = g_pickup_healthmega_max;
+		if(!self.health)
+			self.health = g_pickup_healthmega;
 		StartItem ("models/items/g_h100.md3", "misc/megahealth.ogg", 30, "100 Health", IT_HEALTH, 0, commodity_pickupevalfunc, 2000);
 	}
 }

Modified: trunk/data/qcsrc/server/w_common.qc
===================================================================
--- trunk/data/qcsrc/server/w_common.qc	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/qcsrc/server/w_common.qc	2007-04-14 00:26:50 UTC (rev 2308)
@@ -49,14 +49,14 @@
 	self = oldself;
 }
 
-void FireRailgunBullet (vector start, vector end, float bdamage, float deathtype)
+void FireRailgunBullet (vector start, vector end, float bdamage, float bforce, float deathtype)
 {
 	local vector hitloc, force, endpoint, dir;
 	local entity ent;
 	//local entity explosion;
 
 	dir = normalize(end - start);
-	force = dir * 800; //(bdamage * 10);
+	force = dir * bforce;
 
 	// go a little bit into the wall because we need to hit this wall later
 	end = end + dir;
@@ -131,7 +131,7 @@
 	trace_endpos = endpoint;
 }
 
-void fireBullet (vector start, vector dir, float spread, float damage, float dtype, float tracer)
+void fireBullet (vector start, vector dir, float spread, float damage, float force, float dtype, float tracer)
 {
 	vector  end;
 	local entity e;
@@ -170,6 +170,6 @@
 		//else if (trace_ent.classname == "player" || trace_ent.classname == "corpse" || trace_ent.classname == "gib")
 			//stuffcmd(self, "play2 misc/hit.wav\n");
 			//sound (self, CHAN_BODY, "misc/hit.wav", 1, ATTN_NORM);
-		Damage (trace_ent, self, self, damage, dtype, trace_endpos, dir * damage * 5);
+		Damage (trace_ent, self, self, damage, dtype, trace_endpos, dir * force);
 	}
 }

Modified: trunk/data/qcsrc/server/w_laser.qc
===================================================================
--- trunk/data/qcsrc/server/w_laser.qc	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/qcsrc/server/w_laser.qc	2007-04-14 00:26:50 UTC (rev 2308)
@@ -21,13 +21,16 @@
 
 
 	self.event_damage = SUB_Null;
-	RadiusDamage (self, self.owner, cvar("g_balance_laser_damage"), cvar("g_balance_laser_edgedamage"), cvar("g_balance_laser_radius"), world, cvar("g_balance_laser_force"), IT_LASER);
+	if (self.dmg)
+		RadiusDamage (self, self.owner, cvar("g_balance_laser_secondary_damage"), cvar("g_balance_laser_secondary_edgedamage"), cvar("g_balance_laser_secondary_radius"), world, cvar("g_balance_laser_secondary_force"), IT_LASER);
+	else
+		RadiusDamage (self, self.owner, cvar("g_balance_laser_primary_damage"), cvar("g_balance_laser_primary_edgedamage"), cvar("g_balance_laser_primary_radius"), world, cvar("g_balance_laser_primary_force"), IT_LASER);
 	sound (self, CHAN_BODY, "weapons/laserimpact.ogg", 1, ATTN_NORM);
 
 	remove (self);
 }
 
-void W_Laser_Attack (void)
+void W_Laser_Attack (float issecondary)
 {
 	local entity missile;
 
@@ -37,8 +40,12 @@
 	missile = spawn ();
 	missile.owner = self;
 	missile.classname = "laserbolt";
+	missile.dmg = issecondary;
 	missile.bot_dodge = TRUE;
-	missile.bot_dodgerating = cvar("g_balance_laser_damage");
+	if (issecondary)
+		missile.bot_dodgerating = cvar("g_balance_laser_secondary_damage");
+	else
+		missile.bot_dodgerating = cvar("g_balance_laser_primary_damage");
 
 	missile.movetype = MOVETYPE_FLY;
 	missile.solid = SOLID_BBOX;
@@ -47,14 +54,20 @@
 	setsize (missile, '0 0 0', '0 0 0');
 	setorigin (missile, w_shotorg);
 
-	missile.velocity = w_shotdir * cvar("g_balance_laser_speed");
+	if (issecondary)
+		missile.velocity = w_shotdir * cvar("g_balance_laser_secondary_speed");
+	else
+		missile.velocity = w_shotdir * cvar("g_balance_laser_primary_speed");
 	W_SetupProjectileVelocity(missile);
 	missile.angles = vectoangles (missile.velocity);
 	//missile.glow_color = 250; // 244, 250
 	//missile.glow_size = 120;
 	missile.touch = W_Laser_Touch;
 	missile.think = SUB_Remove;
-	missile.nextthink = time + cvar("g_balance_laser_lifetime");
+	if (issecondary)
+		missile.nextthink = time + cvar("g_balance_laser_secondary_lifetime");
+	else
+		missile.nextthink = time + cvar("g_balance_laser_primary_lifetime");
 
 	missile.effects = EF_NOSHADOW | EF_FULLBRIGHT | EF_FULLBRIGHT | EF_LOWPRECISION;
 	missile.flags = FL_PROJECTILE;
@@ -62,19 +75,34 @@
 
 float(float req) w_laser =
 {
+	local float r1;
+	local float r2;
 	if (req == WR_AIM)
-		self.button0 = bot_aim(cvar("g_balance_laser_speed"), 0, cvar("g_balance_laser_lifetime"), FALSE);
+	{
+		r1 = cvar("g_balance_laser_primary_damage");
+		r2 = cvar("g_balance_laser_secondary_damage");
+		if (random() * (r2 + r1) > r1)
+			self.button3 = bot_aim(cvar("g_balance_laser_secondary_speed"), 0, cvar("g_balance_laser_secondary_lifetime"), FALSE);
+		else
+			self.button0 = bot_aim(cvar("g_balance_laser_primary_speed"), 0, cvar("g_balance_laser_primary_lifetime"), FALSE);
+	}
 	else if (req == WR_THINK)
 	{
+		if (self.button3)
+		if (weapon_prepareattack(0, cvar("g_balance_laser_secondary_refire")))
+		{
+			W_Laser_Attack(TRUE);
+			weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_laser_secondary_animtime"), w_ready);
+		}
 		if (self.button0)
-		if (weapon_prepareattack(0, cvar("g_balance_laser_refire")))
+		if (weapon_prepareattack(0, cvar("g_balance_laser_primary_refire")))
 		{
-			W_Laser_Attack();
-			weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_laser_animtime"), w_ready);
+			W_Laser_Attack(FALSE);
+			weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_laser_primary_animtime"), w_ready);
 		}
-		if (self.button3)
-		if (client_hasweapon(self, self.cnt, TRUE, FALSE))
-			W_SwitchWeapon (self.cnt);
+		//if (self.button3)
+		//if (client_hasweapon(self, self.cnt, TRUE, FALSE))
+		//	W_SwitchWeapon (self.cnt);
 	}
 	else if (req == WR_SETUP)
 		weapon_setup(WEP_LASER, "laser", 0);

Modified: trunk/data/qcsrc/server/w_nex.qc
===================================================================
--- trunk/data/qcsrc/server/w_nex.qc	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/qcsrc/server/w_nex.qc	2007-04-14 00:26:50 UTC (rev 2308)
@@ -6,9 +6,9 @@
 
 	// assure that nexdamage is high enough in minstagib
 	if (cvar("g_minstagib"))
-		FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, 1000, IT_NEX);
+		FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, 1000, 800, IT_NEX);
 	else
-		FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, cvar("g_balance_nex_damage"), IT_NEX);
+		FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, cvar("g_balance_nex_damage"), cvar("g_balance_nex_force"), IT_NEX);
 
 	// show as if shot started outside of gun
 	// muzzleflash light
@@ -160,6 +160,17 @@
 				}
 			}
 		}
+		else if (self.button3)
+		{
+			if (cvar("g_minstagib"))
+			{
+				if (self.jump_interval <= time)
+				{
+					self.jump_interval = time + 0.9;
+					W_Laser_Attack(FALSE);
+				}
+			}
+		}
 	}
 	else if (req == WR_SETUP)
 		weapon_setup(WEP_NEX, "nex", IT_CELLS);

Modified: trunk/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_rocketlauncher.qc	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/qcsrc/server/w_rocketlauncher.qc	2007-04-14 00:26:50 UTC (rev 2308)
@@ -89,13 +89,32 @@
 {
 	entity e;
 	vector desireddir, olddir, newdir;
-	float turnrate;
+	float turnrate, velspeed;
 	self.nextthink = time;
 	if (time > self.cnt)
 	{
 		W_Rocket_Explode ();
 		return;
 	}
+
+	if(cvar("g_laserguided_missile"))
+	{
+		// accelerate
+		makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0');
+		velspeed = cvar("g_balance_rocketlauncher_laserguided_speed") - (self.velocity * v_forward);
+		if (velspeed > 0)
+			self.velocity = self.velocity + v_forward * min(cvar("g_balance_rocketlauncher_laserguided_speedaccel") * frametime, velspeed);
+	}
+	else
+	{
+		// accelerate
+		makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0');
+		velspeed = cvar("g_balance_rocketlauncher_speed") - (self.velocity * v_forward);
+		if (velspeed > 0)
+			self.velocity = self.velocity + v_forward * min(cvar("g_balance_rocketlauncher_speedaccel") * frametime, velspeed);
+	}
+
+	// laser guided, or remote detonation
 	if (self.owner.weapon == WEP_ROCKET_LAUNCHER)
 	{
 		if(cvar("g_laserguided_missile"))
@@ -132,14 +151,13 @@
 			if(self.enemy != world)
 			{
 				//bprint("Targeting ", self.enemy.owner.netname, "'s laser\n");
-				if(!self.speed)
-					self.speed = vlen(self.velocity);
+				velspeed = vlen(self.velocity);
 				e = self.enemy;//self.owner.weaponentity.lasertarget;
 				turnrate = cvar("g_balance_rocketlauncher_laserguided_turnrate");//0.65;						// how fast to turn
 				desireddir = normalize(e.origin - self.origin);		// get direction from my position to the laser target
-				olddir = normalize(self.velocity);				// get my current direction
+				olddir = normalize(self.velocity);					// get my current direction
 				newdir = normalize((olddir + desireddir * turnrate) * 0.5);	// take the average of the 2 directions; not the best method but simple & easy
-				self.velocity = newdir * self.speed;			// make me fly in the new direction at my flight speed
+				self.velocity = newdir * velspeed;					// make me fly in the new direction at my flight speed
 				self.angles = vectoangles(self.velocity);			// turn model in the new flight direction
 
 				self.owner.attack_finished = time + 0.2;
@@ -207,9 +225,9 @@
 
 	setorigin (missile, w_shotorg);
 	if(cvar("g_laserguided_missile") && self.laser_on)
-		missile.velocity = w_shotdir * cvar("g_balance_rocketlauncher_laserguided_speed");
+		missile.velocity = w_shotdir * cvar("g_balance_rocketlauncher_laserguided_speedstart");
 	else
-		missile.velocity = w_shotdir * cvar("g_balance_rocketlauncher_speed");
+		missile.velocity = w_shotdir * cvar("g_balance_rocketlauncher_speedstart");
 	W_SetupProjectileVelocity(missile);
 	missile.angles = vectoangles (missile.velocity);
 
@@ -279,7 +297,7 @@
 				desirabledamage = desirabledamage - selfdamage * cvar("g_balance_selfdamagepercent");
 			if (self.team && teamplay == 2)
 				desirabledamage = desirabledamage - teamdamage;
-			
+
 			missile = find(world, classname, "missile");
 			while (missile)
 			{
@@ -312,7 +330,7 @@
 									self.button3 = TRUE;
 				//	dprint(ftos(random()/distance*300),">");dprint(ftos(frametime*bound(0,(10-skill)*0.2,1)),"\n");
 				}
-				
+
 				missile = find(missile, classname, "missile");
 			}
 			// if we would be doing at X percent of the core damage, detonate it

Modified: trunk/data/qcsrc/server/w_shotgun.qc
===================================================================
--- trunk/data/qcsrc/server/w_shotgun.qc	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/qcsrc/server/w_shotgun.qc	2007-04-14 00:26:50 UTC (rev 2308)
@@ -4,15 +4,17 @@
 	float	sc;
 	float	bullets;
 	float	d;
+	float	f;
 	float	spread;
 
 	bullets = cvar("g_balance_shotgun_primary_bullets");
 	d = cvar("g_balance_shotgun_primary_damage");
+	f = cvar("g_balance_shotgun_primary_force");
 	spread = cvar("g_balance_shotgun_primary_spread");
 
 	W_SetupShot (self, '15 8 -8', TRUE, 5, "weapons/shotgun_fire.ogg");
 	for (sc = 0;sc < bullets;sc = sc + 1)
-		fireBullet (w_shotorg, w_shotdir, spread, d, IT_SHOTGUN, sc < 3);
+		fireBullet (w_shotorg, w_shotdir, spread, d, f, IT_SHOTGUN, sc < 3);
 	if (cvar("g_use_ammunition"))
 		self.ammo_shells = self.ammo_shells - cvar("g_balance_shotgun_primary_ammo");
 
@@ -29,15 +31,17 @@
 	float	sc;
 	float	bullets;
 	float	d;
+	float	f;
 	float	spread;
 
 	bullets = cvar("g_balance_shotgun_secondary_bullets");
 	d = cvar("g_balance_shotgun_secondary_damage");
+	f = cvar("g_balance_shotgun_secondary_force");
 	spread = cvar("g_balance_shotgun_secondary_spread");
 
 	W_SetupShot (self, '15 8 -8', TRUE, 5, "weapons/shotgun_fire.ogg");
 	for (sc = 0;sc < bullets;sc = sc + 1)
-		fireBullet (w_shotorg, w_shotdir, spread, d, IT_SHOTGUN, sc < 3);
+		fireBullet (w_shotorg, w_shotdir, spread, d, f, IT_SHOTGUN, sc < 3);
 	if (cvar("g_use_ammunition"))
 		self.ammo_shells = self.ammo_shells - cvar("g_balance_shotgun_secondary_ammo");
 

Modified: trunk/data/qcsrc/server/w_uzi.qc
===================================================================
--- trunk/data/qcsrc/server/w_uzi.qc	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/data/qcsrc/server/w_uzi.qc	2007-04-14 00:26:50 UTC (rev 2308)
@@ -21,9 +21,9 @@
 	self.attack_finished = time + cvar("g_balance_uzi_first_refire");
 
 	if (self.uzi_bulletcounter == 1)
-		fireBullet (w_shotorg, w_shotdir, cvar("g_balance_uzi_first_spread"), cvar("g_balance_uzi_first_damage"), IT_UZI, TRUE);
+		fireBullet (w_shotorg, w_shotdir, cvar("g_balance_uzi_first_spread"), cvar("g_balance_uzi_first_damage"), cvar("g_balance_uzi_first_force"), IT_UZI, TRUE);
 	else
-		fireBullet (w_shotorg, w_shotdir, cvar("g_balance_uzi_sustained_spread"), cvar("g_balance_uzi_sustained_damage"), IT_UZI, (self.uzi_bulletcounter & 3) == 0);
+		fireBullet (w_shotorg, w_shotdir, cvar("g_balance_uzi_sustained_spread"), cvar("g_balance_uzi_sustained_damage"), cvar("g_balance_uzi_sustained_force"), IT_UZI, (self.uzi_bulletcounter & 3) == 0);
 
 	// muzzle flash for 1st person view
 	flash = spawn();
@@ -40,7 +40,7 @@
 	setmodel(flash2, "models/uziflash.md3");
 	setattachment(flash2, self.exteriorweaponentity, "");
 	SUB_SetFade(flash2, time, 0.2);
-	
+
 	// common properties
 	flash.angles_z = flash2.angles_z = flash.v_angle_z + random() * 180;
 	flash.alpha = flash2.alpha = 0.5;

Added: trunk/data/weapons.cfg
===================================================================
--- trunk/data/weapons.cfg	                        (rev 0)
+++ trunk/data/weapons.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -0,0 +1,187 @@
+set g_start_weapon_laser 1
+set g_start_weapon_shotgun 1
+set g_start_weapon_uzi 0
+set g_start_weapon_grenadelauncher 0
+set g_start_weapon_electro 0
+set g_start_weapon_crylink 0
+set g_start_weapon_nex 0
+set g_start_weapon_hagar 0
+set g_start_weapon_rocketlauncher 0
+set g_start_ammo_shells 50
+set g_start_ammo_nails 0
+set g_start_ammo_rockets 0
+set g_start_ammo_cells 0
+set g_pickup_shells 15
+set g_pickup_shells_max 999
+set g_pickup_nails 120
+set g_pickup_nails_max 999
+set g_pickup_rockets 15
+set g_pickup_rockets_max 999
+set g_pickup_cells 25
+set g_pickup_cells_max 999
+set g_pickup_armorshard 5
+set g_pickup_armorshard_max 999
+set g_pickup_armor 100
+set g_pickup_armor_max 999
+set g_pickup_healthshard 5
+set g_pickup_healthshard_max 999
+set g_pickup_health 25
+set g_pickup_health_max 999
+set g_pickup_healthmega 100
+set g_pickup_healthmega_max 999
+
+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_refire 0.7
+set g_balance_laser_primary_animtime 0.3
+set g_balance_laser_primary_lifetime 30
+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_refire 0.7
+set g_balance_laser_secondary_animtime 0.3
+set g_balance_laser_secondary_lifetime 30
+
+set g_balance_shotgun_primary_bullets 5
+set g_balance_shotgun_primary_damage 12
+set g_balance_shotgun_primary_force 60
+set g_balance_shotgun_primary_spread 0.09
+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_secondary_bullets 5
+set g_balance_shotgun_secondary_damage 12
+set g_balance_shotgun_secondary_force 60
+set g_balance_shotgun_secondary_spread 0.16
+set g_balance_shotgun_secondary_refire 1.35
+set g_balance_shotgun_secondary_animtime 0.2
+set g_balance_shotgun_secondary_ammo 1
+
+set g_balance_uzi_first_damage 30
+set g_balance_uzi_first_force 150
+set g_balance_uzi_first_spread 0.01
+set g_balance_uzi_first_refire 0.2
+set g_balance_uzi_first_ammo 1
+set g_balance_uzi_sustained_damage 16
+set g_balance_uzi_sustained_force 80
+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_grenadelauncher_primary_damage 65
+set g_balance_grenadelauncher_primary_edgedamage 35
+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_lifetime 30
+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 35
+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_lifetime 2.5
+set g_balance_grenadelauncher_secondary_refire 0.6
+set g_balance_grenadelauncher_secondary_animtime 0.3
+set g_balance_grenadelauncher_secondary_ammo 2
+
+set g_balance_electro_primary_damage 80
+set g_balance_electro_primary_edgedamage 0
+set g_balance_electro_primary_force 200
+set g_balance_electro_primary_radius 150
+set g_balance_electro_primary_speed 2000
+set g_balance_electro_primary_lifetime 30
+set g_balance_electro_primary_refire 0.6
+set g_balance_electro_primary_animtime 0.05
+set g_balance_electro_primary_ammo 2
+set g_balance_electro_secondary_damage 60
+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_lifetime 5
+set g_balance_electro_secondary_refire 0.3
+set g_balance_electro_secondary_animtime 0.05
+set g_balance_electro_secondary_ammo 2
+set g_balance_electro_combo_damage 70
+set g_balance_electro_combo_edgedamage 0
+set g_balance_electro_combo_force 200
+set g_balance_electro_combo_radius 250
+
+set g_balance_crylink_primary_damage 15
+set g_balance_crylink_primary_edgedamage 0
+set g_balance_crylink_primary_force 55
+set g_balance_crylink_primary_radius 3
+set g_balance_crylink_primary_speed 7000
+set g_balance_crylink_primary_spread 0.06
+set g_balance_crylink_primary_shots 4
+set g_balance_crylink_primary_lifetime 30
+set g_balance_crylink_primary_refire 0.25
+set g_balance_crylink_primary_animtime 0.15
+set g_balance_crylink_primary_ammo 1
+set g_balance_crylink_secondary_damage 20
+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_shots 7
+set g_balance_crylink_secondary_lifetime 30
+set g_balance_crylink_secondary_refire 0.5
+set g_balance_crylink_secondary_animtime 0.15
+set g_balance_crylink_secondary_ammo 3
+
+set g_balance_nex_damage 140
+set g_balance_nex_force 800
+set g_balance_nex_refire 1.5
+set g_balance_nex_animtime 0.3
+set g_balance_minstagib_nex_refire 1.5
+set g_balance_minstagib_nex_animtime 0.3
+set g_balance_nex_ammo 5
+set g_balance_nex_respawntime_modifier 1
+
+set g_balance_hagar_primary_damage 40
+set g_balance_hagar_primary_edgedamage 15
+set g_balance_hagar_primary_force 100
+set g_balance_hagar_primary_radius 70
+set g_balance_hagar_primary_spread 0.025
+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_damage 40
+set g_balance_hagar_secondary_edgedamage 15
+set g_balance_hagar_secondary_force 100
+set g_balance_hagar_secondary_radius 70
+set g_balance_hagar_secondary_spread 0.025
+set g_balance_hagar_secondary_speed 1400
+set g_balance_hagar_secondary_lifetime 30
+set g_balance_hagar_secondary_refire 0.15
+set g_balance_hagar_secondary_ammo 1
+
+set g_balance_rocketlauncher_damage 130
+set g_balance_rocketlauncher_edgedamage 50
+set g_balance_rocketlauncher_force 600
+set g_balance_rocketlauncher_radius 170
+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_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

Modified: trunk/pro/default.cfg
===================================================================
--- trunk/pro/default.cfg	2007-04-13 23:58:24 UTC (rev 2307)
+++ trunk/pro/default.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -65,20 +65,26 @@
 seta scmenu_mouse_speed 1
 v_gamma 1.125000
 viewsize 110
-bgmvolume 1
+bgmvolume 0.2
 volume 0.5
 // fullscreen 800x600x32bit
 vid_bitsperpixel 32
 vid_fullscreen 1
 vid_width 800
 vid_height 600
-// 2D resolution 640x480
-vid_conwidth 640
-vid_conheight 480
+// 2D resolution 800x600
+vid_conwidth 800
+vid_conheight 600
 v_deathtilt 0 // needed for spectators (who are dead to avoid prediction)
-cl_bob 0
-cl_rollangle 0
 
+// these settings determine how much the view is affected by movement/damage
+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 // 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 0 // whether to have gun model move around on screen when moving (only works if cl_bob is not 0), default is 1
+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.5 seconds
+gl_polyblend 0 // whether to use screen tints, default is 1
+
 // nexuiz-linux-*.sh will use this
 seta vid_x11_display ""
 // This can have three possible settings:
@@ -86,8 +92,10 @@
 //   ":n"          use DISPLAY=:n, create it if needed
 //   ":n/layout"   use DISPLAY=:n, create it if needed with ServerLayout layout
 
+cl_autodemo_nameformat demos/%Y-%m-%d_%H-%M
+
 // server settings
-hostname "Nexuiz Server"
+hostname "Nexuiz Pro Server"
 sv_maxrate 10000
 set sv_mapchange_delay 5
 set minplayers 0
@@ -96,31 +104,10 @@
 // restart server if all players hit "ready"-button
 set sv_ready_restart 0
 
-cl_forwardspeed 400
-cl_backspeed 400
-cl_sidespeed 400
-cl_upspeed 400
-cl_movement 1
-cl_netinputpacketlosstolerance 0
-cl_movement_accelerate 5.5
-cl_movement_edgefriction 0
-cl_movement_friction 5
-cl_movement_jumpvelocity 300
-cl_movement_maxairspeed 220
-cl_movement_maxspeed 400
-cl_movement_stepheight 34
-cl_stairsmoothspeed 200
-seta cl_autoswitch 1
-edgefriction 0
-set g_balance_jumpheight 350
-sv_maxairspeed 220
-sv_accelerate 10
-sv_airaccelerate 0.5
-sv_friction 5
-sv_maxspeed 400
+// use default physics
+exec physicsPro.cfg
+
 set sv_spectator_speed_multiplier 1.5
-sv_stepheight 34
-set sv_friction_on_land 0 // factor of the speed which gets lost on landing
 seta sv_spectate 1
 seta sv_defaultcharacter 0
 seta sv_defaultplayermodel models/player/nexus.zym
@@ -129,9 +116,23 @@
 net_messagetimeout 300
 net_connecttimeout 30
 sv_jumpstep 1 // step up stairs while jumping, makes it easier to reach ledges
-set sv_airaccel_sideways_friction 0.3
-set sv_airaccel_qw 0.93
 
+cl_movement 1
+seta cl_autoswitch 1
+cl_netinputpacketlosstolerance 0
+cl_stairsmoothspeed 200
+cl_forwardspeed $sv_maxspeed
+cl_backspeed $sv_maxspeed
+cl_sidespeed $sv_maxspeed
+cl_upspeed $sv_maxspeed
+cl_movement_accelerate $sv_accelerate
+cl_movement_edgefriction $edgefriction
+cl_movement_friction $sv_friction
+cl_movement_jumpvelocity $g_balance_jumpheight
+cl_movement_maxairspeed $sv_maxairspeed
+cl_movement_maxspeed $sv_maxspeed
+cl_movement_stepheight $sv_stepheight
+
 seta cl_playerdetailreduction 0 // the higher, the less detailed
 
 set bot_number 0 // number of bots in server
@@ -178,19 +179,6 @@
 pausable 0
 set g_antilag 0
 set g_weapon_stay 0
-set g_start_weapon_laser 1
-set g_start_weapon_shotgun 1
-set g_start_weapon_uzi 0
-set g_start_weapon_grenadelauncher 0
-set g_start_weapon_electro 0
-set g_start_weapon_crylink 0
-set g_start_weapon_nex 0
-set g_start_weapon_hagar 0
-set g_start_weapon_rocketlauncher 0
-set g_start_ammo_shells 50
-set g_start_ammo_nails 0
-set g_start_ammo_rockets 0
-set g_start_ammo_cells 0
 set g_powerup_superhealth 1
 set g_powerup_strength 1
 set g_powerup_shield 1
@@ -207,21 +195,22 @@
 set g_laserguided_missile 0
 set g_midair 0
 set g_midair_shieldtime 0.3
-set g_spawnshieldtime 0
+set g_spawnshieldtime 0.3
 set g_forced_respawn 0
 set g_fullbrightplayers 0
 set g_fullbrightitems 0
 set g_casings 0
-set g_norecoil 0
-set g_throughfloor 1
+set g_norecoil 1
+set g_throughfloor 0
 set g_maplist_defaultlist 'dm_aggressor''dm_aneurysm''dm_basement''dm_bleach''dm_bluesky''dm_bloodprison''dm_darkzone''dm_downer''dm_evilspace''dm_farewell''dm_runningman''dm_runningman_1on1remix''dm_silvercity''dm_skyway''dm_slimepit''dm_soylent''dm_starship''dm_stormkeep''dm_toxic''dm_warfare''dom_aggressor''dom_aneurysm''dom_basement''dom_bleach''dom_darkzone''dom_downer''dom_evilspace''dom_runningman''dom_runningman_1on1remix''dom_silvercity''dom_skyway''dom_slimepit''dom_soylent''dom_starship''dom_stormkeep''dom_toxic''lms_aggressor''lms_basement''lms_bleach''lms_bluesky''lms_bloodprison''lms_downer''lms_evilspace''lms_farewell''lms_runningman''lms_runningman_1on1remix''lms_skyway''lms_slimepit''lms_soylent''lms_starship''lms_stormkeep''lms_toxic''lms_warfare''rune_aggressor''rune_aneurysm''rune_basement''rune_bleach''rune_darkzone''rune_downer''rune_evilspace''rune_runningman''rune_runningman_1on1remix''rune_silvercity''rune_skyway''rune_slimepit''rune_soylent''rune_starship''rune_stormkeep''rune_toxic''tdm_aggressor''tdm_aneurysm''tdm_basement''tdm_bleach''tdm_darkzone''tdm_downer''tdm_evilspace''tdm_farewell''tdm_runningman''tdm_runningman_1on1remix''tdm_silvercity''tdm_skyway''tdm_slimepit''tdm_soylent''tdm_starship''tdm_stormkeep''tdm_toxic''tdm_warfare'
 seta g_maplist $g_maplist_defaultlist
 seta g_maplist_index 0 // this is used internally for saving position in maplist cycle
-seta g_maplist_selectrandom 0 // if 1, a random map will be chosen as next map; DEPRECATED in favor of g_maplist_shuffle
+seta g_maplist_selectrandom 0 // if 1, a random map will be chosen as next map - DEPRECATED in favor of g_maplist_shuffle
 seta g_maplist_shuffle 0 // new randomization method: like selectrandom, but avoid playing the same maps in short succession. This works by taking out the first element and inserting it into g_maplist with a bias to the end of the list.
 alias g_maplist_shufflenow "set _g_maplist_shufflenow 1"
 alias g_maplist_add "set _g_maplist_add $1"
 alias g_maplist_remove "set _g_maplist_remove $1"
+alias g_maplist_putfirst "set _g_maplist_putfirst $1"
 // timeout for kill credit when your damage knocks someone into a death trap
 set g_maxpushtime 8.0
 
@@ -246,7 +235,7 @@
 seta g_runematch_point_limit -1
 
 // respawn delay
-set g_respawn_delay 0.5
+set g_respawn_delay 2
 set g_respawn_waves 0
 // when variables are set to 0, they take over the global setting...
 // to force disable delay or waves, set them to 0.125
@@ -282,6 +271,7 @@
 set deathmatch_force_teamplay		0	// always play TDM on dm maps
 seta g_balance_teams			0	// automatically balance out players entering instead of asking them for their preferred team
 seta g_balance_teams_force		0	// automatically balance out teams when players move or disconnect
+seta g_balance_teams_complain   0   // when 1, complain when team balance is off
 seta g_balance_teams_prevent_imbalance	0	// prevent players from changing to larger teams
 seta g_tdm_teams			2	// how many teams are in team deathmatch
 set g_changeteam_banned			0	// not allowed to change team
@@ -389,18 +379,22 @@
 
 // server game balance settings
 set g_balance_armor_regen 0
-set g_balance_armor_rot 0.1
+set g_balance_armor_rot 0
+set g_balance_armor_regenlinear 0
+set g_balance_armor_rotlinear 1
 set g_balance_armor_stable 100
-set g_balance_armor_limit 999
+set g_balance_armor_limit 200
 set g_balance_armor_start 0
 set g_balance_armor_blockpercent 0.6
-set g_balance_health_regen 0.1
-set g_balance_health_rot 0.1
+set g_balance_health_regen 0
+set g_balance_health_rot 0
+set g_balance_health_regenlinear 10
+set g_balance_health_rotlinear 1
 set g_balance_health_stable 100
-set g_balance_health_limit 999
-set g_balance_health_start 150
+set g_balance_health_limit 200
+set g_balance_health_start 125
 set g_balance_selfdamagepercent 0.6
-set g_balance_weaponswitchdelay 0.15
+set g_balance_weaponswitchdelay 0
 // powerup balance settings
 set g_balance_powerup_invincible_takedamage 0.2
 set g_balance_powerup_invincible_time 30
@@ -409,152 +403,13 @@
 set g_balance_powerup_strength_time 30
 
 // weapon balance settings follow
+exec weaponsPro.cfg
 
-set g_balance_laser_damage 35
-set g_balance_laser_edgedamage 10
-set g_balance_laser_force 400
-set g_balance_laser_radius 70
-set g_balance_laser_speed 9000
-set g_balance_laser_refire 0.7
-set g_balance_laser_animtime 0.3
-set g_balance_laser_lifetime 9
+set g_balance_falldamage_deadminspeed 650
+set g_balance_falldamage_minspeed 650
+set g_balance_falldamage_factor 0.0385
+set g_balance_falldamage_maxdamage 5
 
-set g_balance_shotgun_primary_bullets 5
-set g_balance_shotgun_primary_damage 12
-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_secondary_bullets 5
-set g_balance_shotgun_secondary_damage 12
-set g_balance_shotgun_secondary_spread 0.07
-set g_balance_shotgun_secondary_refire 1.35
-set g_balance_shotgun_secondary_animtime 0.2
-set g_balance_shotgun_secondary_ammo 1
-
-set g_balance_uzi_first_damage 30
-set g_balance_uzi_first_spread 0.01
-set g_balance_uzi_first_refire 0.2
-set g_balance_uzi_first_ammo 1
-set g_balance_uzi_sustained_damage 16
-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_grenadelauncher_primary_damage 65
-set g_balance_grenadelauncher_primary_edgedamage 35
-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_lifetime 30
-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 35
-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_lifetime 2.5
-set g_balance_grenadelauncher_secondary_refire 0.6
-set g_balance_grenadelauncher_secondary_animtime 0.3
-set g_balance_grenadelauncher_secondary_ammo 2
-
-set g_balance_electro_primary_damage 80
-set g_balance_electro_primary_edgedamage 0
-set g_balance_electro_primary_force 200
-set g_balance_electro_primary_radius 150
-set g_balance_electro_primary_speed 2000
-set g_balance_electro_primary_lifetime 2
-set g_balance_electro_primary_refire 0.9
-set g_balance_electro_primary_animtime 0.05
-set g_balance_electro_primary_ammo 2
-set g_balance_electro_secondary_damage 60
-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_lifetime 5
-set g_balance_electro_secondary_refire 0.3
-set g_balance_electro_secondary_animtime 0.05
-set g_balance_electro_secondary_ammo 2
-set g_balance_electro_combo_damage 70
-set g_balance_electro_combo_edgedamage 0
-set g_balance_electro_combo_force 200
-set g_balance_electro_combo_radius 250
-
-set g_balance_crylink_primary_damage 15
-set g_balance_crylink_primary_edgedamage 0
-set g_balance_crylink_primary_force 55
-set g_balance_crylink_primary_radius 3
-set g_balance_crylink_primary_speed 7000
-set g_balance_crylink_primary_spread 0.08
-set g_balance_crylink_primary_shots 4
-set g_balance_crylink_primary_lifetime 9
-set g_balance_crylink_primary_refire 0.25
-set g_balance_crylink_primary_animtime 0.15
-set g_balance_crylink_primary_ammo 1
-set g_balance_crylink_secondary_damage 15
-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_shots 7
-set g_balance_crylink_secondary_lifetime 9
-set g_balance_crylink_secondary_refire 0.5
-set g_balance_crylink_secondary_animtime 0.15
-set g_balance_crylink_secondary_ammo 3
-
-
-set g_balance_nex_damage 140
-set g_balance_nex_refire 1.5
-set g_balance_nex_animtime 0.3
-set g_balance_minstagib_nex_refire 1.5
-set g_balance_minstagib_nex_animtime 0.3
-set g_balance_nex_ammo 5
-set g_balance_nex_respawntime_modifier 1
-
-set g_balance_hagar_primary_damage 40
-set g_balance_hagar_primary_edgedamage 15
-set g_balance_hagar_primary_force 100
-set g_balance_hagar_primary_radius 70
-set g_balance_hagar_primary_spread 0.025
-set g_balance_hagar_primary_speed 3000
-set g_balance_hagar_primary_lifetime 10
-set g_balance_hagar_primary_refire 0.15
-set g_balance_hagar_primary_ammo 1
-set g_balance_hagar_secondary_damage 40
-set g_balance_hagar_secondary_edgedamage 15
-set g_balance_hagar_secondary_force 100
-set g_balance_hagar_secondary_radius 70
-set g_balance_hagar_secondary_spread 0.025
-set g_balance_hagar_secondary_speed 1400
-set g_balance_hagar_secondary_lifetime 10
-set g_balance_hagar_secondary_refire 0.15
-set g_balance_hagar_secondary_ammo 1
-
-set g_balance_rocketlauncher_damage 130
-set g_balance_rocketlauncher_edgedamage 50
-set g_balance_rocketlauncher_force 600
-set g_balance_rocketlauncher_radius 170
-set g_balance_rocketlauncher_speed 850
-set g_balance_rocketlauncher_lifetime 9
-set g_balance_rocketlauncher_refire 1
-set g_balance_rocketlauncher_animtime 0.3
-set g_balance_rocketlauncher_ammo 3
-set g_balance_rocketlauncher_laserguided_speed	1000  //650
-set g_balance_rocketlauncher_laserguided_turnrate	0.75  //0.5
-set g_balance_rocketlauncher_laserguided_allow_steal	1
-
-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_pause_armor_rot 5
 set g_balance_pause_health_rot 5
 set g_balance_pause_health_regen 5
@@ -568,6 +423,7 @@
 r_shadow_bumpscale_bumpmap 4
 r_shadow_bumpscale_basetexture 5
 r_shadow_realtime_world_lightmaps 1
+r_ambient 20
 cl_decals_fadetime 1
 cl_decals_time 2
 seta cl_nogibs 0
@@ -686,7 +542,7 @@
 set sv_vote_call 1
 // users can call a vote to become master
 set sv_vote_master 1
-// when set, users can use "vdo master (password)" to log in as master
+// when set, users can use "vdo login (password)" to log in as master
 set sv_vote_master_password ""
 // set to 1 to allow to change you vote/mind
 set sv_vote_change 0
@@ -696,6 +552,8 @@
 set sv_vote_timeout 60
 // a player can not call a vote again for this many seconds
 set sv_vote_wait 120
+// a simple majority suffices to accept a vote (meaning: YES votes > NO votes, otherwise: YES votes > half of the players)
+set sv_vote_simple_majority 0
 alias vhelp "cmd vote help"
 alias vstatus "cmd vote status"
 alias vcall "cmd vote call $*"
@@ -785,9 +643,35 @@
 
 alias teamstatus "set _scoreboard 1"
 
-con_chatwidth 1.0
+con_chatwidth 0.6
+con_chat 5
+con_chatpos -7
+sbar_alpha_bg 0.4
 
 net_banlist ""
 seta _alientrap_net_banlist ""
 
-set g_waypoints_for_items 1 // make waypoints out of items; values: 0 = never, 1 = unless the mapper prevents it by worldspawn.spawnflags & 1, 2 = always
+set g_waypoints_for_items 1 // make waypoints out of items,  values: 0 = never, 1 = unless the mapper prevents it by worldspawn.spawnflags & 1, 2 = always
+
+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_maplist_votable 5
+set g_maplist_votable_keeptwotime 15
+set g_maplist_votable_timeout 30 // note: must be below 50 seconds!
+set g_maplist_votable_suggestions 2
+alias suggestmap "cmd suggestmap $1"
+
+set g_chat_flood_spl 0                   // seconds between lines to not count as flooding
+set g_chat_flood_lmax 0                  // maximum number of lines per chat message at once
+set g_chat_flood_burst 0                 // allow bursts of so many chat lines
+set g_chat_flood_spl_team 0              // \
+set g_chat_flood_lmax_team 0             //  } same for say_team
+set g_chat_flood_burst_team 0            // /
+set g_chat_flood_notify_flooder 1        // when 0, the flooder still can see his own message
+set g_chat_teamcolors 0                  // colorize nicknames in team color for chat

Added: trunk/pro/physicsPro.cfg
===================================================================
--- trunk/pro/physicsPro.cfg	                        (rev 0)
+++ trunk/pro/physicsPro.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -0,0 +1,12 @@
+// these values match Quake3
+sv_maxspeed 320
+sv_maxairspeed $sv_maxspeed
+sv_accelerate 10
+sv_airaccelerate 1
+sv_friction 6
+edgefriction 0
+sv_stepheight 34 // this is for Nexuiz maps, Quake3 used 18
+set g_balance_jumpheight 270
+set sv_friction_on_land 0
+set sv_airaccel_sideways_friction 0
+set sv_airaccel_qw 1

Added: trunk/pro/weaponsPro.cfg
===================================================================
--- trunk/pro/weaponsPro.cfg	                        (rev 0)
+++ trunk/pro/weaponsPro.cfg	2007-04-14 00:26:50 UTC (rev 2308)
@@ -0,0 +1,187 @@
+set g_start_weapon_laser 1
+set g_start_weapon_shotgun 1
+set g_start_weapon_uzi 0
+set g_start_weapon_grenadelauncher 0
+set g_start_weapon_electro 0
+set g_start_weapon_crylink 0
+set g_start_weapon_nex 0
+set g_start_weapon_hagar 0
+set g_start_weapon_rocketlauncher 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_pickup_shells 20
+set g_pickup_shells_max 80
+set g_pickup_nails 100
+set g_pickup_nails_max 400
+set g_pickup_rockets 30
+set g_pickup_rockets_max 120
+set g_pickup_cells 30
+set g_pickup_cells_max 120
+set g_pickup_armorshard 5
+set g_pickup_armorshard_max 200
+set g_pickup_armor 100
+set g_pickup_armor_max 200
+set g_pickup_healthshard 5
+set g_pickup_healthshard_max 200
+set g_pickup_health 25
+set g_pickup_health_max 100
+set g_pickup_healthmega 100
+set g_pickup_healthmega_max 200
+
+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_refire 0.7
+set g_balance_laser_primary_animtime 0.3
+set g_balance_laser_primary_lifetime 30
+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_refire 0.7
+set g_balance_laser_secondary_animtime 0.3
+set g_balance_laser_secondary_lifetime 30
+
+set g_balance_shotgun_primary_bullets 8
+set g_balance_shotgun_primary_damage 9
+set g_balance_shotgun_primary_force 0
+set g_balance_shotgun_primary_spread 0.05
+set g_balance_shotgun_primary_refire 1.0
+set g_balance_shotgun_primary_animtime 0.2
+set g_balance_shotgun_primary_ammo 2
+set g_balance_shotgun_secondary_bullets 4
+set g_balance_shotgun_secondary_damage 11
+set g_balance_shotgun_secondary_force 0
+set g_balance_shotgun_secondary_spread 0.08
+set g_balance_shotgun_secondary_refire 1.5
+set g_balance_shotgun_secondary_animtime 0.2
+set g_balance_shotgun_secondary_ammo 1
+
+set g_balance_uzi_first_damage 15
+set g_balance_uzi_first_force 0
+set g_balance_uzi_first_spread 0.02
+set g_balance_uzi_first_refire 0.2
+set g_balance_uzi_first_ammo 1
+set g_balance_uzi_sustained_damage 5
+set g_balance_uzi_sustained_force 0
+set g_balance_uzi_sustained_spread 0.06
+set g_balance_uzi_sustained_refire 0.05
+set g_balance_uzi_sustained_ammo 1
+
+set g_balance_grenadelauncher_primary_damage 60
+set g_balance_grenadelauncher_primary_edgedamage 20
+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_lifetime 30
+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 60
+set g_balance_grenadelauncher_secondary_edgedamage 20
+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_lifetime 2.5
+set g_balance_grenadelauncher_secondary_refire 0.6
+set g_balance_grenadelauncher_secondary_animtime 0.3
+set g_balance_grenadelauncher_secondary_ammo 2
+
+set g_balance_electro_primary_damage 80
+set g_balance_electro_primary_edgedamage 0
+set g_balance_electro_primary_force 200
+set g_balance_electro_primary_radius 150
+set g_balance_electro_primary_speed 2000
+set g_balance_electro_primary_lifetime 30
+set g_balance_electro_primary_refire 0.6
+set g_balance_electro_primary_animtime 0.05
+set g_balance_electro_primary_ammo 4
+set g_balance_electro_secondary_damage 60
+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_lifetime 5
+set g_balance_electro_secondary_refire 0.3
+set g_balance_electro_secondary_animtime 0.05
+set g_balance_electro_secondary_ammo 3
+set g_balance_electro_combo_damage 70
+set g_balance_electro_combo_edgedamage 0
+set g_balance_electro_combo_force 200
+set g_balance_electro_combo_radius 250
+
+set g_balance_crylink_primary_damage 20
+set g_balance_crylink_primary_edgedamage 0
+set g_balance_crylink_primary_force 0
+set g_balance_crylink_primary_radius 20
+set g_balance_crylink_primary_speed 7000
+set g_balance_crylink_primary_spread 0.02
+set g_balance_crylink_primary_shots 1
+set g_balance_crylink_primary_lifetime 30
+set g_balance_crylink_primary_refire 0.1
+set g_balance_crylink_primary_animtime 0.1
+set g_balance_crylink_primary_ammo 1
+set g_balance_crylink_secondary_damage 20
+set g_balance_crylink_secondary_edgedamage 0
+set g_balance_crylink_secondary_force 100
+set g_balance_crylink_secondary_radius 20
+set g_balance_crylink_secondary_speed 7000
+set g_balance_crylink_secondary_spread 0.08
+set g_balance_crylink_secondary_shots 5
+set g_balance_crylink_secondary_lifetime 30
+set g_balance_crylink_secondary_refire 0.5
+set g_balance_crylink_secondary_animtime 0.15
+set g_balance_crylink_secondary_ammo 5
+
+set g_balance_nex_damage 70
+set g_balance_nex_force 0
+set g_balance_nex_refire 0.7
+set g_balance_nex_animtime 0.3
+set g_balance_minstagib_nex_refire 1.5
+set g_balance_minstagib_nex_animtime 0.3
+set g_balance_nex_ammo 5
+set g_balance_nex_respawntime_modifier 1
+
+set g_balance_hagar_primary_damage 40
+set g_balance_hagar_primary_edgedamage 15
+set g_balance_hagar_primary_force 100
+set g_balance_hagar_primary_radius 70
+set g_balance_hagar_primary_spread 0.025
+set g_balance_hagar_primary_speed 3000
+set g_balance_hagar_primary_lifetime 30
+set g_balance_hagar_primary_refire 0.2
+set g_balance_hagar_primary_ammo 1
+set g_balance_hagar_secondary_damage 40
+set g_balance_hagar_secondary_edgedamage 15
+set g_balance_hagar_secondary_force 100
+set g_balance_hagar_secondary_radius 70
+set g_balance_hagar_secondary_spread 0.025
+set g_balance_hagar_secondary_speed 1400
+set g_balance_hagar_secondary_lifetime 30
+set g_balance_hagar_secondary_refire 0.2
+set g_balance_hagar_secondary_ammo 1
+
+set g_balance_rocketlauncher_damage 100
+set g_balance_rocketlauncher_edgedamage 0
+set g_balance_rocketlauncher_force 600
+set g_balance_rocketlauncher_radius 120
+set g_balance_rocketlauncher_speed 900
+set g_balance_rocketlauncher_speedaccel 0
+set g_balance_rocketlauncher_speedstart 900
+set g_balance_rocketlauncher_lifetime 30
+set g_balance_rocketlauncher_refire 0.8
+set g_balance_rocketlauncher_animtime 0.3
+set g_balance_rocketlauncher_ammo 3
+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




More information about the nexuiz-commits mailing list