From 86f343b84bb2eb51b97963b655bdd8e9592ade23 Mon Sep 17 00:00:00 2001 From: toaster Date: Tue, 19 Nov 2019 14:09:24 +0000 Subject: [PATCH] Make the All Players linedef exectutor activator sector type more reliable for FOFs that span multiple sectors (resolves #301). --- src/p_spec.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/p_spec.c b/src/p_spec.c index f1a697399..bde941f29 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -4443,27 +4443,18 @@ void P_ProcessSpecialSector(player_t *player, sector_t *sector, sector_t *rovers { 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