Home Gallery Resources The Team Rules chat Login Register
  Show Topics
Pages:  1 2 [3] 4 5 6 7
31  Super Smash Bros. Brawl Hacking / Attacks and Animations / MOVED: Up kick on: August 07, 2016, 08:55:35 AM
This topic has been moved to A/A Help.

http://forums.kc-mm.com/index.php?topic=77345.0
32  Help & Tutorials / A/A Tutorials / [Advanced] Aerial Taunting 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)
-Depending on which character you want to edit; PSA, a Hex Editor, and Tabuu, or BrawlBox v0.68b.
-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) (Check this Open SA page to see which Variables the game already uses)

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)], but if your character can't be edited in BrawlBox, you'll have to use the other tutorial for adding new Overrides. (Link)

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)], 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)

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.
33  Super Smash Bros. Brawl Hacking / Attacks and Animations / [Announcement/Tip] Use Tinyurl when linking to the OpenSA Wiki on: July 17, 2016, 12:14:24 PM
You may have noticed me linking people to tinyurl links when linking to a page on the OpenSA Wiki.

This is due to a conflict between the host of the OpenSA Wiki and a few KC-MM members that happened a few years ago, which resulted in the host to re-direct links posted in KC-MM to a different website before re-directing to the actual page itself.

To show you what I mean, here's the raw url to the OpenSA Main Page: http://opensa.dantarion.com/wiki/Main_Page
Notice how "http://anonym.to/?" has been added to the url. anonym.to is apparently a proxy website, but there have been reports of it containing browser high-jacking malware.

To bypass this, copy + paste the original url, and make it a tinyurl with TinyURL. http://tinyurl.com/

After you made your Tiny URL, copy it to the clipboard, and paste it into your message.

Here's an example with the main page: http://tinyurl.com/zfg4u7p
This will directly link you to the OpenSA Main Page without redirecting though http://anonym.to/?.

When you get to the Main Page, I would highly recommend you Bookmark both the page and http://tinyurl.com/.
34  Super Smash Bros. Brawl Hacking / Attacks and Animations / MOVED: Ivysaur's Solar Beam/Pika's Electric attacks on: June 06, 2016, 05:02:20 PM
This topic has been moved to A/A Help.

http://forums.kc-mm.com/index.php?topic=76923.0
35  Super Smash Bros. Brawl Hacking / Attacks and Animations / MOVED: So theres' this KH riku PSA, and i wanna make the Fair/Bair have actual knockbac on: May 24, 2016, 08:56:50 AM
This topic has been moved to A/A Help.

http://forums.kc-mm.com/index.php?topic=76855.0
36  Super Smash Bros. Brawl Hacking / Attacks and Animations / MOVED: Learning how to make PSA's on: May 23, 2016, 08:14:12 PM
This topic has been moved to A/A Help.

http://forums.kc-mm.com/index.php?topic=76853.0
37  Super Smash Bros. 4 Hacking / Smash 4 (Wii U) Hacking / [Sm4sh Mods] (Unofficial) Patch 1.1.7: The Fan Patch [Name Pending] on: May 04, 2016, 11:22:33 AM
This may be too early with this, but ech.
I mentioned this a few days ago in the main Sm4sh modding thread, but for those who just lurk or don't read past thread pages, I'll give a rundown.

Ever since I've started playing Sm4sh and seeing the tier list, I've been wanting to make a balance overhaul to the majority of the cast. I would also like to eventually fix/remove/adjust various things that are jank about Sm4sh (Ex: Rage, Footstooling, Glitches, etc) when the tools are available.

My goal is to make every character viable in at least one way or another with no character being too bad to even bother with (Ex: Palutena, Zelda, etc) or too broken to even bother with (i.e. Bayonetta). Lower tier characters will be subject to various buffs, while higher tier characters will be left alone for the most part (unless an official patch overnerfed something and/or if something about them is broken).

The best I can do right now if Frame data, Attribute, and Hitbox edits, so Floating Point-related things (Ex: Witch Time, Counter damage multipliers, etc) cannot be changed at this current time until they're properly identified.

You can see the current changelist here (this pastebin will be updated as this mod progresses): http://pastebin.com/jSD8wcjM

Download: None at the moment, unless if people really want to try what I have so far.

Feel free to give your own thoughts and suggestions. Suggestions from dedicated character mains are highly encouraged.

