YesNoOk
avatar

How can I recreate Morrigan's Astral VIsion? (Read 22130 times)

Started by daonlylonely, July 08, 2024, 04:01:48 pm
Share this topic:
How can I recreate Morrigan's Astral VIsion?
#1  July 08, 2024, 04:01:48 pm
  • **
    • USA
Is there any chance someone could let me know how I can create a helper or something which is a essentially a clone of Morrigan that copies everything she does for a short period of time?

Re: How can I recreate Morrigan's Astral VIsion?
#2  July 08, 2024, 09:57:20 pm
  • ******
  • Hedgehog Whisperer
  • Red Bull addict
    • Spain
    • xgargoyle.mgbr.net
Easiest way, you have the helper just replicate the same anim as the root. But the helper will not be able to hit the enemy.

A better but slightly more complex way, have the helper go into the same states as the root. The helper will be able to hit the enemy.
After the period of time ends, have the helper destroy itself.
That's just the base, you will need to add failsafe conditions to the states with "IsHelper" triggers to avoid the helper going into incorrect states such as gethits
XGargoyle: Battle posing since 1979
http://xgargoyle.mgbr.net
http://www.pandorabots.com/pandora/talk?botid=e71c0d43fe35093a  <-- Please click that link
http://paypal.me/XGargoyle  <-- Donations welcome!
Last Edit: July 08, 2024, 10:13:23 pm by XGargoyle
Re: How can I recreate Morrigan's Astral VIsion?
#3  July 09, 2024, 10:02:25 am
  • **
    • USA
Apologies in advance since this would be my first time trying to create a helper. How would I go about making a helper replicate the same animations as the root?
Last Edit: July 09, 2024, 10:08:55 am by daonlylonely
Re: How can I recreate Morrigan's Astral VIsion?
#4  July 09, 2024, 03:03:18 pm
  • ******
  • Hedgehog Whisperer
  • Red Bull addict
    • Spain
    • xgargoyle.mgbr.net
inside the helper's state:

[State 6666, 2] ;this will allow the helper to replicate the same animation than the root
type = ChangeAnim
triggerall = SelfAnimExist(root,Anim) ;prevent debug error on custom anims
trigger1 = Anim != (root, anim)
trigger2 = AnimElemNo(0) > (root, AnimElemNo(0))
value = root, anim
elem = root,AnimElemNo(0)
ignorehitpause = 1
XGargoyle: Battle posing since 1979
http://xgargoyle.mgbr.net
http://www.pandorabots.com/pandora/talk?botid=e71c0d43fe35093a  <-- Please click that link
http://paypal.me/XGargoyle  <-- Donations welcome!
Re: How can I recreate Morrigan's Astral VIsion?
#5  July 25, 2024, 10:56:39 am
  • **
    • USA
So far, I haven't been successful in recreating it since the helper doesn't show up at all. I'm quite a noob at this so I'm sure there's at least a bajillion things I did wrong even with the help of a helper creating guide. I'll insert the code I used down below.

AIR file
Code:
; AV Mirror Image 
[Begin Action 790]
775,0, 0,0, 1
775,1, 0,0, 1

; AV Mirror Image Vanish
[Begin Action 791]
194,0, 0,0, 3
194,1, 0,0, 3
194,2, 0,0, -1

What I inserted into the "Dark Force" code
Code:
[State 770, AV Mirror Image]
type = helper
trigger1 = Anim = 770 && AnimElemTime(22) < 0
helpertype = normal
stateno = 790
ID = 790
pos = 50,0
name = "AV Mirror Image"
postype = p1
persistent = 0
keyctrl = 1

Helpers.cns file
Code:
;=====================<ASTRAL VISION MIRROR IMAGE>============================
[Statedef 790]
type = S
physics = N
movetype = S
anim = 790
ctrl = 0
velset = 0, 0
sprpriority = 1

[State 790, Fade In]
type = Trans
trigger1 = Anim = 790 && AnimElemTime(7)<0
trans = addalpha
alpha = ceil(5.7 * AnimElemTime(1)), ceil(256 -5.7 * AnimElemTime(1))

[State 790, 2] ;this will allow the helper to replicate the same animation than the root
type = ChangeAnim
triggerall = SelfAnimExist(root,Anim) ;prevent debug error on custom anims
trigger1 = Anim != (root, anim)
trigger2 = AnimElemNo(0) > (root, AnimElemNo(0))
value = root, anim
elem = root,AnimElemNo(0)
ignorehitpause = 1

[State 790, End]
type = ChangeState
trigger1 = Anim=771
value = 791

