From 9ca2e90b45fda21db625aabb195459ced2abd3b9 Mon Sep 17 00:00:00 2001 From: Mircea Kitsune Date: Sun, 3 Apr 2011 15:12:12 +0300 Subject: [PATCH] Network over one more byte, specifying if the damaged player is our own self. We need to know this in the client so we can disable self damage effects only if we aren't in chase_active mode, or other circumstances. I couldn't find any way to determine this in the client, so I have to network one more byte for this. --- qcsrc/client/gibs.qc | 3 ++- qcsrc/server/g_damage.qc | 2 +- qcsrc/server/g_violence.qc | 4 +++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/qcsrc/client/gibs.qc b/qcsrc/client/gibs.qc index ee70fde77..a37b5a2e0 100644 --- a/qcsrc/client/gibs.qc +++ b/qcsrc/client/gibs.qc @@ -277,13 +277,14 @@ void GibSplash_Precache() void Ent_DamageEffect() { - float type, specnum1, specnum2; + float type, specnum1, specnum2, isself; vector org; string specstr, effectnum; entity e; type = ReadByte(); // damage weapon specnum1 = ReadByte(); // player species + isself = ReadByte(); // is self org_x = ReadCoord(); org_y = ReadCoord(); org_z = ReadCoord(); diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index 55dc6f645..6b2298eb9 100644 --- a/qcsrc/server/g_damage.qc +++ b/qcsrc/server/g_damage.qc @@ -499,7 +499,7 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float { // if the target is a player or dead body, activate damage effects if(targ.classname == "player" || targ.classname == "body") - Violence_DamageEffect_SetRepeat(targ, damage, DEATH_WEAPONOF(deathtype)); + Violence_DamageEffect_SetRepeat(targ, damage, DEATH_WEAPONOF(deathtype), targ == self); float mirrordamage; float mirrorforce; diff --git a/qcsrc/server/g_violence.qc b/qcsrc/server/g_violence.qc index e78ae20d9..82dd404ee 100644 --- a/qcsrc/server/g_violence.qc +++ b/qcsrc/server/g_violence.qc @@ -43,6 +43,7 @@ float Violence_DamageEffect_SendEntity(entity to, float sf) WriteByte(MSG_ENTITY, ENT_CLIENT_DAMAGEEFFECT); WriteByte(MSG_ENTITY, self.cnt); // the damage weapon WriteByte(MSG_ENTITY, self.state); // species + WriteByte(MSG_ENTITY, self.team); // is self WriteCoord(MSG_ENTITY, floor(self.origin_x)); WriteCoord(MSG_ENTITY, floor(self.origin_y)); WriteCoord(MSG_ENTITY, floor(self.origin_z)); @@ -79,7 +80,7 @@ void Violence_DamageEffect_DoRepeat() self.nextthink = time + autocvar_sv_damageeffect_tick; } -void Violence_DamageEffect_SetRepeat(entity pl, float damage, float type) +void Violence_DamageEffect_SetRepeat(entity pl, float damage, float type, float isself) { if not(autocvar_sv_damageeffect_tick && autocvar_sv_damageeffect_lifetime) return; @@ -94,6 +95,7 @@ void Violence_DamageEffect_SetRepeat(entity pl, float damage, float type) pl.damageeffect_repeater.owner = pl; pl.damageeffect_repeater.think = Violence_DamageEffect_DoRepeat; + pl.damageeffect_repeater.team = isself; pl.damageeffect_repeater.lifetime = time + (autocvar_sv_damageeffect_lifetime * damage); } else -- 2.39.2