X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fhook.qc;h=8436ff6225a0ccc0e546bf5007fccec05720c394;hb=138cbbad0d235f41c6473bb5aa92169808485417;hp=889e75d2679dc65cb7bfd18726479fd38fd8f97f;hpb=3c8d113d1e9e95f7fecc1199d609697e333965ae;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/hook.qc b/qcsrc/client/hook.qc index 889e75d26..8436ff622 100644 --- a/qcsrc/client/hook.qc +++ b/qcsrc/client/hook.qc @@ -1,3 +1,7 @@ +#include "hud.qh" +#include "noise.qh" +#include "../warpzonelib/common.qh" + .float HookType; // ENT_CLIENT_* .vector origin; .vector velocity; @@ -52,7 +56,7 @@ void Draw_GrapplingHook() string tex; vector rgb; float t; - float s; + int s; vector vs; float intensity, offset; @@ -75,11 +79,8 @@ void Draw_GrapplingHook() case ENT_CLIENT_HOOK: vs = hook_shotorigin[s]; break; - case ENT_CLIENT_LGBEAM: - vs = electro_shotorigin[s]; - break; - case ENT_CLIENT_GAUNTLET: - vs = gauntlet_shotorigin[s]; + case ENT_CLIENT_ARC_BEAM: + vs = lightning_shotorigin[s]; break; } @@ -89,18 +90,17 @@ void Draw_GrapplingHook() { default: case ENT_CLIENT_HOOK: - 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; b = self.origin; break; - case ENT_CLIENT_LGBEAM: - case ENT_CLIENT_GAUNTLET: + case ENT_CLIENT_ARC_BEAM: if(self.HookRange) b = view_origin + view_forward * self.HookRange; else b = view_origin + view_forward * vlen(self.velocity - self.origin); // honor original length of beam! WarpZone_TraceLine(view_origin, b, MOVE_NORMAL, world); b = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos); - 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; break; } } @@ -113,8 +113,7 @@ void Draw_GrapplingHook() a = self.velocity; b = self.origin; break; - case ENT_CLIENT_LGBEAM: - case ENT_CLIENT_GAUNTLET: + case ENT_CLIENT_ARC_BEAM: a = self.origin; b = self.velocity; break; @@ -138,18 +137,12 @@ void Draw_GrapplingHook() default: tex = "particles/hook_white"; rgb = getcsqcplayercolor(self.sv_entnum); break; } break; - case ENT_CLIENT_LGBEAM: + case ENT_CLIENT_ARC_BEAM: // todo intensity = bound(0.2, 1 + Noise_Pink(self, frametime) * 1 + Noise_Burst(self, frametime, 0.03) * 0.3, 2); offset = Noise_Brown(self, frametime) * 10; tex = "particles/lgbeam"; rgb = '1 1 1'; break; - case ENT_CLIENT_GAUNTLET: - intensity = 1; - offset = Noise_White(self, frametime); - tex = "particles/gauntletbeam"; - rgb = '1 1 1'; - break; } Draw_GrapplingHook_trace_callback_tex = tex; @@ -176,8 +169,7 @@ void Draw_GrapplingHook() self.drawmask = 0; } break; - case ENT_CLIENT_LGBEAM: - case ENT_CLIENT_GAUNTLET: + case ENT_CLIENT_ARC_BEAM: setorigin(self, a); // beam origin! break; } @@ -187,11 +179,8 @@ void Draw_GrapplingHook() default: case ENT_CLIENT_HOOK: break; - case ENT_CLIENT_LGBEAM: - pointparticles(particleeffectnum("electro_lightning"), trace_endpos, normalize(atrans - trace_endpos), frametime * intensity); - break; - case ENT_CLIENT_GAUNTLET: - pointparticles(particleeffectnum("gauntlet_lightning"), b, normalize(a - b), frametime * intensity); + case ENT_CLIENT_ARC_BEAM: + pointparticles(particleeffectnum("electro_lightning"), trace_endpos, normalize(atrans - trace_endpos), frametime * intensity); // todo: new effect break; } } @@ -205,8 +194,7 @@ void Ent_ReadHook(float bIsNew, float type) { self.HookType = type; - float sf; - sf = ReadByte(); + int sf = ReadByte(); self.HookSilent = (sf & 0x80); self.iflags = IFLAG_VELOCITY | IFLAG_ORIGIN; @@ -215,17 +203,16 @@ void Ent_ReadHook(float bIsNew, float type) if(sf & 1) { - float myowner = ReadByte(); + int myowner = ReadByte(); self.owner = playerslots[myowner - 1]; self.sv_entnum = myowner; switch(self.HookType) { default: case ENT_CLIENT_HOOK: - case ENT_CLIENT_GAUNTLET: self.HookRange = 0; break; - case ENT_CLIENT_LGBEAM: + case ENT_CLIENT_ARC_BEAM: self.HookRange = ReadCoord(); break; } @@ -259,12 +246,9 @@ void Ent_ReadHook(float bIsNew, float type) setmodel(self, "models/hook.md3"); self.drawmask = MASK_NORMAL; break; - case ENT_CLIENT_LGBEAM: + case ENT_CLIENT_ARC_BEAM: sound (self, CH_SHOTS_SINGLE, "weapons/lgbeam_fly.wav", VOL_BASE, ATTEN_NORM); break; - case ENT_CLIENT_GAUNTLET: - sound (self, CH_SHOTS_SINGLE, "weapons/gauntletbeam_fly.wav", VOL_BASE, ATTEN_NORM); - break; } } @@ -274,7 +258,6 @@ void Ent_ReadHook(float bIsNew, float type) void Hook_Precache() { precache_sound("weapons/lgbeam_fly.wav"); - precache_sound("weapons/gauntletbeam_fly.wav"); precache_model("models/hook.md3"); }