Kitty Corp Meow Mix Forums

Help & Tutorials => A/A Tutorials => Topic started by: KingJigglypuff on March 14, 2014, 05:33:11 PM



Title: How to have a proper On Hit Cancel system
Post by: KingJigglypuff on March 14, 2014, 05:33:11 PM
This is for users who want to have an On Hit Cancel system for their PSAs. This method will allow your character to interrupt their attacks into a Tilt, a Smash, a Special, or a Grab (Ground only). If you want your system to be more specific, then you can remove some of the Allow Specific Interrupts from the coding.

Put the following coding in the GFX/SFX/Other Tab of the specified Sub Actions/Attacks.

X= Frame Collisions start on.
Y= Amount of Frames the Collisions last for.
Jab (Attack11, Attack12, Attack13, Attack100Start, Attack100, AttackEnd)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
                Allow Specific Interrupt: Ground Catch
      Allow Specific Interrupt: Ground Special
      Allow Specific Interrupt: Ground Attack
      Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10081
   End If
   Synchronous Timer: frames=1
Execute Loop

Side Tilt (AttackS3Hi, AttackS3S, AttackS3Lw)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Ground Attack
      Allow Specific Interrupt: Ground Special
      Allow Specific Interrupt: Ground Catch
      Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10084
   End If
   Synchronous Timer: frames=1
Execute Loop

Up Tilt (AttackHi3)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Ground Attack
      Allow Specific Interrupt: Ground Special
      Allow Specific Interrupt: Ground Catch
      Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10085
   End If
   Synchronous Timer: frames=1
Execute Loop

Down Tilt (AttackLw3)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Ground Attack
      Allow Specific Interrupt: Ground Special
      Allow Specific Interrupt: Ground Catch
      Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10086
   End If
   Synchronous Timer: frames=1
Execute Loop

Dash Attack (AttackDash)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Ground Attack
      Allow Specific Interrupt: Ground Special
           Allow Specific Interrupt: Ground Catch
   End If
   Synchronous Timer: frames=1
Execute Loop

Side Smash (AttackS4Hi, AttackS4S, AttackS4Lw)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Ground Special
      Allow Specific Interrupt: Ground Attack
      Allow Specific Interrupt: Ground Catch
      Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10088
   End If
   Synchronous Timer: frames=1
Execute Loop

Up Smash (AttackHi4)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Ground Special
      Allow Specific Interrupt: Ground Attack
      Allow Specific Interrupt: Ground Catch
      Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10091
   End If
   Synchronous Timer: frames=1
Execute Loop

Down Smash (AttackLw4)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Ground Special
      Allow Specific Interrupt: Ground Attack
      Allow Specific Interrupt: Ground Catch
      Invert Action Status ID: Interrupt ID=Ground Special, Status ID=10100
      Invert Action Status ID: Interrupt ID=Ground Attack, Status ID=10094
   End If
   Synchronous Timer: frames=1
Execute Loop

Neutral Air (AttackAirN)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Air Jump Aerial
      Invert Action Status ID: Interrupt ID=Air Jump Aerial, Status ID=10061
      Allow Specific Interrupt: Air Special
      Change Action action=51, requirement=Compare: IC-Basic[1018] >= IC-Basic[3186]
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Compare: IC-Basic[1020] >= IC-Basic[3186]
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Compare: IC-Basic[1012] >= IC-Basic[3149]
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Compare: IC-Basic[1011] >= IC-Basic[3149]
      Additional Change Action Requirement Value Button Press: 0
   End If
   Synchronous Timer: frames=1
Execute Loop

Forward Air (AttackAirF)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Air Jump Aerial
      Invert Action Status ID: Interrupt ID=Air Jump Aerial, Status ID=10061
                Allow Specific Interrupt: Air Special
      Change Action action=51, requirement=Compare: IC-Basic[1018] >= IC-Basic[3186]
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Compare: IC-Basic[1020] >= IC-Basic[3186]
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Compare: IC-Basic[1012] >= IC-Basic[3149]
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Not Compare: IC-Basic[1011] >= IC-Basic[3149]
      Additional Change Action Requirement Value Button Not Pressed: 15
      Additional Change Action Requirement Value Button Press: 0
   End If
   Synchronous Timer: frames=1
Execute Loop

Back Air (AttackAirB)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Air Jump Aerial
      Invert Action Status ID: Interrupt ID=Air Jump Aerial, Status ID=10061
      Allow Specific Interrupt: Air Special
      Change Action action=51, requirement=Compare: IC-Basic[1018] >= IC-Basic[3186]
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Compare: IC-Basic[1020] >= IC-Basic[3186]
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Compare: IC-Basic[1011] >= IC-Basic[3149]
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Not Compare: IC-Basic[1012] >= IC-Basic[3149]
      Additional Change Action Requirement Value Button Not Pressed: 15
      Additional Change Action Requirement Value Button Press: 0
   End If
   Synchronous Timer: frames=1
Execute Loop

