#include <server/weapons/accuracy.qh>
#include <server/weapons/csqcprojectile.qh>
#include <server/weapons/selection.qh>
+#include <server/weapons/weaponsystem.qh>
#include <server/world.qh>
void UpdateFrags(entity player, int f)
Obituary_SpecialDeath(targ, false, deathtype, targ.netname, deathlocation, "", CS(targ).killcount, 0, 0);
break;
}
-
+ case DEATH_HURTTRIGGER:
+ Obituary_SpecialDeath(targ, false, deathtype, targ.netname, inflictor.message, deathlocation, CS(targ).killcount, 0, 0);
+ break;
default:
{
Obituary_SpecialDeath(targ, false, deathtype, targ.netname, deathlocation, "", CS(targ).killcount, 0, 0);
damage = 0;
force = '0 0 0';
}
- else if(SAME_TEAM(attacker, targ))
+ else if(!STAT(FROZEN, targ) && SAME_TEAM(attacker, targ))
{
if(autocvar_teamplay_mode == 1)
damage = 0;
if(IS_PLAYER(victim) || (IS_TURRET(victim) && victim.active == ACTIVE_ACTIVE) || IS_MONSTER(victim) || MUTATOR_CALLHOOK(PlayHitsound, victim, attacker))
{
- if(DIFF_TEAM(victim, attacker) && !STAT(FROZEN, victim))
+ if (DIFF_TEAM(victim, attacker))
{
if(damage > 0)
{
attacker.damage_dealt += damage;
}
- damage_goodhits += 1;
- damage_gooddamage += damage;
+ impressive_hits += 1;
if (!DEATH_ISSPECIAL(deathtype))
{
}
}
}
- else if(IS_PLAYER(attacker))
+ else if (IS_PLAYER(attacker) && !STAT(FROZEN, victim)) // same team
{
- // if enemy gets frozen in this frame and receives other damage don't
- // play the typehitsound e.g. when hit by multiple bullets of the shotgun
- if (deathtype != DEATH_FIRE.m_id && (!STAT(FROZEN, victim) || time > victim.freeze_time))
+ if (deathtype != DEATH_FIRE.m_id)
{
attacker.typehitsound += 1;
}
}
}
+// Returns total damage applies to creatures
float RadiusDamageForSource (entity inflictor, vector inflictororigin, vector inflictorvelocity, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe,
float inflictorselfdamage, float forceintensity, float forcezscale, int deathtype, .entity weaponentity, entity directhitentity)
- // Returns total damage applies to creatures
{
entity targ;
vector force;
float t, d, hi, ty;
entity o;
+ // water, slime and ice stop fire
+ if (STAT(FROZEN, e) || (e.waterlevel && (e.watertype != CONTENT_LAVA)))
+ e.fire_endtime = 0;
+
if (!Fire_IsBurning(e))
return;
if(IS_NOT_A_CLIENT(o))
o = e.fire_owner;
- // water and slime stop fire
- if(e.waterlevel)
- if(e.watertype != CONTENT_LAVA)
- e.fire_endtime = 0;
-
- // ice stops fire
- if(STAT(FROZEN, e))
- e.fire_endtime = 0;
-
t = min(frametime, e.fire_endtime - time);
d = e.fire_damagepersec * t;