mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-22 12:11:25 +00:00
- change recent /0 fix to conform to UDMF specs
This commit is contained in:
parent
4de8851e06
commit
383f3e5fd6
2 changed files with 9 additions and 10 deletions
|
@ -432,6 +432,10 @@ void P_PlayerInSpecialSector (player_t *player, sector_t * sector)
|
||||||
auto Level = sector->Level;
|
auto Level = sector->Level;
|
||||||
|
|
||||||
// [RH] Apply any customizable damage
|
// [RH] Apply any customizable damage
|
||||||
|
|
||||||
|
if (sector->damageinterval <= 0)
|
||||||
|
sector->damageinterval = 32; // repair invalid damageinterval values
|
||||||
|
|
||||||
if (sector->damageamount > 0)
|
if (sector->damageamount > 0)
|
||||||
{
|
{
|
||||||
// Allow subclasses. Better would be to implement it as armor and let that reduce
|
// Allow subclasses. Better would be to implement it as armor and let that reduce
|
||||||
|
@ -452,14 +456,11 @@ void P_PlayerInSpecialSector (player_t *player, sector_t * sector)
|
||||||
player->hazardtype = sector->damagetype;
|
player->hazardtype = sector->damagetype;
|
||||||
player->hazardinterval = sector->damageinterval;
|
player->hazardinterval = sector->damageinterval;
|
||||||
}
|
}
|
||||||
else if ((sector->damageinterval == 0) || (Level->time % sector->damageinterval == 0))
|
else if (Level->time % sector->damageinterval == 0)
|
||||||
{
|
{
|
||||||
if (!(player->cheats & (CF_GODMODE | CF_GODMODE2)))
|
if (!(player->cheats & (CF_GODMODE | CF_GODMODE2)))
|
||||||
{
|
{
|
||||||
if (sector->damageinterval == 0) // level designer seems to be a bit of a sadist, we're going to just instantly kill the player if damageamount is above 0.
|
P_DamageMobj(player->mo, NULL, NULL, sector->damageamount, sector->damagetype);
|
||||||
P_DamageMobj(player->mo, NULL, NULL, TELEFRAG_DAMAGE, sector->damagetype);
|
|
||||||
else
|
|
||||||
P_DamageMobj(player->mo, NULL, NULL, sector->damageamount, sector->damagetype);
|
|
||||||
}
|
}
|
||||||
if ((sector->Flags & SECF_ENDLEVEL) && player->health <= 10 && (!deathmatch || !(dmflags & DF_NO_EXIT)))
|
if ((sector->Flags & SECF_ENDLEVEL) && player->health <= 10 && (!deathmatch || !(dmflags & DF_NO_EXIT)))
|
||||||
{
|
{
|
||||||
|
@ -474,11 +475,7 @@ void P_PlayerInSpecialSector (player_t *player, sector_t * sector)
|
||||||
}
|
}
|
||||||
else if (sector->damageamount < 0)
|
else if (sector->damageamount < 0)
|
||||||
{
|
{
|
||||||
if (sector->damageinterval == 0)
|
if (Level->time % sector->damageinterval == 0)
|
||||||
{
|
|
||||||
P_GiveBody(player->mo, 100, 100); // just fully heal the player
|
|
||||||
}
|
|
||||||
else if (Level->time % sector->damageinterval == 0)
|
|
||||||
{
|
{
|
||||||
P_GiveBody(player->mo, -sector->damageamount, 100);
|
P_GiveBody(player->mo, -sector->damageamount, 100);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1634,6 +1634,8 @@ class PlayerPawn : Actor
|
||||||
if (player.hazardcount)
|
if (player.hazardcount)
|
||||||
{
|
{
|
||||||
player.hazardcount--;
|
player.hazardcount--;
|
||||||
|
if (player.hazardinterval <= 0)
|
||||||
|
player.hazardinterval = 32; // repair invalid hazardinterval
|
||||||
if (!(Level.maptime % player.hazardinterval) && player.hazardcount > 16*TICRATE)
|
if (!(Level.maptime % player.hazardinterval) && player.hazardcount > 16*TICRATE)
|
||||||
player.mo.DamageMobj (NULL, NULL, 5, player.hazardtype);
|
player.mo.DamageMobj (NULL, NULL, 5, player.hazardtype);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue