Kitty Corp Meow Mix Forums

Help & Tutorials => A/A Tutorials => Topic started by: KingJigglypuff on November 23, 2015, 02:26:26 PM



Title: [Advanced] How to Make a Pseudo Extreme Speed
Post by: KingJigglypuff on November 23, 2015, 02:26:26 PM
Based on like almost a week or so of testing an troubleshooting, I'll now reveal this tutorial.

What's this for, you ask? Well it's simple. This tutorial will show you how to make a pseudo Extreme Speed.

Warning/Notice: This tutorial is only recommended for those who know what they're doing and know their way around PSA/Moveset Editing. If you don't know most/any of the terms I use in the tutorial, then it's likely you're not ready for something so advanced yet (if you have questions, you can still ask though). These combinations of commands also take up a lot of file size (around 14 KB), so make sure your FitChar.pac file has enough room.

If you're going to be using BrawlBox, then make sure your character can be edited without their file breaking. If you can't, then use PSA.

Requirements:
-5 Animations. Start, StartAir, Move, End, and EndAir.
-5 Open Sub Actions.
-3 Actions.
-*4 LA-Floats.
-*1 LA-Bit.
-At least 14KB of space available in your FitChar.pac

*Check this guide to know which variables you can use. http://forums.kc-mm.com/index.php?topic=74266.0 (http://forums.kc-mm.com/index.php?topic=74266.0)
Also check this page to see which Variables are already used by the game. http://tinyurl.com/p4ojsod (http://tinyurl.com/p4ojsod)

This tutorial will be broken down into 3 sections: Start, Move, and End with each section of coding being explained.

Now without further adieu, let's begin.

Part 1: Start.

-Actions-
For the Start part of this move, you'll be editing one Action between Actions 274 (Dec)/112 (Hex) through 277 (Dec)/115 (Hex), based on which Special you want this coding to be used for.

Action 274 (Dec)/112 (Hex): Neutral Special
Action 275 (Dec)/113 (Hex): Side Special
Action 276 (Dec)/114 (Hex): Up Special
Action 277 (Dec)/115 (Hex): Down Special

In the Action you chose, insert the following coding:
X = Action you want your current Action to direct to once the current Action ends.
Y = Ground Sub Action.
Z = Air Sub Action.

Change Action action=X, requirement=Animation End
Set Loop Infinite
   If On Ground:
      Set Air/Ground: On Ground*
      Set Edge Slide: Can't drop off side of stage
      If Bit is Set: RA-Bit[16]
         Change Subaction: sub action=Y, pass frame=true
      Else
         Change Subaction: sub action=Y
         Bit Variable Set: RA-Bit[16] = true
      End If
      Additional Subaction Change Requirement: In Air
   Else
      Set Air/Ground: Undefined(17)*
      Set Edge Slide: In Air; Can leave stage vertically
      If Bit is Set: RA-Bit[16]
         Change Subaction: sub action=Z, pass frame=true
      Else
         Change Subaction: sub action=Z
         Bit Variable Set: RA-Bit[16] = true
      End If
      Additional Subaction Change Requirement: On Ground
   End If
   Loop Rest
Execute Loop

*On Ground is 6. and Unknown (17) is 17 (Dec)/11 (Hex).

Once you're done with your Action coding, it's time for your Sub Actions.

-Sub Actions-
In the Ground version of your Sub Action (it can be air, though ground just for consistency, as you're just going to be using a GoTo command anyway), insert the following coding. This is where you'll be setting your Floats.

A = Float to use for Horizontal Momentum. (For this tutorial, it's set to 3.5 forward and -3.5 backward, but you can adjust this to your liking).
F = Float to use for Vertical Momentum. (For this tutorial, it's set to 3.5 upward and -3.5 downward, but you can adjust this to your liking).
C = Float to use for the move's timer. (For this tutorial, it's set to 30, but you can adjust this to your liking).
D = Float to use for setting the Frame of the *Move Action.
E = Bit. I will explain this later.

*For this example, the animation for the Move Action is 120 Frames long, and has the character rotating 360 degrees. LA-Float [D] is used to set which Frame the Move Action will start on.

Float Variable Set: LA-Float[A] = 0
Float Variable Set: LA-Float[F] = 3.5
Float Variable Set: LA-Float[C] = 30
Float Variable Set: LA-Float[D] = 0
Bit Variable Clear: LA-Bit[E] = false
Set/Add Momentum: Horizontal=0, Vertical=0, Add/Set Horiz=1, Add/Set Vert=1
Set Loop Infinite
   If Compare: IC-Basic[1012] >= IC-Basic[3149]
   And Compare: IC-Basic[1018] >= IC-Basic[3186]
      Float Variable Set: LA-Float[A] = -3.5
      Float Variable Set: LA-Float[F] = 3.5
      Float Variable Set: LA-Float[D] = 105
   End If
   If Compare: IC-Basic[1012] >= IC-Basic[3149]
   And Compare: IC-Basic[1020] >= IC-Basic[3186]
      If On Ground:
         Float Variable Set: LA-Float[A] = -3.5
         Float Variable Set: LA-Float[F] = 0
         Float Variable Set: LA-Float[D] = 90
      Else
         Float Variable Set: LA-Float[A] = -3.5
         Float Variable Set: LA-Float[F] = -3.5
         Float Variable Set: LA-Float[D] = 75
      End If
   End If
   If Compare: IC-Basic[1012] >= IC-Basic[3149]
   And Not Compare: IC-Basic[1018] >= IC-Basic[3186]
   And Not Compare: IC-Basic[1020] >= IC-Basic[3186]
      Float Variable Set: LA-Float[A] = -3.5
      Float Variable Set: LA-Float[F] = 0
      Float Variable Set: LA-Float[D] = 90
   End If
   If Compare: IC-Basic[1011] >= IC-Basic[3149]
   And Compare: IC-Basic[1018] >= IC-Basic[3186]
      Float Variable Set: LA-Float[A] = 3.5
      Float Variable Set: LA-Float[F] = 3.5
      Float Variable Set: LA-Float[D] = 15
   End If
   If Compare: IC-Basic[1011] >= IC-Basic[3149]
   And Compare: IC-Basic[1020] >= IC-Basic[3186]
      If On Ground:
         Float Variable Set: LA-Float[A] = 3.5
         Float Variable Set: LA-Float[F] = 0
         Float Variable Set: LA-Float[D] = 30
      Else
         Float Variable Set: LA-Float[A] = 3.5
         Float Variable Set: LA-Float[F] = -3.5
         Float Variable Set: LA-Float[D] = 45
      End If
   End If
   If Compare: IC-Basic[1011] >= IC-Basic[3149]
   And Not Compare: IC-Basic[1018] >= IC-Basic[3186]
   And Not Compare: IC-Basic[1020] >= IC-Basic[3186]
      Float Variable Set: LA-Float[A] = 3.5
      Float Variable Set: LA-Float[F] = 0
      Float Variable Set: LA-Float[D] = 30
   End If
   If Compare: IC-Basic[1020] >= IC-Basic[3186]
   And Not Compare: IC-Basic[1012] >= IC-Basic[3149]
   And Not Compare: IC-Basic[1011] >= IC-Basic[3149]
      If On Ground:
         Float Variable Set: LA-Float[A] = 3.5
         Float Variable Set: LA-Float[F] = 0
         Float Variable Set: LA-Float[D] = 30
      Else
         Float Variable Set: LA-Float[A] = 0
         Float Variable Set: LA-Float[F] = -3.5
         Float Variable Set: LA-Float[D] = 59
      End If
   End If
   If Compare: IC-Basic[1018] >= IC-Basic[3186]
   And Not Compare: IC-Basic[1012] >= IC-Basic[3149]
   And Not Compare: IC-Basic[1011] >= IC-Basic[3149]
      Float Variable Set: LA-Float[A] = 0
      Float Variable Set: LA-Float[F] = 3.5
      Float Variable Set: LA-Float[D] = 0
   End If
   If Not Compare: IC-Basic[1018] >= IC-Basic[3186]
   And Not Compare: IC-Basic[1020] >= IC-Basic[3186]
   And Not Compare: IC-Basic[1012] >= IC-Basic[3149]
   And Not Compare: IC-Basic[1011] >= IC-Basic[3149]
      Float Variable Set: LA-Float[A] = 0
      Float Variable Set: LA-Float[F] = 3.5
      Float Variable Set: LA-Float[D] = 0
   End If
   Synchronous Timer: frames=1
Execute Loop

What this will do is during the Start Action, the coding will infinitely check to see which direction on the control stick is pressed, and if the character is on the ground, then holding down will automatically direct to if the player was holding forward on the control stick. If the control stick isn't pressed at all, then it will direct to if the player was holding up.

For a breakdown of the If Compare commands, here's the 4 main control stick directions.

If Compare: IC-Basic[1012] >= IC-Basic[3149]: Backwards.

If Compare: IC-Basic[1011] >= IC-Basic[3149]: Forward.

If Compare: IC-Basic[1018] >= IC-Basic[3186]: Upward.

If Compare: IC-Basic[1020] >= IC-Basic[3186]: Downward.

In the Air version of the Sub Action, just insert a GoTo command that references the Ground Sub Action.

Hopefully everything's currently able to be understood. Let's get onto the most difficult part of the tutorial...

Part 2: Move.
Prepare yourself, as this is the most difficult and most confusing part of the tutorial.

-Actions-
In the Action you set X to in Part one, insert the following coding.

X = Action to go to once Float C (from Part 1) is equal to or less than 0.
Y = Sub Action to go to.

Change Action action=X, requirement=Compare: LA-Float[C] <= 0
Set Air/Ground: Undefined(17)
Set Edge Slide: In Air; Can leave stage vertically
Change Subaction: sub action=Y

-Sub Action-
This part will be separated into 4 parts, each for their own tab.

2a.) Main tab.
Insert the following coding into the Main Tab.

X = Frame Speed Modifier setting. The higher the FSM, the faster the frame movement.
Y = Synch Timer setting. Default is 1. Though you can set it higher or lower, depending on how tight you want the movement. Lower = tighter.

Frame Speed Modifier: Multiplier=X
Set Loop Infinite
   Set Animation Frame: LA-Float[D]
   Synchronous Timer: frames=Y
   If Compare: LA-Float[D] < 0
      Float Variable Add: LA-Float[D] += 1
   End If
   If Compare: LA-Float[D] > 119
      Float Variable Subtract: LA-Float[D] -= 1
   End If
   If Compare: IC-Basic[1012] >= IC-Basic[3149]
      If Compare: LA-Float[D] <= 0
         Float Variable Set: LA-Float[D] = 119
      End If
      If Touching a Floor, Wall, or Ceiling: 2
      Or Touching a Floor, Wall, or Ceiling: 4
         If Compare: LA-Float[D] >= 90
         And Compare: LA-Float[D] < 119
            Float Variable Add: LA-Float[D] += 1
         End If
         If Compare: LA-Float[D] < 90
         And Compare: LA-Float[D] > 59
            Float Variable Subtract: LA-Float[D] -= 1
         End If
      Else
         If Compare: LA-Float[D] > 90
         Or Compare: LA-Float[D] <= 30
            Float Variable Subtract: LA-Float[D] -= 1
         End If
         If Compare: LA-Float[D] > 30
         And Compare: LA-Float[D] < 90
            Float Variable Add: LA-Float[D] += 1
         End If
      End If
      If Compare: IC-Basic[1018] >= IC-Basic[3186]
         If Compare: LA-Float[D] > 105
            Float Variable Subtract: LA-Float[D] -= 1
         End If
         If Compare: LA-Float[D] < 105
            Float Variable Add: LA-Float[D] += 1
         End If
      End If
      If Compare: IC-Basic[1020] >= IC-Basic[3186]
         If On Ground:
            If Compare: LA-Float[D] > 90
            Or Compare: LA-Float[D] <= 30
               Float Variable Subtract: LA-Float[D] -= 1
            End If
            If Compare: LA-Float[D] > 30
            And Compare: LA-Float[D] < 90
               Float Variable Add: LA-Float[D] += 1
            End If
         Else
            If Compare: LA-Float[D] > 75
               Float Variable Subtract: LA-Float[D] -= 1
            End If
            If Compare: LA-Float[D] < 75
               Float Variable Add: LA-Float[D] += 1
            End If
         End If
      End If
   End If
   If Compare: IC-Basic[1011] >= IC-Basic[3149]
      If Compare: LA-Float[D] >= 119
         Float Variable Set: LA-Float[D] = 0
      End If
      If Touching a Floor, Wall, or Ceiling: 2
      Or Touching a Floor, Wall, or Ceiling: 4
         If Compare: LA-Float[D] <= 30
         And Compare: LA-Float[D] > 0
            Float Variable Subtract: LA-Float[D] -= 1
         End If
         If Compare: LA-Float[D] > 30
         And Compare: LA-Float[D] < 59
            Float Variable Add: LA-Float[D] += 1
         End If
      Else
         If Compare: LA-Float[D] < 30
         Or Compare: LA-Float[D] >= 90
            Float Variable Add: LA-Float[D] += 1
         End If
         If Compare: LA-Float[D] > 30
         And Compare: LA-Float[D] < 90
            Float Variable Subtract: LA-Float[D] -= 1
         End If
      End If
      If Compare: IC-Basic[1018] >= IC-Basic[3186]
         If Compare: LA-Float[D] > 15
            Float Variable Subtract: LA-Float[D] -= 1
         End If
         If Compare: LA-Float[D] < 15
            Float Variable Add: LA-Float[D] += 1
         End If
      End If
      If Compare: IC-Basic[1020] >= IC-Basic[3186]
         If On Ground:
            If Compare: LA-Float[D] < 30
            Or Compare: LA-Float[D] >= 90
               Float Variable Add: LA-Float[D] += 1
            End If
            If Compare: LA-Float[D] > 30
            And Compare: LA-Float[D] < 90
               Float Variable Subtract: LA-Float[D] -= 1
            End If
         Else
            If Compare: LA-Float[D] > 45
               Float Variable Subtract: LA-Float[D] -= 1
            End If
            If Compare: LA-Float[D] < 45
               Float Variable Add: LA-Float[D] += 1
            End If
         End If
      End If
   End If
   If Compare: IC-Basic[1020] >= IC-Basic[3186]
      If On Ground:
         If Compare: LA-Float[D] < 30
         Or Compare: LA-Float[D] < 90
            Float Variable Add: LA-Float[D] += 1
         End If
         If Compare: LA-Float[D] > 30
         And Compare: LA-Float[D] < 90
            Float Variable Subtract: LA-Float[D] -= 1
         End If
         If Compare: LA-Float[D] >= 45
         And Not Compare: LA-Float[D] == 30
            Float Variable Subtract: LA-Float[D] -= 1
         End If
         If Compare: LA-Float[D] >= 75
         And Not Compare: LA-Float[D] == 90
            Float Variable Add: LA-Float[D] += 1
         End If
      Else
         If Compare: LA-Float[D] > 59
            Float Variable Subtract: LA-Float[D] -= 1
         End If
         If Compare: LA-Float[D] < 59
            Float Variable Add: LA-Float[D] += 1
         End If
      End If
   End If
   If Compare: IC-Basic[1018] >= IC-Basic[3186]
      If Touching a Floor, Wall, or Ceiling: 3
      And Not Touching a Floor, Wall, or Ceiling: 2
      And Not Touching a Floor, Wall, or Ceiling: 4
         If Compare: LA-Float[D] >= 0
         And Compare: LA-Float[D] < 15
            Float Variable Add: LA-Float[D] += 1
         End If
         If Compare: LA-Float[D] <= 119
         And Compare: LA-Float[D] > 105
            Float Variable Subtract: LA-Float[D] -= 1
         End If
      Else
         If Compare: LA-Float[D] > 0
         And Compare: LA-Float[D] <= 59
            Float Variable Subtract: LA-Float[D] -= 1
         End If
         If Compare: LA-Float[D] < 119
         And Compare: LA-Float[D] >= 59
            Float Variable Add: LA-Float[D] += 1
         End If
      End If
   End If
Execute Loop

Quite a lot of coding, isn't it.

Here's a tl;dr summary: This coding will change the Frame of the Move animation, based on control stick input. If moving downward on the ground, it will change to if the character's going forward. If moving upward on a ceiling, it will change to if the character's going up and diagonal. If moving sideways on a wall, it will change to if the character's going up.

2b.) GFX tab.
For this, you're going to need to make two Sub Routines.

Insert the following coding into the first Sub Routine you made:
If Compare: IC-Basic[1018] >= IC-Basic[3186]
   If Compare: LA-Float[F] < 3.5
      Float Variable Add: LA-Float[F] += 0.1
   End If
   If Compare: LA-Float[F] > 3.5
      Float Variable Subtract: LA-Float[F] -= 0.1
   End If
Else
   If Compare: IC-Basic[1020] >= IC-Basic[3186]
      If On Ground:
         If Compare: LA-Float[F] < 0
            Float Variable Add: LA-Float[F] += 0.1
         End If
         If Compare: LA-Float[F] > 0
            Float Variable Subtract: LA-Float[F] -= 0.1
         End If
      Else
         If Compare: LA-Float[F] < -3.5
            Float Variable Add: LA-Float[F] += 0.1
         End If
         If Compare: LA-Float[F] > -3.5
            Float Variable Subtract: LA-Float[F] -= 0.1
         End If
      End If
   Else
      If Touching a Floor, Wall, or Ceiling: 2
      Or Touching a Floor, Wall, or Ceiling: 4
         If Compare: LA-Float[F] < 3.5
            Float Variable Add: LA-Float[F] += 0.1
         End If
         If Compare: LA-Float[F] > 3.5
            Float Variable Subtract: LA-Float[F] -= 0.1
         End If
      Else
         If Compare: LA-Float[F] < 0
            Float Variable Add: LA-Float[F] += 0.1
         End If
         If Compare: LA-Float[F] > 0
            Float Variable Subtract: LA-Float[F] -= 0.1
         End If
      End If
   End If
