I would use the techniques in this topic:
and this topic:
.. to report the status changes to a project library script for cross referencing.
In the timer processing script, cache the zones per status tag. Force update the cached zones on any initialChange
.
For each zone, maintain a set()
of true status tag paths. Each queued event would loop through the tag's zones adding or removing from the set.
Within the event, track which zones you've touched with a temporary set.
After processing all queued events for that tick of the timer, loop through the zones that were touched and build a list of zone tags to update. The values are the lengths of the zones' sets.