]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge remote branch 'origin/fruitiex/fruit_vs_tzork-balance'
authorRudolf Polzer <divverent@alientrap.org>
Thu, 18 Nov 2010 06:20:06 +0000 (07:20 +0100)
committerRudolf Polzer <divverent@alientrap.org>
Thu, 18 Nov 2010 06:20:06 +0000 (07:20 +0100)
14 files changed:
balance25.cfg
balanceLeeStricklin.cfg
balanceNexSVN.cfg
balanceSamual.cfg
balanceTest.cfg
balanceXonotic.cfg
balancetZork.cfg
defaultXonotic.cfg
qcsrc/client/View.qc
qcsrc/common/constants.qh
qcsrc/server/cl_client.qc
qcsrc/server/defs.qh
qcsrc/server/g_world.qc
qcsrc/server/w_nex.qc

index 001572fe589b5ee33f24286d85038b7df27df4e8..9ca249253593162976f5a0badcba4ecfaacd8783 100644 (file)
@@ -461,6 +461,10 @@ set g_balance_nex_primary_damagefalloff_forcehalflife 0
 set g_balance_nex_secondary 0
 set g_balance_nex_secondary_charge 0
 set g_balance_nex_secondary_charge_rate 0.1
+set g_balance_nex_secondary_charge_pool 0
+set g_balance_nex_secondary_charge_pool_regen 0.15
+set g_balance_nex_secondary_charge_pool_pause_regen 1
+set g_balance_nex_secondary_charge_pool_pause_health_regen 1
 set g_balance_nex_secondary_damage 100
 set g_balance_nex_secondary_force 600
 set g_balance_nex_secondary_refire 1.5
index 62847823ff8d9849e6ab543b1ce45299992c1197..97fd210cc8f94bad17a41c777bab56fcc0f4a033 100644 (file)
@@ -472,6 +472,10 @@ set g_balance_nex_primary_damagefalloff_forcehalflife 9999999
 set g_balance_nex_secondary 0
 set g_balance_nex_secondary_charge 0
 set g_balance_nex_secondary_charge_rate 0.1
+set g_balance_nex_secondary_charge_pool 0
+set g_balance_nex_secondary_charge_pool_regen 0.15
+set g_balance_nex_secondary_charge_pool_pause_regen 1
+set g_balance_nex_secondary_charge_pool_pause_health_regen 1
 set g_balance_nex_secondary_damage 80
 set g_balance_nex_secondary_force -500
 set g_balance_nex_secondary_refire 1.25
index e4c4a69d182c2c80305399538503410e2eeb7736..5108942388101cc2da3e673419226778649e6c99 100644 (file)
@@ -460,6 +460,10 @@ set g_balance_nex_primary_damagefalloff_forcehalflife 1500
 set g_balance_nex_secondary 0
 set g_balance_nex_secondary_charge 0
 set g_balance_nex_secondary_charge_rate 0.1
+set g_balance_nex_secondary_charge_pool 0
+set g_balance_nex_secondary_charge_pool_regen 0.15
+set g_balance_nex_secondary_charge_pool_pause_regen 1
+set g_balance_nex_secondary_charge_pool_pause_health_regen 1
 set g_balance_nex_secondary_damage 90
 set g_balance_nex_secondary_force 200
 set g_balance_nex_secondary_refire 1.5
index b82fa6632e83386fd6359c473631ddcc4236f7c4..76b46fd652ceee6060fea45bccd191c284d985c7 100644 (file)
@@ -461,6 +461,10 @@ set g_balance_nex_primary_damagefalloff_forcehalflife 1500
 set g_balance_nex_secondary 0
 set g_balance_nex_secondary_charge 0
 set g_balance_nex_secondary_charge_rate 0.1
+set g_balance_nex_secondary_charge_pool 0
+set g_balance_nex_secondary_charge_pool_regen 0.15
+set g_balance_nex_secondary_charge_pool_pause_regen 1
+set g_balance_nex_secondary_charge_pool_pause_health_regen 1
 set g_balance_nex_secondary_damage 0
 set g_balance_nex_secondary_force 0
 set g_balance_nex_secondary_refire 0
index e9b797ef59b5a44a1a988404bb451ea377a8fff3..91cfe1f3c19f49348e61af9224d0ae1ed3a255a9 100644 (file)
@@ -461,11 +461,15 @@ set g_balance_nex_primary_damagefalloff_forcehalflife 0
 set g_balance_nex_secondary 1
 set g_balance_nex_secondary_charge 1
 set g_balance_nex_secondary_charge_rate 0.55
+set g_balance_nex_secondary_charge_pool 0
+set g_balance_nex_secondary_charge_pool_regen 0.15
+set g_balance_nex_secondary_charge_pool_pause_regen 1
+set g_balance_nex_secondary_charge_pool_pause_health_regen 1
 set g_balance_nex_secondary_damage 100
 set g_balance_nex_secondary_force 600
 set g_balance_nex_secondary_refire 1.5
 set g_balance_nex_secondary_animtime 0.3
-set g_balance_nex_secondary_ammo 5
+set g_balance_nex_secondary_ammo 0
 set g_balance_nex_secondary_damagefalloff_mindist 0
 set g_balance_nex_secondary_damagefalloff_maxdist 0
 set g_balance_nex_secondary_damagefalloff_halflife 0
index de110e3d5449f44ec48cd623c41ae85a3c5d29e7..0d79340641ec5db2d392f83465fea5cd06483cb0 100644 (file)
@@ -294,7 +294,7 @@ set g_balance_grenadelauncher_primary_damage 50
 set g_balance_grenadelauncher_primary_edgedamage 25
 set g_balance_grenadelauncher_primary_force 300
 set g_balance_grenadelauncher_primary_radius 100
-set g_balance_grenadelauncher_primary_speed 1200
+set g_balance_grenadelauncher_primary_speed 1500
 set g_balance_grenadelauncher_primary_speed_up 225
 set g_balance_grenadelauncher_primary_speed_z 0
 set g_balance_grenadelauncher_primary_spread 0
@@ -312,7 +312,7 @@ set g_balance_grenadelauncher_secondary_damage 70
 set g_balance_grenadelauncher_secondary_edgedamage 32
 set g_balance_grenadelauncher_secondary_force 300
 set g_balance_grenadelauncher_secondary_radius 150
-set g_balance_grenadelauncher_secondary_speed 1200
+set g_balance_grenadelauncher_secondary_speed 1500
 set g_balance_grenadelauncher_secondary_speed_up 225
 set g_balance_grenadelauncher_secondary_speed_z 0
 set g_balance_grenadelauncher_secondary_spread 0
@@ -413,7 +413,7 @@ set g_balance_crylink_primary_joinexplode_damage 0
 set g_balance_crylink_primary_joinexplode_edgedamage 0
 set g_balance_crylink_primary_joinexplode_radius 0
 set g_balance_crylink_primary_joinexplode_force 0
-set g_balance_crylink_primary_linkexplode 0
+set g_balance_crylink_primary_linkexplode 1
 
 set g_balance_crylink_primary_middle_lifetime 5 // range: 10000 full, fades to 20000
 set g_balance_crylink_primary_middle_fadetime 5
@@ -451,36 +451,40 @@ set g_balance_crylink_secondary_line_fadetime 2
 set g_balance_nex_primary_damage 100
 set g_balance_nex_primary_force 500
 set g_balance_nex_primary_refire 1
-set g_balance_nex_primary_animtime 0.75
+set g_balance_nex_primary_animtime 0.4
 set g_balance_nex_primary_ammo 5
-set g_balance_nex_primary_damagefalloff_mindist 1000
-set g_balance_nex_primary_damagefalloff_maxdist 3000
-set g_balance_nex_primary_damagefalloff_halflife 1000
-set g_balance_nex_primary_damagefalloff_forcehalflife 2000
+set g_balance_nex_primary_damagefalloff_mindist 0
+set g_balance_nex_primary_damagefalloff_maxdist 0
+set g_balance_nex_primary_damagefalloff_halflife 0
+set g_balance_nex_primary_damagefalloff_forcehalflife 0
 
 set g_balance_nex_secondary 1
 set g_balance_nex_secondary_charge 1
