Previous parts:
Part 1: Basic Movements
Part 2: Run, Dash, Evade, Power Charge, Zero Counter, Parry
Part 3: Custom Combo, Recovery, Guard
Part 4: Lose and Intro animations
Part 5: Constants, Win animations, Taunts
Part 6: Universal Helpers
Greetings! It took a bit more time to write this, 'cause I'm working full-time again and I have less time to do mugen related stuff. Which may be for the best, actually. Although mugen is one of my tools to deal with stress and relax a bit, I was starting to overwork myself with this project. So, I'll take this with the due timing to avoid the feeling of burnout that killed many a project.
The System.st file is almost done. The remaining parts are the Statedefs -2 and -3, which redirect to many other states I haven't even looked at yet. That's why I'll leave that part for later. Today, I'll be starting to deal with the universal, P.o.t.S-trademarked helpers. I'll deal with Ryu's unique helpers as I deal with the associate moves.
Being this stuff universally used to make a character "look P.o.t.S-ish", this will be obviously mostly a copypaste job. However, I'll try to highlight the differences between Jmorphman's codes (which I'm taking as a template) and variations whenever I can. This may be boring, but you may find it useful as a template if you want to understand why a character has bigger/different sparks and this bothers you (which does it for me).
PARRY HELPERS
In most recent P.o.t.S characters, the file starts with these. Not Ryu, though. Actually, the geography of this file is very different, so we'll be pretty much remaking it.
Spoiler, click to toggle visibilty
; _________________________________________
;| Ryu by Phantom.of.the.Server |
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
;==============================================================================================
;=======================================<HELPER STATES>========================================
;==============================================================================================
;====================<PARRY HELPER>=========================
[StateDef 765]
type = A
physics = N
moveType = I
anim = ifElse(Root, StateType = C, 766, ifElse(Root, StateType = A, 767, 765))
velSet = 0,0
ctrl = 0
; These animations are nothing more than blanks with hitboxes.
[State 765, NotHitBy]
type = NotHitBy
trigger1 = 1
value = SCA
[State 765, BindToRoot]
type = BindToRoot
trigger1 = 1
time = -1
[State 765, Change to Crouching]
type = ChangeAnim
triggerAll = !Time
trigger1 = !(Root, AILevel) && Root, command = "down"
trigger2 = Root, AILevel && (Root, StateType != A) && P2StateType = C
value = 766
[State 765, Change to Standing / Jumping]
type = ChangeAnim
triggerAll = !Time
trigger1 = !(Root, AILevel) && Root, command = "fwd"
trigger2 = Root, AILevel && Anim != 766
value = ifElse((Root, StateType = A), 767, 765)
[State 765, Change to Standing / Jumping]
type = ChangeAnim
trigger1 = Anim = 765 || Anim = 767
value = ifElse((Root, StateType = A), 767, 765)
[State 765, Disable]
type = VarSet
trigger1 = Time >= ifElse((Root, StateType = A), 7, 8)
trigger2 = Facing != (Root, Facing)
trigger3 = !(Root, ctrl)
trigger3 = (Root, StateNo != [760,762]) && (Root, StateNo != 5120)
var(0) = 1
[State 765, Disable]
type = VarSet
triggerAll = !(Root, AILevel)
trigger1 = (Root, command = "holdback")
trigger2 = Time < 4 && (Root, command = "holdfwd" + Root, command = "holddown") > 1
trigger3 = Time >= 4 && (Root, command = "holdfwd" || Root, command = "holddown")
trigger4 = Time >= 1 && (((Anim = 765 || Anim = 767) && Root, command = "fwd") || (Anim = 766 && Root, command = "down"))
var(0) = 1
[State 765, Disable]
type = ChangeAnim
trigger1 = var(0) = 1
value = 1
[State 765, Standing/Air]
type = ReversalDef
trigger1 = !var(0) && (Anim = 765 || Anim = 767)
trigger1 = (Root, StateNo != 5120) || !(Root, AnimTime)
reversal.attr = SCA,AA
p1StateNo = 766
pauseTime = 0,0
sparkNo = -1
numHits = 0
[State 765, Crouching]
type = ReversalDef
trigger1 = !var(0) && Anim = 766
reversal.attr = SC,AA
p1StateNo = 766
pauseTime = 0,0
sparkNo = -1
numHits = 0
[State 765, Disable]
type = ReversalDef
trigger1 = var(0) = 1
reversal.attr =
pauseTime = 0,0
sparkNo = -1
numHits = 0
[State 765, End]
type = DestroySelf
trigger1 = Time >= 18
trigger2 = (Root, MoveType != I)
trigger3 = !(Root, ctrl) && (Root, StateNo != [760,762]) && (Root, StateNo != 5120)
trigger4 = (Root, StateNo = [760,762]) && (Root, Time <= 1)
;Success
[StateDef 766]
moveType = I
ctrl = 0
[State 766, Disable]
type = VarSet
trigger1 = 1
var(0) = 1
[State 766, End]
type = DestroySelf
trigger1 = Root, StateNo = [760,762]
trigger2 = Time >= 2
Gotta be honest, I'm not really sure what's happening here. At first I thought this coded for the blue thingy, but then I realized it's just an explod (which I'm putting here under). Does this code decide the area of action of the parry itself?
Spoiler, click to toggle visibilty
;Standing Parry CLSN
[Begin Action 765]
Clsn1: 1
Clsn1[0] = -19, -88, 18, -32
-1,-1, 0,0, -1
;Crouching Parry CLSN
[Begin Action 766]
Clsn1: 1
Clsn1[0] = -23, -32, 18, 0
-1,-1, 0,0, -1
;Jumping Parry CLSN
[Begin Action 767]
Clsn1: 1
Clsn1[0] = -21, -102, 26, -34
-1,-1, 0,0, -1
;Parry FX
[Begin Action 8360]
8360,0, 0,0, 1,, A
8360,1, 0,0, 1,, A
8360,2, 0,0, 1,, A
8360,3, 0,0, 1,, A
8360,4, 0,0, 1,, A
8360,5, 0,0, 1,, A
8360,6, 0,0, 1,, A
8360,7, 0,0, 1,, A
8360,8, 0,0, 1,, A
8360,9, 0,0, 1,, A
8360,10, 0,0, 1,, A
8360,11, 0,0, 1,, A
8360,12, 0,0, 1,, A
8360,13, 0,0, 1,, A
8360,14, 0,0, 1,, A
8360,15, 0,0, 1,, A
8360,16, 0,0, 1,, A
8360,17, 0,0, 1,, A
8360,18, 0,0, 1,, A
8360,19, 0,0, 1,, A
After this part usually go the unique helpers of the character, such as projectiles and stuff. We'll jump ahead.
GUARD SPARKS
Most of the stuff that follows is identical from a character to the other. As it should be, if you're an OCD fella and want your roster to look like it comes from the same actual game.
Guard sparks are pretty conserved between character even in different "P.o.t.S sub-styles", the only difference I found are the scales. I'm keeping those I'm finding on Jmorphman's characters.
Spoiler, click to toggle visibilty
;========================<SPARKS>=============================
;Guard Spark (Normal)
[StateDef 8000]
type = A
physics = N
moveType = I
anim = 8000
velset = 0,0
sprPriority = 5
[State 8000, Assert: No Shadow]
type = AssertSpecial
trigger1 = 1
flag = NoShadow
ignoreHitPause = 1
[State 8000, Scale]
type = AngleDraw
trigger1 = 1
scale = 0.125 + (0.046875 * Time), 0.125 + (0.046875 * Time)
ignoreHitPause = 1
[State 8000, Transparency]
type = Trans
trigger1 = Time < 4
trans = AddAlpha
alpha = 256, 256
ignoreHitPause = 1
[State 8000, Transparency]
type = Trans
trigger1 = Time >= 4
trans = AddAlpha
alpha = 256 - 64 * (Time - 4), 256
ignoreHitPause = 1
[State 8000, End]
type = DestroySelf
trigger1 = Time >= 8
;Guard Spark (Special)
[StateDef 8001]
type = A
physics = N
moveType = I
anim = 8001
velSet = 0,0
sprPriority = 5
[State 8001, Assert: NoShadow]
type = AssertSpecial
trigger1 = 1
flag = NoShadow
ignoreHitPause = 1
[State 8001, Scale]
type = AngleDraw
trigger1 = 1
scale = 0.25 + (0.03125 * Time), 0.25 + (0.03125 * Time)
ignoreHitPause = 1
[State 8001, Transparency]
type = Trans
trigger1 = time < 4
trans = AddAlpha
alpha = 256, 256
ignoreHitPause = 1
[State 8001, Transparency]
type = Trans
trigger1 = Time >= 4
trans = AddAlpha
alpha = 256 - 64 * (Time - 4), 256
ignoreHitPause = 1
[State 8001, End]
type = DestroySelf
trigger1 = Time >= 8
Spoiler, click to toggle visibilty
;Guard Spark (Normal)
[Begin Action 8000]
8000,0, 0,0, 1,, A
;Guard Spark (Special)
[Begin Action 8001]
8001,0, 0,0, 1,, A
HIT SPARKS
The only difference between weak, medium and strong hitsparks are the scales, but these can change between authors.
Spoiler, click to toggle visibilty
;Weak Hit Spark
[StateDef 8010]
type = A
physics = N
moveType = I
anim = 8010
velSet = 0,0
sprPriority = 5
[State 8010, Assert: NoShadow]
type = AssertSpecial
trigger1 = 1
flag = NoShadow
ignoreHitPause = 1
[State 8010, AngleSet]
type = AngleSet
trigger1 = !Time
value = 30 * (Random % 12)
[State 8010, AngleAdd]
type = AngleAdd
trigger1 = 1
value = 30
[State 8010, Scale]
type = AngleDraw
trigger1 = Time < 10
scale = (0.3 - (Time * 0.03)) * 0.65, (0.3 - (Time * 0.03)) * 0.65
ignoreHitPause = 1
[State 8010, Scale]
type = AngleDraw
trigger1 = Time >= 10
scale = 0,0
ignoreHitPause = 1
[State 8010, Transparency]
type = Trans
trigger1 = 1
trans = AddAlpha
alpha = 256,256
ignoreHitPause = 1
[State 8010, Center Explod]
type = Explod
trigger1 = !Time
anim = 8011
ID = 1
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 5
removeTime = 16
pauseMoveTime = -1
superMoveTime = -1
[State 8010, Scale Center Explod]
type = ModifyExplod
trigger1 = NumExplod(1)
ID = 1
scale = (0.15 + (0.009375 * Time)) * 0.65, (0.15 + (0.009375 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (16 * Time),256
[State 8010, Streaks Explod]
type = Explod
trigger1 = !Time
anim = 8012
ID = 2
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 5
removeTime = 16
pauseMoveTime = -1
superMoveTime = -1
[State 8010, Scale Streaks Explod]
type = ModifyExplod
trigger1 = NumExplod(2)
ID = 2
scale = (0.15 + (0.009375 * Time)) * 0.65, (0.15 + (0.009375 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8010, Impact Explod]
type = Explod
trigger1 = !Time
anim = 8014
ID = 4
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 3
removeTime = 8
pauseMoveTime = -1
superMoveTime = -1
[State 8010, Scale Impact Explod]
type = ModifyExplod
trigger1 = NumExplod(4)
ID = 4
scale = (0.3 - (0.0375 * Time)) * 0.65, (0.3 - (0.0375 * Time)) * 0.65
trans = AddAlpha
alpha = 128 - (16 * Time), 256
[State 8010, Remove Explods]
type = RemoveExplod
trigger1 = Time >= 16
[State 8010, End]
type = DestroySelf
trigger1 = Time >= 16
;Medium Hit Spark
[StateDef 8011]
type = A
physics = N
moveType = I
anim = 8010
velSet = 0,0
sprPriority = 5
[State 8011, Assert: NoShadow]
type = AssertSpecial
trigger1 = 1
flag = NoShadow
ignoreHitPause = 1
[State 8011, AngleSet]
type = AngleSet
trigger1 = !Time
value = 30 * (Random % 12)
[State 8011, AngleAdd]
type = AngleAdd
trigger1 = 1
value = 30
[State 8011, Scale]
type = AngleDraw
trigger1 = Time < 10
scale = (0.35 - (Time * 0.035)) * 0.65, (0.35 - (Time * 0.035)) * 0.65
ignoreHitPause = 1
[State 8011, Scale]
type = AngleDraw
trigger1 = Time >= 10
scale = 0,0
ignoreHitPause = 1
[State 8011, Transparency]
type = Trans
trigger1 = 1
trans = AddAlpha
alpha = 256,256
ignoreHitPause = 1
[State 8011, Center]
type = Explod
trigger1 = !Time
anim = 8011
ID = 1
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 5
removetime = 16
pauseMoveTime = -1
superMoveTime = -1
[State 8011, Scale Center Explod]
type = ModifyExplod
trigger1 = NumExplod(1)
ID = 1
scale = (0.175 + (0.0109375 * Time)) * 0.65, (0.175 + (0.0109375 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8011, Streaks Explod]
type = Explod
trigger1 = !Time
anim = 8012
ID = 2
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 5
removeTime = 16
pauseMoveTime = -1
superMoveTime = -1
[State 8011, Scale Streaks Explod]
type = ModifyExplod
trigger1 = NumExplod(2)
ID = 2
scale = (0.175 + (0.0109375 * Time)) * 0.65, (0.175 + (0.0109375 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8011, Impact Explod]
type = Explod
trigger1 = !Time
anim = 8014
ID = 4
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 3
removeTime = 8
pauseMoveTime = -1
superMoveTime = -1
[State 8011, Scale Impact Explod]
type = ModifyExplod
trigger1 = NumExplod(4)
ID = 4
scale = (0.35 - (0.04375 * Time)) * 0.65, (0.35 - (0.04375 * Time)) * 0.65
trans = AddAlpha
alpha = 128 - (16 * Time), 256
[State 8011, Remove Explods]
type = RemoveExplod
trigger1 = Time >= 16
[State 8011, End]
type = DestroySelf
trigger1 = Time >= 16
;Strong Hit Spark
[StateDef 8012]
type = A
physics = N
moveType = I
anim = 8010
velSet = 0,0
sprPriority = 5
[State 8012, Assert: NoShadow]
type = AssertSpecial
trigger1 = 1
flag = NoShadow
ignoreHitPause = 1
[State 8012, AngleSet]
type = AngleSet
trigger1 = !Time
value = 30 * (Random % 12)
[State 8012, AngleAdd]
type = AngleAdd
trigger1 = 1
value = 30
[State 8012, Scale]
type = AngleDraw
trigger1 = Time < 10
scale = (0.4 - (Time * 0.04)) * 0.65, (0.4 - (Time * 0.04)) * 0.65
ignoreHitPause = 1
[State 8012, Scale]
type = AngleDraw
trigger1 = Time >= 10
scale = 0,0
ignoreHitPause = 1
[State 8012, Transparency]
type = Trans
trigger1 = 1
trans = AddAlpha
alpha = 256,256
ignoreHitPause = 1
[State 8012, Center Explod]
type = Explod
trigger1 = !Time
anim = 8011
ID = 1
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 5
removeTime = 16
pauseMoveTime = -1
superMoveTime = -1
[State 8012, Scale Center Explod]
type = ModifyExplod
trigger1 = NumExplod(1)
ID = 1
scale = (0.2 + (0.0125 * Time)) * 0.65, (0.2 + (0.0125 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8012, Streaks Explod]
type = Explod
trigger1 = !time
anim = 8012
ID = 2
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 5
removeTime = 16
pauseMoveTime = -1
superMoveTime = -1
[State 8012, Scale Streaks Explod]
type = ModifyExplod
trigger1 = NumExplod(2)
ID = 2
scale = (0.2 + (0.0125 * Time)) * 0.65, (0.2 + (0.0125 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8012, Impact Explod]
type = Explod
trigger1 = !Time
anim = 8014
ID = 4
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 3
removeTime = 8
pauseMoveTime = -1
superMoveTime = -1
[State 8012, Scale Impact Explod]
type = ModifyExplod
trigger1 = NumExplod(4)
ID = 4
scale = (0.4 - (0.05 * Time)) * 0.65, (0.4 - (0.05 * Time)) * 0.65
trans = AddAlpha
alpha = 128 - (16 * Time), 256
[State 8012, Remove Explods]
type = RemoveExplod
trigger1 = Time >= 16
[State 8012, End]
type = DestroySelf
trigger1 = Time >= 16
I'm putting the axis coordinates (for these sprites themselves, not the animations), since they aren't centered (except the last).
Spoiler, click to toggle visibilty
;Hit Spark
[Begin Action 8010]
8010,0, 0,0, 1,, A
X axis: 279 - Y axis: 284
;Hit Spark Center
[Begin Action 8011]
8011,0, 0,0, 1,, A
X axis: 205 - Y axis: 211
;Hit Spark Streaks
[Begin Action 8012]
8012,0, 0,0, 1,, A
X axis: 292 - Y axis: 256
;Hit Spark (Special)
[Begin Action 8013]
8013,0, 0,0, 1,, A
X axis: 10 - Y axis: 241
(we don't actually need this one yet, but who cares)
;Hit Spark Impact
[Begin Action 8014]
8014,0, 0,0, 1,, A
X axis: 136 - Y axis: 132
SPECIAL/SUPER HIT SPARKS
Authors such as Infinite and DW use colored hitsparks for the special moves and supers, whereas "classic" authors just resize them further. If you are paying attention you already know I'll be opting for the latter option.
Spoiler, click to toggle visibilty
;Special Move Hit Spark
[StateDef 8013]
type = A
physics = N
moveType = I
anim = 8010
velSet = 0,0
sprPriority = 5
[State 8013, Assert: NoShadow]
type = AssertSpecial
trigger1 = 1
flag = NoShadow
ignoreHitPause = 1
[State 8013, AngleSet]
type = AngleSet
trigger1 = !Time
value = 30 * (Random % 12)
[State 8013, AngleAdd]
type = AngleAdd
trigger1 = 1
value = 30
[State 8013, Scale]
type = AngleDraw
trigger1 = Time < 10
scale = (0.45 - (Time * 0.045)) * 0.65, (0.45 - (Time * 0.045)) * 0.65
ignoreHitPause = 1
[State 8012, Scale]
type = AngleDraw
trigger1 = Time >= 10
scale = 0,0
ignoreHitPause = 1
[State 8013, Transparency]
type = Trans
trigger1 = 1
trans = AddAlpha
alpha = 256,256
ignoreHitPause = 1
[State 8013, Center Explod]
type = Explod
trigger1 = !Time
anim = 8011
ID = 1
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 5
removeTime = 16
pauseMoveTime = -1
superMoveTime = -1
[State 8013, Scale Center Explod]
type = ModifyExplod
trigger1 = NumExplod(1)
ID = 1
scale = (0.225 + (0.0140625 * Time)) * 0.65, (0.225 + (0.0140625 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8013, Streaks Explod]
type = Explod
trigger1 = !Time
anim = 8012
ID = 2
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 5
removeTime = 16
pauseMoveTime = -1
superMoveTime = -1
[State 8013, Scale Streaks Explod]
type = ModifyExplod
trigger1 = NumExplod(2)
ID = 2
scale = (0.225 + (0.0140625 * Time)) * 0.65, (0.225 + (0.0140625 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8013, P2 Back Explod]
type = Explod
trigger1 = !Time
anim = 8013
ID = 3
posType = P1
facing = -1
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = -3
removeTime = 8
pauseMoveTime = -1
superMoveTime = -1
[State 8013, Scale P2 Back Explod]
type = ModifyExplod
trigger1= NumExplod(3)
ID = 3
scale = (0.4) * 0.65, (0.4) * 0.65
trans = AddAlpha
alpha = 256 - (32 * Time), 256
[State 8013, Impact Explod]
type = Explod
trigger1 = !Time
anim = 8014
ID = 4
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority=3
removeTime=8
pauseMoveTime = -1
superMoveTime = -1
[State 8013, Scale Impact Explod]
type = ModifyExplod
trigger1 = NumExplod(4)
ID = 4
scale = (0.45 - (0.05625 * Time)) * 0.65, (0.45 - (0.05625 * Time)) * 0.65
trans = AddAlpha
alpha = 192 - (24 * Time), 256
[State 8013, Remove Explods]
type = RemoveExplod
trigger1 = Time >= 16
[State 8013, End]
type = DestroySelf
trigger1 = Time >= 16
;Super Hit Spark
[StateDef 8014]
type = A
physics = N
moveType = I
anim = 8010
velSet = 0,0
sprPriority = 5
[State 8014, Assert: NoShadow]
type = AssertSpecial
trigger1 = 1
flag = NoShadow
ignoreHitPause = 1
[State 8014, AngleSet]
type = AngleSet
trigger1 = !Time
value = 30 * (Random % 12)
[State 8014, AngleAdd]
type = AngleAdd
trigger1 = 1
value = 30
[State 8014, Scale]
type = AngleDraw
trigger1 = Time < 10
scale = (0.5 - (Time * 0.05)) * 0.65, (0.5 - (Time * 0.05)) * 0.65
ignoreHitPause = 1
[State 8014, Scale]
type = AngleDraw
trigger1 = Time >= 10
scale = 0,0
ignoreHitPause = 1
[State 8014, Transparency]
type = Trans
trigger1 = 1
trans = AddAlpha
alpha = 256,256
ignoreHitPause = 1
[State 8014, Center Explod]
type = Explod
trigger1 = !Time
anim = 8011
ID = 1
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 5
removeTime = 16
pauseMoveTime = -1
superMoveTime = -1
[State 8014, Scale Center Explod]
type = ModifyExplod
trigger1 = NumExplod(1)
ID = 1
scale = (0.25 + (0.015625 * Time)) * 0.65, (0.25 + (0.015625 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8014, Streaks Explod]
type = Explod
trigger1 = !Time
anim = 8012
ID = 2
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 5
removeTime = 16
pauseMoveTime = -1
superMoveTime = -1
[State 8014, Scale Streaks Explod]
type = ModifyExplod
trigger1 = NumExplod(2)
ID = 2
scale = (0.25 + (0.015625 * Time)) * 0.65, (0.25 + (0.015625 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8014, P2 Back Explod]
type = Explod
trigger1 = !Time
anim = 8013
ID = 3
posType = P1
facing = ifElse((Parent, StateNo = [3000,3999]), -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = -3
removeTime = 8
pauseMoveTime = -1
superMoveTime = -1
[State 8014, Scale P2 Back Explod]
type = ModifyExplod
trigger1 = NumExplod(3)
ID = 3
scale = (0.5) * 0.65, (0.5) * 0.65
trans = AddAlpha
alpha = 256 - (32 * Time), 256
[State 8014, Impact Explod]
type = Explod
trigger1 = !Time
anim = 8014
ID = 4
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 3
removeTime = 8
pauseMoveTime = -1
superMoveTime = -1
[State 8014, Scale Impact Explod]
type = ModifyExplod
trigger1 = NumExplod(4)
ID = 4
scale = (0.5 - (0.0625 * Time)) * 0.65, (0.5 - (0.0625 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (32 * Time),256
[State 8014, Remove Explods]
type = RemoveExplod
trigger1 = time >= 16
[State 8014, End]
type = DestroySelf
trigger1 = Time >= 16
SLASH SPARKS
Ryu doesn't really need those since he doesn't have slashing attacks of sorts (as far as I know), but I'll put them anyway because why not?
These follow the same rules as normal sparks, except the scales are a lot more anarchic between authors.
Spoiler, click to toggle visibilty
;Normal Slash Spark
[StateDef 8015]
type = A
physics = N
moveType = I
anim = 8015
velSet = 0,0
sprPriority = 5
[State 8015, Assert: NoShadow]
type = AssertSpecial
trigger1 = 1
flag = NoShadow
ignoreHitPause = 1
[State 8015, AngleSet]
type = AngleSet
trigger1 = !Time
value = 15 * (Random % 24)
[State 8015, Scale]
type = AngleDraw
trigger1 = Time < 10
scale = ((0.5 + (Time * 0.15)) / 2) * 0.65, ((1 - (Time * 0.1)) / 2) * 0.65
ignoreHitPause = 1
[State 8015, Scale]
type = AngleDraw
trigger1 = Time >= 10
scale = 0,0
ignoreHitPause = 1
[State 8015, Transparency]
type = Trans
trigger1 = 1
trans = AddAlpha
alpha = 256,256
ignoreHitPause = 1
[State 8015, Streaks Explod]
type = Explod
trigger1 = !time
anim = 8012
ID = 2
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 5
removeTime = 16
pauseMoveTime = -1
superMoveTime = -1
[State 8015, Scale Streaks Explod]
type = ModifyExplod
trigger1 = NumExplod(2)
ID = 2
scale = (0.2 + (0.0125 * Time)) * 0.65, (0.2 + (0.0125 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8015, Remove Explods]
type = RemoveExplod
trigger1 = Time >= 16
[State 8015, End]
type = DestroySelf
trigger1 = Time >= 16
;Special Move Slash Spark
[StateDef 8016]
type = A
physics = N
moveType = I
anim = 8015
velSet = 0,0
sprPriority = 5
[State 8016, Assert: NoShadow]
type = AssertSpecial
trigger1 = 1
flag = NoShadow
ignoreHitPause = 1
[State 8016, AngleSet]
type = AngleSet
trigger1 = !Time
value = 15 * (Random % 24)
[State 8016, Scale]
type = AngleDraw
trigger1 = Time < 10
scale = ((0.5 + (Time * 0.15)) / 2) * 0.65, ((1 - (Time * 0.1)) / 2) * 0.65
ignoreHitPause = 1
[State 8016, Scale]
type = AngleDraw
trigger1 = Time >= 10
scale = 0,0
ignoreHitPause = 1
[State 8016, Transparency]
type = Trans
trigger1 = 1
trans = AddAlpha
alpha = 256,256
ignoreHitPause = 1
[State 8016, Circle]
type = Explod
trigger1 = !Time
anim = 8016
ID = 8016
posType = p1
removeTime = 10
sprPriority = 5
pauseMoveTime = -1
superMoveTime = -1
[State 8016, Circle Scale]
type = ModifyExplod
trigger1 = NumExplod(8016)
ID = 8016
scale = (0.25 + (0.025 * Time)) * 0.65, (0.25 + (0.025 * Time)) * 0.65
trans = AddAlpha
alpha = ceil(256 - 25.6 * Time), 256
[State 8016, Streaks Explod]
type = Explod
trigger1 = !Time
anim = 8012
ID = 2
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 5
removeTime = 16
pauseMoveTime = -1
superMoveTime = -1
[State 8016, Scale Streaks Explod]
type = ModifyExplod
trigger1 = NumExplod(2)
ID = 2
scale = (0.225 + (0.0140625 * Time)) * 0.65, (0.225 + (0.0140625 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8016, Remove Explods]
type = RemoveExplod
trigger1 = Time >= 16
[State 8016, End]
type = DestroySelf
trigger1 = Time >= 16
;Super Move Slash Spark
[StateDef 8017]
type = A
physics = N
moveType = I
anim = 8015
velSet = 0,0
sprPriority = 5
[State 8017, Assert: NoShadow]
type = AssertSpecial
trigger1 = 1
flag = NoShadow
ignoreHitPause = 1
[State 8017, AngleSet]
type = AngleSet
trigger1 = !Time
value = 15 * (Random % 24)
[State 8017, Scale]
type = AngleDraw
trigger1 = Time < 10
scale = ((0.5 + (Time * 0.15)) / 2) * 0.65, ((1 - (Time * 0.1)) / 2) * 0.65
ignoreHitPause = 1
[State 8017, Scale]
type = AngleDraw
trigger1 = Time >= 10
scale = 0,0
ignoreHitPause = 1
[State 8017, Transparency]
type = Trans
trigger1 = 1
trans = AddAlpha
alpha = 256,256
ignoreHitPause = 1
[State 8017, Circle]
type = Explod
trigger1 = !Time
anim = 8016
ID = 8016
posType = p1
removeTime = 10
sprPriority = 5
pauseMoveTime = -1
superMoveTime = -1
[State 8017, Circle Scale]
type = ModifyExplod
trigger1 = NumExplod(8016)
ID = 8016
scale = (0.3 + (0.03 * Time)) * 0.65, (0.3 + (0.03 * Time)) * 0.65
trans = AddAlpha
alpha = ceil(256 - 25.6 * Time), 256
[State 8017, Streaks Explod]
type = Explod
trigger1 = !Time
anim = 8012
ID = 2
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
sprPriority = 5
removeTime = 16
pauseMoveTime = -1
superMoveTime = -1
[State 8017, Scale Streaks Explod]
type = ModifyExplod
trigger1 = NumExplod(2)
ID = 2
scale = (0.25 + (0.015625 * Time)) * 0.65, (0.25 + (0.015625 * Time)) * 0.65
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8017, Remove Explods]
type = RemoveExplod
trigger1 = Time >= 16
[State 8017, End]
type = DestroySelf
trigger1 = Time >= 16
Spoiler, click to toggle visibilty
;Slash Spark
[Begin Action 8015]
8015,0, 0,0, 1,, A
X axis: 233 - Y axis: 41
;Slash Spark (Special)
[Begin Action 8016]
8016,0, 0,0, 1,, A
X axis: 227 - Y axis: 227
REVERSAL SPARK
A variation of the normal hitspark that is triggered by a reversal. Not every character has this, even among the classic P.o.t.S-style authors. I like it, so I'll enter the "Yeah Statedef 8020 club".
Spoiler, click to toggle visibilty
;Reversal Spark
[StateDef 8020]
type = A
physics = N
moveType = I
anim = 8020
velSet = 0,0
sprPriority = 5
[State 8020, Assert: NoShadow]
type = AssertSpecial
trigger1 = 1
flag = NoShadow
ignoreHitPause = 1
[State 8020, Scale]
type = AngleDraw
trigger1 = 1
scale = (0.25 + (0.09375 * Time)) * 0.65, (0.25 + (0.09375 * Time)) * 0.65
ignoreHitPause = 1
[State 8020, Transparency]
type = Trans
trigger1 = Time < 4
trans = AddAlpha
alpha = 256, 256
ignoreHitPause = 1
[State 8020, Transparency]
type = Trans
trigger1 = Time >= 4
trans = AddAlpha
alpha = 256 - 64 * (Time - 4), 256
ignoreHitPause = 1
[State 8020, End]
type = DestroySelf
trigger1 = Time >= 8
Spoiler, click to toggle visibilty
;Reversal Spark
[Begin Action 8020]
8020,0, 0,0, 1,, A
DUST EXPLODS
Here comes a bunch of helpers that give the idea of movement while the character jumps, dashes, and so forth. I think they're universal, unless some bigger character have something different.
Spoiler, click to toggle visibilty
;======================<JUMP DUST>===========================
[StateDef 8100]
type = S
anim = 1
velSet = 0,0
[State 8100, Bind]
type = BindToRoot
trigger1 = Time
[State 8100, Floor Dust]
type = Explod
trigger1 = !Time
anim = 8100
sprPriority = 3
posType = P1
pos = 0, ceil(pos y)
scale = 0.5,0.5
pauseMoveTime = -1
superMoveTime = -1
ownpal = 1
[State 8100, Player Dust]
type = Explod
trigger1 = !Time || Time = 2 || Time = 6
anim = 8101
sprPriority = 3
posType = P1
scale = 0.5,0.5
pauseMoveTime = -1
superMoveTime = -1
ownpal = 1
[State 8100, End]
type = DestroySelf
trigger1 = Time >= 7
Spoiler, click to toggle visibilty
;Jump Dust (Floor)
[Begin Action 8100]
8100,0, 0,0, 1,, A
8100,1, 0,0, 1,, A
8100,2, 0,0, 1,, A
8100,3, 0,0, 1,, A
8100,4, 0,0, 1,, A
8100,5, 0,0, 1,, A
8100,6, 0,0, 1,, A
8100,7, 0,0, 1,, A
8100,8, 0,0, 1,, A
8100,9, 0,0, 1,, A
;Jump Dust (Player Trail)
[Begin Action 8101]
8101,0, 0,0, 1,, A
8101,1, 0,0, 1,, A
8101,2, 0,0, 1,, A
8101,3, 0,0, 1,, A
8101,4, 0,0, 1,, A
8101,5, 0,0, 1,, A
8101,6, 0,0, 1,, A
8101,7, 0,0, 1,, A
8101,8, 0,0, 1,, A
8101,9, 0,0, 1,, A
8101,10, 0,0, 1,, A
8101,11, 0,0, 1,, A
This one plays during dashes and rolls.
Spoiler, click to toggle visibilty
;======================<DASH DUST>===========================
[StateDef 8103]
type = A
anim = 1
velSet = 0,0
sprPriority = 5
[State 8103, posSet]
type = PosSet
trigger1 = !Time = 0
y = 0
[State 8103, Dash Dust]
type = Explod
trigger1 = Time = 0 || Time = 3 || Time = 6
anim = 8103
ID = ifElse((Time = 6), 3, ifElse((Time = 3), 2, 1))
posType = P1
pos = 0,-4
random = 8,8
vel = -3 - (Random / 1000.0), -2 - (Random / 2000.0)
facing = ifElse(Random < 500,-1,1)
vFacing = ifElse(Random < 500,-1,1)
removeTime = 16
sprPriority = 3
pauseMoveTime = -1
superMoveTime = -1
[State 8103, Scale Explod 1]
type = ModifyExplod
trigger1 = NumExplod(1)
ID = 1
scale = 0.1 + (0.025 * Time), 0.1 + (0.025 * Time)
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8103, Scale Explod 2]
type = ModifyExplod
trigger1 = NumExplod(2)
ID = 2
scale = 0.1 + (0.025 * (Time - 3)), 0.1 + (0.025 * (Time - 3))
trans = AddAlpha
alpha = 256 - (16 * (Time - 3)), 256
[State 8103, Scale Explod 3]
type = ModifyExplod
trigger1 = NumExplod(3)
ID = 3
scale = 0.1 + (0.025 * (Time - 6)), 0.1 + (0.025 * (Time - 6))
trans = AddAlpha
alpha = 256 - (16 * (Time - 6)), 256
[State 8103, Remove Explods]
type = RemoveExplod
trigger1 = Time >= 22
[State 8103, End]
type = DestroySelf
trigger1 = !NumExplod
Spoiler, click to toggle visibilty
;Dash Dust
[Begin Action 8103]
8103,0, 0,0, 1,, A
This is not always present, but I'll put it.
Spoiler, click to toggle visibilty
;======================<IMPACT DUST>===========================
[StateDef 8110]
type = A
anim = 1
velSet = 0,0
sprPriority = 5
[State 8110, Impact Dust Explod 1]
type = Explod
trigger1 = !Time
anim = 8110
ID = ifElse(Time = 8, 3, ifElse(Time = 4, 2, 1))
posType = P1
removeTime = 8
sprPriority = -4
pauseMoveTime = -1
superMoveTime = -1
[State 8110, Impact Dust Explod 2]
type = Explod
trigger1 = !Time
anim = 8120
ID = 2
posType = P1
removeTime = 8
sprPriority = -4
pauseMoveTime = -1
superMoveTime = -1
[State 8110, Scale]
type = ModifyExplod
trigger1 = 1
scale = 0.25 + (0.03125 * Time) * 0.5, 0.25 + (0.03125 * Time) * 0.5
trans = AddAlpha
alpha = ifElse(Time < 4, 256, 256 - (64 * (Time - 4))), 256
[State 8110, Remove Explods]
type = RemoveExplod
trigger1 = Time >= 8
[State 8110, End]
type = DestroySelf
trigger1 = !NumExplod
Spoiler, click to toggle visibilty
;Impact Dust 1
[Begin Action 8110]
8110,0, 0,0, 1,, A
;Impact Dust 2
[Begin Action 8120]
8111,0, 0,0, 1,, A
FLAMES
This is also not exactly universal, it depends on the character. Ryu does have an equivalent helper, though.
Spoiler, click to toggle visibilty
;========================<FLAMES>=============================
[StateDef 8150]
type = A
velSet = 0,0
anim = 1
[State 8150, Timer]
type = VarSet
trigger1 = Parent, var(45) != 0
var(45) = Parent, var(45)
[State 8150, Parent Timer Reset]
type = ParentVarSet
trigger1 = Parent, var(45) != 0
var(45) = 0
; The number of the variables here changes between characters,
; I'm putting 45 for Ryu. The next variable refers to the character
; currently burning.
[State 8150, Player]
type = VarSet
trigger1 = !Time
var(0) = Parent, var(43)
[State 8150, PosSet]
type = PosSet
trigger1 = PlayerIDexist(var(0))
x = ceil(PlayerID(var(0)), pos x)
y = ceil(PlayerID(var(0)), pos y) + (PlayerID(var(0)), const(size.mid.pos.y))
[State 8150, PosSet (Laying Down)]
type = PosSet
trigger1 = PlayerIDexist(var(0))
trigger1 = PlayerID(var(0)), StateType = L
x = ceil(PlayerID(var(0)), pos x)
y = ceil(PlayerID(var(0)), pos y) - 20
[State 8150, Facing]
type = Turn
trigger1 = PlayerIDexist(var(0))
trigger1 = Facing != (PlayerID(var(0)), Facing)
[State 8150, End]
type = DestroySelf
trigger1 = Time >= 600
trigger2 = !PlayerIDexist(var(0))
trigger3 = RoundState < 3 || (Root, StateNo = [????,????])
trigger3 = !var(45)
; I don't have yet a StateNo that refers to the burning state.
; Unless the Evil Ryu purple flames count, I'll probably not
; have at all.
[State 8150, End]
type = DestroySelf
triggerAll = PlayerIDexist(var(0))
trigger1 = PlayerID(var(0)), ctrl
trigger2 = PlayerID(var(0)), Movetype != H || PlayerID(var(0)), StateNo = 5300
trigger3 = RoundState >= 3 && (Root, StateNo != [4200,4299])
trigger3 = PlayerID(var(0)), StateType = L && (PlayerID(var(0)), StateNo != [5080,5081])
[State 8150, Timer Decrement]
type = VarAdd
trigger1 = 1
var(45) = -1
[State 8150, Flame Explod 1]
type = Explod
trigger1 = PlayerIDexist(var(0))
anim = 8150
sprPriority = 1
posType = P1
random = 40,40
vel = (Random / 2000.0), -0.5 - (Random / 2000.0)
facing = ifElse(Random < 500, -1, 1)
vfacing = ifElse(Random < 500, -1, 1)
scale = 0.5,0.5
ownpal = 1
[State 8150, Flames Explod 2]
type = Explod
trigger1 = PlayerIDexist(var(0))
anim = 8150
sprPriority = 1
posType = P1
random = 60,60
vel = (Random / 2000.0), -0.5 - (Random / 2000.0)
facing = ifElse(Random < 500, -1, 1)
vfacing = ifElse(Random < 500, -1, 1)
scale = 0.5,0.5
ownpal = 1
Spoiler, click to toggle visibilty
;Flames
[Begin Action 8150]
8150,0, 0,0, 1,, A
8150,1, 0,0, 1,, A
8150,2, 0,0, 1,, A
8150,3, 0,0, 1,, A
8150,4, 0,0, 1,, A
8150,5, 0,0, 1,, A
8150,6, 0,0, 1,, A
8150,7, 0,0, 1,, A
8150,8, 0,0, 1,, A
8150,9, 0,0, 1,, A
8150,10, 0,0, 1,, A
8150,11, 0,0, 1,, A
Ryu had a different animation and the sprites were grouped under different numbers. It included a blue flame spark, which I'll be ignoring for now. I'll edit this part if I discover a use for it.
OTHER HELPERS
Here comes some miscellany universal helpers. This one is the circle thingy during recoveries.
Spoiler, click to toggle visibilty
;========================<RECOVER FX>=============================
[StateDef 8200]
type = A
velSet = 0,0
anim = 8200
sprPriority = 5
[State 8200, Assert: NoShadow]
type = AssertSpecial
trigger1 = 1
flag = NoShadow
ignoreHitPause = 1
[State 8200, Scale]
type = AngleDraw
trigger1 = 1
scale = 0.25 + (0.017 * Time), 0.25 + (0.017 * Time)
ignoreHitPause = 1
[State 8200, Transparency]
type = Trans
trigger1 = 1
trans = AddAlpha
alpha = ceil(256 - 17.1 * Time), 256
ignoreHitPause = 1
[State 8200, End]
type = DestroySelf
trigger1 = Time >= 15
Spoiler, click to toggle visibilty
;Recover FX
[Begin Action 8200]
8200,0, 0,0, -1,, A
This sprite is conveniently centered.
Here's a (probably) unpopular opinion: I strongly dislike the MvC style text that appears during counters and super finishes. I won't remove them, but I'll add my own trigger to deactivate them. So, I'm gonna add this on the config file:
; MvC Style Text
[State 5900, Text]
type = VarSet
trigger1 = 1
v = 55
value = 0 ; (0 = on, 1 = off)
That said, whenever you see the var(55) anywhere in the following parts, it's me giving myself the option to remove texts. (Spoiler: I'll do the same for the Lv3 super portraits)
Spoiler, click to toggle visibilty
;========================<COUNTER FX>=============================
[StateDef 8290]
type = A
physics = N
velSet = 0,0
anim = 1
[State 8290, "Counter!" Text Explod]
type = Explod
triggerall = Root,var(55) = 0 ; you can ignore this one line
trigger1 = !NumExplod(8290)
anim = 8290
ID = 8290
sprPriority = 64
posType = P1
facing = Facing
removeTime = 32
pauseMoveTime = -1
superMoveTime = -1
ownPal = 1
[State 8290, Scale]
type = ModifyExplod
trigger1 = Time < 8
ID = 8290
scale = 0.5, .5
trans = AddAlpha
alpha = 256,0
[State 8290, Scale]
type = ModifyExplod
trigger1 = Time >= 8
ID = 8290
scale = 0.5 + 0.0625 * (Time - 8), 0.5 + 0.0625 * (Time - 8)
trans = AddAlpha
alpha = 256 - 32 * (Time - 8), 32 * (Time - 8)
[State 8290, Safety]
type = RemoveExplod
trigger1 = Time >= 16
[State 8290, End]
type = DestroySelf
trigger1 = Time >= 16
Spoiler, click to toggle visibilty
;Counter FX
[Begin Action 8290]
8290,0, 0,0, -1,, A
I hate you.
To break a bit the monotony, the BindToRoot of this helper needs to be placed carefully to match the power charge animation, as well as the bel values on the particle explod.
Spoiler, click to toggle visibilty
;==================<POWER CHARGE FX>==================
;Aura and Dust
[StateDef 8330]
type = A
physics = N
moveType = I
anim = 1
ctrl = 0
velset = 0,0
[State 8330, BindToRoot]
type = BindToRoot
trigger1 = (Root, StateNo = 730)
pos = -10,0
[State 8330, Charging Sound]
type = PlaySnd
trigger1 = !Time
value = 730,0
channel = 0
[State 8330, Power Charge Aura]
type = Explod
trigger1 = !NumExplod(8330)
ID = 8330
anim = 8330
sprPriority = 3
posType = P1
bindTime = -1
removeTime = -1
scale = 0.5,0.5
pauseMoveTime = -1
superMoveTime = -1
ownPal = 1
[State 8330, Power Charge Dust]
type = Explod
trigger1 = !(Time % 6)
anim = 8105
sprPriority = -3
posType = P1
pos = 0, -ceil(pos y)
scale = 0.5,0.5
pauseMoveTime = -1
superMoveTime = -1
ownPal = 1
[State 8330, Modify Aura 1]
type = ModifyExplod
trigger1 = Numexplod(8330) && Root, Power < 3000
ID = 8330
scale = 0.5, 0.1 + 0.4 * (Root, Power / 3000.0)
[State 8330, Modify Aura 2]
type = ModifyExplod
trigger1 = NumExplod(8330) && Root, Power >= 3000
ID = 8330
scale = 0.5, 0.5
[State 8330, StopSnd]
type = StopSnd
trigger1 = Root, StateNo != 730
channel = 0
[State 8330, RemoveExplod]
type = RemoveExplod
trigger1 = Root, StateNo != 730
[State 8330, End]
type = DestroySelf
trigger1 = Root, StateNo != 730
;Particles
[StateDef 8331]
type = A
physics = N
moveType = I
anim = 1
ctrl = 0
velSet = 0,0
[State 8331, BindToRoot]
type = BindToRoot
trigger1 = !(Time % 8)
pos = ceil(-151 + (Random / 3.125)), ceil(98 - (Random / 3.125))
[State 8331, Particle]
type = Explod
trigger1 = (Time % 8) = 1
anim = 8331
sprPriority = ifElse(Random < 750, 5, -1)
posType = P1
vel = ((RootDist x - 10) / 32.0), ((RootDist y - 60) / 32.0)
scale = ifElse(Random < 500, 0.5, -0.5), ifElse(Random < 500, 0.5, -0.5)
pauseMoveTime = -1
superMoveTime = -1
ownpal = 1
[State 8331, RemoveExplod]
type = RemoveExplod
trigger1 = Root, StateNo != 730
[State 8331, End]
type = DestroySelf
trigger1 = Root, StateNo != 730
Spoiler, click to toggle visibilty
;Power Charge Dust
[Begin Action 8105]
8105,0, 0,0, 2,, A
8105,1, 0,0, 2,, A
8105,2, 0,0, 2,, A
8105,3, 0,0, 2,, A
8105,4, 0,0, 2,, A
8105,5, 0,0, 2,, A
8105,6, 0,0, 2,, A
;Power Charge Aura
[Begin Action 8330]
8330,0, 0,0, 2,, A
8330,1, 0,0, 2,, A
8330,2, 0,0, 2,, A
8330,3, 0,0, 2,, A
8330,4, 0,0, 2,, A
8330,5, 0,0, 2,, A
8330,6, 0,0, 2,, A
8330,7, 0,0, 2,, A
;Power Charge Particle
[Begin Action 8331]
8331,0, 0,0, 2,, AS16D256
8331,0, 0,0, 2,, AS32D256
8331,0, 0,0, 2,, AS48D256
8331,0, 0,0, 2,, AS64D256
8331,0, 0,0, 2,, AS80D256
8331,0, 0,0, 2,, AS96D256
8331,0, 0,0, 2,, AS112D256
8331,0, 0,0, 2,, AS128D256
8331,0, 0,0, 2,, AS144D256
8331,0, 0,0, 2,, AS160D256
8331,0, 0,0, 2,, AS176D256
8331,0, 0,0, 2,, AS192D256
8331,0, 0,0, 2,, AS208D256
8331,0, 0,0, 2,, AS224D256
8331,0, 0,0, 2,, AS240D256
8331,0, 0,0, 2,, AS256D256
So, this. I found this code in quite a bunch of characters, so I'm assuming it's use goes beyond the "win vs Vega" sequence. Here it is. It's just a reddish version of the Power Charge particle.
Spoiler, click to toggle visibilty
;==================<VIOLENT WIN VS VEGA PARTICLES>==================
[StateDef 8332]
type = A
physics = N
moveType = I
anim = 1
ctrl = 0
velSet = 0,0
[State 8332, BindToRoot]
type = BindToRoot
trigger1 = !(Time % 3)
pos = ceil(-40 + (Random /10.25)), ceil(-17 - (Random / 10.25))
[State 8332, Particles]
type = Explod
trigger1 = (Time % 3) = 1
anim = 8332
sprPriority = ifElse(Random < 750,5,-1)
posType = P1
vel = (-(RootDist x + 4) / 10.0),(-(RootDist y - 85) / 10.0)
scale = ifElse(random < 500 ,0.5, -0.5),ifElse(random < 500, 0.5, -0.5)
removeTime = 16
pauseMoveTime = -1
superMoveTime = -1
ownPal = 1
[State 8332, RemoveExplod]
type = RemoveExplod
trigger1 = Root, StateNo != 187 || Root, AnimElemTime(60) >= 0
[State 833, End]
type = DestroySelf
trigger1 = Root, StateNo != 187 || Root, AnimElemTime(60) >= 0
Spoiler, click to toggle visibilty
;Power Charge Particle (Violent win vs Vega)
[Begin Action 8332]
8332,0, 0,0, 2,, AS256D256
8332,0, 0,0, 2,, AS224D256
8332,0, 0,0, 2,, AS192D256
8332,0, 0,0, 2,, AS160D256
8332,0, 0,0, 2,, AS128D256
8332,0, 0,0, 2,, AS96D256
8332,0, 0,0, 2,, AS64D256
8332,0, 0,0, 2,, AS32D256
This one is for the thunder effect during the zero counter. No need to keep track of the position, this is done in the main statedef.
Spoiler, click to toggle visibilty
;==================<ZERO COUNTER FX>==================
[StateDef 8350]
type = A
physics = N
moveType = I
anim = 1
ctrl = 0
velSet = 0,0
[State 8350, BgPalFX]
type = BgPalFX
trigger1 = 1
time = 1
color = 16 * Time
mul = 16 * Time, 16 * Time, 16 * Time
[State 8350, Circle Explod]
type = Explod
trigger1 = !Time
anim = 8350
ID = 1
sprPriority = 3
posType = P1
removeTime = 16
superMoveTime = -1
ownPal = 1
[State 8350, Scale]
type = ModifyExplod
trigger1 = NumExplod(1)
ID = 1
scale = (0.0625 * Time), (0.0625 * Time)
trans = AddAlpha
alpha = 256 - (16 * Time), 256
[State 8350, Lightning Explod]
type = Explod
trigger1 = !Time
anim = 8351
ID = 2
sprPriority = -2
posType = P1
pos = 0, -ceil(pos y)
superMoveTime = -1
ownPal = 1
[State 8350, End]
type = DestroySelf
trigger1 = Time >= 16
Spoiler, click to toggle visibilty
;Zero Counter FX
[Begin Action 8350]
8350,0, 0,0, 1,, A
;Zero Counter Lightning
[Begin Action 8351]
8351,0, 0,0, 1,, A
8351,1, 0,0, 2,, A
8351,2, 0,0, 1,, A
8351,3, 0,0, 2,, A
8351,4, 0,0, 1,, A
8351,5, 0,0, 2,, A
8351,6, 0,0, 1,, A
And finally, the Custom Combo activation flash effect.
Spoiler, click to toggle visibilty
;========================<CUSTOM COMBO>=============================
[StateDef 8400]
type = A
physics = N
moveType = I
anim = 8400
ctrl = 0
velSet = 0,0
sprPriority = 5
[State 8400, NoShadow]
type = AssertSpecial
trigger1 = 1
flag = NoShadow
ignoreHitPause = 1
[State 8400, BGpalFX]
type = BGpalFX
trigger1 = Time < 25
time = 1
mul = 128,128,128
[State 8400, Rotate]
type = AngleSet
trigger1 = !Time
value = 6 * (Random % 60)
[State 8400, Rotate]
type = AngleAdd
trigger1 = 1
value = -6
[State 8400, Scale]
type = AngleDraw
trigger1 = Time < 8
scale = (0.0625 * Time), (0.0625 * Time)
ignoreHitPause = 1
[State 8400, Scale]
type = AngleDraw
trigger1 = Time >= 8
scale = 0.5, 0.5
ignoreHitPause = 1
[State 8400, Transparency]
type = Trans
trigger1 = Time < 16
trans = AddAlpha
alpha = 256, 256
ignoreHitPause = 1
[State 8400, Transparency]
type = Trans
trigger1 = Time >= 16
trans = AddAlpha
alpha = ceil(256 - 25.6 * (Time - 16)), 256
ignoreHitPause = 1
[State 8400, Lines Explod]
type = Explod
trigger1 = !Time
anim = 8401
ID = 1
sprPriority = 5
posType = P1
facing = ifElse(Random < 500, -1, 1)
vFacing = ifElse(Random < 500, -1, 1)
removeTime = 16
superMoveTime = -1
[State 8400, Scale Lines Explod]
type = ModifyExplod
trigger1 = NumExplod(1)
ID = 1
scale = 2 - (0.125 * Time), 2 - (0.125 * Time)
trans = AddAlpha
alpha = ifElse(Time < 4, 64 * Time, 256), 256
[State 8400, Circle Explod]
type = Explod
trigger1 = Time = 16
anim = 8402
ID = 2
sprPriority = 5
posType = P1
removeTime = 32
superMoveTime = -1
[State 8400, Scale Circle Explod]
type = ModifyExplod
trigger1 = NumExplod(2)
ID = 2
scale = (0.1 * (Time - 16)), (0.1 * (Time - 16))
trans = AddAlpha
alpha = ceil(256 - 25.6 * (Time - 16)), 256
[State 8400, Remove Explods]
type = RemoveExplod
trigger1 = Time >= 26
[State 8400, End]
type = DestroySelf
trigger1 = Time >= 26
Spoiler, click to toggle visibilty
;Custom Combo FX
[Begin Action 8400]
8400,0, 0,0, 1,, A
;Custom Combo FX Lines
[Begin Action 8401]
8401,0, 0,0, 1,, A
;Custom Combo FX Circle
[Begin Action 8402]
8402,0, 0,0, 1,, A