]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'drjaska/wep-reload-fixes' into 'master'
authorterencehill <piuntn@gmail.com>
Tue, 23 May 2023 14:13:21 +0000 (14:13 +0000)
committerterencehill <piuntn@gmail.com>
Tue, 23 May 2023 14:13:21 +0000 (14:13 +0000)
Fix crylink and vaporizer being able to fire with empty magazines

See merge request xonotic/xonotic-data.pk3dir!1147

qcsrc/common/weapons/weapon/crylink.qc
qcsrc/common/weapons/weapon/vaporizer.qc
qcsrc/common/weapons/weapon/vaporizer.qh

index a9504919a94342997d5f12538f948bd7d6ba756a..1e1b8f9913b92abf658d6331a6f757fc53710e3e 100644 (file)
@@ -534,7 +534,7 @@ METHOD(Crylink, wr_think, void(entity thiswep, entity actor, .entity weaponentit
         thiswep.wr_reload(thiswep, actor, weaponentity);
     }
 
-    if(fire & 1)
+    else if(fire & 1)
     {
         if(actor.(weaponentity).crylink_waitrelease != 1)
         if(weapon_prepareattack(thiswep, actor, weaponentity, false, WEP_CVAR_PRI(crylink, refire)))
@@ -544,7 +544,7 @@ METHOD(Crylink, wr_think, void(entity thiswep, entity actor, .entity weaponentit
         }
     }
 
-    if((fire & 2) && autocvar_g_balance_crylink_secondary)
+    else if((fire & 2) && autocvar_g_balance_crylink_secondary)
     {
         if(actor.(weaponentity).crylink_waitrelease != 2)
         if(weapon_prepareattack(thiswep, actor, weaponentity, true, WEP_CVAR_SEC(crylink, refire)))
index b29fd38f4f6247354123112a28fbc673a95cd0f2..ac0a408f394794ffcc4c765ce4b5b39b87ec1fd7 100644 (file)
@@ -255,8 +255,12 @@ METHOD(Vaporizer, wr_think, void(entity thiswep, entity actor, .entity weaponent
     // if the laser uses load, we also consider its ammo for reloading
     if(WEP_CVAR(vaporizer, reload_ammo) && WEP_CVAR_SEC(vaporizer, ammo) && actor.(weaponentity).clip_load < min(vaporizer_ammo, WEP_CVAR_SEC(vaporizer, ammo))) { // forced reload
         thiswep.wr_reload(thiswep, actor, weaponentity);
+        actor.(weaponentity).hagar_load = false; // rocket minsta exclusive var
+        return;
     } else if(WEP_CVAR(vaporizer, reload_ammo) && actor.(weaponentity).clip_load < vaporizer_ammo) { // forced reload
         thiswep.wr_reload(thiswep, actor, weaponentity);
+        actor.(weaponentity).hagar_load = false; // rocket minsta exclusive var
+        return;
     }
     if((fire & 1) && (GetResource(actor, RES_CELLS) || !autocvar_g_rm) && !weaponLocked(actor))
     {
@@ -271,16 +275,17 @@ METHOD(Vaporizer, wr_think, void(entity thiswep, entity actor, .entity weaponent
         if((autocvar_g_rm && autocvar_g_rm_laser) || autocvar_g_rm_laser == 2)
         {
             bool rapid = autocvar_g_rm_laser_rapid;
-            if(actor.(weaponentity).jump_interval <= time && !actor.(weaponentity).held_down)
+            //hagar_load was previously named held_down
+            if(actor.(weaponentity).jump_interval <= time && !actor.(weaponentity).hagar_load)
             {
                 if(rapid)
-                    actor.(weaponentity).held_down = true;
+                    actor.(weaponentity).hagar_load = true;
                 actor.(weaponentity).jump_interval = time + autocvar_g_rm_laser_refire;
                 actor.(weaponentity).jump_interval2 = time + autocvar_g_rm_laser_rapid_delay;
                 impressive_hits = 0;
                 W_RocketMinsta_Attack(actor, weaponentity, 0);
             }
-            else if(rapid && actor.(weaponentity).jump_interval2 <= time && actor.(weaponentity).held_down)
+            else if(rapid && actor.(weaponentity).jump_interval2 <= time && actor.(weaponentity).hagar_load)
             {
                 actor.(weaponentity).jump_interval2 = time + autocvar_g_rm_laser_rapid_refire;
                 impressive_hits = 0;
@@ -305,7 +310,7 @@ METHOD(Vaporizer, wr_think, void(entity thiswep, entity actor, .entity weaponent
         }
     }
     else
-        actor.(weaponentity).held_down = false;
+        actor.(weaponentity).hagar_load = false;
 }
 METHOD(Vaporizer, wr_setup, void(entity thiswep, entity actor, .entity weaponentity))
 {
index b0c703809c88e90fd53be188564e68de4fd02b0c..1df620995717c20472755ac4d2f42f7ad6bfaa1b 100644 (file)
@@ -66,6 +66,5 @@ SPAWNFUNC_WEAPON(weapon_minstanex, WEP_VAPORIZER)
 .float vaporizer_lasthit;
 .float jump_interval;
 .float jump_interval2;
-.bool held_down;
 .int rm_laser_count;
 #endif