X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fplayer.qc;h=8dffbc8ba61fb96bbbe7572a21be2e08b26b3e85;hp=b8d3c903c541cab860c1f596bf118037d534d017;hb=565754a35f9e84a3b8e6eac08635ec27145b369a;hpb=45d8904a100765555e622598a39967963733df1d diff --git a/qcsrc/server/player.qc b/qcsrc/server/player.qc index b8d3c903c5..8dffbc8ba6 100644 --- a/qcsrc/server/player.qc +++ b/qcsrc/server/player.qc @@ -329,9 +329,8 @@ void PlayerDamage(entity this, entity inflictor, entity attacker, float damage, if (time < this.spawnshieldtime && autocvar_g_spawnshield_blockdamage < 1) damage *= 1 - max(0, autocvar_g_spawnshield_blockdamage); - if(DEATH_ISWEAPON(deathtype, WEP_TUBA)) + if(deathtype & HITTYPE_SOUND) // sound based attacks cause bleeding from the ears { - // tuba causes blood to come out of the ears vector ear1, ear2; vector d; float f; @@ -399,7 +398,7 @@ void PlayerDamage(entity this, entity inflictor, entity attacker, float damage, if(sound_allowed(MSG_BROADCAST, attacker)) { - if (save > 10) + if (save > 10 && (dh - take) > 0) // don't play armor sound if the attack is fatal sound (this, CH_SHOTS, SND_ARMORIMPACT, VOL_BASE, ATTEN_NORM); else if (take > 30) sound (this, CH_SHOTS, SND_BODYIMPACT2, VOL_BASE, ATTEN_NORM); @@ -412,7 +411,8 @@ void PlayerDamage(entity this, entity inflictor, entity attacker, float damage, if (take > 100) Violence_GibSplash_At(hitloc, force * -0.2, 3, 1, this, attacker); - if (time >= this.spawnshieldtime || autocvar_g_spawnshield_blockdamage < 1) + if ((time >= this.spawnshieldtime || autocvar_g_spawnshield_blockdamage < 1) + && !STAT(FROZEN, this)) { if (!(this.flags & FL_GODMODE)) { @@ -494,7 +494,7 @@ void PlayerDamage(entity this, entity inflictor, entity attacker, float damage, if(vbot || IS_REAL_CLIENT(this)) if(abot || IS_REAL_CLIENT(attacker)) if(attacker && this != attacker) - if(DIFF_TEAM(this, attacker)) + if (DIFF_TEAM(this, attacker) && (!STAT(FROZEN, this) || this.freeze_time > time)) { if(DEATH_ISSPECIAL(deathtype)) awep = attacker.(weaponentity).m_weapon; @@ -503,8 +503,8 @@ void PlayerDamage(entity this, entity inflictor, entity attacker, float damage, valid_damage_for_weaponstats = true; } - dh = dh - max(GetResource(this, RES_HEALTH), 0); - da = da - max(GetResource(this, RES_ARMOR), 0); + dh -= max(GetResource(this, RES_HEALTH), 0); // health difference + da -= max(GetResource(this, RES_ARMOR), 0); // armor difference if(valid_damage_for_weaponstats) { WeaponStats_LogDamage(awep.m_id, abot, this.(weaponentity).m_weapon.m_id, vbot, dh + da);