Home Gallery Resources The Team Rules chat Login Register
Pages: [1]
Author Topic: [Advanced] How to Make a Pseudo Extreme Speed  (Read 2092 times)
0 Members and 1 Guest are viewing this topic.
KingJigglypuff
Meme Machine
Moderator
****
Offline Offline

Posts: 7206


  • Awards RAGE!! >9000 Hyperactive Contributor Heart Container

  • View Profile Awards
    « 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
    Also check this page to see which Variables are already used by the game. 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
    « Last Edit: November 23, 2015, 04:13:58 PM by KingJigglypuff » Logged

    I don't take requests.

    My PSA Thread

    SmashHero
    Intermediate Kitten
    **
    Offline Offline

    Posts: 16



    View Profile Awards
    « Reply #1 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?
    Logged

    KingJigglypuff
    Meme Machine
    Moderator
    ****
    Offline Offline

    Posts: 7206


  • Awards RAGE!! >9000 Hyperactive Contributor Heart Container

  • View Profile Awards
    « Reply #2 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?
    Logged

    I don't take requests.

    My PSA Thread

    SmashHero
    Intermediate Kitten
    **
    Offline Offline

    Posts: 16



    View Profile Awards
    « Reply #3 on: December 01, 2015, 12:03:18 PM »


    It's ok. I fixed it.
    Thank you anyway Smiley
    Logged

    Pages: [1]
    Print
    Jump to: