- Added a DMG_NO_FACTOR flag for P_DamageMobj(). A_KillChildren, A_KillMaster,

and A_KillSiblings now use it.


SVN r2024 (trunk)
This commit is contained in:
Randy Heit 2009-12-13 05:04:12 +00:00
commit 28c23edb2f
4 changed files with 20 additions and 14 deletions

View file

@ -1000,21 +1000,24 @@ void P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage
return;
}
DmgFactors * df = target->GetClass()->ActorInfo->DamageFactors;
if (df != NULL)
if (!(flags & DMG_NO_FACTOR))
{
fixed_t * pdf = df->CheckKey(mod);
if (pdf== NULL && mod != NAME_None) pdf = df->CheckKey(NAME_None);
if (pdf != NULL)
DmgFactors *df = target->GetClass()->ActorInfo->DamageFactors;
if (df != NULL)
{
damage = FixedMul(damage, *pdf);
if (damage <= 0)
return;
fixed_t *pdf = df->CheckKey(mod);
if (pdf== NULL && mod != NAME_None) pdf = df->CheckKey(NAME_None);
if (pdf != NULL)
{
damage = FixedMul(damage, *pdf);
if (damage <= 0)
return;
}
}
damage = FixedMul(damage, target->DamageFactor);
if (damage < 0)
return;
}
damage = FixedMul(damage, target->DamageFactor);
if (damage < 0)
return;
damage = target->TakeSpecialDamage (inflictor, source, damage, mod);
}