After some testing, I think the problem runs deeper. It's only when P2 changes states whenever their movehits (like a throw), but only when the pausehittime is 0 in their hitdef. Anyway, this code I am using (which is modified from Manson Ree's own modification).
Spoiler, click to toggle visibilty
; Detect Attribute
[Statedef 8000]
type = A
movetype = I
physics = N
anim = 1
velset = 0, 0&(var(58):=var(58)+1)
ctrl = 0&(var(0):=Cond(parent,var(51)>0,parent,var(51),58))
[state 8000, Varadd]
type = varadd
trigger1 = PlayerIdExist(var(0)+var(58))
var(0) = 1
ignorehitpause = 1
[state 8000, Varset]
type = varset
trigger1 = PlayerIdExist(var(0)-var(59))
trigger1 = cond(root,teamside = 1, PlayerID(var(0)-var(59)),teamside = 2, PlayerID(var(0)-var(59)),teamside = 1)
trigger1 = PlayerID(var(0)-var(59)),HitDefAttr = SCA,HP,HA
trigger2 = numenemy
trigger2 = enemy,hitdefattr = SCA,HA,HP,AT
trigger2 = enemy,movehit
trigger3 = numenemy
trigger3 = enemy,projhit = 1,<6 && ((p2stateno = [3000,4999]) || (enemy,prevstateno = [3000,4999]))
trigger4 = (root,stateno = [800,899]) && (root,stateno = [3000,4999]) && (root,movetype = H)
var(3) = 1
ignorehitpause = 1
[state 8000, Varset]
type = varset
trigger1 = PlayerIdExist(var(0)-var(59))
trigger1 = cond(root,teamside = 1, PlayerID(var(0)-var(59)),teamside = 2, PlayerID(var(0)-var(59)),teamside = 1)
trigger1 = PlayerID(var(0)-var(59)),HitDefAttr = SCA,NA,SA,NP,SP
trigger2 = root,movetype != H
trigger3 = numenemy
trigger3 = enemy,hitdefattr = SCA,NA,SP,NP,SP
trigger3 = enemy,movehit = 1
var(3) = 0
ignorehitpause = 1
[state 8000, 0]
type = ParentVarSet
trigger1 = 1
var(51) = var(0)
ignorehitpause = 1
[State 8000, Change]
type = ChangeState
trigger1 = 1
value = 8000+(var(58)=25)
;---------------------------------------------------------------------------------
[Statedef 8001]
type = A
movetype = I
physics = N
velset = 0&(var(59):=var(59)+1), 0&(var(58):=0)
ctrl = 0&(var(59):=var(59)*(var(59)<=10))
[state 8000, Varset]
type = varset
trigger1 = PlayerIdExist(var(0)-var(59))
trigger1 = cond(root,teamside = 1, PlayerID(var(0)-var(59)),teamside = 2, PlayerID(var(0)-var(59)),teamside = 1)
trigger1 = PlayerID(var(0)-var(59)),HitDefAttr = SCA,HP,HA
trigger2 = numenemy
trigger2 = enemy,hitdefattr = SCA,HA,HP,AT
trigger2 = enemy,movehit
trigger3 = numenemy
trigger3 = enemy,projhit = 1,<6 && ((p2stateno = [3000,4999]) || (enemy,prevstateno = [3000,4999]))
trigger4 = (root,stateno = [800,899]) && (root,stateno = [3000,4999]) && (root,movetype = H)
var(3) = 1
ignorehitpause = 1
[State 8001, 7]
type = ChangeState
trigger1 = Time
value = 8000
Also, for the record, I've done experiments with removing "enemy,movehit" and it actually detects the hitdefattr even for hitdefs with 0 hitpausetime just fine... so, I suspect it's a p2 changestate problem occurring too quickly.