From 389909aadefdea4528f1f8a385c4b0c314a332db Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 3 Feb 2016 15:27:48 +1000 Subject: [PATCH] Add an option to colour Arc beams by team --- qcsrc/common/weapons/weapon/arc.qc | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/qcsrc/common/weapons/weapon/arc.qc b/qcsrc/common/weapons/weapon/arc.qc index 1d6a4a76ce..6f503d4243 100644 --- a/qcsrc/common/weapons/weapon/arc.qc +++ b/qcsrc/common/weapons/weapon/arc.qc @@ -168,6 +168,7 @@ bool W_Arc_Beam_Send(entity this, entity to, int sf) WriteByte(MSG_ENTITY, WEP_CVAR(arc, beam_tightness) * 10); WriteByte(MSG_ENTITY, drawlocal); + WriteByte(MSG_ENTITY, etof(this.owner)); } if(sf & ARC_SF_START) // starting location { @@ -862,6 +863,8 @@ void Arc_Smoke() } #endif #ifdef CSQC +bool autocvar_cl_arcbeam_teamcolor; + METHOD(Arc, wr_impacteffect, void(entity thiswep)) { if(w_deathtype & HITTYPE_SECONDARY) @@ -1316,6 +1319,8 @@ NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew) { self.beam_usevieworigin = 0; } + + self.sv_entnum = ReadByte(); } if(!self.beam_usevieworigin) @@ -1365,11 +1370,13 @@ NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew) if(sf & ARC_SF_BEAMTYPE) // beam type { self.beam_type = ReadByte(); + + vector beamcolor = ((autocvar_cl_arcbeam_teamcolor) ? colormapPaletteColor(stof(getplayerkeyvalue(self.sv_entnum - 1, "colors")) & 0x0F, true) : '1 1 1'); switch(self.beam_type) { case ARC_BT_MISS: { - self.beam_color = '1 1 1'; + self.beam_color = beamcolor; self.beam_alpha = 0.5; self.beam_thickness = 8; self.beam_traileffect = (EFFECT_ARC_BEAM); @@ -1394,7 +1401,7 @@ NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew) } case ARC_BT_WALL: // grenadelauncher_muzzleflash healray_muzzleflash { - self.beam_color = '1 1 1'; + self.beam_color = beamcolor; self.beam_alpha = 0.5; self.beam_thickness = 8; self.beam_traileffect = (EFFECT_ARC_BEAM); @@ -1420,7 +1427,7 @@ NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew) } case ARC_BT_HEAL: { - self.beam_color = '1 1 1'; + self.beam_color = beamcolor; self.beam_alpha = 0.5; self.beam_thickness = 8; self.beam_traileffect = (EFFECT_ARC_BEAM_HEAL); @@ -1446,7 +1453,7 @@ NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew) } case ARC_BT_HIT: { - self.beam_color = '1 1 1'; + self.beam_color = beamcolor; self.beam_alpha = 0.5; self.beam_thickness = 8; self.beam_traileffect = (EFFECT_ARC_BEAM); @@ -1472,7 +1479,7 @@ NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew) } case ARC_BT_BURST_MISS: { - self.beam_color = '1 1 1'; + self.beam_color = beamcolor; self.beam_alpha = 0.5; self.beam_thickness = 14; self.beam_traileffect = (EFFECT_ARC_BEAM); @@ -1498,7 +1505,7 @@ NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew) } case ARC_BT_BURST_WALL: { - self.beam_color = '1 1 1'; + self.beam_color = beamcolor; self.beam_alpha = 0.5; self.beam_thickness = 14; self.beam_traileffect = (EFFECT_ARC_BEAM); @@ -1524,7 +1531,7 @@ NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew) } case ARC_BT_BURST_HEAL: { - self.beam_color = '1 1 1'; + self.beam_color = beamcolor; self.beam_alpha = 0.5; self.beam_thickness = 14; self.beam_traileffect = (EFFECT_ARC_BEAM_HEAL); @@ -1550,7 +1557,7 @@ NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew) } case ARC_BT_BURST_HIT: { - self.beam_color = '1 1 1'; + self.beam_color = beamcolor; self.beam_alpha = 0.5; self.beam_thickness = 14; self.beam_traileffect = (EFFECT_ARC_BEAM); -- 2.39.2