;AV Mirror Image Fade away
[Statedef 791]
type = A
physics = N
anim = 791
sprpriority = 1

[State 791, No AfterImages]
type = AfterImageTime
trigger1 = !Time
time = 0
ignorehitpause = 1

[State 791, Fade]
type = trans
trigger1 = 1
trans = addalpha
alpha = ceil(256 -8.5 * time), ceil(8.5 * time)

[State 791, Gravity]
type = VelAdd
trigger1 = 1
y = 0.5
Re: How can I recreate Morrigan's Astral VIsion?
#6  July 27, 2024, 04:39:30 am
  • *****
  • Shame on you!
    • USA
What you have seems solid enough that a helper should be showing up.
A few things to check
trigger1 = Anim = 770 && AnimElemTime(22) < 0
make sure this isn't the problem. Set it to something like Time = 2. Something you KNOW has to fire off.
The ChangeState for the helper might be instantly firing off because Root is doing something you're not expecting.
[State 790, End]
type = ChangeState
trigger1 = time >=75  ;just so you can see it for sure 
;trigger1 = Anim=771
value = 791


trigger1 = Anim = 790 && AnimElemTime(7)<0
That animelemtime, you might want to just change the animation as a test.

Code:
; AV Mirror Image 
[Begin Action 790]
775,0, 0,0, 1
775,1, 0,0, 1
775,0, 0,0, 1
775,1, 0,0, 1
775,0, 0,0, 1
775,1, 0,0, 1
775,0, 0,0, 1
775,1, 0,0, 1
775,0, 0,0, 1
775,1, 0,0, 1

You can try these 1 by 1 until it shows up.
vVv N00bSaibot & Muramasa RoofTop vVv
Re: How can I recreate Morrigan's Astral VIsion?
#7  July 27, 2024, 03:31:55 pm
  • **
    • USA
trigger1 = Anim = 770 && AnimElemTime(22) < 0

So I tried taking the line of code above and removed the AnimElemTime to see what happens and this is the result so far...



I've also tried everything else you've suggested and they didn't seem to make much of a difference from what I can see.

What I'm tryna figure out at this moment is how to stop the helper from being stationary, how to make it perform flipped versions of every animation it copies and also how to make it play its little startup animation before it starts copying the root.


Re: How can I recreate Morrigan's Astral VIsion?
#8  July 27, 2024, 03:44:53 pm
  • ******
  • Hedgehog Whisperer
  • Red Bull addict
    • Spain
    • xgargoyle.mgbr.net
Bindtoparent
XGargoyle: Battle posing since 1979
http://xgargoyle.mgbr.net
http://www.pandorabots.com/pandora/talk?botid=e71c0d43fe35093a  <-- Please click that link
http://paypal.me/XGargoyle  <-- Donations welcome!
Re: How can I recreate Morrigan's Astral VIsion?
#9  July 27, 2024, 04:20:21 pm
  • *****
  • Shame on you!
    • USA
What I'm tryna figure out at this moment is how to stop the helper from being stationary,

 how to make it perform flipped versions of every animation it copies

and also how to make it play its little startup animation before it starts copying the root.
use the bindtoparent like XGargoyle mentioned. It has the distance and the facing to take care of 2 of the problems.

The start up animation is pretty easy. Your "copy Root's anim" triggers just need a
Time >=X
where X is the amount of time the start up animation is.
vVv N00bSaibot & Muramasa RoofTop vVv
Re: How can I recreate Morrigan's Astral VIsion?
#10  July 29, 2024, 12:52:41 pm
  • **
    • USA


This is what I've managed to achieve so far.

These are the things I have left to figure out:
1. How to make the helper glide to the back of the opponent when it does the startup anim instead of just appearing. (If i had to guess its probly VelSet)
2. How to make the helper copy the root's states so that they can also hit the opponent.
3. Why does the opponent enters the block state whenever they move backwards between Morrigan and the helper. Also, the helper doesn't destroy itself when the dark force ends via something like a super.

Code:
;=====================<ASTRAL VISION MIRROR IMAGE>============================
[Statedef 790]
type = S
physics = N
movetype = A
anim = 790
ctrl = 0
velset = 0, 0
sprpriority = 1

[State 790, Fade In]
type = Trans
trigger1 = Anim = 790
trans = addalpha
alpha = ceil(5.7 * AnimElemTime(1)), ceil(256 -5.7 * AnimElemTime(1))

[State 790, Pos]
type= BindToParent
trigger1 = 1
time = 1
facing = -1
pos= 2*(Parent,P2Dist X), 0

