Make the All Players linedef exectutor activator sector type more reliable for FOFs that span multiple sectors (resolves #301).

This commit is contained in:
toaster 2019-11-19 14:09:24 +00:00
parent fe1bb6f716
commit 86f343b84b

View file

@ -4443,27 +4443,18 @@ void P_ProcessSpecialSector(player_t *player, sector_t *sector, sector_t *rovers
{ {
if (roversector) if (roversector)
{ {
if (players[i].mo->subsector->sector == roversector) if (sector->flags & SF_TRIGGERSPECIAL_TOUCH)
;
else if (sector->flags & SF_TRIGGERSPECIAL_TOUCH)
{ {
boolean insector = false;
msecnode_t *node; msecnode_t *node;
for (node = players[i].mo->touching_sectorlist; node; node = node->m_sectorlist_next) for (node = players[i].mo->touching_sectorlist; node; node = node->m_sectorlist_next)
{ {
if (node->m_sector == roversector) if (P_ThingIsOnThe3DFloor(players[i].mo, sector, node->m_sector))
{
insector = true;
break; break;
}
} }
if (!insector) if (!node)
goto DoneSection2; goto DoneSection2;
} }
else 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;
if (!P_ThingIsOnThe3DFloor(players[i].mo, sector, roversector))
goto DoneSection2; goto DoneSection2;
} }
else else