I think the current machinery for preventing "empty subs" from triggering is ineffective.
Dyl posted this set of substitutions in Discord:
This Step, if my opponent has protection, use Coaching.
This Step, if my opponent has a decoy, then use Rock Blast on the next step.
Against the orders
Substitute ~ Protect, let's try resolving this:
on s1 everything works great, we change our s2 order to Rock Blast.
on s2 we check first at start of step, and resolve "use Rock Blast on the next step"; then the Protect sub can't trigger.
The machinery to prevent this in the rules right now is, as far as I can tell:
10.7 said:
In all cases, a result clause that would give a Pokemon either current intent to use an action that they cannot attempt, or give them later orders to do so, is illegal.
10.7b said:
Substitutions, whose Result Clauses would all be ignored in the current timing, are ignored during that timing. (They aren't checked, and cannot trigger.)
But nothing tells you to ignore "use X next step" on step 2.
We could add something like "If a Substitution were to resolve, but none of its Result Clauses would have any effect
(ignoring a Substitution is an effect even if that Substitution would not trigger): instead, that Substitution is ignored and does not trigger." but that makes me concerned it will have a problem with subs containing "replace all X with Y" when you don't have any X (often because the sub already triggered); maybe that's fine though, usually those subs also have another clause that would trigger and ignoring a clause doesn't ignore the whole sub unlike making it illegal.
Also, is it correct that under Sealed (Knock Off), a substitution containing "begin using
Swords Dance ~ Knock Off" will trigger only on the last step of the round? That's my current reading of it but I'm not confident.