mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-12-11 21:10:50 +00:00
Add alternate "Full" mode for PowerIronFeet that prevents leaky damage.
# Conflicts: # src/playsim/p_spec.cpp
This commit is contained in:
parent
753f101bd9
commit
a7fb96eec5
3 changed files with 17 additions and 6 deletions
|
@ -27,6 +27,10 @@ xx(Spray)
|
|||
xx(Ghost)
|
||||
xx(Reflective)
|
||||
|
||||
// Iron Feet types
|
||||
//xx(Normal) // defined below
|
||||
xx(Full)
|
||||
|
||||
// Invisibility types
|
||||
xx(Additive)
|
||||
xx(Cumulative)
|
||||
|
|
|
@ -455,8 +455,6 @@ void P_PlayerInSpecialSector (player_t *player, sector_t * sector)
|
|||
}
|
||||
|
||||
// Has hit ground.
|
||||
AActor *ironfeet;
|
||||
|
||||
if (sector->damageinterval <= 0)
|
||||
sector->damageinterval = 32; // repair invalid damageinterval values
|
||||
|
||||
|
@ -466,14 +464,22 @@ void P_PlayerInSpecialSector (player_t *player, sector_t * sector)
|
|||
// Allow subclasses. Better would be to implement it as armor and let that reduce
|
||||
// the damage as part of the normal damage procedure. Unfortunately, I don't have
|
||||
// different damage types yet, so that's not happening for now.
|
||||
for (ironfeet = player->mo->Inventory; ironfeet != NULL; ironfeet = ironfeet->Inventory)
|
||||
// [MK] account for subclasses that may have "Full" protection (i.e.: prevent leaky damage)
|
||||
int ironfeet = 0;
|
||||
for (auto i = player->mo->Inventory; i != NULL; i = i->Inventory)
|
||||
{
|
||||
if (ironfeet->IsKindOf(NAME_PowerIronFeet))
|
||||
break;
|
||||
if (i->IsKindOf(NAME_PowerIronFeet))
|
||||
{
|
||||
FName mode = i->NameVar(NAME_Mode);
|
||||
if ( ironfeet < 2 && mode == NAME_Full )
|
||||
ironfeet = 2;
|
||||
else if ( ironfeet < 1 && mode == NAME_Normal )
|
||||
ironfeet = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (sector->Flags & SECF_ENDGODMODE) player->cheats &= ~CF_GODMODE;
|
||||
if ((ironfeet == NULL || pr_playerinspecialsector() < sector->leakydamage))
|
||||
if (ironfeet == 0 || (ironfeet < 2 && pr_playerinspecialsector() < sector->leakydamage))
|
||||
{
|
||||
if (sector->Flags & SECF_HAZARD)
|
||||
{
|
||||
|
|
|
@ -763,6 +763,7 @@ class PowerIronFeet : Powerup
|
|||
{
|
||||
Powerup.Duration -60;
|
||||
Powerup.Color "00 ff 00", 0.125;
|
||||
Powerup.Mode "Normal";
|
||||
}
|
||||
|
||||
override void AbsorbDamage (int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags)
|
||||
|
|
Loading…
Reference in a new issue