thefiremind wrote:If I'm not missing something, doing this would require to change all the cards that produce counters so that they associate the right counter indexes to the choices, and the query code should be modified whenever a new counter type is introduced. I don't think it's worth for just one card.
No, the cards that produce counters won't change at all. They already add/count/remove counters using the MTG() functions and/or getting their types from GetCountersType(). The idea is for any card that needs to choose a counter type that it defines it's own relationship table (in a data chest so it can be accessed across actions) by then using that table to figure out which counter types relate to which names. The order of which record refers to which name is only important to the card building the menu. Think of it like this:
- Code: Select all
--------------------
|+1/+1 | 0|-13754|
|-1/-1 | 1| 45657|
...
|Divinity|13|195672|
...
--------------------
The first element here is the friendly counter type, the second is the data chest index we assign to that type (only thing that matters here is that it is consistent for the entirety of the Choose Counter Type code, it could be completely different for a different card), and the third element is the value from GetCountersType() for the textual type (which should always be consistent across cards). As long as people don't start defining "Time" counters as "Timer", "My_Time_Counter", "Suspend_Counter", "
Vanishing_Counter", or the like then there should be no issues there. Those this method obviously won't work with custom counter types, but as long as gatherer is searched for all valid counter types you can cover all official types.
First action defines the table, second action checks the card for types and builds the menu referencing the table that was built (paging if necessary), third action gets the index from the multiple choice compares with the indexes used for the multiple choice in how they relate to the built table getting the counter type from the table. Now you can either use the type then or store it for use in later action(s).
This is quite possible just time consuming to get all the logic right.
thefiremind wrote:Now that you make me think about it, if we ignore the problem of targetting cards in exile,
Clockspinning could be coded so that it resembles proliferate, by giving options that only distinguish between any good counter or any bad counter. But even with this, I think there would be problems with time counters: a time counter is bad on your suspended cards (you want to get them unsuspended fast) and good on your vanishing permanents... so... let's give up, shall we?

Actually you could look at the zone it is in and adjust accordingly if you wanted to account for that. How many counter types are even possible in ZONE_EXILE? Not many.