Up Air (AttackAirHi)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Air Jump Aerial
      Invert Action Status ID: Interrupt ID=Air Jump Aerial, Status ID=10061
      Allow Specific Interrupt: Air Special
      Change Action action=51, requirement=Compare: IC-Basic[1020] >= IC-Basic[3186]
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Not Compare: IC-Basic[1018] >= IC-Basic[3186]
      Additional Change Action Requirement Value Button Not Pressed: 15
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Compare: IC-Basic[1012] >= IC-Basic[3149]
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Compare: IC-Basic[1011] >= IC-Basic[3149]
      Additional Change Action Requirement Value Button Press: 0
   End If
   Synchronous Timer: frames=1
Execute Loop

Down Air (AttackAirLw)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Air Jump Aerial
      Invert Action Status ID: Interrupt ID=Air Jump Aerial, Status ID=10061
      Allow Specific Interrupt: Air Special
      Change Action action=51, requirement=Not Compare: IC-Basic[1020] >= IC-Basic[3186]
      Additional Change Action Requirement Value Button Not Pressed: 15
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Compare: IC-Basic[1018] >= IC-Basic[3186]
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Compare: IC-Basic[1012] >= IC-Basic[3149]
      Additional Change Action Requirement Value Button Press: 0
      Change Action action=51, requirement=Compare: IC-Basic[1011] >= IC-Basic[3149]
      Additional Change Action Requirement Value Button Press: 0
   End If
   Synchronous Timer: frames=1
Execute Loop

Ground Neutral Special (If it has collisions)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Ground Attack
      Allow Specific Interrupt: Ground Special
      Allow Specific Interrupt: Ground Catch
      Invert Action Status ID: Interrupt ID=Ground Special, Status ID=10097
   End If
   Synchronous Timer: frames=1
Execute Loop

Air Neutral Special (If it has collisions)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Air Attack
      Allow Specific Interrupt: Air Special
      Invert Action Status ID: Interrupt ID=Air Special, Status ID=10097
   End If
   Synchronous Timer: frames=1
Execute Loop

Ground Side Special (If it has collisions and doesn't leave the ground)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Ground Attack
      Allow Specific Interrupt: Ground Special
      Allow Specific Interrupt: Ground Catch
      Invert Action Status ID: Interrupt ID=Ground Special, Status ID=10098
   End If
   Synchronous Timer: frames=1
Execute Loop

Air Side Special (If it has collisions)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Air Attack
      Allow Specific Interrupt: Air Special
      Invert Action Status ID: Interrupt ID=Air Special, Status ID=10098
   End If
   Synchronous Timer: frames=1
Execute Loop

Ground Up Special (If it has collisions and doesn't leave the ground)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Ground Attack
      Allow Specific Interrupt: Ground Special
      Allow Specific Interrupt: Ground Catch
      Invert Action Status ID: Interrupt ID=Ground Special, Status ID=10099
   End If
   Synchronous Timer: frames=1
Execute Loop

Air Up Special (If it has collisions)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Air Attack
      Allow Specific Interrupt: Air Special
      Invert Action Status ID: Interrupt ID=Air Special, Status ID=10099
   End If
   Synchronous Timer: frames=1
Execute Loop

Ground Down Special (If it has collisions)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Ground Attack
      Allow Specific Interrupt: Ground Special
      Allow Specific Interrupt: Ground Catch
      Invert Action Status ID: Interrupt ID=Ground Special, Status ID=10100
   End If
   Synchronous Timer: frames=1
Execute Loop

Air Down Special (If it has collisions)
Asynchronous Timer: frames=X
Set Loop Y Times
   If Hitbox Connects:
      Allow Specific Interrupt: Air Attack
      Allow Specific Interrupt: Air Special
      Invert Action Status ID: Interrupt ID=Air Special, Status ID=10100
   End If
   Synchronous Timer: frames=1
Execute Loop
Even though the coding appears similar, there are certain IDs that need to be used to prevent spamming of the same attack on the specified attack.


Title: Re: How to have a proper On Hit Cancel system
Post by: pikazz on March 14, 2014, 06:11:33 PM
someone is using their moderator power little too much ;P

joke aside, but what does this do? let say if I hit someone with like SideTilt with that code, I hit someone, can I use grab directly after the collision?


Title: Re: How to have a proper On Hit Cancel system
Post by: KingJigglypuff on March 14, 2014, 06:16:02 PM
someone is using their moderator power little too much ;P
:>.>: You know too much.

joke aside, but what does this do? let say if I hit someone with like SideTilt with that code, I hit someone, can I use grab directly after the collision?
Well On Hit Cancel is just what it is. Canceling an Attack upon hitting with it. In this case, you can cancel with an Attack, a Special, or a Grab.


Title: Re: How to have a proper On Hit Cancel system
Post by: pikazz on March 15, 2014, 05:50:42 AM
sweet, I know what I should use this for!


Title: Re: How to have a proper On Hit Cancel system
Post by: PK MASTER on August 13, 2020, 06:17:11 PM
Is there a way that the code only works when it collides with stage?