Merge branch 'playersall' into 'master'

Players All reliability fix (resolves #301 and #315)

Closes #301 and #315

See merge request STJr/SRB2Internal!500
This commit is contained in:
MascaraSnake 2019-11-22 14:10:39 -05:00
commit e351d629bd

View file

@ -4439,31 +4439,31 @@ void P_ProcessSpecialSector(player_t *player, sector_t *sector, sector_t *rovers
case 3: // Linedef executor requires all players present
/// \todo check continues for proper splitscreen support?
for (i = 0; i < MAXPLAYERS; i++)
if (playeringame[i] && !players[i].bot && players[i].mo && (gametype != GT_COOP || players[i].lives > 0))
{
if (!playeringame[i])
continue;
if (!players[i].mo)
continue;
if (players[i].spectator)
continue;
if (players[i].bot)
continue;
if (gametype == GT_COOP && players[i].lives <= 0)
continue;
if (roversector)
{
if (players[i].mo->subsector->sector == roversector)
;
else if (sector->flags & SF_TRIGGERSPECIAL_TOUCH)
if (sector->flags & SF_TRIGGERSPECIAL_TOUCH)
{
boolean insector = false;
msecnode_t *node;
for (node = players[i].mo->touching_sectorlist; node; node = node->m_sectorlist_next)
{
if (node->m_sector == roversector)
{
insector = true;
if (P_ThingIsOnThe3DFloor(players[i].mo, sector, node->m_sector))
break;
}
}
if (!insector)
if (!node)
goto DoneSection2;
}
else
goto DoneSection2;
if (!P_ThingIsOnThe3DFloor(players[i].mo, sector, roversector))
else if (players[i].mo->subsector && !P_ThingIsOnThe3DFloor(players[i].mo, sector, players[i].mo->subsector->sector)) // this function handles basically everything for us lmao
goto DoneSection2;
}
else
@ -4472,17 +4472,13 @@ void P_ProcessSpecialSector(player_t *player, sector_t *sector, sector_t *rovers
;
else if (sector->flags & SF_TRIGGERSPECIAL_TOUCH)
{
boolean insector = false;
msecnode_t *node;
for (node = players[i].mo->touching_sectorlist; node; node = node->m_sectorlist_next)
{
if (node->m_sector == sector)
{
insector = true;
break;
}
}
if (!insector)
if (!node)
goto DoneSection2;
}
else