From a61343bc8b9a39c45a7f3313e1115c1ffbe8e9ab Mon Sep 17 00:00:00 2001
From: MascaraSnake <jonassauer27@gmail.com>
Date: Wed, 22 Sep 2021 10:38:08 +0200
Subject: [PATCH] P_LinedefExecute: Use global taglists to find trigger
 linedefs

---
 src/p_spec.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/src/p_spec.c b/src/p_spec.c
index ef0703c50f..35e6f4b4c9 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -1873,15 +1873,16 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller
   */
 void P_LinedefExecute(INT16 tag, mobj_t *actor, sector_t *caller)
 {
-	size_t masterline;
+	INT32 masterline;
 
 	CONS_Debug(DBG_GAMELOGIC, "P_LinedefExecute: Executing trigger linedefs of tag %d\n", tag);
 
 	I_Assert(!actor || !P_MobjWasRemoved(actor)); // If actor is there, it must be valid.
 
-	for (masterline = 0; masterline < numlines; masterline++)
+	TAG_ITER_LINES(tag, masterline)
 	{
-		if (Tag_FGet(&lines[masterline].tags) != tag)
+		if (lines[masterline].special < 300
+			|| lines[masterline].special > 399)
 			continue;
 
 		// "No More Enemies" and "Level Load" take care of themselves.
@@ -1897,10 +1898,6 @@ void P_LinedefExecute(INT16 tag, mobj_t *actor, sector_t *caller)
 		 || lines[masterline].special == 335)// Dye - Each time
 			continue;
 
-		if (lines[masterline].special < 300
-			|| lines[masterline].special > 399)
-			continue;
-
 		if (!P_RunTriggerLinedef(&lines[masterline], actor, caller))
 			return; // cancel P_LinedefExecute if function returns false
 	}
-- 
GitLab