Credits:
-SilentDo0m. Suggested edits for Charizard, Roy, Shulk, Little Mac, and Mewtwo.
-Marioking64DS. Suggested edits for Wario.
-calculusx. Ideas taken from their thread on reddit (/r/smashbros).
-DarkLordRS. Suggested edits for Mii Gunner.
-Palutena and Dedede Boards (SmashBoards). Ideas taken from discussion threads.
-Zikkh Suggested edits for King Dedede.
38  Super Smash Bros. Brawl Hacking / Attacks and Animations / MOVED: Special Fall on: February 23, 2016, 08:02:12 PM
This topic has been moved to A/A Help.

http://forums.kc-mm.com/index.php?topic=76186.0
39  Help & Tutorials / A/A Tutorials / MOVED: Character Creation Request on: February 01, 2016, 04:58:52 PM
This topic has been moved to A/A Requests/Ideas.

http://forums.kc-mm.com/index.php?topic=75998.0
40  Super Smash Bros. Brawl Hacking / Attacks and Animations / MOVED: Who can finish this old Kid Goku over luigi beta? on: January 25, 2016, 11:35:30 AM
This topic has been moved to A/A Requests/Ideas.

http://forums.kc-mm.com/index.php?topic=75941.0
41  Help & Tutorials / General Tutorials / Setting up Brawl Mods to use with Dolphin Emulator on: January 18, 2016, 05:00:21 PM
From another thread I wrote this in, I decided to make a separate thread with what I wrote, just so people will have a general go to place to learn how to set up Brawl mods for use with Dolphin.

You need the following, alongside your folders set up.

Virtual SD Card Maker: https://sites.google.com/site/anon4453/tools/easy-dolphin-sdcard-maker
WinImage: http://www.winimage.com/download.htm
Gecko OS: http://wiibrew.org/wiki/Gecko_OS
A later version of Dolphin Emulator: https://dolphin-emu.org/download/
NUS Downloader: https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/nusdownloader/NUSDownloader_v19.zip

1.) Create a Virtual SD Card using the Virtual SD Card Maker program. You can go as low as 64 MB or as high as 2 GB, though 2 GB is highly recommended (I believe you can use a cmd function to make the file over 2 GB, but this is just for the basics). Make sure the file produced is named sd.raw and place the file under "C:\Users\*Name*\Documents\Dolphin Emulator\Wii". If there's already an sd.raw file in there, delete it before inserting your newly created file.

2.) Open WinImage and open your sd.raw with it. At this point, you should have all of your files, codes, and Gecko OS inside their respective folders as if you were going to use a Wii. You would also place everything into a dummy folder (Just create a new folder and put everything in it). In WinImage, go to Image > Inject a Folder and search for your dummy folder before injecting it. Save and close afterward. You'll also need to place the boot.elf file from Gecko OS into a folder of your choice.

3.) Open NUS Downloader, go to Database > IOS > 00000000 10000024 - IOS 36 > Latest Version, and make sure the "Pack WAD" option is enabled before starting the NUS download (you can click on the floppy disk icon to choose the location it'll be saved to).

Note: If you dumped your NAND and are using it with your Dolphin build, then you don't need to download and install IOS 36, since it was more than likely already installed into your Wii's NAND prior to dumping, in which you can skip this step and go straight to Step 5.

4.) Open Dolphin, and go to Tools > Install WAD and open the IOS 36 WAD you downloaded from Step 3 with it.

5.) Once you've installed IOS 36, right click on your Brawl ISO entry before clicking on "Set as Default IS0." After that, open up Config, go to Wii, and make sure Insert SD is enabled.

6.) To boot modded Brawl though Dolphin, you can do one of two things. Though before starting the game, make sure you configure Gecko's Hook Type to be AXNextFrame.

6a.) Click Open before searching for your saved boot.elf file.

6b.) Browse for the folder that contains your saved boot.elf like if you're going to add a new IS0. This entry will stay in your Dolphin window for quicker access.

If there's anything else that needs to be added, let me know, and I'll update with misc information/fixes.
42  Super Smash Bros. Brawl Hacking / Attacks and Animations / MOVED: Paper Mario PSA animations on: January 11, 2016, 07:18:43 PM
This topic has been moved to A/A Help.

http://forums.kc-mm.com/index.php?topic=75802.0
43  Super Smash Bros. Brawl Hacking / Attacks and Animations / MOVED: I can't find a psa i downloaded a year ago. (hyper mario?) on: January 03, 2016, 07:26:57 AM
This topic has been moved to A/A Requests/Ideas.

http://forums.kc-mm.com/index.php?topic=75712.0
44  Help & Tutorials / A/A Tutorials / [Expert] How to Port Smash 3DS/Wii U Animations for use with Brawl Skeletons on: December 16, 2015, 05:21:34 PM
[MAJOR UPDATE]: The OP has been updated to include both Sm4sh 3DS to Brawl and Sm4sh Wii U to Brawl animation tutorials.

Sm4sh 3DS -> Brawl
You heard this right. It's now possible to port a Smash 3DS animation for a Brawl skeleton to use.

This tutorial is not recommended for those who don't know their way around Autodesk 3DS Max and Autodesk Maya.

Requirements:
-Ohana 3DS Rebirth.
-Smash 3DS Model.
-Brawl model.
-Autodesk 3DS Max (Recommended 2012 and up).
-WallWorm plugin for 3DS Max. This tutorial will not show you how to install WallWorm.
-Autodesk Maya (Recommend at least 2012 and up).
-BrawlBox (Recommended at least v0.71 and up).
-Script for this tutorial.

Restrictions:
-Bone scaling in the animation must be unified (X, Y, and Z scaling must all be the same).
-Bones must match up to each other before running the script.
-Bones must have the same rotation orders and axes.

Credits:
TheShyGuy: For creating the script to make this all possible.
DSX8 + Heavy D: Showing and teaching me about Ohana 3DS.

This tutorial will be split up into 5 parts. Getting the models, obtaining the animation parts, piecing the animation parts together, Maya usage, and BrawlBox usage.

For example sake, I will be using Charizard for this tutorial.

Now let's get this train rolling.

Part 1: Getting the models.
1a.) Brawl.
Open your extracted Brawl model in BrawlBox (mdl0 located in the FitFighter0X.pac/.pcs). Export the textures as png and the model as dae. You can close out of BrawlBox in the meantime.

1b.) Ohana 3DS Rebirth.
Start by opening up Ohana 3DS Rebirth and clicking on the Ohana3DS icon on the top left of the window. Click Open and search for your extracted Smash 3DS model (mbn format). It doesn't matter which folder you get the model from, but I usually pick the h00 model (high quality model when the game is paused). After a second or so, the model will load.

-Ohana 3DS camera controls-
Rotate: Left Mouse.
Move: Right Mouse.
Zoom: Mouse Wheel.

Once the model loads, 4 panels will appear at the bottom. Click on "Models" and export the as dae. After that, go to "Textures" and export as png (make sure "Export all Textures" is selected). Do not close out of Ohana, as you will need it for Part 2.

1c.) 3DS Max.
Open 3DS Max, but before you import, make sure your 3DS Max scene is set to 60 FPS. You can do this by clicking on the Time Configuration button that's on the bottom right corner of the window, setting the Frame Rate to Custom, and setting the FPS to 60.

Once you have your 3DS Max scene configured, import the Smash 3DS model you exported from Ohana. Make sure your dae import settings import the model's rig, alongside having the scale set to 1.0. After you have verified your settings, go ahead and click "Import" and wait a few seconds (time varies, based on your computer).

If the model appears warped in some ways and un-textured, don't panic, as this is normal (most of the time).
Example:

Fixing the texture-less part is easy. Find the textures you exported, then drag and drop the said textures over the appropriate objects. To make things easier, you can delete the multiple VIS0 models (extra hands, extra faces, etc), as you don't need those, and it would end up causing a bit of clutter (and more lag on lower end computers).

Fixing the deformation is simple as well, click on an object, make sure the Skin Modifier is selected, then scroll down to Advanced Parameters, open it up, then disable Always Deform before enabling it again.

Fixing the Normals can be done by using the Edit Normals Modifier, but it's not needed, as you're only using the model for animation purposes. If you do want to fix the Normals, make sure you move the modifier, so it's under the Skin Modifier.

Once you're done, save your 3DS Max scene and export the model as either dae or FBX (make sure the settings are set to keep the rig and the Scale Factor is 1. Also make sure the Up Axis is set to "Y-Up"). Do not close 3DS Max, as you will need it for Part 3.

If exporting as dae gives you trouble in the later Parts, then export as FBX.

Part 2: Obtaining the animation parts.
Bring Ohana 3DS Rebirth back up, go to the Animations tab, and open the Skeletal animations section. The next step can be a bit confusing, so bear with me.

Smash 3DS animations are split into multiple parts, based on the character. In Charizard's case, there are four separate animation files (Body + Limbs, Wings + Jaw, Tail, and Neck). To make things more tedious, there are multiple folders for certain parts of the game (Fighting, Entry, Result, Classic Mode

Once you're ready, import one of the animation part files (bch format), and find the animation you want to port. Once you find the animation you want to port, export it (it will be exported in smd format). I would recommend naming it to match the part the file is associated with, as you'll be repeating this step with all of the animation file parts.

Note: Smash Attack and Heavy Item Walk animations are set up differently than they were in Brawl.

Once you have the first animation part exported, click "Clear", and repeat the step with the other animation parts.

When you're done, you can close Ohana 3DS Rebirth.

Part 3: Piecing the Animation Parts Together.
3a.) 3DS Max (Wall Worm)
Bring 3DS Max back up and run the Wall Worm SMD and QC Importer (Wall Worm > SMD and QC Importer). Make sure Y-Up and Animated Model are enabled. Now import one of the exported smd animation parts from Part 2. Once the animation part is imported, move the Frame Slider to see the imported animation part in action. To make things easier, see how many Frames your imported animation has, click on the Time Configuration icon again, and set the End Time parameter to the amount of Frames the animation has.

Note: Do not import the next animation part until the next step in this part is completed.

Open the Select from Scene window (hotkey is usually "h"), and select only the associated bones with the animation part (if the bone doesn't move during the animation, then don't select it). Once you have the bones selected, Export the selected bones (click the arrow next to Export and click on "Export Selected") as FBX.

Repeat this process with the other animation parts you exported. Once you have all the parts exported, you can close out of the Wall Worm SMD and QC Importer, but keep 3DS Max open.

3b.) 3DS Max (Again)
Now that you have all the animation parts exported as FBX, import those exported animations one at a time. Make sure you import the Body part of the animation last, as importing a part after it will nullify the HipN movement. Play though the animation to make sure all the parts are animating correctly.

Now select all the bones and export selected as FBX. You can delete the original FBX parts if you wish, alongside the smd parts, as you won't be needing those anymore. You can also close 3DS Max now.

Part 4: Autodesk Maya.
4a) Importing models and bone names.
Open Autodesk Maya. Like with 3DS Max, make sure you set the scene so it runs at 60 FPS before importing your models. You can follow Eternal Yoshi's Maya animation tutorial to help you further configure your Maya scene. http://forums.kc-mm.com/index.php?topic=64144.0

Once you have your scene configured, import only the Brawl model for now (make sure the scale is set to 1.0). Once the Brawl Model is imported, bring up the Outliner window (Window > Outliner) and rename the XRotN bone to RotN. After that, select the TopN bone. While the TopN bone is selected, go to Modify > Prefix Hierarchy Names, and make sure you have "Brawl_" (without quotations) as the prefix name. It's important that you have the prefix as "Brawl_", as the script requires the Brawl bone names to have the "Brawl_" prefix in order to work (you can change the required prefix name to something else if you know your way around scripts). It's also done to prevent done names conflicting when the Smash 3DS model is imported.

Once the Brawl model is imported and its bones are renamed, import the Smash 3DS model (like the Brawl model import, make sure the scale is 1.0). You do not need to rename the bones for the Smash 3DS import.

After the Smash 3DS model is imported, make sure the TopN bone of the Brawl model and the TransN bone of the Smash 3DS model have a universal scale of 1.

Now click on the Script Editor icon (located on the bottom right of the Maya window) and open the script. Select both the TransN and Brawl_TopN bones, select all the text in the bottom part of the Script Editor window, and click Execute (the singular, blue arrow icon).

Note: Make sure you set the bottom tab of the Script Editor window to Python, or else the script won't work.

Save your Maya scene for future use, assuming you're going to port more than one animation.

4b.) Importing the animation, baking the animation, and exporting the animation.
Now that you have everything set up, you can now import the completed FBX animation you exported from Part 3.

Once the animation is imported, play through it to make sure everything is working. If everything is working, then follow Eternal Yoshi's Maya animation tutorial once more to learn how to bake the animation. Make sure you only select the Brawl bones when baking the animation.

After you're done baking the animation, make sure those Brawl bones are still selected, and export as anim. You would again, follow Eternal Yoshi's tutorial for proper export settings.

You may now close Autodesk Maya.

Part 5: Finishing up with BrawlBox.
Open BrawlBox and either make a new brres or open your character's FitFigherMotionEtc.pac (AnimationData[0]). Now import the exported anim animation from Step 4.

Once the animation is imported into BrawlBox, rename each Bone Entry to remove the "Brawl_" part of the bone name (Make sure RotN is renamed to XRotN). Save afterward. To make sure everything went correctly, open your Brawl character model in BrawlBox, preview the model, and open the file you have your newly imported animation.

Note: The lower the Sample rate parameter during the baking step of Part 4, the more precise the animation is, but at the cost of higher file size. To help lower file size, delete bone entries that have no animation to them, delete the Translation and Scale keyframes of each associated bone for every Frame (except Frame 1).

Sm4sh Wii U -> Brawl
Hey, it's that time again. Animation editing is now possible in Sm4sh Wii U, and by extension, that means we can rip animations from the Wii U version as well, so that means another lengthy tutorial from me on how to rip these animations, and import them into Brawl for proper use.

[NOTICE] This tutorial will be a complicated one if you don't know what you're doing, so unless you have a general knowledge and/or are willing to learn how to use and navigate 3DS Max, Autodesk Maya, BrawlBox, and Sm4sh Forge, then I cannot recommend this tutorial to you, as I will not be teaching how to use these programs.

Requirements:
-Sm4sh Forge. https://github.com/jam1garner/Smash-Forge/releases
-Autodesk 3DS Max (Recommened 2012 and up).
-Autodesk Maya (Recommended 2012 and up).
-BrawlBox (Recommened at least v0.71 and up).
-Brawl model.
-Sm4sh Wii U model files. https://www.mediafire.com/?e7tacds6nrot6
-Sm4sh Wii U animation files. https://www.dropbox.com/s/02ccxq1y7ud6pl6/Sm4sh%20Fighter%20Scripts%20and%20Motion%20Files%20%28v1.1.6%29.zip?dl=0
-Sm4sh Wii U model importing script for 3DS Max. https://www.dropbox.com/s/1p1vw5hgn49h40k/SSB4U_NDP3_Debug_Mod.ms?dl=0
-Script for this tutorial. https://www.dropbox.com/s/fudc8i2qa8bmsiy/HierarchyConstrain_Good.py?dl=0

Restrictions:
-Bone scaling in the animation must be unified (X, Y, and Z scaling must all be the same).
-Bones must match up to each other before running the script.
-Bones must have the same rotation orders and axes.

Credits:
-TheShyGuy (http://forums.kc-mm.com/index.php?action=profile;u=3201): For creating the script to make this all possible.
-RandomTalkingBush (http://forums.kc-mm.com/index.php?action=profile;u=3041): For creating the 3DS Max script.
-Ploaj, jam1garner, Sammi_Husky (http://forums.kc-mm.com/index.php?action=profile;u=24730), and Y2K. For creating Smash Forge.

Now that you have everything you need, let's get started. This tutorial will be split up into 3 parts: Obtaining the models, ripping the animations, and Maya usage.

1.) Obtaining the models.
1a.) Brawl model.
This part should be the easiest part. Just open your character's model file (FitFighter0X.pac) in BrawlBox, right click the MDL0, and export as DAE. You can close out of BrawlBox afterward for now.

1b.) Sm4sh model.
After opening 3DS Max, go to MaxScript > Run Script, and locate the Sm4sh Wii U model importing script. You'll see several options, which you can ignore, as the only thing you need is the model (I will not go over how to rip and apply textures, as all you're doing is getting the model for animation purposes). Once the script is open, click "Open NUD", and search for your Sm4sh character's nud.
[NOTICE] You must have both the NUD (model.nud) and VBN (model.vbn) files in the same folder when browsing for your Sm4sh model, or else the model will import without a skeleton and rig. After your model imports, you'll now have to rename certain bones to their Brawl counterparts.

Here's a list of the initial bones you'll need to rename and what to rename them to. (Some characters have character-specific bones that aren't listed here, so in that case, you'll need to find the Brawl equivilant to your Sm4sh bone, and rename it as such.
Ex: Cape bones, Clothing bones, etc)
RotN -> XRotN
LIndex1N -> L1stNa
LIndex2N -> L1stNb
LMiddle1N -> L2ndNa
LMiddle2N -> L2ndNb
LRing1N -> L3rdNa
LRing2N -> L3rdNb
LPinky1N -> L4thNa
LPinky2N -> L4thNb
LThumb1N -> LThumbNa
LThumb2N -> LThumbNb
RIndex1N -> R1stNa
RIndex2N -> R1stNb
RMiddle1N -> R2ndNa
RMiddle2N -> R2ndNb
RRing1N -> R3rdNa
RRing2N -> R3rdNb
RPinky1N -> R4thNa
RPinky2N -> R4thNb
RThumb1N -> RThumbNa
RThumb2N -> RThumbNb

After the model is imported, and you've renamed the respective bones, you can export as DAE, and close 3DS Max.

2.) Ripping the Animations.
After you've obtained your models, you can open Sm4sh Forge, and open your Sm4sh model (the original NUD, not the DAE you exported. And just like with step 1b, make sure the VBN is in the same place as well. This is very important. If you want to view textures as well, then make sure the NUT file is also in there.) by going to File > Open, and searching for your NUD.

Once your model is open, go to Animation > Import, and browser for your character's respective motion.pac files.
[NOTICE] Every character has at least 3 motion.pac files. One for their body, one for their left fingers, and one for their right fingers. Most characters will have more than these three for specific parts (Ex: Charizard has an additional 3 motion.pac files for its wings + jaw, tail, and neck). You can also only open one motion.pac at a time, so you'll have to repeat this part of the step multiple times.

After you have your motion.pac open, search for the animation you want to port, select it, and go to Animation > Export, and set the File to Type to ANIM, and save to a place you'll remember.

To export an animation from another motion.pac file, you'll need to go to Animation > Clear, and repeat the second section of this step.

Repeat this step until you have all the animations (and their respective parts) you want to port.

Edit: [NOTICE]: Certain exported ANIM files from Sm4sh Forge may cause Maya to hang indefinitely. There is no known cause as of what causes these specific animations to have this issue, so if you encounter this issue, then I'm afraid there's nothing you can do until it's looked into. If you need to still port the animation, then I'd recommend you to follow the 3DS version of the tutorial.

3.) Maya usage
This is the final part of the tutorial, and most often is the most polarizing, but if you've come this far, don't back down now, as once you get the hang of this tutorial, it'll be relatively easy from this point onward.

3a.) Setting up your Maya Scene
Once Maya is open, you'll need to properly configure the Maya scene before you can import the models (you can still import them, but it's important to have the scene configured for Brawl's framerate of 60 FPS).

To start things off, make sure the .anim plugin is loaded. You can do this by going to Settings/Preferences > Plug-in Manager, and making sure the animImportExport.mll plug-in is set to both load and auto-load. Refresh the scene afterward.

After you've verified that the plug-in is loaded, make sure your Maya scene is configured to run at 60 FPS. You can do this by going to Window > Settings/Preferences > Preferences > Settings, and changing Time to NTSC Field (60 FPS). Save the options.

Once saved, you'll see the Frame number set to 2.50 on the bottom left, change this to 1.

3b.) Model Importing
Now that you have your scene configured, import the Brawl model first, then open the Outlier (Window > Outlier), select the TopN bone, go to Modify > Prefix Hierarchy Names, and make sure you have "Brawl_" (without quotations) as the prefix name. It's important that you have the prefix as "Brawl_", as the script requires the Brawl bone names to have the "Brawl_" prefix in order to work (you can change the required prefix name to something else if you know your way around scripts). It's also done to prevent done names conflicting when the Smash 3DS model is imported.

Once the Brawl model is imported and prefixed, go ahead and import the Sm4sh model. You don't need to prefix the Sm4sh skeleton. If the Sm4sh model is laying on its back, select the Sm4sh model's TransN bone, and rotate it either 90 or -90 degrees on the X Rotation.

[NOTICE] It's very important that both the Brawl and Sm4sh models are standing up, and their scales are 1. If neither models have a scale of 1, you can usually fix this by selecting the root bone, and manually scaling it to 1 (TopN for Brawl, and TransN for Sm4sh).

3c.) Constraining the Skeletons
Now that you have both models imported, open the Script Editor (Window > General Editors > Script Editor), and make sure the tab in the bottom part of the new window is set to Python.

Once the Script Editor is open, go to File > Load Script, and browse for the Maya script (The PY file you downloaded from this tutorial's opening). Once the script is open, select both TransN (Sm4sh) and Brawl_TopN (Brawl), and click the Execute icon (the singular, blue arrow icon). After the script runs, your two skeletons should now be constrained (I.E. When the Sm4sh skeleton moves, the Brawl skeleton will move with it). Save your scene afterward if you plan on porting multiple animations.

3d.) Importing the Animations
Now that your skeletons are constrained, select every single bone in the Sm4sh skeleon (you can easily do this by selecting the TransN bone, and going to Modify > Select Hierarchy), and import each part to your animation that you want to port. If the skeleton deselects after importing, just re-select it again, and import the next part.

Once every part of the animation is imported, adjust your time slider to however many Frames your animation has. If the animation is shorter/longer than 60 Frames, you'll need to decrease/increase the Frame count of the timeline to allow the full playthrough of the animation. You can do this by decreasing/increasing the first 60 value on the bottom right to the amount of Frames your animation has.

Play the animation to make sure everything imported properly.

3e.) Baking the animation.
Next, you'll be selecting every relevant Brawl bone for the animation (i.e. any Brawl bone that moves during the animation).

