]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/g_hook.qc
Revert "Merge branch 'Mario/despawn_effects'"
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / g_hook.qc
index db8c30fe4c976911d09ed61af076d60310c2e3bf..4e1b634008fb6d063f760a4f2f747af352363bcd 100644 (file)
@@ -274,12 +274,12 @@ void GrapplingHook_Damage (entity inflictor, entity attacker, float damage, floa
 {
        if(self.health <= 0)
                return;
-               
+
        if (!W_CheckProjectileDamage(inflictor.realowner, self.realowner, deathtype, -1)) // no exceptions
                return; // g_balance_projectiledamage says to halt
-                       
+
        self.health = self.health - damage;
-               
+
        if (self.health <= 0)
        {
                if(attacker != self.realowner)
@@ -383,7 +383,7 @@ void GrapplingHookFrame()
                // offhand hook controls
                if(self.BUTTON_HOOK)
                {
-                       if not(self.hook || (self.hook_state & HOOK_WAITING_FOR_RELEASE))
+                       if (!(self.hook || (self.hook_state & HOOK_WAITING_FOR_RELEASE)) && (time > self.hook_refire))
                        {
                                self.hook_state |= HOOK_FIRING;
                                self.hook_state |= HOOK_WAITING_FOR_RELEASE;
@@ -426,6 +426,7 @@ void GrapplingHookFrame()
                        RemoveGrapplingHook(self);
                FireGrapplingHook();
                self.hook_state &= ~HOOK_FIRING;
+               self.hook_refire = max(self.hook_refire, time + autocvar_g_balance_grapplehook_refire * W_WeaponRateFactor());
        }
        else if(self.hook_state & HOOK_REMOVING)
        {
@@ -475,7 +476,7 @@ void GrappleHookInit()
        }
        else
        {
-               WEP_ACTION(WEP_HOOK, WR_INIT);
+               weapon_action(WEP_HOOK, WR_PRECACHE);
                hook_shotorigin[0] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_HOOK), FALSE, FALSE, 1);
                hook_shotorigin[1] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_HOOK), FALSE, FALSE, 2);
                hook_shotorigin[2] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_HOOK), FALSE, FALSE, 3);