-set g_balance_nex_secondary_charge_rate 0.125
+set g_balance_nex_secondary_charge_rate 0.55
+set g_balance_nex_secondary_charge_pool 1
+set g_balance_nex_secondary_charge_pool_regen 0.15
+set g_balance_nex_secondary_charge_pool_pause_regen 1
+set g_balance_nex_secondary_charge_pool_pause_health_regen 1
 set g_balance_nex_secondary_damage 0
 set g_balance_nex_secondary_force 0
 set g_balance_nex_secondary_refire 0
 set g_balance_nex_secondary_animtime 0
-set g_balance_nex_secondary_ammo 2
+set g_balance_nex_secondary_ammo 0.25 // full charge pool is 1, so it depletes in 4 secs
 set g_balance_nex_secondary_damagefalloff_mindist 0
 set g_balance_nex_secondary_damagefalloff_maxdist 0
 set g_balance_nex_secondary_damagefalloff_halflife 0
 set g_balance_nex_secondary_damagefalloff_forcehalflife 0
 
 set g_balance_nex_charge 1
-set g_balance_nex_charge_mindmg 40
+set g_balance_nex_charge_mindmg 30
 set g_balance_nex_charge_start 0.5
-set g_balance_nex_charge_rate 0.05
+set g_balance_nex_charge_rate 0.6
 set g_balance_nex_charge_limit 0.5
-set g_balance_nex_charge_rot_rate 0.01
-set g_balance_nex_charge_rot_pause 0 // Dont rot down untill this long after release of charge button
-set g_balance_nex_charge_shot_multiplier 0.675
-set g_balance_nex_charge_velocity_rate 0.2
-set g_balance_nex_charge_minspeed 400
+set g_balance_nex_charge_rot_rate 0.1
+set g_balance_nex_charge_rot_pause 1 // Dont rot down until this long after release of charge button
+set g_balance_nex_charge_shot_multiplier 0
+set g_balance_nex_charge_velocity_rate 0
+set g_balance_nex_charge_minspeed 600
 set g_balance_nex_charge_maxspeed 1000
 // }}}
 // {{{ minstanex
@@ -515,9 +519,9 @@ set g_balance_rocketlauncher_damage 90
 set g_balance_rocketlauncher_edgedamage 33
 set g_balance_rocketlauncher_force 350
 set g_balance_rocketlauncher_radius 125
-set g_balance_rocketlauncher_speed 1000
+set g_balance_rocketlauncher_speed 1080
 set g_balance_rocketlauncher_speedaccel 0
-set g_balance_rocketlauncher_speedstart 1000
+set g_balance_rocketlauncher_speedstart 1080
 set g_balance_rocketlauncher_lifetime 5
 set g_balance_rocketlauncher_refire 1
 set g_balance_rocketlauncher_animtime 0.4
index e1183bc8e51abf2253599c7d717dae196bff4e67..c4a766a3590491feb8a47b08c245245165dfae03 100644 (file)
@@ -482,6 +482,10 @@ set g_balance_nex_primary_damagefalloff_forcehalflife 0
 set g_balance_nex_secondary 1
 set g_balance_nex_secondary_charge 1
 set g_balance_nex_secondary_charge_rate 0.55
+set g_balance_nex_secondary_charge_pool 0
+set g_balance_nex_secondary_charge_pool_regen 0.15
+set g_balance_nex_secondary_charge_pool_pause_regen 1
+set g_balance_nex_secondary_charge_pool_pause_health_regen 1
 set g_balance_nex_secondary_damage 100
 set g_balance_nex_secondary_force 600
 set g_balance_nex_secondary_refire 1.5
index 247acb007224f5fac87e201fd8243c026d88931c..d7e3f2a957d77604a4ca304ebc69521307957b57 100644 (file)
@@ -178,16 +178,19 @@ seta crosshair_fireball ""        "crosshair to display when wielding the fireball"
 seta crosshair_fireball_color "0.2 1.0 0.2"    "crosshair color to display when wielding the fireball"
 seta crosshair_fireball_alpha 1        "crosshair alpha value to display when wielding the fireball"
 seta crosshair_fireball_size 1 "crosshair size when wielding the fireball"
+
+// ring around crosshair, used for various purposes (such as indicating bullets left in clip, nex charge)
 seta crosshair_ring_size 2     "bullet counter ring size for Rifle, velocity ring for Nex"