Before you start to bake the animation, make sure your bake settings are set as such (Edit > Keys > Bake Simulation, but don't click on it. Instead, click on the box next to it.): http://i.imgur.com/Ej0TP1i.png

Note: If your models have different translations (i.e. needing to manually fix different translations), then set your bake settings to use the Channel Box, rather than All Keyable, but when baking from the Channel Box, you'll need to select both the bones, and the respective channel parts (mainly X/Y/Z Translations, X/Y/Z Rotation, or both, depending on the bone. Though you'll always want to bake both Translation and Rotation for the HipN bone. If you're baking bones that only rotate, then deselect X/Y/Z Translation.)

After everything is set up, click Bake. Once everything is done baking, select every Brawl bone, select X/Y/Z Translation, and X/Y/Z Rotation, go to Frame 1 of your animation, right click, and click Key Selected.

Though don't think you're done yet, as you still need to modify the Animation Curves to prevent the animation from jittering all over the place when the game is slowed (i.e. Timer and 1/4 Training Mode speed). To do this, select every Brawl bone that you baked, open the Graph Editor (Window + Animation Editors > Graph Editor), select every Curve that appears (they should appear as a bundle of colored lines in the Graph Editor), and apply the Euler Filter (Graph Editor > Curves > Euler Filter).

3d.) Exporting the Baked Animation
Now that everything is all set to go, you now just need to do two more things before you export the animation.

Select the Sm4sh TransN bone, and add a prefix to it, just like you did with the Brawl skeleton, but this time, it doesn't need to be anything specific.

Next, go to Modify > Search and Replace Names, insert "Brawl_" (without quotations) into the Search for box, and a space in the Replace with box, then click Replace.

You can now export the animation by selecting every Brawl bone, and going to File > Export Selected, and change the File of Type to ANIM. Make sure your settings are as such: http://i.imgur.com/vdX9EJp.png

If you have more animations to port, re-open your saved scene, and repeat step 3d and onward until you've ported all your animations. Do not save after all of this. Your saved scene should only be from step 3c. If you don't have anymore animations to port, you can simply close Maya.

After you've finished exporting your animations, you can now import your exported ANIM files into BrawlBox.

Completed Result Example:

This tutorial was much longer than my previous tutorials, but I hope it was worth it for those who want to back port Smash 4 movesets into Brawl. Thank you for reading this tutorial.
45  Help & Tutorials / A/A Tutorials / How to Make a Counter on: December 13, 2015, 10:56:35 AM
Unlike the last tutorial I made, making a counter is fairly simple to make and shouldn't eat up too much file size.

For a counter, this tutorial will be split into three parts: Counter, Counter Attack, and Misc.

Requirements:
-Two open Special Actions and four open Sub Actions.
-Three LA Float variables. (Check this link to see which variables you're able to use. http://forums.kc-mm.com/index.php?topic=74266.0 )

Let's begin now.

Note: The coding previews will be using BrawlBox/Decimal previews.

Part 1: Counter.
1a) Actions.
In a sense, you could code the main Action for the Counter for whichever Special you please. The initial coding is fairly simple, as it's basically your standard Action coding, alongside a few additional commands.

A = Float 1
X = Action to change to when the Counter is activated.
Y = Ground Sub Action.
Z = Air Sub Action.

Quote
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
Float Variable Set: LA-Float[A] = IC-Basic[2]
Float Variable Add: LA-Float[A] += 1
Change Action action=X, requirement=Compare: IC-Basic[2] >= LA-Float[A]
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=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: In Air
      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


What this will do is set a Float, based on your current damage and add one to it, as I believe it has to do with something about the float being stored as one damage less. Once the float is set, the Action will change if your current damage changes without taking knockback (Super Armor needed).

1b) Sub Actions.

This is fairly simple, all you need to do is in the Main Tab, set the Frame in which the Counter activates and how long you want the Counter to last for. Though rather than intangibility, you use Super Armor. You can do anything you want in the other tabs.

X=Frame to begin the Counter on.
Y=Frame to end the Counter on.

Quote
Asynchronous Timer: frames=X
Super/Heavy Armor: State=Super Armor, Tolerance=0
Asynchronous Timer: frames=Y
Super/Heavy Armor: State=None, Tolerance=0


Since the Change Action command changes when damage increases without flinching, using Super Armor is essential. For the aerial Sub Action, just insert a GoTo command and have it reference the ground Sub Action.

Part 2: Counter Attack
2a) Actions

Like Part 1, the Action coding of the Counter Attack is straightforward with additional commands.

