I have an idea for a new piece trait “Piece List” that might be fairly straightforward to implement & offer performance improvements for advanced module developers.
The configuration box for a Piece List trait would look “sort of” like one for a Set Global Property trait, in that you’d have a top part with the name/description of the trait, and then a bottom part where you could add an undetermined number of keystroke commands.
There would be two main “flavors” of keystroke commands:
(1) “Make List” commands - when this command is received, its Expression element is matched-for across all pieces (as if a Global Key Command), and the resulting list of matching pieces becomes “The List” for this Piece List trait. So module could make the list once and never touch it again (“make me a list of all the victory point markers”), or it could revise it from time to time (“make me a list of all the pieces in my same zone”).
(2) “Send Key” commands - when this command is received, its Expression element is matched across pieces in “The List”. Any pieces matching the expression are then sent a Keystroke (also provided as an element here).
The point here being to create a way for pieces to communicate with other pieces that is “in certain situations” much faster than Global Key Commands. Essentially I can obtain “a handle” for e.g. my Victory Point marker and then send it commands throughout the course of the game game, without having to go through the performance hit of a Global Key Command.
A potential related feature would be a “Global Piece List” that would share another element of Global Properties in that its list would be be maintained centrally so that multiple pieces could all access e.g. the pre-existing handle to the various Victory Point markers (or Resource Markers, or whatever else). There would then be a “Use Global Piece List” which would be analogous to a “Set Global Property” trait, allowing the list to be updated and allowing pieces to use the list to send commands.
It’s not my only idea for potentially making faster piece-to-piece communication than GKC’s offer, but it’s probably the one that requires the least structural change in really anything.
So just putting that out there for discussion and any potential “no that actually won’t work because XXX” sorts of thoughts. This isn’t something I’d be thinking of for 3.3.3, but could probably do it for “3.3.4” or something.