Two neat discoveries!
The "Pokemon will flinch" flag and the "Focus Punch will lose focus" flag are dichotomous. The "lost focus" flag will always be set before the "flinch" flag, and the game never removes the "pending Focus Punch" flag. The "lost focus" flag preventing a move from executing also only works if the currently used move is actually Focus Punch. By combining this with ways of calling other moves during the turn, such as Dancer, a Pokemon can dodge a flinch. Consider these short clips:
- Dancer vs. flinch (no Focus Punch)
- Dancer vs. flinch (with Focus Punch)
In the first video, the Salamence flinches twice - once when trying to use Sleep Talk, and the other when trying to use FeatherDance via Dancer. In the second video, Salamence does not flinch and is able to successfully use FeatherDance, though it of course loses focus and cannot use Focus Punch like normal.
Note that this does NOT work with Shell Trap or Beak Blast, as they don't use the same flag as Focus Punch. Thanks to Nol and Gardevoir Gallade for helping me get started with testing!
*******************
When the game's match timer reaches 0, the game determines the winner by the following criteria, in this order:
- Whoever has more Pokemon wins. If tied,
- Whoever has a greater percentage of HP across all Pokemon brought to the match wins (including fainted Pokemon). If tied,
- Whoever has the greatest total amount of HP across all Pokemon wins. If tied,
- The match is a draw.
To expand on 2) the "greater percentage of HP" is calculated as follows:
floor[(sum of all current HP * 100) / sum of all total HP]
Effectively, this means that the percentage must be a whole number and is limited to "2 decimal places". For example, a Pokemon team with 392 / 400 HP (naively 98.0%, but really 98) is identical to a Pokemon team with 392 / 396 HP (naively 98.98%, but really 98).
In related timeout research, only the base HP is considered if one or more Pokemon are Dynamaxed. For a trivial example, compare two teams, both at full HP, but one player Dynamaxes. The % of HP is the same (100), but the total HP is not the same if Dynamaxed HP is considered. But the match is a draw. This indicates that for total HP, the extra HP from Dynamax isn't considered. For a more nuanced example, consider two identical teams with the following board state:
147/220 HP Amoonguss
199/199 HP Zacian-Crowned
197/197 HP Zapdos
This is typically floor[(147+199+197) * 100 / (220+199+197)] = 88. If the opposing Amoonguss Dynamaxes, and if Dynamaxed HP counted for timeouts, it would have floor[(294+199+197) * 100 / (440+199+197)] = 82, a lower percentage. So the non-Dynamaxed Amoonguss side should win. But in fact the match ties once again. So base HP is considered for timeouts, not Dynamaxed HP.
Video evidence can be reviewed in
this video. With thanks to LightCore for helping test the VGC timeouts!