]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/weapons/weaponsystem.qc
Weapons: Introduce concept of offhand weapons
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / weapons / weaponsystem.qc
index d26a6102f6c3de89c7a4b76ee7c9cda60fa3f105..20f49705435702ebb9cb6bf9d3a5adb343781d5f 100644 (file)
@@ -767,10 +767,23 @@ void W_WeaponFrame()
                v_right = ri;
                v_up = up;
 
-               if(w)
-                       _WEP_ACTION(self.weapon, WR_THINK);
-               else
+               {
+                       bool key_pressed;
+               if (g_grappling_hook || client_hasweapon(self, WEP_HOOK.m_id, false, false) || (weaponsInMap & WEPSET_HOOK))
+                       key_pressed = self.button16; // if hook is enabled, use an alternate key
+               else
+                       key_pressed = self.BUTTON_HOOK;
+
+               entity e = self.offhand;
+               if (e.offhand_think) e.offhand_think(e, self, key_pressed);
+        }
+
+               if (w) {
+                       entity e = get_weaponinfo(self.weapon);
+                       if (e.wr_think) e.wr_think(e, self.BUTTON_ATCK, self.BUTTON_ATCK2);
+               } else {
                        _WEP_ACTION(self.weapon, WR_GONETHINK);
+               }
 
                if (time + self.weapon_frametime * 0.5 >= self.weapon_nextthink)
                {