100% reliable!!
Reversal
[State Reversal]
type = reversaldef
trigger1 = !movehit
reversal.attr = SCA, AP
p2stateno = 1901
Change Direction and Reset
[Statedef 1901];projectile reflected
[State Turn]
type = turn
trigger1 = !time
[State Selfstate]
type = selfstate
trigger1 = 1
value = prevstateno
ignorehitpause = 1
Application--var(59) even = P2 reversal, var(59) odd = P1 reversal/sending Use (var(59)%2)=1 for enemy projectile hitdefs and use (var(59)%2)=0 for friendly attacking projectiles.
[Statedef 1601];projectile state
[...]
ctrl = 0*((var(0):=root, anim) + (var(59):=var(59) + 1))
Own reversal
[State Double Reflect]
type = changestate
trigger1 = (var(59)%2) = 0;facing != root,facing
trigger1 = root, stateno = 1900 && (root, animelem = 7 || root, animelem = 8 || root, animelem = 9) && abs(pos X -root, pos X) = [0,140]
trigger1 = pos Y = [-30,90]
value = 1901
Notice the pos x/y ranges mimic his collisions during his reversal move.
I have to thank GCNMario for his Guile and reversal code for which I copied directly initially. If it's originally his that is. I'm not so sure !movehit is needed, but I left it there anyway. I tried it on Evil Ryu as another character just in case I was only getting Vega vs. Vega results and I wasn't. Though ER would need to consider to adjust the position for when the helper gets mirrored and affectteam = F when inverted. But friendly reversal won't work for teammates.