mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-10 23:01:59 +00:00
- Fixed: Armor absorption did not take ALLOW/CAUSEPAIN flags into account.
This commit is contained in:
parent
0726a88ab9
commit
9ab620814d
1 changed files with 13 additions and 7 deletions
|
@ -942,7 +942,7 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage,
|
||||||
bool forcedPain = false;
|
bool forcedPain = false;
|
||||||
int fakeDamage = 0;
|
int fakeDamage = 0;
|
||||||
int holdDamage = 0;
|
int holdDamage = 0;
|
||||||
int rawdamage = damage;
|
const int rawdamage = damage;
|
||||||
|
|
||||||
if (damage < 0) damage = 0;
|
if (damage < 0) damage = 0;
|
||||||
|
|
||||||
|
@ -1267,7 +1267,7 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage,
|
||||||
else
|
else
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
// Armor for players.
|
||||||
if (!(flags & DMG_NO_ARMOR) && player->mo->Inventory != NULL)
|
if (!(flags & DMG_NO_ARMOR) && player->mo->Inventory != NULL)
|
||||||
{
|
{
|
||||||
int newdam = damage;
|
int newdam = damage;
|
||||||
|
@ -1283,12 +1283,18 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage,
|
||||||
|
|
||||||
if (damage <= 0)
|
if (damage <= 0)
|
||||||
{
|
{
|
||||||
|
// [MC] Godmode doesn't need checking here, it's already being handled above.
|
||||||
|
if ((target->flags5 & MF5_NOPAIN) || (inflictor && (inflictor->flags5 & MF5_PAINLESS)))
|
||||||
|
return damage;
|
||||||
|
|
||||||
// If MF6_FORCEPAIN is set, make the player enter the pain state.
|
// If MF6_FORCEPAIN is set, make the player enter the pain state.
|
||||||
if (!(target->flags5 & MF5_NOPAIN) && inflictor != NULL &&
|
if ((inflictor && (inflictor->flags6 & MF6_FORCEPAIN)))
|
||||||
(inflictor->flags6 & MF6_FORCEPAIN) && !(inflictor->flags5 & MF5_PAINLESS)
|
|
||||||
&& (!(player->mo->flags2 & MF2_INVULNERABLE)) && (!(player->cheats & CF_GODMODE)) && (!(player->cheats & CF_GODMODE2)))
|
|
||||||
{
|
|
||||||
goto dopain;
|
goto dopain;
|
||||||
|
else if (((player->mo->flags7 & MF7_ALLOWPAIN) && (rawdamage > 0)) ||
|
||||||
|
(inflictor && (inflictor->flags7 & MF7_CAUSEPAIN)))
|
||||||
|
{
|
||||||
|
invulpain = true;
|
||||||
|
goto fakepain;
|
||||||
}
|
}
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue