// These are ALWAYS lethal
// No damage modification here
// Instead, prepare the victim for his death...
- SetResourceAmountExplicit(targ, RESOURCE_ARMOR, 0);
+ SetResourceAmount(targ, RESOURCE_ARMOR, 0);
targ.spawnshieldtime = 0;
- SetResourceAmountExplicit(targ, RESOURCE_HEALTH, 0.9); // this is < 1
+ SetResourceAmount(targ, RESOURCE_HEALTH, 0.9); // this is < 1
targ.flags -= targ.flags & FL_GODMODE;
damage = 100000;
}
}
}
- if(STAT(FROZEN, targ))
- if(deathtype != DEATH_HURTTRIGGER.m_id && deathtype != DEATH_TEAMCHANGE.m_id && deathtype != DEATH_AUTOTEAMCHANGE.m_id)
+ if(deathtype != DEATH_HURTTRIGGER.m_id && deathtype != DEATH_TEAMCHANGE.m_id && deathtype != DEATH_AUTOTEAMCHANGE.m_id && STAT(FROZEN, targ))
{
- if(autocvar_g_frozen_revive_falldamage > 0)
- if(deathtype == DEATH_FALL.m_id)
- if(damage >= autocvar_g_frozen_revive_falldamage)
+ if(autocvar_g_frozen_revive_falldamage > 0 && deathtype == DEATH_FALL.m_id && damage >= autocvar_g_frozen_revive_falldamage)
{
Unfreeze(targ, false);
SetResourceAmount(targ, RESOURCE_HEALTH, autocvar_g_frozen_revive_falldamage_health);
force *= autocvar_g_frozen_force;
}
- if(STAT(FROZEN, targ) && deathtype == DEATH_HURTTRIGGER.m_id && !autocvar_g_frozen_damage_trigger)
+ if(IS_PLAYER(targ) && STAT(FROZEN, targ) && deathtype == DEATH_HURTTRIGGER.m_id && !autocvar_g_frozen_damage_trigger)
{
Send_Effect(EFFECT_TELEPORT, targ.origin, '0 0 0', 1);
}
else if(IS_PLAYER(attacker))
{
- if(deathtype != DEATH_FIRE.m_id)
+ // 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))
{
attacker.typehitsound += 1;
}