As a bit of a thought experiment, how different would things be if there were an "Attack" keyword on cards, rather than a type? The keyword would mark something that effects other players, and it's something you can react to regardless of whether it happens as part of playing the card or otherwise.
For example, Witch would become "+2 Cards. Attack: Each other player gains a Curse.," Minion would become "Choose one: +$2, or discard your hand, +4 Cards, and Attack: ...", but you could also have Ill-Gotten Gains: "+$1 ... When you gain this, Attack: Each other player gains a Curse."
Similarly, things like Moat become "+2 Cards. When another player uses an Attack, you may reveal this ..." and Squire becomes "... When you trash this, gain a card with an Attack".
Some of the immediate effects I can think of:
- Attacks now work a little closer to new players' intuition of them.
- Optional attacks (like Minion and Pirate Ship) favour the other players more, since the person playing the card has to choose whether to attack before it gets reacted to.
- Still not obvious what happens with Masquerade or Possession (or Embassy, I guess), and regardless of how you treat them someone would probably complain.
- Introduces a new keyword in card text, which is something mostly avoided in the game (at least up until Renaissance).
- Probably changes the design space in a way I haven't anticipated.
For the record, I think the current solution is a good one, I'm just looking at an alternative one and wondering how it would affect things.