From a29ce624e22a200a3c38285664d9f6ce959a4439 Mon Sep 17 00:00:00 2001
From: Mario <mario@smbclan.net>
Date: Thu, 29 Sep 2016 23:57:39 +1000
Subject: [PATCH] Make a few more weapons work properly in secondary slots

---
 qcsrc/common/weapons/weapon/minelayer.qc |  1 +
 qcsrc/common/weapons/weapon/shockwave.qc |  4 ++--
 qcsrc/common/weapons/weapon/vaporizer.qc | 18 +++++++++---------
 3 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/qcsrc/common/weapons/weapon/minelayer.qc b/qcsrc/common/weapons/weapon/minelayer.qc
index 89141b17f7..dd75963661 100644
--- a/qcsrc/common/weapons/weapon/minelayer.qc
+++ b/qcsrc/common/weapons/weapon/minelayer.qc
@@ -72,6 +72,7 @@ void W_MineLayer_Stick(entity this, entity to)
 
 	entity newmine = spawn();
 	IL_PUSH(g_mines, newmine);
+	newmine.weaponentity_fld = this.weaponentity_fld;
 	newmine.classname = this.classname;
 
 	newmine.bot_dodge = this.bot_dodge;
diff --git a/qcsrc/common/weapons/weapon/shockwave.qc b/qcsrc/common/weapons/weapon/shockwave.qc
index ea756dfc76..8dd56d940b 100644
--- a/qcsrc/common/weapons/weapon/shockwave.qc
+++ b/qcsrc/common/weapons/weapon/shockwave.qc
@@ -706,12 +706,12 @@ METHOD(Shockwave, wr_think, void(entity thiswep, entity actor, .entity weaponent
 {
     if(fire & 1)
     {
-        if(time >= actor.shockwave_blasttime) // handle refire separately so the secondary can be fired straight after a primary
+        if(time >= actor.(weaponentity).shockwave_blasttime) // handle refire separately so the secondary can be fired straight after a primary
         {
             if(weapon_prepareattack(thiswep, actor, weaponentity, false, WEP_CVAR(shockwave, blast_animtime)))
             {
                 W_Shockwave_Attack(actor, weaponentity);
-                actor.shockwave_blasttime = time + WEP_CVAR(shockwave, blast_refire) * W_WeaponRateFactor(actor);
+                actor.(weaponentity).shockwave_blasttime = time + WEP_CVAR(shockwave, blast_refire) * W_WeaponRateFactor(actor);
                 weapon_thinkf(actor, weaponentity, WFRAME_FIRE1, WEP_CVAR(shockwave, blast_animtime), w_ready);
             }
         }
diff --git a/qcsrc/common/weapons/weapon/vaporizer.qc b/qcsrc/common/weapons/weapon/vaporizer.qc
index 25464b2439..5a9a8735fb 100644
--- a/qcsrc/common/weapons/weapon/vaporizer.qc
+++ b/qcsrc/common/weapons/weapon/vaporizer.qc
@@ -380,27 +380,27 @@ 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.jump_interval <= time && !actor.held_down)
+            if(actor.(weaponentity).jump_interval <= time && !actor.(weaponentity).held_down)
             {
                 if(rapid)
-                    actor.held_down = true;
-                actor.jump_interval = time + autocvar_g_rm_laser_refire;
-                actor.jump_interval2 = time + autocvar_g_rm_laser_rapid_delay;
+                    actor.(weaponentity).held_down = true;
+                actor.(weaponentity).jump_interval = time + autocvar_g_rm_laser_refire;
+                actor.(weaponentity).jump_interval2 = time + autocvar_g_rm_laser_rapid_delay;
                 damage_goodhits = 0;
                 W_RocketMinsta_Attack2(actor, weaponentity);
             }
-            else if(rapid && actor.jump_interval2 <= time && actor.held_down)
+            else if(rapid && actor.(weaponentity).jump_interval2 <= time && actor.(weaponentity).held_down)
             {
-                actor.jump_interval2 = time + autocvar_g_rm_laser_rapid_refire;
+                actor.(weaponentity).jump_interval2 = time + autocvar_g_rm_laser_rapid_refire;
                 damage_goodhits = 0;
                 W_RocketMinsta_Attack3(actor, weaponentity);
                 //weapon_thinkf(actor, WFRAME_FIRE2, autocvar_g_rm_laser_rapid_animtime, w_ready);
             }
         }
-        else if (actor.jump_interval <= time)
+        else if (actor.(weaponentity).jump_interval <= time)
         {
             // handle refire manually, so that primary and secondary can be fired without conflictions (important for instagib)
-            actor.jump_interval = time + WEP_CVAR_SEC(vaporizer, refire) * W_WeaponRateFactor(actor);
+            actor.(weaponentity).jump_interval = time + WEP_CVAR_SEC(vaporizer, refire) * W_WeaponRateFactor(actor);
 
             // decrease ammo for the laser?
             if(WEP_CVAR_SEC(vaporizer, ammo))
@@ -431,7 +431,7 @@ METHOD(Vaporizer, wr_think, void(entity thiswep, entity actor, .entity weaponent
         }
     }
     else
-        actor.held_down = false;
+        actor.(weaponentity).held_down = false;
 }
 METHOD(Vaporizer, wr_setup, void(entity thiswep, entity actor))
 {
-- 
2.39.5