From: Mircea Kitsune Date: Sat, 22 Jan 2011 14:50:47 +0000 (+0200) Subject: An additional feature for the minstanex, allowing the alt fire (laser) to take weapon... X-Git-Tag: xonotic-v0.5.0~309^2~7^2~118 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=14ed7708d8b52fe6f8f1f980e44254e1b7a28da8;p=xonotic%2Fxonotic-data.pk3dir.git An additional feature for the minstanex, allowing the alt fire (laser) to take weapon load as well. --- diff --git a/balanceXonotic.cfg b/balanceXonotic.cfg index 8f1d999f9..c50e3640b 100644 --- a/balanceXonotic.cfg +++ b/balanceXonotic.cfg @@ -519,6 +519,7 @@ set g_balance_minstanex_refire 1 set g_balance_minstanex_animtime 0.50 set g_balance_minstanex_ammo 10 set g_balance_minstanex_reload_ammo 40 +set g_balance_minstanex_reload_laserload 5 set g_balance_minstanex_reload_time 2 // }}} // {{{ hagar diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 287fe539f..7d0c15e2d 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -446,6 +446,7 @@ float autocvar_g_balance_minstanex_ammo; float autocvar_g_balance_minstanex_animtime; float autocvar_g_balance_minstanex_refire; float autocvar_g_balance_minstanex_reload_ammo; +float autocvar_g_balance_minstanex_reload_laserload; float autocvar_g_balance_minstanex_reload_time; float autocvar_g_balance_nex_charge; float autocvar_g_balance_nex_charge_limit; diff --git a/qcsrc/server/w_minstanex.qc b/qcsrc/server/w_minstanex.qc index 3fdec0d06..7936c9f3f 100644 --- a/qcsrc/server/w_minstanex.qc +++ b/qcsrc/server/w_minstanex.qc @@ -6,6 +6,18 @@ REGISTER_WEAPON(MINSTANEX, w_minstanex, IT_CELLS, 7, WEP_FLAG_HIDDEN | WEP_FLAG_ .float minstanex_load; +float W_Minstanex_LaserUsesLoad() +{ + // if the minsta uses reloading, and consumption is enabled for the minsta laser, decrease clip load + if(!autocvar_g_balance_minstanex_reload_ammo) // reloading is disabled + return FALSE; + + if(autocvar_g_balance_minstanex_reload_laserload) + return autocvar_g_balance_minstanex_reload_laserload; + + return FALSE; +} + void W_Minstanex_SetAmmoCounter() { // set clip_load to the weapon we have switched to, if the gun uses reloading @@ -42,7 +54,12 @@ void W_Minstanex_Reload() if(!autocvar_g_balance_minstanex_reload_ammo) return; - if(!W_ReloadCheck(self.ammo_cells, autocvar_g_balance_minstanex_ammo)) + if(W_Minstanex_LaserUsesLoad()) + { + if(!W_ReloadCheck(self.ammo_cells, min(autocvar_g_balance_minstanex_ammo, W_Minstanex_LaserUsesLoad()))) + return; + } + else if(!W_ReloadCheck(self.ammo_cells, autocvar_g_balance_minstanex_ammo)) return; float t; @@ -248,7 +265,10 @@ float w_minstanex(float req) } else if (req == WR_THINK) { - if(autocvar_g_balance_minstanex_reload_ammo && ((g_minstagib && self.clip_load < 1) || (!g_minstagib && self.clip_load < autocvar_g_balance_minstanex_ammo))) // forced reload + // if the laser uses load, we also consider its ammo for reloading + if(autocvar_g_balance_minstanex_reload_ammo && W_Minstanex_LaserUsesLoad() && ((g_minstagib && self.clip_load < min(1, W_Minstanex_LaserUsesLoad())) || (!g_minstagib && self.clip_load < min(autocvar_g_balance_minstanex_ammo, W_Minstanex_LaserUsesLoad())))) // forced reload + W_Minstanex_Reload(); + else if(autocvar_g_balance_minstanex_reload_ammo && ((g_minstagib && self.clip_load < 1) || (!g_minstagib && self.clip_load < autocvar_g_balance_minstanex_ammo))) // forced reload W_Minstanex_Reload(); else if (self.BUTTON_ATCK) { @@ -264,6 +284,10 @@ float w_minstanex(float req) { self.jump_interval = time + autocvar_g_balance_laser_primary_refire * W_WeaponRateFactor(); + // decrease clip load for the laser? + if(autocvar_g_balance_minstanex_reload_ammo && W_Minstanex_LaserUsesLoad()) + self.clip_load -= W_Minstanex_LaserUsesLoad(); + // ugly minstagib hack to reuse the fire mode of the laser float w; w = self.weapon; @@ -320,7 +344,12 @@ float w_minstanex(float req) } } else if (req == WR_CHECKAMMO2) - return TRUE; + { + if(W_Minstanex_LaserUsesLoad()) + return W_Minstanex_LaserUsesLoad(); + else + return TRUE; + } else if (req == WR_RESETPLAYER) { self.minstanex_lasthit = 0;