[State 790, 2]
type = ChangeAnim
triggerall = SelfAnimExist(root,Anim) && Time >=44
trigger1 = Anim != (root, anim)
trigger2 = AnimElemNo(0) > (root, AnimElemNo(0))
value = root, anim
elem = root,AnimElemNo(0)
ignorehitpause = 1

[State 790, End]
type = ChangeState
trigger1 = Anim=771
value = 791

;AV Mirror Image Fade away
[Statedef 791]
type = A
physics = N
anim = 791
sprpriority = 1

[State 791, No AfterImages]
type = AfterImageTime
trigger1 = !Time
time = 0
ignorehitpause = 1

[State 791, Fade]
type = trans
trigger1 = 1
trans = addalpha
alpha = ceil(256 -8.5 * time), ceil(8.5 * time)

[State 790, End]
type = DestroySelf
trigger1 = parent, stateno !=771
value = 791

I suppose I'll also post the dark force code in case any of it is noteworthy
Code:
 ;===============<MAX Mode>===============
[Statedef 770]
type = S
movetype = I
physics = S
anim = 770
ctrl = 0
velset = 0,0

[State 770, NHB]
type = nothitby
trigger1 = 1
time = 1
value = SCA

[State 770, Voice]
type = PlaySnd
trigger1 = !Time
value = 770, 1
channel = 0

[State 770, MAX Snd]
type = PlaySnd
trigger1 = !Time
value = 770, 0

[State 770, Dark Force FX]
type = Helper
trigger1 = !Time
helperType = Normal
stateNo = 8400
ID = 8400
name = "Dark Force Startup FX"
posType = P1
pos = ceil(5 * const(size.xScale)), ceil(-62 * const(size.yScale))
superMoveTime = 255
size.xScale = 1
size.yScale = 1
ownPal = 1

[State 770, AV Mirror Image]
type = helper
trigger1 = Anim = 770
helpertype = normal
stateno = 790
ID = 790
pos = 0,0
name = "AV Mirror Image"
postype = p1
persistent = 0
keyctrl = 1

[State 770, PowerAdd]
type = PowerAdd
trigger1 = AnimElem = 1
value = -1000

[State 770, PowerSet Var]
type = Varset
trigger1 = Animelem = 1
var(24) = Power

[State 770, MAX Mode Timer]
type = VarSet
trigger1 = AnimElem = 1
var(20) = 688

[State 770, Max Meter V2]
type = Helper
helpertype = Normal
trigger1 = Animelem = 1 && !NumHelper(780)
id = 780
pos = 0,0
postype = left
name = "Max Meter"
stateno = 780
ignorehitpause = 1
pauseMoveTime = 255
superMoveTime = 255
ownpal = 1

[State 770, End]
type = ChangeState
trigger1 = !AnimTime
value = 0
ctrl = 1

;Reset
[Statedef 771]
type = S
physics = S
movetype = I
anim = 771
ctrl = 0
velset = 0, 0

[State 771, MAX Mode Deactivation Flag]
type = VarSet
trigger1 = !Time
var(50) = 0
ignoreHitPause = 1

[State 771, Var]
type = varset
trigger1 = var(20)
var(20) = 0

[State 771, End]
type = changestate
trigger1 = !animtime
value = 0
ctrl = 1
Last Edit: August 02, 2024, 10:48:15 am by daonlylonely
Re: How can I recreate Morrigan's Astral VIsion?
#11  August 03, 2024, 10:08:17 am
  • *****
  • Shame on you!
    • USA
vVv N00bSaibot & Muramasa RoofTop vVv
Re: How can I recreate Morrigan's Astral VIsion?
#12  December 26, 2024, 03:50:41 pm
  • **
    • USA
So it's been a while since I've done anything MUGEN related due to burnout but I recently went back to attempting this again. Right now, my problem is I tried seeing if I could make use of some Astral Vision code from another version of Morrigan but when I tested it in game, her mirror image/clone stopped showing up and I'm unable to pinpoint where I went wrong. I'd also appreciate it if someone could lemme know if there is somehow a simpler way of doing this.

Here's the code I'm using:

Code:
[State 770, AV Mirror Image]
type = helper
trigger1 = Anim = 770 && AnimElemTime(22) < 0
helpertype = normal
stateno = 790
ID = 790
pos = 0,0
name = "AV Mirror Image"
postype = p1
persistent = 0
keyctrl = 1



;=====================<ASTRAL VISION MIRROR IMAGE>============================
[Statedef 790]
type = S
physics = N
movetype = S
anim = 790
ctrl = 0
velset = 0, 0
sprpriority = 1