End If

Then insert the following coding into the second Sub Routine:
If Compare: IC-Basic[1012] >= IC-Basic[3149]
   If Touching a Floor, Wall, or Ceiling: 2
   Or Touching a Floor, Wall, or Ceiling: 4
      If Compare: LA-Float[A] > 0
         Float Variable Subtract: LA-Float[A] -= 0.1
      End If
      If Compare: LA-Float[A] < 0
         Float Variable Add: LA-Float[A] += 0.1
      End If
   Else
      If Compare: LA-Float[A] > -3.5
         Float Variable Subtract: LA-Float[A] -= 0.1
      End If
      If Compare: LA-Float[A] < -3.5
         Float Variable Add: LA-Float[A] += 0.1
      End If
   End If
Else
   If Compare: IC-Basic[1011] >= IC-Basic[3149]
      If Touching a Floor, Wall, or Ceiling: 2
      Or Touching a Floor, Wall, or Ceiling: 4
         If Compare: LA-Float[A] > 0
            Float Variable Subtract: LA-Float[A] -= 0.1
         End If
         If Compare: LA-Float[23] < 0
            Float Variable Add: LA-Float[A] += 0.1
         End If
      Else
         If Compare: LA-Float[A] > 3.5
            Float Variable Subtract: LA-Float[A] -= 0.1
         End If
         If Compare: LA-Float[23] < 3.5
            Float Variable Add: LA-Float[A] += 0.1
         End If
      End If
   Else
      If On Ground:
      Or Touching a Floor, Wall, or Ceiling: 3
         If Compare: LA-Float[A] > 3.5
            Float Variable Subtract: LA-Float[A] -= 0.1
         End If
         If Compare: LA-Float[A] < 3.5
            Float Variable Add: LA-Float[A] += 0.1
         End If
      Else
         If Compare: LA-Float[A] > 0
            Float Variable Subtract: LA-Float[A] -= 0.1
         End If
         If Compare: LA-Float[A] < 0
            Float Variable Add: LA-Float[A] += 0.1
         End If
      End If
   End If
End If

After that, insert the following coding into the GFX tab (make sure you note which Sub Routines you made):

Set Loop Infinite
   Set/Add Momentum: Horizontal=0, Vertical=0, Add/Set Horiz=1, Add/Set Vert=1
   Add/Subtract Character Momentum: Horizontal Speed=LA-Float[A], Vertical Speed=LA-Float[F]
   Synchronous Timer: frames=Y
   If Compare: IC-Basic[1012] >= IC-Basic[3149]
      If Touching a Floor, Wall, or Ceiling: 2
      Or Touching a Floor, Wall, or Ceiling: 4
         If Compare: LA-Float[A] > 0
            Float Variable Subtract: LA-Float[A] -= 0.1
         End If
         If Compare: LA-Float[A] < 0
            Float Variable Add: LA-Float[A] += 0.1
         End If
      Else
         If Compare: LA-Float[A] > -3.5
            Float Variable Subtract: LA-Float[A] -= 0.1
         End If
         If Compare: LA-Float[A] < -3.5
            Float Variable Add: LA-Float[A] += 0.1
         End If
      End If
      Subroutine SubRoutine0 in the SubRoutines list
   End If
   If Compare: IC-Basic[1011] >= IC-Basic[3149]
      If Touching a Floor, Wall, or Ceiling: 2
      Or Touching a Floor, Wall, or Ceiling: 4
         If Compare: LA-Float[A] > 0
            Float Variable Subtract: LA-Float[A] -= 0.1
         End If
         If Compare: LA-Float[A] < 0
            Float Variable Add: LA-Float[A] += 0.1
         End If
      Else
         If Compare: LA-Float[A] > 3.5
            Float Variable Subtract: LA-Float[A] -= 0.1
         End If
         If Compare: LA-Float[A] < 3.5
            Float Variable Add: LA-Float[A] += 0.1
         End If
      End If
      Subroutine SubRoutine0 in the SubRoutines list
   End If
   If Compare: IC-Basic[1018] >= IC-Basic[3186]
      Subroutine SubRoutine1 in the SubRoutines list
      If Compare: LA-Float[F] < 3.5
         Float Variable Add: LA-Float[F] += 0.1
      End If
      If Compare: LA-Float[F] > 3.5
         Float Variable Subtract: LA-Float[F] -= 0.1
      End If
   End If
   If Compare: IC-Basic[1020] >= IC-Basic[3186]
      Subroutine SubRoutine1 in the SubRoutines list
      If On Ground:
         If Compare: LA-Float[F] < 0
            Float Variable Add: LA-Float[F] += 0.1
         End If
         If Compare: LA-Float[F] > 0
            Float Variable Subtract: LA-Float[F] -= 0.1
         End If
      Else
         If Compare: LA-Float[F] < -3.5
            Float Variable Add: LA-Float[F] += 0.1
         End If
         If Compare: LA-Float[F] > -3.5
            Float Variable Subtract: LA-Float[F] -= 0.1
         End If
      End If
   End If
   Float Variable Subtract: LA-Float[C] -= 1
Execute Loop

tl;dr explanation: This coding does the same thing as the Main tab, except for momentum, rather than the current Frame.

2c.) SFX tab.
This is the simplest part of Part 2. Insert the following coding into the SFX tab.

Set Loop Infinite
   Synchronous Timer: frames=Y
   If Compare: LA-Float[D] <= 119
   And Compare: LA-Float[D] > 59
   And Compare: LA-Float[C] <= 1
   And Not Bit is Set: LA-Bit[E]
      Bit Variable Set: LA-Bit[E] = true
      Reverse Direction
   End If
Execute Loop

What this will do is if the current Frame is less than or equal to 120 and more than 60 while also checking to see if the timer is almost out and if the Bit isn't set. If these conditions are met, then the character will reverse their direction once the timer ends.

3d.) Other tab.
The final part of Part 2. Insert the following coding into the Other tab.

Set Loop Infinite
   Synchronous Timer: frames=Y
   If On Ground:
      If Compare: LA-Float[D] > 59
      And Compare: LA-Float[D] < 90
         Float Variable Add: LA-Float[D] += 1
         If Compare: LA-Float[A] > -3.5
            Float Variable Subtract: LA-Float[A] -= 0.1
         End If
         If Compare: LA-Float[A] < -3.5
            Float Variable Add: LA-Float[A] += 0.1
         End If
      End If
      If Compare: LA-Float[F] < 0
         Float Variable Add: LA-Float[F] += 0.1
      End If
      If Compare: LA-Float[F] > 0
         Float Variable Subtract: LA-Float[F] -= 0.1
      End If
      If Compare: LA-Float[D] <= 59
      And Compare: LA-Float[D] > 30
         Float Variable Subtract: LA-Float[D] -= 1
         If Compare: LA-Float[A] > 3.5
            Float Variable Subtract: LA-Float[A] -= 0.1
         End If
         If Compare: LA-Float[A] < 3.5
            Float Variable Add: LA-Float[A] += 0.1
         End If
      End If
   End If
   If Touching a Floor, Wall, or Ceiling: 3
   And Not Touching a Floor, Wall, or Ceiling: 2
   And Not Touching a Floor, Wall, or Ceiling: 4
      If Compare: LA-Float[D] >= 0
      And Compare: LA-Float[D] < 15
         Float Variable Add: LA-Float[D] += 1
         If Compare: LA-Float[A] > 3.5
            Float Variable Subtract: LA-Float[A] -= 0.1
         End If
         If Compare: LA-Float[A] < 3.5
            Float Variable Add: LA-Float[A] += 0.1
         End If
      End If
      If Compare: LA-Float[D] <= 119
      And Compare: LA-Float[D] > 105
         Float Variable Subtract: LA-Float[D] -= 1
         If Compare: LA-Float[A] > -3.5
            Float Variable Subtract: LA-Float[A] -= 0.1
         End If
         If Compare: LA-Float[A] < -3.5
            Float Variable Add: LA-Float[A] += 0.1
         End If
      End If
   End If
   If Touching a Floor, Wall, or Ceiling: 2
   Or Touching a Floor, Wall, or Ceiling: 4
      If Compare: LA-Float[A] > 0
         Float Variable Subtract: LA-Float[A] -= 0.1
      End If
      If Compare: LA-Float[A] < 0
         Float Variable Add: LA-Float[A] += 0.1
      End If
      If Compare: LA-Float[D] < 90
      And Compare: LA-Float[D] > 59
         Float Variable Subtract: LA-Float[D] -= 1
         If Compare: LA-Float[F] < -3.5
            Float Variable Add: LA-Float[F] += 0.1
         End If
         If Compare: LA-Float[F] > -3.5
            Float Variable Subtract: LA-Float[F] -= 0.1
         End If
      End If
      If Compare: LA-Float[D] >= 90
      And Compare: LA-Float[D] < 119
         Float Variable Add: LA-Float[D] += 1
         If Compare: LA-Float[F] < 3.5
            Float Variable Add: LA-Float[F] += 0.1
         End If
         If Compare: LA-Float[F] > 3.5
            Float Variable Subtract: LA-Float[F] -= 0.1
         End If
      End If
      If Compare: LA-Float[D] > 30
      And Compare: LA-Float[D] < 59
         Float Variable Add: LA-Float[D] += 1
         If Compare: LA-Float[F] < -3.5
            Float Variable Add: LA-Float[F] += 0.1
         End If
         If Compare: LA-Float[F] > -3.5
            Float Variable Subtract: LA-Float[F] -= 0.1
         End If
      End If
      If Compare: LA-Float[D] <= 30
      And Compare: LA-Float[D] > 0
         Float Variable Subtract: LA-Float[D] -= 1
         If Compare: LA-Float[F] < 3.5
            Float Variable Add: LA-Float[F] += 0.1
         End If
         If Compare: LA-Float[F] > 3.5
            Float Variable Subtract: LA-Float[F] -= 0.1
         End If
      End If
   End If
   If Not Has a Floor Below the Player:
      If Compare: LA-Float[D] < 85
      And Compare: LA-Float[D] > 35
         Edge Interaction 04: Boolean-false,
      End If
   End If
Execute Loop

tl;dr explanation: This coding does the same thing as the Main and GFX tabs, but does it automatically, so the character isn't stuck in place if not pressing the control stick. The character will also go through platform if facing downward and in the air.

The most difficult and longest part it out of the way, now let's finish this!

Part 3: End
-Actions-
Insert the following coding into the Action you set Part 2 to direct to when the timer hits 0.

X=Ground version.
Y= Air version.

Change Action action=0, requirement=Animation End
Additional Change Action Requirement On Ground
Change Action action=16 (Dec)/10 (Hex), requirement=Animation End
Additional Change Action Requirement In Air
Set Loop Infinite
   If On Ground:
      Set Air/Ground: On Ground
      Set Edge Slide: Can drop off side of stage
      If Bit is Set: RA-Bit[16]
         Change Subaction: sub action=X, pass frame=true
      Else
         Change Subaction: sub action=X
         Bit Variable Set: RA-Bit[16] = true
      End If
      Additional Subaction Change Requirement: In Air
   Else
      Set Air/Ground: Undefined(10)
      Set Edge Slide: In Air; Can leave stage vertically
      If Bit is Set: RA-Bit[16]
         Change Subaction: sub action=Y, pass frame=true
      Else
         Change Subaction: sub action=Y
         Bit Variable Set: RA-Bit[16] = true
      End If
      Additional Subaction Change Requirement: On Ground
   End If
   Loop Rest
Execute Loop

Once that's done, let's conclude this.

-Sub Actions-
In the Ground Sub Action, insert the following coding:

If In Air:
   Allow/Disallow Ledgegrab: Value-2,
End If
If Bit is Set: LA-Bit[E]
   Float Variable Divide: LA-Float[A] /= -2
   Float Variable Divide: LA-Float[F] /= 2
Else
   Float Variable Divide: LA-Float[A] /= 2
   Float Variable Divide: LA-Float[F] /= 2
End If
Set/Add Momentum: Horizontal=0, Vertical=0, Add/Set Horiz=1, Add/Set Vert=1
Add/Subtract Character Momentum: Horizontal Speed=LA-Float[A], Vertical Speed=LA-Float[F]

What this coding does is divide the current momentum by 2 before applying it for momentum preservition. To preserve more momentum, reduce the number. To preserve less momentum, increase the number.

In the Air version, just insert a GoTo command that references the Ground version.

Once you have everything done, save and test. If you come into any issues, make sure you inserted your coding correctly. If you made sure, then let me know the issue.

I hope this long wall of text and jibberish was worth it. :L

The finished result should look something like this: http://gfycat.com/BriefFlawlessAmericanlobster (http://gfycat.com/BriefFlawlessAmericanlobster)


Title: Re: [Advanced] How to Make a Pseudo Extreme Speed
Post by: SmashHero on November 28, 2015, 02:08:15 AM
I tried this for my Pit PSA. The vertical momentum works but Pit won't move horizontally.
Any solution for this?


Title: Re: [Advanced] How to Make a Pseudo Extreme Speed
Post by: KingJigglypuff on November 28, 2015, 07:51:18 AM
Mind showing me how you inserted your coding? Like a screencap?

Are you making sure to press the control stick?


Title: Re: [Advanced] How to Make a Pseudo Extreme Speed
Post by: SmashHero on December 01, 2015, 12:03:18 PM
It's ok. I fixed it.
Thank you anyway :)