Kitty Corp Meow Mix Forums

Help & Tutorials => A/A Tutorials => Topic started by: KingJigglypuff on July 23, 2016, 12:42:00 PM



Title: [Advanced] Aerial Taunting
Post by: KingJigglypuff on July 23, 2016, 12:42:00 PM
After toying around with a bunch of coding, I've figured out Aerial Taunting, and I'm here to show you what I did.

What's needed:
-A FitFighter.pac that has Action Overrides. (Example Image) (http://i.imgur.com/FVjhcn4.png)
-Depending on which character you want to edit; PSA (https://www.dropbox.com/s/2msd86co64ujdfb/PSA%20v1.3%20%28Sammi%20Husky%29.zip?dl=0), a Hex Editor (https://mh-nexus.de/en/downloads.php?product=HxD), and Tabuu (https://www.dropbox.com/s/iymz8d0ja9bie4i/Tabuu%20Alpha%203.zip?dl=0), or BrawlBox v0.68b (http://forums.kc-mm.com/Gallery/BrawlView.php?Number=31974).
-On the coding side of things, you'll need 1 to 3 Sub Routines and 1 LA-Bit Variable. (Check out this thread to see which Variables you can use) (http://forums.kc-mm.com/index.php?topic=74266.0) (Check this Open SA page to see which Variables the game already uses) (http://tinyurl.com/p4ojsod)

Now that you have everything you need, let's move onto the tutorial.

Part 1
1a.) Setting up the Override Coding.
Here, we'll start with the coding for the Action Override itself. We'll be making an Action Override for the Taunt Action, which is Action 268 (BB)/10C (PSA). In BrawlBox, it's as easy as right-clicking on the entry and adding a new Override [(Example Image) (http://i.imgur.com/NP7uNQa.png)], but if your character can't be edited in BrawlBox, you'll have to use the other tutorial for adding new Overrides. (Link) (http://forums.kc-mm.com/index.php?topic=65585.0)

After you have your Override added, insert the following coding into the newly created Override.
A: Grounded Up Taunt (Facing Right)
B: Aerial Up Taunt (Facing Right)
AA: Grounded Up Taunt (Facing Left)
BB: Aerial Up Taunt (Facing Left)
C: Grounded Down Taunt (Facing Right)
D: Aerial Down Taunt (Facing Right)
CC: Grounded Down Taunt (Facing Left)
DD: Aerial Down Taunt (Facing Left)
E: Grounded Side Taunt (Facing Right)
F: Aerial Side Taunt (Facing Right)
EE: Grounded Side Taunt (Facing Left)
FF: Aerial Side Taunt (Facing Left)
Change Action action=0, requirement=Animation End
Additional Change Action Requirement On Ground
Change Action action=14, requirement=Animation End
Additional Change Action Requirement In Air
Controller 02
If Button Pressed: 6
   If Facing Right:
      Basic Variable Set: RA-Basic[0] = A
      Basic Variable Set: RA-Basic[1] = B
   Else
      Basic Variable Set: RA-Basic[0] = AA
      Basic Variable Set: RA-Basic[1] = BB
   End If
   Character Specific 0A: Value-0,
Else If Button Pressed: 7
   If Facing Right:
      Basic Variable Set: RA-Basic[0] = C
      Basic Variable Set: RA-Basic[1] = D
   Else
      Basic Variable Set: RA-Basic[0] = CC
      Basic Variable Set: RA-Basic[1] = DD
   End If
   Character Specific 0A: Value-1,
Else If Button Pressed: 8
   If Facing Right:
      Basic Variable Set: RA-Basic[0] = E
      Basic Variable Set: RA-Basic[1] = F
   Else
      Basic Variable Set: RA-Basic[0] = EE
      Basic Variable Set: RA-Basic[1] = FF
   End If
   If Button Pressed: 9
      Character Specific 0A: Value-2,
   Else If Button Pressed: 10
      Character Specific 0A: Value-3,
   Else
      If Compare: IC-Basic[8] < 0
         Character Specific 0A: Value-2,
      Else
         Character Specific 0A: Value-3,
      End If
   End If
End If
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=RA-Basic[0], pass frame=true
      Else
         Change Subaction: sub action=RA-Basic[0]
         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=RA-Basic[1], pass frame=true
      Else
         Change Subaction: sub action=RA-Basic[1]
         Bit Variable Set: RA-Bit[16] = true
      End If
      Additional Subaction Change Requirement: On Ground
   End If
   Loop Rest
Execute Loop
What this coding does is change the Taunt Action to be able to be used in the air, but we're not done yet. We still need to ensure Up Taunt can even be used in the air, as Actions have their own Flags that allow them to be used in the air or not. What we need to do now is edit the Action Flags and Unknown Action Flags (also known as Unknown7 in BB).

1b). Action Flags and Unknown Action Flags
Like Action Overrides, editing Action Flags is easy with BrawlBox. You just need to open the dedicated folders, navigate to the given Action (in this case, it's Action 268), and edit them to match the values the Common Action Flags and Unknown7 Jigglypuff's Rest (Action 277) uses. You'll have to open both your moveset and Jigglypuff's file, and compare the values of Action 268 of your file to Jigglypuff's Action 275 (you'll have to open Action Flags, rather than Common Action Flags for this one).

It's unfortunately not that easy with the PSA side of things, but it's not as difficult as you think. You just need to open your character and Jigglypuff in Tabuu, navigate to Action ??? and Common/Special Action Flags [(Example Image) (http://i.imgur.com/JyOWFPa.png)], and make your character's Action 10C match Jigglypuff's Action 115, but you need to right click, and click on Hex View, then edit to match. After that, scroll up, right click, and save.
NOTICE: Tabuu will crash when you save your edits. This is supposed to happen. Your edits still saved, so don't panic.

Part 2: Button Input Coding
This is the part where you insert the coding needed to even activate the Aerial Taunts. Now, depending on whether or not you want to use an external gct code, your coding will be built around what you chose. The said gct code is Independent Sub Routines. (Thread Link) (http://forums.kc-mm.com/index.php?topic=75336.0)

This is also the part in which you make a new Sub Routine. After you've made your Sub Routine, insert the following coding into it.
XX: LA-Bit Variable
If Button Press: 6
Or Button Press: 7
Or Button Press: 8
Or Button Press: 9
Or Button Press: 10
   Change Action action=268, requirement=In Air
   Additional Change Action Requirement Value Not Bit is Set: LA-Bit[XX]
   Additional Change Action Requirement Not Is in Water
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 16
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 33
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 61
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 62
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 63
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 66
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 69
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 71
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 72
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 75
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 76
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 86
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 98
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 100
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 112
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 171
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 172
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 173
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 204
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 205
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 206
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 207
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 208
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 209
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 210
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 211
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 218
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 213
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 214
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 215
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 216
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 217
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 226
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 227
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 230
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 231
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 232
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 233
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 234
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 235
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 236
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 237
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 238
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 239
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 240
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 258
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 259
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 263
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 264
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 265
   Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 266
End If
What this coding does is check the following things if the DPad is pressed: Which Action the character isn't in, if they're in the air, if the Bit is not set, and if they're not in water. If all requirements are met, then pressing the D-Pad will put the character into the Aerial Taunt Action. The Actions listed in the coding are Actions in which the character can't interrupt with anything, and the Bit check is there, so you don't go spamming the D-Pad in the air.

If you're not going to use the gct code, then you'll need to place the coding inside an infinite loop as such.
Set Loop Infinite
   If Button Press: 6
   Or Button Press: 7
   Or Button Press: 8
   Or Button Press: 9
   Or Button Press: 10
      Change Action action=268, requirement=In Air
      Additional Change Action Requirement Value Not Bit is Set: LA-Bit[XX]
      Additional Change Action Requirement Not Is in Water
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 16
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 33
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 61
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 62
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 63
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 66
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 69
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 71
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 72
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 75
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 76
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 86
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 98
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 100
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 112
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 171
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 172
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 173
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 204
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 205
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 206
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 207
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 208
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 209
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 210
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 211
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 218
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 213
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 214
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 215
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 216
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 217
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 226
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 227
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 230
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 231
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 232
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 233
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 234
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 235
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 236
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 237
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 238
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 239
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 240
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 258
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 259
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 263
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 264
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 265
      Additional Change Action Requirement Comparison Not Compare: IC-Basic[20001] == 266
   End If
   Synchronous Timer: frames=1
Execute Loop

Next, you'll need to insert the following coding into the DamageFall Sub Action:
If Compare: IC-Basic[20003] == 69
Or Compare: IC-Basic[20003] == 117
   Bit Variable Clear: LA-Bit[68] = false
Else
   Bit Variable Set: LA-Bit[68] = true
End If
What this coding does is check to see if the character was previously in hitstun or hanging on a ledge before entering the tumble Action. If the previous Action was either of those, then the Bit will be cleared. Otherwise, the Bit will be set. This is to prevent the character from taunting out of Final Smashes, such as Ike's and Kirby's Final Smashes.

Inside the Wait1 Sub Action, you'll place the following coding if you chose to use the External Sub Routines code.
X=Offset of the first Sub Routine made in this step.
Bit Variable Clear: LA-Bit[68] = false
If 60: 8
   D070200: Value-8, Value-16,
   D050200: Value-8, Offset-SubRoutineX in the SubRoutines list,
End If
This will clear the Bit used for the Bit check, alongside establishing the start of the Independent Sub Routine

If you didn't choose to use the gct code, you'll just insert the Bit Variable Clear command and a Sub Routine command that directs to the newly created Sub Routine, but you'll also have to insert this Sub Routine into every aerial Sub Action that can be acted out of at one point or another. Since it's an infinitely looped string of coding, you'll need to merge Sub Action coding to make room for inserting the Sub Routine.

Part 3: Misc
To finish things off, you'll need to insert a Bit Variable Set command into the beginning of Aerial Sub Actions (including the Taunt Sub Actions) that can be acted out of (with the exception of the Falling Sub Actions) to prevent Taunting out of the move early. At the end of the Sub Action, you'll insert a Bit Variable Clear command to allow it to be acted out of normally, but only if the Sub Action has an Allow Interrupt command (in which you would place the Bit Variable Clear before it). To optimize things, you can use Sub Routines for the Bit Variable Set and Bit Variable Clear parts.

Even though not many people will use this, I'm making this to share what I did, while also throwing this out for those who would use this. Thanks for reading.

If you come across any issues, make sure you inserted the coding correctly, and are also able to consecutively trigger the issue. If you can, then let me know what's wrong. Otherwise, I'll have to dismiss your issue as you doing it wrong.


Title: Re: [Advanced] Aerial Taunting
Post by: Bush on July 24, 2016, 10:01:34 PM
I'd love to see a example :0


Title: Re: [Advanced] Aerial Taunting
Post by: KingJigglypuff on July 25, 2016, 05:41:26 AM
I'd love to see a example :0
Here you go then. :P
https://gfycat.com/SimplisticSomeBeardeddragon


Title: Re: [Advanced] Aerial Taunting
Post by: Bush on July 25, 2016, 11:03:44 AM
Here you go then. :P
https://gfycat.com/SimplisticSomeBeardeddragon

Holy Bushes, that's pretty neat and I really appreciate the fact you figured this out on your own

Maybe in the future you could apply the same to to Smash4 :D