There is a way to detect if you are on a custom state:
(Updated to avoid conflit with some non-standard custom states)
[1000, bla bla bla]
Type = VarSet
trigger1 = Stateno !=[5000,5210] && Stateno != [130,152] && MoveType = H
v = XX
Value = XX
Then the helper check it this is true and goes to the ground. You can make it without the var:
[1000, bla bla bla]
Type = ChangeState
TriggerAll = IsHelper(XXXX)
trigger1 = Stateno !=[5000,5210] && Stateno != [130,152] && MoveType = H
Value = XX
The logic is simple:
If the root is on a Hit state, the helper drops itself to the ground.
5000-5210 are hit states, 130-152 are block states (which are hit states) and moves with custom states SHOULD PUT P2 ON A "H" Movetype state.
But if the creator is lazy (like doesn't setting the movetype to H on the custom state) it will fail.