From ca2c886d8ef9b8194b50db645a1df2db228d989c Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Thu, 16 Sep 2021 17:50:47 +0200 Subject: [PATCH] WEAPON_GAUSS: Fix missing ammo deduction for primary fire, add a decal for first-impact under high-energy mode. --- src/shared/fx_gaussbeam.qc | 11 +++++++++++ src/shared/w_gauss.qc | 2 ++ 2 files changed, 13 insertions(+) mode change 100755 => 100644 src/shared/fx_gaussbeam.qc diff --git a/src/shared/fx_gaussbeam.qc b/src/shared/fx_gaussbeam.qc old mode 100755 new mode 100644 index 802b2da..c245916 --- a/src/shared/fx_gaussbeam.qc +++ b/src/shared/fx_gaussbeam.qc @@ -135,6 +135,9 @@ FX_GaussBeam(vector vecPos, vector vecAngle, int numBeams, entity eOwner) vector vecSrc; vector vecEndPos; vector vecDir; + vector vecFirstImpact; + int totalBeams = numBeams; + makevectors(vecAngle); vecDir = v_forward; vecSrc = vecPos; @@ -143,6 +146,10 @@ FX_GaussBeam(vector vecPos, vector vecAngle, int numBeams, entity eOwner) trailparticles(TRAIL_GAUSSBEAM, eOwner, vecSrc + (v_right * 8) + (v_up * -12), trace_endpos); FX_GaussBeam_Piece(trace_endpos, vecDir * -1); + /* Decals_Place modifies trace_* globals, so cache */ + if (totalBeams > 1) + vecFirstImpact = trace_endpos; + vecDir = v_forward; while (numBeams > 0) { float n; @@ -164,6 +171,10 @@ FX_GaussBeam(vector vecPos, vector vecAngle, int numBeams, entity eOwner) break; } } + + /* higher energy means the first impact will leave a hole as well */ + if (totalBeams > 1) + Decals_Place(vecFirstImpact, "{gaussshot1"); #endif } diff --git a/src/shared/w_gauss.qc b/src/shared/w_gauss.qc index e964d6f..e0617e6 100644 --- a/src/shared/w_gauss.qc +++ b/src/shared/w_gauss.qc @@ -172,6 +172,8 @@ void w_gauss_primary(void) FX_GaussBeam(Weapons_GetCameraPos(), input_angles, 0, pl); #endif + pl.ammo_uranium -= 2; + if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_CR_SHOOTGAUSS, 0.43f); else