Skip to content

P_LinedefExecute can only call multiple trigger linedefs if they succeed

While P_LinedefExecute iterates through all lines with a matching tag, this is done at the end:

if (!P_RunTriggerLinedef(&lines[masterline], actor, caller))
	return; // cancel P_LinedefExecute if function returns false

Judging by the comment, this seems to have been done intentionally at some point, but this sometimes causes issues: if multiple trigger linedefs with a matching tag exist, and any line that's not the last one fails, every subsequent line will not be called. This can cause undesirable situations, where a collection of linedef executors becomes dependent on linedef order/indices.