Tag Code issues

Started by BurningSoul, August 14, 2023, 07:37:36 PM

Previous topic - Next topic

BurningSoul

So I'm editing Uno Tag to make it use id for partner like how DCL(Space23 Tag works)
the idea is simple I changed every sysvar(4) uno was using to sysvar(3)
then I made sysvar(4) its own partner detection var in -2 to give id then
then I replaced all other instances of Partner with playerid(sysvar(4)) and NumPartner's with playeridexist(sysvar(4))   

;  --- Uno Tag System v3.2.2 STATEDEF -3 ---
[State -3, (TAG) Get Partner ID]
type = VarSet
triggerall = NumEnemy ;Are there enemies??
trigger1 = numpartner = 1 ;I hate numpartner...
trigger1 = sysvar(4) = 0 ;get the partner's ID
sysvar(4) = partner, ID ;and store it to a sysvar
ignorehitpause = 1

Now this works perfectly but the reason I did is to import stuff from DCL's tag
I wanted to port over team aerial combo from Space23's tag
So I took the states for Attack
First Attack for char to do an air launch attack pressed by z+c and holdup
In Statedef -1
;----------------------------------------------------------------
;TEAM AERIAL COMBO (DISABLE THIS IF YOU WANT)
;----------------------------------------------------------------
[State -1, (TAG) TEAM AERIAL COMBO]
type = ChangeState
triggerall = roundstate = 2
triggerall = playeridexist(sysvar(4)) ;Partner exists
triggerall = playerid(sysvar(4)), sysvar(3) = 1 ;Partner Tag Active
triggerall = playerid(sysvar(4)),stateno = 1251114 ;Partner in standby
trigger1 = command = "palit" && (command = "holdup")
trigger1 = statetype = A
trigger1 = ctrl || (stateno = [600,699])
value = 1251134

Below is the state of attack
;-------------------------------------------------------------------------------
;TAG OUT - TAC (modify this as much as possible)
;-------------------------------------------------------------------------------
[Statedef 1251134]
type = U
movetype = A
physics = N
ctrl = 0

[State 0, ChangeAnim]
type = ChangeAnim
trigger1 = !Time
value = 640 ;<- Default animation, change if necessary



[State 0, SuperPause]
type = SuperPause
trigger1 = !Time
time = 24
sound = S2999,0 ;<- Add sound of your choice
anim = -1
sound = -1

[State a];“_??
type = palfx
trigger1 = time = 0
time = 5
add=-256,0,256
color = 1
ignorehitpause = 1

[State 0, VelAdd]
type = VelAdd
trigger1 = time > 0
y = const(movement.yaccel)

[State 0, VarAdd]
type = VarAdd
trigger1 = time > 0
var(1) = 1


;-------------------------------------------------------------------------------
[State 0, LP/LK HitDef]
type = HitDef
trigger1 = !movecontact
trigger1 = !movereversed
attr = A,NA     
hitflag = MAFD
guardflag = MA
animtype = Med 
priority = 4,Hit
damage = 30,0
pausetime = 12,12
sparkxy                 = -10, -80
hitsound                = 5,2
guardsound              = 6,0
ground.type = High
air.type = Low
ground.hittime = 21
ground.velocity = 0,-8.25
ground.slidetime = 8
air.hittime = 40
air.velocity = 0,-8.25
airguard.velocity = -4,0
down.velocity = -4,-6.875
ground.cornerpush.veloff = 0
forcenofall = 1
fall.xvelocity = 0
fall.yvelocity = 0
yaccel = .6875
ID = 5055
;


[State 0, TAC DETECT Explod]
type = varset
triggerall = movehit && time > 0
;trigger1 = numtarget(5054) ;Wall Bounce Target ID
;trigger1 = target(5054), stateno = 5054
;trigger2 = numtarget(5106) ;Ground Bounce Target ID
;trigger2 = target(5106), stateno = 5105
trigger1 = numtarget(5055) ;Hit up target ID
trigger1 = target(5055), hitshakeover
sysvar(3) = 19

[State 0, PlayerPush]
type = PlayerPush
trigger1 = sysvar(3) = 19
value = 0
ignorehitpause = 1

[State 0, ScreenBound]
type = ScreenBound
trigger1 = sysvar(3) != 19
trigger1 = movehit
value = 1
movecamera = 1,0
ignorehitpause = 1

[State 0, ScreenBound]
type = ScreenBound
trigger1 = sysvar(3) = 19
value = 0
movecamera = 0,0
ignorehitpause = 1

[State 0, NotHitBy]
type = NotHitBy
trigger1 = movehit
trigger1 = sysvar(3) != 19
value = SCA
time = 3
ignorehitpause = 1

[State 0, PosFreeze]
type = PosFreeze
triggerall = movehit
triggerall = sysvar(3) != 19
trigger1 = numtarget
trigger1 = movehit < 32 ;Freeze for 32 frames
value = 1
ignorehitpause = 1

[State 0, StateTypeSet]
type = StateTypeSet
trigger1 = !AnimTime && Anim != 41
movetype = I

[State 0, ChangeAnim]
type = ChangeAnim
trigger1 = !AnimTime && Anim != 41
value = 41

[State 0, ChangeState]
type = ChangeState
trigger1 =sysvar(3) =19;Tag Out State
value = 1251118
ctrl = 0

[State 4510, end state]
type = ChangeState
trigger1 = pos y >= floor(-vel y) && vel y > 0
value = 52
ctrl = 0

As you can see it sets sysvar(3) into 19 during hitshakeoveer
Inside the Standby State of tagged out chars (State 1251114) I have this

[State 7000, Team Aerial Combo Tag In]
type =ChangeState
trigger1 = RoundState = 2 && playeridexist(sysvar(4)) ;Partner exist
trigger1 = playerid(sysvar(4)), sysvar(3)=19 ;Partner sysvar(3)=19 Meaning MoveHit
value  = 1251136 ;lead into Air Attack

and here's the state for Aerial Attack below
I think the problem is here

;-------------------------------------------------------------------------------
;TAG IN - TAC
;-------------------------------------------------------------------------------
[Statedef 1251136]
type = A
movetype = U
physics = N
anim = 42 ;(define your own animation if necessary)
ctrl = 0

[State 0, Turn]
type = Turn
trigger1 = facing = playerid(sysvar(4)),facing
trigger1 = playerid(sysvar(4)), backedgebodydist <= 80
trigger1 = !Time


[State 0, PosSet] ;Mugen 1.0 and up
type = posset
trigger1 = time = 0
x = -224 * facing
y = (-Screenpos y + const(size.mid.pos.y)) + 240


[State 0, ScreenBound]
type = ScreenBound
trigger1 = backedgebodydist < 0
value = 0
movecamera = 0,1

[State 0, ChangeAnim]
type = ChangeAnim
triggerall = Anim != 610 ;<- Default anim used! Define attack animation Here!
trigger1 = abs(p2dist x) <= 96
trigger1 = abs(p2dist y) <= 96
value = 600 ;<- Default anim used! Define attack animation Here!
persistent = 0

[State 0, VelSet]
type = VelSet
trigger1 = Time < 20
x = p2dist x / 15
y = p2dist y / 10

[State 0, VelAdd]
type = VelAdd
trigger1 = time >= 30
y = const(movement.yaccel)

[State 650, HitDef]
type = HitDef
triggerall = anim = 600 ;<- Default anim used! Define attack animation Here!
trigger1 = !movecontact
attr = A,NA
hitflag = MAFD
guardflag = MA
animtype = Hard
air.animtype = DiagUp
priority = 4,Hit
damage = 69,0
pausetime = 9,9
sparkxy                 = -10, -80
hitsound                = 5,2
guardsound              = 6,0
ground.type = High
ground.slidetime = 14
ground.hittime = 21
ground.velocity = 0,-8.25
air.type = High
air.hittime = 28
air.velocity = 0,-8.25
guard.velocity = -4
airguard.velocity = -4,0
down.velocity = -4,-8
ground.cornerpush.veloff = 0
fall = 1
fall.recover = 0
fall.recovertime = 20
fall.xvelocity = 0
fall.yvelocity = 0
yaccel = .6875
p2facing = 1
id = 5055

[State 0, VelSet]
type = VelSet
trigger1 = movecontact
x = 3
y = -12 + ((vel y < 0) * 3)

[State 0, Landing Anim]
type = ChangeState
trigger1=pos Y >= floor(-vel y)
trigger1=vel Y > 0
trigger2 = movecontact
value = 51
ctrl = 1


and here's a video of how its broken https://youtu.be/mkuEyX-nzIY

and here's how it works on Original tag system
https://twitter.com/TheSpace23/status/1662644229003173888

I'm willing to provide files if anyone can help

Odb718

So remake that video with Debug on. If you don't have DisplayToClipboard going, set it up so all the variables you use are on screen.

One thing I do when a state isn't working properly is temporarily edit out the changestates. It's an easy way for Mugen to not error out and not do the thing you expect. It might just be going into your state and, 1 tic later, out.
vVv Gouken718 vVv SabreTooth718 vVv


BurningSoul

okey so after displaytoclipboard and changing sysvar(3) = 19 into 22 and a lot changes https://streamable.com/xd4anq it works
but it doesnt let me do it after a certain time,you can only do it a couple of times before you arent allowed again.Posting the code below

BurningSoul

[State -1, (TAG) TEAM AERIAL COMBO]
type = ChangeState
triggerall = roundstate = 2
triggerall = sysvar(3) = 1
triggerall = playeridexist(sysvar(4)) ;Partner exists
triggerall = playerid(sysvar(4)), sysvar(3) = 1 
;triggerall = playerid(sysvar(4)), life > 0
triggerall = playerid(sysvar(4)), StateNo = 1251114
trigger1 = command = "palit" ;&& (command = "holdup")
trigger1 = statetype = A
trigger1 = ctrl || (stateno = [600,699])
value = 1251134

cmd code

In the standby state 1251114
[State 7000, Team Aerial Combo Tag In]
type =ChangeState
triggerall = roundstate = 2
triggerall = playeridexist(sysvar(4)) ;Partner exists
trigger1 = playerid(sysvar(4)), sysvar(3) = 22
value  = 1251136



Tag In Codes
;-------------------------------------------------------------------------------
;TAG OUT - TAC (modify this as much as possible)
;-------------------------------------------------------------------------------
[Statedef 1251134]
type = U
movetype = A
physics = N
ctrl = 0

[State 0, ChangeAnim]
type = ChangeAnim
trigger1 = !Time
value = 640 ;<- Default animation, change if necessary

 
[State 0, SuperPause]
type = SuperPause
trigger1 = !Time
time = 24
sound = S2999,0 ;<- Add sound of your choice
anim = -1
sound = -1

[State a];“_??
type = palfx
trigger1 = time = 0
time = 5
add = (175 - Time), (125 - Time), (125 - Time)
mul = 245, 245, (125 + Time)
color = 1
ignorehitpause = 1

[State 0, VelAdd]
type = VelAdd
trigger1 = time > 0
y = const(movement.yaccel)

[State 0, VarAdd]
type = VarAdd
trigger1 = time > 0
var(1) = 1

;-------------------------------------------------------------------------------
[State 0, LP/LK HitDef]
type = HitDef
trigger1 = !movecontact
trigger1 = !movereversed
attr = A,NA     
hitflag = MAFD
guardflag = MA
animtype = Med 
priority = 4,Hit
damage = 30,0
pausetime = 12,12
sparkxy                 = -10, -80
hitsound                = 5,2
guardsound              = 6,0
ground.type = High
air.type = Low
ground.hittime = 21
ground.velocity = 0,-16
ground.slidetime = 8
air.hittime = 40
air.velocity = 0,-8
airguard.velocity = -4,0
down.velocity = -4,-6.875
ground.cornerpush.veloff = 0
forcenofall = 1
fall.xvelocity = 0
fall.yvelocity = 0
yaccel = .6875
ID = 5055
;


[State 0, TAC DETECT Explod]
type = varset
triggerall = movehit && time > 0
;trigger1 = numtarget(5054) ;Wall Bounce Target ID
;trigger1 = target(5054), stateno = 5054
;trigger2 = numtarget(5106) ;Ground Bounce Target ID
;trigger2 = target(5106), stateno = 5105
trigger1 = numtarget(5055) ;Hit up target ID
trigger1 = target(5055), hitshakeover
sysvar(3) = 22

[State 0, PlayerPush]
type = PlayerPush
trigger1 = sysvar(3) = 22
value = 0
ignorehitpause = 1

[State 0, ScreenBound]
type = ScreenBound
trigger1 = sysvar(3) != 22
trigger1 = movehit
value = 1
movecamera = 1,0
ignorehitpause = 1

[State 0, ScreenBound]
type = ScreenBound
trigger1 = sysvar(3) = 22
value = 0
movecamera = 0,0
ignorehitpause = 1

[State 0, NotHitBy]
type = NotHitBy
trigger1 = movehit
trigger1 = sysvar(3) != 22
value = SCA
time = 3
ignorehitpause = 1

[State 0, PosFreeze]
type = PosFreeze
triggerall = movehit
triggerall = sysvar(3) != 22
trigger1 = numtarget
trigger1 = movehit < 32 ;Freeze for 32 frames
value = 1
ignorehitpause = 1

[State 0, StateTypeSet]
type = StateTypeSet
trigger1 = !AnimTime && Anim != 41
movetype = I

[State 0, ChangeAnim]
type = ChangeAnim
trigger1 = !AnimTime && Anim != 41
value = 41

[State 0, ChangeState]
type = ChangeState
trigger1 =sysvar(3) =22
value = 1251118
ctrl = 0

[State 4510, end state]
type = ChangeState
trigger1 = pos y >= floor(-vel y) && vel y > 0
value = 52
ctrl = 0

;
;TAG OUT (JUMP AWAY)
;-------------------------------------------------------------------------------
[Statedef 1251118]
type = A
movetype = I
physics = N
velset = 0,0
ctrl = 0
;
[State 0, Tag Out VarSet]
type = VarSet
trigger1 = 1
sysvar(3) =  22;ifelse(sysvar(3) = 22, sysvar(3), 1)
ignorehitpause = 1

[State 0, ChangeAnim]
type = ChangeAnim
trigger1 = Time > 0
trigger1 = Anim != 43
value = 43

[State 0, ScreenBound]
type = ScreenBound
trigger1 = 1
value = 0
movecamera = 0,0
ignorehitpause = 1

[State 0, PlayerPush]
type = PlayerPush
trigger1 = 1
value = 0
ignorehitpause = 1

[State 0, NotHitBy]
type = NotHitBy
trigger1 = 1
value = SCA
ignorehitpause = 1

[State 0, VelSet]
type = VelSet
trigger1 = (Anim = [41,59]) && Time = 1
trigger2 = pos y >= floor(-vel y) && vel y > 0
x = -12 - abs(backedgedist / 32)
y = -8

[State 0, VelAdd]
type = VelAdd
trigger1 = (Anim = [41,59]) && Time > 0
y = .375

[State 0, ChangeState]
type = ChangeState
trigger1 = backedgebodydist <= -64 || frontedgebodydist <= -64
value = 1251113 ;Secondary Standby



Odb718

 you have the changestate for 1251136 and/but the state for 1251118?
Everything I'm reading seems fine.

This update doesn't do much. But it's silly to keep setting the variable to 22 when it IS 22.
[State 0, Tag Out VarSet]
type = VarSet
triggerall = sysvar(3) !=  22   ;you can add this check.
trigger1 = 1
sysvar(3) =  22
ignorehitpause = 1

Still no Debug on in the video. Just stare at it and see when SysVar 3 is changing. You might have a "timer" in StateDef -2 or -3. Use ctrl+F and search for sysvar(3) until you see it loop a few times. There might be a varadd/set hiding somewhere. Btw, My preference in Fighter Factory 3 is to have "Backward" and "Circular" active on the Search bar. But you definitely want Circular active.

vVv Gouken718 vVv SabreTooth718 vVv


BurningSoul

#5

okey so here's all the code and the debug video
Debug video


Spoiler (click to show)

; --- Uno Tag System v3.2.2 STATEDEF -2 ---
[Statedef -2]

[State -2, Active]
type = VarSet
triggerall = playeridexist(sysvar(4))
triggerall = sysvar(3) > 0
triggerall = sysvar(3) != 6
trigger1 = roundstate > 2
trigger1 = Win || Lose
trigger2 = Roundstate < 1
trigger2 = teammode = Tag
trigger2 = !playerid(sysvar(4)), sysvar(3)
trigger2 = Time = [1,2]
trigger3 = playerid(sysvar(4)), sysvar(3)
trigger3 = !Life
sysvar(3) = 0

[State -2, Active]
type = VarSet
triggerall = playeridexist(sysvar(4))
trigger1 = playerid(sysvar(4)), StateNo != [1251110,1251114]
trigger1 = sysvar(3) = 18
trigger2 = prevStateNo = 1251116
sysvar(3) = 15

[State -2, Uno]
type = null ;ParentVarSet
trigger1 = PrevStateNo = 1251106
sysvar(3) = 7

[State -2, Active]
type = VarSet
triggerall = sysvar(3) != 12
trigger1 = Numhelper(1251105)
;trigger2 = playerid(sysvar(4)), Stateno = 1251102
sysvar(3) = 12

[State -2, Eksena]
type = ScreenBound
trigger1 = playeridexist(sysvar(4)) && playerid(sysvar(4)), sysvar(3) = 4
trigger1 = StateNo = 1251131 || prevStateNo = 1251131
value = 1
movecamera = 1,1

[State -2, no_throw]
type = NotHitBy
triggerall = playeridexist(sysvar(4))
triggerall = StateNo != 1251114
trigger1 = sysvar(3) = [8,9]
trigger2 = sysvar(3) = 12
value = , AT

[State -2, Active]
type = VarSet
triggerall = playeridexist(sysvar(4)) && sysvar(3) != 9
triggerall = playerid(sysvar(4)), Time = [0,1]
trigger1 = playerid(sysvar(4)), StateNo = 1251104
trigger2 = playerid(sysvar(4)), StateNo = 1251110
trigger2 = StateNo != [1251101,1251136]
sysvar(3) = 1

[State -2, Active]
type = VarSet
triggerall = playeridexist(sysvar(4)) && sysvar(3) = [8,9]
trigger1 = playerid(sysvar(4)), StateNo = [1251112,1251114]
trigger1 = StateNo = 0
sysvar(3) = 1
ctrl = 1

[State -2, GTG]
type = ChangeState
triggerall = Roundstate = 2 && Alive
triggerall = sysvar(3) = 12
trigger1 = StateNo != [1251101,1251136]
trigger1 = MoveType = I || (StateNo = 5120 && AnimTime < 2)
trigger1 = StateType != A
value = 1251109

[State -2, Oh No!]
type = SelfState
triggerall = sysvar(3) != [8,9]
triggerall = sysvar(3) != [12,17]
trigger1 = prevStateNo = 1251114
trigger1 = !(StateNo = [1251101,1251136])
value = 1251114
ctrl = 0

[State -2, PowerReset]
type = poweradd
trigger1 = sysvar(3) = 5
trigger1 = RoundNo < 2
trigger1 = RoundState < 2
trigger1 = Time = 0
value = -Power
persistent = 0

[State -2, PowerAdd]
type = poweradd
trigger1 = sysvar(3) = 5 && power < 900
trigger1 = RoundNo < 2
trigger1 = RoundState < 2
trigger1 = Time = 1
value = 1000
persistent = 0

[State -2, prior]
type = SprPriority
trigger1 = playeridexist(sysvar(4)) && playerid(sysvar(4)), sysvar(3) = 17
trigger2 = (sysvar(3) = [8,9]) && StateNo != [1251110,1251111]
value = 5

[State -2, err]
type = ChangeState
trigger1 = playeridexist(sysvar(4)) && ID > playerid(sysvar(4)), ID
trigger1 = roundstate = 2 && sysvar(3)
trigger1 = StateNo = 0 && pos Y < 0
value = 1251114

; Tag active ctrl
[State -2, ctrl]
type = SelfState
trigger1 = TeamMode = Tag
trigger1 = playerid(sysvar(4)), sysvar(3)
trigger1 = playeridexist(sysvar(4))
trigger1 = !sysvar(3)
trigger1 = sysvar(3) != [8,9]
trigger1 = sysvar(3) != 12
trigger1 = StateNo != 5900
trigger1 = playerid(sysvar(4)), sysvar(3) != [2,17]
trigger1 = RoundState = 2
trigger1 = Life && playerid(sysvar(4)), Life
trigger1 = StateNo != [1000,1251199]
value = 1251114
ctrl = 0

[State -2, 1]
type = SelfState
value = 1251106
trigger1 = playeridexist(sysvar(4))
trigger1 = StateNo != 1251106 && playerid(sysvar(4)), StateNo = [1251128,1251129]

[State -2, 1]
type = SelfState
value = 1251131
triggerall = playeridexist(sysvar(4)) && playerid(sysvar(4)), Time = [0,1]
triggerall = (StateNo = 1251112 || StateNo = 1251114) && MoveType != A
trigger1 = playerid(sysvar(4)), StateNo = 1251132 || playerid(sysvar(4)), prevStateNo = 1251132
trigger2 = playerid(sysvar(4)), StateNo = 1251127 && !NumHelper(1251101)