[State 790, End]
type = changestate
trigger1 = !ishelper(775)
value = 0
ctrl = 1

[State 790, Fade In]
type = Trans
trigger1 = Anim = 790 && AnimElemTime(7)<0
trans = addalpha
alpha = ceil(5.7 * AnimElemTime(1)), ceil(256 -5.7 * AnimElemTime(1))

[State 790, Pos]
type= BindToParent
trigger1 = 1
time = 1
facing = -1
pos= 2*(Parent,P2Dist X), 0

[State 790, 1]
type = BindToParent
trigger1 = Anim = 790
time = 688
facing = -1
pos = 100,0

[State 790, 2]
type = ChangeAnim
triggerall = SelfAnimExist(root,Anim) && Time >=44
trigger1 = Anim != (root, anim)
trigger2 = AnimElemNo(0) > (root, AnimElemNo(0))
value = root, anim
elem = root,AnimElemNo(0)
ignorehitpause = 1

[State 790, End]
type = DestroySelf
trigger1 = parent, stateno !=771
value = 791

;AV Mirror Image Fade away
[Statedef 791]
type = A
physics = N
anim = 791
sprpriority = 1

[State 791, No AfterImages]
type = AfterImageTime
trigger1 = !Time
time = 0
ignorehitpause = 1

[State 791, Fade]
type = trans
trigger1 = 1
trans = addalpha
alpha = ceil(256 -8.5 * time), ceil(8.5 * time)

[State 791, Gravity]
type = VelAdd
trigger1 = 1
y = 0.5

[State 791, End]
type = ChangeState
trigger1 = Time >= 30 || pos y >= 0
value = 1016



;===================< MAIN >===================
[Statedef 775]
type = A
physics = N
movetype = I
anim = 0
ctrl = 0
velset = 0, 0

[State 775, End]
type = changestate
trigger1 = !ishelper(775)
value = 0
ctrl = 1

[State 775, NHB]
type = nothitby
trigger1 = 1
time = -1
value = SCA, AA, AP, AT
ignorehitpause = 1

[State 775, Push]
type = playerpush
trigger1 = 1
value = 0
ignorehitpause = 1

[State 775, Anim]
type = changeanim
triggerall = root, selfanimexist(root, anim) && (root, stateno != [770, 771])
triggerall = ifelse((root, movetype = H), (root, stateno = [5000, 5300]), 1)
trigger1 = anim != (root, anim)
value = root, anim
elem = root, animelemno(0)

[State 775, customstatesanim]
type = changeanim
trigger1 = root, movetype = H && (root, stateno != [5000, 5300])
trigger2 = !root, selfanimexist(root, anim)
value = 5010

[State 775, Pos]
type = bindtoroot
trigger1 = 1
time = 1
facing = -1
pos = 2 * (root, p2dist x), 0

[State 775, spr]
type = sprpriority
trigger1 = 1
value = 0
ignorehitpause = 1

[State 775, sts]
type = statetypeset
trigger1 = (root, movetype = A)
movetype = A
ignorehitpause = 1

[State 775, sts]
type = statetypeset
trigger1 = (root, movetype = H)
movetype = H
ignorehitpause = 1

[State 775, sts]
type = statetypeset
trigger1 = (root, movetype = I)
movetype = I
ignorehitpause = 1

[State 775, Strength]
type = varset
trigger1 = var(10) != root, var(10)
var(10) = root, var(10)

[State 775, hitreset]
type = movehitreset
trigger1 = !(root, movecontact)

[State 775, dampener]
type = attackmulset
trigger1 = 1
value = root, fvar(12)
ignorehitpause = 1




[State 775, FX]
type = explod
trigger1 = root, stateno = 1000
trigger1 = anim = 1000 && animelem = 1
anim = 1004
ID = 1004
sprpriority = 3
postype = p1
ownpal = 1

[State 775, SoulFist]
type = helper
trigger1 = root, stateno = 1000
trigger1 = anim = 1000 && animelem = 6
helpertype = normal
stateno = 1005
ID = 1005
name = "Soul Fist"
postype = p1
pos = 6, -50
size.xscale = 0.75
size.yscale = 0.75
ownpal = 1

[State 775, FX]
type = explod
trigger1 = root, stateno = 1050
trigger1 = anim = 1050 && animelem = 4
anim = 1054
ID = 1054
sprpriority = 3
postype = p1
bindtime = -1
removeongethit = 1
ownpal = 1

[State 775, SoulFist]
type = helper
trigger1 = root, stateno = 1050
trigger1 = anim = 1050 && animelem = 6
helpertype = normal
stateno = 1055
ID = 1055
name = "Soul Fist"
postype = p1
pos = 60, -48
size.xscale = 0.66
size.yscale = 0.66
ownpal = 1