-seta crosshair_campingrifle_bulletcounter_alpha 0.15
-
-seta crosshair_nexvelocity_alpha 0.15
-seta crosshair_nexvelocity_currentcharge_scale 30
-seta crosshair_nexvelocity_currentcharge_alpha 0.15
-seta crosshair_nexvelocity_currentcharge_color_red 0.8
-seta crosshair_nexvelocity_currentcharge_color_green 0
-seta crosshair_nexvelocity_currentcharge_color_blue 0
-seta crosshair_nexvelocity_currentcharge_movingavg_rate 0.05
+
+seta crosshair_ring_campingrifle_alpha 0.15
+
+seta crosshair_ring_nex_outer_alpha 0.15
+seta crosshair_ring_nex_inner_alpha 0.15
+seta crosshair_ring_nex_inner_color_red 0.8
+seta crosshair_ring_nex_inner_color_green 0
+seta crosshair_ring_nex_inner_color_blue 0
+seta crosshair_ring_nex_currentcharge_scale 30
+seta crosshair_ring_nex_currentcharge_movingavg_rate 0.05
 
 seta cl_reticle_stretch 0 "whether to stretch reticles so they fit the screen (brakes image proportions)"
 seta cl_reticle_item_nex 1 "draw aiming recticle for the nex weapon's zoom, 0 disables and values between 0 and 1 change alpha"
index 119941ad2c017ace633f6089070b4bca09ffa093..2d9bc563fb8027a70880e533ee6ea593e8e0dc90 100644 (file)
@@ -350,6 +350,7 @@ vector freeze_pmove_org, freeze_input_angles;
 entity nightvision_noise, nightvision_noise2;
 
 float pickup_crosshair_time, pickup_crosshair_size;
+float use_nex_charge_pool;
 
 void CSQC_UpdateView(float w, float h)
 {
@@ -853,8 +854,9 @@ void CSQC_UpdateView(float w, float h)
 
                        wcross_size = drawgetimagesize(wcross_name) * wcross_scale;
 
-                       float nex_charge;
+                       float nex_charge, nex_charge_pool;
                        nex_charge = getstatf(STAT_NEX_CHARGE);
+                       nex_charge_pool = getstatf(STAT_NEX_CHARGEPOOL);
 
                        if(nex_charge_movingavg == 0) // this should only happen if we have just loaded up the game
                                nex_charge_movingavg = nex_charge;
@@ -865,21 +867,32 @@ void CSQC_UpdateView(float w, float h)
                                bullets = getstati(STAT_BULLETS_LOADED);
                                f = bound(0, bullets / cr_maxbullets, 1);
 
-                               a = cvar("crosshair_campingrifle_bulletcounter_alpha");
+                               a = cvar("crosshair_ring_campingrifle_alpha");
                                DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring.tga", f, wcross_color, wcross_alpha * a, DRAWFLAG_ADDITIVE);
                        }
                        else if (activeweapon == WEP_NEX && nex_charge) // ring around crosshair representing velocity-dependent damage for the nex
                        {
                                vector rgb;
-                               // indicate how much we're charging right now with an inner circle
-                               a = cvar("crosshair_nexvelocity_currentcharge_alpha");
-                               nex_charge_movingavg = (1 - cvar("crosshair_nexvelocity_currentcharge_movingavg_rate")) * nex_charge_movingavg + cvar("crosshair_nexvelocity_currentcharge_movingavg_rate") * nex_charge;
+                               if(nex_charge_pool || use_nex_charge_pool)
+                               {
+                                       use_nex_charge_pool = 1;
+
+                                       a = cvar("crosshair_ring_nex_inner_alpha");
+                                       rgb = eX * cvar("crosshair_ring_nex_inner_color_red") + eY * cvar("crosshair_ring_nex_inner_color_green") + eZ * cvar("crosshair_ring_nex_inner_color_blue");
+                                       DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring_inner.tga", nex_charge_pool, rgb, wcross_alpha * a, DRAWFLAG_ADDITIVE);
+                               }
+                               else
+                               {
+                                       // indicate how much we're charging right now with an inner circle
+                                       a = cvar("crosshair_ring_nex_inner_alpha");
+                                       nex_charge_movingavg = (1 - cvar("crosshair_ring_nex_currentcharge_movingavg_rate")) * nex_charge_movingavg + cvar("crosshair_ring_nex_currentcharge_movingavg_rate") * nex_charge;
 
-                               rgb = eX * cvar("crosshair_nexvelocity_currentcharge_color_red") + eY * cvar("crosshair_nexvelocity_currentcharge_color_green") + eZ * cvar("crosshair_nexvelocity_currentcharge_color_blue");
-                               DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring_inner.tga", bound(0, cvar("crosshair_nexvelocity_currentcharge_scale") * (nex_charge - nex_charge_movingavg), 1), rgb, wcross_alpha * a, DRAWFLAG_ADDITIVE);
+                                       rgb = eX * cvar("crosshair_ring_nex_inner_color_red") + eY * cvar("crosshair_ring_nex_inner_color_green") + eZ * cvar("crosshair_ring_nex_inner_color_blue");
+                                       DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring_inner.tga", bound(0, cvar("crosshair_ring_nex_currentcharge_scale") * (nex_charge - nex_charge_movingavg), 1), rgb, wcross_alpha * a, DRAWFLAG_ADDITIVE);
+                               }
 
                                // draw the charge
-                               a = cvar("crosshair_nexvelocity_alpha");
+                               a = cvar("crosshair_ring_nex_outer_alpha");
                                DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring.tga", nex_charge, wcross_color, wcross_alpha * a, DRAWFLAG_ADDITIVE);
                        }
 