[State -2, cancelfx]
type = PalFx
triggerall = Time = [0,1]
trigger1 = StateNo = 1251123
trigger2 = StateNo = 1251125 && NumTarget
Time = 6
add = (110 + Time*15), (110 + Time*15), (190 + Time*15)
sinadd =-245, -245, -250, (40 + Time*5)

[State -2, drop]
type = TargetDrop
triggerall = NumTarget
triggerall = Time = [0,1]
trigger1 = !Life
trigger2 = StateNo = [1251101,1251105]
trigger3 = StateNo = 1251106
trigger4 = StateNo = [1251115,1251116]

[State -2, Ov]
type = TargetState
triggerall = NumTarget  && playeridexist(sysvar(4))
triggerall = !(Target, StateNo = [120,152]) && !(Target, Anim = [120,152]) && playerid(sysvar(4)), StateNo = [1251101,1251133]
triggerall = Time = [0,2]
trigger1 = StateNo = 1251125 && Target, StateType != A
trigger2 = (StateNo = 1251126 || PrevStateNo = 1251126) && Target, Pos Y >= -10 && (Target, StateNo != [1251109,1251119]) && (Target, StateNo != [5000,5500])
value = 1251117
ignorehitpause = 1

[State -2, Ov2]
type = TargetState
triggerall = NumTarget
trigger1 = !(Target, StateNo = [120,152]) && !(Target, Anim = [120,152]) && ((Target, StateNo != [1251109,5500]) || (Target, StateNo != 5050 && Target, StateNo = [5030,5100]))
trigger1 = Target, Pos Y < -10
trigger1 = (StateNo = 1251125 && Time = [0,2])
value = 1251119
ignorehitpause = 1

[State -2, T_T]
type = TargetVelSet
triggerall = NumTarget = 1 && Target, Movetype = H && Target, vel x != 0
trigger1 = StateNo = 1251109 || sysvar(3) = 12
x = ifelse((Target, vel x > 0),0.72,-0.72)

[State -2, UM]
type = SelfState
trigger1 = playeridexist(sysvar(4)) && playerid(sysvar(4)), StateNo = 1251106
trigger1 = StateNo = [1000,4500]
value = 1251129


[Statedef -3]

;  --- Uno Tag System v3.2.2 STATEDEF -3 ---
[State -3, (TAG) Get Partner ID]
type = VarSet
triggerall = NumEnemy ;Are there enemies??
trigger1 = numpartner = 1 ;I hate numpartner...
trigger1 = sysvar(4) = 0 ;get the partners ID
sysvar(4) = partner, ID ;and store it to a sysvar
ignorehitpause = 1

; Tag active definer
[State -2,Active]
type = VarSet
triggerall = playeridexist(sysvar(4))
trigger1 = sysvar(3) = [8,9]
trigger1 = !(playerid(sysvar(4)), Life) || (playerid(sysvar(4)), StateNo = [1251110,1251114])
trigger2 = playerid(sysvar(4)), StateNo = [1251110,1251114]
trigger2 = sysvar(3) != [2,17]
trigger3 = sysvar(3) = 5
trigger3 = Roundstate = 2 && StateNo = [1251111,1251114]
trigger4 = sysvar(3) = 14
trigger4 = MoveType = H && playerid(sysvar(4)), StateNo = [1251101,1251135]
trigger5 = sysvar(3) = 15 && NumEnemy
trigger5 = EnemyNear, StateNo = [0,50]
sysvar(3) = 1
;[State -3, Active]
;type = VarSet
;triggerall = playeridexist(sysvar(4)) ;Partner exists
;triggerall = roundstate = 0 ;pre round
;triggerall = playerid(sysvar(4)), stateno != 1251109 ;partner not in standby state
;;triggerall = sysvar(3) != 1 ;not when tagged out
;trigger1 = ID < playerid(sysvar(4)), ID ;am I P1?
;trigger1 = command = "holdup" ;command to switch places
;trigger2 = ID > playerid(sysvar(4)), ID ;am I P3?
;trigger2 = playerid(sysvar(4)), sysvar(3) != 1 ;Check if P1 is not tagged out
;trigger2 = playerid(sysvar(4)), command != "holdup" ;Check if P1 is doing the command (Simul BS)
;
;sysvar(3) = 1
;ignorehitpause = 1

[State -2, Active]
type = VarSet
triggerall = teammode = Tag
trigger1 = roundstate < 1
trigger1 = sysvar(3) != 12 || sysvar(3) != 22
sysvar(3) = 1 + ((ID > playerid(sysvar(4)), ID)*4)

[State -3, enterTheScreen]
type = ChangeState
trigger1 = sysvar(3)
trigger1 = playeridexist(sysvar(4))
trigger1 = StateNo = [1251112,1251114]
trigger1 = Life
trigger1 = (playerid(sysvar(4)), StateNo = [1251109,1251111]) || (playerid(sysvar(4)), StateNo = 1251125 && playerid(sysvar(4)), Time > 0)
value = ifelse((playerid(sysvar(4)), StateNo = 1251125),1251131,1251115)

; Jump into the screen (Game is OVER)
[State -3, enterTheScreen]
type = ChangeState
triggerall = sysvar(3)
triggerall = playeridexist(sysvar(4))
trigger1 = Alive
trigger1 = StateNo = [1251112,1251114]
trigger1 = Time > 0
trigger1 = roundstate > 2
trigger1 = Win || LoseTime || WinTime || drawgame
value = 1251120