[State 775, FX]
type = explod
trigger1 = root, stateno = 3000
trigger1 = anim = 3000 && animelem = 3
anim = 3004
ID = 3004
sprpriority = 3
postype = p1
bindtime = -1
removeongethit = 1
ownpal = 1

[State 775, SoulFist]
type = helper
trigger1 = root, stateno = 3000
trigger1 = anim = 3000 && animelem = 6
helpertype = normal
stateno = 3005
ID = 3005
name = "Soul Fist"
postype = p1
pos = 6, -50
size.xscale = 0.85
size.yscale = 0.85
ownpal = 1

[State 775, FX]
type = explod
trigger1 = root, stateno = 3050
trigger1 = anim = 3050 && animelem = 4
anim = 1054
ID = 1054
sprpriority = 3
postype = p1
bindtime = -1
removeongethit = 1
ownpal = 1

[State 775, SoulFist]
type = helper
trigger1 = root, stateno = 3050
trigger1 = anim = 3050 && animelem = 6
helpertype = normal
stateno = 3055
ID = 3055
name = "Soul Fist"
postype = p1
pos = 60, -48
size.xscale = 0.85
size.yscale = 0.85
ownpal = 1

[State 775, hit]
type = hitdef
trigger1 = (anim = [200, 201]) && animelem = 2
attr = S, NA
damage = 20, 0
animtype = Light
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 8, 8
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, ifelse((anim = 200), -82, -74)
hitsound = s2, 1
guardsound = s2, 0
ground.type = High
ground.slidetime = 10
ground.hittime = 10
ground.velocity = 0
air.type = Low
air.velocity = 0, -2
getpower = 0
givepower = 0
envshake.time = 9
envshake.freq = 60
envshake.ampl = 1
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 205 && animelem = 3
attr = S, NA
damage = 40, 0
animtype = Medium
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 10, 10
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -54
hitsound = s2, 1
guardsound = s2, 0
ground.type = High
ground.slidetime = 14
ground.hittime = 14
ground.velocity = 0
air.type = Low
air.velocity = 0, -3.5
getpower = 0
givepower = 0
envshake.time = 12
envshake.freq = 60
envshake.ampl = 2
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 206 && animelem = 4
attr = S, NA
damage = 44, 0
animtype = Medium
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 10, 10
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -62
hitsound = s2, 2
guardsound = s2, 0
ground.type = High
ground.slidetime = 14
ground.hittime = 14
ground.velocity = 0
air.type = Low
air.velocity = 0, -3.5
getpower = 0
givepower = 0
envshake.time = 12
envshake.freq = 60
envshake.ampl = 2
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 210 && animelem = 5
attr = S, NA
damage = 65, 0
animtype = Hard
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 4, 4
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -48
hitsound = s2, 3
guardsound = s2, 0
ground.type = Low
ground.slidetime = 18
ground.hittime = 18
ground.velocity = 0
air.type = Low
air.velocity = 0, -4.5
getpower = 0
givepower = 0
envshake.time = 14
envshake.freq = 60
envshake.ampl = 3
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 211 && animelem = 3
attr = S, NA
damage = 60, 0
animtype = Hard
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 12, 12
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -62
hitsound = s2, 9
guardsound = s2, 0
ground.type = Low
ground.slidetime = 18
ground.hittime = 18
ground.velocity = 0
air.type = Low
air.velocity = 0, -4.5
getpower = 0
givepower = 0
envshake.time = 14
envshake.freq = 60
envshake.ampl = 3
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 215 && animelem = 2
attr = S, NA
damage = 20, 0
animtype = Light
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 8, 8
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -15, -32
hitsound = s2, 4
guardsound = s2, 0
ground.type = High
ground.slidetime = 10
ground.hittime = 10
ground.velocity = 0
air.type = Low
air.velocity = 0, -2
getpower = 0
givepower = 0
envshake.time = 9
envshake.freq = 60
envshake.ampl = 1
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 220 && animelem = 4
attr = S, NA
damage = 40, 0
animtype = Medium
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 10, 10
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -53
hitsound = s2, 5
guardsound = s2, 0
ground.type = High
ground.slidetime = 14
ground.hittime = 14
ground.velocity = 0
air.type = Low
air.velocity = 0, -3.5
getpower = 0
givepower = 0
envshake.time = 12
envshake.freq = 60
envshake.ampl = 2
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 225 && animelem = 4
attr = S, NA
damage = 63, 0
animtype = Hard
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 12, 12
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -59
hitsound = s2, 9
guardsound = s2, 0
ground.type = High
ground.slidetime = 18
ground.hittime = 18
ground.velocity = 0
air.type = Low
air.velocity = 0, -4.5
getpower = 0
givepower = 0
envshake.time = 14
envshake.freq = 60
envshake.ampl = 3
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 226 && (animelem = 3 || animelem = 4 || animelem = 5)
attr = A, NA
damage = 13, 0
animtype = Hard
guardflag = HA
hitflag = MAF
priority = 4, Hit
pausetime = 6, 6
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, ifelse((animelem = 3), -96, ifelse((animelem = 4), -60, -90))
hitsound = s2, 5
guardsound = s2, 0
ground.type = High
ground.slidetime = 18
ground.hittime = 18
ground.velocity = 0
air.type = Low
air.velocity = 0, -3
getpower = 0
givepower = 0
envshake.time = 14
envshake.freq = 60
envshake.ampl = 3
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 226 && animelem = 6
attr = A, NA
damage = 30, 0
animtype = Hard
fall.animtype = Hard
guardflag = HA
hitflag = MAF
priority = 4, Hit
pausetime = 12, 12
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -59
hitsound = s2, 6
guardsound = s2, 0
ground.type = Low
ground.slidetime = 18
ground.hittime = 18
ground.velocity = 0
air.type = Low
air.velocity = 0, 9
air.fall = 1
fall.recover = 0
getpower = 0
givepower = 0
envshake.time = 14
envshake.freq = 60
envshake.ampl = 3
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 230 && (animelem = 2 || animelem = 3)
attr = C, NA
damage = 12, 0
animtype = Light
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 8, 8
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -36
hitsound = s2, 1
guardsound = s2, 0
ground.type = Low
ground.slidetime = 10
ground.hittime = 10
ground.velocity = 0
air.type = Low
air.velocity = 0, -2
down.velocity = 0, -2
getpower = 0
givepower = 0
envshake.time = 9
envshake.freq = 60
envshake.ampl = 1
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 235 && animelem = 2
attr = C, NA
damage = 43, 0
animtype = Medium
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 10, 10
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -29
hitsound = s2, 8
guardsound = s2, 0
ground.type = Low
ground.slidetime = 14
ground.hittime = 14
ground.velocity = 0
air.type = Low
air.velocity = 0, -3.5
down.velocity = 0, -3
getpower = 0
givepower = 0
envshake.time = 12
envshake.freq = 60
envshake.ampl = 2
persistent = 0
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = animelem = 4 && anim = 240
attr = C, NA
damage = 65, 0
animtype = Hard
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 12, 12
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -20, -32
hitsound = s2, 9
guardsound = s2, 0
ground.type = Low
ground.slidetime = 18
ground.hittime = 18
ground.velocity = 0
air.type = Low
air.velocity = 0, -4.5
getpower = 0
givepower = 0
envshake.time = 14
envshake.freq = 60
envshake.ampl = 3
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = animelem = 3 && anim = 241
attr = C, NA
damage = 65, 0
animtype = Hard
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 12, 12
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -20, -120
hitsound = s2, 9
guardsound = s2, 0
ground.type = Low
ground.slidetime = 18
ground.hittime = 18
ground.velocity = 0
air.type = Low
air.velocity = 0, -4.5
getpower = 0
givepower = 0
envshake.time = 14
envshake.freq = 60
envshake.ampl = 3
yaccel = 0.5 ?????

[State 775, hit]
type = hitdef
trigger1 = (anim = 245 || anim = 246) && animelem = 2
attr = C, NA
damage = 20, 0
animtype = Light
guardflag = L
hitflag = MAF
priority = 4, Hit
pausetime = 8, 8
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, ifelse((anim = 245), -4, -17)
hitsound = s2, 4
guardsound = s2, 0
ground.type = Low
ground.slidetime = 10
ground.hittime = 10
ground.velocity = 0
air.type = Low
air.velocity = 0, -2
down.velocity = 0, -2
getpower = 0
givepower = 0
envshake.time = 9
envshake.freq = 60
envshake.ampl = 1
yaccel = 0.5 ?????

[State 775, hit]
type = hitdef
trigger1 = (anim = 250 || anim = 251) && animelem = 2
attr = S, NA
damage = 40, 0
animtype = Medium
guardflag = L
hitflag = MAF
priority = 4, Hit
pausetime = 10, 10
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, ifelse((anim = 250), -14, -31)
hitsound = s2, 5
guardsound = s2, 0
ground.type = Low
ground.slidetime = 14
ground.hittime = 14
ground.velocity = 0
air.type = Low
air.velocity = 0, -3.5
down.velocity = 0, -3
getpower = 0
givepower = 0
envshake.time = 12
envshake.freq = 60
envshake.ampl = 2
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 255 && animelem = 4
attr = C, NA
damage = 60, 0
animtype = Hard
guardflag = L
hitflag = MAF
priority = 4, Hit
pausetime = 12, 12
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -15, -30
hitsound = s2, 6
guardsound = s2, 0
ground.type = Trip
ground.slidetime = 18
ground.hittime = 18
ground.velocity = 0, -3
air.type = Trip
air.velocity = 0, -3
getpower = 0
givepower = 0
envshake.time = 14
envshake.freq = 60
envshake.ampl = 3
ground.cornerpush.veloff = 0
guard.velocity = 0
guard.cornerpush.veloff = 0
fall = 1
yaccel = 0.5




[State 775, hit]
type = hitdef
trigger1 = anim = 260 && animelem = 2
attr = A, NA
damage = 20, 0
animtype = Light
guardflag = HA
hitflag = MAF
priority = 4, Hit
pausetime = 8, 8
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -43
hitsound = s2, 1
guardsound = s2, 0
ground.type = High
ground.slidetime = 10
ground.hittime = 10
ground.velocity = 0
air.type = Low
air.velocity = 0, -5
getpower = 0
givepower = 0
envshake.time = 9
envshake.freq = 60
envshake.ampl = 1
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 265 && animelem = 3
attr = A, NA
damage = 40, 0
animtype = Medium
guardflag = HA
hitflag = MAF
priority = 4, Hit
pausetime = 10, 10
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -48
hitsound = s2, 8
guardsound = s2, 0
ground.type = High
ground.slidetime = 14
ground.hittime = 14
ground.velocity = 0
air.type = Low
air.velocity = 0, -5
getpower = 0
givepower = 0
envshake.time = 12
envshake.freq = 60
envshake.ampl = 2
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 270 && animelem = 6
attr = A, NA
damage = 60, 0
animtype = Hard
guardflag = HA
hitflag = MAF
priority = 4, Hit
pausetime = 12, 12
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -66
hitsound = s2, 3
guardsound = s2, 0
ground.type = High
ground.slidetime = 18
ground.hittime = 18
ground.velocity = 0
air.type = Low
air.velocity = 0, -5
getpower = 0
givepower = 0
envshake.time = 14
envshake.freq = 60
envshake.ampl = 3
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = (anim = [275, 276]) && animelem = 2
attr = A, NA
damage = 20, 0
animtype = Light
guardflag = HA
hitflag = MAF
priority = 4, Hit
pausetime = 8, 8
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, ifelse((anim = 275), -42, -62)
hitsound = s2, 4
guardsound = s2, 0
ground.type = High
ground.slidetime = 10
ground.hittime = 10
ground.velocity = 0
air.type = High
air.velocity = 0, -5
getpower = 0
givepower = 0
envshake.time = 9
envshake.freq = 60
envshake.ampl = 1
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 280 && animelem = 3
attr = A, NA
damage = 40, 0
animtype = Medium
guardflag = HA
hitflag = MAF
priority = 4, Hit
pausetime = 10, 10
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -47
hitsound = s2, 5
guardsound = s2, 0
ground.type = High
ground.slidetime = 14
ground.hittime = 14
ground.velocity = 0
air.type = High
air.velocity = 0, -5
getpower = 0
givepower = 0
envshake.time = 12
envshake.freq = 60
envshake.ampl = 2
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = anim = 285 && animelem = 3
attr = A, NA
damage = 60, 0
animtype = Hard
guardflag = HA
hitflag = MAF
priority = 4, Hit
pausetime = 12, 12
sparkno = s7010 + (random % 8)
guard.sparkno = s7000
sparkxy = -10, -54
hitsound = s2, 6
guardsound = s2, 0
ground.type = High
ground.slidetime = 18
ground.hittime = 18
ground.velocity = 0
air.type = Low
air.velocity = 0, -5
getpower = 0
givepower = 0
envshake.time = 14
envshake.freq = 60
envshake.ampl = 3
yaccel = 0.5

