mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-26 05:51:20 +00:00
Added source, inflictor and damage flags to AbsorbDamage.
This commit is contained in:
parent
d22a4c835c
commit
39a9a48ad6
6 changed files with 11 additions and 11 deletions
|
@ -675,7 +675,7 @@ public:
|
||||||
// Adjusts the angle for deflection/reflection of incoming missiles
|
// Adjusts the angle for deflection/reflection of incoming missiles
|
||||||
// Returns true if the missile should be allowed to explode anyway
|
// Returns true if the missile should be allowed to explode anyway
|
||||||
bool AdjustReflectionAngle (AActor *thing, DAngle &angle);
|
bool AdjustReflectionAngle (AActor *thing, DAngle &angle);
|
||||||
int AbsorbDamage(int damage, FName dmgtype);
|
int AbsorbDamage(int damage, FName dmgtype, AActor *inflictor, AActor *source, int flags);
|
||||||
void AlterWeaponSprite(visstyle_t *vis);
|
void AlterWeaponSprite(visstyle_t *vis);
|
||||||
|
|
||||||
// Returns true if this actor is within melee range of its target
|
// Returns true if this actor is within melee range of its target
|
||||||
|
|
|
@ -1301,7 +1301,7 @@ static int DamageMobj (AActor *target, AActor *inflictor, AActor *source, int da
|
||||||
int newdam = damage;
|
int newdam = damage;
|
||||||
if (damage > 0)
|
if (damage > 0)
|
||||||
{
|
{
|
||||||
newdam = player->mo->AbsorbDamage(damage, mod);
|
newdam = player->mo->AbsorbDamage(damage, mod, inflictor, source, flags);
|
||||||
}
|
}
|
||||||
if (!telefragDamage || (player->mo->flags7 & MF7_LAXTELEFRAGDMG)) //rawdamage is never modified.
|
if (!telefragDamage || (player->mo->flags7 & MF7_LAXTELEFRAGDMG)) //rawdamage is never modified.
|
||||||
{
|
{
|
||||||
|
@ -1371,7 +1371,7 @@ static int DamageMobj (AActor *target, AActor *inflictor, AActor *source, int da
|
||||||
if (!(flags & (DMG_NO_ARMOR|DMG_FORCED)) && target->Inventory != NULL && damage > 0)
|
if (!(flags & (DMG_NO_ARMOR|DMG_FORCED)) && target->Inventory != NULL && damage > 0)
|
||||||
{
|
{
|
||||||
int newdam = damage;
|
int newdam = damage;
|
||||||
newdam = target->AbsorbDamage(damage, mod);
|
newdam = target->AbsorbDamage(damage, mod, inflictor, source, flags);
|
||||||
damage = newdam;
|
damage = newdam;
|
||||||
if (damage <= 0)
|
if (damage <= 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3231,14 +3231,14 @@ bool AActor::AdjustReflectionAngle (AActor *thing, DAngle &angle)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AActor::AbsorbDamage(int damage, FName dmgtype)
|
int AActor::AbsorbDamage(int damage, FName dmgtype, AActor *inflictor, AActor *source, int flags)
|
||||||
{
|
{
|
||||||
for (AActor *item = Inventory; item != nullptr; item = item->Inventory)
|
for (AActor *item = Inventory; item != nullptr; item = item->Inventory)
|
||||||
{
|
{
|
||||||
IFVIRTUALPTRNAME(item, NAME_Inventory, AbsorbDamage)
|
IFVIRTUALPTRNAME(item, NAME_Inventory, AbsorbDamage)
|
||||||
{
|
{
|
||||||
VMValue params[4] = { item, damage, dmgtype.GetIndex(), &damage };
|
VMValue params[7] = { item, damage, dmgtype.GetIndex(), &damage, inflictor, source, flags };
|
||||||
VMCall(func, params, 4, nullptr, 0);
|
VMCall(func, params, 7, nullptr, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return damage;
|
return damage;
|
||||||
|
|
|
@ -141,7 +141,7 @@ class BasicArmor : Armor
|
||||||
//
|
//
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
||||||
override void AbsorbDamage (int damage, Name damageType, out int newdamage)
|
override void AbsorbDamage (int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags)
|
||||||
{
|
{
|
||||||
int saved;
|
int saved;
|
||||||
|
|
||||||
|
@ -552,7 +552,7 @@ class HexenArmor : Armor
|
||||||
//
|
//
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
||||||
override void AbsorbDamage (int damage, Name damageType, out int newdamage)
|
override void AbsorbDamage (int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags)
|
||||||
{
|
{
|
||||||
if (!DamageTypeDefinition.IgnoreArmor(damageType))
|
if (!DamageTypeDefinition.IgnoreArmor(damageType))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1099,7 +1099,7 @@ class Inventory : Actor
|
||||||
//
|
//
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
||||||
virtual void AbsorbDamage (int damage, Name damageType, out int newdamage) {}
|
virtual void AbsorbDamage (int damage, Name damageType, out int newdamage, Actor inflictor = null, Actor source = null, int flags = 0) {}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//
|
//
|
||||||
|
|
|
@ -761,7 +761,7 @@ class PowerIronFeet : Powerup
|
||||||
Powerup.Color "00 ff 00", 0.125;
|
Powerup.Color "00 ff 00", 0.125;
|
||||||
}
|
}
|
||||||
|
|
||||||
override void AbsorbDamage (int damage, Name damageType, out int newdamage)
|
override void AbsorbDamage (int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags)
|
||||||
{
|
{
|
||||||
if (damageType == 'Drowning')
|
if (damageType == 'Drowning')
|
||||||
{
|
{
|
||||||
|
@ -795,7 +795,7 @@ class PowerMask : PowerIronFeet
|
||||||
Inventory.Icon "I_MASK";
|
Inventory.Icon "I_MASK";
|
||||||
}
|
}
|
||||||
|
|
||||||
override void AbsorbDamage (int damage, Name damageType, out int newdamage)
|
override void AbsorbDamage (int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags)
|
||||||
{
|
{
|
||||||
if (damageType == 'Fire' || damageType == 'Drowning')
|
if (damageType == 'Fire' || damageType == 'Drowning')
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue