]> git.xonotic.org Git - voretournament/voretournament.git/blobdiff - data/qcsrc/server/w_grabber.qc
Lastly, show portraits when they need to be shown, and sent the right player. Current...
[voretournament/voretournament.git] / data / qcsrc / server / w_grabber.qc
index ad5fc9844e2dc003e2fc52e803e2ab11b022b776..6f50fb38fc7fcb88d93627e691a305354204d6ea 100644 (file)
@@ -36,7 +36,7 @@ void W_Grabber_Attack2()
        if(time < self.weapon_delay)\r
                return;\r
 \r
-       W_SetupShot (self, TRUE, 0, "weapons/grabber_altfire.wav", cvar("g_balance_grabber_secondary_damage"));\r
+       W_SetupShot (self, TRUE, cvar("g_balance_grabber_secondary_recoil"), "weapons/grabber_altfire.wav", cvar("g_balance_grabber_secondary_damage"));\r
        pointparticles(particleeffectnum("grabber_muzzleflash"), w_shotorg, '0 0 0', 1);\r
        W_Grabber_UpdateStats(self, TRUE, FALSE); // the hit is recorded below\r
 \r
@@ -46,8 +46,13 @@ void W_Grabber_Attack2()
        {\r
                Damage(trace_ent, self, self, cvar("g_balance_grabber_secondary_damage"), WEP_GRABBER | HITTYPE_SECONDARY, trace_endpos, cvar("g_balance_grabber_secondary_force") * w_shotdir);\r
                pointparticles(particleeffectnum("grabber_impact2"), trace_endpos, '0 0 0', 1);\r
+\r
                if(trace_ent.classname == "player")\r
+               {\r
+                       trace_ent.armorvalue = bound(0, trace_ent.armorvalue - cvar("g_balance_grabber_secondary_armordamage"), cvar("g_balance_armor_limit"));\r
+                       trace_ent.grabber_stunned = time + cvar("g_balance_grabber_secondary_stun_maxtime") * random();\r
                        sound (self, CHAN_PROJECTILE, "weapons/grabber_impact2_player.wav", VOL_BASE, ATTN_NORM);\r
+               }\r
                else\r
                {\r
                        sound (self, CHAN_PROJECTILE, "weapons/grabber_impact2_world.wav", VOL_BASE, ATTN_NORM);\r
@@ -60,9 +65,6 @@ void W_Grabber_Attack2()
                W_Grabber_UpdateStats(self, FALSE, TRUE); // the shot is recorded above\r
        }\r
 \r
-       if (!g_norecoil)\r
-               self.punchangle_x -= cvar("g_balance_grabber_secondary_recoil");\r
-\r
        W_DecreaseAmmo(ammo_fuel, cvar("g_balance_grabber_secondary_ammo"), cvar("g_balance_grabber_reload_ammo"));\r
 }\r
 \r
@@ -114,8 +116,7 @@ float w_grabber(float req)
                                if (time > self.grabber_refire)\r
                                if (weapon_prepareattack(0, -1))\r
                                {\r
-                                       if (!g_norecoil)\r
-                                               self.punchangle_x -= cvar("g_balance_grabber_primary_recoil");\r
+                                       W_SetupShot (self, TRUE, cvar("g_balance_grabber_primary_recoil"), "", 0); // do this for recoil\r
                                        W_DecreaseAmmo(ammo_fuel, cvar("g_balance_grabber_primary_ammo"), cvar("g_balance_grabber_reload_ammo"));\r
                                        self.grabber_state |= GRABBER_FIRING;\r
                                        weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_grabber_primary_animtime"), w_ready);                               \r
@@ -218,7 +219,7 @@ float w_grabber(float req)
                weapon_setup(WEP_GRABBER);\r
                self.grabber_state &~= GRABBER_WAITING_FOR_RELEASE;\r
                self.current_ammo = ammo_fuel;\r
-               W_DisplaySetup(self, 2, 1, 3, 0.75);\r
+               W_Display(self, 2, 3);\r
        }\r
        else if (req == WR_CHECKAMMO1)\r
        {\r