]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/hook.qc
lgbeam prediction: use correct endpoint
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / hook.qc
index 7165e7b3661f3d926e8e97f6c2233e0edc662bd7..8644847b3f92efc78a38f75e5a7801359e153423 100644 (file)
@@ -67,7 +67,7 @@ void Draw_GrapplingHook()
                vs = hook_shotorigin[s];
 
                if(self.sv_entnum == player_localentnum - 1)
-                       a = view_origin + view_forward * vs_x + view_right * vs_y + view_up * vs_z;
+                       a = view_origin + view_forward * vs_x + view_right * -vs_y + view_up * vs_z;
                else
                        a = self.HookStart;
                b = self.HookEnd;
@@ -115,18 +115,27 @@ void Draw_GrapplingHook()
                vs = electro_shotorigin[s];
 
                if(self.sv_entnum == player_localentnum - 1)
-                       a = view_origin + view_forward * vs_x + view_right * vs_y + view_up * vs_z;
+               {
+                       b = view_origin + view_forward * MAX_SHOT_DISTANCE;
+                       WarpZone_TraceLine(view_origin, b, MOVE_NORMAL, world);
+                       a = view_origin + view_forward * vs_x + view_right * -vs_y + view_up * vs_z;
+               }
                else
+               {
                        a = self.LGBeamStart;
-               b = self.LGBeamEnd;
+                       b = self.LGBeamEnd;
+               }
 
                tex = "particles/lgbeam";
                rgb = '1 1 1';
 
                Draw_GrapplingHook_trace_callback_tex = tex;
                Draw_GrapplingHook_trace_callback_rnd = random();
-               WarpZone_TraceBox_ThroughZone(a, '0 0 0', '0 0 0', b, MOVE_NOMONSTERS, world, world, Draw_GrapplingHook_trace_callback);
+               WarpZone_TraceBox_ThroughZone(a, '0 0 0', '0 0 0', b, MOVE_NORMAL, world, world, Draw_GrapplingHook_trace_callback);
                Draw_GrapplingHook_trace_callback_tex = string_null;
+
+               // helps the sound
+               setorigin(self, a);
        }
 
        if(time < self.LGBeamKillTime && !self.LGBeamSilent)