A=Float 1.
E=Float 2.
X=Ground Sub Action.
Y=Air Sub Action.
Quote
Float Variable Set: LA-Float[E] = IC-Basic[2]
Float Variable Subtract: LA-Float[E] -= LA-Float[A]
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
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: In Air
      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

What this does is apply your new damage to a new float and subtracts the damage you used to have from the damage you have now.

2b) Sub Actions.

Again, this is rather straightforward, except with a few additional commands.

E=Float 2
C=Float 3
*You do not need to make your Offensive Collision match the one used in the example. You only need to set your damage as variable and have the variable be Float E.
X=Frame hitboxes start on.
Y=Frame to terminate hitboxes on.

Quote
Body Collision: status=Intangible No Flashing
Float Variable Set: LA-Float[C] = 0
Float Variable Subtract: LA-Float[C] -= LA-Float[E]
Float Variable Subtract: LA-Float[C] -= 1
Add/Subtract Damage: LA-Float[C]
Asynchronous Timer: frames=X
Body Collision: status=Normal
*Offensive Collision: Id=0, Bone=10, Damage=LA-Float[E], ShieldDamage=0, Direction=361, BaseKnockback=50, WeightKnockback=0, KnockbackGrowth=85, Size=10, Z Offset=0, Y Offset=0, X Offset=0, TripRate=0%, HitlagMultiplier=x1.5, SDIMultiplier=x1, Flags=813892736
Synchronous Timer: frames=Y
Terminate Collisions
What the coding on the top does is set Float C to 0, so Float E can subtract from it in order to subtract damage via Add/Subtract Damage command. The hitbox just has the damage parameter set to Variable. Make sure to apply a Goto command into the aerial Sub Action.

Take note that this coding will make your counter attack do the same amount of damage from the attack you took. Though it can be changed, alongside a threshold.

Part 3: Misc
This part will show a few misc things to do to make your counter more authentic. This is all done in the Sub Action section we went over in Part 2.

3a) Minimum/Maximum Damage Threshold.
This will show you what to do in order to apply a minimum/maximum threshold for your counter attack.

X=Minimum damage you want your counter attack to do.
Y=Maximum damage you want your counter attack to do.
Quote
If Compare: LA-Float[E] <= X
   Offensive Collision: Id=0, Bone=10, Damage=X, ShieldDamage=0, Direction=361, BaseKnockback=50, WeightKnockback=0, KnockbackGrowth=85, Size=10, Z Offset=0, Y Offset=0, X Offset=0, TripRate=0%, HitlagMultiplier=x1.5, SDIMultiplier=x1, Flags=813892736
Else
   If Compare: LA-Float[E] >= Y
      Offensive Collision: Id=0, Bone=10, Damage=Y, ShieldDamage=0, Direction=361, BaseKnockback=50, WeightKnockback=0, KnockbackGrowth=85, Size=10, Z Offset=0, Y Offset=0, X Offset=0, TripRate=0%, HitlagMultiplier=x1.5, SDIMultiplier=x1, Flags=813892736
   Else
      Offensive Collision: Id=0, Bone=10, Damage=LA-Float[E], ShieldDamage=0, Direction=361, BaseKnockback=50, WeightKnockback=0, KnockbackGrowth=85, Size=10, Z Offset=0, Y Offset=0, X Offset=0, TripRate=0%, HitlagMultiplier=x1.5, SDIMultiplier=x1, Flags=813892736
   End If
End If
This shows the minimum damage threshold coding. If an attack does less than or equal to X, then it'll do X damage. If an attack does more than or equal to Y, then it'll do Y damage. Otherwise, it'll do damage equal to Float E. If your counter attack won't have a maximum threshold, then you can remove the coding related to Y damage.

3b) Damage multiplier.

This will show you how to add a multiplier to your counter attack's damage output. Make sure you put this coding after the Add/Subtract Damage command, but before the hitboxes.

E=Float 2.
X=Multiplier.
Y=How much to add to Float E after Float E is multiplied by X
*=In some instances, the damage will be less than the actual output, so that's what the Float Variable Add command does.

Add the following commands to the counter attack Sub Action
Quote
Float Variable Multiply: LA-Float[E] *= X
*Float Variable Add: LA-Float[E] += Y

What this does does is multiple Float E by X before adding Y to it. In some cases, you might not need Y, so if you don't, then you can remove the Float Variable Add command.

This should cover the essentials of making a Counter. If you come across any issues or have any questions, then ask away. I hope this tutorial will aid others for their projects
Pages:  1 2 [3] 4 5 6 7