From cc606869548543da20d41903ab5641099f1f8e99 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Sat, 1 Jan 2011 20:57:03 +0100 Subject: [PATCH] nex: more charging features: nex secondary 0, nex secondary charge 0: zoom on secondary nex secondary 1, nex secondary charge 0: fire on secondary nex secondary 0, nex secondary charge 1: zoom on secondary AND charge (unless charging eats ammo, always charge no matter how zoom was initiated) nex secondary 1, nex secondary charge 1: charge on secondary --- qcsrc/server/w_nex.qc | 49 +++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/qcsrc/server/w_nex.qc b/qcsrc/server/w_nex.qc index 77183073d..031749be3 100644 --- a/qcsrc/server/w_nex.qc +++ b/qcsrc/server/w_nex.qc @@ -110,43 +110,52 @@ float w_nex(float req) weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_nex_primary_animtime, w_ready); } } - if (self.BUTTON_ATCK2 || (self.BUTTON_ZOOM && autocvar_g_balance_nex_secondary_charge && !autocvar_g_balance_nex_secondary)) + if ((autocvar_g_balance_nex_secondary_charge && !autocvar_g_balance_nex_secondary) ? self.BUTTON_ZOOM : self.BUTTON_ATCK2) { if(autocvar_g_balance_nex_secondary_charge) { self.nex_charge_rottime = time + autocvar_g_balance_nex_charge_rot_pause; dt = frametime / W_TICSPERFRAME; - if(autocvar_g_balance_nex_secondary_chargepool) + if(self.nex_charge < 1) { - if(autocvar_g_balance_nex_secondary_ammo) + if(autocvar_g_balance_nex_secondary_chargepool) { - // always deplete if secondary is held - self.nex_chargepool_ammo = max(0, self.nex_chargepool_ammo - autocvar_g_balance_nex_secondary_ammo * dt); + if(autocvar_g_balance_nex_secondary_ammo) + { + // always deplete if secondary is held + self.nex_chargepool_ammo = max(0, self.nex_chargepool_ammo - autocvar_g_balance_nex_secondary_ammo * dt); - dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate); - self.nex_chargepool_pauseregen_finished = time + autocvar_g_balance_nex_secondary_chargepool_pause_regen; - dt = min(dt, self.nex_chargepool_ammo); - dt = max(0, dt); + dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate); + self.nex_chargepool_pauseregen_finished = time + autocvar_g_balance_nex_secondary_chargepool_pause_regen; + dt = min(dt, self.nex_chargepool_ammo); + dt = max(0, dt); - self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate; + self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate; + } } - } - else if(autocvar_g_balance_nex_secondary_ammo) - { - if(self.nex_charge < 1) + else if(autocvar_g_balance_nex_secondary_ammo) { - dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate); - if not(self.items & IT_UNLIMITED_WEAPON_AMMO) + if(self.BUTTON_ATCK2) // only eat ammo when the button is pressed { - dt = min(dt, (self.ammo_cells - autocvar_g_balance_nex_primary_ammo) / autocvar_g_balance_nex_secondary_ammo); - dt = max(0, dt); - if(dt > 0) + dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate); + if not(self.items & IT_UNLIMITED_WEAPON_AMMO) { - self.ammo_cells = max(autocvar_g_balance_nex_secondary_ammo, self.ammo_cells - autocvar_g_balance_nex_secondary_ammo * dt); + dt = min(dt, (self.ammo_cells - autocvar_g_balance_nex_primary_ammo) / autocvar_g_balance_nex_secondary_ammo); + dt = max(0, dt); + if(dt > 0) + { + self.ammo_cells = max(autocvar_g_balance_nex_secondary_ammo, self.ammo_cells - autocvar_g_balance_nex_secondary_ammo * dt); + } } + self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate; } + } + + else + { + dt = min(dt, (1 - self.nex_charge) / autocvar_g_balance_nex_secondary_charge_rate); self.nex_charge += dt * autocvar_g_balance_nex_secondary_charge_rate; } } -- 2.39.2