BDSP mythicals should force xor0 due to fateful
BDSP mythicals trigger logic that is distinct from the regular legendaries. Normally, if e.g. a Kyogre is shiny for the fake trainer, after capture, if it is not shiny for the real trainer, it will be forced to xor0/xor1 to preserve the shiny type. However, the fateful flag causes the game to preferentially force xor0 if not shiny for the capturing trainer.
This logic can be found in Pml.PokePara.CalcTool$$CalcRareColorType which I show below. In this case, returning a type of 0 is nonshiny, a type of 1 forces to xor0/xor1 depending on the original xor value, and a type of 2 forces to xor0. I verified that this logic is used if the Pokémon is not shiny after capture. The version check is for GO, which is not used in BDSP.
Similar to other forced-shiny methods, the algorithm does:
- If the Pokémon is shiny for the fake trainer and also shiny for the real trainer, then no change is made.
- If the Pokémon is shiny for the fake trainer and nonshiny for the real trainer, then force it shiny for the real trainer. (In this case, because it is an "event" Pokémon, it will preferentially use type 2.)
Currently, the latest commit of PokeFinder assumes that there is no override for mythical Pokémon.
The whole discussion may be moot however because the fateful flag causes all of these Pokémon to animate with squares regardless of xor value, and none of these Pokémon can enter SWSH to see the shiny animation. I leave it up to the developer to decide if a change is needed and in what manner.