I think I got this figured out. By setting the ctrl to 0 during the pause no commands can be entered during the pause. I've posted the code below but if you want to find you own way to do it that's the main just of it.
I did use two var to make this work, I chose var(55) and its only needed in the -2 portion of the code. I turned off the helpers KeyCtrl and just used root,Command = "s" in the helper instead. also used var(1) and var(2) to detect if you're in a custom state.
I also suggest using a blank animation for this, otherwise if anything hits your helper your pause code will be broken for the rest of the round. I used anim = 9741 in the helper.
Let me know if you find any bugs with this though. It seems good from my testing.
-2:
;pause
[State -2]
Type = Helper
triggerall = roundstate=2
Triggerall = var(59) = 0
Triggerall = NumHelper(10001) = 0
trigger1 =command = "s"
;you're in a custom state!
trigger2 = var(1) = 1
trigger2 = enemy, command = "s"
Name = "Pause"
ID = 10001
Pos = 0, 10
PosType = P1
StateNo = 10001
KeyCtrl = 0
OwnPal = 1
[State 2000, ctrl 0]
type = CtrlSet
value = 0
trigger1 = numhelper(10001)=1
trigger1 = ctrl = 1
trigger1 = var(55) := 14
ignorehitpause = 1
[State 2000, ctrl 1]
type = CtrlSet
value = 1
trigger1 = numhelper(10001)=0
trigger1 = var(55) = 14
ignorehitpause = 1
[State 2000, reset]
type = null
trigger1 = numhelper(10001)=0 && gametime%2 = 0
trigger1 = var(55) = 14
trigger1 = var(55) := 0
ignorehitpause = 1
CNS:
;-----------------------
;Pause
[StateDef 10001]
Type = S
PHYSICS = N
MOVETYPE = I
Ctrl = 0
Anim = 9741 ; blank
[State 0, AppendToClipboard]
type = AppendToClipboard
trigger1 = 1
text = "root,var(55) = %d"
params = root,var(55)
ignorehitpause = 1
[State 3000]
Type = Pause
Trigger1 = RoundState = 2
Persistent = 2
Time = 0
MoveTime = 0
[State 3000, ChargeSND]
type=PlaySnd
Trigger1 = RoundState = 2
trigger1 =!time
value=S1,3
[State 3000, StopSnd]
type = StopSnd
trigger1 =stateno=10001&&time=0
channel = 10
[State 3000]
Type = changeState
Trigger1 = Parent,Alive && RoundState = 2
Value = 10002
;---------------------------------------
;Pause
[StateDef 10002]
Type = S
PHYSICS = N
MOVETYPE = I
Ctrl = 0
[State 3001]
Type = PlaySnd
Trigger1 = Time = 0
Value = 0, 17
[State 3001]
Type = AssertSpecial
Trigger1 = 1
Flag = nobardisplay
[State 3001]
Type = AssertSpecial
Trigger1 = 1
Flag = nomusic
[State 3001]
Type = Pause
Trigger1 = 1
Time = 10
MoveTime = 10
[State 3001]
Type = ChangeState
triggerall=var(59)=0
Trigger1 = Time >= 6 ;&& Command = "start"
trigger1 = root,command = "s"
Value = 10003
[State 3001]
Type = ChangeState
trigger1=var(59)>0
Value = 10003
[State 0, BindToRoot]
type = BindToRoot
trigger1 =1
time = 1
facing = 1
pos =0,-2
ignorehitpause =1
persistent =1
;---------------------------------------
;Pause
[StateDef 10003]
Type = S
PHYSICS = N
MOVETYPE = I
Ctrl = 0
[State 3002]
Type = Pause
Trigger1 = Time = 0
Time = 0
[State 3002]
Type = BGPalFX
Trigger1 = Time = 0
Time = 1
[State 0, DestroySelf]
type = DestroySelf
triggerall=var(59)=0
trigger1 = time>=0
Trigger1 = root,Command = "s"
[State -3, RemoveExplod]
type = RemoveExplod
triggerall=var(59)=0
trigger2 = root,command = "s"
id = 10001
[State 0, DestroySelf]
type = DestroySelf
triggerall=var(59)>0
trigger1 = time>=0
;Trigger1 = Command = "start"
[State -3, RemoveExplod]
type = RemoveExplod
triggerall=var(59)>0
trigger1 = Numhelper(10001) = 0
;trigger2 = parent, Command = "start"
id = 10001
[State 3002]
Type = ChangeState
Trigger1 = Time = 1
Value = 10001
-2:
;custom state detect, by 2OS
[State 2OS]
type=varset
trigger1=1
var(1)=(var(2)!=gametime*2)
ignorehitpause=1
persistent=1
-3:
;custom state detect, by 2OS
[State 2OS]
type=varset
trigger1=1
var(2)=gametime*2
ignorehitpause=1
persistent=1