mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-10 14:51:51 +00:00
- Added DMSS_NOPROTECT.
Bypasses PowerProtection inventory items.
This commit is contained in:
parent
f802d7a44c
commit
c01d1a8003
4 changed files with 10 additions and 5 deletions
|
@ -1053,8 +1053,8 @@ int P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Handle passive damage modifiers (e.g. PowerProtection)
|
// Handle passive damage modifiers (e.g. PowerProtection), provided they are not afflicted with protection penetrating powers.
|
||||||
if (target->Inventory != NULL)
|
if ((target->Inventory != NULL) && !(flags & DMG_NO_PROTECT))
|
||||||
{
|
{
|
||||||
int olddam = damage;
|
int olddam = damage;
|
||||||
target->Inventory->ModifyDamage(olddam, mod, damage, true);
|
target->Inventory->ModifyDamage(olddam, mod, damage, true);
|
||||||
|
@ -1592,7 +1592,7 @@ bool AActor::OkayToSwitchTarget (AActor *other)
|
||||||
|
|
||||||
bool P_PoisonPlayer (player_t *player, AActor *poisoner, AActor *source, int poison)
|
bool P_PoisonPlayer (player_t *player, AActor *poisoner, AActor *source, int poison)
|
||||||
{
|
{
|
||||||
if((player->cheats&CF_GODMODE) || (player->mo->flags2 & MF2_INVULNERABLE))
|
if((player->cheats&CF_GODMODE) || (player->mo->flags2 & MF2_INVULNERABLE) || (player->cheats & CF_GODMODE2))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1643,8 +1643,8 @@ void P_PoisonDamage (player_t *player, AActor *source, int damage,
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (damage < TELEFRAG_DAMAGE && ((target->flags2 & MF2_INVULNERABLE) ||
|
if ((damage < TELEFRAG_DAMAGE && ((target->flags2 & MF2_INVULNERABLE) ||
|
||||||
(player->cheats & CF_GODMODE)))
|
(player->cheats & CF_GODMODE))) || (player->cheats & CF_GODMODE2))
|
||||||
{ // target is invulnerable
|
{ // target is invulnerable
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -560,6 +560,7 @@ enum EDmgFlags
|
||||||
DMG_PLAYERATTACK = 32,
|
DMG_PLAYERATTACK = 32,
|
||||||
DMG_FOILINVUL = 64,
|
DMG_FOILINVUL = 64,
|
||||||
DMG_FOILBUDDHA = 128,
|
DMG_FOILBUDDHA = 128,
|
||||||
|
DMG_NO_PROTECT = 256,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4832,6 +4832,7 @@ enum DMSS
|
||||||
DMSS_KILL = 4,
|
DMSS_KILL = 4,
|
||||||
DMSS_NOFACTOR = 8,
|
DMSS_NOFACTOR = 8,
|
||||||
DMSS_FOILBUDDHA = 16,
|
DMSS_FOILBUDDHA = 16,
|
||||||
|
DMSS_NOPROTECT = 32,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void DoDamage(AActor *dmgtarget, AActor *self, int amount, FName DamageType, int flags)
|
static void DoDamage(AActor *dmgtarget, AActor *self, int amount, FName DamageType, int flags)
|
||||||
|
@ -4847,6 +4848,8 @@ static void DoDamage(AActor *dmgtarget, AActor *self, int amount, FName DamageTy
|
||||||
dmgFlags += DMG_NO_ARMOR;
|
dmgFlags += DMG_NO_ARMOR;
|
||||||
if (flags & DMSS_KILL) //Kill adds the value of the damage done to it. Allows for more controlled extreme death types.
|
if (flags & DMSS_KILL) //Kill adds the value of the damage done to it. Allows for more controlled extreme death types.
|
||||||
amount += dmgtarget->health;
|
amount += dmgtarget->health;
|
||||||
|
if (flags & DMSS_NOPROTECT) //Ignore PowerProtection.
|
||||||
|
dmgFlags += DMG_NO_PROTECT;
|
||||||
|
|
||||||
if (amount > 0)
|
if (amount > 0)
|
||||||
P_DamageMobj(dmgtarget, self, self, amount, DamageType, dmgFlags); //Should wind up passing them through just fine.
|
P_DamageMobj(dmgtarget, self, self, amount, DamageType, dmgFlags); //Should wind up passing them through just fine.
|
||||||
|
|
|
@ -383,6 +383,7 @@ const int DMSS_AFFECTARMOR = 2;
|
||||||
const int DMSS_KILL = 4;
|
const int DMSS_KILL = 4;
|
||||||
const int DMSS_NOFACTOR = 8;
|
const int DMSS_NOFACTOR = 8;
|
||||||
const int DMSS_FOILBUDDHA = 16;
|
const int DMSS_FOILBUDDHA = 16;
|
||||||
|
const int DMSS_NOPROTECT = 32;
|
||||||
|
|
||||||
// Flags for A_AlertMonsters
|
// Flags for A_AlertMonsters
|
||||||
const int AMF_TARGETEMITTER = 1;
|
const int AMF_TARGETEMITTER = 1;
|
||||||
|
|
Loading…
Reference in a new issue