From: Mircea Kitsune Date: Wed, 4 Jan 2012 15:57:24 +0000 (+0200) Subject: Remove the old way of showing damage effects on gibs. Currently, damage effects no... X-Git-Tag: xonotic-v0.6.0~110^2^2~69 X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=c68eca6795679646cfd4d15cc4e6038397119a55 Remove the old way of showing damage effects on gibs. Currently, damage effects no longer display on gibs. The old way was clearly not a good implementation, and it will need to be done differently if possible at all. --- diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 2d240fd751..130f1754f1 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -367,10 +367,8 @@ set g_telefrags_teamplay 1 "never telefrag team mates" set g_telefrags_avoid 1 "when teleporters have a random destination, avoid teleporting to locations where a telefrag would happen" set g_teleport_maxspeed 0 "maximum speed that a player can keep when going through a teleporter (if a misc_teleporter_dest also has a cap the smallest one of these will be used), 0 = don't limit, -1 = keep no speed" -set cl_damageeffect_player 0.05 "enable weapon damage effects on players, value specifies how often to show the effect" -set cl_damageeffect_player_limit 3 "how many damages to show on a player at once" -set cl_damageeffect_gibs 0.125 "enable weapon damage effects on gibs, value specifies how often to show the effect" -set cl_damageeffect_gibs_randomize 0.5 "probability for effects to show on gibs each tick, used so gibs don't generate particles at the same time and look ugly" +set cl_damageeffect 0.05 "enable weapon damage effects on players, value specifies how often to show the effect" +set cl_damageeffect_limit 3 "how many damages to show on a player at once" set cl_damageeffect_lifetime 0.04 "how much a damage effect lasts, multiplied by damage amount" set cl_damageeffect_lifetime_max 5 "maximum amount of lifetime a damage effect may have at a time" diff --git a/qcsrc/client/autocvars.qh b/qcsrc/client/autocvars.qh index 70e0cfd6fb..248166e684 100644 --- a/qcsrc/client/autocvars.qh +++ b/qcsrc/client/autocvars.qh @@ -373,10 +373,8 @@ var float autocvar_cl_eventchase_distance = 140; var float autocvar_cl_eventchase_speed = 1.3; float autocvar_cl_lerpexcess; string autocvar__togglezoom; -float autocvar_cl_damageeffect_player; -float autocvar_cl_damageeffect_player_limit; -float autocvar_cl_damageeffect_gibs; -float autocvar_cl_damageeffect_gibs_randomize; +float autocvar_cl_damageeffect; +float autocvar_cl_damageeffect_limit; float autocvar_cl_damageeffect_lifetime; float autocvar_cl_damageeffect_lifetime_max; float autocvar_cl_playerdetailreduction; diff --git a/qcsrc/client/damage.qc b/qcsrc/client/damage.qc index e60cc36364..ebe7b28011 100644 --- a/qcsrc/client/damage.qc +++ b/qcsrc/client/damage.qc @@ -246,8 +246,6 @@ void DamageInfo_Precache() void DamageEffect_Think() { self.nextthink = time; - - float foundgib; vector org; if(time >= self.lifetime) @@ -258,34 +256,15 @@ void DamageEffect_Think() } if(self.dmgtime > time) return; - - org = gettaginfo(self.owner, self.bone); - - // Scan the owner of all gibs in the world. If a gib owner is the same as the player we're applying - // the effect to, it means our player is gibbed. Therefore, apply particles to the gibs instead. - entity head; - for(head = world; (head = find(head, classname, "gib")); ) - { - if(head.team == self.team) - { - if(autocvar_cl_damageeffect_gibs) - { - if(autocvar_cl_damageeffect_gibs_randomize >= random()) - pointparticles(self.dmgpartnum, head.origin, '0 0 0', 1); - self.dmgtime = time + autocvar_cl_damageeffect_gibs; - } - foundgib = TRUE; - } - } - - if(foundgib || !autocvar_cl_damageeffect_player) + if(!autocvar_cl_damageeffect) return; // don't show effects on the invisible dead body if gibs exist if(self.team == player_localentnum - 1 && !autocvar_chase_active) return; // if we aren't in third person mode, hide own damage effect - // Now apply the effect to actual players + // Now apply the effect to the player + org = gettaginfo(self.owner, self.bone); pointparticles(self.dmgpartnum, org, '0 0 0', 1); - self.dmgtime = time + autocvar_cl_damageeffect_player; + self.dmgtime = time + autocvar_cl_damageeffect; } void DamageEffect(vector hitorg, float dmg, float type, float specnum, float entnumber) @@ -294,9 +273,7 @@ void DamageEffect(vector hitorg, float dmg, float type, float specnum, float ent string specstr, effectnum; entity e; - if(!autocvar_cl_damageeffect_player && !autocvar_cl_damageeffect_gibs) - return; - if(autocvar_cl_gentle || autocvar_cl_gentle_damage) + if(!autocvar_cl_damageeffect || autocvar_cl_gentle || autocvar_cl_gentle_damage) return; if(self.model == "" || !self.model) return; @@ -307,7 +284,7 @@ void DamageEffect(vector hitorg, float dmg, float type, float specnum, float ent if(e.team == entnumber) i += 1; } - if(i >= autocvar_cl_damageeffect_player_limit) + if(i >= autocvar_cl_damageeffect_limit) return; specstr = species_prefix(specnum); diff --git a/qcsrc/client/gibs.qc b/qcsrc/client/gibs.qc index a93f62d830..1bceca152a 100644 --- a/qcsrc/client/gibs.qc +++ b/qcsrc/client/gibs.qc @@ -109,7 +109,7 @@ void Gib_Draw() } } -void TossGib (string mdlname, vector safeorg, vector org, vector vconst, vector vrand, float specnum, float destroyontouch, float issilent, float gibownernum) +void TossGib (string mdlname, vector safeorg, vector org, vector vconst, vector vrand, float specnum, float destroyontouch, float issilent) { entity gib; @@ -121,7 +121,6 @@ void TossGib (string mdlname, vector safeorg, vector org, vector vconst, vector gib.solid = SOLID_CORPSE; gib.cnt = specnum; gib.silent = issilent; - gib.team = gibownernum - 1; Gib_setmodel(gib, mdlname, specnum); setsize (gib, '-8 -8 -8', '8 8 8'); @@ -211,37 +210,37 @@ void Ent_GibSplash(float isNew) sound (self, CH_PAIN, "misc/gib.wav", VOL_BASE, ATTN_NORM); if(prandom() < amount) - TossGib ("models/gibs/eye.md3", org, org, vel, prandomvec() * 150, specnum, 0, issilent, entnumber); + TossGib ("models/gibs/eye.md3", org, org, vel, prandomvec() * 150, specnum, 0, issilent); new_te_bloodshower(particleeffectnum(strcat(specstr, "bloodshower")), org, 1200, amount); if(prandom() < amount) - TossGib ("models/gibs/bloodyskull.md3", org, org + 16 * prandomvec(), vel, prandomvec() * 100, specnum, 0, issilent, entnumber); + TossGib ("models/gibs/bloodyskull.md3", org, org + 16 * prandomvec(), vel, prandomvec() * 100, specnum, 0, issilent); for(c = 0; c < amount; ++c) { randomvalue = amount - c; if(prandom() < randomvalue) - TossGib ("models/gibs/arm.md3", org, org + 16 * prandomvec() + '0 0 8', vel, prandomvec() * (prandom() * 120 + 90), specnum,0, issilent, entnumber); + TossGib ("models/gibs/arm.md3", org, org + 16 * prandomvec() + '0 0 8', vel, prandomvec() * (prandom() * 120 + 90), specnum,0, issilent); if(prandom() < randomvalue) - TossGib ("models/gibs/arm.md3", org, org + 16 * prandomvec() + '0 0 8', vel, prandomvec() * (prandom() * 120 + 90), specnum,0, issilent, entnumber); + TossGib ("models/gibs/arm.md3", org, org + 16 * prandomvec() + '0 0 8', vel, prandomvec() * (prandom() * 120 + 90), specnum,0, issilent); if(prandom() < randomvalue) - TossGib ("models/gibs/chest.md3", org, org + 16 * prandomvec(), vel, prandomvec() * (prandom() * 120 + 80), specnum,0, issilent, entnumber); + TossGib ("models/gibs/chest.md3", org, org + 16 * prandomvec(), vel, prandomvec() * (prandom() * 120 + 80), specnum,0, issilent); if(prandom() < randomvalue) - TossGib ("models/gibs/smallchest.md3", org, org + 16 * prandomvec(), vel, prandomvec() * (prandom() * 120 + 80), specnum,0, issilent, entnumber); + TossGib ("models/gibs/smallchest.md3", org, org + 16 * prandomvec(), vel, prandomvec() * (prandom() * 120 + 80), specnum,0, issilent); if(prandom() < randomvalue) - TossGib ("models/gibs/leg1.md3", org, org + 16 * prandomvec() + '0 0 -5', vel, prandomvec() * (prandom() * 120 + 85), specnum,0, issilent, entnumber); + TossGib ("models/gibs/leg1.md3", org, org + 16 * prandomvec() + '0 0 -5', vel, prandomvec() * (prandom() * 120 + 85), specnum,0, issilent); if(prandom() < randomvalue) - TossGib ("models/gibs/leg2.md3", org, org + 16 * prandomvec() + '0 0 -5', vel, prandomvec() * (prandom() * 120 + 85), specnum,0, issilent, entnumber); + TossGib ("models/gibs/leg2.md3", org, org + 16 * prandomvec() + '0 0 -5', vel, prandomvec() * (prandom() * 120 + 85), specnum,0, issilent); // these splat on impact if(prandom() < randomvalue) - TossGib ("models/gibs/chunk.mdl", org, org + 16 * prandomvec(), vel, prandomvec() * 450, specnum,1, issilent, entnumber); + TossGib ("models/gibs/chunk.mdl", org, org + 16 * prandomvec(), vel, prandomvec() * 450, specnum,1, issilent); if(prandom() < randomvalue) - TossGib ("models/gibs/chunk.mdl", org, org + 16 * prandomvec(), vel, prandomvec() * 450, specnum,1, issilent, entnumber); + TossGib ("models/gibs/chunk.mdl", org, org + 16 * prandomvec(), vel, prandomvec() * 450, specnum,1, issilent); if(prandom() < randomvalue) - TossGib ("models/gibs/chunk.mdl", org, org + 16 * prandomvec(), vel, prandomvec() * 450, specnum,1, issilent, entnumber); + TossGib ("models/gibs/chunk.mdl", org, org + 16 * prandomvec(), vel, prandomvec() * 450, specnum,1, issilent); if(prandom() < randomvalue) - TossGib ("models/gibs/chunk.mdl", org, org + 16 * prandomvec(), vel, prandomvec() * 450, specnum,1, issilent, entnumber); + TossGib ("models/gibs/chunk.mdl", org, org + 16 * prandomvec(), vel, prandomvec() * 450, specnum,1, issilent); } break; case 0x02: @@ -249,7 +248,7 @@ void Ent_GibSplash(float isNew) break; case 0x03: if(prandom() < amount) - TossGib ("models/gibs/chunk.mdl", org, org, vel, prandomvec() * (prandom() * 30 + 20), specnum, 1, issilent, entnumber); // TODO maybe adjust to more randomization? + TossGib ("models/gibs/chunk.mdl", org, org, vel, prandomvec() * (prandom() * 30 + 20), specnum, 1, issilent); // TODO maybe adjust to more randomization? break; case 0x81: pointparticles(particleeffectnum(strcat(gentle_prefix, "damage_dissolve")), org, vel, amount); diff --git a/qcsrc/server/g_violence.qc b/qcsrc/server/g_violence.qc index 40fb190186..ba2426718a 100644 --- a/qcsrc/server/g_violence.qc +++ b/qcsrc/server/g_violence.qc @@ -3,7 +3,6 @@ float Violence_GibSplash_SendEntity(entity to, float sf) WriteByte(MSG_ENTITY, ENT_CLIENT_GIBSPLASH); WriteByte(MSG_ENTITY, self.state); // actually type WriteByte(MSG_ENTITY, bound(1, self.cnt * 16, 255)); // gibbage amount multiplier - WriteByte(MSG_ENTITY, self.team); // player num WriteShort(MSG_ENTITY, floor(self.origin_x / 4)); // not using a coord here, as gibs don't need this accuracy WriteShort(MSG_ENTITY, floor(self.origin_y / 4)); // not using a coord here, as gibs don't need this accuracy WriteShort(MSG_ENTITY, floor(self.origin_z / 4)); // not using a coord here, as gibs don't need this accuracy