Food for thought:
Counter >
Counter >
Counter
IF (Damaging Fighting Move) is not issued,
THEN use High Jump Kick that action.
Is basically the same as:
High Jump Kick >
High Jump Kick >
High Jump Kick
IF (Damaging Fighting Move) is issued,
THEN use Counter that action.
So allowing
IF NOT X is fine.
In terms of AND NOT Move; I think that can be resolved in a way, a way that
prohibits AND NOT in terms of Substituting for two or more moves/classes from the same Pokémon in the same action, that is, you cannot say:
IF (Damaging Grass Move) is issued,
AND Seed Bomb is not issued,
AND Wood Hammer is not issued,
THEN use Counter that action.
But you can say:
IF Knock Off is issued,
AND Encore is not issued the following action,
THEN use Protect on the first instance.
Likewise, you can say:
IF Fidgit uses Trick Room,
AND Clefable does not use Encore,
THEN use Taunt (Fidgit) on the first instance.
Basically the only (imo) solution for this
AND NOT thing should be:
- IF (Pokémon X) (Substitution) AND NOT (Chance-based Substitution) is legal.
- IF (Pokémon X) (Move Substitution) AND NOT (Pokémon X) (Move Substitution) (Different Action) action is legal.
- IF (Pokémon X) (Move Substitution) AND NOT (Pokémon Y) (Move Substitution) is legal.
- IF (Pokémon X) (Move Substitution) AND NOT (Pokémon X) (Move Substitution) is illegal.
I fail to see another appropriate, reasonable solution than this. These ground rules prevent
AND NOT where it would have been exploited (i.e. Substituting for two moves from the same Pokémon in the same action).
OR Should never be considered legal for substitutions, bar the Protective/Evasive substitutions.
OR is a poor attempt to disguise two substitutions as one to the inexperienced player, & I am of the opinion that substitutions should never be on the same line as each other for readability & identification reasons.
OR is also "lazy".
Also the substitution classes need to be updated for the new generation. For example, Water Shuriken for Damaging Priority Move, Spiky Shield for Protective Move, etc.