OK it actually didn't take too long to rip the band-aid off. here's the CNS:
[State -1, clash]
trigger1 = !numhelper(777777) && roundstate >= 2
type = helper
helpertype= normal;
stateno= 777777; #i used PotS parry as a guideline but ultimately the code's all different
ID= 777777;
name= "Parry Detection"; #naming the helper this lets it set off the "parrying" system message in ikemen go; i dunno if that's good or just confusing clutter
postype= p1;
pausemovetime= 65535; #todo look up why these are here
supermovetime= 65535;
ownpal= 1;
[Statedef 777777]; #can't decide what number this should actually be. keeping it the same as the parry one is trouble
type= A;
physics= N;
movetype= I; #I thought reversaldef was supposed to not work unless movetype was A?
velset= 0, 0;
ctrl= 0;
[State 777777, btr];
trigger1=1
type=BindToRoot
time= -1; #stick to player
[State 777777, face];
trigger1= root,facing != facing
type=turn ;#make it flip itself
[State 777777, pal];
trigger1=1
type=PalFX; #DEBUG: tinted for testing animation disparities
add= 0,-255,-255;
time=-1;
[State 777777, invis];
trigger1=0; #TODO: turn invisible when done testing
type=assertspecial
flag=invisible;
[State 777777, nhb];
trigger1=1
type=NotHitBy; #is this invincible enough? TODO: iirc it isn't, ironically because of reversaldefs
value= SCA;
;#will figure out a hitoverride here later
[State 777777, anim];
trigger1= anim != root,anim || !root,AnimElemTime(1) || !root,AnimTime ;#on animation change or loop?
type=changeanim
value=root,anim ; animation mimicking, somewhat imperfect especially when hitstun happens
[State 777777, reversal];
triggerall= anim != root,anim || !root,AnimElemTime(1) || !root,AnimTime ;#on animation change or loop?
trigger1 = root,movetype = A ;#if it were up to me i'd have it go off on every hitdef, but sadly...
type=ReversalDef
reversal.attr= SCA,NA,SA;
pausetime= 0,0;
sparkno= 3;
numhits= 0;
kill= 0;
[State 777777, pause];
trigger1 = moveHit = 1
type= superPause ; #just temporary but does the trick for now.
pos= 25, -57;
time= 10;
anim= 100; #the anim's also useful for figuring out who's doing it
sound= 20, 0;
IgnoreHitPause = 1;
And upon testing it in mugen 1.0 ... that seemingly confirms this is a new bug in ikemen. I guess I'll head over to the github next.
Should I go ahead and mark this as "solved" (well, considering the blocking issue is unrelated to my actual efforts), or are there other workarounds or suggestions I should know?