]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
An additional feature for the minstanex, allowing the alt fire (laser) to take weapon...
authorMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Sat, 22 Jan 2011 14:50:47 +0000 (16:50 +0200)
committerMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Sat, 22 Jan 2011 14:50:47 +0000 (16:50 +0200)
balanceXonotic.cfg
qcsrc/server/autocvars.qh
qcsrc/server/w_minstanex.qc

index 8f1d999f9b922ddf54b34b8067076142327118d9..c50e3640b4b3411b1e4144e3f2d9716eb5678131 100644 (file)
@@ -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
index 287fe539fdf055f1cde0c35c882752a7afd4f0f4..7d0c15e2d8e6e754e0cd8d6939b483a3295dbe03 100644 (file)
@@ -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;
index 3fdec0d06d88f95436721ec1dd6cb413727000b3..7936c9f3f132b8974ee39a6e89f9b5a77d56487b 100644 (file)
@@ -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;