I can confirm greasels and grays do have this effect. It's more noticable in animals with higher healths. The only way to kill an animal on fire is to deplete all of it's health within a 1 second window.
Human pawns have an overall health and 6 different healths for each body part:
Health, HealthHead, HealthTorso, HealthArmRight, HealthArmLeft, HealthLegRight, HealthLegLeft
When a human pawn is damaged it lowers the health of the body part hit. It then uses a function called GenerateTotalHealth() to look at the health of the body parts and sets Health to the overall health of the body.
But animals don't use healths for each body part. They only use Health. When an animal takes damage it lowers Health directly, without lowering the healths of the body parts and using GenerateTotalHealth(). What the programmers forgot to do is change the burning function for animals.
In the UpdateFire() function it calls GenerateTotalHealth(). But because the health of an animal's individual body parts is never lowered, they will have full health for each body part and GenerateTotalHealth() will set Health to the full amount. (the "HealthTorso -= 5;" in UpdateFire() is the only thing will hurt an individual body part of an animal)
- Code: Select all
function UpdateFire()
{
// continually burn and do damage
HealthTorso -= 5;
GenerateTotalHealth();
if (Health <= 0)
{
TakeDamage(10, None, Location, vect(0,0,0), 'Burned');
ExtinguishFire();
}
}
To fix this you just have to put this in the Animal class:
- Code: Select all
function UpdateFire()
{
// continually burn and do damage
Health -= 5;
if (Health <= 0)
{
TakeDamage(10, None, Location, vect(0,0,0), 'Burned');
ExtinguishFire();
}
}