]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/g_hook.qc
Merge branch 'master' of git://git.xonotic.org/xonotic/xonotic-data.pk3dir
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / g_hook.qc
index 0437f804328410e2ebb609443c80d451c552241b..4f655ca5738220c1dc75da1c95849f347b2cef68 100644 (file)
@@ -62,11 +62,19 @@ void RemoveGrapplingHook(entity pl)
        //pl.disableclientprediction = FALSE;
 }
 
+void GrapplingHookReset(void)
+{
+       if(self.realowner.hook == self)
+               RemoveGrapplingHook(self.owner);
+       else // in any case:
+               remove(self);
+}
+
 void GrapplingHookThink();
 void GrapplingHook_Stop()
 {
        pointparticles(particleeffectnum("grapple_impact"), self.origin, '0 0 0', 1);
-       sound (self, CH_SHOTS_SINGLE, "weapons/hook_impact.wav", VOL_BASE, ATTN_NORM);
+       sound (self, CH_SHOTS, "weapons/hook_impact.wav", VOL_BASE, ATTN_NORM);
 
        self.state = 1;
        self.think = GrapplingHookThink;
@@ -288,8 +296,11 @@ void FireGrapplingHook (void)
        if((arena_roundbased && time < warmup) || (time < game_starttime))
                return;
 
-    if(self.freezetag_frozen)
-        return;
+  if(self.freezetag_frozen)
+               return;
+       
+       if(self.vehicle)
+               return;
 
        makevectors(self.v_angle);
 
@@ -311,6 +322,7 @@ void FireGrapplingHook (void)
        missile = WarpZone_RefSys_SpawnSameRefSys(self);
        missile.owner = missile.realowner = self;
        self.hook = missile;
+       missile.reset = GrapplingHookReset;
        missile.classname = "grapplinghook";
 
        missile.movetype = MOVETYPE_FLY;