[State -3, NoJC]
type = AssertSpecial
triggerall = playeridexist(sysvar(4))
trigger1 = playerid(sysvar(4)), sysvar(3) = 12
trigger2 = sysvar(3) = [8,9]
trigger3 = PrevStateNo = [1251112,1251135]
trigger4 = sysvar(3) = 15 && playerid(sysvar(4)), Time < 150
flag = nojugglecheck
ignorehitpause = 1

[State -3, RemoveExplod]
type = RemoveExplod
trigger1 = StateNo = [1251110,1251113]
trigger2 = !Life
trigger3 = StateNo = [1251126,1251127]
ignorehitpause = 1

[State -3, cancelfx2s_b]
type = PalFx
triggerall = RoundState = 2
trigger1 = Time = [0,3]
trigger1 = StateNo = 1251116
trigger2 = NumHelper(1251105)
trigger2 = StateNo != 1251109  && (Helper(1251105), Time = [2,35])
Time = ifelse(StateNo = 1251116,4,10)
add = (175 - Time), (125 - Time), (125 - Time)
mul = 245, 245, (125 + Time)

[State -3, cancelfx2s_a]
type = PalFx
triggerall = RoundState = 2
trigger1 = NumHelper(1251105)
trigger1 = (Helper(1251105), Time < 2)
trigger2 = playeridexist(sysvar(4)) && (playerid(sysvar(4)), StateNo = 1251116) && (playerid(sysvar(4)), Time <= 12)
Time = 2
add = 256,256,256

[State -3, Quiet]
type = AssertSpecial
trigger1 = playeridexist(sysvar(4))
trigger1 = playerid(sysvar(4)), sysvar(3) = 7
trigger1 = !Alive && !NumHelper(1251130)
flag = nokosnd

[State -3, Dark]
type = AssertSpecial
triggerall = playeridexist(sysvar(4))
trigger1 = StateNo = 1251106
trigger2 = StateNo = 1251127 || playerid(sysvar(4)), StateNo = 1251127
trigger3 = NumHelper(1251101) && StateNo = 1251131 && playerid(sysvar(4)), StateNo != 1251125
flag = noBG
flag2 = noFG
flag3 = Timerfreeze
ignorehitpause = 1

[State -3, leavefx]
type = PalFx
trigger1 = StateNo = 1251111
trigger2 = StateNo = 1251109
trigger3 = StateNo = 1251127
trigger4 = (sysvar(3) = [8,9]) && StateNo = 1251110 && Time > 12
trigger5 = StateNo = 1251110 && Time > 14
Time = 2
add = 0,0,0
mul = 150,150,150

[State -3, InvBG]
type = BGPalFx
trigger1 = NumHelper(1251130)
trigger2 = StateNo = 1251106
Time = 2
color = 0
add = -16 -ceil(cos(gameTime / 60.0 * pi) * 16), -16 -ceil(cos(gameTime / 60.0 * pi) * 16), -16 -ceil(cos(gameTime / 60.0 * pi) * 16)
ignorehitpause = 1

[State -3, InvChar]
type = PalFx
triggerall = NumEnemy
trigger1 = (Enemy, PrevStateNo = [1251128,1251129]) || (EnemyNear, PrevStateNo = [1251128,1251129])
trigger2 = Enemy, StateNo = 1251106 || EnemyNear, StateNo = 1251106
Time = 2
color = 0
add = -16 -ceil(cos(gameTime / 60.0 * pi) * 16), -16 -ceil(cos(gameTime / 60.0 * pi) * 16), -16 -ceil(cos(gameTime / 60.0 * pi) * 16)
ignorehitpause = 1

[State -3, Invert]
type = PalFx
trigger1 = PrevStateNo = [1251128,1251129]
Time = 10
invertall = 1

[State -3, SuperPause]
type = SuperPause
triggerall = playeridexist(sysvar(4))
trigger1 = playerid(sysvar(4)), StateNo = 1251106
trigger1 = NumHelper(1251130)
trigger2 = NumHelper(1251101) && playerid(sysvar(4)), StateNo != 1251125
trigger2 = MoveType != H
Time = 10
anim = -1
sound = -1
moveTime = 10
darken = 1
p2defmul = 0
unhittable = 1
pausebg = 1

[State -3, NoAirGuard]
type = AssertSpecial
trigger1 = playeridexist(sysvar(4))
trigger1 = sysvar(3) = 8
trigger1 = Movetype = A
trigger1 = prevStateNo = 1251133
flag = Noairguard
flag2 = nojugglecheck
flag3 = nowalk
ignorehitpause = 1

[State -3, aHit]
Type = VarSet
Triggerall = sysvar(3) = 8 && Roundstate = 2
triggerall = playeridexist(sysvar(4)) && playerid(sysvar(4)), Alive
trigger1 = Movetype = H
trigger2 = StateNo = [5000,5990]
trigger3 = StateNo = [150,151]
sysvar(3) = 9

[State -3, bangon]
type = SelfState
trigger1 = playeridexist(sysvar(4)) && sysvar(3) = 9
trigger1 = Alive && playerid(sysvar(4)), Alive
trigger1 = StateNo != 5120
trigger1 = StateNo = 5110 || Anim = 5110
trigger1 = Time >= 12
value =5120

[State -3, leavePA]
type = SelfState
triggerall = sysvar(3) = [8,9]
triggerall = StateType != A || prevStateNo = [5000,5500]
triggerall = playeridexist(sysvar(4))
trigger1 = Roundstate = 2
trigger1 = Life && playerid(sysvar(4)), life
trigger1 = playerid(sysvar(4)), StateNo != [1251101,1251136]
trigger1 = StateNo != [200,1251199]
trigger1 = MoveType != H || ((StateNo = [5110, 5120]) && (Time >= 19 || AnimElemTime(4) >= 1))
value = ifelse((sysvar(3)=9 || (StateNo = [150,151])),1251111,1251110)
ctrl = 0

[State -3, LE]
type = SelfState
trigger1 = StateNo = 7828
trigger1 = PrevStateNo = [1251110,1251114]
trigger2 = sysvar(3) = [8,9]
trigger2 = Anim = 100 && StateNo != [1251101,1251136]
trigger3 = sysvar(3) = 5
trigger3 = PrevStateNo = [1251110,1251114]
trigger3 = StateNo != [1251101,1251136]
value = 1251111

[State -3, leaveIntro]
type = ChangeState
triggerall = sysvar(3) = 5
triggerall = playeridexist(sysvar(4))
trigger1 = Roundstate >= 2
trigger1 = StateNo != [1000,1251199]
value = 1251110
ctrl = 0
[State -3, leave2]
type = SelfState
triggerall = playeridexist(sysvar(4))
triggerall = sysvar(3) = 14 && roundstate = 2
trigger1 = StateNo != 1251109
trigger1 = Statetype != A
trigger1 = playerid(sysvar(4)), StateNo != [1251109,1251116]
value = 1251109

[State -3, antala]
type = VarSet
triggerall = playeridexist(sysvar(4))
triggerall = sysvar(3) = 14
trigger1 = playerid(sysvar(4)), StateNo = [1251114,1251115]
trigger1 = playerid(sysvar(4)), vel x <= 0
sysvar(3) = 1

[State -3, fromdark]
type = Helper
trigger1 = sysvar(3) = 7 && !NumHelper(1251139)
trigger1 = PrevStateNo = 1251106
trigger1 = Time <= 25
Helpertype = Normal
ID = 1251139
StateNo = 1251130
name = "dark"
ownpal = 1
supermoveTime = 9999
pausemoveTime = 9999

[State -3, sb_PA]
type = ScreenBound
trigger1 = playeridexist(sysvar(4))
trigger1 = sysvar(3) = [8,9]
value = ifelse(MoveType = A,1,0)
movecamera = 0,0

[State -3, NoCtrl]
type = CtrlSet
trigger1 = playeridexist(sysvar(4))
trigger1 = StateNo != [1251111,1251114]
trigger1 = sysvar(3) = [8,9]
value = ifelse((playerid(sysvar(4)), Alive),0, 1)

[State -3, Party]
type = Null ;CtrlSet
triggerall = playeridexist(sysvar(4))
triggerall = playerid(sysvar(4)), StateNo != [1251110,1251114]
trigger1 = playerid(sysvar(4)), sysvar(3) = 17
trigger1 = Movetype != A
trigger1 = StateNo != [5000,5500]
trigger1 = playerid(sysvar(4)), StateNo != [5000,5500]
trigger1 = prevStateNo != [5000,5500]
value = ifelse((prevStateNo = [1251132,1251131]) || (playerid(sysvar(4)), StateNo = 1251125) ||(playerid(sysvar(4)), movetype = A), 0, 1)

[State -3, Party]
type = AssertSpecial
triggerall = playeridexist(sysvar(4))
triggerall = playerid(sysvar(4)), StateNo != [1251110,1251114]
trigger1 = playerid(sysvar(4)), sysvar(3) = 17
trigger1 = Movetype != A
trigger1 = StateNo != [5000,5500]
trigger1 = playerid(sysvar(4)), StateNo != [5000,5500]
trigger1 = prevStateNo != [5000,5500]
flag = nojugglecheck
;flag2 = nowalk

[State -3, PartyDone]
type = Null ;CtrlSet
triggerall = playeridexist(sysvar(4))
triggerall = !Ctrl
triggerall = playerid(sysvar(4)), sysvar(3) = 17
triggerall = Movetype = I
triggerall = StateNo != [200,5500]
trigger1 = prevStateNo = [5000,5500]
trigger2 = playerid(sysvar(4)), StateNo = 1251111
trigger3 = playerid(sysvar(4)), MoveType = H && !playerid(sysvar(4)), HitShakeOver
value = 1

[State -3, shift]
type = CtrlSet
trigger1 = sysvar(3) = 12
trigger2 = StateNo = 1251109
value = 0

[State -3, fadeOut]
type = Trans
triggerall = playeridexist(sysvar(4))
trigger1 = !Life && playerid(sysvar(4)), Life
;trigger1 = RoundState = 2 || playerid(sysvar(4)),sysvar(3) = 7
trigger1 = playerid(sysvar(4)), sysvar(3) = 7
trigger1 = StateNo = 5150
Trans = addalpha
alpha = (256-ifelse((playerid(sysvar(4)),sysvar(3) = 7),(Time *3),(Time*2))), (Time*Time)

[State -3, fadeOut]
type=assertspecial
triggerall = alive=0 && !ishelper && playeridexist(sysvar(4)) && playerid(sysvar(4)), sysvar(3) && RoundState = 2
trigger1=stateno=5150 && (((time=[80,150])&&(time%10<5))||(time>150))
trigger1=(playerid(sysvar(4)),stateno!=stateno)||((playerid(sysvar(4)),stateno=stateno)&&(playerid(sysvar(4)),time<time))
flag=invisible
flag2=noshadow