[State 775, hit]
type = hitdef
trigger1 = (animelem = 2 || animelem = 3) && anim = 1100
trigger1 = !movecontact && !movereversed
attr = S, SA
damage = 104 + (7 * var(10)), 0
animtype = Back
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 12 / ((var(40) > 0) + 1), 12 / ((var(40) > 0) + 1)
sparkno = s7020 + (random % 8)
guard.sparkno = s7001
sparkxy = -10, ifelse((animelem = 2), -35, -60)
hitsound = s2, 9
guardsound = s2, 0
ground.type = Low
ground.slidetime = 22
ground.hittime = 22
ground.velocity = 0, -6 -var(10)
air.type = Low
air.velocity = 0, -6 -var(10)
getpower = 0
givepower = 0
envshake.time = 16
envshake.freq = 60
envshake.ampl = 4
ground.cornerpush.veloff = 0
guard.velocity = 0
guard.cornerpush.veloff = 0
fall = 1
fall.recover = 0
fall.animtype = Medium
yaccel = 0.5
forcestand = 1

[State 775, hit2]
type = hitdef
trigger1 = animelem = 4 && anim = 1100
trigger1 = !movecontact && !movereversed
attr = A, SA
damage = 83, 0
animtype = Back
guardflag = HA
hitflag = MAF
priority = 4, Hit
pausetime = 12 / ((var(40) > 0) + 1), 12 / ((var(40) > 0) + 1)
sparkno = s7020 + (random % 8)
guard.sparkno = s7001
sparkxy = -10, -100
hitsound = s2, 9
guardsound = s2, 0
ground.type = High
ground.slidetime = 22
ground.hittime = 22
ground.velocity = 0, -6 -var(10)
air.type = Low
air.velocity = 0, -6 -var(10)
getpower = 0
givepower = 0
envshake.time = 16
envshake.freq = 60
envshake.ampl = 4
ground.cornerpush.veloff = 0
guard.velocity = 0
guard.cornerpush.veloff = 0
fall = 1
fall.recover = 0
yaccel = 0.5
forcestand = 1

[State 775, hit]
type = hitdef
trigger1 = (animelem = 2 || animelem = 3) && anim = 3100
attr = S, HA
damage = 25, 0
animtype = Back
guardflag = M
hitflag = MAFD
priority = 4, Hit
pausetime = 3, 4
sparkno = s7020 + (random % 8)
guard.sparkno = s7001
sparkxy = -10, ifelse((animelem = 2), -35, -60)
hitsound = s2, 9
guardsound = s2, 0
ground.type = Low
ground.slidetime = 22
ground.hittime = 22
ground.velocity = 0, -10
air.type = Low
air.velocity = 0, -10
down.hittime = 20
down.velocity = 0, 0
getpower = 0
givepower = 0
envshake.time = 16
envshake.freq = 60
envshake.ampl = 5
ground.cornerpush.veloff = 0
guard.velocity = 0
guard.cornerpush.veloff = 0
fall = 1
fall.recover = 0
fall.animtype = Medium
yaccel = 0.5
forcestand = 1

[State 775, hit2]
type = hitdef
trigger1 = (animelem = 4 || animelem = 6 || animelem = 8 || animelem = 9 || animelem = 10 || animelem = 11) && anim = 3100
attr = A, HA
damage = 25, 0
animtype = Up
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = ifelse((animelem = 11), 15, 3), ifelse((animelem = 11), 15, 3)
sparkno = s7020 + (random % 8)
guard.sparkno = s7001
sparkxy = -10, -100
hitsound = s2, 9
guardsound = s2, 0
ground.type = High
ground.slidetime = 22
ground.hittime = 22
ground.velocity = 0, -10
air.type = Low
air.velocity = 0, -10
down.velocity = 0, 0
getpower = 0
givepower = 0
envshake.time = 16
envshake.freq = 60
envshake.ampl = 5
ground.cornerpush.veloff = 0
guard.velocity = 0
guard.cornerpush.veloff = 0
fall = 1
fall.recover = 0
yaccel = 0.5
forcestand = 1

[State 775, hit]
type = hitdef
trigger1 = anim = 3402 && !(time % 3) && hitcount <= 13
trigger1 = var(11) := 1 && var(12) := -43
attr = A, HA
damage = 18, 0
animtype = Hard
air.animtype = Back
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 6, 6
sparkno = s7030 + (random % 8)
guard.sparkno = s7001
sparkxy = -10, -43
hitsound = s2, 9
guardsound = s2, 0
ground.type = High
ground.slidetime = 32
ground.hittime = 32
ground.velocity = 0, 0
air.type = Low
air.velocity = 0, -2
air.fall = 1
fall.recover = 0
getpower = 0
givepower = 0
envshake.time = 16
envshake.freq = 60
envshake.ampl = 5
yaccel = 0.5
forcestand = 1

[State 775, End]
type = changestate
trigger1 = root, var(40) <= 0
value = 779