index bd7047f5b725fc3f791afb2bd293b49f2cb4b58c..87484cd8f31c7902cf52e2ed1f69e458b9b7193d 100644 (file)
@@ -310,8 +310,9 @@ const float STAT_SHOTORG = 46; // compressShotOrigin
 const float STAT_LEADLIMIT = 47;
 const float STAT_BULLETS_LOADED = 48;
 const float STAT_NEX_CHARGE = 49;
-const float    STAT_LAST_PICKUP = 50;
+const float STAT_LAST_PICKUP = 50;
 const float STAT_HUD = 51;
+const float STAT_NEX_CHARGEPOOL = 52;
 
 // see DP source, quakedef.h
 const float STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW = 222;
index 991017f0fe5cbdb8054e76085f5befae3842c2fd..3d06f58718b22da56d8bb07432bc266df9b81a43 100644 (file)
@@ -889,7 +889,11 @@ void PutClientInServer (void)
                self.air_finished = time + 12;
                self.dmg = 2;
                if(cvar("g_balance_nex_charge"))
+               {
+                       if(cvar("g_balance_nex_secondary_charge_pool"))
+                               self.nex_charge_pool_ammo = 1;
                        self.nex_charge = cvar("g_balance_nex_charge_start");
+               }
 
                if(inWarmupStage)
                {
index b4458499b784f117e99a7de5eb6877ff66b529c9..b99f27544a81488fc4cbbaae2a742b16eb718cad 100644 (file)
@@ -656,6 +656,7 @@ string deathmessage;
 
 .float nex_charge;
 .float nex_charge_rottime;
+.float nex_charge_pool_ammo;
 
 float allowed_to_spawn; // boolean variable used by the clan arena code to determine if a player can spawn (after the round has ended)
 
index c6fe74b47384c693c7e014b11a3b133bc7ace787..b2029ae70aabc8cbdfd4c5ad9b014cd493f51672 100644 (file)
@@ -808,6 +808,7 @@ void spawnfunc_worldspawn (void)
        addstat(STAT_LAST_PICKUP, AS_FLOAT, last_pickup);
 
        addstat(STAT_NEX_CHARGE, AS_FLOAT, nex_charge);
+       addstat(STAT_NEX_CHARGEPOOL, AS_FLOAT, nex_charge_pool_ammo);
 
        if(g_ca)
        {
index d152a6e083949b56586aa4179f46556090841b84..31998e5092a632d0a30ceaae5c2f88847e3e6d54 100644 (file)
@@ -75,6 +75,7 @@ void W_Nex_Attack (float issecondary)
 
 void spawnfunc_weapon_nex (void); // defined in t_items.qc
 
+.float nex_charge_pool_pauseregen_finished;
 float w_nex(float req)
 {
        float dt;
@@ -88,6 +89,14 @@ float w_nex(float req)
                if(cvar("g_balance_nex_charge") && self.nex_charge < cvar("g_balance_nex_charge_limit"))
                        self.nex_charge = min(1, self.nex_charge + cvar("g_balance_nex_charge_rate") * frametime / W_TICSPERFRAME);
 
+               if(cvar("g_balance_nex_secondary_charge_pool"))
+               if(self.nex_charge_pool_ammo < 1)
+               {
+                       if(self.nex_charge_pool_pauseregen_finished < time)
+                               self.nex_charge_pool_ammo = min(1, self.nex_charge_pool_ammo + cvar("g_balance_nex_secondary_charge_pool_regen") * frametime / W_TICSPERFRAME);
+                       self.pauseregen_finished = max(self.pauseregen_finished, time + cvar("g_balance_nex_secondary_charge_pool_pause_health_regen"));
+               }
+
                if (self.BUTTON_ATCK)
                {
                        if (weapon_prepareattack(0, cvar("g_balance_nex_primary_refire")))
@@ -102,12 +111,29 @@ float w_nex(float req)
                        {
                                self.nex_charge_rottime = time + cvar("g_balance_nex_charge_rot_pause");
                                dt = frametime / W_TICSPERFRAME;
-                               if(self.nex_charge < 1)
+
+                               if(cvar("g_balance_nex_secondary_charge_pool"))
                                {
-                                       dt = min(dt, (1 - self.nex_charge) / cvar("g_balance_nex_secondary_charge_rate"));
-                                       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
+                                       if(cvar("g_balance_nex_secondary_ammo"))
                                        {
-                                               if(cvar("g_balance_nex_secondary_ammo"))
+                                               // always deplete if secondary is held
+                                               self.nex_charge_pool_ammo = max(0, self.nex_charge_pool_ammo - cvar("g_balance_nex_secondary_ammo") * dt);
+
+                                               dt = min(dt, (1 - self.nex_charge) / cvar("g_balance_nex_secondary_charge_rate"));
+                                               self.nex_charge_pool_pauseregen_finished = time + cvar("g_balance_nex_secondary_charge_pool_pause_regen");
+                                               dt = min(dt, self.nex_charge_pool_ammo);
+                                               dt = max(0, dt);
+
+                                               self.nex_charge += dt * cvar("g_balance_nex_secondary_charge_rate");
+                                       }
+                               }
+
+                               else if(cvar("g_balance_nex_secondary_ammo"))
+                               {
+                                       if(self.nex_charge < 1)
+                                       {
+                                               dt = min(dt, (1 - self.nex_charge) / cvar("g_balance_nex_secondary_charge_rate"));
+                                               if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
                                                {
                                                        dt = min(dt, (self.ammo_cells - cvar("g_balance_nex_primary_ammo")) / cvar("g_balance_nex_secondary_ammo"));
                                                        dt = max(0, dt);
@@ -116,8 +142,8 @@ float w_nex(float req)
                                                                self.ammo_cells = max(cvar("g_balance_nex_secondary_ammo"), self.ammo_cells - cvar("g_balance_nex_secondary_ammo") * dt);
                                                        }
                                                }
+                                               self.nex_charge += dt * cvar("g_balance_nex_secondary_charge_rate");
                                        }
-                                       self.nex_charge += dt * cvar("g_balance_nex_secondary_charge_rate");
                                }
                        }
                        else if(cvar("g_balance_nex_secondary"))
@@ -146,11 +172,7 @@ float w_nex(float req)
        else if (req == WR_CHECKAMMO1)
                return self.ammo_cells >= cvar("g_balance_nex_primary_ammo");
        else if (req == WR_CHECKAMMO2)
-       {
-               if(cvar("g_balance_nex_secondary_charge"))
-                       return self.ammo_cells >= cvar("g_balance_nex_primary_ammo");
-               return self.ammo_cells >= cvar("g_balance_nex_secondary_ammo");
-       }
+               return self.ammo_cells >= cvar("g_balance_nex_primary_ammo"); // don't allow charging if we don't have enough ammo
        return TRUE;
 };
 #endif