[state -3, fadeOut]
type=posset
trigger1 = sysvar(3)
trigger1=stateno=5150 && alive=0 && !ishelper && playeridexist(sysvar(4)) && (time>150)
trigger1=(playerid(sysvar(4)),stateno!=stateno)||((playerid(sysvar(4)),stateno=stateno)&&(playerid(sysvar(4)),time<time))
trigger1 = playerid(sysvar(4)), sysvar(3)
y=-3

[state -3, dead_Var]
type = VarSet
triggerall = !Alive
triggerall = RoundState = 2
triggerall = StateNo = [5131,5150]
triggerall = playeridexist(sysvar(4)) && playerid(sysvar(4)), sysvar(3)
trigger1 = Time >= 125
trigger2 = playerid(sysvar(4)), sysvar(3) = 7
trigger2 = Time >= 85
sysvar(3) = 6

[state -3, awake_Var]
type = VarSet
triggerall = roundstate = 2
trigger1 = Alive
trigger1 = sysvar(3) = 6
trigger2 = playerid(sysvar(4)), Life
trigger2 = sysvar(3) = 7
sysvar(3) = 1

[state -3, offME]
type = NotHitBy
triggerall = playeridexist(sysvar(4))
trigger1 = sysvar(3) = 6
trigger2 = StateNo = 1251128 || PrevStateNo = 1251128
trigger3 = playerid(sysvar(4)), sysvar(3) = 6
trigger3 = (StateNo = [1251101,1251116]) || (StateNo = [1251120,1251136])
value = SCA

[state -3, disa2]
type = ChangeState
trigger1 = RoundState = 2
trigger1 = StateNo = [5110,5150]
trigger1 = sysvar(3) = 6
value = 1251113

[state -3, Ghost]
type = AssertSpecial
triggerall = !Alive
triggerall = RoundState >= 2
triggerall = sysvar(3) = 6
trigger1 = Anim = [5000,5600]
trigger2 = PrevStateNo = [1251113,1251122]
flag = invisible
flag2 = noshadow
ignorehitpause = 1

[State -3, EndLife]
type = LifeAdd
triggerall = RoundState = 2
trigger1 = PrevStateNo = 1251129
trigger2 = sysvar(3) = 6
value = -LifeMax

[State -3, END]
type = PosSet
trigger1 = playeridexist(sysvar(4))
trigger1 = roundstate > 2
trigger1 = !Alive
trigger1 = PrevStateNo = 1251113
x = (playerid(sysvar(4)), pos x) - 5000*facing
y = 0

[State -3, sb]
type = ScreenBound
trigger1 = BackEdgeBodyDist <= 10
trigger1 = StateNo = [1251115,1251116]
trigger2 = StateNo = 1251109
value = 0
movecamera = 0,0

[State -3, sb]
type = PlayerPush
trigger1 = StateNo = [1251115,1251116]
value = ifelse(BackEdgeBodyDist >= 0 || p2bodydist x <= 45,1,0)

[State -3, 1251129]
type = LifeAdd
trigger1 = PrevStateNo = 1251129 && Time > 1
value = -LifeMax

[State -3, 1251129]
type = ChangeState
trigger1 = StateNo < 5000
trigger1 = PrevStateNo = 1251129 && AnimElemNo(3) = 7
value = 5150

[State -3, Aura]
type=Helper
triggerall= !NumHelper(1251124)
trigger1 = sysvar(3) = 7 && MoveType = I && (StateNo = 1251106 || Life <= (LifeMax*.2))
Helpertype=normal
StateNo=1251124
ID=1251124
name="AURA"
postype=p1
ownpal = 1
pausemoveTime=999999
supermoveTime=999999



[State -3, T_T]
type = ScreenBound
trigger1 = roundstate > 2
trigger1 = !Alive
trigger1 = PrevStateNo = 1251113
;trigger2= EnemyNear, NumHelper(1251107) || Enemy, NumHelper(1251107)
value = 0
movecamera = 0,0

[State -3, T_T]
type = PosFreeze
trigger1 = NumEnemy && EnemyNear, NumHelper(1251107) || Enemy, NumHelper(1251107)
trigger2 = PrevStateNo = 1251121
trigger3 = StateNo = 1251125

[State -3, T_T]
type = SelfState
triggerall = playeridexist(sysvar(4)) && sysvar(3) > 0
trigger1 = RoundState = 2  && Pos Y < 0
trigger1 = StateNo = 0 && (playerid(sysvar(4)), StateNo != [1251112,1251114])
trigger1 = PrevStateNo = [1251112,1251114]
value = 1251114

[State -3, wait out]
type = ChangeState
triggerall = playeridexist(sysvar(4))
triggerall = RoundState = 2
triggerall = Life && playerid(sysvar(4)), Life
triggerall = StateNo != [1251110,1251114]
trigger1 = sysvar(3) = 17 ; performed team attack
trigger1 = (PrevStateNo = [5000,5500]) || (StateNo != [200,1251199]) && (MoveType != H)
trigger2 = sysvar(3) = 4          ; performed Delayed Cancel
trigger2 = MoveType != A || ((playerid(sysvar(4)), prevStateNo = 1251131 || playerid(sysvar(4)), StateNo != [1251101,1251136]) && Time > 1)
trigger3 = (sysvar(3) = [2,4]) && MoveType = I && (StateNo != [1251101,1251135])
trigger4 = NumHelper(1251125)
trigger4 = StateNo = [0,199]
value = 1251111
ctrl = 0
ignorehitpause = 1